sliccy 4.11.0 → 4.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/assets/{account-store-CCDY_Gbf.js → account-store-BsFTtkDo.js} +3 -3
- package/dist/ui/assets/{account-store-C-aFdL-c.js → account-store-CQCPAo3-.js} +2 -2
- package/dist/ui/assets/{adobe-BkFpn3tA.js → adobe-BnQkVVxg.js} +1 -1
- package/dist/ui/assets/{adobe-DIWTyc8V.js → adobe-DH3oGYdw.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-BnhJjDnm.js → agent-message-to-chat-CoVpiE-7.js} +1 -1
- package/dist/ui/assets/{anthropic-DOdK4eXe.js → anthropic-BaI_sJYa.js} +3 -3
- package/dist/ui/assets/{anthropic-DVpFSsKH.js → anthropic-UMaEJx-B.js} +3 -3
- package/dist/ui/assets/{apps-DOCc4pA_.js → apps-BEmO-o_P.js} +1 -1
- package/dist/ui/assets/{azure-openai-CKb3xVYx.js → azure-openai--GjF8ZEi.js} +1 -1
- package/dist/ui/assets/{azure-openai-BR_1ckuy.js → azure-openai-Cqwx6emG.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-DXY_e5sT.js → azure-openai-responses-CMjHELHX.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-BPLbXfA6.js → azure-openai-responses-Ds4b3a5B.js} +1 -1
- package/dist/ui/assets/{bedrock-camp-D64i9rke.js → bedrock-camp-9-QEmC9Z.js} +1 -1
- package/dist/ui/assets/{bedrock-camp-wxdDcDkR.js → bedrock-camp-DS1dgU6g.js} +2 -2
- package/dist/ui/assets/{bsh-watchdog-D1jL2lNx.js → bsh-watchdog-CbJuDcM2.js} +1 -1
- package/dist/ui/assets/{connect-surface-DZMwF-UL.js → connect-surface-CBnfGpjO.js} +1 -1
- package/dist/ui/assets/{context-compaction-DJF_qJZJ.js → context-compaction-CFWyOzX1.js} +1 -1
- package/dist/ui/assets/dip-BI1zdXOs.js +1 -0
- package/dist/ui/assets/{dist-DPDyNXIi.js → dist-B1qdTytm.js} +1 -1
- package/dist/ui/assets/{dist-CFqZlWdk.js → dist-BSAyaQus.js} +1 -1
- package/dist/ui/assets/dist-BmWy99kl.js +4 -0
- package/dist/ui/assets/{es-HTpKjTVx.js → es-BSfGyN8v.js} +1 -1
- package/dist/ui/assets/event-stream-BJI_nGaK.js +1 -0
- package/dist/ui/assets/{fs-DsawM53C.js → fs-C4yl2d9h.js} +1 -1
- package/dist/ui/assets/{fs-jvoHJh12.js → fs-CC3wCrde.js} +2 -2
- package/dist/ui/assets/{github-3yDgsLUn.js → github-Cki7nKmi.js} +1 -1
- package/dist/ui/assets/{github-DOQNU38h.js → github-DFrs5ruR.js} +2 -2
- package/dist/ui/assets/{github-copilot-DQsLJ7c3.js → github-copilot-C1ep4OP2.js} +1 -1
- package/dist/ui/assets/{github-copilot-Nxh2jaUR.js → github-copilot-oDcZajDU.js} +1 -1
- package/dist/ui/assets/{google-syj0sMxL.js → google-CEOynCO5.js} +1 -1
- package/dist/ui/assets/{google-shared-BmpiIO3m.js → google-shared-CeGHiQ17.js} +1 -1
- package/dist/ui/assets/{google-vertex-CzAYHmbM.js → google-vertex-C7BX8ATF.js} +1 -1
- package/dist/ui/assets/{google-vertex-uZ8N77ah.js → google-vertex-Dbruz2uo.js} +1 -1
- package/dist/ui/assets/{google-Dl6In6_I.js → google-yB8wbiw4.js} +1 -1
- package/dist/ui/assets/{hear-DcZvl_Wd.js → hear-BQpvCzbw.js} +1 -1
- package/dist/ui/assets/{kernel-worker-DBXLYgJW.js → kernel-worker-COIEwA3O.js} +18 -18
- package/dist/ui/assets/{kokoro-engine-BOEXqGye.js → kokoro-engine-LKLpwLMy.js} +1 -1
- package/dist/ui/assets/{lick-ws-bridge-CHod7otq.js → lick-ws-bridge-BWmWXmfH.js} +1 -1
- package/dist/ui/assets/{local-llm-ChFsSrUW.js → local-llm-BpmQ1MMI.js} +1 -1
- package/dist/ui/assets/{main-IQQ5Nnk5.js → main-D4_0Qt4c.js} +3 -3
- package/dist/ui/assets/{mistral-pCZ0Zm3T.js → mistral-BzfpfZhh.js} +1 -1
- package/dist/ui/assets/{mistral-DGtcP1BQ.js → mistral-CJVvXrOL.js} +1 -1
- package/dist/ui/assets/{mount-D5n9iGLx.js → mount-CcTj11tf.js} +2 -2
- package/dist/ui/assets/{mount-5ww3n9JE.js → mount-D6SpPk1r.js} +1 -1
- package/dist/ui/assets/{new-session-DoLjWJ9Q.js → new-session-BrzupjSx.js} +1 -1
- package/dist/ui/assets/{oauth-bootstrap-Deu9mRaZ.js → oauth-bootstrap-DRU7eZqQ.js} +2 -2
- package/dist/ui/assets/{openai-codex-BLb27vWP.js → openai-codex-5exfNP-1.js} +1 -1
- package/dist/ui/assets/{openai-codex-Cmvn_HCE.js → openai-codex-D1QstjxU.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-Dpn8XW3b.js → openai-codex-responses-CLrAtex4.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-C8xgMZBo.js → openai-codex-responses-Cq5XDqVc.js} +1 -1
- package/dist/ui/assets/{openai-completions-CoYClIFl.js → openai-completions-CyC3I8Ls.js} +2 -2
- package/dist/ui/assets/{openai-completions-Dry_mhhJ.js → openai-completions-DLI0t_lj.js} +2 -2
- package/dist/ui/assets/openai-responses-ANbRIlpa.js +1 -0
- package/dist/ui/assets/openai-responses-D3BggRn6.js +1 -0
- package/dist/ui/assets/{openai-responses-shared-Ct3FUe7d.js → openai-responses-shared-CM2vkuNI.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-D4pZ3bEY.js → openai-responses-shared-GJLWYx-P.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-BUWOt0i6.js → panel-rpc-handlers-CTfK_05R.js} +1 -1
- package/dist/ui/assets/{provider-7oSOCmM7.js → provider-Bz9SWQgu.js} +1 -1
- package/dist/ui/assets/{provider-HGx81Qlv.js → provider-VtoTPKkA.js} +2 -2
- package/dist/ui/assets/provider-store-access-7Hcqv5Xt.js +1 -0
- package/dist/ui/assets/provider-store-access-DsmlbFAV.js +1 -0
- package/dist/ui/assets/{providers-AexlAOMZ.js → providers-C6yHgQYK.js} +1 -1
- package/dist/ui/assets/{quick-llm-DIqCmO5T.js → quick-llm-DpbDYQvU.js} +1 -1
- package/dist/ui/assets/session-freezer-aIbhhwjG.js +1 -0
- package/dist/ui/assets/setup-sudo-D2Kx4E1z.js +1 -0
- package/dist/ui/assets/{speak-BMbUxhhP.js → speak-BaKhhiBu.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-BAG5nNMk.js → sprinkle-manager-CZmzgqNx.js} +1 -1
- package/dist/ui/assets/{store-DXl9FLRj.js → store-DArwj9HG.js} +1 -1
- package/dist/ui/assets/{sudo-DfDQ3btG.js → sudo-BdOdMLg0.js} +1 -1
- package/dist/ui/assets/transform-messages-BjP6vDPY.js +1 -0
- package/dist/ui/assets/{transformers-env-CediyHLq.js → transformers-env-GdKbK31I.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-8rFeGeaS.js → tray-leave-runtime-DK5OzgsI.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-CypKvLWz.js → upgrade-detection-BDUrUlcF.js} +1 -1
- package/dist/ui/assets/{wc-attach-y4oxJXqf.js → wc-attach-BLDharFn.js} +2 -2
- package/dist/ui/assets/{wc-detached-D5JfxsJ6.js → wc-detached-CeMTHgOq.js} +1 -1
- package/dist/ui/assets/{wc-extension-DeN0vixb.js → wc-extension-B7zz24A-.js} +2 -2
- package/dist/ui/assets/{wc-live-izAaMvVH.js → wc-live-BCM49lWd.js} +5 -5
- package/dist/ui/assets/{wc-nav-CUhJJYMK.js → wc-nav-CtwFXc1c.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-DNvv8to7.js → wc-onboarding-kPr1QmJD.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-Df8DLXsr.js → wc-placeholder-Bg8WOXwa.js} +2 -2
- package/dist/ui/assets/{wc-settings-D1xW1QqY.js → wc-settings-3zZYo6Tq.js} +2 -2
- package/dist/ui/assets/{wc-shell-D1IeM326.js → wc-shell-B72d5hwo.js} +23 -3
- package/dist/ui/assets/{wc-sprinkles-Nbv0KCDF.js → wc-sprinkles-DrCsxX3z.js} +2 -2
- package/dist/ui/assets/{wc-tray-DARqGvoG.js → wc-tray-Cml9CUrH.js} +3 -3
- package/dist/ui/assets/{xai-grok-BxF5pBJK.js → xai-grok-CTb_0Daa.js} +1 -1
- package/dist/ui/assets/{xai-grok-C9l7vdfS.js → xai-grok-Cp-9Yhbu.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/ui/packages/webapp/index.html +6 -6
- package/package.json +2 -1
- package/dist/ui/assets/dip-CB9EnHlp.js +0 -1
- package/dist/ui/assets/dist-CSwuvPa6.js +0 -4
- package/dist/ui/assets/event-stream-Cs43PhOB.js +0 -1
- package/dist/ui/assets/openai-responses-Bmov8oh7.js +0 -1
- package/dist/ui/assets/openai-responses-DqkDb9a5.js +0 -1
- package/dist/ui/assets/provider-store-access-SifF9-zj.js +0 -1
- package/dist/ui/assets/provider-store-access-rgP48gFM.js +0 -1
- package/dist/ui/assets/session-freezer-BVuI0vIr.js +0 -1
- package/dist/ui/assets/setup-sudo-BDH0Km05.js +0 -1
- package/dist/ui/assets/transform-messages-C1X1O3BY.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import{o as t}from"./kernel-worker-
|
|
1
|
+
import{t as e}from"./logger-LESFN7Hj.js";import{o as t}from"./kernel-worker-COIEwA3O.js";const n=t(``).toString(),r=e(`bsh-watchdog`);var i=class{transport;browserAPI;fs;scriptCatalog;running=!1;executing=new Set;constructor(e){if(!e.transport&&!e.browserAPI)throw Error(`BshWatchdog requires either transport or browserAPI`);if(!e.scriptCatalog)throw Error(`BshWatchdog requires a ScriptCatalog`);this.browserAPI=e.browserAPI,this.transport=e.transport??e.browserAPI.getTransport(),this.fs=e.fs,this.scriptCatalog=e.scriptCatalog}async start(){if(this.running)return;this.running=!0,this.transport.on(`Page.frameNavigated`,this.onFrameNavigated),this.browserAPI&&this.browserAPI.setSessionChangeCallback((e,t)=>{t!==this.transport&&this.setTransport(t)});let e;try{e=(await this.scriptCatalog.getBshEntries()).length}catch(e){r.warn(`BSH watchdog startup discovery failed`,{error:e instanceof Error?e.message:String(e)})}r.info(`BSH watchdog started`,e===void 0?void 0:{scriptCount:e})}stop(){this.running&&(this.running=!1,this.transport.off(`Page.frameNavigated`,this.onFrameNavigated),this.browserAPI&&this.browserAPI.setSessionChangeCallback(void 0),this.executing.clear(),r.info(`BSH watchdog stopped`))}setTransport(e){e!==this.transport&&(this.transport.off(`Page.frameNavigated`,this.onFrameNavigated),this.transport=e,this.running&&this.transport.on(`Page.frameNavigated`,this.onFrameNavigated),r.info(`BSH watchdog transport swapped`))}async discover(){this.scriptCatalog.invalidateBsh(),await this.scriptCatalog.getBshEntries()}async getEntries(){return this.scriptCatalog.getBshEntries()}onFrameNavigated=e=>{let t=e.frame;if(t?.parentId||!t?.url)return;let n=t.url,i=e.sessionId;if(!(!n.startsWith(`http://`)&&!n.startsWith(`https://`))){if(!i){r.warn(`BSH watchdog: no sessionId in Page.frameNavigated params, skipping`,{url:n});return}this.scriptCatalog.findMatchingBshScripts(n).then(e=>{if(e.length!==0)for(let t of e){let e=`${t.path}::${n}`;this.executing.has(e)||(this.executing.add(e),r.info(`BSH watchdog executing script`,{script:t.path,url:n}),this.executeInTargetPage(t.path,n,i).then(()=>{r.info(`BSH script completed`,{script:t.path,url:n})}).catch(e=>{r.error(`BSH script execution error`,{script:t.path,url:n,error:e instanceof Error?e.message:String(e)})}).finally(()=>{this.executing.delete(e)}))}}).catch(e=>{r.error(`BSH discovery failed`,{url:n,error:e instanceof Error?e.message:String(e)})})}};async executeInTargetPage(e,t,i){let a=await this.fs.readFile(e),o=typeof a==`string`?a:new TextDecoder().decode(a),s=`(async () => {
|
|
2
2
|
const __requireSpecifiers = (function() {
|
|
3
3
|
const re = /require\\s*\\(\\s*['"]([^'"]+)['"]\\s*\\)/g;
|
|
4
4
|
const code = ${JSON.stringify(o)};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{C as e,P as t,d as n,f as r}from"./account-store-
|
|
1
|
+
import{C as e,P as t,d as n,f as r}from"./account-store-BsFTtkDo.js";import{i}from"./main-D4_0Qt4c.js";var a=`slicc_cloud_model_catalog`,o=`adobe`;function s(t){if(t===o)return!1;let n=e(t);return!(n.hidden||n.onOAuthLoginIntercepted)}function c(){try{let e=r().map(e=>({providerId:e.providerId,providerName:e.providerName,models:e.models.map(e=>({id:e.id,name:e.name}))}));localStorage.setItem(a,JSON.stringify(e))}catch{}}async function l(r){for(;r.firstChild;)r.removeChild(r.firstChild);r.className=`connect-surface`;let a=document.createElement(`h1`);a.className=`connect-surface__title`,a.textContent=`Connect providers`,r.appendChild(a);let l=document.createElement(`p`);l.className=`connect-surface__desc`,l.textContent=`Log in or add API keys for the providers your cone should use, then click Done to return to the dashboard.`,r.appendChild(l);let u=document.createElement(`div`);u.className=`connect-surface__accounts`,r.appendChild(u);function d(){for(;u.firstChild;)u.removeChild(u.firstChild);let r=n().filter(e=>e.providerId!==o);if(r.length===0){let e=document.createElement(`div`);e.className=`connect-surface__empty`,e.textContent=`No providers connected yet.`,u.appendChild(e)}else{let n=document.createElement(`div`);n.className=`connect-surface__accounts-list`;for(let i of r){let r=e(i.providerId),a=document.createElement(`div`);a.className=`connect-surface__account-row`;let o=document.createElement(`div`);o.className=`connect-surface__account-info`;let s=document.createElement(`div`);s.className=`connect-surface__account-name`,s.textContent=r.name,o.appendChild(s);let l=document.createElement(`div`);l.className=`connect-surface__account-detail`,i.userName?l.textContent=i.userName:i.accessToken?l.textContent=`Logged in`:l.textContent=i.apiKey?`API key set`:`No credentials`,o.appendChild(l),a.appendChild(o);let u=document.createElement(`button`);u.className=`connect-surface__remove-btn`,u.textContent=`Remove`,u.onclick=async()=>{await t(i.providerId),c(),d()},a.appendChild(u),n.appendChild(a)}u.appendChild(n)}let a=document.createElement(`button`);a.className=`connect-surface__add-btn`,a.textContent=r.length===0?`Add provider`:`Manage providers`,a.onclick=async()=>{await i({startInAddAccount:!0,providerFilter:s})&&(c(),d())},u.appendChild(a)}d(),c();let f=document.createElement(`div`);f.className=`connect-surface__footer`;let p=document.createElement(`button`);if(p.className=`connect-surface__done-btn`,p.textContent=`Done — return to dashboard`,p.onclick=()=>{c(),window.close()},f.appendChild(p),r.appendChild(f),!document.getElementById(`connect-surface-style`)){let e=document.createElement(`style`);e.id=`connect-surface-style`,e.textContent=`
|
|
2
2
|
.connect-surface {
|
|
3
3
|
padding: 2rem;
|
|
4
4
|
max-width: 560px;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./dist-
|
|
1
|
+
import{t as e}from"./dist-BmWy99kl.js";import{t}from"./logger-DDBAeTLF.js";function n(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function r(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${n(e.size)})`}function i(e,t=`The original file lives on a remote runtime and is not accessible here.`){return e?.length?e.map(e=>{if(!e.path)return{...e};let{path:n,...r}=e;return e.kind===`image`&&e.data||e.kind===`text`&&e.text!==void 0?r:{...r,error:r.error??t}}):[]}t(`context-compaction`);function a(e){let t=[];for(let n of e){let e=n;switch(e.role){case`user`:t.push(`<user>\n${o(e.content)}\n</user>`);break;case`assistant`:t.push(`<assistant>\n${o(e.content)}\n</assistant>`);break;case`toolResult`:{let n=e.toolName??`tool`;t.push(`<tool-result name="${n}">\n${o(e.content)}\n</tool-result>`);break}case`bashExecution`:t.push(`<bash>\n$ ${e.command??``}\n${e.output??``}\n</bash>`);break;case`branchSummary`:case`compactionSummary`:t.push(`<prior-summary>\n${e.summary??``}\n</prior-summary>`);break;default:t.push(`<${e.role}>\n${o(e.content)}\n</${e.role}>`)}}return t.join(`
|
|
2
2
|
|
|
3
3
|
`)}function o(e){if(typeof e==`string`)return e;if(!Array.isArray(e))return``;let t=[];for(let n of e){let e=n;e.type===`text`&&e.text?t.push(e.text):e.type===`thinking`&&e.thinking?t.push(`[thinking] ${e.thinking}`):e.type===`toolCall`?t.push(`[tool-call ${e.name??`?`}] ${JSON.stringify(e.arguments??{})}`):e.type===`image`&&t.push(`[image]`)}return t.join(`
|
|
4
4
|
`)}var s=`From the conversation above, extract durable memories worth persisting to a global memory file shared across future sessions.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{m as e}from"./wc-live-BCM49lWd.js";export{e as setDipExecHandler};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as e,D as t,E as n,O as r,S as i,T as a,_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,i as m,k as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,u as C,w,x as T}from"./dist-
|
|
1
|
+
import{C as e,D as t,E as n,O as r,S as i,T as a,_ as o,a as s,b as c,c as l,d as u,f as d,g as f,h as p,i as m,k as h,l as g,m as _,n as v,o as y,p as b,r as x,s as S,u as C,w,x as T}from"./dist-BSAyaQus.js";function E(e){switch(e.name){case`TypeMismatchError`:return`EPERM`;case`IndexSizeError`:case`HierarchyRequestError`:case`InvalidCharacterError`:case`InvalidStateError`:case`SyntaxError`:case`NamespaceError`:case`ConstraintError`:case`VersionError`:case`URLMismatchError`:case`InvalidNodeTypeError`:return`EINVAL`;case`WrongDocumentError`:return`EXDEV`;case`NoModificationAllowedError`:case`InvalidModificationError`:case`InvalidAccessError`:case`SecurityError`:case`NotAllowedError`:return`EACCES`;case`NotFoundError`:return`ENOENT`;case`NotSupportedError`:return`ENOTSUP`;case`InUseAttributeError`:return`EBUSY`;case`NetworkError`:return`ENETDOWN`;case`AbortError`:return`EINTR`;case`QuotaExceededError`:return`ENOSPC`;case`TimeoutError`:return`ETIMEDOUT`;case`ReadOnlyError`:return`EROFS`;default:return`EIO`}}function D(e,t){if(e instanceof a)return e;let n=new a(e instanceof DOMException?w[E(e)]:w.EIO,e.message);return n.stack=e.stack,Error.captureStackTrace?.(n,D),n.cause=e.cause,n}function O(e){return typeof e==`object`&&!!e&&e.constructor.name==`SharedArrayBuffer`}function k(e){return e instanceof ArrayBuffer?e.resizable:O(e)?e.growable:!1}function A(e,t){return e.kind==t}var j=class extends x(m){async _loadHandles(e,t){for await(let[n,r]of t.entries()){let t=_(e,n);this._handles.set(t,r),A(r,`directory`)&&await this._loadHandles(t,r)}}async _loadMetadata(e){if(this._handles.set(`/`,this.root),await this._loadHandles(`/`,this.root),e){let t=await(await(await this.get(`file`,e)).getFile()).text(),n=JSON.parse(t);this.index.fromJSON(n);return}for(let[e,t]of this._handles){if(A(t,`file`)){let{lastModified:n,size:r}=await t.getFile();this.index.set(e,new C({mode:420|o,size:r,mtimeMs:n}));continue}if(!A(t,`directory`))throw n(`EIO`,`Invalid handle`);this.index.set(e,new C({mode:511|p,size:0}))}}constructor(e,t=!1){super(2003133025,`webaccessfs`),this.root=e,this.disableHandleCache=t,this._handles=new Map,this._sync=s.create({label:`accessfs-cache`}),this.attributes.set(`no_buffer_resize`,!0),t&&this.attributes.set(`no_handle_cache`,!0)}async stat(e){try{return await super.stat(e)}catch(t){if(t.code!=`ENOENT`)throw t;let n=await this.get(null,e),r=new C;if(A(n,`file`)){let e=await n.getFile();r.update({mode:420|o,size:e.size,mtimeMs:e.lastModified})}else r.update({mode:p|511,size:0});return this.index.set(e,r),r}}async readdir(e){let t=await this.get(`directory`,e);return await Array.fromAsync(t.keys())}async remove(e){let t=await this.get(`directory`,b(e));for(let t of this._handles.keys())b(t)==e&&this._handles.delete(t);this._handles.delete(e),await t.removeEntry(d(e),{recursive:!0}).catch(t=>h(D(t,e)))}removeSync(){throw T(n(`ENOSYS`))}async read(e,t,r,i){if(i<=r)return;let a=await(await(await this.get(`file`,e)).getFile()).arrayBuffer();if(a.byteLength<i-r)throw c(n(`EIO`,[`Unexpected mismatch in file data size. This should not happen.`,`tried to read ${i-r} bytes but the file is ${a.byteLength} bytes.`,`path: ${e}`].join(`
|
|
2
2
|
`+` `.repeat(24))));t.set(new Uint8Array(a,r,i-r))}async write(e,t,r){if(k(t.buffer)||O(t.buffer)){let e=new Uint8Array(new ArrayBuffer(t.byteLength),t.byteOffset,t.byteLength);e.set(t),t=e}let i=this.index.get(e);if(!i)throw n(`ENOENT`);let a=(i.mode&f)==p,o;try{o=await this.get(a?`directory`:`file`,e)}catch{o=await(await this.get(`directory`,b(e)))[a?`getDirectoryHandle`:`getFileHandle`](d(e),{create:!0}).catch(t=>h(D(t,e))),this.disableHandleCache||this._handles.set(e,o)}if(a)return;if(A(o,`directory`)){T(n(`EIO`,`Mismatch in entry kind on write`));return}let s=await o.createWritable({keepExistingData:!0});try{r<i.size&&await s.seek(r)}catch{await s.write({type:`seek`,position:r})}await s.write(t),await s.close();let{size:c,lastModified:l}=await o.getFile();i.update({size:c,mtimeMs:l}),this.index.set(e,i)}async writeFile(e,t){return this.write(e,t,0)}async _mkdir(e){let t=await(await this.get(`directory`,b(e))).getDirectoryHandle(d(e),{create:!0}).catch(t=>h(D(t,e)));this.disableHandleCache||this._handles.set(e,t)}async get(e=null,t){let r=this._handles.get(t);if(!this.disableHandleCache&&r){if(e&&!A(r,e))throw n(e==`directory`?`ENOTDIR`:`EISDIR`);return r}if(t==`/`)return this.root;let i=t.slice(1).split(`/`),a=this.root;for(let e=0;e<i.length-1;++e)a=await a.getDirectoryHandle(i[e]).catch(e=>h(D(e,t)));try{let n=await a[e==`file`?`getFileHandle`:`getDirectoryHandle`](i.at(-1));return this.disableHandleCache||this._handles.set(t,n),n}catch(r){if(r.name!=`TypeMismatchError`)throw D(r,t);if(e===null){let e=await a.getFileHandle(i.at(-1)).catch(e=>h(D(e,t)));return this.disableHandleCache||this._handles.set(t,e),e}else throw n(e==`file`?`EISDIR`:`ENOTDIR`)}}};const M={name:`WebAccess`,options:{handle:{type:`object`,required:!0},metadata:{type:`string`,required:!1},disableHandleCache:{type:`boolean`,required:!1}},async create(e){let t=new j(e.handle,e.disableHandleCache);return await t._loadMetadata(e.metadata),t}};function N(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=t=>{t.preventDefault(),n(D(e.error))}})}var P=class extends l{async(e){this.asyncDone=this.asyncDone.then(()=>e)}constructor(e,t){super(t),this.tx=e,this.store=t,this.asyncDone=Promise.resolve(),this._idb=e.objectStore(t.name)}async keys(){return(await N(this._idb.getAllKeys())).map(Number)}async get(e){let t=await N(this._idb.get(e));return t&&this.store.cache.set(e,new Uint8Array(t)),t}getSync(e,t,n){if(!this.store.cache.has(e))return;let r=new Uint8Array(this.store.cache.get(e));return n??=r.byteLength,r.subarray(t,n)}async set(e,t){this.store.cache.set(e,new Uint8Array(t)),await N(this._idb.put(t,e))}setSync(e,t){this.async(this.set(e,t))}remove(e){return this.store.cache.delete(e),N(this._idb.delete(e))}removeSync(e){this.store.cache.delete(e),this.async(this.remove(e))}async commit(){await this.asyncDone;let{promise:e,resolve:t,reject:n}=Promise.withResolvers();return this.tx.oncomplete=()=>t(),this.tx.onerror=()=>n(D(this.tx.error)),this.tx.commit(),e}async abort(){await this.asyncDone;let{promise:e,resolve:t,reject:n}=Promise.withResolvers();return this.tx.onabort=()=>t(),this.tx.onerror=()=>n(D(this.tx.error)),this.tx.abort(),e}};async function F(t,n=globalThis.indexedDB){let r=n.open(t);return r.onupgradeneeded=()=>{let n=r.result;n.objectStoreNames.contains(t)&&(e(`Found unexpected object store: `+t),n.deleteObjectStore(t)),n.createObjectStore(t)},await N(r)}var I=class{constructor(e){this.db=e,this.cache=new Map}sync(){return Promise.resolve()}get name(){return this.db.name}transaction(){return new P(this.db.transaction(this.name,`readwrite`),this)}};const L=new WeakMap;async function R(e){if(!(e instanceof IDBFactory))return!1;try{return(await N(e.open(`__zenfs_test`))).close(),!0}catch{return!1}finally{e?.deleteDatabase(`__zenfs_test`)}}const z={name:`IndexedDB`,options:{storeName:{type:`string`,required:!1},idbFactory:{type:`object`,required:!1}},async isAvailable({idbFactory:e=globalThis.indexedDB}){if(L.has(e))return L.get(e);let t=R(e);return L.set(e,t),t},async create(e){let t=new I(await F(e.storeName||`zenfs`,e.idbFactory)),n=new S(t);if(e?.disableAsyncCache)return i(`Async preloading disabled for IndexedDB`),n;let r=t.transaction();for(let e of await r.keys())await r.get(e);return n}};var B=class{get name(){return V.name}constructor(e){this.storage=e}clear(){this.storage.clear()}clearSync(){this.storage.clear()}async sync(){}transaction(){return new y(this)}keys(){return Object.keys(this.storage).map(e=>Number(e))}get(e){let t=this.storage.getItem(e.toString());if(typeof t==`string`)return r(t)}set(e,r){try{this.storage.setItem(e.toString(),t(r))}catch{throw n(`ENOSPC`)}}delete(e){try{this.storage.removeItem(e.toString())}catch(t){throw n(`EIO`,`Unable to delete '${e}': ${t}`)}}};const V={name:`WebStorage`,options:{storage:{type:`object`,required:!1}},isAvailable(e){return(e?.storage??globalThis.localStorage)instanceof globalThis.Storage},create({storage:e=globalThis.localStorage}){return new S(new B(e))}};function H(e){let t={};for(let n of u){let r=e.getAttribute(n);r!=null&&(t[n]=parseInt(r,16))}return new C(t)}function U(e,t){for(let n of Object.keys(t))!(n in u)||t[n]===void 0||e.setAttribute(n,t[n].toString(16))}function W(e,t=!1){let n;try{let r=t?e.textContent:e.getAttribute(`paths`);n=JSON.parse(r||`[]`)}catch{n=[]}return n}var G=class extends v(g){constructor(e=new DOMParser().parseFromString(`<fs></fs>`,`application/xml`).documentElement){super(544763244,`xmltmpfs`),this.root=e;try{this.mkdirSync(`/`,{uid:0,gid:0,mode:511})}catch(e){let t=e;if(t.code!=`EEXIST`)throw t}}renameSync(e,t){let n=this.get(`rename`,e);this.remove(`rename`,n,e),this.add(`rename`,n,t)}statSync(e){return H(this.get(`stat`,e))}createFileSync(e,t){let n=this.statSync(b(e)),r=new C({mode:t.mode|o,uid:n.mode&2048?n.uid:t.uid,gid:n.mode&1024?n.gid:t.gid});return this.create(`createFile`,e,r),r}unlinkSync(e){let t=this.get(`unlink`,e);if(H(t).mode&16384)throw n(`EISDIR`);this.remove(`unlink`,t,e)}rmdirSync(e){let t=this.get(`rmdir`,e);if(t.textContent?.length)throw n(`ENOTEMPTY`);if(!(H(t).mode&16384))throw n(`ENOTDIR`);this.remove(`rmdir`,t,e)}mkdirSync(e,t){let n=this.statSync(b(e)),r=new C({mode:t.mode|p,uid:n.mode&2048?n.uid:t.uid,gid:n.mode&1024?n.gid:t.gid});return this.create(`mkdir`,e,r).textContent=`[]`,r}readdirSync(e){let t=this.get(`readdir`,e);if(!(H(t).mode&16384))throw n(`ENOTDIR`);try{return JSON.parse(t.textContent)}catch(e){throw n(`EIO`,`Invalid directory listing: `+e)}}linkSync(e,t){let n=this.get(`link`,e);this.add(`link`,n,t)}touchSync(e,t){U(this.get(`touch`,e),t)}syncSync(){}readSync(e,t,n,i){let a=r(this.get(`read`,e).textContent.slice(n,i));t.set(a)}writeSync(e,n,r){let i=this.get(`write`,e),a=t(n),o=i.textContent.slice(r+a.length);i.textContent=i.textContent.slice(0,r)+a+o}toString(){return new XMLSerializer().serializeToString(this.root)}get(e,t){let r=this.root.children;if(!r)throw n(`EIO`);for(let e=0;e<r.length;e++)if(W(r[e]).includes(t))return r[e];throw n(`ENOENT`)}create(e,t,r){if(this.existsSync(t))throw n(`EEXIST`);let i=document.createElement(`file`);return this.add(e,i,t),U(i,new C({...r,uid:r.mode})),this.root.append(i),i}add(e,t,n,r=!1){let i=W(t,r);if(i.push(n),r){t.textContent=JSON.stringify(i);return}if(t.setAttribute(`paths`,JSON.stringify(i)),t.setAttribute(`nlink`,i.length.toString(16)),n!=`/`){let t=this.get(e,b(n));this.add(e,t,d(n),!0)}}remove(e,t,n,r=!1){let i=W(t,r),a=i.indexOf(n);if(a!=-1){if(i.splice(a,1),r){t.textContent=JSON.stringify(i);return}if(i.length?(t.setAttribute(`paths`,JSON.stringify(i)),t.setAttribute(`nlink`,i.length.toString(16))):t.remove(),n!=`/`){let t=this.get(e,b(n));this.remove(e,t,d(n),!0)}}}};const K={name:`XML`,options:{root:{type:`object`,required:!1}},isAvailable(){return!0},create(e){return new G(e.root)}};export{z as IndexedDB,I as IndexedDBStore,P as IndexedDBTransaction,M as WebAccess,j as WebAccessFS,V as WebStorage,B as WebStorageStore,K as XML,G as XMLFS};
|