sliccy 6.135.0 → 6.135.2

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 (98) hide show
  1. package/README.md +2 -1
  2. package/dist/ui/.vite/manifest.json +150 -150
  3. package/dist/ui/assets/{account-store-D4LrThNn.js → account-store-DoZfx48N.js} +2 -2
  4. package/dist/ui/assets/account-store-qbfpAv9P.js +1 -0
  5. package/dist/ui/assets/{adobe-BUpPDBUB.js → adobe-j8reQ5G0.js} +1 -1
  6. package/dist/ui/assets/{adobe-DmE_BdsB.js → adobe-sKqYvAn_.js} +1 -1
  7. package/dist/ui/assets/{agent-bridge-tFbf2vAy.js → agent-bridge-Di2V3ZV5.js} +1 -1
  8. package/dist/ui/assets/{apply-layout-DF571ElK.js → apply-layout-BcTB3w5l.js} +1 -1
  9. package/dist/ui/assets/{apps-rZtwN_nr.js → apps-DQyPn-EA.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-bVIZmpz3.js → azure-openai-B1Z1nPYD.js} +2 -2
  11. package/dist/ui/assets/{azure-openai-B94FqZup.js → azure-openai-kEfdafkf.js} +1 -1
  12. package/dist/ui/assets/{cerebras-CwvLUYQG.js → cerebras--25qZmGG.js} +1 -1
  13. package/dist/ui/assets/{cerebras-DgVk3lTw.js → cerebras-DEl5iTx8.js} +1 -1
  14. package/dist/ui/assets/{connect-surface-BUzX9SOw.js → connect-surface-C_S4xfAL.js} +1 -1
  15. package/dist/ui/assets/{directed-approval-gcChNb46.js → directed-approval-BF2RzlIz.js} +1 -1
  16. package/dist/ui/assets/{dist-CBELmDjr.js → dist-BVrQoiOe.js} +1 -1
  17. package/dist/ui/assets/{dist-DOnCyc4g.js → dist-CTTSRXAF.js} +2 -2
  18. package/dist/ui/assets/{dist-BPZbDBP1.js → dist-DmxWHBaB.js} +2 -2
  19. package/dist/ui/assets/{dist-BKQr3WRb.js → dist-w2IcR3mk.js} +1 -1
  20. package/dist/ui/assets/{fs-B21IgSWJ.js → fs-BDvgfyfY.js} +1 -1
  21. package/dist/ui/assets/{fs-DUrvfJwu.js → fs-CFAlRIPp.js} +2 -2
  22. package/dist/ui/assets/{github-jvmkE1Pa.js → github-C6NwiAY0.js} +1 -1
  23. package/dist/ui/assets/{github-Bq98hfXE.js → github-DVjvpjUW.js} +2 -2
  24. package/dist/ui/assets/{github-copilot-DWSw6g7W.js → github-copilot-DDLqYCs2.js} +1 -1
  25. package/dist/ui/assets/{github-copilot-CtMmb1Sa.js → github-copilot-YfD78R3O.js} +1 -1
  26. package/dist/ui/assets/{github-install-CyMvltR6.js → github-install-BQEDitZ9.js} +1 -1
  27. package/dist/ui/assets/{github-zip-COrSIOqj.js → github-zip-BHol00V3.js} +1 -1
  28. package/dist/ui/assets/{help-Cnn0nF-W.js → help-IMO55VKA.js} +1 -1
  29. package/dist/ui/assets/{icons-YroUOIPd.js → icons-D4SDtJW0.js} +1 -1
  30. package/dist/ui/assets/{js-realm-worker-CxyYorDf.js → js-realm-worker-ubL-yaZM.js} +1 -1
  31. package/dist/ui/assets/{kernel-worker-BpGH7uan.js → kernel-worker-B4ZSy5dL.js} +30 -30
  32. package/dist/ui/assets/{local-llm-vhDOSI0R.js → local-llm-BlIHHIIR.js} +1 -1
  33. package/dist/ui/assets/{local-llm-CdmSb_ee.js → local-llm-CYAcv6lR.js} +1 -1
  34. package/dist/ui/assets/{main-BA45kwu2.js → main-YhY59gpj.js} +3 -3
  35. package/dist/ui/assets/{mount-BM7uK6px.js → mount-CYtwljpC.js} +1 -1
  36. package/dist/ui/assets/{mount-B6r48nKx.js → mount-jshkbhYV.js} +3 -3
  37. package/dist/ui/assets/{mount-recovery-Djzp17_v.js → mount-recovery-DkbXYiNB.js} +1 -1
  38. package/dist/ui/assets/{new-session-CFbGu3-2.js → new-session-CY6fiPWv.js} +2 -2
  39. package/dist/ui/assets/{oauth-bootstrap-DoUYRQMt.js → oauth-bootstrap-D4tmN0Xz.js} +2 -2
  40. package/dist/ui/assets/{openai-codex-BksQNRop.js → openai-codex-CFlUligj.js} +1 -1
  41. package/dist/ui/assets/{openai-codex-CM67XaZc.js → openai-codex-CznYMonZ.js} +1 -1
  42. package/dist/ui/assets/{openrouter-sV0gk1at.js → openrouter-5xIjy03m.js} +1 -1
  43. package/dist/ui/assets/{openrouter-CGKnr0OK.js → openrouter-Bmhj1RaJ.js} +1 -1
  44. package/dist/ui/assets/{openrouter-oauth-CVrps40y.js → openrouter-oauth-CX4kCEw-.js} +1 -1
  45. package/dist/ui/assets/{openrouter-oauth-Dub9iP4L.js → openrouter-oauth-DhJ9sdTw.js} +1 -1
  46. package/dist/ui/assets/{panel-rpc-handlers-BEbnmDFE.js → panel-rpc-handlers-DeSajRju.js} +2 -2
  47. package/dist/ui/assets/{panelize-shell-vkFYFE65.js → panelize-shell-C4WoeBi-.js} +1 -1
  48. package/dist/ui/assets/{provider-DQckbU2t.js → provider-CQ2aR_op.js} +2 -2
  49. package/dist/ui/assets/{provider-CCnS_eam.js → provider-MFBIiq2G.js} +1 -1
  50. package/dist/ui/assets/provider-settings-CAX_JaDU.js +2 -0
  51. package/dist/ui/assets/provider-settings-CaDzv4d5.js +1 -0
  52. package/dist/ui/assets/{provider-store-access-DHd-lcVt.js → provider-store-access-CbgX2zqv.js} +2 -2
  53. package/dist/ui/assets/provider-store-access-T6J2A8mW.js +1 -0
  54. package/dist/ui/assets/{providers-CHspb_s6.js → providers--WblPFu6.js} +2 -2
  55. package/dist/ui/assets/{providers-A5JzLXPz.js → providers-BNqcGyjV.js} +1 -1
  56. package/dist/ui/assets/{quick-llm-DXsXc-9N.js → quick-llm-BvHbuEWG.js} +1 -1
  57. package/dist/ui/assets/{recovery-screen-fsdAXohz.js → recovery-screen-Y8FKSR5D.js} +1 -1
  58. package/dist/ui/assets/{run-D1jCLjVW.js → run-CB3E3mOa.js} +1 -1
  59. package/dist/ui/assets/{run-BKyR5ZUV.js → run-D8fbRjQl.js} +13 -12
  60. package/dist/ui/assets/{run-BDUVy9xU.js → run-IzwW3Tb-.js} +1 -1
  61. package/dist/ui/assets/{session-freezer-ChZ82eH3.js → session-freezer-BOrewu6Z.js} +4 -4
  62. package/dist/ui/assets/{setup-feature-flags-remote-B3hL7A_D.js → setup-feature-flags-remote-Cqsvx6-4.js} +1 -1
  63. package/dist/ui/assets/{setup-standalone-prelude-BBN9ys95.js → setup-standalone-prelude-CHW3dWzU.js} +1 -1
  64. package/dist/ui/assets/{setup-sudo-CYJnj9yh.js → setup-sudo-BxFUnuc1.js} +2 -2
  65. package/dist/ui/assets/{skills-PoeKwOMJ.js → skills-CmBRfooN.js} +1 -1
  66. package/dist/ui/assets/slicc-version-CYwQuEux.js +1 -0
  67. package/dist/ui/assets/{snapshot-Dwgjyy4l.js → snapshot-CJzlPpvK.js} +1 -1
  68. package/dist/ui/assets/{snapshot-features-DgFZepvB.js → snapshot-features-BlM_yhm1.js} +1 -1
  69. package/dist/ui/assets/{src-BeuUQL2F.js → src-hh5Jc_tK.js} +1 -1
  70. package/dist/ui/assets/{state-DQJsiAYX.js → state-DoP7mc_M.js} +1 -1
  71. package/dist/ui/assets/{store-DALtb2hx.js → store-BgG0f1aC.js} +1 -1
  72. package/dist/ui/assets/{store-BOrikqN6.js → store-Ctff-91l.js} +1 -1
  73. package/dist/ui/assets/{sudo-iaY8MJRp.js → sudo-D4qPmbKt.js} +1 -1
  74. package/dist/ui/assets/{sync-dialog-BHRWzsGi.js → sync-dialog-BBo1RfX_.js} +1 -1
  75. package/dist/ui/assets/{upgrade-detection-Qqyvdvli.js → upgrade-detection-B8I2ca2b.js} +1 -1
  76. package/dist/ui/assets/{wc-attach-YzIOvbRZ.js → wc-attach-Cr1o6HzV.js} +2 -2
  77. package/dist/ui/assets/{wc-extension-vl2HxAdR.js → wc-extension-DDJdrrae.js} +2 -2
  78. package/dist/ui/assets/{wc-float-label-BOrE82Kq.js → wc-float-label-BkfYPqdF.js} +1 -1
  79. package/dist/ui/assets/{wc-follower-CXLqACJH.js → wc-follower-MuHSM_2l.js} +3 -3
  80. package/dist/ui/assets/{wc-live-CMrFWlAg.js → wc-live-CWr14oEc.js} +4 -4
  81. package/dist/ui/assets/{wc-nav-BcwsddAU.js → wc-nav-QwalFp7J.js} +2 -2
  82. package/dist/ui/assets/{wc-onboarding-CiOGxnZU.js → wc-onboarding-BsAZ6jGv.js} +2 -2
  83. package/dist/ui/assets/{wc-placeholder-idEbS5ZS.js → wc-placeholder-DL_rK01b.js} +2 -2
  84. package/dist/ui/assets/{wc-settings-CLOEjUV2.js → wc-settings-7Hpb0bqa.js} +2 -2
  85. package/dist/ui/assets/{wc-shell-C2nbVyfJ.js → wc-shell-BcQ0EQsr.js} +3 -3
  86. package/dist/ui/assets/{wc-sprinkles-BI4brDVz.js → wc-sprinkles-BliPiPMu.js} +2 -2
  87. package/dist/ui/assets/{wc-tray-B_BGNd75.js → wc-tray-B19l7JiX.js} +4 -4
  88. package/dist/ui/assets/{xai-grok-DRNVdXVf.js → xai-grok-NE3iS-G7.js} +1 -1
  89. package/dist/ui/assets/{xai-grok-cUQyTg-k.js → xai-grok-sPvkL9QO.js} +1 -1
  90. package/dist/ui/index.html +6 -6
  91. package/dist/ui/lucide-icons.js +192 -191
  92. package/dist/ui/packages/webapp/index.html +6 -6
  93. package/package.json +1 -1
  94. package/dist/ui/assets/account-store-DPCy1eih.js +0 -1
  95. package/dist/ui/assets/provider-settings-CI1WVGs5.js +0 -1
  96. package/dist/ui/assets/provider-settings-u8bRmEzD.js +0 -2
  97. package/dist/ui/assets/provider-store-access-fMK-ls9e.js +0 -1
  98. package/dist/ui/assets/slicc-version-BeaSvCQ1.js +0 -1
@@ -6,7 +6,7 @@ import{i as e,n as t,t as n}from"./rolldown-runtime-Dd_uD5pT.js";import{n as r,t
6
6
  `,hs=class extends u.default{entries=[];toString(){return ms+this.entries.map(e=>`${e.op.padEnd(ps)} ${e.path}`).join(`
7
7
  `)}fromString(e){if(!e.startsWith(ms))throw L(P(`EINVAL`,`Invalid journal contents, refusing to parse`));for(let t of e.split(`
8
8
  `)){if(t.startsWith(`#`))continue;let[e,n]=t.split(/\s+/);if(!fs(e)){R(`Unknown operation in journal (skipping): `+e);continue}this.entries.push({op:e,path:n})}return this}add(e,t){this.entries.push({op:e,path:t}),this.emit(`update`,e,t),this.emit(e,t)}has(e,t){let n=JSON.stringify({op:e,path:t});for(let e of this.entries)if(JSON.stringify(e)===n)return!0;return!1}delete(e,t){this.entries=this.entries.filter(n=>n.op!=e||n.path!=t)}isDeleted(e){let t=!1;for(let n of this.entries)n.path==e&&n.op===`delete`&&(t=!0);return t}},gs=class extends $n{readable;writable;journal;async ready(){await this.readable.ready(),await this.writable.ready()}readySync(){this.readable.readySync(),this.writable.readySync()}constructor(e,t,n=new hs){if(super(1651862636,e.name),this.readable=e,this.writable=t,this.journal=n,t.attributes.has(`no_write`))throw L(P(`EINVAL`,`Writable file system can not be written to`));e.attributes.set(`no_write`)}isDeleted(e){return this.journal.isDeleted(e)}inos=new Map;_nextIno=1;renameInos(e,t){let n=[];for(let[r,i]of this.inos)r!=e&&!r.startsWith(e+`/`)||n.push({path:r,add:t+r.slice(e.length),ino:i});for(let e of n)this.inos.delete(e.path),this.inos.set(e.add,e.ino)}remapIno(e,t){let n=this.inos.get(e);return n===void 0&&(n=this._nextIno++,this.inos.set(e,n)),{...p(t,Bn),attributes:t.attributes,ino:n}}usage(){return this.readable.usage()}async sync(){await this.writable.sync()}syncSync(){this.writable.syncSync()}async read(e,t,n,r){return await this.writable.exists(e)?await this.writable.read(e,t,n,r):await this.readable.read(e,t,n,r)}readSync(e,t,n,r){return this.writable.existsSync(e)?this.writable.readSync(e,t,n,r):this.readable.readSync(e,t,n,r)}async write(e,t,n){return await this.copyForWrite(e),await this.writable.write(e,t,n)}writeSync(e,t,n){return this.copyForWriteSync(e),this.writable.writeSync(e,t,n)}async rename(e,t){await this.copyForWrite(e);try{await this.writable.rename(e,t)}catch{if(this.isDeleted(e))throw P(`ENOENT`)}await this.readable.exists(e)&&this.journal.add(`delete`,e),this.journal.delete(`delete`,t),this.renameInos(e,t)}renameSync(e,t){this.copyForWriteSync(e);try{this.writable.renameSync(e,t)}catch{if(this.isDeleted(e))throw P(`ENOENT`)}this.readable.existsSync(e)&&this.journal.add(`delete`,e),this.journal.delete(`delete`,t),this.renameInos(e,t)}async stat(e){try{return this.remapIno(e,await this.writable.stat(e))}catch{if(this.isDeleted(e))throw P(`ENOENT`);return this.remapIno(e,await this.readable.stat(e))}}statSync(e){try{return this.remapIno(e,this.writable.statSync(e))}catch{if(this.isDeleted(e))throw P(`ENOENT`);return this.remapIno(e,this.readable.statSync(e))}}async touch(e,t){await this.copyForWrite(e,t.size),await this.writable.touch(e,t)}touchSync(e,t){this.copyForWriteSync(e,t.size),this.writable.touchSync(e,t)}async createFile(e,t){await this.createParentDirectories(e);let n=await this.writable.createFile(e,t);return this.journal.delete(`delete`,e),this.remapIno(e,n)}createFileSync(e,t){this.createParentDirectoriesSync(e);let n=this.writable.createFileSync(e,t);return this.journal.delete(`delete`,e),this.remapIno(e,n)}async link(e,t){await this.copyForWrite(e),await this.writable.link(e,t),this.journal.delete(`delete`,t)}linkSync(e,t){this.copyForWriteSync(e),this.writable.linkSync(e,t),this.journal.delete(`delete`,t)}async unlink(e){if(!await this.exists(e))throw P(`ENOENT`);await this.writable.exists(e)&&await this.writable.unlink(e),await this.exists(e)&&this.journal.add(`delete`,e),this.inos.delete(e)}unlinkSync(e){if(!this.existsSync(e))throw P(`ENOENT`);this.writable.existsSync(e)&&this.writable.unlinkSync(e),this.existsSync(e)&&this.journal.add(`delete`,e),this.inos.delete(e)}async rmdir(e){if(!await this.exists(e))throw P(`ENOENT`);if(await this.writable.exists(e)&&await this.writable.rmdir(e),!await this.exists(e)){this.inos.delete(e);return}if((await this.readdir(e)).length)throw P(`ENOTEMPTY`);this.journal.add(`delete`,e),this.inos.delete(e)}rmdirSync(e){if(!this.existsSync(e))throw P(`ENOENT`);if(this.writable.existsSync(e)&&this.writable.rmdirSync(e),!this.existsSync(e)){this.inos.delete(e);return}if(this.readdirSync(e).length)throw P(`ENOTEMPTY`);this.journal.add(`delete`,e),this.inos.delete(e)}async mkdir(e,t){if(await this.exists(e))throw P(`EEXIST`);await this.createParentDirectories(e);let n=await this.writable.mkdir(e,t);return this.journal.delete(`delete`,e),this.remapIno(e,n)}mkdirSync(e,t){if(this.existsSync(e))throw P(`EEXIST`);this.createParentDirectoriesSync(e);let n=this.writable.mkdirSync(e,t);return this.journal.delete(`delete`,e),this.remapIno(e,n)}async readdir(e){if(this.isDeleted(e))throw P(`ENOENT`);let t=await this.readable.stat(e).catch(()=>null),n=await this.writable.stat(e).catch(()=>null);if(!t&&!n)throw P(`ENOENT`);let r=t&&q(t)?await this.readable.readdir(e):[];if(n&&q(n))for(let t of await this.writable.readdir(e))r.includes(t)||r.push(t);return r.filter(t=>!this.isDeleted(U(e,t)))}readdirSync(e){if(this.isDeleted(e))throw P(`ENOENT`);let t=null,n=null;try{t=this.readable.statSync(e)}catch{}try{n=this.writable.statSync(e)}catch{}if(!t&&!n)throw P(`ENOENT`);let r=t&&q(t)?this.readable.readdirSync(e):[];if(n&&q(n))for(let t of this.writable.readdirSync(e))r.includes(t)||r.push(t);return r.filter(t=>!this.isDeleted(U(e,t)))}streamRead(e,t){return this.writable.existsSync(e)?this.writable.streamRead(e,t):this.readable.streamRead(e,t)}streamWrite(e,t){return this.copyForWriteSync(e),this.writable.streamWrite(e,t)}createParentDirectoriesSync(e){let t=[],n=v(P(`EDEADLK`));for(let n=W(e);!this.writable.existsSync(n);n=W(n))t.push(n);n(),t.length&&me(`COW: Creating parent directories: `+t.join(`, `));for(let e of t.reverse())this.writable.mkdirSync(e,this.statSync(e))}async createParentDirectories(e){let t=[],n=v(P(`EDEADLK`,e));for(let n=W(e);!await this.writable.exists(n);n=W(n))t.push(n);n(),t.length&&me(`COW: Creating parent directories: `+t.join(`, `));for(let e of t.reverse())await this.writable.mkdir(e,await this.stat(e))}copyForWriteSync(e,t){if(!this.existsSync(e))throw P(`ENOENT`);this.writable.existsSync(W(e))||this.createParentDirectoriesSync(e),this.writable.existsSync(e)||this.copyToWritableSync(e,t)}async copyForWrite(e,t){if(!await this.exists(e))throw P(`ENOENT`);if(await this.writable.exists(W(e))||await this.createParentDirectories(e),!await this.writable.exists(e))return this.copyToWritable(e,t)}copyToWritableSync(e,t){let n=this.readable.statSync(e);if(q(n)){this.writable.mkdirSync(e,n);for(let t of this.readable.readdirSync(e))this.copyToWritableSync(U(e,t));return}let r=Math.min(n.size,t??n.size),i=new Uint8Array(r);r&&this.readable.readSync(e,i,0,r),this.writable.createFileSync(e,n),this.writable.touchSync(e,n),r&&this.writable.writeSync(e,i,0)}async copyToWritable(e,t){let n=await this.readable.stat(e);if(q(n)){await this.writable.mkdir(e,n);for(let t of await this.readable.readdir(e))await this.copyToWritable(U(e,t));return}let r=Math.min(n.size,t??n.size),i=new Uint8Array(r);r&&await this.readable.read(e,i,0,r),await this.writable.createFile(e,n),await this.writable.touch(e,n),r&&await this.writable.write(e,i,0)}},_s={name:`CopyOnWrite`,options:{writable:{type:`object`,required:!0},readable:{type:`object`,required:!0},journal:{type:`object`,required:!1}},async create(e){return new gs(await es(e.readable),await es(e.writable),e.journal)}},vs=new Map;async function ys(e,t={},n=!1){let r=await fetch(e,t).catch(e=>{throw{tag:`fetch`,message:e.message}});if(!r.ok)throw{tag:`status`,response:r};let i=await r.arrayBuffer().catch(e=>{if(!n)throw{tag:`buffer`,response:r,message:e.message}});return{response:r,data:i?new Uint8Array(i):void 0}}async function bs(e,t,n={}){let r=new Request(e,n);if(typeof t.start!=`number`||typeof t.end!=`number`){let{data:r}=await ys(e,n);return new s(e,r.byteLength,t,vs).add(r,0),r}if(typeof t.size!=`number`){t.warn?.(e+`: Size not provided, an additional HEAD request is being made`);let{headers:n}=await fetch(r,{method:`HEAD`}),i=parseInt(n.get(`Content-Length`)??``);if(typeof i!=`number`)throw{tag:`size`,message:`Response is missing content-length header and no size was provided`};t.size=i}let{size:i,start:a,end:o}=t,c=vs.get(e)??new s(e,i,t,vs);r.headers.set(`If-Range`,new Date().toUTCString());for(let{start:n,end:l}of c.missing(a,o)){let{data:u,response:d}=await ys(r,{headers:{Range:`bytes=${n}-${l}`}});if(d.status==206){c.add(u,n);continue}return t.warn?.(e+`: Remote does not support range requests with bytes. Falling back to full data.`),new s(e,i,t,vs).add(u,0),u.subarray(a,o)}c.collect();let l=c.regionAt(a);return l.data.subarray(a-l.offset,o-l.offset)}function xs(e,t){let n=vs.get(e);if(!n)return t.size?{data:new Uint8Array,missing:[{start:0,end:t.size??0}]}:(t.warn?.(e+`: Size not provided and cache is empty, can not determine missing range`),{data:void 0,missing:[]});let{start:r=0,end:i=n.size}=t,a=new Uint8Array(i-r);for(let e of n.regions)if(!(e.offset+e.data.byteLength<=r)){if(e.offset>=i)break;for(let t of e.ranges){if(t.end<=r)continue;if(t.start>=i)break;let n=Math.max(t.start,r),o=Math.min(t.end,i);n>=o||a.set(e.data.subarray(n-e.offset,o-e.offset),n-r)}}return{data:a,missing:n.missing(r,i)}}async function Ss(e,t,n,r={}){vs.has(e)||new s(e,n.size??t.byteLength,n,vs);let i=vs.get(e),{offset:a=0,method:o=`POST`}=n;if(!n.cacheOnly){let n=new Headers(r.headers||{});if(n.get(`Content-Type`)||n.set(`Content-Type`,`application/octet-stream`),!n.get(`Content-Range`)&&(a!==0||t.byteLength!==i.size)){let e=a,r=a+t.byteLength-1,o=Math.max(i.size,r+1);n.set(`Content-Range`,`bytes ${e}-${r}/${o}`)}await ys(new Request(e,{...r,method:o,headers:n,body:t.buffer instanceof ArrayBuffer?t:Uint8Array.from(t)}),{},!0)}i.add(t,a)}async function Cs(e,t={},n={}){t.cacheOnly||await ys(new Request(e,n),{method:`DELETE`},!0),vs.delete(e)}var ws=class extends $n{index;constructor(e,t,n=new Zn){super(e,t),this.index=n}usage(){return this.index.usage()}pathsForRename(e,t){if(!this.index.has(e))throw P(`ENOENT`);if((W(t)+`/`).startsWith(e+`/`))throw P(`EBUSY`);let n=[];for(let[r,i]of this.index.entries()){let a=Cn(e,r);if(a.startsWith(`..`))continue;let o=U(t,a);o.endsWith(`/`)&&(o=o.slice(0,-1)),n.push({from:r,to:o,inode:i})}return n.sort((e,t)=>t.from.length-e.from.length),n}async rename(e,t){if(e==t)return;let n=this.pathsForRename(e,t),r=new Map;for(let{from:e,to:t,inode:i}of n){let n=new Uint8Array(i.size);await this.read(e,n,0,i.size),r.set(t,n),this.index.delete(e),await this.remove(e),this.index.has(t)&&await this.remove(t)}n.reverse();for(let{to:e,inode:t}of n){let n=r.get(e);this.index.set(e,t),(t.mode&61440)==16384?await this._mkdir?.(e,t):await this.write(e,n,0)}}renameSync(e,t){if(e==t)return;let n=this.pathsForRename(e,t),r=new Map;for(let{from:e,to:t,inode:i}of n){let n=new Uint8Array(i.size);this.readSync(e,n,0,i.size),r.set(t,n),this.index.delete(e),this.removeSync(e),this.index.has(t)&&this.removeSync(t)}n.reverse();for(let{to:e,inode:t}of n){let n=r.get(e);this.index.set(e,t),(t.mode&61440)==16384?this._mkdirSync?.(e,t):this.writeSync(e,n,0)}}async stat(e){let t=this.index.get(e);if(!t)throw P(`ENOENT`);return new K(t)}statSync(e){let t=this.index.get(e);if(!t)throw P(`ENOENT`);return new K(t)}async touch(e,t){(this.index.get(e)??y(P(`ENOENT`))).update(t)}touchSync(e,t){(this.index.get(e)??y(P(`ENOENT`))).update(t)}_remove(e,t){let n=this.index.get(e);if(!n)throw P(`ENOENT`);let r=(n.mode&Qe)==rt;if(!r&&!t)throw P(`ENOTDIR`);if(r&&t)throw P(`EISDIR`);r||this.index.delete(e)}async unlink(e){this._remove(e,!0),await this.remove(e)}unlinkSync(e){this._remove(e,!0),this.removeSync(e)}async rmdir(e){if(this._remove(e,!1),(await this.readdir(e)).length)throw P(`ENOTEMPTY`);this.index.delete(e),await this.remove(e)}rmdirSync(e){if(this._remove(e,!1),this.readdirSync(e).length)throw P(`ENOTEMPTY`);this.index.delete(e),this.removeSync(e)}create(e,t){if(this.index.has(e))throw P(`EEXIST`);let n=this.index.get(W(e));if(!n)throw P(`ENOENT`);let r=this.index._alloc(),i=new K({ino:r,data:r+1,mode:t.mode,size:0,uid:n.mode&2048?n.uid:t.uid,gid:n.mode&1024?n.gid:t.gid,nlink:1});return this.index.set(e,i),i}async createFile(e,t){return this.create(e,{...t,mode:t.mode|tt})}createFileSync(e,t){return this.create(e,{...t,mode:t.mode|tt})}async mkdir(e,t){t={...t,mode:t.mode|rt};let n=this.create(e,t);return await this._mkdir?.(e,t),n}mkdirSync(e,t){t={...t,mode:t.mode|rt};let n=this.create(e,t);return this._mkdirSync?.(e,t),n}link(e,t){throw P(`ENOSYS`)}linkSync(e,t){throw P(`ENOSYS`)}async readdir(e){return Object.keys(this.index.directoryEntries(e))}readdirSync(e){return Object.keys(this.index.directoryEntries(e))}async sync(){}syncSync(){}};function Ts(e){if(!(`tag`in e))throw L(P(`EIO`,e.stack));switch(e.tag){case`fetch`:throw L(P(`EREMOTEIO`,e.message));case`status`:throw L(P(e.response.status>500?`EREMOTEIO`:`EIO`,`Response status code is `+e.response.status));case`size`:throw L(P(`EBADE`,e.message));case`buffer`:throw L(P(`EIO`,`Failed to decode buffer`))}}var Es=class extends ws{baseUrl;requestInit;remoteWrite;_asyncDone=Promise.resolve();_async(e){this._asyncDone=this._asyncDone.then(()=>e).catch(e=>me(`Async operation failed: `+(e.message??e)))}constructor(e,t,n={},r){super(544106099,`nfs`,e),this.baseUrl=t,this.requestInit=n,this.remoteWrite=r}async remove(e){await Cs(this.baseUrl+e,{warn:R,cacheOnly:!this.remoteWrite},this.requestInit)}removeSync(e){this._async(Cs(this.baseUrl+e,{warn:R,cacheOnly:!this.remoteWrite},this.requestInit))}async read(e,t,n=0,r){let i=this.index.get(e);if(!i)throw P(`ENOENT`);if(r-n==0)return;let a=await bs(this.baseUrl+e,{start:n,end:r,size:i.size,warn:R},this.requestInit).catch(Ts).catch(()=>void 0);if(!a)throw P(`ENODATA`);t.set(a)}readSync(e,t,n=0,r){let i=this.index.get(e);if(!i)throw P(`ENOENT`);if(r-n==0)return;let{data:a,missing:o}=xs(this.baseUrl+e,{start:n,end:r,size:i.size,warn:R});if(!a)throw P(`ENODATA`);if(o.length)throw this._async(bs(this.baseUrl+e,{start:n,end:r,size:i.size,warn:R},this.requestInit)),P(`EAGAIN`);t.set(a)}async write(e,t,n){let r=this.index.get(e);if(!r)throw P(`ENOENT`);r.update({mtimeMs:Date.now(),size:Math.max(r.size,t.byteLength+n)}),await Ss(this.baseUrl+e,t,{offset:n,warn:R,cacheOnly:!this.remoteWrite},this.requestInit).catch(Ts)}writeSync(e,t,n){let r=this.index.get(e);if(!r)throw P(`ENOENT`);r.update({mtimeMs:Date.now(),size:Math.max(r.size,t.byteLength+n)}),this._async(Ss(this.baseUrl+e,t,{offset:n,warn:R,cacheOnly:!this.remoteWrite},this.requestInit).catch(Ts))}},Ds={name:`Fetch`,options:{index:{type:[`string`,`object`],required:!1},baseUrl:{type:`string`,required:!0},requestInit:{type:`object`,required:!1},remoteWrite:{type:`boolean`,required:!1}},isAvailable(){return typeof globalThis.fetch==`function`},async create(e){let t=new URL(e.baseUrl);t.pathname=H(t.pathname);let n=t.toString();n.at(-1)==`/`&&(n=n.slice(0,-1)),e.index??=`index.json`;let r=new Zn;if(typeof e.index!=`string`)r.fromJSON(e.index);else{let t=await bs(e.index,{warn:R},e.requestInit).catch(Ts);r.fromJSON(JSON.parse(E(t)))}let i=new Es(r,n,e.requestInit,e.remoteWrite);if(e.disableAsyncCache)return i;for(let[t,i]of r)i.mode&32768&&await bs(n+t,{warn:R},e.requestInit).catch(Ts);return i}},Os=function(e,t,n){if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},ks=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),As=class extends $n{nodeFS;prefix;constructor(e,t){super(1852793957,`nodefs`),this.nodeFS=e,this.prefix=t}usage(){let e=this.nodeFS.statfsSync(this.prefix);return{totalSpace:e.bsize*e.blocks,freeSpace:e.bsize*e.bfree}}path(e){return this.prefix+e}async rename(e,t){await this.nodeFS.promises.rename(this.path(e),this.path(t))}renameSync(e,t){this.nodeFS.renameSync(this.path(e),this.path(t))}async stat(e){return await this.nodeFS.promises.stat(this.path(e))}statSync(e){return this.nodeFS.statSync(this.path(e))}async touch(e,t){let n={stack:[],error:void 0,hasError:!1};try{let r=Os(n,await this.nodeFS.promises.open(this.path(e),`r`),!0);await r.chmod(t.mode);try{await r.chown(t.uid,t.gid)}catch(e){L(`Failed to chown passthrough file: `+e.message)}}catch(e){n.error=e,n.hasError=!0}finally{let e=ks(n);e&&await e}}touchSync(e,t){this.nodeFS.chmodSync(this.path(e),t.mode);try{this.nodeFS.chownSync(this.path(e),t.uid,t.gid)}catch(e){L(`Failed to chown passthrough file: `+e.message)}}async unlink(e){await this.nodeFS.promises.unlink(this.path(e))}unlinkSync(e){this.nodeFS.unlinkSync(this.path(e))}async mkdir(e,t){return await this.nodeFS.promises.mkdir(this.path(e),t),await this.nodeFS.promises.stat(this.path(e))}mkdirSync(e,t){return this.nodeFS.mkdirSync(this.path(e),t),this.nodeFS.statSync(this.path(e))}async readdir(e){return await this.nodeFS.promises.readdir(this.path(e))}readdirSync(e){return this.nodeFS.readdirSync(this.path(e))}async createFile(e,t){if(q(t))await this.nodeFS.promises.mkdir(this.path(e),{mode:t.mode});else{let t={stack:[],error:void 0,hasError:!1};try{await Os(t,await this.nodeFS.promises.open(this.path(e),`wx`),!0).close()}catch(e){t.error=e,t.hasError=!0}finally{let e=ks(t);e&&await e}}return await this.nodeFS.promises.stat(this.path(e))}createFileSync(e,t){if(q(t))this.nodeFS.mkdirSync(this.path(e),{mode:t.mode});else{let t=this.nodeFS.openSync(this.path(e),`wx`);this.nodeFS.closeSync(t)}return this.nodeFS.statSync(this.path(e))}async rmdir(e){await this.nodeFS.promises.rmdir(this.path(e))}rmdirSync(e){this.nodeFS.rmdirSync(this.path(e))}async sync(){R(`Sync on passthrough is unnecessary`)}syncSync(){R(`Sync on passthrough is unnecessary`)}async link(e,t){await this.nodeFS.promises.link(this.path(e),this.path(t))}linkSync(e,t){this.nodeFS.linkSync(this.path(e),this.path(t))}async read(e,t,n,r){let i={stack:[],error:void 0,hasError:!1};try{await Os(i,await this.nodeFS.promises.open(this.path(e),`r`),!0).read({buffer:t,offset:n,length:r-n})}catch(e){i.error=e,i.hasError=!0}finally{let e=ks(i);e&&await e}}readSync(e,t,n,r){let i=this.nodeFS.openSync(this.path(e),`r`);try{this.nodeFS.readSync(i,t,{offset:n,length:r-n})}finally{this.nodeFS.closeSync(i)}}async write(e,t,n){let r={stack:[],error:void 0,hasError:!1};try{await Os(r,await this.nodeFS.promises.open(this.path(e),`w`),!0).write(t,n)}catch(e){r.error=e,r.hasError=!0}finally{let e=ks(r);e&&await e}}writeSync(e,t,n){let r=this.nodeFS.openSync(this.path(e),`w`);try{this.nodeFS.writeSync(r,t,n)}finally{this.nodeFS.closeSync(r)}}},js={name:`Passthrough`,options:{fs:{type:`object`,required:!0},prefix:{type:`string`,required:!0}},create({fs:e,prefix:t}){return new As(e,t)}},Ms=t({attach:()=>qs,catchMessages:()=>Ys,decodeMessage:()=>Bs,detach:()=>Js,encodeMessage:()=>zs,from:()=>Ls,fromNode:()=>Fs,fromWeb:()=>Ps,fromWebSocket:()=>Is,handleRequest:()=>Xs,handleResponse:()=>Ks,isMessage:()=>Vs,isPort:()=>Ns,request:()=>Ws});function Ns(e){return typeof e==`object`&&!!e&&`channel`in e&&`send`in e&&`addHandler`in e&&`removeHandler`in e}function Ps(e){let t=new Map;return{channel:e,send:e.postMessage.bind(e),addHandler(n){let r=e=>n(e.data);t.set(n,r),e.addEventListener(`message`,r)},removeHandler(n){e.removeEventListener(`message`,t.get(n))}}}function Fs(e){return{channel:e,send:e.postMessage.bind(e),addHandler:e.on.bind(e,`message`),removeHandler:e.off.bind(e,`message`)}}function Is(e){return{channel:e,send(t){e.send(zs(t))},addHandler(t){e.addEventListener(`message`,e=>{t(Bs(e.data))})},removeHandler(t){e.removeEventListener(`message`,e=>{t(Bs(e.data))})}}}function Ls(e){if(Ns(e))return e;if(e instanceof WebSocket)return Is(e);if(`on`in e)return Fs(e);if(`addEventListener`in e)return Ps(e);throw L(P(`EINVAL`,`Invalid port type`))}var Rs=1;function zs(e){return`Z${Rs}${JSON.stringify(e,(e,t)=>{if(e!=`_zenfs`)return t instanceof Uint8Array?`$`+t.toBase64():t})}`}function Bs(e){if(!e.startsWith(`Z`))return{};e=e.slice(1);let t=parseInt(e);if(isNaN(t))return R(`Ignoring encoded message with missing version`),{};if(e=e.slice(t.toString().length),!h(e))return R(`Ignoring encoded message with invalid JSON`),{};if(t!=Rs)throw L(P(`EPROTONOSUPPORT`,`Version mismatch in RPC message encoding (got ${t}, expected ${Rs})`));return{...JSON.parse(e,(e,t)=>typeof t==`string`&&t.startsWith(`$`)?Uint8Array.fromBase64(t.slice(1)):t),_zenfs:!0}}function Vs(e){return typeof e==`object`&&!!e&&`_zenfs`in e&&!!e._zenfs}function Hs(e){let t=Us.get(e);t&&(t.timeout&&(clearTimeout(t.timeout),typeof t.timeout==`object`&&t.timeout.unref()),Us.delete(e))}var Us=new Map;function Ws(e,{port:t,timeout:n=1e3,fs:r}){let i=`
9
- `+Error().stack.slice(6);if(!t)throw L(P(`EINVAL`,`Can not make an RPC request without a port`));let{resolve:a,reject:o,promise:s}=Promise.withResolvers(),c=Math.random().toString(16).slice(5),l={resolve:a,reject:o,promise:s,fs:r,timeout:setTimeout(()=>{let e=L(P(`ETIMEDOUT`,`RPC request timed out`));e.stack+=i,Hs(c),o(e)},n)};return Us.set(c,l),t.send({...e,_zenfs:!0,id:c,stack:i}),s}function Gs(e,...t){return t.includes(e.method)}function Ks(e){if(!Vs(e))return;if(!Us.has(e.id)){let t=L(P(`EIO`,`Invalid RPC id: `+e.id));throw t.stack+=e.stack,t}let{resolve:t,reject:n}=Us.get(e.id);if(e.error){let t=M.fromJSON({code:`EIO`,errno:k.EIO,...e.error});t.stack+=e.stack,Hs(e.id),n(t);return}Hs(e.id),t(Gs(e,`stat`,`createFile`,`mkdir`)?new K(e.value):e.value)}function qs(e,t){if(!e)throw L(P(`EINVAL`,`Cannot attach to non-existent port`));pe(`Attached handler to port: `+t.name),e.addHandler(t)}function Js(e,t){if(!e)throw L(P(`EINVAL`,`Cannot detach from non-existent port`));pe(`Detached handler from port: `+t.name),e.removeHandler(t)}function Ys(e){let t=[],n=t.push.bind(t);return qs(e,n),async function(r){Js(e,n);for(let n of t)await Xs(e,r,`data`in n?n.data:n)}}async function Xs(e,t,n){if(!Vs(n))return;let r,i,a=[];try{switch(n.method){case`read`:{let[e,i,a,o]=n.args;await t.read(e,i,a,o),r=i;break}case`stat`:case`createFile`:case`mkdir`:{let e=await t[n.method](...n.args),i=e instanceof K?e:new K(e);r=new Uint8Array(i.buffer,i.byteOffset,i.byteLength);break}case`touch`:{let[e,i]=n.args;await t.touch(e,new K(i)),r=void 0;break}default:r=await t[n.method](...n.args)}}catch(e){i=e instanceof M?e.toJSON():p(e,`message`,`stack`)}e.send({_zenfs:!0,...p(n,`id`,`method`,`stack`),error:i,value:r},a)}var Zs=[`rename`,`stat`,`touch`,`createFile`,`unlink`,`rmdir`,`mkdir`,`readdir`,`exists`,`link`,`sync`,`read`,`write`];function Qs(e){class t extends e{async done(){return this.sync()}queueDone(){return this.sync()}_promise=Promise.resolve();_async(e){this._promise=this._promise.finally(()=>e())}_isInitialized=!1;_skippedCacheUpdates=0;constructor(...e){super(...e),this._patchAsync()}async ready(){if(await super.ready(),!(this._isInitialized||this.attributes.has(`no_async_preload`))){if(await this._promise,this.checkSync(),await this._sync.ready(),this._sync instanceof or&&this instanceof or){let e=this._sync.transaction(),t=this.transaction(),n=[];for(let r of await t.keys())n.push(t.get(r).then(t=>e.setSync(r,t)));await Promise.all(n),this._isInitialized=!0;return}try{await this.crossCopy(`/`),me(`Skipped ${this._skippedCacheUpdates} updates to the sync cache during initialization`),this._isInitialized=!0}catch(e){throw this._isInitialized=!1,de(e)}}}checkSync(){if(this.attributes.has(`no_async_preload`))throw P(`ENOTSUP`,`Sync preloading has been disabled for this async file system`);if(!this._sync)throw de(P(`ENOTSUP`,`No sync cache is attached to this async file system`))}renameSync(e,t){this.checkSync(),this._sync.renameSync(e,t),this._async(()=>this.rename(e,t))}statSync(e){return this.checkSync(),this._sync.statSync(e)}touchSync(e,t){this.checkSync(),this._sync.touchSync(e,t),this._async(()=>this.touch(e,t))}createFileSync(e,t){this.checkSync();let n=this._sync.createFileSync(e,t);return this._async(()=>this.createFile(e,t)),n}unlinkSync(e){this.checkSync(),this._sync.unlinkSync(e),this._async(()=>this.unlink(e))}rmdirSync(e){this.checkSync(),this._sync.rmdirSync(e),this._async(()=>this.rmdir(e))}mkdirSync(e,t){this.checkSync();let n=this._sync.mkdirSync(e,t);return this._async(()=>this.mkdir(e,t)),n}readdirSync(e){return this.checkSync(),this._sync.readdirSync(e)}linkSync(e,t){this.checkSync(),this._sync.linkSync(e,t),this._async(()=>this.link(e,t))}async sync(){!this.attributes.has(`no_async_preload`)&&this._sync&&this._sync.syncSync(),await this._promise.catch(()=>{})}syncSync(){this.checkSync(),this._sync.syncSync()}existsSync(e){return this.checkSync(),this._sync.existsSync(e)}readSync(e,t,n,r){this.checkSync(),this._sync.readSync(e,t,n,r)}writeSync(e,t,n){this.checkSync(),this._sync.writeSync(e,t,n),this._async(()=>this.write(e,t,n))}streamWrite(e,t){this.checkSync();let n=this._sync.streamWrite(e,t).getWriter(),r=super.streamWrite(e,t).getWriter();return new WritableStream({async write(e,t){await Promise.all([n.write(e),r.write(e)]).catch(t.error.bind(t))},async close(){await Promise.all([n.close(),r.close()])},async abort(e){await Promise.all([n.abort(e),r.abort(e)])}})}async crossCopy(e){this.checkSync();let t=await this.stat(e);if(!q(t)){this._sync.createFileSync(e,t);let n=new Uint8Array(t.size);await this.read(e,n,0,t.size),this._sync.writeSync(e,n,0),this._sync.touchSync(e,t);return}e!==`/`&&(this._sync.mkdirSync(e,t),this._sync.touchSync(e,t));let n=[];for(let t of await this.readdir(e))n.push(this.crossCopy(U(e,t)));await Promise.all(n)}_patchAsync(){let e=[`read`,`readdir`,`stat`,`exists`],t=Zs.filter(t=>!e.includes(t));for(let e of t){let t=this[e].bind(this);function n(t,r){if(r||(r=Error(),Error.captureStackTrace(r,n)),!r.stack)return!1;let i=r.stack.split(`
9
+ `+Error().stack.slice(6);if(!t)throw L(P(`EINVAL`,`Can not make an RPC request without a port`));let{resolve:a,reject:o,promise:s}=Promise.withResolvers(),c=Math.random().toString(16).slice(5),l={resolve:a,reject:o,promise:s,fs:r,timeout:setTimeout(()=>{let e=L(P(`ETIMEDOUT`,`RPC request timed out`));e.stack+=i,Hs(c),o(e)},n)};return Us.set(c,l),t.send({...e,_zenfs:!0,id:c,stack:i}),s}function Gs(e,...t){return t.includes(e.method)}function Ks(e){if(!Vs(e))return;if(!Us.has(e.id)){let t=L(P(`EIO`,`Invalid RPC id: `+e.id));throw t.stack+=e.stack,t}let{resolve:t,reject:n}=Us.get(e.id);if(e.error){let t=M.fromJSON({code:`EIO`,errno:k.EIO,...e.error});t.stack+=e.stack,Hs(e.id),n(t);return}Hs(e.id),t(Gs(e,`stat`,`createFile`,`mkdir`)?new K(e.value):e.value)}function qs(e,t){if(!e)throw L(P(`EINVAL`,`Cannot attach to non-existent port`));pe(`Attached handler to port: `+t.name),e.addHandler(t)}function Js(e,t){if(!e)throw L(P(`EINVAL`,`Cannot detach from non-existent port`));pe(`Detached handler from port: `+t.name),e.removeHandler(t)}function Ys(e){let t=[],n=t.push.bind(t);return qs(e,n),async function(r){Js(e,n);for(let n of t)await Xs(e,r,`data`in n?n.data:n)}}async function Xs(e,t,n){if(!Vs(n))return;let r,i,a=[];try{switch(n.method){case`read`:{let[e,i,a,o]=n.args;await t.read(e,i,a,o),r=i;break}case`stat`:case`createFile`:case`mkdir`:{let e=await t[n.method](...n.args),i=e instanceof K?e:new K(e);r=new Uint8Array(i.buffer,i.byteOffset,i.byteLength);break}case`touch`:{let[e,i]=n.args;await t.touch(e,new K(i)),r=void 0;break}default:r=await t[n.method](...n.args)}}catch(e){i=e instanceof M?e.toJSON():p(e,`message`,`stack`)}e.send({_zenfs:!0,...p(n,`id`,`method`,`stack`),error:i,value:r},a)}var Zs=[`rename`,`stat`,`touch`,`createFile`,`unlink`,`rmdir`,`mkdir`,`readdir`,`exists`,`link`,`sync`,`read`,`write`];function Qs(e){class t extends e{async done(){return this.sync()}queueDone(){return this.sync()}_promise=Promise.resolve();_async(e){this._promise=this._promise.finally(()=>e())}_isInitialized=!1;_skippedCacheUpdates=0;constructor(...e){super(...e),this._patchAsync()}async ready(){if(await super.ready(),!(this._isInitialized||this.attributes.has(`no_async_preload`))){if(await this._promise,this.checkSync(),await this._sync.ready(),this._sync instanceof or&&this instanceof or){let e=this._sync.transaction(),t=this.transaction(),n=[];for(let r of await t.keys())n.push(t.get(r).then(t=>e.setSync(r,t)));await Promise.all(n),this._isInitialized=!0;return}try{await this.crossCopy(`/`),me(`Skipped ${this._skippedCacheUpdates} updates to the sync cache during initialization`),this._isInitialized=!0}catch(e){throw this._isInitialized=!1,de(e)}}}checkSync(){if(this.attributes.has(`no_async_preload`))throw P(`ENOTSUP`,`Sync preloading has been disabled for this async file system`);if(!this._sync)throw de(P(`ENOTSUP`,`No sync cache is attached to this async file system`))}renameSync(e,t){this.checkSync(),this._sync.renameSync(e,t),this._async(()=>this.rename(e,t))}statSync(e){return this.checkSync(),this._sync.statSync(e)}touchSync(e,t){this.checkSync(),this._sync.touchSync(e,t),this._async(()=>this.touch(e,t))}createFileSync(e,t){this.checkSync();let n=this._sync.createFileSync(e,t);return this._async(()=>this.createFile(e,t)),n}unlinkSync(e){this.checkSync(),this._sync.unlinkSync(e),this._async(()=>this.unlink(e))}rmdirSync(e){this.checkSync(),this._sync.rmdirSync(e),this._async(()=>this.rmdir(e))}mkdirSync(e,t){this.checkSync();let n=this._sync.mkdirSync(e,t);return this._async(()=>this.mkdir(e,t)),n}readdirSync(e){return this.checkSync(),this._sync.readdirSync(e)}linkSync(e,t){this.checkSync(),this._sync.linkSync(e,t),this._async(()=>this.link(e,t))}async sync(){!this.attributes.has(`no_async_preload`)&&this._sync&&this._sync.syncSync(),await this._promise.catch(()=>{})}syncSync(){this.checkSync(),this._sync.syncSync()}existsSync(e){return this.checkSync(),this._sync.existsSync(e)}readSync(e,t,n,r){this.checkSync(),this._sync.readSync(e,t,n,r)}writeSync(e,t,n){this.checkSync(),this._sync.writeSync(e,t,n),this._async(()=>this.write(e,t,n))}streamWrite(e,t){this.checkSync();let n=this._sync.streamWrite(e,t).getWriter(),r=super.streamWrite(e,t).getWriter();return new WritableStream({async write(e,t){await Promise.all([n.write(e),r.write(e)]).catch(t.error.bind(t))},async close(){await Promise.all([n.close(),r.close()])},async abort(e){await Promise.all([n.abort(e),r.abort(e)])}})}async crossCopy(e,t={active:0,waiters:[],failure:null}){try{if(t.failure)throw t.failure.error;this.checkSync();let n=await this.stat(e);if(t.failure)throw t.failure.error;if(!q(n)){t.active>=16?await new Promise((e,n)=>t.waiters.push({resolve:e,reject:n})):t.active++;try{if(t.failure)throw t.failure.error;this._sync.createFileSync(e,n);let r=new Uint8Array(n.size);await this.read(e,r,0,n.size),this._sync.writeSync(e,r,0),this._sync.touchSync(e,n)}catch(e){throw t.failure??={error:e},t.failure.error}finally{let e=!t.failure&&t.waiters.shift();e?e.resolve():t.active--}return}e!==`/`&&(this._sync.mkdirSync(e,n),this._sync.touchSync(e,n));let r=[];for(let n of await this.readdir(e)){if(t.failure)break;r.push(this.crossCopy(U(e,n),t))}if(await Promise.allSettled(r),t.failure)throw t.failure.error}catch(e){t.failure??={error:e};for(let e of t.waiters.splice(0))e.reject(t.failure.error);throw t.failure.error}}_patchAsync(){let e=[`read`,`readdir`,`stat`,`exists`],t=Zs.filter(t=>!e.includes(t));for(let e of t){let t=this[e].bind(this);function n(t,r){if(r||(r=Error(),Error.captureStackTrace(r,n)),!r.stack)return!1;let i=r.stack.split(`
10
10
  `).slice(t).join(`
11
11
  `);return i.includes(`at <computed> [as ${e}]`)||i.includes(`at async <computed> [as ${e}]`)||i.includes(`${e}Sync `)}this[e]=async(...r)=>{let i=await t(...r);if(n(2))return i;if(!this._isInitialized)return this._skippedCacheUpdates++,i;try{this._sync?.[`${e}Sync`]?.(...r)}catch(e){if(n(3,e))return i;throw e.message+=` (Out of sync!)`,L(e)}return i}}me(`Async: patched ${t.length} methods`)}}return t}var $s=class extends Qs($n){channel;timeout;port;_sync=ur.create({label:`tmpfs:port`});constructor(e,t=250){super(1886351988,`portfs`),this.channel=e,this.timeout=t,this.port=Ls(e),qs(this.port,Ks)}rpc(e,...t){return Ws({method:e,args:t},{port:this.port,timeout:this.timeout,fs:this})}async ready(){await this.rpc(`ready`),await super.ready()}rename(e,t){return this.rpc(`rename`,e,t)}async stat(e){let t=await this.rpc(`stat`,e);return t instanceof K?t:new K(t)}async touch(e,t){let n=t instanceof K?t:new K(t);await this.rpc(`touch`,e,new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}async sync(){await super.sync(),await this.rpc(`sync`)}async createFile(e,t){t instanceof K&&(t=t.toJSON());let n=await this.rpc(`createFile`,e,t);return n instanceof K?n:new K(n)}unlink(e){return this.rpc(`unlink`,e)}rmdir(e){return this.rpc(`rmdir`,e)}async mkdir(e,t){t instanceof K&&(t=t.toJSON());let n=await this.rpc(`mkdir`,e,t);return n instanceof K?n:new K(n)}readdir(e){return this.rpc(`readdir`,e)}exists(e){return this.rpc(`exists`,e)}link(e,t){return this.rpc(`link`,e,t)}async read(e,t,n,r){t.set(await this.rpc(`read`,e,t,n,r))}write(e,t,n){return this.rpc(`write`,e,t,n)}};function ec(e,t){let n=Ls(e);qs(n,e=>Xs(n,t,e))}function tc(e,t){let n=Ls(e);Js(n,e=>Xs(n,t,e))}var nc={name:`Port`,options:{port:{type:[EventTarget,function(e){return typeof e==`object`&&`on`in e}],required:!0},timeout:{type:`number`,required:!1}},create(e){return new $s(e.port,e.timeout)}};async function rc(e,t,n=0){let r=Ls(e),i=Ys(r),a=await es(t,n);return ec(r,a),await i(a),pe(`Resolved remote mount: `+a.toString()),a}var ic=function(e,t,n,r,i,a){function o(e){if(e!==void 0&&typeof e!=`function`)throw TypeError(`Function expected`);return e}for(var s=r.kind,c=s===`getter`?`get`:s===`setter`?`set`:`value`,l=!t&&e?r.static?e:e.prototype:null,u=t||(l?Object.getOwnPropertyDescriptor(l,r.name):{}),d,f=!1,p=n.length-1;p>=0;p--){var m={};for(var h in r)m[h]=h===`access`?{}:r[h];for(var h in r.access)m.access[h]=r.access[h];m.addInitializer=function(e){if(f)throw TypeError(`Cannot add initializers after decoration has completed`);a.push(o(e||null))};var g=(0,n[p])(s===`accessor`?{get:u.get,set:u.set}:u[c],m);if(s===`accessor`){if(g===void 0)continue;if(typeof g!=`object`||!g)throw TypeError(`Object expected`);(d=o(g.get))&&(u.get=d),(d=o(g.set))&&(u.set=d),(d=o(g.init))&&i.unshift(d)}else(d=o(g))&&(s===`field`?i.unshift(d):u[c]=d)}l&&Object.defineProperty(l,r.name,u),f=!0},Q=function(e,t,n){for(var r=arguments.length>2,i=0;i<t.length;i++)n=r?t[i].call(e,n):t[i].call(e);return r?n:void 0},ac=function(e,t,n){if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},oc=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),sc=e=>`0x`+e.toString(16).padStart(8,`0`),{format:cc}=new Intl.NumberFormat(`en-US`,{notation:`compact`,maximumFractionDigits:2,unit:`byte`,unitDisplay:`narrow`}),lc=(()=>{var e,t,n,r;let i=[Xt.packed()],a,s=[],c,l=$t(o),u,d=[],f=[],p,m=[],h=[],g,_=[],v=[],y,b=[],x=[];var S=class extends l{static{c=this}static{let o=typeof Symbol==`function`&&Symbol.metadata?Object.create(l[Symbol.metadata]??null):void 0;u=[(e=V).uint32.bind(e)],p=[(t=V).uint32.bind(t)],g=[(n=V).uint32.bind(n)],y=[(r=V).uint32.bind(r)],ic(this,null,u,{kind:`accessor`,name:`id`,static:!1,private:!1,access:{has:e=>`id`in e,get:e=>e.id,set:(e,t)=>{e.id=t}},metadata:o},d,f),ic(this,null,p,{kind:`accessor`,name:`offset_`,static:!1,private:!1,access:{has:e=>`offset_`in e,get:e=>e.offset_,set:(e,t)=>{e.offset_=t}},metadata:o},m,h),ic(this,null,g,{kind:`accessor`,name:`offset`,static:!1,private:!1,access:{has:e=>`offset`in e,get:e=>e.offset,set:(e,t)=>{e.offset=t}},metadata:o},_,v),ic(this,null,y,{kind:`accessor`,name:`size`,static:!1,private:!1,access:{has:e=>`size`in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:o},b,x),ic(null,a={value:c},i,{kind:`class`,name:c.name,metadata:o},null,s),S=c=a.value,o&&Object.defineProperty(c,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})}static name=`MetadataEntry`;#e=Q(this,d,void 0);get id(){return this.#e}set id(e){this.#e=e}#t=(Q(this,f),Q(this,m,void 0));get offset_(){return this.#t}set offset_(e){this.#t=e}#n=(Q(this,h),Q(this,_,void 0));get offset(){return this.#n}set offset(e){this.#n=e}#r=(Q(this,v),Q(this,b,void 0));get size(){return this.#r}set size(e){this.#r=e}toString(){return`<MetadataEntry @ ${sc(this.byteOffset)}>`}constructor(){super(...arguments),Q(this,x)}static{Q(c,s)}};return c})(),uc=255,dc=5,fc=(()=>{var e,t,n,r;let i=[Xt.packed()],a,o=[],s,c=$t.typed(Int32Array),l,u=[],d=[],f,p=[],m=[],h,g=[],_=[],v,y=[],b=[],x,S=[],C=[];var w=class extends c{static{s=this}static{let T=typeof Symbol==`function`&&Symbol.metadata?Object.create(c[Symbol.metadata]??null):void 0;l=[(e=V).uint32.bind(e)],f=[(t=V).uint64.bind(t)],h=[(n=V).uint32.bind(n)],v=[Zt(tn(lc,uc))],x=[(r=V).int32.bind(r)],ic(this,null,l,{kind:`accessor`,name:`checksum`,static:!1,private:!1,access:{has:e=>`checksum`in e,get:e=>e.checksum,set:(e,t)=>{e.checksum=t}},metadata:T},u,d),ic(this,null,f,{kind:`accessor`,name:`timestamp`,static:!1,private:!1,access:{has:e=>`timestamp`in e,get:e=>e.timestamp,set:(e,t)=>{e.timestamp=t}},metadata:T},p,m),ic(this,null,h,{kind:`accessor`,name:`previous_offset`,static:!1,private:!1,access:{has:e=>`previous_offset`in e,get:e=>e.previous_offset,set:(e,t)=>{e.previous_offset=t}},metadata:T},g,_),ic(this,null,v,{kind:`accessor`,name:`items`,static:!1,private:!1,access:{has:e=>`items`in e,get:e=>e.items,set:(e,t)=>{e.items=t}},metadata:T},y,b),ic(this,null,x,{kind:`accessor`,name:`locked`,static:!1,private:!1,access:{has:e=>`locked`in e,get:e=>e.locked,set:(e,t)=>{e.locked=t}},metadata:T},S,C),ic(null,a={value:s},i,{kind:`class`,name:s.name,metadata:T},null,o),w=s=a.value,T&&Object.defineProperty(s,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:T})}static name=`MetadataBlock`;static lockIndex;#e=Q(this,u,void 0);get checksum(){return this.#e}set checksum(e){this.#e=e}#t=(Q(this,d),Q(this,p,BigInt(Date.now())));get timestamp(){return this.#t}set timestamp(e){this.#t=e}#n=(Q(this,m),Q(this,g,void 0));get previous_offset(){return this.#n}set previous_offset(e){this.#n=e}_previous=Q(this,_);get previous(){if(this.previous_offset)return this._previous??=new w(this.buffer,this.previous_offset),this._previous}#r=Q(this,y,void 0);get items(){return this.#r}set items(e){this.#r=e}toString(e=!1){if(!e)return`<MetadataBlock @ ${sc(this.byteOffset)}>`;let t=[`---- Metadata block at ${sc(this.byteOffset)} ----`,`Checksum: ${sc(this.checksum)}`,`Last updated: ${new Date(Number(this.timestamp)).toLocaleString()}`,`Previous block: ${sc(this.previous_offset)}`,`Entries:`].join(`
12
12
  `);for(let e of this.items)e.offset&&(t+=`\n\t${sc(e.id)}: ${cc(e.size).padStart(5)} at ${sc(e.offset)}`);return t}#i=(Q(this,b),Q(this,S,void 0));get locked(){return this.#i}set locked(e){this.#i=e}waitUnlocked(e=0){if(e>dc)throw de(P(`EBUSY`,`sbfs: exceeded max attempts waiting for metadata block at ${sc(this.byteOffset)} to be unlocked`));if(Atomics.load(this,w.lockIndex))switch(Atomics.wait(this,w.lockIndex,1)){case`ok`:break;case`not-equal`:return e++,L(`sbfs: waiting for metadata block at ${sc(this.byteOffset)} to be unlocked (${e}/${dc})`),this.waitUnlocked(e);case`timed-out`:throw de(P(`EBUSY`,`sbfs: timed out waiting for metadata block at ${sc(this.byteOffset)} to be unlocked`))}}lock(){this.waitUnlocked(),Atomics.store(this,w.lockIndex,1);let e=()=>{Atomics.store(this,w.lockIndex,0),Atomics.notify(this,w.lockIndex,1)};return e[Symbol.dispose]=e,e}constructor(){super(...arguments),Q(this,C)}static{Q(s,o)}};return w=s})();Object.assign(fc,{lockIndex:Gt(fc,`locked`)/Int32Array.BYTES_PER_ELEMENT});var pc=1651715706,mc=2,hc=(()=>{var e,t,n,r,i,a,o,s,c,l;let u=[Xt.packed()],d,f=[],p,m=$t.typed(BigUint64Array),h,g=[],_=[],v,y=[],b=[],x,S=[],C=[],w,T=[],ee=[],E,te=[],ne=[],D,k=[],A=[],j,M=[],N=[],F,re=[],I=[],ie,ae=[],oe=[],se,ce=[],le=[],ue,fe=[],pe=[],he,ge=[],_e=[],ve,ye=[],be=[];var xe=class extends m{static{p=this}static{let O=typeof Symbol==`function`&&Symbol.metadata?Object.create(m[Symbol.metadata]??null):void 0;h=[(e=V).uint32.bind(e)],v=[(t=V).uint32.bind(t)],x=[(n=V).uint16.bind(n)],w=[(r=V).uint16.bind(r)],E=[(i=V).uint32.bind(i)],D=[(a=V).uint64.bind(a)],j=[(o=V).uint64.bind(o)],F=[V.uint8(16)],ie=[(s=V).uint32.bind(s)],se=[(c=V).uint32.bind(c)],ue=[(l=V).uint32.bind(l)],he=[V.char(64)],ve=[V.char(132)],ic(this,null,h,{kind:`accessor`,name:`checksum`,static:!1,private:!1,access:{has:e=>`checksum`in e,get:e=>e.checksum,set:(e,t)=>{e.checksum=t}},metadata:O},g,_),ic(this,null,v,{kind:`accessor`,name:`magic`,static:!1,private:!1,access:{has:e=>`magic`in e,get:e=>e.magic,set:(e,t)=>{e.magic=t}},metadata:O},y,b),ic(this,null,x,{kind:`accessor`,name:`version`,static:!1,private:!1,access:{has:e=>`version`in e,get:e=>e.version,set:(e,t)=>{e.version=t}},metadata:O},S,C),ic(this,null,w,{kind:`accessor`,name:`inode_format`,static:!1,private:!1,access:{has:e=>`inode_format`in e,get:e=>e.inode_format,set:(e,t)=>{e.inode_format=t}},metadata:O},T,ee),ic(this,null,E,{kind:`accessor`,name:`flags`,static:!1,private:!1,access:{has:e=>`flags`in e,get:e=>e.flags,set:(e,t)=>{e.flags=t}},metadata:O},te,ne),ic(this,null,D,{kind:`accessor`,name:`used_bytes`,static:!1,private:!1,access:{has:e=>`used_bytes`in e,get:e=>e.used_bytes,set:(e,t)=>{e.used_bytes=t}},metadata:O},k,A),ic(this,null,j,{kind:`accessor`,name:`total_bytes`,static:!1,private:!1,access:{has:e=>`total_bytes`in e,get:e=>e.total_bytes,set:(e,t)=>{e.total_bytes=t}},metadata:O},M,N),ic(this,null,F,{kind:`accessor`,name:`uuid`,static:!1,private:!1,access:{has:e=>`uuid`in e,get:e=>e.uuid,set:(e,t)=>{e.uuid=t}},metadata:O},re,I),ic(this,null,ie,{kind:`accessor`,name:`metadata_block_size`,static:!1,private:!1,access:{has:e=>`metadata_block_size`in e,get:e=>e.metadata_block_size,set:(e,t)=>{e.metadata_block_size=t}},metadata:O},ae,oe),ic(this,null,se,{kind:`accessor`,name:`metadata_offset_`,static:!1,private:!1,access:{has:e=>`metadata_offset_`in e,get:e=>e.metadata_offset_,set:(e,t)=>{e.metadata_offset_=t}},metadata:O},ce,le),ic(this,null,ue,{kind:`accessor`,name:`metadata_offset`,static:!1,private:!1,access:{has:e=>`metadata_offset`in e,get:e=>e.metadata_offset,set:(e,t)=>{e.metadata_offset=t}},metadata:O},fe,pe),ic(this,null,he,{kind:`accessor`,name:`label`,static:!1,private:!1,access:{has:e=>`label`in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:O},ge,_e),ic(this,null,ve,{kind:`accessor`,name:`_padding`,static:!1,private:!1,access:{has:e=>`_padding`in e,get:e=>e._padding,set:(e,t)=>{e._padding=t}},metadata:O},ye,be),ic(null,d={value:p},u,{kind:`class`,name:p.name,metadata:O},null,f),xe=p=d.value,O&&Object.defineProperty(p,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:O})}static name=`SuperBlock`;constructor(...e){if(super(...e),Q(this,be),this.magic!=pc){R(`sbfs: Invalid magic value, assuming this is a fresh super block`);let e=new fc(this.buffer,B(xe));Object.assign(this,{metadata:e,metadata_offset:e.byteOffset,used_bytes:BigInt(B(xe)+B(fc)),total_bytes:BigInt(this.buffer.byteLength),magic:pc,version:1,inode_format:5,metadata_block_size:B(fc),uuid:O(crypto.randomUUID())}),vc(this),vc(e);return}if(this.checksum!==_c(this))throw de(P(`EIO`,`sbfs: checksum mismatch for super block`));if(this.metadata=new fc(this.buffer,this.metadata_offset),this.metadata.checksum!==_c(this.metadata))throw de(P(`EIO`,`sbfs: checksum mismatch for metadata block (saved ${sc(this.metadata.checksum)}, computed ${sc(_c(this.metadata))})`));if(this.inode_format!=5)throw de(P(`EIO`,`sbfs: inode format mismatch`));if(this.metadata_block_size!=B(fc))throw de(P(`EIO`,`sbfs: metadata block size mismatch`))}#e=Q(this,g,void 0);get checksum(){return this.#e}set checksum(e){this.#e=e}#t=(Q(this,_),Q(this,y,void 0));get magic(){return this.#t}set magic(e){this.#t=e}#n=(Q(this,b),Q(this,S,void 0));get version(){return this.#n}set version(e){this.#n=e}#r=(Q(this,C),Q(this,T,void 0));get inode_format(){return this.#r}set inode_format(e){this.#r=e}#i=(Q(this,ee),Q(this,te,void 0));get flags(){return this.#i}set flags(e){this.#i=e}#a=(Q(this,ne),Q(this,k,void 0));get used_bytes(){return this.#a}set used_bytes(e){this.#a=e}#o=(Q(this,A),Q(this,M,void 0));get total_bytes(){return this.#o}set total_bytes(e){this.#o=e}#s=(Q(this,N),Q(this,re,void 0));get uuid(){return this.#s}set uuid(e){this.#s=e}#c=(Q(this,I),Q(this,ae,void 0));get metadata_block_size(){return this.#c}set metadata_block_size(e){this.#c=e}#l=(Q(this,oe),Q(this,ce,void 0));get metadata_offset_(){return this.#l}set metadata_offset_(e){this.#l=e}#u=(Q(this,le),Q(this,fe,void 0));get metadata_offset(){return this.#u}set metadata_offset(e){this.#u=e}metadata=Q(this,pe);#d=Q(this,ge,void 0);get label(){return this.#d}set label(e){this.#d=e}#f=(Q(this,_e),Q(this,ye,void 0));get _padding(){return this.#f}set _padding(e){this.#f=e}rotateMetadata(){let e=BigInt(Int32Array.BYTES_PER_ELEMENT),t=BigInt(B(fc)),n=Atomics.load(this,mc),r;for(;;){let i=(e-n%e)%e;r=n+i;let a=r+t;if(a>this.total_bytes)throw L(P(`ENOSPC`,`sbfs: not enough space for a new metadata block`));let o=Atomics.compareExchange(this,mc,n,a);if(o===n)break;n=o}let i=new fc(this.buffer,Number(r)),a=new Uint32Array(this.buffer,this.byteOffset,B(xe)/Uint32Array.BYTES_PER_ELEMENT),o=Atomics.load(a,gc);for(;;){i.previous_offset=o,vc(i);let e=Atomics.compareExchange(a,gc,o,i.byteOffset);if(e===o)break;o=e}return this.metadata=i,vc(this),me(`sbfs: rotated metadata block at ${sc(i.previous_offset)} with new block at ${sc(i.byteOffset)}`),i}isUnused(e,t){if(!t)return!0;if(e+t>this.total_bytes||e<B(xe))return!1;for(let n=this.metadata;n;n=n.previous){if(e<n.byteOffset+B(fc)&&e+t>n.byteOffset)return!1;for(let r of n.items)if(r.offset&&(e>=r.offset&&e<r.offset+r.size||e+t>r.offset&&e+t<=r.offset+r.size||e<=r.offset&&e+t>=r.offset+r.size))return!1}return!0}static{Q(p,f)}};return xe=p})(),gc=Gt(hc,`metadata_offset`)/Uint32Array.BYTES_PER_ELEMENT;function _c(e){let t=B(e)-4;return e instanceof fc&&(t-=Int32Array.BYTES_PER_ELEMENT),l(new Uint8Array(e.buffer,e.byteOffset+4,t))}function vc(e){e instanceof fc&&(e.timestamp=BigInt(Date.now())),e.checksum=_c(e)}var yc=class extends o{flags=[];name=`sbfs`;type=1935828595;get uuid(){return D(this.superblock.uuid)}superblock;_view;_u8;constructor(...e){if(super(...e),this.byteLength<B(hc)+B(fc))throw de(P(`EINVAL`,`sbfs: Buffer is too small for a file system`));this._view=new DataView(this.buffer,this.byteOffset,this.byteLength),this._u8=new Uint8Array(this.buffer,this.byteOffset,this.byteLength),this.superblock=new hc(this.buffer,this.byteOffset)}*keys(){let e=new Set;for(let t=this.superblock.metadata;t;t=t.previous){t.waitUnlocked();for(let n of t.items)!n.offset||e.has(n.id)||(e.add(n.id),yield n.id)}}get(e){for(let t=this.superblock.metadata;t;t=t.previous){t.waitUnlocked();for(let n of t.items){if(!n.offset||n.id!=e)continue;let t=this.byteOffset+n.offset;return new Uint8Array(this.buffer.slice(t,t+n.size))}}}set(e,t){let n={stack:[],error:void 0,hasError:!1};try{if(e===0&&t.length<B(K))throw ue(P(`EIO`,`sbfs: tried to set ${t.length} bytes for id 0!`));for(let n=this.superblock.metadata;n;n=n.previous){n.waitUnlocked();for(let r of n.items){let i={stack:[],error:void 0,hasError:!1};try{if(!r.offset||r.id!=e)continue;if(ac(i,n.lock(),!1),t.length==r.size){this._u8.set(t,r.offset);return}if(t.length<r.size||this.superblock.isUnused(r.offset,t.length)){this._u8.set(t,r.offset),r.size=t.length,vc(n);return}r.offset=Number(Atomics.add(this.superblock,mc,BigInt(t.length))),r.size=t.length,this._u8.set(t,r.offset),vc(n),vc(this.superblock);return}catch(e){i.error=e,i.hasError=!0}finally{oc(i)}}}let r=Array.from(this.superblock.metadata.items).find(e=>!e.offset);r||=(this.superblock.rotateMetadata(),this.superblock.metadata.items[0]),ac(n,this.superblock.metadata.lock(),!1);let i=Number(Atomics.add(this.superblock,mc,BigInt(t.length)));r.id=e,r.offset=i,r.size=t.length,this._u8.set(t,i),vc(this.superblock.metadata),vc(this.superblock)}catch(e){n.error=e,n.hasError=!0}finally{oc(n)}}delete(e){for(let t=this.superblock.metadata;t;t=t.previous){t.waitUnlocked();for(let n of t.items)if(n.id==e){n.offset=0,n.size=0,n.id=0,vc(t);return}}}_fs;get fs(){return this._fs}set fs(e){this.buffer.constructor.name===`SharedArrayBuffer`&&e?.attributes.set(`no_id_tables`,!0),this._fs=e}sync(){return Promise.resolve()}usage(){return{totalSpace:Number(this.superblock.total_bytes),freeSpace:Number(this.superblock.total_bytes-this.superblock.used_bytes)}}transaction(){return new sr(this)}},bc={name:`SingleBuffer`,options:{buffer:{type:`object`,required:!0}},create(e){let t=new or(ArrayBuffer.isView(e.buffer)?new yc(e.buffer.buffer,e.buffer.byteOffset,e.buffer.byteLength):new yc(e.buffer));return t.checkRootSync(),t}},$=()=>{};async function xc(e){let t=[];for await(let n of e)t.push(n);return t}function Sc(e,t,n=$){vo.call(this,e,t).then(()=>n(null)).catch(n)}function Cc(e,t=$){yo.call(this,e).then(t).catch(()=>t(!1))}function wc(e,t,n=$){n=typeof t==`function`?t:n,bo.call(this,e,typeof t==`function`?{}:t).then(e=>n(null,e)).catch(n)}function Tc(e,t,n=$){n=typeof t==`function`?t:n,xo.call(this,e,typeof t==`function`?{}:t).then(e=>n(null,e)).catch(n)}function Ec(e,t=0,n=$){n=typeof t==`function`?t:n;let r=typeof t==`number`?t:0;So.call(this,e,r).then(()=>n(null)).catch(n)}function Dc(e,t=$){Co.call(this,e).then(()=>t(null)).catch(t)}function Oc(e,t,n,r=$){let i=on(n,420);r=typeof n==`function`?n:r,wo.call(this,e,t,i).then(e=>r(null,e.fd)).catch(r)}function kc(e,t,n=$){n=typeof t==`function`?t:n,To.call(this,e,typeof t==`function`?null:t).then(e=>n(null,e)).catch(n)}function Ac(e,t,n,r=$){r=typeof n==`function`?n:r,Eo.call(this,e,t,typeof n==`function`?null:n).then(()=>r(null)).catch(r)}function jc(e,t,n,r=$){let i=typeof n==`function`?void 0:n;r=typeof n==`function`?n:r,Do.call(this,e,t,i).then(()=>r(null)).catch(r)}function Mc(e,t,n=$){n=typeof t==`function`?t:n,new _o(this,e).stat().then(e=>n(null,typeof t==`object`&&t?.bigint?new Mn(e):e)).catch(n)}function Nc(e,t=$){new _o(this,e).close().then(()=>t(null)).catch(t)}function Pc(e,t,n=$){let r=typeof t==`number`?t:0;n=typeof t==`function`?t:n;let i=new _o(this,e);if(r<0)throw P(`EINVAL`);i.truncate(r).then(()=>n(null)).catch(n)}function Fc(e,t=$){new _o(this,e).sync().then(()=>t(null)).catch(t)}function Ic(e,t=$){new _o(this,e).datasync().then(()=>t(null)).catch(t)}function Lc(e,t,n,r,i,a=$){let o,s,c,l,u,d=new _o(this,e),f=[n,r,i].find(e=>typeof e==`function`)??a;typeof t==`string`?(l=typeof n==`number`?n:null,u=typeof r==`string`?r:`utf8`,o=Y.Buffer.from(t,u),s=0,c=o.byteLength):(o=Y.Buffer.from(t.buffer,t.byteOffset,t.byteLength),s=typeof n==`number`?n:0,c=typeof r==`number`?r:o.byteLength-s,l=typeof i==`number`?i:null),d.write(o,s,c,l).then(({bytesWritten:e})=>f(null,e,typeof t==`string`?t:o)).catch(f)}function Rc(e,t,n,r,i,a=$){new _o(this,e).read(t,n,r,i).then(({bytesRead:e,buffer:t})=>a(null,e,t)).catch(a)}function zc(e,t,n,r=$){new _o(this,e).chown(t,n).then(()=>r(null)).catch(r)}function Bc(e,t,n){new _o(this,e).chmod(t).then(()=>n(null)).catch(n)}function Vc(e,t,n,r=$){new _o(this,e).utimes(t,n).then(()=>r(null)).catch(r)}function Hc(e,t=$){Oo.call(this,e).then(()=>t(null)).catch(t)}function Uc(e,t,n=$){ko.call(this,e,t).then(()=>n(null)).catch(n)}function Wc(e,t,n=$){n=typeof t==`function`?t:n;let r=typeof t==`function`?{}:t;Ao.call(this,e,r).then(e=>n(null,e)).catch(n)}function Gc(e,t,n=$){jo.call(this,e,t).then(()=>n(null)).catch(n)}function Kc(e,t,n,r=$){let i=typeof n==`string`?n:`file`;r=typeof n==`function`?n:r,Mo.call(this,e,t,i).then(()=>r(null)).catch(r)}function qc(e,t,n=$){n=typeof t==`function`?t:n,No.call(this,e).then(e=>n(null,e)).catch(n)}function Jc(e,t,n,r=$){Po.call(this,e,t,n).then(()=>r(null)).catch(r)}function Yc(e,t,n,r=$){Fo.call(this,e,t,n).then(()=>r(null)).catch(r)}function Xc(e,t,n=$){Io.call(this,e,t).then(()=>n(null)).catch(n)}function Zc(e,t,n=$){Lo.call(this,e,t).then(()=>n(null)).catch(n)}function Qc(e,t,n,r=$){Ro.call(this,e,t,n).then(()=>r(null)).catch(r)}function $c(e,t,n,r=$){zo.call(this,e,t,n).then(()=>r(null)).catch(r)}function el(e,t,n=$){n=typeof t==`function`?t:n,Bo.call(this,e,typeof t==`function`?null:t).then(e=>n(null,e)).catch(n)}function tl(e,t,n=$){let r=typeof t==`number`?t:4;n=typeof t==`function`?t:n,Ho.call(this,e,r).then(()=>n(null)).catch(n)}var nl=new Map;function rl(e,t,n){let r=H(e),i=typeof t==`function`?{}:t;if(typeof t==`function`&&(n=t),!n)throw N(`EINVAL`,`watch`,e.toString());if(nl.has(r)){let e=nl.get(r);e&&e.listeners.add(n);return}let a=new ha(this,r,i);a.on(`change`,(e,t)=>{let n=nl.get(r);if(n)for(let r of n.listeners)r(e,t)}),nl.set(r,{watcher:a,listeners:new Set([n])})}function il(e,t=$){let n=H(e),r=nl.get(n);r&&(t&&t!==$?r.listeners.delete(t):r.listeners.clear(),r.listeners.size===0&&(r.watcher.stop(),nl.delete(n)))}function al(e,t,n){let r=new ma(this,H(e),typeof t==`object`?t:{});return n=typeof t==`function`?t:n,r.on(`change`,n||$),r}function ol(e,t){t=typeof t==`object`?t:{encoding:t};let n=wo.call(this,e,`r`,t?.mode);return new lo({...t,autoClose:!0},n)}function sl(e,t){t=typeof t==`object`?t:{encoding:t};let n=wo.call(this,e,`w`,t?.mode);return new uo(t,n)}function cl(e,t,n=$){n=typeof t==`function`?t:n,Uo.call(this,e,typeof t==`function`?void 0:t).then(()=>n(null)).catch(n)}function ll(e,t,n=$){n=typeof t==`function`?t:n,Wo.call(this,e,typeof t==`function`?null:t).then(e=>n(null,e)).catch(n)}function ul(e,t,n,r=$){r=typeof n==`function`?n:r,Ko.call(this,e,t,typeof n==`function`?void 0:n).then(()=>r(null)).catch(r)}function dl(e,t,n,r=$){r=typeof n==`function`?n:r,new _o(this,e).readv(t,typeof n==`function`?void 0:n).then(({buffers:e,bytesRead:t})=>r(null,t,e)).catch(r)}function fl(e,t,n,r=$){r=typeof n==`function`?n:r,new _o(this,e).writev(t,typeof n==`function`?void 0:n).then(({buffers:e,bytesWritten:t})=>r(null,t,e)).catch(r)}function pl(e,t,n=$){n=typeof t==`function`?t:n,qo.call(this,e,typeof t==`function`?void 0:t).then(e=>n(null,e)).catch(n)}function ml(e,t,n,r=$){r=typeof n==`function`?n:r,Jo.call(this,e,t,typeof n==`function`?void 0:n).then(()=>r(null)).catch(r)}function hl(e,t,n=$){n=typeof t==`function`?t:n,Yo.call(this,e,typeof t==`function`?void 0:t).then(e=>n(null,e)).catch(n)}async function gl(e,t){let n=await wo.call(this,e.toString(),`r`),r=await n.readFile();return await n.close(),new Blob([r],t)}function _l(e,t,n=$){n=typeof t==`function`?t:n,xc(Xo.call(this,e,typeof t==`function`?void 0:t)).then(e=>n(null,e??[])).catch(e=>n(e))}function vl(e,t){return Object.assign(Error(t),{code:e})}function yl(e,t,n){return vl(`ERR_INVALID_ARG_TYPE`,`The "${e}" argument must be of type ${t}. Received ${typeof n}`)}function bl(e){return vl(`ERR_INVALID_STATE`,`Invalid state: `+e)}function xl(e,t){if(typeof e!=`number`)throw yl(t,`number`,e);if(!Number.isInteger(e)||e<0||e>4294967295)throw vl(`ERR_OUT_OF_RANGE`,`The value of "${t}" is out of range. It must be an integer >= 0 and <= 4294967295. Received ${e}`)}var Sl=16384,Cl=100,wl=Y.Buffer.alloc(0),Tl={open:Oc,openSync:Di,close:Nc,write:Lc,writeSync:Li,fsync:Fc,fsyncSync:Fi,mkdir:Uc,mkdirSync:Ui};function El(e,t,n){if(typeof e==`string`){if(Y.Buffer.byteLength(e)===n)n=e.length;else{let t=Y.Buffer.from(e);for(;n>0&&(t[n]&192)==128;)n--;n=t.subarray(0,n).toString().length}}return{writingBuf:e.slice(n),len:Math.max(t-n,0)}}function Dl(e,t){return e.length?e.length==1?e[0]:Y.Buffer.concat(e,t):wl}var Ol=Symbol(`Utf8StreamFS`),kl=class extends u.default{#e=0;#t=-1;#n=[];#r=[];#i=!1;#a=!1;#o=!1;#s=!1;#c=!1;#l=16387;#u=null;#d=!1;#f=0;#p=0;#m=Sl;#h=!1;#g=0;#_;#v=!1;#y=!1;#b=!0;#x;#S=()=>!0;#C=!1;#w;#T=``;#E;static[Ol]=Tl;static _withContext(e){Le(e);class t extends kl{static[Ol]=_(Tl,e)}return t}constructor(e={}){if(typeof e!=`object`||!e)throw yl(`options`,`object`,e);let{dest:t,minLength:n,maxLength:r,maxWrite:i,periodicFlush:a,sync:o,append:s=!0,mkdir:c,retryEAGAIN:l,fsync:u,contentMode:d=`utf8`,mode:f,fs:p={}}=e;super();let m=e.fd??t;if(typeof p!=`object`||!p)throw yl(`options.fs`,`object`,p);this.#E={...this.constructor[Ol],...p};let h=this.#E;for(let e of[`write`,`writeSync`,`fsync`,`fsyncSync`,`close`,`open`,`mkdir`,`mkdirSync`])if(typeof h[e]!=`function`)throw yl(`options.fs.${e}`,`function`,h[e]);this.#l=Math.max(n||0,this.#l),this.#f=n||0,this.#p=r||0,this.#m=i||Sl,this.#g=a||0,this.#v=o||!1,this.#y=u||!1,this.#b=s||!1,this.#x=f,this.#S=l||(()=>!0),this.#C=c||!1,xl(this.#l,`options.hwm`),xl(this.#f,`options.minLength`),xl(this.#p,`options.maxLength`),xl(this.#m,`options.maxWrite`),xl(this.#g,`options.periodicFlush`);for(let[e,t]of[[`sync`,this.#v],[`fsync`,this.#y],[`append`,this.#b],[`mkdir`,this.#C]])if(typeof t!=`boolean`)throw yl(`options.${e}`,`boolean`,t);if(typeof this.#S!=`function`)throw yl(`options.retryEAGAIN`,`function`,this.#S);if(d!=`buffer`&&d!=`utf8`)throw vl(`ERR_INVALID_ARG_VALUE`,`The property 'options.contentMode' must be one of: 'buffer', 'utf8'. Received ${JSON.stringify(d)}`);if(this.#w=d,this.#T=d==`buffer`?wl:``,typeof m==`number`)this.#t=m,queueMicrotask(()=>this.emit(`ready`));else if(typeof m==`string`)this.#N(m);else throw yl(`fd`,`number or string`,m);if(this.#f>=this.#m)throw vl(`ERR_INVALID_ARG_VALUE`,`The argument 'minLength' should be smaller than maxWrite (${this.#m}). Received ${this.#f}`);this.#g!==0&&(this.#_=setInterval(()=>this.flush(),this.#g),this.#_.unref?.())}write(e){if(this.#d)throw bl(`Utf8Stream is destroyed`);if(this.#w==`buffer`){if(!Y.Buffer.isBuffer(e))throw yl(`data`,`Buffer`,e)}else if(typeof e!=`string`)throw yl(`data`,`string`,e);let t=this.#e+e.length;if(this.#p&&t>this.#p)return this.emit(`drop`,e),this.#e<this.#l;let n=this.#n.length-1;if(this.#w==`buffer`){let t=this.#n;!t.length||this.#r[n]+e.length>this.#m?(t.push([e]),this.#r.push(e.length)):(t[n].push(e),this.#r[n]+=e.length)}else{let t=this.#n;!t.length||t[n].length+e.length>this.#m?t.push(e):t[n]+=e}return this.#e=t,!this.#i&&this.#e>=this.#f&&this.#F(),this.#e<this.#l}flush(e){if(e!=null&&typeof e!=`function`)throw yl(`cb`,`function`,e);if(this.#d){let t=bl(`Utf8Stream is destroyed`);if(!e)throw t;e(t);return}if(this.#f<=0){e?.(null);return}e&&this.#I(e),!this.#i&&(this.#n.length||(this.#n.push(this.#w==`buffer`?[]:``),this.#w==`buffer`&&this.#r.push(0)),this.#F())}flushSync(){if(this.#d)throw bl(`Utf8Stream is destroyed`);if(this.#t<0)throw bl(`Invalid file descriptor`);this.#w==`buffer`?this.#D():this.#O()}#D(){let e=this.#n;!this.#i&&this.#T.length>0&&(e.unshift([this.#T]),this.#T=wl);let t=wl;for(;e.length||t.length;){t.length<=0&&(t=Dl(e[0],this.#r[0]));let n=this.#E.writeSync(this.#t,t);t=t.subarray(n),this.#e=Math.max(this.#e-n,0),t.length<=0&&(e.shift(),this.#r.shift())}}#O(){let e=this.#n;!this.#i&&this.#T.length>0&&(e.unshift(this.#T),this.#T=``);let t=``;for(;e.length||t;){t.length<=0&&(t=e[0]);let n=this.#E.writeSync(this.#t,t,`utf8`),r=El(t,this.#e,n);t=r.writingBuf,this.#e=r.len,t.length<=0&&e.shift()}try{this.#E.fsyncSync(this.#t)}catch{}}reopen(e){if(this.#d)throw bl(`Utf8Stream is destroyed`);if(this.#h){this.once(`ready`,()=>this.reopen(e));return}if(this.#a)return;if(!this.#u)throw vl(`ERR_OPERATION_FAILED`,`Unable to reopen a file descriptor, you must pass a file to Utf8Stream`);if(e&&(this.#u=e.toString()),this.#o=!0,this.#i)return;let t=this.#t;this.once(`ready`,()=>{t!==this.#t&&this.#E.close(t,e=>{e&&this.emit(`error`,e)})}),this.#N(this.#u)}end(){if(this.#d)throw bl(`Utf8Stream is destroyed`);if(this.#h){this.once(`ready`,()=>this.end());return}this.#a||(this.#a=!0,!this.#i&&(this.#e>0&&this.#t>=0?this.#F():this.#P()))}destroy(){this.#d||this.#P()}get mode(){return this.#x}get file(){return this.#u}get fd(){return this.#t}get minLength(){return this.#f}get maxLength(){return this.#p}get writing(){return this.#i}get sync(){return this.#v}get fsync(){return this.#y}get append(){return this.#b}get periodicFlush(){return this.#g}get contentMode(){return this.#w}get mkdir(){return this.#C}[Symbol.dispose](){this.destroy()}#k(){this.listenerCount(`drain`)&&(this.#s=!1,this.emit(`drain`))}#A(e,t=0){if(e){!this.#v&&(e.code===`EAGAIN`||e.code===`EBUSY`)&&this.#S(e,this.#T.length,this.#e-this.#T.length)?setTimeout(()=>this.#j(),Cl):(this.#i=!1,this.emit(`error`,e));return}this.emit(`write`,t);let n=El(this.#T,this.#e,t);if(this.#e=n.len,this.#T=n.writingBuf,this.#T.length){if(!this.#v){this.#j();return}try{do{let e=this.#M(),t=El(this.#T,this.#e,e);this.#e=t.len,this.#T=t.writingBuf}while(this.#T.length)}catch(e){this.#A(e);return}}this.#y&&this.#E.fsyncSync(this.#t);let r=this.#e;this.#o?(this.#i=!1,this.#o=!1,this.reopen()):r>this.#f?this.#F():this.#a?r>0?this.#F():(this.#i=!1,this.#P()):(this.#i=!1,this.#v?this.#s||(this.#s=!0,queueMicrotask(()=>this.#k())):this.emit(`drain`))}#j(){this.#w==`buffer`?this.#E.write(this.#t,this.#T,(e,t)=>this.#A(e,t)):this.#E.write(this.#t,this.#T,`utf8`,(e,t)=>this.#A(e,t))}#M(){return this.#w==`buffer`?this.#E.writeSync(this.#t,this.#T):this.#E.writeSync(this.#t,this.#T,`utf8`)}#N(e){this.#h=!0,this.#i=!0,this.#s=!1;let t=(t,n=-1)=>{if(t){this.#o=!1,this.#i=!1,this.#h=!1,this.#v?queueMicrotask(()=>void(this.listenerCount(`error`)&&this.emit(`error`,t))):this.emit(`error`,t);return}let r=this.#o;this.#t=n,this.#u=e,this.#o=!1,this.#h=!1,this.#i=!1,this.#v?queueMicrotask(()=>this.emit(`ready`)):this.emit(`ready`),!this.#d&&(!this.#i&&this.#e>this.#f||this.#c?this.#F():r&&queueMicrotask(()=>this.emit(`drain`)))},n=this.#b?`a`:`w`,r=this.#x??438;if(this.#v)try{this.#C&&this.#E.mkdirSync(W(e),{recursive:!0}),t(null,this.#E.openSync(e,n,r))}catch(e){throw t(e),e}else this.#C?this.#E.mkdir(W(e),{recursive:!0},i=>{if(i)return t(i);this.#E.open(e,n,r,t)}):this.#E.open(e,n,r,t)}#P(){if(this.#t===-1){this.once(`ready`,()=>this.#P());return}this.#_!==void 0&&clearInterval(this.#_),this.#d=!0,this.#n=[],this.#r=[];let e=e=>{if(e){this.emit(`error`,e);return}this.#a&&!this.#i&&this.emit(`finish`),this.emit(`close`)},t=()=>{this.#t!==1&&this.#t!==2?this.#E.close(this.#t,e):e(null)};try{this.#E.fsync(this.#t,t)}catch{}}#F(){if(this.#i=!0,this.#w==`buffer`?this.#T=this.#T.length?this.#T:Dl(this.#n.shift()??[],this.#r.shift()??0):this.#T||=this.#n.shift()||``,!this.#v){this.#j();return}try{this.#A(null,this.#M())}catch(e){this.#A(e)}}#I(e){this.#c=!0;let t=()=>{if(this.#y||this.#d)this.#c=!1,e(null);else try{this.#E.fsync(this.#t,t=>{this.#c=!1,e(t?.code==`EBADF`?null:t)})}catch(t){this.#c=!1,e(t)}this.off(`error`,n)},n=n=>{this.#c=!1,e(n),this.off(`drain`,t)};this.once(`drain`,t),this.once(`error`,n)}on(e,t,n){return e===`drain`&&(this.#s=!1),super.on(e,t,n)}addListener(e,t,n){return this.on(e,t,n)}once(e,t,n){return e===`drain`&&(this.#s=!1),super.once(e,t,n)}off(e,t,n,r){return super.off(e,t,n,r)}removeListener(e,t,n,r){return super.removeListener(e,t,n,r)}setMaxListeners(){throw N(`ENOSYS`,`Utf8Stream.setMaxListeners`)}getMaxListeners(){throw N(`ENOSYS`,`Utf8Stream.getMaxListeners`)}prependListener(){throw N(`ENOSYS`,`Utf8Stream.prependListener`)}prependOnceListener(){throw N(`ENOSYS`,`Utf8Stream.prependOnceListener`)}rawListeners(){throw N(`ENOSYS`,`Utf8Stream.rawListeners`)}},Al=t({BigIntStatsFs:()=>Fn,Dir:()=>vi,Dirent:()=>gi,ReadStream:()=>lo,Stats:()=>jn,StatsFs:()=>Pn,Utf8Stream:()=>kl,WriteStream:()=>uo,access:()=>tl,accessSync:()=>ta,appendFile:()=>jc,appendFileSync:()=>ji,chmod:()=>Xc,chmodSync:()=>Xi,chown:()=>Jc,chownSync:()=>Ji,close:()=>Nc,closeSync:()=>Ni,constants:()=>He,copyFile:()=>ul,copyFileSync:()=>aa,cp:()=>ml,cpSync:()=>la,createReadStream:()=>ol,createWriteStream:()=>sl,exists:()=>Cc,existsSync:()=>Si,fchmod:()=>Bc,fchmodSync:()=>Bi,fchown:()=>zc,fchownSync:()=>zi,fdatasync:()=>Ic,fdatasyncSync:()=>Ii,fstat:()=>Mc,fstatSync:()=>Mi,fsync:()=>Fc,fsyncSync:()=>Fi,ftruncate:()=>Pc,ftruncateSync:()=>Pi,futimes:()=>Vc,futimesSync:()=>Vi,glob:()=>_l,globSync:()=>da,lchmod:()=>Zc,lchmodSync:()=>Zi,lchown:()=>Yc,lchownSync:()=>Yi,link:()=>Gc,linkSync:()=>Gi,lopenSync:()=>Oi,lstat:()=>Tc,lstatSync:()=>wi,lutimes:()=>$c,lutimesSync:()=>$i,mkdir:()=>Uc,mkdirSync:()=>Ui,mkdtemp:()=>ll,mkdtempDisposableSync:()=>ia,mkdtempSync:()=>ra,open:()=>Oc,openAsBlob:()=>gl,openSync:()=>Di,opendir:()=>pl,opendirSync:()=>ca,promises:()=>fo,read:()=>Rc,readFile:()=>kc,readFileSync:()=>ki,readSync:()=>Ri,readdir:()=>Wc,readdirSync:()=>Wi,readlink:()=>qc,readlinkSync:()=>qi,readv:()=>dl,readvSync:()=>oa,realpath:()=>el,realpathSync:()=>ea,rename:()=>Sc,renameSync:()=>xi,rm:()=>cl,rmSync:()=>na,rmdir:()=>Hc,rmdirSync:()=>Hi,stat:()=>wc,statSync:()=>Ci,statfs:()=>hl,statfsSync:()=>ua,symlink:()=>Kc,symlinkSync:()=>Ki,truncate:()=>Ec,truncateSync:()=>Ti,unlink:()=>Dc,unlinkSync:()=>Ei,unwatchFile:()=>il,utimes:()=>Qc,utimesSync:()=>Qi,watch:()=>al,watchFile:()=>rl,write:()=>Lc,writeFile:()=>Ac,writeFileSync:()=>Ai,writeSync:()=>Li,writev:()=>fl,writevSync:()=>sa}),jl=t({get:()=>Pl,getSync:()=>Fl,list:()=>Bl,listSync:()=>Vl,remove:()=>Rl,removeSync:()=>zl,set:()=>Il,setSync:()=>Ll}),Ml=[];function Nl(e,t,n,r){if(!t.startsWith(`user.`)&&!Ml.includes(t))throw N(`ENOTSUP`,r,n)}async function Pl(e,t,n={}){e=H(e);let{fs:r,path:i}=Z(e,this);Nl(this,t,e,`xattr.get`);let a=await r.stat(i).catch(F(`xattr.get`,e));if(X&&!J(this,a,4))throw N(`EACCES`,`xattr.get`,e);a.attributes??=new zn;let o=a.attributes.get(t);if(!o)throw N(`ENODATA`,`xattr.get`,e);let s=Y.Buffer.from(o);return n.encoding==`buffer`||!n.encoding?s:s.toString(n.encoding)}function Fl(e,t,n={}){e=H(e),Nl(this,t,e,`xattr.get`);let{fs:r,path:i}=Z(e,this),a;try{a=r.statSync(i)}catch(t){throw j(Object.assign(t,{path:e}))}if(X&&!J(this,a,4))throw N(`EACCES`,`xattr.get`,e);a.attributes??=new zn;let o=a.attributes.get(t);if(!o)throw N(`ENODATA`,`xattr.get`,e);let s=Y.Buffer.from(o);return n.encoding==`buffer`||!n.encoding?s:s.toString(n.encoding)}async function Il(e,t,n,r={}){e=H(e);let{fs:i,path:a}=Z(e,this);Nl(this,t,e,`xattr.set`);let o=await i.stat(a).catch(F(`xattr.set`,e));if(X&&!J(this,o,2))throw N(`EACCES`,`xattr.set`,e);o.attributes??=new zn;let s=o.attributes.get(t);if(r.create&&s)throw N(`EEXIST`,`xattr.set`,e);if(r.replace&&!s)throw N(`ENODATA`,`xattr.set`,e);o.attributes.set(t,Y.Buffer.from(n)),await i.touch(a,o).catch(F(`xattr.set`,e))}function Ll(e,t,n,r={}){e=H(e);let{fs:i,path:a}=Z(e,this);Nl(this,t,e,`xattr.set`);let o;try{o=i.statSync(a)}catch(t){throw j(Object.assign(t,{path:e}))}if(X&&!J(this,o,2))throw N(`EACCES`,`xattr.set`,e);o.attributes??=new zn;let s=o.attributes.get(t);if(r.create&&s)throw N(`EEXIST`,`xattr.set`,e);if(r.replace&&!s)throw N(`ENODATA`,`xattr.set`,e);o.attributes.set(t,Y.Buffer.from(n));try{i.touchSync(a,o)}catch(t){throw j(Object.assign(t,{path:e}))}}async function Rl(e,t){e=H(e);let{fs:n,path:r}=Z(e,this);Nl(this,t,e,`xattr.remove`);let i=await n.stat(r).catch(F(`xattr.remove`,e));if(X&&!J(this,i,2))throw N(`EACCES`,`xattr.remove`,e);if(i.attributes??=new zn,!i.attributes.get(t))throw N(`ENODATA`,`xattr.remove`,e);i.attributes.remove(t),await n.touch(r,i)}function zl(e,t){e=H(e);let{fs:n,path:r}=Z(e,this);Nl(this,t,e,`xattr.remove`);let i;try{i=n.statSync(r)}catch(t){throw j(Object.assign(t,{path:e}))}if(X&&!J(this,i,2))throw N(`EACCES`,`xattr.remove`,e);if(i.attributes??=new zn,!i.attributes.get(t))throw N(`ENODATA`,`xattr.remove`,e);i.attributes.remove(t);try{n.touchSync(r,i)}catch(t){throw j(Object.assign(t,{path:e}))}}async function Bl(e){e=H(e);let{fs:t,path:n}=Z(e,this),r=await t.stat(n).catch(F(`xattr.list`,e));return r.attributes?[...r.attributes.keys()]:[]}function Vl(e){e=H(e);let{fs:t,path:n}=Z(e,this),r;try{r=t.statSync(n)}catch(t){throw j(Object.assign(t,{path:e}))}return r.attributes?[...r.attributes.keys()]:[]}var Hl=new Map;function Ul(e={}){let t=ze(this);if(!Ci.call(this,t.root).isDirectory())throw N(`ENOTDIR`,{syscall:`chroot`,path:t.root});let n=Ve(t,e),r=Object.assign(n,{fs:{..._(Al,n),Utf8Stream:kl._withContext(n),promises:_(fo,n),xattr:_(jl,n)},path:_(gn,n),bind:e=>{let t=Ul.call(n,e);return n.children.push(t),t}});return Hl.set(n.id,r),r}var Wl=function(e,t,n){if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},Gl=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),Kl=class{previous;current=Promise.withResolvers();_isLocked=!0;get isLocked(){return this._isLocked}constructor(e){this.previous=e}async done(){await this.previous?.done(),await this.current.promise}unlock(){this.current.resolve(),this._isLocked=!1}[Symbol.dispose](){this.unlock()}},ql=class{_fs;get type(){return this._fs.type}get name(){return this._fs.name}get label(){return this._fs.label}set label(e){this._fs.label=e}get attributes(){return this._fs.attributes}get _uuid(){return this._fs._uuid}set _uuid(e){this._fs._uuid=e}get uuid(){return this._fs.uuid}async ready(){return await this._fs.ready()}readySync(){return this._fs.readySync()}usage(){return this._fs.usage()}currentLock;addLock(){let e=new Kl(this.currentLock);return this.currentLock=e,e}async lock(e=5e3){let t=this.currentLock,n=this.addLock(),r=Error().stack;return setTimeout(()=>{if(n.isLocked){let e=P(`EDEADLK`);throw e.stack+=r?.slice(5),L(e)}},e),await t?.done(),n}lockSync(){if(this.currentLock?.isLocked)throw L(P(`EBUSY`));return this.addLock()}get isLocked(){return!!this.currentLock?.isLocked}async rename(e,t){let n={stack:[],error:void 0,hasError:!1};try{Wl(n,await this.lock(),!1),await this._fs.rename(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}renameSync(e,t){let n={stack:[],error:void 0,hasError:!1};try{return Wl(n,this.lockSync(),!1),this._fs.renameSync(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}async stat(e){let t={stack:[],error:void 0,hasError:!1};try{return Wl(t,await this.lock(),!1),await this._fs.stat(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}statSync(e){let t={stack:[],error:void 0,hasError:!1};try{return Wl(t,this.lockSync(),!1),this._fs.statSync(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}async touch(e,t){let n={stack:[],error:void 0,hasError:!1};try{Wl(n,await this.lock(),!1),await this._fs.touch(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}touchSync(e,t){let n={stack:[],error:void 0,hasError:!1};try{Wl(n,this.lockSync(),!1),this._fs.touchSync(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}async createFile(e,t){let n={stack:[],error:void 0,hasError:!1};try{return Wl(n,await this.lock(),!1),await this._fs.createFile(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}createFileSync(e,t){let n={stack:[],error:void 0,hasError:!1};try{return Wl(n,this.lockSync(),!1),this._fs.createFileSync(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}async unlink(e){let t={stack:[],error:void 0,hasError:!1};try{Wl(t,await this.lock(),!1),await this._fs.unlink(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}unlinkSync(e){let t={stack:[],error:void 0,hasError:!1};try{return Wl(t,this.lockSync(),!1),this._fs.unlinkSync(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}async rmdir(e){let t={stack:[],error:void 0,hasError:!1};try{Wl(t,await this.lock(),!1),await this._fs.rmdir(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}rmdirSync(e){let t={stack:[],error:void 0,hasError:!1};try{return Wl(t,this.lockSync(),!1),this._fs.rmdirSync(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}async mkdir(e,t){let n={stack:[],error:void 0,hasError:!1};try{return Wl(n,await this.lock(),!1),await this._fs.mkdir(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}mkdirSync(e,t){let n={stack:[],error:void 0,hasError:!1};try{return Wl(n,this.lockSync(),!1),this._fs.mkdirSync(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}async readdir(e){let t={stack:[],error:void 0,hasError:!1};try{return Wl(t,await this.lock(),!1),await this._fs.readdir(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}readdirSync(e){let t={stack:[],error:void 0,hasError:!1};try{return Wl(t,this.lockSync(),!1),this._fs.readdirSync(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}async exists(e){let t={stack:[],error:void 0,hasError:!1};try{return Wl(t,await this.lock(),!1),await this._fs.exists(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}existsSync(e){let t={stack:[],error:void 0,hasError:!1};try{return Wl(t,this.lockSync(),!1),this._fs.existsSync(e)}catch(e){t.error=e,t.hasError=!0}finally{Gl(t)}}async link(e,t){let n={stack:[],error:void 0,hasError:!1};try{Wl(n,await this.lock(),!1),await this._fs.link(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}linkSync(e,t){let n={stack:[],error:void 0,hasError:!1};try{return Wl(n,this.lockSync(),!1),this._fs.linkSync(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}async sync(){let e={stack:[],error:void 0,hasError:!1};try{Wl(e,await this.lock(),!1),await this._fs.sync()}catch(t){e.error=t,e.hasError=!0}finally{Gl(e)}}syncSync(){let e={stack:[],error:void 0,hasError:!1};try{return Wl(e,this.lockSync(),!1),this._fs.syncSync()}catch(t){e.error=t,e.hasError=!0}finally{Gl(e)}}async read(e,t,n,r){let i={stack:[],error:void 0,hasError:!1};try{return Wl(i,await this.lock(),!1),await this._fs.read(e,t,n,r)}catch(e){i.error=e,i.hasError=!0}finally{Gl(i)}}readSync(e,t,n,r){let i={stack:[],error:void 0,hasError:!1};try{return Wl(i,this.lockSync(),!1),this._fs.readSync(e,t,n,r)}catch(e){i.error=e,i.hasError=!0}finally{Gl(i)}}async write(e,t,n){let r={stack:[],error:void 0,hasError:!1};try{return Wl(r,await this.lock(),!1),await this._fs.write(e,t,n)}catch(e){r.error=e,r.hasError=!0}finally{Gl(r)}}writeSync(e,t,n){let r={stack:[],error:void 0,hasError:!1};try{return Wl(r,this.lockSync(),!1),this._fs.writeSync(e,t,n)}catch(e){r.error=e,r.hasError=!0}finally{Gl(r)}}streamRead(e,t){let n={stack:[],error:void 0,hasError:!1};try{return Wl(n,this.lockSync(),!1),this._fs.streamRead(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}streamWrite(e,t){let n={stack:[],error:void 0,hasError:!1};try{return Wl(n,this.lockSync(),!1),this._fs.streamWrite(e,t)}catch(e){n.error=e,n.hasError=!0}finally{Gl(n)}}};function Jl(e){class t extends ql{constructor(...t){super(),this._fs=new e(...t)}}return t}function Yl(e){class t extends e{constructor(...e){super(...e),this.attributes.set(`no_write`)}async rename(){throw P(`EROFS`)}renameSync(){throw P(`EROFS`)}async createFile(){throw P(`EROFS`)}createFileSync(){throw P(`EROFS`)}async unlink(){throw P(`EROFS`)}unlinkSync(){throw P(`EROFS`)}async rmdir(){throw P(`EROFS`)}rmdirSync(){throw P(`EROFS`)}async mkdir(){throw P(`EROFS`)}mkdirSync(){throw P(`EROFS`)}async link(){throw P(`EROFS`)}linkSync(){throw P(`EROFS`)}async touch(){throw P(`EROFS`)}touchSync(){throw P(`EROFS`)}async sync(){throw P(`EROFS`)}syncSync(){throw P(`EROFS`)}async write(){throw P(`EROFS`)}writeSync(){throw P(`EROFS`)}streamWrite(){throw P(`EROFS`)}}return t}function Xl(e){class t extends e{async exists(e){return this.existsSync(e)}async rename(e,t){return this.renameSync(e,t)}async stat(e){return this.statSync(e)}async touch(e,t){return this.touchSync(e,t)}async createFile(e,t){return this.createFileSync(e,t)}async unlink(e){return this.unlinkSync(e)}async rmdir(e){return this.rmdirSync(e)}async mkdir(e,t){return this.mkdirSync(e,t)}async readdir(e){return this.readdirSync(e)}async link(e,t){return this.linkSync(e,t)}async sync(){return this.syncSync()}async read(e,t,n,r){return this.readSync(e,t,n,r)}async write(e,t,n){return this.writeSync(e,t,n)}}return t}var Zl=function(e,t,n,r,i,a){function o(e){if(e!==void 0&&typeof e!=`function`)throw TypeError(`Function expected`);return e}for(var s=r.kind,c=s===`getter`?`get`:s===`setter`?`set`:`value`,l=!t&&e?r.static?e:e.prototype:null,u=t||(l?Object.getOwnPropertyDescriptor(l,r.name):{}),d,f=!1,p=n.length-1;p>=0;p--){var m={};for(var h in r)m[h]=h===`access`?{}:r[h];for(var h in r.access)m.access[h]=r.access[h];m.addInitializer=function(e){if(f)throw TypeError(`Cannot add initializers after decoration has completed`);a.push(o(e||null))};var g=(0,n[p])(s===`accessor`?{get:u.get,set:u.set}:u[c],m);if(s===`accessor`){if(g===void 0)continue;if(typeof g!=`object`||!g)throw TypeError(`Object expected`);(d=o(g.get))&&(u.get=d),(d=o(g.set))&&(u.set=d),(d=o(g.init))&&i.unshift(d)}else(d=o(g))&&(s===`field`?i.unshift(d):u[c]=d)}l&&Object.defineProperty(l,r.name,u),f=!0},Ql=function(e,t,n){for(var r=arguments.length>2,i=0;i<t.length;i++)n=r?t[i].call(e,n):t[i].call(e);return r?n:void 0},$l;(function(e){e[e.RealTime=1]=`RealTime`,e[e.PreAlloc=2]=`PreAlloc`,e[e.Immutable=8]=`Immutable`,e[e.Append=16]=`Append`,e[e.Sync=32]=`Sync`,e[e.NoAtime=64]=`NoAtime`,e[e.NoDump=128]=`NoDump`,e[e.RtInherit=256]=`RtInherit`,e[e.ProjInherit=512]=`ProjInherit`,e[e.NoSymlinks=1024]=`NoSymlinks`,e[e.ExtSize=2048]=`ExtSize`,e[e.ExtSzInherit=4096]=`ExtSzInherit`,e[e.NoDefrag=8192]=`NoDefrag`,e[e.FileStream=16384]=`FileStream`,e[e.Dax=32768]=`Dax`,e[e.CowExtSize=65536]=`CowExtSize`,e[e.HasAttr=2147483648]=`HasAttr`})($l||={});var eu=(()=>{var e,t,n,r,i;let a=[Xt()],s,c=[],l,u=$t(o),d,f=[],p=[],m,h=[],g=[],_,v=[],b=[],x,S=[],C=[],w,T=[],ee=[],E,te=[],ne=[];var D=class extends u{static{l=this}static{let o=typeof Symbol==`function`&&Symbol.metadata?Object.create(u[Symbol.metadata]??null):void 0;d=[(e=V).uint32.bind(e)],m=[(t=V).uint32.bind(t)],_=[(n=V).uint32.bind(n)],x=[(r=V).uint32.bind(r)],w=[(i=V).uint32.bind(i)],E=[V.char(8)],Zl(this,null,d,{kind:`accessor`,name:`xflags`,static:!1,private:!1,access:{has:e=>`xflags`in e,get:e=>e.xflags,set:(e,t)=>{e.xflags=t}},metadata:o},f,p),Zl(this,null,m,{kind:`accessor`,name:`extsize`,static:!1,private:!1,access:{has:e=>`extsize`in e,get:e=>e.extsize,set:(e,t)=>{e.extsize=t}},metadata:o},h,g),Zl(this,null,_,{kind:`accessor`,name:`nextents`,static:!1,private:!1,access:{has:e=>`nextents`in e,get:e=>e.nextents,set:(e,t)=>{e.nextents=t}},metadata:o},v,b),Zl(this,null,x,{kind:`accessor`,name:`projid`,static:!1,private:!1,access:{has:e=>`projid`in e,get:e=>e.projid,set:(e,t)=>{e.projid=t}},metadata:o},S,C),Zl(this,null,w,{kind:`accessor`,name:`cowextsize`,static:!1,private:!1,access:{has:e=>`cowextsize`in e,get:e=>e.cowextsize,set:(e,t)=>{e.cowextsize=t}},metadata:o},T,ee),Zl(this,null,E,{kind:`accessor`,name:`pad`,static:!1,private:!1,access:{has:e=>`pad`in e,get:e=>e.pad,set:(e,t)=>{e.pad=t}},metadata:o},te,ne),Zl(null,s={value:l},a,{kind:`class`,name:l.name,metadata:o},null,c),D=l=s.value,o&&Object.defineProperty(l,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:o})}static name=`fsxattr`;#e=Ql(this,f,void 0);get xflags(){return this.#e}set xflags(e){this.#e=e}#t=(Ql(this,p),Ql(this,h,void 0));get extsize(){return this.#t}set extsize(e){this.#t=e}#n=(Ql(this,g),Ql(this,v,void 0));get nextents(){return this.#n}set nextents(e){this.#n=e}#r=(Ql(this,b),Ql(this,S,void 0));get projid(){return this.#r}set projid(e){this.#r=e}#i=(Ql(this,C),Ql(this,T,void 0));get cowextsize(){return this.#i}set cowextsize(e){this.#i=e}#a=(Ql(this,ee),Ql(this,te,[]));get pad(){return this.#a}set pad(e){this.#a=e}constructor(e=y(new M(k.EINVAL,`fsxattr must be initialized with an inode`))){super(new ArrayBuffer(B(D))),Ql(this,ne),this.extsize=e.size,this.nextents=1,this.projid=e.uid,this.cowextsize=e.size;for(let t of Object.keys(Vn))e.flags&Vn[t]&&t in $l&&(this.xflags|=$l[t])}static{Ql(l,c)}};return D=l})(),tu;(function(e){e[e.SecureRm=1]=`SecureRm`,e[e.Undelete=2]=`Undelete`,e[e.Compress=4]=`Compress`,e[e.Sync=8]=`Sync`,e[e.Immutable=16]=`Immutable`,e[e.Append=32]=`Append`,e[e.NoDump=64]=`NoDump`,e[e.NoAtime=128]=`NoAtime`,e[e.Dirty=256]=`Dirty`,e[e.CompressBlk=512]=`CompressBlk`,e[e.NoCompress=1024]=`NoCompress`,e[e.Encrypt=2048]=`Encrypt`,e[e.Btree=4096]=`Btree`,e[e.Index=4096]=`Index`,e[e.IMagic=8192]=`IMagic`,e[e.JournalData=16384]=`JournalData`,e[e.NoTail=32768]=`NoTail`,e[e.DirSync=65536]=`DirSync`,e[e.TopDir=131072]=`TopDir`,e[e.HugeFile=262144]=`HugeFile`,e[e.Extent=524288]=`Extent`,e[e.Verity=1048576]=`Verity`,e[e.EaInode=2097152]=`EaInode`,e[e.EofBlocks=4194304]=`EofBlocks`,e[e.NoCow=8388608]=`NoCow`,e[e.Dax=33554432]=`Dax`,e[e.InlineData=268435456]=`InlineData`,e[e.ProjInherit=536870912]=`ProjInherit`,e[e.CaseFold=1073741824]=`CaseFold`,e[e.Reserved=2147483648]=`Reserved`})(tu||={});var nu;(function(e){e[e.GetFlags=2148034049]=`GetFlags`,e[e.SetFlags=1074292226]=`SetFlags`,e[e.GetVersion=2148038145]=`GetVersion`,e[e.SetVersion=1074296322]=`SetVersion`,e[e.Fiemap=3223348747]=`Fiemap`,e[e.GetXattr=2149341215]=`GetXattr`,e[e.SetXattr=1075599392]=`SetXattr`,e[e.GetLabel=2164298801]=`GetLabel`,e[e.SetLabel=1090556978]=`SetLabel`,e[e.GetUUID=2148603136]=`GetUUID`,e[e.GetSysfsPath=2155943169]=`GetSysfsPath`})(nu||={});var ru;(function(e){e[e.GetFlags=2147771905]=`GetFlags`,e[e.SetFlags=1074030082]=`SetFlags`,e[e.GetVersion=2147776001]=`GetVersion`,e[e.SetVersion=1074034178]=`SetVersion`})(ru||={});async function iu(e,t,...n){e=H(e);let{fs:r,path:i}=Z(e,this);try{let e=new K(await r.stat(i));switch(t){case nu.GetFlags:case ru.GetFlags:return e.flags;case nu.SetFlags:case ru.SetFlags:e.flags=n[0],await r.touch(i,e);return;case nu.GetVersion:case ru.GetVersion:return e.version;case nu.SetVersion:case ru.SetVersion:e.version=n[0],await r.touch(i,e);return;case nu.Fiemap:break;case nu.GetXattr:return new eu(e);case nu.SetXattr:break;case nu.GetLabel:return r.label;case nu.SetLabel:r.label=n[0];return;case nu.GetUUID:return r.uuid;case nu.GetSysfsPath:return`/sys/fs/${r.name}/${r.uuid}`}}catch(t){throw j(Object.assign(t,{syscall:`ioctl`,path:e}))}throw N(`ENOTSUP`,`ioctl`,e)}function au(e,t,...n){e=H(e);let{fs:r,path:i}=Z(e,this);try{let e=new K(r.statSync(i));switch(t){case nu.GetFlags:case ru.GetFlags:return e.flags;case nu.SetFlags:case ru.SetFlags:e.flags=n[0],r.touchSync(i,e);return;case nu.GetVersion:case ru.GetVersion:return e.version;case nu.SetVersion:case ru.SetVersion:e.version=n[0],r.touchSync(i,e);return;case nu.Fiemap:break;case nu.GetXattr:return new eu(e);case nu.SetXattr:break;case nu.GetLabel:return r.label;case nu.SetLabel:r.label=n[0];return;case nu.GetUUID:return r.uuid;case nu.GetSysfsPath:return`/sys/fs/${r.name}/${r.uuid}`}}catch(t){throw j(Object.assign(t,{syscall:`ioctl`,path:e}))}throw N(`ENOTSUP`,`ioctl`,e)}var ou={name:`@zenfs/core`,version:`2.6.5`,description:`A filesystem, anywhere`,funding:{type:`individual`,url:`https://github.com/sponsors/james-pre`},main:`dist/index.js`,types:`dist/index.d.ts`,keywords:[`filesystem`,`node`,`storage`,`fs`,`browser`],bin:{"make-index":`scripts/make-index.js`,"zenfs-test":`scripts/test.js`,zci:`scripts/ci-cli.js`},files:[`dist`,`tests`,`types`,`license.md`,`eslint.shared.js`],type:`module`,homepage:`https://zenfs.dev/core`,author:`James Prevett <jp@jamespre.dev> (https://jamespre.dev)`,contributors:[`John Vilk <jvilk@cs.umass.edu>`],license:`LGPL-3.0-or-later`,repository:{type:`git`,url:`git+https://github.com/zen-fs/core.git`},bugs:{url:`https://github.com/zen-fs/core/issues`},engines:{node:`>= 18`},exports:{".":`./dist/index.js`,"./*.js":`./dist/*.js`,"./*":`./dist/*.js`,"./emulation/*":`./dist/node/*`,"./promises":`./dist/node/promises.js`,"./readline":`./dist/node/readline.js`,"./eslint":`./eslint.shared.js`,"./tests/*.ts":`./tests/*.ts`,"./tests/*.js":`./tests/*.js`,"./tests/*":`./tests/*.js`,"./types/*":`./types/*`},publishConfig:{access:`public`,provenance:!0},scripts:{format:`prettier --write .`,"format:check":`prettier --check .`,"spdx:check":`npx lice -a src tests/*.ts tests/**/*.test.ts`,"spdx:fix":`npx lice -aw src tests/*.ts tests/**/*.test.ts`,lint:`eslint src tests`,test:`npx -s zenfs-test --clean; npx -s zenfs-test -abcpn; tests/fetch/run.sh; npx -s zenfs-test --report-only`,"test:native":`npx -s zenfs-test tests/native-setup.ts --verbose`,build:`tsc -p tsconfig.json`,"build:docs":`typedoc`,dev:`tsc -p tsconfig.json --watch`,prepublishOnly:`npm run build`},dependencies:{"@types/node":`^26.0.0`,buffer:`^6.0.3`,eventemitter3:`^5.0.1`,kerium:`^1.4.2`,memium:`^1.0.0`,"readable-stream":`^4.5.2`,utilium:`^3.0.0`},devDependencies:{"@eslint/js":`^10.0.1`,"@octokit/action":`^8.0.4`,c8:`^12.0.0`,eslint:`^10.1.0`,globals:`^17.3.0`,prettier:`^3.2.5`,typedoc:`^0.28.18`,typescript:`^6.0.0`,"typescript-eslint":`^8.58.0`}},su=t({BigIntStatsFs:()=>Fn,Dir:()=>vi,Dirent:()=>gi,IOC:()=>nu,IOC32:()=>ru,ReadStream:()=>lo,Stats:()=>jn,StatsFs:()=>Pn,Utf8Stream:()=>kl,WriteStream:()=>uo,_version:()=>cu,access:()=>tl,accessSync:()=>ta,appendFile:()=>jc,appendFileSync:()=>ji,chmod:()=>Xc,chmodSync:()=>Xi,chown:()=>Jc,chownSync:()=>Ji,chroot:()=>ri,close:()=>Nc,closeSync:()=>Ni,constants:()=>He,copyFile:()=>ul,copyFileSync:()=>aa,cp:()=>ml,cpSync:()=>la,createReadStream:()=>ol,createWriteStream:()=>sl,exists:()=>Cc,existsSync:()=>Si,fchmod:()=>Bc,fchmodSync:()=>Bi,fchown:()=>zc,fchownSync:()=>zi,fdatasync:()=>Ic,fdatasyncSync:()=>Ii,fstat:()=>Mc,fstatSync:()=>Mi,fsync:()=>Fc,fsyncSync:()=>Fi,ftruncate:()=>Pc,ftruncateSync:()=>Pi,futimes:()=>Vc,futimesSync:()=>Vi,glob:()=>_l,globSync:()=>da,ioctl:()=>iu,ioctlSync:()=>au,lchmod:()=>Zc,lchmodSync:()=>Zi,lchown:()=>Yc,lchownSync:()=>Yi,link:()=>Gc,linkSync:()=>Gi,lopenSync:()=>Oi,lstat:()=>Tc,lstatSync:()=>wi,lutimes:()=>$c,lutimesSync:()=>$i,mkdir:()=>Uc,mkdirSync:()=>Ui,mkdtemp:()=>ll,mkdtempDisposableSync:()=>ia,mkdtempSync:()=>ra,mount:()=>ei,open:()=>Oc,openAsBlob:()=>gl,openSync:()=>Di,opendir:()=>pl,opendirSync:()=>ca,promises:()=>fo,read:()=>Rc,readFile:()=>kc,readFileSync:()=>ki,readSync:()=>Ri,readdir:()=>Wc,readdirSync:()=>Wi,readlink:()=>qc,readlinkSync:()=>qi,readv:()=>dl,readvSync:()=>oa,realpath:()=>el,realpathSync:()=>ea,rename:()=>Sc,renameSync:()=>xi,rm:()=>cl,rmSync:()=>na,rmdir:()=>Hc,rmdirSync:()=>Hi,stat:()=>wc,statSync:()=>Ci,statfs:()=>hl,statfsSync:()=>ua,symlink:()=>Kc,symlinkSync:()=>Ki,truncate:()=>Ec,truncateSync:()=>Ti,umount:()=>ti,unlink:()=>Dc,unlinkSync:()=>Ei,unwatchFile:()=>il,utimes:()=>Qc,utimesSync:()=>Qi,watch:()=>al,watchFile:()=>rl,write:()=>Lc,writeFile:()=>Ac,writeFileSync:()=>Ai,writeSync:()=>Li,writev:()=>fl,writevSync:()=>sa,xattr:()=>jl}),cu=ou.version,lu=t({DirType:()=>br,Dirent:()=>Cr,Handle:()=>Vr,IOC:()=>nu,IOC32:()=>ru,chroot:()=>ri,deleteFD:()=>Wr,dtToIf:()=>Sr,fromFD:()=>Ur,ifToDt:()=>xr,ioctl:()=>iu,ioctlSync:()=>au,link:()=>Oa,mkdir:()=>Ta,mount:()=>ei,open:()=>Ca,readdir:()=>Ea,readlink:()=>wa,rename:()=>Da,resolve:()=>Sa,stat:()=>ka,sync:()=>ai,toFD:()=>Hr,umount:()=>ti,xattr:()=>jl}),uu=t({Async:()=>Qs,AsyncMapTransaction:()=>cr,AsyncTransaction:()=>nr,Attributes:()=>zn,BigIntStatsFs:()=>Fn,CopyOnWrite:()=>_s,CopyOnWriteFS:()=>gs,DeviceFS:()=>dr,Dir:()=>vi,Dirent:()=>gi,ErrnoError:()=>Yr,Fetch:()=>Ds,FetchFS:()=>Es,FileSystem:()=>$n,IOC:()=>nu,IOC32:()=>ru,InMemory:()=>ur,InMemoryStore:()=>lr,Index:()=>Zn,IndexFS:()=>ws,Inode:()=>K,InodeFlags:()=>Vn,Journal:()=>hs,MetadataBlock:()=>fc,MutexLock:()=>Kl,Mutexed:()=>Jl,Passthrough:()=>js,PassthroughFS:()=>As,Port:()=>nc,PortFS:()=>$s,RPC:()=>Ms,ReadStream:()=>lo,Readonly:()=>Yl,SingleBuffer:()=>bc,SingleBufferStore:()=>yc,Stats:()=>jn,StatsFs:()=>Pn,StoreFS:()=>or,SuperBlock:()=>hc,Sync:()=>Xl,SyncMapTransaction:()=>sr,SyncTransaction:()=>tr,Transaction:()=>er,Utf8Stream:()=>kl,WrappedTransaction:()=>rr,WriteStream:()=>uo,_MutexedFS:()=>ql,_asyncFSKeys:()=>Zs,_chown:()=>Xn,_fnOpt:()=>ke,_inode_fields:()=>Bn,_inode_version:()=>5,_isNoEntry:()=>ln,_tempDirName:()=>mn,_temporal:()=>hn,_version:()=>cu,access:()=>tl,accessSync:()=>ta,addDevice:()=>os,appendFile:()=>jc,appendFileSync:()=>ji,assertContext:()=>Le,attachFS:()=>ec,bindContext:()=>Ul,boundContexts:()=>Hl,checkOptions:()=>je,chmod:()=>Xc,chmodSync:()=>Xi,chown:()=>Jc,chownSync:()=>Ji,chroot:()=>ri,close:()=>Nc,closeSync:()=>Ni,configure:()=>cs,configureFileSystem:()=>Zo,configureSingle:()=>ns,configureSingleSync:()=>rs,configureSync:()=>ls,constants:()=>He,contextOf:()=>ze,copyFile:()=>ul,copyFileSync:()=>aa,cp:()=>ml,cpSync:()=>la,createChildContext:()=>Ve,createCredentials:()=>Ne,createReadStream:()=>ol,createWriteStream:()=>sl,credentialsAllowRoot:()=>Pe,decodeDirListing:()=>rn,default:()=>du,defaultContext:()=>Re,detachFS:()=>tc,devices:()=>vr,encodeDirListing:()=>an,exists:()=>Cc,existsSync:()=>Si,fchmod:()=>Bc,fchmodSync:()=>Bi,fchown:()=>zc,fchownSync:()=>zi,fdatasync:()=>Ic,fdatasyncSync:()=>Ii,fs:()=>su,fstat:()=>Mc,fstatSync:()=>Mi,fsync:()=>Fc,fsyncSync:()=>Fi,ftruncate:()=>Pc,ftruncateSync:()=>Pi,fullDevice:()=>hr,futimes:()=>Vc,futimesSync:()=>Vi,glob:()=>_l,globSync:()=>da,globToRegex:()=>fn,hasAccess:()=>J,ioctl:()=>iu,ioctlSync:()=>au,isBackend:()=>Oe,isBackendConfig:()=>Me,isBlockDevice:()=>qn,isCharacterDevice:()=>Jn,isContext:()=>Ie,isDirectory:()=>q,isFIFO:()=>Yn,isFile:()=>Wn,isSocket:()=>Kn,isSymbolicLink:()=>Gn,lchmod:()=>Zc,lchmodSync:()=>Zi,lchown:()=>Yc,lchownSync:()=>Yi,link:()=>Gc,linkSync:()=>Gi,log:()=>re,lopenSync:()=>Oi,lstat:()=>Tc,lstatSync:()=>wi,lutimes:()=>$c,lutimesSync:()=>$i,mkdir:()=>Uc,mkdirSync:()=>Ui,mkdtemp:()=>ll,mkdtempDisposableSync:()=>ia,mkdtempSync:()=>ra,mount:()=>ei,mounts:()=>$r,normalizeMode:()=>on,normalizeOptions:()=>dn,normalizePath:()=>H,normalizeTime:()=>un,nullDevice:()=>pr,open:()=>Oc,openAsBlob:()=>gl,openSync:()=>Di,opendir:()=>pl,opendirSync:()=>ca,promises:()=>fo,randomDevice:()=>gr,read:()=>Rc,readFile:()=>kc,readFileSync:()=>ki,readSync:()=>Ri,readdir:()=>Wc,readdirSync:()=>Wi,readlink:()=>qc,readlinkSync:()=>qi,readv:()=>dl,readvSync:()=>oa,realpath:()=>el,realpathSync:()=>ea,rename:()=>Sc,renameSync:()=>xi,resolveMountConfig:()=>es,resolveMountConfigSync:()=>ts,resolveRemoteMount:()=>rc,rm:()=>cl,rmSync:()=>na,rmdir:()=>Hc,rmdirSync:()=>Hi,rootIno:()=>0,stat:()=>wc,statSync:()=>Ci,statfs:()=>hl,statfsSync:()=>ua,symlink:()=>Kc,symlinkSync:()=>Ki,sync:()=>us,truncate:()=>Ec,truncateSync:()=>Ti,umount:()=>ti,unlink:()=>Dc,unlinkSync:()=>Ei,unwatchFile:()=>il,userModifiableFlags:()=>Un,userVisibleFlags:()=>Hn,utimes:()=>Qc,utimesSync:()=>Qi,validateFD:()=>cn,version:()=>1,vfs:()=>lu,waitOnline:()=>pn,watch:()=>al,watchFile:()=>rl,withExceptionContext:()=>Qr,withPath:()=>Xr,wrap:()=>Zr,write:()=>Lc,writeFile:()=>Ac,writeFileSync:()=>Ai,writeSync:()=>Li,writev:()=>fl,writevSync:()=>sa,xattr:()=>jl,zeroDevice:()=>mr}),du=su;globalThis.__zenfs__=Object.create(su);export{y as A,fe as C,P as D,M as E,ne as O,de as S,k as T,Qe as _,ur as a,ot as b,er as c,Bn as d,Wn as f,rt as g,U as h,ws as i,te as k,$n as l,W as m,Xl as n,sr as o,wn as p,Qs as r,or as s,uu as t,K as u,tt as v,R as w,ue as x,st as y};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{a as n,i as r,n as i,r as a,t as o}from"./path-utils-DNJG-zQf.js";import{n as s,t as c}from"./types-Dgm4REV3.js";import{i as l,r as u,t as d}from"./mount-index-D9w_zMSm.js";import{a as f,i as p,n as m,t as h}from"./mount-table-store-DrF_Ifaz.js";import{n as g,t as _}from"./virtual-device-paths-CS5o4QVz.js";import{i as v,r as y,t as b}from"./sidecar-repair-CIHuOk7H.js";function x(e,t,n){return e.size===0||!e.has(n)||!t.isReady(n)?!1:!Array.from(e.keys()).some(e=>e!==n&&e.startsWith(n+`/`))}async function S(e,t){try{return await e(t)}catch{return t}}async function*C(e,t,n,r=0){let a=i(t);if(x(e.mountPoints,e.mountIndex,a)){let t=e.mountIndex.getFiles(a);if(t){for(let e of t)yield e;return}}let o=n??new Set;if(r>64||o.size>=1e5)return;let s=await S(t=>e.realpath(t),a);if(o.has(s))return;o.add(s);let c=await e.readDir(a);for(let t of c)yield*w(e,t,a===`/`?`/${t.name}`:`${a}/${t.name}`,o,r+1)}async function*w(e,t,n,r,i){if(t.type===`file`){yield n;return}if(t.type===`symlink`){yield*T(e,n,r,i);return}yield*C(e,n,r,i)}async function*T(e,t,n,r){try{let i=await e.stat(t);i.type===`file`?yield t:i.type===`directory`&&(yield*C(e,t,n,r))}catch{}}const E=t(`fs-watcher`);let D=0;function O(e,t){return t===`/`||e===t||e.startsWith(t+`/`)}var k=class{registrations=new Map;watch(e,t,n){let r=`fsw-${++D}`;return this.registrations.set(r,{id:r,basePath:e,filter:t,callback:n}),E.debug(`Watch registered`,{id:r,basePath:e}),()=>{this.registrations.delete(r),E.debug(`Watch unregistered`,{id:r})}}notify(e){if(e.length!==0)for(let[,t]of this.registrations){let n=e.filter(e=>O(e.path,t.basePath)&&t.filter(e.path));if(n.length>0)try{t.callback(n)}catch(e){E.error(`Watch callback error`,{id:t.id,error:e instanceof Error?e.message:String(e)})}}}dispose(){this.registrations.clear(),E.debug(`All watchers disposed`)}get size(){return this.registrations.size}};const A=new TextEncoder,j=new TextDecoder(`utf-8`,{fatal:!1});var M=class{entries=new Map;static handles(e){return g(i(e))}has(e){return this.entries.has(i(e))}write(e,t){let n=i(e),r=typeof t==`string`?A.encode(t):new Uint8Array(t),a=Date.now(),o=this.entries.get(n);this.entries.set(n,{bytes:r,mtime:a,ctime:o?.ctime??a})}read(e,t){let n=this.require(e);return(t?.encoding??`utf-8`)===`utf-8`?j.decode(n.bytes):new Uint8Array(n.bytes)}readText(e){return j.decode(this.require(e).bytes)}stat(e){let t=this.require(e);return{type:`file`,size:t.bytes.length,mtime:t.mtime,ctime:t.ctime}}remove(e){return this.entries.delete(i(e))}require(e){let t=i(e),n=this.entries.get(t);if(!n)throw new c(`ENOENT`,`no such file or directory`,t);return n}};const N={[_]:{stat:()=>({type:`file`,size:0,mtime:0,ctime:0}),read:e=>(e?.encoding??`utf-8`)===`utf-8`?``:new Uint8Array,readText:()=>``,write:()=>{}}},P=[`/tmp/`];var F=class{ephemeralFds=new M;vfs;allowedPrefixes;readOnlyPrefixes;readGrantPatterns=[];writeEnforcement;includeMounts;constructor(e,t,n=[],r=`hard`,a={}){this.vfs=e;let o=e=>{let t=i(e);return t.endsWith(`/`)?t:t+`/`};this.allowedPrefixes=t.map(o),this.readOnlyPrefixes=n.map(o),this.writeEnforcement=r,this.includeMounts=a.includeMounts!==!1}getAllPrefixes(){let e=this.includeMounts?this.vfs.listMounts().map(e=>e.endsWith(`/`)?e:e+`/`):[];return[...this.allowedPrefixes,...this.readOnlyPrefixes,...e,...P]}setReadGrants(e){this.readGrantPatterns=[];for(let t of new Set(e))this.addReadGrant(t)}addReadGrant(e){let t=e.split(`/`),n=[];for(let e=1;e<t.length;e++)n.push(a(t.slice(0,e).join(`/`)||`/`));this.readGrantPatterns.push({pattern:e,regex:a(e),ancestorRegexes:n})}matchesReadGrant(e){return this.readGrantPatterns.some(t=>t.regex.test(e))}leadsToReadGrant(e){return this.readGrantPatterns.some(t=>t.ancestorRegexes.some(t=>t.test(e)))}isAllowed(e){let t=i(e),n=this.getAllPrefixes();return this.matchesReadGrant(t)||this.leadsToReadGrant(t)||n.some(e=>t===e.slice(0,-1)||t.startsWith(e)||t===`/`||e.startsWith(t+`/`))}isAllowedStrict(e){let t=i(e),n=this.getAllPrefixes();return this.matchesReadGrant(t)||n.some(e=>t===e.slice(0,-1)||t.startsWith(e))}isWritable(e){let t=i(e);return[...this.allowedPrefixes,...P].some(e=>t===e.slice(0,-1)||t.startsWith(e))}canWrite(e){return M.handles(e)||this.isWritable(e)}checkWrite(e){if(this.writeEnforcement!==`sudo-delegated`&&!this.isWritable(e))throw new c(`EACCES`,`permission denied`,i(e))}async resolveAndCheckRead(e){try{let t=await this.vfs.realpath(e);if(!this.isAllowedStrict(t))throw new c(`ENOENT`,`no such file or directory`,i(e));return t}catch(t){throw t instanceof c?t:new c(`ENOENT`,`no such file or directory`,i(e))}}async resolveAndCheckWrite(e){try{let t=await this.vfs.realpath(e);if(!this.isWritable(t)&&!this.isSymlinkEscapeAllowed(t))throw new c(`EACCES`,`permission denied`,i(e));return t}catch(t){throw t instanceof c?t:new c(`EACCES`,`permission denied`,i(e))}}isSymlinkEscapeAllowed(e){return!1}async checkParentRealpathEscape(e){let t=this.vfs.dirname(e),n=this.vfs.basename(e),r;try{r=await this.vfs.realpath(t)}catch(e){if(e instanceof c&&e.code===`EACCES`)throw e;return}let a=r+`/`+n;if(this.isWritable(a))return;let o=i(r)!==i(t);if(!(this.writeEnforcement===`sudo-delegated`&&!o))throw new c(`EACCES`,`permission denied`,i(e))}getUnderlyingFS(){return this.vfs}invalidatePaths(e){this.vfs.invalidatePaths(e)}async flush(){await this.vfs.flush()}isPathUnderMount(e){return this.vfs.isPathUnderMount(e)}async readFile(e,t){let n=N[i(e)];if(n)return n.read(t);if(M.handles(e))return this.ephemeralFds.read(e,t);if(!this.isAllowedStrict(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let r=await this.resolveAndCheckRead(e);return this.vfs.readFile(r,t)}async readFileRange(e,t,n){if(!this.isAllowedStrict(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let r=await this.resolveAndCheckRead(e);return this.vfs.readFileRange(r,t,n)}async getNativeFile(e){if(N[i(e)]||M.handles(e)||!this.isAllowedStrict(e))return null;try{let t=await this.resolveAndCheckRead(e);return await this.vfs.getNativeFile(t)}catch{return null}}async readDir(e,t){if(!this.isAllowed(e))return[];let n=e;if(this.isAllowedStrict(e))try{n=await this.resolveAndCheckRead(e)}catch{return[]}let r=await this.vfs.readDir(n,t);if(!this.isAllowedStrict(e)){let t=i(e);return r.filter(e=>{let n=t===`/`?`/${e.name}`:`${t}/${e.name}`;return this.isAllowed(n)})}return r}async stat(e){let t=N[i(e)];if(t)return t.stat();if(M.handles(e))return this.ephemeralFds.stat(e);if(!this.isAllowed(e))throw new c(`ENOENT`,`no such file or directory`,i(e));if(this.isAllowedStrict(e)){let t=await this.resolveAndCheckRead(e);return this.vfs.stat(t)}return this.vfs.stat(e)}scanPathForSymlinks(e,t){let n=i(e);if(n===`/`)return!1;let r=n.slice(1).split(`/`),a=t?r.length:r.length-1,o=``;for(let e=0;e<a;e++){o=o+`/`+r[e];let t=this.vfs.lstatSync(o);if(t===null)return null;if(t.type===`symlink`)return!0}return!1}statSync(e){let t=N[i(e)];return t?t.stat():M.handles(e)?this.ephemeralFds.has(e)?this.ephemeralFds.stat(e):null:!this.isAllowedStrict(e)||this.scanPathForSymlinks(e,!0)!==!1?null:this.vfs.statSync(e)}lstatSync(e){let t=N[i(e)];return t?t.stat():M.handles(e)?this.ephemeralFds.has(e)?this.ephemeralFds.stat(e):null:!this.isAllowed(e)||this.scanPathForSymlinks(e,!1)!==!1?null:this.vfs.lstatSync(e)}readDirSync(e){if(!this.isAllowed(e)||this.scanPathForSymlinks(e,!0)!==!1)return null;let t=this.vfs.readDirSync(e);if(t===null)return null;if(this.isAllowedStrict(e))return t;let n=i(e);return t.filter(e=>{let t=n===`/`?`/${e.name}`:`${n}/${e.name}`;return this.isAllowed(t)})}async realpath(e){if(M.handles(e)){let t=i(e);if(!this.ephemeralFds.has(t))throw new c(`ENOENT`,`no such file or directory`,t);return t}let t;try{t=await this.vfs.realpath(e)}catch(t){throw t instanceof c?t:new c(`ENOENT`,`no such file or directory`,i(e))}if(!this.isAllowedStrict(t))throw new c(`ENOENT`,`no such file or directory`,i(e));return t}async exists(e){if(N[i(e)])return!0;if(M.handles(e))return this.ephemeralFds.has(e);if(!this.isAllowed(e))return!1;if(this.isAllowedStrict(e))try{await this.resolveAndCheckRead(e)}catch{return!1}return this.vfs.exists(e)}async readTextFile(e){let t=N[i(e)];if(t)return t.readText();if(M.handles(e))return this.ephemeralFds.readText(e);if(!this.isAllowedStrict(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let n=await this.resolveAndCheckRead(e);return this.vfs.readTextFile(n)}async*walk(e){if(!this.isAllowed(e))return;let t=e;if(this.isAllowedStrict(e))try{t=await this.resolveAndCheckRead(e)}catch{return}for await(let e of this.vfs.walk(t))this.isAllowed(e)&&(yield e)}async writeFile(e,t,n){let r=N[i(e)];if(r){r.write(t);return}if(M.handles(e)){this.ephemeralFds.write(e,t);return}this.checkWrite(e),await this.checkParentRealpathEscape(e);try{(await this.vfs.lstat(e)).type===`symlink`&&await this.resolveAndCheckWrite(e)}catch(e){if(e instanceof c&&e.code===`EACCES`)throw e}return this.vfs.writeFile(e,t,n)}refuseDescriptorTreeOp(e){if(M.handles(e))throw new c(`EACCES`,`permission denied`,i(e))}async mkdir(e,t){return this.refuseDescriptorTreeOp(e),this.checkWrite(e),await this.checkParentRealpathEscape(e),this.vfs.mkdir(e,t)}async rm(e,t){if(M.handles(e)){if(!this.ephemeralFds.remove(e))throw new c(`ENOENT`,`no such file or directory`,i(e));return}this.checkWrite(e);try{(await this.vfs.lstat(e)).type===`symlink`||await this.resolveAndCheckWrite(e)}catch(e){if(e instanceof c&&e.code===`EACCES`)throw e}return this.vfs.rm(e,t)}async rename(e,t){return this.refuseDescriptorTreeOp(e),this.refuseDescriptorTreeOp(t),this.checkWrite(e),this.checkWrite(t),await this.resolveAndCheckWrite(e),await this.checkParentRealpathEscape(t),this.vfs.rename(e,t)}async copyFile(e,t){if(M.handles(e)){let n=this.ephemeralFds.read(e,{encoding:`binary`});await this.writeFile(t,n);return}if(M.handles(t)){if(!this.isAllowed(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let n=await this.resolveAndCheckRead(e);this.ephemeralFds.write(t,await this.vfs.readFile(n,{encoding:`binary`}));return}if(!this.isAllowed(e))throw new c(`ENOENT`,`no such file or directory`,i(e));this.checkWrite(t);let n=await this.resolveAndCheckRead(e);await this.checkParentRealpathEscape(t);try{(await this.vfs.lstat(t)).type===`symlink`&&await this.resolveAndCheckWrite(t)}catch(e){if(e instanceof c&&e.code===`EACCES`)throw e}return this.vfs.copyFile(n,t)}async symlink(e,t){return this.refuseDescriptorTreeOp(t),this.checkWrite(t),await this.checkParentRealpathEscape(t),this.vfs.symlink(e,t)}async readlink(e){if(!this.isAllowedStrict(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let t=await this.vfs.readlink(e),n;if(t.startsWith(`/`))n=i(t);else{let r=this.vfs.dirname(e);n=i(r+`/`+t)}if(!this.isAllowedStrict(n))throw new c(`ENOENT`,`no such file or directory`,i(e));return t}async lstat(e){let t=N[i(e)];if(t)return t.stat();if(M.handles(e))return this.ephemeralFds.stat(e);if(!this.isAllowed(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let n=i(e),r=this.vfs.dirname(n),a=this.vfs.basename(n),o;if(r===n)o=r;else try{o=await this.vfs.realpath(r)}catch{throw new c(`ENOENT`,`no such file or directory`,n)}let s=o===`/`?`/${a}`:`${o}/${a}`;if(!this.isAllowed(s))throw new c(`ENOENT`,`no such file or directory`,n);return this.vfs.lstat(s)}watch(e,t,n){if(!this.isAllowed(e))throw new c(`EACCES`,`permission denied`,i(e));let r=this.vfs.getWatcher();if(!r)throw new c(`EINVAL`,`no watcher configured`);return r.watch(i(e),t,n)}dirname(e){return this.vfs.dirname(e)}basename(e){return this.vfs.basename(e)}async mount(e,t,n){return this.refuseDescriptorTreeOp(e),this.checkWrite(e),await this.checkParentRealpathEscape(e),this.vfs.mount(e,t,n)}async unmount(e){return this.refuseDescriptorTreeOp(e),this.checkWrite(e),await this.checkParentRealpathEscape(e),this.vfs.unmount(e)}listMounts(){let e=this.vfs.listMounts();return this.includeMounts?e:e.filter(e=>this.isAllowedStrict(e))}getMountIndex(){return this.vfs.getMountIndex()}async refreshMount(e,t){return this.refuseDescriptorTreeOp(e),this.checkWrite(e),this.vfs.refreshMount(e,t)}async dispose(){await this.vfs.dispose()}};function I(e,t){if(e instanceof c){let n=`${e.code}: `,r=e.message;throw r.startsWith(n)&&(r=r.slice(n.length)),e.path&&r.endsWith(` '${e.path}'`)&&(r=r.slice(0,r.length-` '${e.path}'`.length)),new c(e.code,r,t)}throw e}const L=[`ENOENT`,`EEXIST`,`ENOTDIR`,`EISDIR`,`ENOTEMPTY`,`EINVAL`,`EACCES`,`ELOOP`,`EBUSY`,`EFBIG`,`EBADF`,`ENOSYS`,`EIO`];function R(e,t){if(e instanceof c)return e;{let n=e instanceof Error?e.message:String(e);if(n.includes(`maximum size exceeded`)||n.includes(`call stack size exceeded`))return new c(`EIO`,`internal overflow, not storage: ${n} — reload the session`,t)}let n=e?.code;if(typeof n==`string`){let r=n;if(L.includes(r)){let n=e instanceof Error?e.message:String(e);return n.startsWith(`${r}: `)&&(n=n.slice(r.length+2),n=n.replace(/, undefined( '[^']*')?$/,``).replace(/ '[^']*'$/,``)),new c(r,n||r,t)}}let r=e instanceof Error?e.message:String(e);return r.includes(`ENOENT`)?new c(`ENOENT`,`no such file or directory`,t):r.includes(`EEXIST`)?new c(`EEXIST`,`file already exists`,t):r.includes(`ENOTDIR`)?new c(`ENOTDIR`,`not a directory`,t):r.includes(`EISDIR`)?new c(`EISDIR`,`is a directory`,t):r.includes(`ENOTEMPTY`)?new c(`ENOTEMPTY`,`directory not empty`,t):r.includes(`ELOOP`)?new c(`ELOOP`,`too many levels of symbolic links`,t):new c(`EINVAL`,r,t)}function z(e){return e===void 0?`absent`:(e&61440)==16384?`directory`:`file`}function B(e,t){return t===`absent`?!1:e.kind===`missing`||e.kind!==t}function V(e){let t=e?.mode;return typeof t==`number`?t:void 0}function H(e,t,n,r=new Set){let i=new Set(n);if(r.size>0){for(let t of Object.keys(e.entries??{}))for(let e of r)if(t===e||t.startsWith(`${e}/`)){i.add(t);break}}let a=[];for(let n of i){let r=e.entries?.[n],i=t.entries?.[n];if(!r||!i)continue;let o=z(V(r));o!==z(V(i))&&a.push({path:n,ownIsDirectory:o===`directory`})}return a}async function U(e,t){let n=t.split(`/`).filter(Boolean),r=n.pop();if(r===void 0)return null;try{let t=e;for(let e of n)t=await t.getDirectoryHandle(e);return await(await t.getFileHandle(r)).getFile()}catch{return null}}async function W(e,t,n,r){try{return await e.lstat(t)}catch(e){let t=R(e,r);if(t.code===`ENOENT`&&n)return null;throw t}}async function G(e,t,r){let a;try{a=await e.readlink(t)}catch(e){throw R(e,r)}return a.startsWith(`/`)?i(a):i(o(n(t).dir,a))}async function K(e,t,n,r,i,a){let o=t===`/`?`/${n}`:`${t}/${n}`;for(;;){let t=await W(e,o,r,i);if(t===null||!t.isSymbolicLink())return{resolved:o,hops:a};if(++a>10)throw new c(`ELOOP`,`too many symbolic links encountered`,i);o=await G(e,o,i)}}async function q(e,t,n){let r=i(n);if(t(r))return r;let a=r.split(`/`).filter(Boolean),o=`/`,s=0;for(let t=0;t<a.length;t++){let n=await K(e,o,a[t],t===a.length-1,r,s);o=n.resolved,s=n.hops}return o}async function J(e,t,n){return t(n)?n:q(e,t,n)}function Y(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`opfs`}catch{}return`memory`}function X(e,t){let n=e.kind===`directory`?`directory`:`file`;return t?{name:e.name,type:n,...e.size===void 0?{}:{size:e.size},...e.lastModified===void 0?{}:{mtime:e.lastModified},...e.ctime===void 0?{}:{ctime:e.ctime},...e.ino===void 0?{}:{ino:e.ino},...e.uid===void 0?{}:{uid:e.uid},...e.gid===void 0?{}:{gid:e.gid},...e.mode===void 0?{}:{mode:e.mode}}:{name:e.name,type:n}}function Z(e,t){switch(e.kind){case`local`:case`proc`:return{kind:`local`,mountId:e.mountId,idbHandleKey:t};case`hostfs`:return{kind:`hostfs`,mountId:e.mountId,hostPath:e.getHostPath()};default:return{kind:e.kind===`s3`?`s3`:e.kind===`aem`?`aem`:`da`,mountId:e.mountId,source:e.source,profile:e.profile??`default`}}}var Q=class e{lfs;lfsSync;rawLfs=null;rawLfsSync=null;_ready;_readyResolved=!1;backend;mountPoints=new Map;opfsBackendFs=null;opfsHandle=null;mountRoot=``;internalMounts=new Set;watcher=null;dbName;mountSyncChannel=null;mountIndex=new d;static writeChains=new Map;onRepairProgress;constructor(t,n,r,i,a){if(this.dbName=t,this.onRepairProgress=a,this.backend=r===`opfs`?`opfs`:`memory`,this.lfs=this.makeDeferredLfs(),this.lfsSync=this.makeDeferredLfsSync(),this._ready=this.backend===`opfs`?e.initOpfsBackend(this,i,n===!0):e.initMemoryBackend(this,t,n===!0),this._ready.then(()=>{this._readyResolved=!0},()=>{}),typeof BroadcastChannel<`u`)try{this.mountSyncChannel=new BroadcastChannel(`vfs-mount-sync:${t}`),this.mountSyncChannel.onmessage=e=>{let{type:t,path:n,descriptor:r}=e.data??{};if(t===`mount`&&typeof n==`string`&&r)this.reconstructBackendFromDescriptor(r,n).then(e=>{this.mountPoints.set(n,e),e.kind===`local`&&this.mountIndex.registerMount(n,e.getHandle()),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}).catch(()=>{});else if(t===`unmount`&&typeof n==`string`){let e=this.mountPoints.get(n);this.mountPoints.delete(n),this.mountIndex.unregisterMount(n),e?.close(),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}}}catch{}}static async initOpfsBackend(t,n,r){let i=n??await e.acquireOpfsHandle(t.dbName,r);await e.seedOpfsMetadataSidecarIfMissing(i);let[a,{WebAccess:o}]=await Promise.all([import(`./dist-CBELmDjr.js`).then(e=>e.t),import(`./dist-BPZbDBP1.js`)]);await e.ensureRootMount(a);let s=`/__opfs__/${t.dbName}`,c=e.opfsBackends.get(t.dbName);if(c&&r){try{a.umount(s)}catch{}e.opfsBackends.delete(t.dbName),c=void 0}if(!c){let n=()=>a.resolveMountConfig({backend:o,handle:i,metadata:`/.metadata.json`}),{resolveWithSidecarRepair:r,repairOpfsMetadataSidecar:l}=await import(`./sidecar-repair-CIHuOk7H.js`).then(e=>e.n);try{let e=await t.withWriteLock(()=>l(i,t.onRepairProgress));e?.changed&&console.warn(`[virtual-fs] repaired metadata sidecar before mount (#2146)`,{dbName:t.dbName,kindFixed:e.kindFixed,sizesFixed:e.sizesFixed,dropped:e.dropped,inosReassigned:e.inosReassigned,nlinksFixed:e.nlinksFixed,selfEntryDropped:e.selfEntryDropped})}catch{}let u=await r(n,()=>t.withWriteLock(()=>l(i,t.onRepairProgress)),e=>console.warn(`[virtual-fs] repaired poisoned metadata sidecar; retrying mount`,{dbName:t.dbName,kindFixed:e.kindFixed,sizesFixed:e.sizesFixed,dropped:e.dropped,nlinksFixed:e.nlinksFixed,selfEntryDropped:e.selfEntryDropped}));try{a.mount(s,u)}catch{}c={backendFs:u,refs:0,sidecarDirty:{paths:new Set,prefixes:new Set}},e.opfsBackends.set(t.dbName,c)}c.refs+=1,t.opfsBackendFs=c.backendFs.index?c.backendFs:null,t.opfsHandle=i,t.mountRoot=s,t.rawLfs=a.promises,t.rawLfsSync=a}static async initMemoryBackend(t,n,r){let i=await import(`./dist-CBELmDjr.js`).then(e=>e.t);await e.ensureRootMount(i);let a=`/__zenfs__/${n}`,o=e.memoryBackends.get(n);if(o&&r){try{i.umount(a)}catch{}e.memoryBackends.delete(n),o=void 0}o||(o={store:i.InMemory.create({label:n}),refs:0},e.memoryBackends.set(n,o)),o.refs+=1;try{i.mount(a,o.store)}catch{}t.mountRoot=a,t.rawLfs=i.promises,t.rawLfsSync=i,t.opfsBackendFs=null,t.opfsHandle=null}static rootMountReady=null;static memoryBackends=new Map;static opfsBackends=new Map;static async ensureRootMount(t){return e.rootMountReady===null&&(e.rootMountReady=(async()=>{await t.configureSingle({backend:t.InMemory,label:`__vfs_root__`})})()),e.rootMountReady}prefix(e){return this.mountRoot?e===`/`?this.mountRoot:this.mountRoot+e:e}unprefix(e){return!this.mountRoot||!e.startsWith(this.mountRoot)?e:e.slice(this.mountRoot.length)||`/`}makeDeferredLfs(){let e=e=>this.prefix(e),t=e=>this.unprefix(e),n=()=>{if(!this.rawLfs)throw Error(`VirtualFS used before init resolved`);return this.rawLfs};return{readFile:(t,r)=>this._readyResolved?n().readFile(e(t),r):this._ready.then(()=>n().readFile(e(t),r)),writeFile:(t,r,i)=>this._readyResolved?n().writeFile(e(t),r,i):this._ready.then(()=>n().writeFile(e(t),r,i)),readdir:t=>this._readyResolved?n().readdir(e(t)):this._ready.then(()=>n().readdir(e(t))),mkdir:(t,r)=>this._readyResolved?n().mkdir(e(t),r):this._ready.then(()=>n().mkdir(e(t),r)),rmdir:t=>this._readyResolved?n().rmdir(e(t)):this._ready.then(()=>n().rmdir(e(t))),unlink:t=>this._readyResolved?n().unlink(e(t)):this._ready.then(()=>n().unlink(e(t))),rename:(t,r)=>this._readyResolved?n().rename(e(t),e(r)):this._ready.then(()=>n().rename(e(t),e(r))),stat:t=>this._readyResolved?n().stat(e(t)):this._ready.then(()=>n().stat(e(t))),lstat:t=>this._readyResolved?n().lstat(e(t)):this._ready.then(()=>n().lstat(e(t))),symlink:(t,r)=>{let i=t.startsWith(`/`)?e(t):t;return this._readyResolved?n().symlink(i,e(r)):this._ready.then(()=>n().symlink(i,e(r)))},readlink:async r=>(this._readyResolved||await this._ready,t(await n().readlink(e(r)))),truncate:async(t,r)=>{this._readyResolved||await this._ready;let i=n();typeof i.truncate==`function`&&await i.truncate(e(t),r)},realpath:async r=>{this._readyResolved||await this._ready;let i=n();return typeof i.realpath==`function`?t(await i.realpath(e(r))):e(r)}}}makeDeferredLfsSync(){let e=e=>this.prefix(e),t=e=>this.unprefix(e);return{readdirSync:t=>{let n=this.rawLfsSync;return n?.readdirSync?n.readdirSync(e(t)):void 0},statSync:t=>{let n=this.rawLfsSync;return n?.statSync?n.statSync(e(t)):void 0},lstatSync:t=>{let n=this.rawLfsSync;return n?.lstatSync?n.lstatSync(e(t)):void 0},readlinkSync:n=>{let r=this.rawLfsSync;return r?.readlinkSync?t(r.readlinkSync(e(n))):void 0}}}static async seedOpfsMetadataSidecarIfMissing(e){let t=`.metadata.json`;try{await e.getFileHandle(t);return}catch(e){if(e?.name!==`NotFoundError`)throw e}let n=await(await e.getFileHandle(t,{create:!0})).createWritable(),r=JSON.stringify({version:1,maxSize:4294967295,entries:{}});await n.write(r),await n.close()}static async acquireOpfsHandle(e,t){let n=navigator.storage;if(!n?.getDirectory)throw new c(`EINVAL`,`OPFS is not available in this environment`);let r=await n.getDirectory();if(t)try{await r.removeEntry(e,{recursive:!0})}catch{}return r.getDirectoryHandle(e,{create:!0})}static _createSyncForTests(t){return new e(t)}static async create(t){let n=t?.dbName??`browser-fs`,r=t?.wipe===!0,i=t?.backend??Y(),a=new e(n,r,i,void 0,t?.onRepairProgress);return await a._ready,r&&await h().catch(()=>{}),a}async flush(){await this.writeOpfsMetadataSidecar()}async writeOpfsMetadataSidecar(){this.backend===`opfs`&&await this.withWriteLock(()=>this.writeOpfsMetadataSidecarUnlocked())}async writeOpfsMetadataSidecarUnlocked(){if(this.backend!==`opfs`)return;let t=this.opfsBackendFs,n=this.opfsHandle;if(!t||!n)return;let r=t.index.toJSON(),i=e.opfsBackends.get(this.dbName)?.sidecarDirty,a=r;if(i){let e=null;try{let t=await n.getFileHandle(`.metadata.json`),r=JSON.parse(await(await t.getFile()).text());r&&typeof r==`object`&&r.entries&&(e=r)}catch{}e&&(await this.auditDirtyKindFlips(r,e,i,n),a=y(e,r,i))}let o=JSON.stringify(v(a)),s=await(await n.getFileHandle(`.metadata.json`,{create:!0})).createWritable();await s.write(o),await s.close(),i&&(i.paths.clear(),i.prefixes.clear())}async auditDirtyKindFlips(e,t,n,r){let i=H(e,t,n.paths,n.prefixes);if(i.length===0)return;let a=b(r),o=this.opfsBackendFs;for(let n of i){let r=await a(n.path).catch(()=>null);if(r!==null&&r.kind!==`missing`&&r.kind===`directory`===n.ownIsDirectory)continue;let i=t.entries?.[n.path];e.entries&&i!==void 0&&(e.entries[n.path]=i);let s=r!==null&&r.kind!==`missing`;s&&(o?.index?.delete(n.path),o?._handles?.delete(n.path)),console.warn(`[virtual-fs] refused to flush in-memory kind flip over sidecar record (#2006)`,{path:n.path,reality:r?.kind??`unverifiable`,evicted:s})}}markSidecarDirty(t,r=`path`){if(this.backend!==`opfs`)return;let a=e.opfsBackends.get(this.dbName)?.sidecarDirty;if(!a)return;let o=i(t);(r===`prefix`?a.prefixes:a.paths).add(o);let{dir:s}=n(o);for(;s!==`/`;)a.paths.add(s),s=n(s).dir}invalidatePaths(e){if(this.backend!==`opfs`||!this.opfsBackendFs)return;let t=this.opfsBackendFs;for(let n of e){let e=i(n);t.index.delete(e),t._handles?.delete(e),this.markSidecarDirty(e)}}async withKindMismatchRetry(e,t){return this.withKindMismatchRetryPaths([e],t)}async withKindMismatchRetryPaths(e,t){try{return await t()}catch(n){let r=n?.code;if(r!==`EISDIR`&&r!==`ENOTDIR`&&r!==`EINVAL`)throw n;for(let n of e)if(await this.reconcileKindMismatch(n).catch(()=>!1))return await t();throw n}}async reconcileKindMismatch(e){if(this.backend!==`opfs`)return!1;let t=this.opfsBackendFs,n=this.opfsHandle;if(!t?.index||!n)return!1;let r=i(e),a=r;try{a=await this.resolveSymlinks(r)}catch{}let o=await b(n)(a),s=z(t.index.get(a)?.mode),c=t._handles?.get(a),l=c?.kind===`directory`?`directory`:c?.kind===`file`?`file`:`absent`,u=B(o,s),d=B(o,l);if(!u&&!d)return!1;if(t.index.delete(a),t._handles?.delete(a),s===`directory`||l===`directory`){let e=`${a}/`;for(let n of[...t.index.keys()])n.startsWith(e)&&t.index.delete(n);if(t._handles)for(let n of[...t._handles.keys()])n.startsWith(e)&&t._handles.delete(n)}return this.markSidecarDirty(a),console.warn(`[virtual-fs] reconciled in-memory kind mismatch (#2006)`,{path:a,reality:o.kind,indexHeld:s,handleHeld:l}),!0}canWrite(e){return!0}setWatcher(e){this.watcher=e}getWatcher(){return this.watcher}async watch(e,t){let n=this.watcher;if(!n)throw new c(`ENOSYS`,`no FsWatcher attached to this VirtualFS`);let r=e.map(e=>n.watch(e,()=>!0,t));return()=>{for(let e of r)e()}}async dispose(){if(this.mountSyncChannel?.close(),this.mountSyncChannel=null,this.watcher?.dispose(),this.watcher=null,this.mountIndex.dispose(),await this.writeOpfsMetadataSidecar(),this.mountRoot){let t=this.backend===`opfs`?e.opfsBackends:e.memoryBackends,n=t.get(this.dbName);if(n&&(--n.refs,n.refs<=0)){t.delete(this.dbName);try{(await import(`./dist-CBELmDjr.js`).then(e=>e.t)).umount(this.mountRoot)}catch{}}}}readDirSync(e){let t=i(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.readdirSync!=`function`||typeof n.lstatSync!=`function`)return null;try{let e=n.readdirSync(t),r=[];for(let i of e){let e=t===`/`?`/${i}`:`${t}/${i}`;try{let t=n.lstatSync(e),a=t.isSymbolicLink()?`symlink`:t.isDirectory()?`directory`:`file`;r.push(a===`symlink`?{name:i,type:a}:{name:i,type:a,size:t.size,mtime:t.mtimeMs,ctime:t.ctimeMs,...t.ino===void 0?{}:{ino:t.ino},...t.uid===void 0?{}:{uid:t.uid},...t.gid===void 0?{}:{gid:t.gid},mode:t.mode})}catch{}}return r}catch{return null}}statSync(e){let t=i(e);if(this.findMount(t))return null;let r=this.lfsSync;if(typeof r.statSync!=`function`||typeof r.lstatSync!=`function`||typeof r.readlinkSync!=`function`)return null;if(t===`/`)try{let e=r.statSync(t);return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino}}catch{return null}let a=t;for(let e=0;e<=10;e++){let e;try{e=r.lstatSync(a)}catch{return null}if(!e.isSymbolicLink())return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino};let t;try{t=r.readlinkSync(a)}catch{return null}a=t.startsWith(`/`)?i(t):i(o(n(a).dir,t))}return null}lstatSync(e){let t=i(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.lstatSync!=`function`)return null;if(t===`/`)return this.statSync(t);try{let e=n.lstatSync(t);if(e.isSymbolicLink()){let r=n.readlinkSync?n.readlinkSync(t):``;return{type:`symlink`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,isSymlink:!0,symlinkTarget:r,ino:e.ino}}return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino}}catch{return null}}async mount(e,t,r){let a=i(e);if(this.mountPoints.has(a))throw new c(`EEXIST`,`mount point is already mounted`,a);try{if((await this.lstat(a)).type!==`directory`)throw new c(`ENOTDIR`,`mount point must be a directory`,a);if((await this.readDir(a)).length>0)throw new c(`ENOTEMPTY`,`mount point must be empty to avoid shadowing existing files`,a)}catch(e){if(!(e instanceof c)||e.code!==`ENOENT`)throw e}let{dir:o}=n(a);o!==`/`&&await this.mkdir(o,{recursive:!0});try{await this.lfs.mkdir(a)}catch{}if(this.mountPoints.set(a,t),t.kind===`local`){let e=r?.limits??u(r?.env??{});this.mountIndex.registerMount(a,t.getHandle(),e)}let s=Z(t,a);try{this.mountSyncChannel?.postMessage({type:`mount`,path:a,descriptor:s})}catch{}if(this.watcher?.notify([{type:`modify`,path:a,entryType:`directory`}]),t.kind!==`hostfs`)try{let e={targetPath:a,descriptor:s,createdAt:Date.now()},n=t.kind===`local`?t.getHandle():void 0;await f(e,n)}catch{}}async unmount(e){let t=i(e),n=this.mountPoints.get(t);this.mountPoints.delete(t),this.mountIndex.unregisterMount(t);try{this.mountSyncChannel?.postMessage({type:`unmount`,path:t})}catch{}this.watcher?.notify([{type:`modify`,path:t,entryType:`directory`}]),await n?.close();try{await p(t)}catch{}}async reconstructBackendFromDescriptor(e,t){switch(e.kind){case`local`:{let t=await m(e.idbHandleKey);if(!t)throw Error(`no handle stored for ${e.idbHandleKey}`);return l.fromHandle(t,{mountId:e.mountId})}case`hostfs`:{let{HostFsMountBackend:n}=await import(`./backend-hostfs-BxfjZHzO.js`);return new n({targetPath:t,hostPath:e.hostPath,mountId:e.mountId})}case`s3`:{let{S3MountBackend:t,RemoteMountCache:n,makeSignedFetchS3:r}=await import(`./mount-BM7uK6px.js`).then(e=>e.t),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r(e.profile)})}case`da`:{let{DaMountBackend:t,RemoteMountCache:n,makeSignedFetchDa:r}=await import(`./mount-BM7uK6px.js`).then(e=>e.t),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r()})}case`aem`:{let{AemMountBackend:t,RemoteMountCache:n,makeSignedFetchDa:r}=await import(`./mount-BM7uK6px.js`).then(e=>e.t),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r()})}}}listMounts(){let e=[];for(let t of this.mountPoints.keys())this.internalMounts.has(t)||e.push(t);return e}listInternalMounts(){return[...this.internalMounts]}listMountPoints(){let e=[];for(let[t,n]of this.mountPoints)this.internalMounts.has(t)||e.push({path:t,kind:n.kind});return e}getMountBackend(e){let t=i(e);return this.mountPoints.get(t)??null}async mountInternal(e,t){let r=i(e);if(this.mountPoints.has(r))throw new c(`EEXIST`,`mount point is already mounted`,r);let{dir:a}=n(r);a!==`/`&&await this.mkdir(a,{recursive:!0});try{await this.lfs.mkdir(r)}catch{}this.mountPoints.set(r,t),this.internalMounts.add(r),this.watcher?.notify([{type:`modify`,path:r,entryType:`directory`}])}async unmountInternal(e){let t=i(e);if(!this.internalMounts.has(t))throw new c(`ENOENT`,`not an internal mount point`,t);let n=this.mountPoints.get(t);this.mountPoints.delete(t),this.internalMounts.delete(t),this.watcher?.notify([{type:`modify`,path:t,entryType:`directory`}]),await n?.close()}getMountIndex(){return this.mountIndex}async refreshMount(e,t){let n=i(e),r=this.mountPoints.get(n);if(!r)throw new c(`ENOENT`,`not a mount point`,n);let a=await r.refresh(t);return r.kind===`local`&&await this.mountIndex.refreshMount(n,u(t?.env??{})),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}]),a}isPathUnderMount(e){for(let t of this.mountPoints.keys())if(e===t||e.startsWith(t+`/`))return!0;return!1}findMount(e){let t=null;for(let[n,r]of this.mountPoints)(e===n||e.startsWith(n+`/`))&&(!t||n.length>t.mountPath.length)&&(t={mountPath:n,backend:r});return t?e===t.mountPath?{path:t.mountPath,backend:t.backend,relParts:[]}:{path:t.mountPath,backend:t.backend,relParts:e.slice(t.mountPath.length+1).split(`/`).filter(Boolean)}:null}async readFile(e,t){return this.withKindMismatchRetry(e,()=>this.readFileInner(e,t))}async readFileInner(e,t){let n=i(e),r=this.findMount(n);if(r){if(r.relParts.length===0)throw new c(`EISDIR`,`is a directory`,n);let e=r.relParts.join(`/`);try{let n=await r.backend.readFile(e);return(t?.encoding??`utf-8`)===`utf-8`?new TextDecoder(`utf-8`).decode(n):n}catch(e){I(e,n)}}let a=await this.resolveSymlinks(n);try{return(t?.encoding??`utf-8`)===`utf-8`?await this.lfs.readFile(a,{encoding:`utf8`}):await this.lfs.readFile(a)}catch(e){throw R(e,n)}}async readFileRange(e,t,n){let r=i(e);if(!Number.isInteger(t)||!Number.isInteger(n)||t<0||n<t)throw new c(`EINVAL`,`invalid byte range ${t}-${n}`,r);if(t===n)return new Uint8Array;let a=this.findMount(r),o=a?.backend.readFileRange;if(a&&o){if(a.relParts.length===0)throw new c(`EISDIR`,`is a directory`,r);try{return await o.call(a.backend,a.relParts.join(`/`),t,n)}catch(e){I(e,r)}}let s=await this.readFile(r,{encoding:`binary`});return new Uint8Array(s.subarray(t,Math.min(n,s.byteLength)))}async getNativeFile(e){let t=i(e),n=this.findMount(t);if(n){let e=n.backend.getNativeFile;if(!e||n.relParts.length===0)return null;try{return await e.call(n.backend,n.relParts.join(`/`))}catch{return null}}let r=this.opfsHandle;if(!r)return null;try{return await U(r,await this.resolveSymlinks(t))}catch{return null}}async writeFile(e,t,n){return this.withKindMismatchRetry(e,()=>this.writeFileInner(e,t,n))}async writeFileInner(e,t,r){let a=i(e),o=this.findMount(a);if(o){if(o.relParts.length===0)throw new c(`EISDIR`,`is a directory`,a);let e=o.relParts.join(`/`),n=!1;try{await this.stat(a),n=!0}catch{}let r=typeof t==`string`?new TextEncoder().encode(t):t instanceof Uint8Array?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t);try{await o.backend.writeFile(e,r)}catch(e){I(e,a)}this.watcher?.notify([{type:n?`modify`:`create`,path:a,entryType:`file`}]),this.mountIndex.notifyWrite(a);return}let s;try{s=await this.resolveSymlinks(a)}catch{s=a}let l=!1;try{await this.lfs.stat(s),l=!0}catch{}let{dir:u}=n(s);await this.withWriteLock(async()=>{this.markSidecarDirty(s),u!==`/`&&await this.mkdirRecursiveUnlocked(u);let e=typeof t==`string`?new TextEncoder().encode(t).byteLength:(t instanceof Uint8Array,t.byteLength);try{await this.lfs.writeFile(s,t)}catch(e){if(u!==`/`&&e instanceof Error&&e.message.includes(`ENOENT`)){await this.mkdirRecursiveUnlocked(u);try{await this.lfs.writeFile(s,t)}catch(e){throw R(e,a)}}else throw R(e,a)}try{await this.lfs.truncate?.(s,e)}catch(e){throw R(e,a)}}),this.watcher?.notify([{type:l?`modify`:`create`,path:s,entryType:`file`}])}async readDir(e,t){let n=i(e),r=this.findMount(n);return r?this.readDirMounted(n,r,t):this.readDirLocal(n)}async readDirMounted(e,t,n){let r=n?.includeStats===!0?void 0:this.mountIndex.getDirectoryEntries(t.path,e);if(r!==void 0){let t=new Map;for(let e of r)t.set(e.name,{name:e.name,type:e.type});return this.addNestedMountEntries(t,e),[...t.values()]}let i=t.relParts.join(`/`)||`/`,a;try{a=await t.backend.readDir(i,n)}catch(t){I(t,e)}let o=new Map,s=t.backend.listingStatsMatchStat===!0;for(let e of a)o.set(e.name,X(e,s));return this.addNestedMountEntries(o,e),[...o.values()]}async readDirLocal(e){return this.withKindMismatchRetry(e,()=>this.readDirLocalInner(e))}async readDirLocalInner(e){let t=await this.resolveSymlinks(e);try{let e=await this.lfs.readdir(t),n=[];for(let r of e){let e=await this.statDirEntry(t,r);e&&n.push(e)}return n}catch(t){throw R(t,e)}}async statDirEntry(e,t){let n=e===`/`?`/${t}`:`${e}/${t}`;try{let e=await this.lfs.lstat(n);return e.isSymbolicLink()?{name:t,type:`symlink`}:{name:t,type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,...e.ino===void 0?{}:{ino:e.ino},...e.uid===void 0?{}:{uid:e.uid},...e.gid===void 0?{}:{gid:e.gid},mode:e.mode}}catch{return null}}addNestedMountEntries(e,t){let n=t===`/`?`/`:`${t}/`;for(let r of this.mountPoints.keys()){if(r===t||!r.startsWith(n))continue;let i=r.slice(n.length);!i||i.includes(`/`)||e.has(i)||e.set(i,{name:i,type:`directory`})}}async withWriteLock(t){let n=this.dbName,r,i=new Promise(e=>{r=e}),a=e.writeChains.get(n)??Promise.resolve();e.writeChains.set(n,i),await a;try{let e=globalThis.navigator?.locks;return this.backend!==`opfs`||typeof e?.request!=`function`?await t():await e.request(`slicc-vfs:${n}`,()=>t())}finally{r(),e.writeChains.get(n)===i&&e.writeChains.delete(n)}}async mkdirRecursiveUnlocked(e){let t=e.split(`/`).filter(Boolean),n=[],r=``;for(let e of t){r+=`/`+e;try{await this.lfs.mkdir(r),n.push(r)}catch(e){if(e instanceof Error&&!e.message.includes(`EEXIST`))throw R(e,r);try{let e=await this.lfs.lstat(r);if(!e.isDirectory()&&!e.isSymbolicLink())throw new c(`ENOTDIR`,`not a directory`,r)}catch(e){if(e instanceof c&&e.code===`ENOTDIR`)throw e}}}return n}async mkdir(e,t){let n=i(e);if(n===`/`)return;let r=this.findMount(n);if(r){if(r.relParts.length===0)return;let e=r.relParts.join(`/`),t=await this.exists(n);try{await r.backend.mkdir(e)}catch(e){I(e,n)}t||this.watcher?.notify([{type:`create`,path:n,entryType:`directory`}]);return}if(t?.recursive){let e=await this.withWriteLock(()=>(this.markSidecarDirty(n),this.mkdirRecursiveUnlocked(n)));e.length>0&&this.watcher?.notify(e.map(e=>({type:`create`,path:e,entryType:`directory`})))}else await this.withWriteLock(async()=>{this.markSidecarDirty(n);try{await this.lfs.mkdir(n)}catch(e){throw R(e,n)}}),this.watcher?.notify([{type:`create`,path:n,entryType:`directory`}])}async rm(e,t){return this.withKindMismatchRetry(i(e),()=>this.rmInner(e,t))}async rmInner(e,t){let n=i(e),r=this.findMount(n);if(r){if(r.relParts.length===0)throw new c(`EINVAL`,`cannot remove a mount point — use unmount`,n);let e;try{e=(await this.stat(n)).type}catch{}let i=r.relParts.join(`/`);try{await r.backend.remove(i,{recursive:t?.recursive})}catch(e){I(e,n)}this.watcher?.notify([{type:`delete`,path:n,entryType:e}]),this.mountIndex.notifyDelete(n);return}try{let e=await this.lfs.lstat(n);await this.withWriteLock(async()=>{e.isSymbolicLink()?await this.lfs.unlink(n):e.isDirectory()?t?.recursive?await this.rmRecursiveUnlocked(n):await this.lfs.rmdir(n):await this.lfs.unlink(n),this.markSidecarDirty(n,`prefix`),await this.writeOpfsMetadataSidecarUnlocked()})}catch(e){throw R(e,n)}this.watcher?.notify([{type:`delete`,path:n}])}async rmRecursiveUnlocked(e){let t=await this.lfs.readdir(e);for(let n of t){let t=e===`/`?`/${n}`:`${e}/${n}`,r=await this.lfs.lstat(t);r.isSymbolicLink()?await this.lfs.unlink(t):r.isDirectory()?await this.rmRecursiveUnlocked(t):await this.lfs.unlink(t)}await this.lfs.rmdir(e)}async stat(e){return this.withKindMismatchRetry(e,()=>this.statInner(e))}async statInner(e){let t=i(e),n=this.findMount(t);if(n){if(n.relParts.length===0)try{let e=await this.lfs.stat(t);return{type:`directory`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch{return{type:`directory`,size:0,mtime:Date.now(),ctime:Date.now()}}let e=n.relParts.join(`/`);try{let t=await n.backend.stat(e);return{type:t.kind===`directory`?`directory`:`file`,size:t.size,mtime:t.mtime,ctime:t.ctime??t.mtime,...t.ino===void 0?{}:{ino:t.ino},...t.uid===void 0?{}:{uid:t.uid},...t.gid===void 0?{}:{gid:t.gid},...t.mode===void 0?{}:{mode:t.mode}}}catch(e){I(e,t)}}let r=await this.resolveSymlinks(t);try{let e=await this.lfs.stat(r);return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino,uid:e.uid,gid:e.gid,mode:e.mode}}catch(e){throw R(e,t)}}async exists(e){let t=i(e),n=this.findMount(t);if(n){if(n.relParts.length===0)return!0;try{return await this.stat(t),!0}catch{return!1}}try{return await this.stat(t),!0}catch{try{return await this.lfs.lstat(t),!0}catch{return!1}}}async rename(e,t){return this.withKindMismatchRetryPaths([i(e),i(t)],()=>this.renameInner(e,t))}async renameInner(e,t){let n=i(e),r=i(t),a;try{a=(await this.lstat(n)).type}catch{}let o=this.findMount(n);if(o?.backend.rename){let e=this.findMount(r);if(e&&e.backend===o.backend){try{await o.backend.rename(o.relParts.join(`/`),e.relParts.join(`/`))}catch(e){I(e,n)}this.watcher?.notify([{type:`delete`,path:n,entryType:a},{type:`create`,path:r,entryType:a}]),this.mountIndex.notifyRename(n,r);return}}try{await this.withWriteLock(async()=>{this.markSidecarDirty(n,`prefix`),this.markSidecarDirty(r,`prefix`),await this.lfs.rename(n,r),await this.writeOpfsMetadataSidecarUnlocked()})}catch(e){throw R(e,n)}this.watcher?.notify([{type:`delete`,path:n,entryType:a},{type:`create`,path:r,entryType:a}]),this.mountIndex.notifyRename(n,r)}async readTextFile(e){return await this.readFile(e,{encoding:`utf-8`})}async*walk(e,t,n=0){yield*C({mountPoints:this.mountPoints,mountIndex:this.mountIndex,realpath:e=>this.realpath(e),readDir:e=>this.readDir(e),stat:e=>this.stat(e)},e,t,n)}async copyFile(e,t){if((await this.stat(e)).type===`directory`)throw new c(`EISDIR`,`is a directory`,e);let n=await this.readFile(e,{encoding:`binary`});await this.writeFile(t,n)}dirname(e){return n(i(e)).dir}basename(e){return n(i(e)).base}async symlink(e,t){let r=i(t);if(this.findMount(r))throw new c(`EINVAL`,`symlinks not supported on mounted filesystems`,r);let{dir:a}=n(r);await this.withWriteLock(async()=>{a!==`/`&&await this.mkdirRecursiveUnlocked(a);try{await this.lfs.symlink(e,r)}catch(t){if(a!==`/`&&t instanceof Error&&t.message.includes(`ENOENT`)){await this.mkdirRecursiveUnlocked(a);try{await this.lfs.symlink(e,r)}catch(e){throw R(e,r)}}else throw R(t,r)}this.markSidecarDirty(r),await this.writeOpfsMetadataSidecarUnlocked()}),this.watcher?.notify([{type:`create`,path:r,entryType:`symlink`}])}async readlink(e){let t=i(e);try{return await this.lfs.readlink(t)}catch(e){throw R(e,t)}}async lstat(e){let t=i(e);if(this.findMount(t)||t===`/`)return this.stat(t);try{let e=await this.lfs.lstat(t);if(e.isSymbolicLink()){let n=await this.lfs.readlink(t);return{type:`symlink`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,isSymlink:!0,symlinkTarget:n,ino:e.ino,uid:e.uid,gid:e.gid,mode:e.mode}}return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino,uid:e.uid,gid:e.gid,mode:e.mode}}catch(e){throw R(e,t)}}async realpath(e){return q(this.lfs,e=>this.findMount(e)!==null,e)}resolveSymlinks(e){return J(this.lfs,e=>this.findMount(e)!==null,e)}},$=e({FsError:()=>c,FsWatcher:()=>k,MountIndex:()=>d,RestrictedFS:()=>F,VirtualFS:()=>Q,joinPath:()=>o,normalizePath:()=>i,pathSegments:()=>r,resolveVfsBackendFromEnv:()=>Y,splitPath:()=>n,statsFromDirEntry:()=>s});export{k as i,Q as n,F as r,$ as t};
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{a as n,i as r,n as i,r as a,t as o}from"./path-utils-DNJG-zQf.js";import{n as s,t as c}from"./types-Dgm4REV3.js";import{i as l,r as u,t as d}from"./mount-index-D9w_zMSm.js";import{a as f,i as p,n as m,t as h}from"./mount-table-store-DrF_Ifaz.js";import{n as g,t as _}from"./virtual-device-paths-CS5o4QVz.js";import{i as v,r as y,t as b}from"./sidecar-repair-CIHuOk7H.js";function x(e,t,n){return e.size===0||!e.has(n)||!t.isReady(n)?!1:!Array.from(e.keys()).some(e=>e!==n&&e.startsWith(n+`/`))}async function S(e,t){try{return await e(t)}catch{return t}}async function*C(e,t,n,r=0){let a=i(t);if(x(e.mountPoints,e.mountIndex,a)){let t=e.mountIndex.getFiles(a);if(t){for(let e of t)yield e;return}}let o=n??new Set;if(r>64||o.size>=1e5)return;let s=await S(t=>e.realpath(t),a);if(o.has(s))return;o.add(s);let c=await e.readDir(a);for(let t of c)yield*w(e,t,a===`/`?`/${t.name}`:`${a}/${t.name}`,o,r+1)}async function*w(e,t,n,r,i){if(t.type===`file`){yield n;return}if(t.type===`symlink`){yield*T(e,n,r,i);return}yield*C(e,n,r,i)}async function*T(e,t,n,r){try{let i=await e.stat(t);i.type===`file`?yield t:i.type===`directory`&&(yield*C(e,t,n,r))}catch{}}const E=t(`fs-watcher`);let D=0;function O(e,t){return t===`/`||e===t||e.startsWith(t+`/`)}var k=class{registrations=new Map;watch(e,t,n){let r=`fsw-${++D}`;return this.registrations.set(r,{id:r,basePath:e,filter:t,callback:n}),E.debug(`Watch registered`,{id:r,basePath:e}),()=>{this.registrations.delete(r),E.debug(`Watch unregistered`,{id:r})}}notify(e){if(e.length!==0)for(let[,t]of this.registrations){let n=e.filter(e=>O(e.path,t.basePath)&&t.filter(e.path));if(n.length>0)try{t.callback(n)}catch(e){E.error(`Watch callback error`,{id:t.id,error:e instanceof Error?e.message:String(e)})}}}dispose(){this.registrations.clear(),E.debug(`All watchers disposed`)}get size(){return this.registrations.size}};const A=new TextEncoder,j=new TextDecoder(`utf-8`,{fatal:!1});var M=class{entries=new Map;static handles(e){return g(i(e))}has(e){return this.entries.has(i(e))}write(e,t){let n=i(e),r=typeof t==`string`?A.encode(t):new Uint8Array(t),a=Date.now(),o=this.entries.get(n);this.entries.set(n,{bytes:r,mtime:a,ctime:o?.ctime??a})}read(e,t){let n=this.require(e);return(t?.encoding??`utf-8`)===`utf-8`?j.decode(n.bytes):new Uint8Array(n.bytes)}readText(e){return j.decode(this.require(e).bytes)}stat(e){let t=this.require(e);return{type:`file`,size:t.bytes.length,mtime:t.mtime,ctime:t.ctime}}remove(e){return this.entries.delete(i(e))}require(e){let t=i(e),n=this.entries.get(t);if(!n)throw new c(`ENOENT`,`no such file or directory`,t);return n}};const N={[_]:{stat:()=>({type:`file`,size:0,mtime:0,ctime:0}),read:e=>(e?.encoding??`utf-8`)===`utf-8`?``:new Uint8Array,readText:()=>``,write:()=>{}}},P=[`/tmp/`];var F=class{ephemeralFds=new M;vfs;allowedPrefixes;readOnlyPrefixes;readGrantPatterns=[];writeEnforcement;includeMounts;constructor(e,t,n=[],r=`hard`,a={}){this.vfs=e;let o=e=>{let t=i(e);return t.endsWith(`/`)?t:t+`/`};this.allowedPrefixes=t.map(o),this.readOnlyPrefixes=n.map(o),this.writeEnforcement=r,this.includeMounts=a.includeMounts!==!1}getAllPrefixes(){let e=this.includeMounts?this.vfs.listMounts().map(e=>e.endsWith(`/`)?e:e+`/`):[];return[...this.allowedPrefixes,...this.readOnlyPrefixes,...e,...P]}setReadGrants(e){this.readGrantPatterns=[];for(let t of new Set(e))this.addReadGrant(t)}addReadGrant(e){let t=e.split(`/`),n=[];for(let e=1;e<t.length;e++)n.push(a(t.slice(0,e).join(`/`)||`/`));this.readGrantPatterns.push({pattern:e,regex:a(e),ancestorRegexes:n})}matchesReadGrant(e){return this.readGrantPatterns.some(t=>t.regex.test(e))}leadsToReadGrant(e){return this.readGrantPatterns.some(t=>t.ancestorRegexes.some(t=>t.test(e)))}isAllowed(e){let t=i(e),n=this.getAllPrefixes();return this.matchesReadGrant(t)||this.leadsToReadGrant(t)||n.some(e=>t===e.slice(0,-1)||t.startsWith(e)||t===`/`||e.startsWith(t+`/`))}isAllowedStrict(e){let t=i(e),n=this.getAllPrefixes();return this.matchesReadGrant(t)||n.some(e=>t===e.slice(0,-1)||t.startsWith(e))}isWritable(e){let t=i(e);return[...this.allowedPrefixes,...P].some(e=>t===e.slice(0,-1)||t.startsWith(e))}canWrite(e){return M.handles(e)||this.isWritable(e)}checkWrite(e){if(this.writeEnforcement!==`sudo-delegated`&&!this.isWritable(e))throw new c(`EACCES`,`permission denied`,i(e))}async resolveAndCheckRead(e){try{let t=await this.vfs.realpath(e);if(!this.isAllowedStrict(t))throw new c(`ENOENT`,`no such file or directory`,i(e));return t}catch(t){throw t instanceof c?t:new c(`ENOENT`,`no such file or directory`,i(e))}}async resolveAndCheckWrite(e){try{let t=await this.vfs.realpath(e);if(!this.isWritable(t)&&!this.isSymlinkEscapeAllowed(t))throw new c(`EACCES`,`permission denied`,i(e));return t}catch(t){throw t instanceof c?t:new c(`EACCES`,`permission denied`,i(e))}}isSymlinkEscapeAllowed(e){return!1}async checkParentRealpathEscape(e){let t=this.vfs.dirname(e),n=this.vfs.basename(e),r;try{r=await this.vfs.realpath(t)}catch(e){if(e instanceof c&&e.code===`EACCES`)throw e;return}let a=r+`/`+n;if(this.isWritable(a))return;let o=i(r)!==i(t);if(!(this.writeEnforcement===`sudo-delegated`&&!o))throw new c(`EACCES`,`permission denied`,i(e))}getUnderlyingFS(){return this.vfs}invalidatePaths(e){this.vfs.invalidatePaths(e)}async flush(){await this.vfs.flush()}isPathUnderMount(e){return this.vfs.isPathUnderMount(e)}async readFile(e,t){let n=N[i(e)];if(n)return n.read(t);if(M.handles(e))return this.ephemeralFds.read(e,t);if(!this.isAllowedStrict(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let r=await this.resolveAndCheckRead(e);return this.vfs.readFile(r,t)}async readFileRange(e,t,n){if(!this.isAllowedStrict(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let r=await this.resolveAndCheckRead(e);return this.vfs.readFileRange(r,t,n)}async getNativeFile(e){if(N[i(e)]||M.handles(e)||!this.isAllowedStrict(e))return null;try{let t=await this.resolveAndCheckRead(e);return await this.vfs.getNativeFile(t)}catch{return null}}async readDir(e,t){if(!this.isAllowed(e))return[];let n=e;if(this.isAllowedStrict(e))try{n=await this.resolveAndCheckRead(e)}catch{return[]}let r=await this.vfs.readDir(n,t);if(!this.isAllowedStrict(e)){let t=i(e);return r.filter(e=>{let n=t===`/`?`/${e.name}`:`${t}/${e.name}`;return this.isAllowed(n)})}return r}async stat(e){let t=N[i(e)];if(t)return t.stat();if(M.handles(e))return this.ephemeralFds.stat(e);if(!this.isAllowed(e))throw new c(`ENOENT`,`no such file or directory`,i(e));if(this.isAllowedStrict(e)){let t=await this.resolveAndCheckRead(e);return this.vfs.stat(t)}return this.vfs.stat(e)}scanPathForSymlinks(e,t){let n=i(e);if(n===`/`)return!1;let r=n.slice(1).split(`/`),a=t?r.length:r.length-1,o=``;for(let e=0;e<a;e++){o=o+`/`+r[e];let t=this.vfs.lstatSync(o);if(t===null)return null;if(t.type===`symlink`)return!0}return!1}statSync(e){let t=N[i(e)];return t?t.stat():M.handles(e)?this.ephemeralFds.has(e)?this.ephemeralFds.stat(e):null:!this.isAllowedStrict(e)||this.scanPathForSymlinks(e,!0)!==!1?null:this.vfs.statSync(e)}lstatSync(e){let t=N[i(e)];return t?t.stat():M.handles(e)?this.ephemeralFds.has(e)?this.ephemeralFds.stat(e):null:!this.isAllowed(e)||this.scanPathForSymlinks(e,!1)!==!1?null:this.vfs.lstatSync(e)}readDirSync(e){if(!this.isAllowed(e)||this.scanPathForSymlinks(e,!0)!==!1)return null;let t=this.vfs.readDirSync(e);if(t===null)return null;if(this.isAllowedStrict(e))return t;let n=i(e);return t.filter(e=>{let t=n===`/`?`/${e.name}`:`${n}/${e.name}`;return this.isAllowed(t)})}async realpath(e){if(M.handles(e)){let t=i(e);if(!this.ephemeralFds.has(t))throw new c(`ENOENT`,`no such file or directory`,t);return t}let t;try{t=await this.vfs.realpath(e)}catch(t){throw t instanceof c?t:new c(`ENOENT`,`no such file or directory`,i(e))}if(!this.isAllowedStrict(t))throw new c(`ENOENT`,`no such file or directory`,i(e));return t}async exists(e){if(N[i(e)])return!0;if(M.handles(e))return this.ephemeralFds.has(e);if(!this.isAllowed(e))return!1;if(this.isAllowedStrict(e))try{await this.resolveAndCheckRead(e)}catch{return!1}return this.vfs.exists(e)}async readTextFile(e){let t=N[i(e)];if(t)return t.readText();if(M.handles(e))return this.ephemeralFds.readText(e);if(!this.isAllowedStrict(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let n=await this.resolveAndCheckRead(e);return this.vfs.readTextFile(n)}async*walk(e){if(!this.isAllowed(e))return;let t=e;if(this.isAllowedStrict(e))try{t=await this.resolveAndCheckRead(e)}catch{return}for await(let e of this.vfs.walk(t))this.isAllowed(e)&&(yield e)}async writeFile(e,t,n){let r=N[i(e)];if(r){r.write(t);return}if(M.handles(e)){this.ephemeralFds.write(e,t);return}this.checkWrite(e),await this.checkParentRealpathEscape(e);try{(await this.vfs.lstat(e)).type===`symlink`&&await this.resolveAndCheckWrite(e)}catch(e){if(e instanceof c&&e.code===`EACCES`)throw e}return this.vfs.writeFile(e,t,n)}refuseDescriptorTreeOp(e){if(M.handles(e))throw new c(`EACCES`,`permission denied`,i(e))}async mkdir(e,t){return this.refuseDescriptorTreeOp(e),this.checkWrite(e),await this.checkParentRealpathEscape(e),this.vfs.mkdir(e,t)}async rm(e,t){if(M.handles(e)){if(!this.ephemeralFds.remove(e))throw new c(`ENOENT`,`no such file or directory`,i(e));return}this.checkWrite(e);try{(await this.vfs.lstat(e)).type===`symlink`||await this.resolveAndCheckWrite(e)}catch(e){if(e instanceof c&&e.code===`EACCES`)throw e}return this.vfs.rm(e,t)}async rename(e,t){return this.refuseDescriptorTreeOp(e),this.refuseDescriptorTreeOp(t),this.checkWrite(e),this.checkWrite(t),await this.resolveAndCheckWrite(e),await this.checkParentRealpathEscape(t),this.vfs.rename(e,t)}async copyFile(e,t){if(M.handles(e)){let n=this.ephemeralFds.read(e,{encoding:`binary`});await this.writeFile(t,n);return}if(M.handles(t)){if(!this.isAllowed(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let n=await this.resolveAndCheckRead(e);this.ephemeralFds.write(t,await this.vfs.readFile(n,{encoding:`binary`}));return}if(!this.isAllowed(e))throw new c(`ENOENT`,`no such file or directory`,i(e));this.checkWrite(t);let n=await this.resolveAndCheckRead(e);await this.checkParentRealpathEscape(t);try{(await this.vfs.lstat(t)).type===`symlink`&&await this.resolveAndCheckWrite(t)}catch(e){if(e instanceof c&&e.code===`EACCES`)throw e}return this.vfs.copyFile(n,t)}async symlink(e,t){return this.refuseDescriptorTreeOp(t),this.checkWrite(t),await this.checkParentRealpathEscape(t),this.vfs.symlink(e,t)}async readlink(e){if(!this.isAllowedStrict(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let t=await this.vfs.readlink(e),n;if(t.startsWith(`/`))n=i(t);else{let r=this.vfs.dirname(e);n=i(r+`/`+t)}if(!this.isAllowedStrict(n))throw new c(`ENOENT`,`no such file or directory`,i(e));return t}async lstat(e){let t=N[i(e)];if(t)return t.stat();if(M.handles(e))return this.ephemeralFds.stat(e);if(!this.isAllowed(e))throw new c(`ENOENT`,`no such file or directory`,i(e));let n=i(e),r=this.vfs.dirname(n),a=this.vfs.basename(n),o;if(r===n)o=r;else try{o=await this.vfs.realpath(r)}catch{throw new c(`ENOENT`,`no such file or directory`,n)}let s=o===`/`?`/${a}`:`${o}/${a}`;if(!this.isAllowed(s))throw new c(`ENOENT`,`no such file or directory`,n);return this.vfs.lstat(s)}watch(e,t,n){if(!this.isAllowed(e))throw new c(`EACCES`,`permission denied`,i(e));let r=this.vfs.getWatcher();if(!r)throw new c(`EINVAL`,`no watcher configured`);return r.watch(i(e),t,n)}dirname(e){return this.vfs.dirname(e)}basename(e){return this.vfs.basename(e)}async mount(e,t,n){return this.refuseDescriptorTreeOp(e),this.checkWrite(e),await this.checkParentRealpathEscape(e),this.vfs.mount(e,t,n)}async unmount(e){return this.refuseDescriptorTreeOp(e),this.checkWrite(e),await this.checkParentRealpathEscape(e),this.vfs.unmount(e)}listMounts(){let e=this.vfs.listMounts();return this.includeMounts?e:e.filter(e=>this.isAllowedStrict(e))}getMountIndex(){return this.vfs.getMountIndex()}async refreshMount(e,t){return this.refuseDescriptorTreeOp(e),this.checkWrite(e),this.vfs.refreshMount(e,t)}async dispose(){await this.vfs.dispose()}};function I(e,t){if(e instanceof c){let n=`${e.code}: `,r=e.message;throw r.startsWith(n)&&(r=r.slice(n.length)),e.path&&r.endsWith(` '${e.path}'`)&&(r=r.slice(0,r.length-` '${e.path}'`.length)),new c(e.code,r,t)}throw e}const L=[`ENOENT`,`EEXIST`,`ENOTDIR`,`EISDIR`,`ENOTEMPTY`,`EINVAL`,`EACCES`,`ELOOP`,`EBUSY`,`EFBIG`,`EBADF`,`ENOSYS`,`EIO`];function R(e,t){if(e instanceof c)return e;{let n=e instanceof Error?e.message:String(e);if(n.includes(`maximum size exceeded`)||n.includes(`call stack size exceeded`))return new c(`EIO`,`internal overflow, not storage: ${n} — reload the session`,t)}let n=e?.code;if(typeof n==`string`){let r=n;if(L.includes(r)){let n=e instanceof Error?e.message:String(e);return n.startsWith(`${r}: `)&&(n=n.slice(r.length+2),n=n.replace(/, undefined( '[^']*')?$/,``).replace(/ '[^']*'$/,``)),new c(r,n||r,t)}}let r=e instanceof Error?e.message:String(e);return r.includes(`ENOENT`)?new c(`ENOENT`,`no such file or directory`,t):r.includes(`EEXIST`)?new c(`EEXIST`,`file already exists`,t):r.includes(`ENOTDIR`)?new c(`ENOTDIR`,`not a directory`,t):r.includes(`EISDIR`)?new c(`EISDIR`,`is a directory`,t):r.includes(`ENOTEMPTY`)?new c(`ENOTEMPTY`,`directory not empty`,t):r.includes(`ELOOP`)?new c(`ELOOP`,`too many levels of symbolic links`,t):new c(`EINVAL`,r,t)}function z(e){return e===void 0?`absent`:(e&61440)==16384?`directory`:`file`}function B(e,t){return t===`absent`?!1:e.kind===`missing`||e.kind!==t}function V(e){let t=e?.mode;return typeof t==`number`?t:void 0}function H(e,t,n,r=new Set){let i=new Set(n);if(r.size>0){for(let t of Object.keys(e.entries??{}))for(let e of r)if(t===e||t.startsWith(`${e}/`)){i.add(t);break}}let a=[];for(let n of i){let r=e.entries?.[n],i=t.entries?.[n];if(!r||!i)continue;let o=z(V(r));o!==z(V(i))&&a.push({path:n,ownIsDirectory:o===`directory`})}return a}async function U(e,t){let n=t.split(`/`).filter(Boolean),r=n.pop();if(r===void 0)return null;try{let t=e;for(let e of n)t=await t.getDirectoryHandle(e);return await(await t.getFileHandle(r)).getFile()}catch{return null}}async function W(e,t,n,r){try{return await e.lstat(t)}catch(e){let t=R(e,r);if(t.code===`ENOENT`&&n)return null;throw t}}async function G(e,t,r){let a;try{a=await e.readlink(t)}catch(e){throw R(e,r)}return a.startsWith(`/`)?i(a):i(o(n(t).dir,a))}async function K(e,t,n,r,i,a){let o=t===`/`?`/${n}`:`${t}/${n}`;for(;;){let t=await W(e,o,r,i);if(t===null||!t.isSymbolicLink())return{resolved:o,hops:a};if(++a>10)throw new c(`ELOOP`,`too many symbolic links encountered`,i);o=await G(e,o,i)}}async function q(e,t,n){let r=i(n);if(t(r))return r;let a=r.split(`/`).filter(Boolean),o=`/`,s=0;for(let t=0;t<a.length;t++){let n=await K(e,o,a[t],t===a.length-1,r,s);o=n.resolved,s=n.hops}return o}async function J(e,t,n){return t(n)?n:q(e,t,n)}function Y(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`opfs`}catch{}return`memory`}function X(e,t){let n=e.kind===`directory`?`directory`:`file`;return t?{name:e.name,type:n,...e.size===void 0?{}:{size:e.size},...e.lastModified===void 0?{}:{mtime:e.lastModified},...e.ctime===void 0?{}:{ctime:e.ctime},...e.ino===void 0?{}:{ino:e.ino},...e.uid===void 0?{}:{uid:e.uid},...e.gid===void 0?{}:{gid:e.gid},...e.mode===void 0?{}:{mode:e.mode}}:{name:e.name,type:n}}function Z(e,t){switch(e.kind){case`local`:case`proc`:return{kind:`local`,mountId:e.mountId,idbHandleKey:t};case`hostfs`:return{kind:`hostfs`,mountId:e.mountId,hostPath:e.getHostPath()};default:return{kind:e.kind===`s3`?`s3`:e.kind===`aem`?`aem`:`da`,mountId:e.mountId,source:e.source,profile:e.profile??`default`}}}var Q=class e{lfs;lfsSync;rawLfs=null;rawLfsSync=null;_ready;_readyResolved=!1;backend;mountPoints=new Map;opfsBackendFs=null;opfsHandle=null;mountRoot=``;internalMounts=new Set;watcher=null;dbName;mountSyncChannel=null;mountIndex=new d;static writeChains=new Map;onRepairProgress;constructor(t,n,r,i,a){if(this.dbName=t,this.onRepairProgress=a,this.backend=r===`opfs`?`opfs`:`memory`,this.lfs=this.makeDeferredLfs(),this.lfsSync=this.makeDeferredLfsSync(),this._ready=this.backend===`opfs`?e.initOpfsBackend(this,i,n===!0):e.initMemoryBackend(this,t,n===!0),this._ready.then(()=>{this._readyResolved=!0},()=>{}),typeof BroadcastChannel<`u`)try{this.mountSyncChannel=new BroadcastChannel(`vfs-mount-sync:${t}`),this.mountSyncChannel.onmessage=e=>{let{type:t,path:n,descriptor:r}=e.data??{};if(t===`mount`&&typeof n==`string`&&r)this.reconstructBackendFromDescriptor(r,n).then(e=>{this.mountPoints.set(n,e),e.kind===`local`&&this.mountIndex.registerMount(n,e.getHandle()),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}).catch(()=>{});else if(t===`unmount`&&typeof n==`string`){let e=this.mountPoints.get(n);this.mountPoints.delete(n),this.mountIndex.unregisterMount(n),e?.close(),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}}}catch{}}static async initOpfsBackend(t,n,r){let i=n??await e.acquireOpfsHandle(t.dbName,r);await e.seedOpfsMetadataSidecarIfMissing(i);let[a,{WebAccess:o}]=await Promise.all([import(`./dist-BVrQoiOe.js`).then(e=>e.t),import(`./dist-DmxWHBaB.js`)]);await e.ensureRootMount(a);let s=`/__opfs__/${t.dbName}`,c=e.opfsBackends.get(t.dbName);if(c&&r){try{a.umount(s)}catch{}e.opfsBackends.delete(t.dbName),c=void 0}if(!c){let n=()=>a.resolveMountConfig({backend:o,handle:i,metadata:`/.metadata.json`}),{resolveWithSidecarRepair:r,repairOpfsMetadataSidecar:l}=await import(`./sidecar-repair-CIHuOk7H.js`).then(e=>e.n);try{let e=await t.withWriteLock(()=>l(i,t.onRepairProgress));e?.changed&&console.warn(`[virtual-fs] repaired metadata sidecar before mount (#2146)`,{dbName:t.dbName,kindFixed:e.kindFixed,sizesFixed:e.sizesFixed,dropped:e.dropped,inosReassigned:e.inosReassigned,nlinksFixed:e.nlinksFixed,selfEntryDropped:e.selfEntryDropped})}catch{}let u=await r(n,()=>t.withWriteLock(()=>l(i,t.onRepairProgress)),e=>console.warn(`[virtual-fs] repaired poisoned metadata sidecar; retrying mount`,{dbName:t.dbName,kindFixed:e.kindFixed,sizesFixed:e.sizesFixed,dropped:e.dropped,nlinksFixed:e.nlinksFixed,selfEntryDropped:e.selfEntryDropped}));try{a.mount(s,u)}catch{}c={backendFs:u,refs:0,sidecarDirty:{paths:new Set,prefixes:new Set}},e.opfsBackends.set(t.dbName,c)}c.refs+=1,t.opfsBackendFs=c.backendFs.index?c.backendFs:null,t.opfsHandle=i,t.mountRoot=s,t.rawLfs=a.promises,t.rawLfsSync=a}static async initMemoryBackend(t,n,r){let i=await import(`./dist-BVrQoiOe.js`).then(e=>e.t);await e.ensureRootMount(i);let a=`/__zenfs__/${n}`,o=e.memoryBackends.get(n);if(o&&r){try{i.umount(a)}catch{}e.memoryBackends.delete(n),o=void 0}o||(o={store:i.InMemory.create({label:n}),refs:0},e.memoryBackends.set(n,o)),o.refs+=1;try{i.mount(a,o.store)}catch{}t.mountRoot=a,t.rawLfs=i.promises,t.rawLfsSync=i,t.opfsBackendFs=null,t.opfsHandle=null}static rootMountReady=null;static memoryBackends=new Map;static opfsBackends=new Map;static async ensureRootMount(t){return e.rootMountReady===null&&(e.rootMountReady=(async()=>{await t.configureSingle({backend:t.InMemory,label:`__vfs_root__`})})()),e.rootMountReady}prefix(e){return this.mountRoot?e===`/`?this.mountRoot:this.mountRoot+e:e}unprefix(e){return!this.mountRoot||!e.startsWith(this.mountRoot)?e:e.slice(this.mountRoot.length)||`/`}makeDeferredLfs(){let e=e=>this.prefix(e),t=e=>this.unprefix(e),n=()=>{if(!this.rawLfs)throw Error(`VirtualFS used before init resolved`);return this.rawLfs};return{readFile:(t,r)=>this._readyResolved?n().readFile(e(t),r):this._ready.then(()=>n().readFile(e(t),r)),writeFile:(t,r,i)=>this._readyResolved?n().writeFile(e(t),r,i):this._ready.then(()=>n().writeFile(e(t),r,i)),readdir:t=>this._readyResolved?n().readdir(e(t)):this._ready.then(()=>n().readdir(e(t))),mkdir:(t,r)=>this._readyResolved?n().mkdir(e(t),r):this._ready.then(()=>n().mkdir(e(t),r)),rmdir:t=>this._readyResolved?n().rmdir(e(t)):this._ready.then(()=>n().rmdir(e(t))),unlink:t=>this._readyResolved?n().unlink(e(t)):this._ready.then(()=>n().unlink(e(t))),rename:(t,r)=>this._readyResolved?n().rename(e(t),e(r)):this._ready.then(()=>n().rename(e(t),e(r))),stat:t=>this._readyResolved?n().stat(e(t)):this._ready.then(()=>n().stat(e(t))),lstat:t=>this._readyResolved?n().lstat(e(t)):this._ready.then(()=>n().lstat(e(t))),symlink:(t,r)=>{let i=t.startsWith(`/`)?e(t):t;return this._readyResolved?n().symlink(i,e(r)):this._ready.then(()=>n().symlink(i,e(r)))},readlink:async r=>(this._readyResolved||await this._ready,t(await n().readlink(e(r)))),truncate:async(t,r)=>{this._readyResolved||await this._ready;let i=n();typeof i.truncate==`function`&&await i.truncate(e(t),r)},realpath:async r=>{this._readyResolved||await this._ready;let i=n();return typeof i.realpath==`function`?t(await i.realpath(e(r))):e(r)}}}makeDeferredLfsSync(){let e=e=>this.prefix(e),t=e=>this.unprefix(e);return{readdirSync:t=>{let n=this.rawLfsSync;return n?.readdirSync?n.readdirSync(e(t)):void 0},statSync:t=>{let n=this.rawLfsSync;return n?.statSync?n.statSync(e(t)):void 0},lstatSync:t=>{let n=this.rawLfsSync;return n?.lstatSync?n.lstatSync(e(t)):void 0},readlinkSync:n=>{let r=this.rawLfsSync;return r?.readlinkSync?t(r.readlinkSync(e(n))):void 0}}}static async seedOpfsMetadataSidecarIfMissing(e){let t=`.metadata.json`;try{await e.getFileHandle(t);return}catch(e){if(e?.name!==`NotFoundError`)throw e}let n=await(await e.getFileHandle(t,{create:!0})).createWritable(),r=JSON.stringify({version:1,maxSize:4294967295,entries:{}});await n.write(r),await n.close()}static async acquireOpfsHandle(e,t){let n=navigator.storage;if(!n?.getDirectory)throw new c(`EINVAL`,`OPFS is not available in this environment`);let r=await n.getDirectory();if(t)try{await r.removeEntry(e,{recursive:!0})}catch{}return r.getDirectoryHandle(e,{create:!0})}static _createSyncForTests(t){return new e(t)}static async create(t){let n=t?.dbName??`browser-fs`,r=t?.wipe===!0,i=t?.backend??Y(),a=new e(n,r,i,void 0,t?.onRepairProgress);return await a._ready,r&&await h().catch(()=>{}),a}async flush(){await this.writeOpfsMetadataSidecar()}async writeOpfsMetadataSidecar(){this.backend===`opfs`&&await this.withWriteLock(()=>this.writeOpfsMetadataSidecarUnlocked())}async writeOpfsMetadataSidecarUnlocked(){if(this.backend!==`opfs`)return;let t=this.opfsBackendFs,n=this.opfsHandle;if(!t||!n)return;let r=t.index.toJSON(),i=e.opfsBackends.get(this.dbName)?.sidecarDirty,a=r;if(i){let e=null;try{let t=await n.getFileHandle(`.metadata.json`),r=JSON.parse(await(await t.getFile()).text());r&&typeof r==`object`&&r.entries&&(e=r)}catch{}e&&(await this.auditDirtyKindFlips(r,e,i,n),a=y(e,r,i))}let o=JSON.stringify(v(a)),s=await(await n.getFileHandle(`.metadata.json`,{create:!0})).createWritable();await s.write(o),await s.close(),i&&(i.paths.clear(),i.prefixes.clear())}async auditDirtyKindFlips(e,t,n,r){let i=H(e,t,n.paths,n.prefixes);if(i.length===0)return;let a=b(r),o=this.opfsBackendFs;for(let n of i){let r=await a(n.path).catch(()=>null);if(r!==null&&r.kind!==`missing`&&r.kind===`directory`===n.ownIsDirectory)continue;let i=t.entries?.[n.path];e.entries&&i!==void 0&&(e.entries[n.path]=i);let s=r!==null&&r.kind!==`missing`;s&&(o?.index?.delete(n.path),o?._handles?.delete(n.path)),console.warn(`[virtual-fs] refused to flush in-memory kind flip over sidecar record (#2006)`,{path:n.path,reality:r?.kind??`unverifiable`,evicted:s})}}markSidecarDirty(t,r=`path`){if(this.backend!==`opfs`)return;let a=e.opfsBackends.get(this.dbName)?.sidecarDirty;if(!a)return;let o=i(t);(r===`prefix`?a.prefixes:a.paths).add(o);let{dir:s}=n(o);for(;s!==`/`;)a.paths.add(s),s=n(s).dir}invalidatePaths(e){if(this.backend!==`opfs`||!this.opfsBackendFs)return;let t=this.opfsBackendFs;for(let n of e){let e=i(n);t.index.delete(e),t._handles?.delete(e),this.markSidecarDirty(e)}}async withKindMismatchRetry(e,t){return this.withKindMismatchRetryPaths([e],t)}async withKindMismatchRetryPaths(e,t){try{return await t()}catch(n){let r=n?.code;if(r!==`EISDIR`&&r!==`ENOTDIR`&&r!==`EINVAL`)throw n;for(let n of e)if(await this.reconcileKindMismatch(n).catch(()=>!1))return await t();throw n}}async reconcileKindMismatch(e){if(this.backend!==`opfs`)return!1;let t=this.opfsBackendFs,n=this.opfsHandle;if(!t?.index||!n)return!1;let r=i(e),a=r;try{a=await this.resolveSymlinks(r)}catch{}let o=await b(n)(a),s=z(t.index.get(a)?.mode),c=t._handles?.get(a),l=c?.kind===`directory`?`directory`:c?.kind===`file`?`file`:`absent`,u=B(o,s),d=B(o,l);if(!u&&!d)return!1;if(t.index.delete(a),t._handles?.delete(a),s===`directory`||l===`directory`){let e=`${a}/`;for(let n of[...t.index.keys()])n.startsWith(e)&&t.index.delete(n);if(t._handles)for(let n of[...t._handles.keys()])n.startsWith(e)&&t._handles.delete(n)}return this.markSidecarDirty(a),console.warn(`[virtual-fs] reconciled in-memory kind mismatch (#2006)`,{path:a,reality:o.kind,indexHeld:s,handleHeld:l}),!0}canWrite(e){return!0}setWatcher(e){this.watcher=e}getWatcher(){return this.watcher}async watch(e,t){let n=this.watcher;if(!n)throw new c(`ENOSYS`,`no FsWatcher attached to this VirtualFS`);let r=e.map(e=>n.watch(e,()=>!0,t));return()=>{for(let e of r)e()}}async dispose(){if(this.mountSyncChannel?.close(),this.mountSyncChannel=null,this.watcher?.dispose(),this.watcher=null,this.mountIndex.dispose(),await this.writeOpfsMetadataSidecar(),this.mountRoot){let t=this.backend===`opfs`?e.opfsBackends:e.memoryBackends,n=t.get(this.dbName);if(n&&(--n.refs,n.refs<=0)){t.delete(this.dbName);try{(await import(`./dist-BVrQoiOe.js`).then(e=>e.t)).umount(this.mountRoot)}catch{}}}}readDirSync(e){let t=i(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.readdirSync!=`function`||typeof n.lstatSync!=`function`)return null;try{let e=n.readdirSync(t),r=[];for(let i of e){let e=t===`/`?`/${i}`:`${t}/${i}`;try{let t=n.lstatSync(e),a=t.isSymbolicLink()?`symlink`:t.isDirectory()?`directory`:`file`;r.push(a===`symlink`?{name:i,type:a}:{name:i,type:a,size:t.size,mtime:t.mtimeMs,ctime:t.ctimeMs,...t.ino===void 0?{}:{ino:t.ino},...t.uid===void 0?{}:{uid:t.uid},...t.gid===void 0?{}:{gid:t.gid},mode:t.mode})}catch{}}return r}catch{return null}}statSync(e){let t=i(e);if(this.findMount(t))return null;let r=this.lfsSync;if(typeof r.statSync!=`function`||typeof r.lstatSync!=`function`||typeof r.readlinkSync!=`function`)return null;if(t===`/`)try{let e=r.statSync(t);return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino}}catch{return null}let a=t;for(let e=0;e<=10;e++){let e;try{e=r.lstatSync(a)}catch{return null}if(!e.isSymbolicLink())return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino};let t;try{t=r.readlinkSync(a)}catch{return null}a=t.startsWith(`/`)?i(t):i(o(n(a).dir,t))}return null}lstatSync(e){let t=i(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.lstatSync!=`function`)return null;if(t===`/`)return this.statSync(t);try{let e=n.lstatSync(t);if(e.isSymbolicLink()){let r=n.readlinkSync?n.readlinkSync(t):``;return{type:`symlink`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,isSymlink:!0,symlinkTarget:r,ino:e.ino}}return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino}}catch{return null}}async mount(e,t,r){let a=i(e);if(this.mountPoints.has(a))throw new c(`EEXIST`,`mount point is already mounted`,a);try{if((await this.lstat(a)).type!==`directory`)throw new c(`ENOTDIR`,`mount point must be a directory`,a);if((await this.readDir(a)).length>0)throw new c(`ENOTEMPTY`,`mount point must be empty to avoid shadowing existing files`,a)}catch(e){if(!(e instanceof c)||e.code!==`ENOENT`)throw e}let{dir:o}=n(a);o!==`/`&&await this.mkdir(o,{recursive:!0});try{await this.lfs.mkdir(a)}catch{}if(this.mountPoints.set(a,t),t.kind===`local`){let e=r?.limits??u(r?.env??{});this.mountIndex.registerMount(a,t.getHandle(),e)}let s=Z(t,a);try{this.mountSyncChannel?.postMessage({type:`mount`,path:a,descriptor:s})}catch{}if(this.watcher?.notify([{type:`modify`,path:a,entryType:`directory`}]),t.kind!==`hostfs`)try{let e={targetPath:a,descriptor:s,createdAt:Date.now()},n=t.kind===`local`?t.getHandle():void 0;await f(e,n)}catch{}}async unmount(e){let t=i(e),n=this.mountPoints.get(t);this.mountPoints.delete(t),this.mountIndex.unregisterMount(t);try{this.mountSyncChannel?.postMessage({type:`unmount`,path:t})}catch{}this.watcher?.notify([{type:`modify`,path:t,entryType:`directory`}]),await n?.close();try{await p(t)}catch{}}async reconstructBackendFromDescriptor(e,t){switch(e.kind){case`local`:{let t=await m(e.idbHandleKey);if(!t)throw Error(`no handle stored for ${e.idbHandleKey}`);return l.fromHandle(t,{mountId:e.mountId})}case`hostfs`:{let{HostFsMountBackend:n}=await import(`./backend-hostfs-BxfjZHzO.js`);return new n({targetPath:t,hostPath:e.hostPath,mountId:e.mountId})}case`s3`:{let{S3MountBackend:t,RemoteMountCache:n,makeSignedFetchS3:r}=await import(`./mount-CYtwljpC.js`).then(e=>e.t),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r(e.profile)})}case`da`:{let{DaMountBackend:t,RemoteMountCache:n,makeSignedFetchDa:r}=await import(`./mount-CYtwljpC.js`).then(e=>e.t),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r()})}case`aem`:{let{AemMountBackend:t,RemoteMountCache:n,makeSignedFetchDa:r}=await import(`./mount-CYtwljpC.js`).then(e=>e.t),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r()})}}}listMounts(){let e=[];for(let t of this.mountPoints.keys())this.internalMounts.has(t)||e.push(t);return e}listInternalMounts(){return[...this.internalMounts]}listMountPoints(){let e=[];for(let[t,n]of this.mountPoints)this.internalMounts.has(t)||e.push({path:t,kind:n.kind});return e}getMountBackend(e){let t=i(e);return this.mountPoints.get(t)??null}async mountInternal(e,t){let r=i(e);if(this.mountPoints.has(r))throw new c(`EEXIST`,`mount point is already mounted`,r);let{dir:a}=n(r);a!==`/`&&await this.mkdir(a,{recursive:!0});try{await this.lfs.mkdir(r)}catch{}this.mountPoints.set(r,t),this.internalMounts.add(r),this.watcher?.notify([{type:`modify`,path:r,entryType:`directory`}])}async unmountInternal(e){let t=i(e);if(!this.internalMounts.has(t))throw new c(`ENOENT`,`not an internal mount point`,t);let n=this.mountPoints.get(t);this.mountPoints.delete(t),this.internalMounts.delete(t),this.watcher?.notify([{type:`modify`,path:t,entryType:`directory`}]),await n?.close()}getMountIndex(){return this.mountIndex}async refreshMount(e,t){let n=i(e),r=this.mountPoints.get(n);if(!r)throw new c(`ENOENT`,`not a mount point`,n);let a=await r.refresh(t);return r.kind===`local`&&await this.mountIndex.refreshMount(n,u(t?.env??{})),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}]),a}isPathUnderMount(e){for(let t of this.mountPoints.keys())if(e===t||e.startsWith(t+`/`))return!0;return!1}findMount(e){let t=null;for(let[n,r]of this.mountPoints)(e===n||e.startsWith(n+`/`))&&(!t||n.length>t.mountPath.length)&&(t={mountPath:n,backend:r});return t?e===t.mountPath?{path:t.mountPath,backend:t.backend,relParts:[]}:{path:t.mountPath,backend:t.backend,relParts:e.slice(t.mountPath.length+1).split(`/`).filter(Boolean)}:null}async readFile(e,t){return this.withKindMismatchRetry(e,()=>this.readFileInner(e,t))}async readFileInner(e,t){let n=i(e),r=this.findMount(n);if(r){if(r.relParts.length===0)throw new c(`EISDIR`,`is a directory`,n);let e=r.relParts.join(`/`);try{let n=await r.backend.readFile(e);return(t?.encoding??`utf-8`)===`utf-8`?new TextDecoder(`utf-8`).decode(n):n}catch(e){I(e,n)}}let a=await this.resolveSymlinks(n);try{return(t?.encoding??`utf-8`)===`utf-8`?await this.lfs.readFile(a,{encoding:`utf8`}):await this.lfs.readFile(a)}catch(e){throw R(e,n)}}async readFileRange(e,t,n){let r=i(e);if(!Number.isInteger(t)||!Number.isInteger(n)||t<0||n<t)throw new c(`EINVAL`,`invalid byte range ${t}-${n}`,r);if(t===n)return new Uint8Array;let a=this.findMount(r),o=a?.backend.readFileRange;if(a&&o){if(a.relParts.length===0)throw new c(`EISDIR`,`is a directory`,r);try{return await o.call(a.backend,a.relParts.join(`/`),t,n)}catch(e){I(e,r)}}let s=await this.readFile(r,{encoding:`binary`});return new Uint8Array(s.subarray(t,Math.min(n,s.byteLength)))}async getNativeFile(e){let t=i(e),n=this.findMount(t);if(n){let e=n.backend.getNativeFile;if(!e||n.relParts.length===0)return null;try{return await e.call(n.backend,n.relParts.join(`/`))}catch{return null}}let r=this.opfsHandle;if(!r)return null;try{return await U(r,await this.resolveSymlinks(t))}catch{return null}}async writeFile(e,t,n){return this.withKindMismatchRetry(e,()=>this.writeFileInner(e,t,n))}async writeFileInner(e,t,r){let a=i(e),o=this.findMount(a);if(o){if(o.relParts.length===0)throw new c(`EISDIR`,`is a directory`,a);let e=o.relParts.join(`/`),n=!1;try{await this.stat(a),n=!0}catch{}let r=typeof t==`string`?new TextEncoder().encode(t):t instanceof Uint8Array?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t);try{await o.backend.writeFile(e,r)}catch(e){I(e,a)}this.watcher?.notify([{type:n?`modify`:`create`,path:a,entryType:`file`}]),this.mountIndex.notifyWrite(a);return}let s;try{s=await this.resolveSymlinks(a)}catch{s=a}let l=!1;try{await this.lfs.stat(s),l=!0}catch{}let{dir:u}=n(s);await this.withWriteLock(async()=>{this.markSidecarDirty(s),u!==`/`&&await this.mkdirRecursiveUnlocked(u);let e=typeof t==`string`?new TextEncoder().encode(t).byteLength:(t instanceof Uint8Array,t.byteLength);try{await this.lfs.writeFile(s,t)}catch(e){if(u!==`/`&&e instanceof Error&&e.message.includes(`ENOENT`)){await this.mkdirRecursiveUnlocked(u);try{await this.lfs.writeFile(s,t)}catch(e){throw R(e,a)}}else throw R(e,a)}try{await this.lfs.truncate?.(s,e)}catch(e){throw R(e,a)}}),this.watcher?.notify([{type:l?`modify`:`create`,path:s,entryType:`file`}])}async readDir(e,t){let n=i(e),r=this.findMount(n);return r?this.readDirMounted(n,r,t):this.readDirLocal(n)}async readDirMounted(e,t,n){let r=n?.includeStats===!0?void 0:this.mountIndex.getDirectoryEntries(t.path,e);if(r!==void 0){let t=new Map;for(let e of r)t.set(e.name,{name:e.name,type:e.type});return this.addNestedMountEntries(t,e),[...t.values()]}let i=t.relParts.join(`/`)||`/`,a;try{a=await t.backend.readDir(i,n)}catch(t){I(t,e)}let o=new Map,s=t.backend.listingStatsMatchStat===!0;for(let e of a)o.set(e.name,X(e,s));return this.addNestedMountEntries(o,e),[...o.values()]}async readDirLocal(e){return this.withKindMismatchRetry(e,()=>this.readDirLocalInner(e))}async readDirLocalInner(e){let t=await this.resolveSymlinks(e);try{let e=await this.lfs.readdir(t),n=[];for(let r of e){let e=await this.statDirEntry(t,r);e&&n.push(e)}return n}catch(t){throw R(t,e)}}async statDirEntry(e,t){let n=e===`/`?`/${t}`:`${e}/${t}`;try{let e=await this.lfs.lstat(n);return e.isSymbolicLink()?{name:t,type:`symlink`}:{name:t,type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,...e.ino===void 0?{}:{ino:e.ino},...e.uid===void 0?{}:{uid:e.uid},...e.gid===void 0?{}:{gid:e.gid},mode:e.mode}}catch{return null}}addNestedMountEntries(e,t){let n=t===`/`?`/`:`${t}/`;for(let r of this.mountPoints.keys()){if(r===t||!r.startsWith(n))continue;let i=r.slice(n.length);!i||i.includes(`/`)||e.has(i)||e.set(i,{name:i,type:`directory`})}}async withWriteLock(t){let n=this.dbName,r,i=new Promise(e=>{r=e}),a=e.writeChains.get(n)??Promise.resolve();e.writeChains.set(n,i),await a;try{let e=globalThis.navigator?.locks;return this.backend!==`opfs`||typeof e?.request!=`function`?await t():await e.request(`slicc-vfs:${n}`,()=>t())}finally{r(),e.writeChains.get(n)===i&&e.writeChains.delete(n)}}async mkdirRecursiveUnlocked(e){let t=e.split(`/`).filter(Boolean),n=[],r=``;for(let e of t){r+=`/`+e;try{await this.lfs.mkdir(r),n.push(r)}catch(e){if(e instanceof Error&&!e.message.includes(`EEXIST`))throw R(e,r);try{let e=await this.lfs.lstat(r);if(!e.isDirectory()&&!e.isSymbolicLink())throw new c(`ENOTDIR`,`not a directory`,r)}catch(e){if(e instanceof c&&e.code===`ENOTDIR`)throw e}}}return n}async mkdir(e,t){let n=i(e);if(n===`/`)return;let r=this.findMount(n);if(r){if(r.relParts.length===0)return;let e=r.relParts.join(`/`),t=await this.exists(n);try{await r.backend.mkdir(e)}catch(e){I(e,n)}t||this.watcher?.notify([{type:`create`,path:n,entryType:`directory`}]);return}if(t?.recursive){let e=await this.withWriteLock(()=>(this.markSidecarDirty(n),this.mkdirRecursiveUnlocked(n)));e.length>0&&this.watcher?.notify(e.map(e=>({type:`create`,path:e,entryType:`directory`})))}else await this.withWriteLock(async()=>{this.markSidecarDirty(n);try{await this.lfs.mkdir(n)}catch(e){throw R(e,n)}}),this.watcher?.notify([{type:`create`,path:n,entryType:`directory`}])}async rm(e,t){return this.withKindMismatchRetry(i(e),()=>this.rmInner(e,t))}async rmInner(e,t){let n=i(e),r=this.findMount(n);if(r){if(r.relParts.length===0)throw new c(`EINVAL`,`cannot remove a mount point — use unmount`,n);let e;try{e=(await this.stat(n)).type}catch{}let i=r.relParts.join(`/`);try{await r.backend.remove(i,{recursive:t?.recursive})}catch(e){I(e,n)}this.watcher?.notify([{type:`delete`,path:n,entryType:e}]),this.mountIndex.notifyDelete(n);return}try{let e=await this.lfs.lstat(n);await this.withWriteLock(async()=>{e.isSymbolicLink()?await this.lfs.unlink(n):e.isDirectory()?t?.recursive?await this.rmRecursiveUnlocked(n):await this.lfs.rmdir(n):await this.lfs.unlink(n),this.markSidecarDirty(n,`prefix`),await this.writeOpfsMetadataSidecarUnlocked()})}catch(e){throw R(e,n)}this.watcher?.notify([{type:`delete`,path:n}])}async rmRecursiveUnlocked(e){let t=await this.lfs.readdir(e);for(let n of t){let t=e===`/`?`/${n}`:`${e}/${n}`,r=await this.lfs.lstat(t);r.isSymbolicLink()?await this.lfs.unlink(t):r.isDirectory()?await this.rmRecursiveUnlocked(t):await this.lfs.unlink(t)}await this.lfs.rmdir(e)}async stat(e){return this.withKindMismatchRetry(e,()=>this.statInner(e))}async statInner(e){let t=i(e),n=this.findMount(t);if(n){if(n.relParts.length===0)try{let e=await this.lfs.stat(t);return{type:`directory`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch{return{type:`directory`,size:0,mtime:Date.now(),ctime:Date.now()}}let e=n.relParts.join(`/`);try{let t=await n.backend.stat(e);return{type:t.kind===`directory`?`directory`:`file`,size:t.size,mtime:t.mtime,ctime:t.ctime??t.mtime,...t.ino===void 0?{}:{ino:t.ino},...t.uid===void 0?{}:{uid:t.uid},...t.gid===void 0?{}:{gid:t.gid},...t.mode===void 0?{}:{mode:t.mode}}}catch(e){I(e,t)}}let r=await this.resolveSymlinks(t);try{let e=await this.lfs.stat(r);return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino,uid:e.uid,gid:e.gid,mode:e.mode}}catch(e){throw R(e,t)}}async exists(e){let t=i(e),n=this.findMount(t);if(n){if(n.relParts.length===0)return!0;try{return await this.stat(t),!0}catch{return!1}}try{return await this.stat(t),!0}catch{try{return await this.lfs.lstat(t),!0}catch{return!1}}}async rename(e,t){return this.withKindMismatchRetryPaths([i(e),i(t)],()=>this.renameInner(e,t))}async renameInner(e,t){let n=i(e),r=i(t),a;try{a=(await this.lstat(n)).type}catch{}let o=this.findMount(n);if(o?.backend.rename){let e=this.findMount(r);if(e&&e.backend===o.backend){try{await o.backend.rename(o.relParts.join(`/`),e.relParts.join(`/`))}catch(e){I(e,n)}this.watcher?.notify([{type:`delete`,path:n,entryType:a},{type:`create`,path:r,entryType:a}]),this.mountIndex.notifyRename(n,r);return}}try{await this.withWriteLock(async()=>{this.markSidecarDirty(n,`prefix`),this.markSidecarDirty(r,`prefix`),await this.lfs.rename(n,r),await this.writeOpfsMetadataSidecarUnlocked()})}catch(e){throw R(e,n)}this.watcher?.notify([{type:`delete`,path:n,entryType:a},{type:`create`,path:r,entryType:a}]),this.mountIndex.notifyRename(n,r)}async readTextFile(e){return await this.readFile(e,{encoding:`utf-8`})}async*walk(e,t,n=0){yield*C({mountPoints:this.mountPoints,mountIndex:this.mountIndex,realpath:e=>this.realpath(e),readDir:e=>this.readDir(e),stat:e=>this.stat(e)},e,t,n)}async copyFile(e,t){if((await this.stat(e)).type===`directory`)throw new c(`EISDIR`,`is a directory`,e);let n=await this.readFile(e,{encoding:`binary`});await this.writeFile(t,n)}dirname(e){return n(i(e)).dir}basename(e){return n(i(e)).base}async symlink(e,t){let r=i(t);if(this.findMount(r))throw new c(`EINVAL`,`symlinks not supported on mounted filesystems`,r);let{dir:a}=n(r);await this.withWriteLock(async()=>{a!==`/`&&await this.mkdirRecursiveUnlocked(a);try{await this.lfs.symlink(e,r)}catch(t){if(a!==`/`&&t instanceof Error&&t.message.includes(`ENOENT`)){await this.mkdirRecursiveUnlocked(a);try{await this.lfs.symlink(e,r)}catch(e){throw R(e,r)}}else throw R(t,r)}this.markSidecarDirty(r),await this.writeOpfsMetadataSidecarUnlocked()}),this.watcher?.notify([{type:`create`,path:r,entryType:`symlink`}])}async readlink(e){let t=i(e);try{return await this.lfs.readlink(t)}catch(e){throw R(e,t)}}async lstat(e){let t=i(e);if(this.findMount(t)||t===`/`)return this.stat(t);try{let e=await this.lfs.lstat(t);if(e.isSymbolicLink()){let n=await this.lfs.readlink(t);return{type:`symlink`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,isSymlink:!0,symlinkTarget:n,ino:e.ino,uid:e.uid,gid:e.gid,mode:e.mode}}return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,ino:e.ino,uid:e.uid,gid:e.gid,mode:e.mode}}catch(e){throw R(e,t)}}async realpath(e){return q(this.lfs,e=>this.findMount(e)!==null,e)}resolveSymlinks(e){return J(this.lfs,e=>this.findMount(e)!==null,e)}},$=e({FsError:()=>c,FsWatcher:()=>k,MountIndex:()=>d,RestrictedFS:()=>F,VirtualFS:()=>Q,joinPath:()=>o,normalizePath:()=>i,pathSegments:()=>r,resolveVfsBackendFromEnv:()=>Y,splitPath:()=>n,statsFromDirEntry:()=>s});export{k as i,Q as n,F as r,$ as t};