nuxt-files-sdk 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/config/evaluate.js +149 -0
  2. package/dist/config/load.js +22 -40
  3. package/dist/config/merge.d.ts +1 -2
  4. package/dist/config/merge.js +0 -2
  5. package/dist/config/prepare.js +58 -0
  6. package/dist/config/prune.js +14 -13
  7. package/dist/config.d.ts +11 -6
  8. package/dist/config.js +0 -2
  9. package/dist/devtools/auth.js +0 -2
  10. package/dist/devtools/client/app.js +2 -2
  11. package/dist/devtools/client/index.html +4 -0
  12. package/dist/devtools/devframe.js +1 -3
  13. package/dist/devtools/diagnostics.d.ts +1 -2
  14. package/dist/devtools/diagnostics.js +0 -2
  15. package/dist/devtools/enabled.d.ts +1 -2
  16. package/dist/devtools/enabled.js +0 -2
  17. package/dist/devtools/files-read.d.ts +2 -3
  18. package/dist/devtools/files-read.js +0 -2
  19. package/dist/devtools/files-write.d.ts +2 -3
  20. package/dist/devtools/files-write.js +0 -2
  21. package/dist/devtools/files.js +7 -10
  22. package/dist/devtools/index.js +24 -26
  23. package/dist/devtools/nuxt-v3-handler.d.ts +1 -2
  24. package/dist/devtools/nuxt-v3-handler.js +0 -2
  25. package/dist/devtools/nuxt-v3.js +1 -3
  26. package/dist/devtools/nuxt-v4.js +4 -7
  27. package/dist/devtools/paths.js +8 -0
  28. package/dist/devtools/snapshot.d.ts +5 -14
  29. package/dist/devtools/snapshot.js +2 -9
  30. package/dist/devtools/token.d.ts +1 -2
  31. package/dist/devtools/token.js +0 -2
  32. package/dist/integration/capabilities.js +17 -0
  33. package/dist/integration/dependencies.d.ts +12 -0
  34. package/dist/integration/dependencies.js +67 -0
  35. package/dist/integration/diagnostics.d.ts +9 -0
  36. package/dist/integration/diagnostics.js +80 -0
  37. package/dist/integration/imports.js +83 -0
  38. package/dist/integration/nitro-dev-close.js +13 -0
  39. package/dist/integration/nitro-event.d.ts +7 -0
  40. package/dist/integration/nitro-event.js +24 -0
  41. package/dist/integration/nitro.d.ts +9 -2
  42. package/dist/integration/nitro.js +171 -92
  43. package/dist/integration/nuxt-diagnostics.js +23 -0
  44. package/dist/integration/nuxt.js +235 -0
  45. package/dist/integration/resolve.d.ts +1 -0
  46. package/dist/integration/resolve.js +113 -0
  47. package/dist/integration/terminal.js +20 -0
  48. package/dist/integration/update.js +59 -0
  49. package/dist/meta.js +8 -0
  50. package/dist/module.d.ts +1 -8
  51. package/dist/module.js +74 -59
  52. package/dist/module.json +8 -0
  53. package/dist/nitro.d.ts +1 -2
  54. package/dist/nitro.js +7 -7
  55. package/dist/package.js +1 -3
  56. package/dist/runtime/development.d.ts +5 -0
  57. package/dist/runtime/development.js +14 -0
  58. package/dist/runtime/gateway-secret.d.ts +4 -0
  59. package/dist/runtime/gateway-secret.js +10 -0
  60. package/dist/runtime/internal.d.ts +1 -2
  61. package/dist/runtime/internal.js +1 -2
  62. package/dist/runtime/normalize.d.ts +1 -0
  63. package/dist/runtime/normalize.js +0 -2
  64. package/dist/runtime/provider-types.d.ts +1 -2
  65. package/dist/runtime/registry.d.ts +9 -22
  66. package/dist/runtime/registry.js +23 -28
  67. package/dist/runtime.d.ts +1 -2
  68. package/dist/runtime.js +0 -2
  69. package/package.json +248 -14
  70. package/dist/config/load.js.map +0 -1
  71. package/dist/config/merge.js.map +0 -1
  72. package/dist/config/prune.js.map +0 -1
  73. package/dist/config.js.map +0 -1
  74. package/dist/devtools/auth.js.map +0 -1
  75. package/dist/devtools/devframe.js.map +0 -1
  76. package/dist/devtools/diagnostics.js.map +0 -1
  77. package/dist/devtools/enabled.js.map +0 -1
  78. package/dist/devtools/files-read.js.map +0 -1
  79. package/dist/devtools/files-write.js.map +0 -1
  80. package/dist/devtools/files.js.map +0 -1
  81. package/dist/devtools/index.js.map +0 -1
  82. package/dist/devtools/nuxt-v3-handler.js.map +0 -1
  83. package/dist/devtools/nuxt-v3.js.map +0 -1
  84. package/dist/devtools/nuxt-v4.js.map +0 -1
  85. package/dist/devtools/snapshot.js.map +0 -1
  86. package/dist/devtools/token.js.map +0 -1
  87. package/dist/integration/nitro.js.map +0 -1
  88. package/dist/module.js.map +0 -1
  89. package/dist/nitro.js.map +0 -1
  90. package/dist/package.js.map +0 -1
  91. package/dist/runtime/internal.js.map +0 -1
  92. package/dist/runtime/normalize.js.map +0 -1
  93. package/dist/runtime/registry.js.map +0 -1
  94. package/dist/runtime.js.map +0 -1
@@ -2,7 +2,7 @@ function e(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isA
2
2
  function o(e){let t=e.reporters??[],r={},{docsBase:o}=e;for(let s of Object.keys(e.codes)){let c=e.codes[s],l=c.docs===!1?void 0:c.docs||a(o,s),u=(e={},r={})=>{let a=new i({code:s,why:n(c.why,e),fix:n(c.fix,e),docs:l,cause:e.cause,sources:e.sources,data:n(c.data,e)},u);for(let e of t)e(a,r);return a};r[s]=u}return r}/* @__NO_SIDE_EFFECTS__ */
3
3
  function s(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n<r.length-1?`├▶`:`╰▶`)} ${t}`)].join(`
4
4
  `)}}const c={bus:{agentManifestChanged:`agent:manifest:changed`,agentToolRegistered:`agent:tool:registered`,agentToolUnregistered:`agent:tool:unregistered`,agentResourceRegistered:`agent:resource:registered`,agentResourceUnregistered:`agent:resource:unregistered`},client:{isTrustedUpdated:`rpc:is-trusted:updated`,error:`rpc:error`,connectionStatus:`connection:status`,connectionError:`connection:error`},broadcast:{authRevoked:`devframe:auth:revoked`,clientStateUpdated:`devframe:rpc:client-state:updated`,clientStatePatch:`devframe:rpc:client-state:patch`,streamingChunk:`devframe:streaming:chunk`,streamingEnd:`devframe:streaming:end`,streamingUploadCancel:`devframe:streaming:upload-cancel`},inPageChannel:{panelStateUpdated:`devframe:in-page:panel-state:updated`,panelStatePatch:`devframe:in-page:panel-state:patch`},postMessage:{remoteAssetsError:`devframe:remote-assets-error`,inPageChannel:`devframe:in-page-channel`}},l=/* @__PURE__ */ s(t);function u(e,{method:t=`warn`}={}){console[t](l(e))}function d(e){return/* @__PURE__ */ o({...e,reporters:[u,...e.reporters??[]]})}function f(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const p=Math.random.bind(Math);function m(e=21){let t=``,n=e;for(;n--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[p()*64|0];return t}const h=e=>e,g=h,{clearTimeout:_,setTimeout:v}=globalThis;function y(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=h,deserialize:s=g,resolver:c,bind:l=`rpc`,timeout:u=6e4,proxify:d=!0}=t,p=!1,y=/* @__PURE__ */ new Map,b,x;async function S(e,r,i,a){if(p)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(b)try{await b}finally{b=void 0}let{promise:l,resolve:d,reject:h}=f(),g=m();s.i=g;let S;async function C(n=s){return u>=0&&(S=v(()=>{try{if(t.onTimeoutError?.call(x,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){h(e)}y.delete(g)},u),typeof S==`object`&&(S=S.unref?.())),y.set(g,{resolve:d,reject:h,timeoutId:S,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(x,s,C,d):await C()}catch(e){if(t.onGeneralError?.call(x,e)!==!0)throw e;return}finally{_(S),y.delete(g)}return l}let C={$call:(e,...t)=>S(e,t,!1),$callOptional:(e,...t)=>S(e,t,!1,!0),$callEvent:(e,...t)=>S(e,t,!0),$callRaw:e=>S(e.method,e.args,e.event,e.optional),$rejectPendingCalls:ee,get $closed(){return p},get $meta(){return t.meta},$close:w,$functions:e};x=d?new Proxy({},{get(t,n){if(Object.hasOwn(C,n))return C[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>S(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>S(n,e,!1);return i.asEvent=r,i}}):C;function w(e){p=!0,y.forEach(({reject:t,method:n})=>{let r=/* @__PURE__ */ Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),y.clear(),i(T)}function ee(e){let t=Array.from(y.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(/* @__PURE__ */ Error(`[birpc]: rejected pending call "${t}".`)));return y.clear(),t}async function T(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(x,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(x,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=/* @__PURE__ */ Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?x:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(x,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(x,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(x,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=y.get(e);r&&(_(r.timeoutId),n?r.reject(n):r.resolve(t)),y.delete(e)}}return b=r(T),x}function b(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}const x=Object.freeze({type:`object`,additionalProperties:!0});function S(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return x}return x}function C(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;r<e.length;r++){let i=`arg${r}`;t[i]=S(e[r]),n.push(i)}return{type:`object`,properties:t,required:n,additionalProperties:!1}}function w(e,t){if(Array.isArray(e))return e;if(e==null)return[];if(typeof e!=`object`)return;let n=e;if(t!=null)return Array.from({length:t},(e,t)=>n[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function ee(e,t){return w(e,t)??[e]}function T(e){return typeof e==`string`?`'${e}'`:new ne().serialize(e)}const E=/*@__PURE__*/ (function(){let e=/* @__PURE__ */ new Uint8Array(128);for(let t=0;t<69;t++)e[` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function te(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;i<n;i++){let n=e.charCodeAt(i),a=t.charCodeAt(i);if(n===a)continue;let o=n<128&&E[n]?E[n]:n+128,s=a<128&&E[a]?E[a]:a+128;if(o!==s)return o<s?-1:1;r===0&&(r=n>a?-1:1)}return e.length===t.length?r:e.length<t.length?-1:1}const ne=/*@__PURE__*/ (function(){class e{#e=/* @__PURE__ */ new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?te(e,t):n===`number`&&r===`number`?e-t:te(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(`toJSON`in e&&typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}let i=Object.keys(e).sort(te),a=`${r}{`;for(let t=0;t<i.length;t++){let n=i[t];a+=`${n}:${this.serialize(e[n])}`,t<i.length-1&&(a+=`,`)}return a+`}`}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),re=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],ie=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],D=[];var ae=class{_data=new oe;_hash=new oe([...re]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)D[n]=e[t+n]|0;else{let e=D[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=D[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;D[n]=t+D[n-7]+i+D[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+ie[n]+D[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=oe.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e<r;e+=16)this._doProcessBlock(this._data.words,e);t=this._data.words.splice(0,r),this._data.sigBytes-=i}return new oe(t,i)}},oe=class e{words;sigBytes;constructor(e,t){e=this.words=e||[],this.sigBytes=t===void 0?e.length*4:t}static fromUtf8(t){let n=unescape(encodeURIComponent(t)),r=n.length,i=[];for(let e=0;e<r;e++)i[e>>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t<this.sigBytes;t+=3){let n=this.words[t>>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6<this.sigBytes*8;n++)e.push(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`.charAt(a>>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t<e.sigBytes;t++){let n=e.words[t>>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t<e.sigBytes;t+=4)this.words[this.sigBytes+t>>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function se(e){return new ae().finalize(e).toBase64()}function ce(e){return se(T(e))}function le(e){return ce(e)}function ue(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}const de=/^[\w+.-]{2,}:\/\//;function fe(e){return e.endsWith(`/`)?e:`${e}/`}function pe(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function me(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?fe(n)+e.replace(/^\.?\//,``):e);return n}function he(e,t){if(!t||t===`/`||de.test(e))return e;let n=pe(t);return e.startsWith(n)?e:me(n,e)}function ge(e,t){let n=e.match(de);return t+(n?e.slice(n[0].length):e)}function _e(e=21){let t=``,n=e;for(;n--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[Math.random()*64|0];return t}var ve=Symbol.for(`immer-nothing`),ye=Symbol.for(`immer-draftable`),O=Symbol.for(`immer-state`),be=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function k(e,...t){{let n=be[e],r=R(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var A=Object,j=A.getPrototypeOf,xe=`constructor`,Se=`prototype`,Ce=`configurable`,we=`enumerable`,Te=`writable`,Ee=`value`,M=e=>!!e&&!!e[O];function N(e){return e?ke(e)||Ne(e)||!!e[ye]||!!e[xe]?.[ye]||Pe(e)||Fe(e):!1}var De=A[Se][xe].toString(),Oe=/* @__PURE__ */ new WeakMap;function ke(e){if(!e||!L(e))return!1;let t=j(e);if(t===null||t===A[Se])return!0;let n=A.hasOwnProperty.call(t,xe)&&t[xe];if(n===Object)return!0;if(!R(n))return!1;let r=Oe.get(n);return r===void 0&&(r=Function.toString.call(n),Oe.set(n,r)),r===De}function Ae(e,t,n=!0){P(e)===0?(n?Reflect.ownKeys(e):A.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function P(e){let t=e[O];return t?t.type_:Ne(e)?1:Pe(e)?2:Fe(e)?3:0}var F=(e,t,n=P(e))=>n===2?e.has(t):A[Se].hasOwnProperty.call(e,t),I=(e,t,n=P(e))=>n===2?e.get(t):e[t],je=(e,t,n,r=P(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Me(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Ne=Array.isArray,Pe=e=>e instanceof Map,Fe=e=>e instanceof Set,L=e=>typeof e==`object`,R=e=>typeof e==`function`,Ie=e=>typeof e==`boolean`;function Le(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Re=e=>L(e)?e?.[O]:null,z=e=>e.copy_||e.base_,ze=e=>e.modified_?e.copy_:e.base_;function Be(e,t){if(Pe(e))return new Map(e);if(Fe(e))return new Set(e);if(Ne(e))return Array[Se].slice.call(e);let n=ke(e);if(t===!0||t===`class_only`&&!n){let t=A.getOwnPropertyDescriptors(e);delete t[O];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[Te]===!1&&(a[Te]=!0,a[Ce]=!0),(a.get||a.set)&&(t[i]={[Ce]:!0,[Te]:!0,[we]:a[we],[Ee]:e[i]})}return A.create(j(e),t)}{let t=j(e);if(t!==null&&n)return{...e};let r=A.create(t);return A.assign(r,e)}}function Ve(e,t=!1){return We(e)||M(e)||!N(e)?e:(P(e)>1&&A.defineProperties(e,{set:Ue,add:Ue,clear:Ue,delete:Ue}),A.freeze(e),t&&Ae(e,(e,t)=>{Ve(t,!0)},!1),e)}function He(){k(2)}var Ue={[Ee]:He};function We(e){return e===null||!L(e)||A.isFrozen(e)}var Ge=`MapSet`,Ke=`Patches`,qe=`ArrayMethods`,Je={};function B(e){let t=Je[e];return t||k(0,e),t}var Ye=e=>!!Je[e];function Xe(e,t){Je[e]||(Je[e]=t)}var Ze,Qe=()=>Ze,$e=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:/* @__PURE__ */ new Set,processedForPatches_:/* @__PURE__ */ new Set,mapSetPlugin_:Ye(Ge)?B(Ge):void 0,arrayMethodsPlugin_:Ye(qe)?B(qe):void 0});function et(e,t){t&&(e.patchPlugin_=B(Ke),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function tt(e){nt(e),e.drafts_.forEach(it),e.drafts_=null}function nt(e){e===Ze&&(Ze=e.parent_)}var rt=e=>Ze=$e(Ze,e);function it(e){let t=e[O];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function at(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[O].modified_&&(tt(t),k(4)),N(e)&&(e=ot(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[O].base_,e,t)}else e=ot(t,n);return st(t,e,!0),tt(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===ve?void 0:e}function ot(e,t){if(We(t))return t;let n=t[O];if(!n)return ht(t,e.handledSet_,e);if(!lt(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);pt(n,e)}return n.copy_}function st(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Ve(t,n)}function ct(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var lt=(e,t)=>e.scope_===t,ut=[];function dt(e,t,n,r){let i=z(e),a=e.type_;if(r!==void 0&&I(i,r,a)===t){je(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=/* @__PURE__ */ new Map;Ae(i,(e,n)=>{if(M(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??ut;for(let e of o)je(i,e,n,a)}function ft(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!lt(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=ze(i);dt(e,i.draft_??i,a,n),pt(i,r)})}function pt(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}ct(e)}}function mt(e,t,n){let{scope_:r}=e;if(M(n)){let i=n[O];lt(i,r)&&i.callbacks_.push(function(){wt(e),dt(e,n,ze(i),t)})}else N(n)&&e.callbacks_.push(function(){let i=z(e);e.type_===3?i.has(n)&&ht(n,r.handledSet_,r):I(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&ht(I(e.copy_,t,e.type_),r.handledSet_,r)})}function ht(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||M(e)||t.has(e)||!N(e)||We(e)?e:(t.add(e),Ae(e,(r,i)=>{if(M(i)){let t=i[O];lt(t,n)&&(je(e,r,ze(t),e.type_),ct(t))}else N(i)&&ht(i,t,n)}),e)}function gt(e,t){let n=Ne(e),r={type_:+!!n,scope_:t?t.scope_:Qe(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=_t;n&&(i=[r],a=vt);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var _t={get(e,t){if(t===O)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=z(e);if(!F(i,t,e.type_))return xt(e,i,t);let a=i[t];if(e.finalized_||!N(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Le(t))return a;if(a===yt(e.base_,t)||bt(e,t,a)){wt(e);let n=e.type_===1?+t:t,r=Et(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in z(e)},ownKeys(e){return Reflect.ownKeys(z(e))},set(e,t,n){let r=St(z(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=yt(z(e),t),i=r?.[O];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(Me(n,r)&&(n!==void 0||F(e.base_,t,e.type_)))return!0;wt(e),Ct(e)}return e.copy_[t]===n&&(n!==void 0||F(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),mt(e,t,n),!0)},deleteProperty(e,t){return wt(e),yt(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Ct(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=z(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Te]:!0,[Ce]:e.type_!==1||t!==`length`,[we]:r[we],[Ee]:n[t]}},defineProperty(){k(11)},getPrototypeOf(e){return j(e.base_)},setPrototypeOf(){k(12)}},vt={};for(let e in _t){let t=_t[e];vt[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}vt.deleteProperty=function(e,t){return isNaN(parseInt(t))&&k(13),vt.set.call(this,e,t,void 0)},vt.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&k(14),_t.set.call(this,e[0],t,n,e[0])};function yt(e,t){let n=e[O];return(n?z(n):e)[t]}function bt(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!N(n)||n[O]?!1:e.baseRefs_.has(n)}function xt(e,t,n){let r=St(t,n);return r?Ee in r?r[Ee]:r.get?.call(e.draft_):void 0}function St(e,t){if(!(t in e))return;let n=j(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=j(n)}}function Ct(e){e.modified_||(e.modified_=!0,e.parent_&&Ct(e.parent_))}function wt(e){e.copy_||=(e.assigned_=/* @__PURE__ */ new Map,Be(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Tt=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(R(e)&&!R(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}R(t)||k(6),n!==void 0&&!R(n)&&k(7);let r;if(N(e)){let i=rt(this),a=Et(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?tt(i):nt(i)}return et(i,n),at(r,i)}if(!e||!L(e)){if(r=t(e),r===void 0&&(r=e),r===ve&&(r=void 0),this.autoFreeze_&&Ve(r,!0),n){let t=[],i=[];B(Ke).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}k(1,e)},this.produceWithPatches=(e,t)=>{if(R(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Ie(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Ie(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Ie(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){N(e)||k(8),M(e)&&(e=Dt(e));let t=rt(this),n=Et(t,e,void 0);return n[O].isManual_=!0,nt(t),n}finishDraft(e,t){let n=e&&e[O];(!n||!n.isManual_)&&k(9);let{scope_:r}=n;return et(r,t),at(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=B(Ke).applyPatches_;return M(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Et(e,t,n,r){let[i,a]=Pe(t)?B(Ge).proxyMap_(t,n):Fe(t)?B(Ge).proxySet_(t,n):gt(t,n);return(n?.scope_??Qe()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?ft(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Dt(e){return M(e)||k(10,e),Ot(e)}function Ot(e){if(!N(e)||We(e))return e;let t=e[O],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Be(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Be(e,!0);return Ae(n,(e,t)=>{je(n,e,Ot(t))},r),t&&(t.finalized_=!1),n}function kt(){be.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=Re(I(e,n.key_)),i=I(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||F(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=I(n,r),!L(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[O];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;Ae(e.assigned_,(e,l)=>{let u=I(o,e,c),f=I(s,e,c),p=l?F(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===ve?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=P(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===xe)&&k(19),R(o)&&n===Se&&k(19),o=I(o,n),(o===null||!L(o))&&k(18,i.join(`/`))}let s=P(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:k(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:k(17,a)}}),e}function u(e){if(!N(e))return e;if(Ne(e))return e.map(u);if(Pe(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(Fe(e))return new Set(Array.from(e).map(u));let t=Object.create(j(e));for(let n in e)t[n]=u(e[n]);return F(e,ye)&&(t[ye]=e[ye]),t}function d(e){return M(e)?u(e):e}Xe(Ke,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var At=new Tt,jt=At.produce,Mt=/* @__PURE__ */ At.produceWithPatches.bind(At),Nt=/* @__PURE__ */ At.applyPatches.bind(At);function Pt(e,t){if(e.add(t),e.size>1e3){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function Ft(e){let{enablePatches:t=!1}=e;t&&kt();let n=ue(),r=e.initialValue,i=/* @__PURE__ */ new Set;return{on:n.on,value:()=>r,patch:(e,t=_e())=>{i.has(t)||(kt(),r=Nt(r,e),Pt(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=_e())=>{if(!i.has(a)){if(Pt(i,a),t){let[t,i]=Mt(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=jt(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}const It=typeof self==`object`?self:globalThis,Lt=/* @__PURE__ */ new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),Rt=/* @__PURE__ */ new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function zt(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(/* @__PURE__ */ new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(/* @__PURE__ */ new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=Lt.has(e)?It[e]:void 0;return n(new(r??It.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&Rt.has(a))return n(new It[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function Bt(e){return zt(/* @__PURE__ */ new Map,e)(0)}const{toString:Vt}={},{keys:Ht}=Object;function Ut(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=Vt.call(e).slice(8,-1);switch(n){case`Array`:return[1,``];case`Object`:return[2,``];case`Date`:return[3,``];case`RegExp`:return[4,``];case`Map`:return[5,``];case`Set`:return[6,``];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function Wt([e,t]){return e===0&&(t===`function`||t===`symbol`)}function Gt(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=Ut(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of Ht(r))(e||!Wt(Ut(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(Wt(Ut(n))||Wt(Ut(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!Wt(Ut(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function Kt(e,t={}){let n=[];return Gt(!(t.json||t.lossy),!!t.json,/* @__PURE__ */ new Map,n)(e),n}const{parse:qt,stringify:Jt}=JSON,Yt={json:!0,lossy:!0};function Xt(e){return Bt(qt(e))}function Zt(e){return Jt(Kt(e,Yt))}function Qt(e){return Bt(e)}function $t(e){return Zt(e)}function en(e){return Xt(e)}var tn=class extends Error{name=`StreamClosedError`};function nn(e={}){let t=e.id??_e(),n=Math.max(0,e.replayWindow??0),r=ue(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new tn(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=an(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function rn(e={}){let t=e.id??_e(),n=Math.max(1,e.highWaterMark??256),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function an(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}function on(e){return e.replace(/[^\w-]+/g,`_`).slice(0,128)}const sn=`__connection.json`,cn=`__DEVFRAME_CONNECTION__`,ln=`devframe_otp`,un=`devframe_auth_token`;c.postMessage.remoteAssetsError;var dn=class{cacheMap=/* @__PURE__ */ new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>le(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||/* @__PURE__ */ new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}};const V=d({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function fn(e){if(e.agent&&e.jsonSerializable===!1)throw V.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function pn(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function mn(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function hn(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r<t.length;r++){let i=t[r];if(!i)continue;let a=await pn(i,n[r]);if(a.issues)throw V.DF0043({name:e,index:r,issues:mn(a.issues)})}return r}async function gn(e,t,n){if(!t)return n;let r=await pn(t,n);if(r.issues)throw V.DF0044({name:e,issues:mn(r.issues)});return n}async function _n(e,t){if(!e.setup)return{};if(typeof t==`object`&&t){e.__cache??=/* @__PURE__ */ new WeakMap;let n=e.__cache,r=n.get(t);return r||(r=Promise.resolve(e.setup(t)),r.catch(()=>{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function vn(e,t){let n=e.handler;if(!n){let r=await _n(e,t);if(!r.handler)throw V.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await hn(e.name,r,t),o=await a(...n);return await gn(e.name,i,o)}}var yn=class{context;definitions=/* @__PURE__ */ new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return vn(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw V.DF0021({name:e.name});fn(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw V.DF0022({name:e.name});fn(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await vn(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw V.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function bn(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw H(t,`undefined`,r,e);return n}return i!==null&&xn(i,r,e,t),n})}function xn(e,t,n,r){if(typeof e==`bigint`)throw H(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw H(r,`Map`,t,n);if(e instanceof Set)throw H(r,`Set`,t,n);if(e instanceof Date)throw H(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw H(r,e.constructor?.name??`class instance`,t,n)}function H(e,t,n,r){let i=Sn(n,r);return V.DF0020({name:e||`<anonymous>`,type:t,path:i})}function Sn(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}const Cn=`__DEVFRAME_CONNECTION_META__`,wn=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Tn(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function En(){return Tn(cn)}function Dn(){return Tn(Cn)}function U(e){if(e)return e;try{let e=localStorage.getItem(wn);if(e)return e}catch{}return Tn(wn)}function On(e){globalThis[cn]=e,globalThis[Cn]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&kn(e.authToken)}function kn(e){try{localStorage.setItem(wn,e)}catch{}globalThis[wn]=e;let t=En();t&&(globalThis[cn]={...t,authToken:e})}function An(e){let t=he(sn,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function jn(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function Mn(){let e=En();if(e)return jn(e,U()??e.authToken??e.connectionMeta.authToken);let t=Dn();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??An(`./`),authToken:U(t.authToken)}}async function Nn(e={}){if(e.connection){let t=jn(e.connection,U(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return On(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:An(t[0]??`./`),authToken:U(e.authToken??e.connectionMeta.authToken)};return On(n),n}let n=Mn();if(n){let t=jn(n,U(e.authToken??n.authToken??n.connectionMeta.authToken));return On(t),t}let r=[];for(let n of t){let t=he(sn,n),i=An(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:U(e.authToken??r.authToken)};return On(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var W=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Pn(e=ln){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Fn(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function In(e=ln){let t=Pn(e);return t&&Fn(e),t}async function Ln(e,t={}){let n=In(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Rn(e){let t={},n=/* @__PURE__ */ new WeakMap,r,i=()=>(r??=e.sharedState.get(`devframe:services`,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function zn(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:c.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:c.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(l,u)=>{if(u?.initialValue!==void 0&&r.set(l,u.initialValue),t.has(l))return t.get(l);let d=Ft({initialValue:u?.initialValue,enablePatches:!1});async function f(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,l),u?.initialValue!==void 0){t.set(l,d);for(let e of i)e(l);return e.call(`devframe:rpc:server-state:get`,l).then(e=>{e!==void 0&&d.mutate(()=>o(l,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(l,s(l,d)),d}{let r=await e.call(`devframe:rpc:server-state:get`,l);d.mutate(()=>o(l,r)),t.set(l,d);for(let e of i)e(l);return n.set(l,s(l,d)),d}}return new Promise(t=>{if(e.isTrusted)f().then(t);else{t(d);let n=!1;e.events.on(c.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,f())})}})}}}const Bn=/* @__PURE__ */ new Map;function Vn(e=Bn){let t=/* @__PURE__ */ new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?bn(n,r??``):`s:${$t(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?en(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function Hn(){}function Un(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function Wn(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function Gn(e){let{onConnected:t=Hn,onError:n=Hn,onDisconnected:r=Hn,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${un}=${encodeURIComponent(e.authToken)}`);let s=Vn(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(/* @__PURE__ */ Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function v(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Un(r);if(!e)break;r=e.rest;let{event:t,data:n}=Wn(e.frame);n.length>0&&_(t,n.join(`
5
- `))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await v(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(/* @__PURE__ */ Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,"x-birpc-session":t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Kn(e,t){let{channel:n,rpcOptions:r={}}=t;return y(e,{...n,timeout:-1,...r,proxify:!1})}function qn(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,l=!1,u=`connecting`,d=null,f=Promise.withResolvers();function p(e,t=null){if(t?d=t:e===`connected`&&(d=null),e===u)return;let n=u;u=e,i.emit(c.client.connectionStatus,e,n)}let m=/* @__PURE__ */ new Set;function h(e){for(let t of[...m])t.reject(e)}function g(){return u===`disconnected`||u===`error`?new W(`connection`,`[devframe] Not connected to the devframe server`,{cause:d??void 0}):u===`unauthorized`?new W(`auth`,`[devframe] Not authorized by the devframe server`,{cause:d??void 0}):null}function _(e,t){return new Promise((n,r)=>{let a=!1,o,l={reject(e){a||(u(),i.emit(c.client.error,e,t),r(e))}};function u(){a=!0,m.delete(l),o&&clearTimeout(o)}m.add(l),s>0&&(o=setTimeout(()=>{l.reject(new W(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(u(),n(e))},e=>{if(a)return;u();let n=e instanceof Error?e:Error(String(e));i.emit(c.client.error,n,t),r(n)})})}let v=/* @__PURE__ */ new Map;for(let e of r.jsonSerializableMethods??[])v.set(e,{jsonSerializable:!0});let y=e.createChannel({definitions:v,onError(e){p(`error`,e),i.emit(c.client.connectionError,e),h(new W(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){u!==`error`&&p(`disconnected`),h(new W(`connection`,`[devframe] Disconnected from the devframe server`,{cause:d??void 0}))}}),b=Kn(a.functions,{channel:y,rpcOptions:o});a.register({name:c.broadcast.authRevoked,type:`event`,handler:()=>{l=!1;let e=new W(`auth`,`[devframe] The devframe server revoked this client's trust`);p(`unauthorized`,e),i.emit(c.client.connectionError,e),h(e),i.emit(c.client.isTrustedUpdated,!1)}});let x=n;async function S(e){x=e;let t=await b.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(l=t.isTrusted,l)f.resolve(!0),p(`connected`);else{let e=new W(`auth`,`[devframe] The devframe server refused this client's credentials`);p(`unauthorized`,e),i.emit(c.client.connectionError,e)}return i.emit(c.client.isTrustedUpdated,l),t.isTrusted}async function C(e){let t=(await b.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(x=t,l=!0,f.resolve(!0),p(`connected`),i.emit(c.client.isTrustedUpdated,!0)),t}async function w(e={}){await b.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ee(){return l?!0:S(x??``)}async function T(e=6e4){if(l&&f.resolve(!0),e<=0)return f.promise;let t;try{return await Promise.race([f.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(/* @__PURE__ */ Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),l}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return l},get status(){return u},get connectionError(){return d},requestTrust:ee,requestTrustWithToken:S,requestTrustWithCode:C,requestAuthCode:w,ensureTrusted:T,call:(...e)=>{let t=String(e[0]),n=g();return n?(i.emit(c.client.error,n,t),Promise.reject(n)):_(b.$call(...e),t)},callEvent:(...e)=>{let t=g();if(t){i.emit(c.client.error,t,String(e[0]));return}return b.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=g();return n?(i.emit(c.client.error,n,t),Promise.reject(n)):_(b.$callOptional(...e),t)},close:()=>{y.close()}}}function Jn(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Yn(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Jn(n.sse,r??`./`,location);return qn({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Gn({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Xn(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Zn(r)?Xn(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Zn(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function Qn(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function $n(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function er(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function tr(e){if(e.error)throw Xn(e.error);return e.output}function nr(e){return e.some(e=>e!=null)}function rr(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function ir(e,t){let n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?Qt(e):e}function a(e,t){return i(rr(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return er(r)?tr(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(Qn(r)){if(nr(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if($n(r)){let e=le(n),i=r.records[e];if(i)return tr(await s(i,r.serialization));if(r.fallback)return tr(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!nr(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function ar(e){let t=ir(await e.fetchJsonFromBases(`__rpc-dump/index.json`),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}function or(e,t){return`${e}${t}`}function sr(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map;e.client.register({name:c.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(or(e,n))?._push(r,i)}}),e.client.register({name:c.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=or(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:c.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=or(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(c.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(``);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=or(n,r),o=t.get(a);if(o)return o;let s=rn({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(c.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=or(t,r),a=n.get(i);if(a)return a;let o=nn({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function cr(){}const lr=/* @__PURE__ */ new Map;function ur(e){let t=e.url;e.authToken&&(t=`${t}?${un}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=cr,onError:i=cr,onDisconnected:a=cr,definitions:o=lr}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Vn(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(/* @__PURE__ */ Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function dr(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return ge(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function fr(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=dr(n.websocket,r??`./`,location);return qn({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>ur({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function pr(e){return e.includes(`:`)}function G(e,t){return pr(t)?t:`${e}:${t}`}function mr(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function hr(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return mr(a)}function gr(e,t){return{global:hr(e,t,`global`),project:hr(e,t,`project`)}}function _r(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(pr(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(G(t,n),...r)),callEvent:((n,...r)=>e.callEvent(G(t,n),...r)),callOptional:((n,...r)=>e.callOptional(G(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(G(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(G(t,n),r,i),upload:(n,r)=>e.streaming.upload(G(t,n),r)}},settings:gr(e,t),scope:e.scope}}function vr(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function yr(e,t={}){let n=t.modelContext??vr();if(!n)return()=>{};let r=n,i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map;function o(t,n){let o=on(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=b(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:C(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>br(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function br(e,t,n){try{let r=ee(n,e.args?.length);return{content:[{type:`text`,text:xr(await(await vn(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:Sr(e)}]}}}function xr(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function Sr(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function Cr(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function wr(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=ue(),a=Array.isArray(t)?t:[t],o=await Nn(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new dn({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new yn(f),m=e.webmcp===!1?void 0:yr(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(he(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let v={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},y=Cr(e.transport??`auto`,s),b=y===`static`?await ar({fetchJsonFromBases:_}):y===`sse`?Yn({...v,sseOptions:e.sseOptions}):fr({...v,wsOptions:e.wsOptions}),x;try{x=new BroadcastChannel(`devframe-auth`)}catch{}let S,C=!1;function w(e){return((...t)=>C||!S?e(...t):S.then(()=>e(...t)))}function ee(){g=!0;try{h?.(),m?.()}finally{try{x?.close()}finally{b.close?.()}}}let T={events:i,get isTrusted(){return b.isTrusted},get status(){return b.status},get connectionError(){return b.connectionError},get transport(){return b.transport??y},get connection(){return o},connectionMeta:s,ensureTrusted:b.ensureTrusted,requestTrust:b.requestTrust,requestTrustWithToken:async e=>(kn(e),o={...o,authToken:e},b.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await b.requestTrustWithCode(e);if(!t)return!1;kn(t),o={...o,authToken:t};try{x?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>b.requestAuthCode(e),call:w(b.call),callEvent:w(b.callEvent),callOptional:w(b.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:ee};T.sharedState=zn(T),T.streaming=sr(T),T.services=Rn(T);let E=/* @__PURE__ */ new Map;T.scope=(e=>{if(!e)return T;let t=E.get(e);return t||(t=_r(T,e),E.set(e,t)),t}),f.rpc=T;function te(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ne(){if(e.simpleAuth!==!1&&te()&&typeof globalThis.prompt==`function`)for(await T.requestAuthCode().catch(()=>{});!T.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await T.requestTrustWithCode(t))return}}async function re(){let t=await b.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await Ln(T,{param:n}):!1;t||r||T.isTrusted||await ne()}return S=re().then(()=>{C=!0},()=>{C=!0}),s.mcp&&import(`./browser-agent-rpc-BXhoSh1z-DRoP5jHQ.js`).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(T))}).catch(()=>{}),x&&(x.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&T.requestTrustWithToken(e.data.authToken)}),T}const Tr=wr;var Er=e=>typeof e==`string`,Dr=e=>typeof e==`function`,Or=e=>typeof e==`object`&&!!e,K=class e extends Error{code;aborted;timedOut;permanent;applied;appliedEtag;cause;constructor(e,t,n,r){super(t),this.name=`FilesError`,this.code=e,this.aborted=r?.aborted===!0,this.timedOut=r?.timedOut===!0,this.permanent=r?.permanent===!0,this.applied=r?.applied===!0,r?.appliedEtag!==void 0&&(this.appliedEtag=r.appliedEtag),this.cause=n}static applied(t,n){let r=e.wrap(t);return new e(r.code,r.message,t,{aborted:r.aborted,applied:!0,...n!==void 0&&{appliedEtag:n},permanent:r.permanent,timedOut:r.timedOut})}static wrap(t,n=`Provider`){if(t instanceof e)return t;let r=t instanceof Error?t.message:String(t);return new e(n,r,t)}};async function kr(e,t,{concurrency:n=1/0,stopOnError:r=!0,signal:i}={}){return new Promise((a,o)=>{if(e[Symbol.iterator]===void 0&&e[Symbol.asyncIterator]===void 0)throw TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`);if(typeof t!=`function`)throw TypeError(`Mapper function is required`);if(!(Number.isSafeInteger(n)&&n>=1||n===1/0))throw TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);let s=[],c=[],l=/* @__PURE__ */ new Map,u=!1,d=!1,f=!1,p=0,m=0,h=e[Symbol.asyncIterator]===void 0?e[Symbol.iterator]():e[Symbol.asyncIterator](),g=()=>{y(i.reason)},_=()=>{i?.removeEventListener(`abort`,g)},v=e=>{a(e),_()},y=e=>{d||(u=!0,d=!0,o(e),_(),f||jr(h))};if(i){if(i.aborted){y(i.reason);return}i.addEventListener(`abort`,g,{once:!0})}let b=async()=>{if(d)return;let e=f?{done:!0}:await h.next(),n=m;if(m++,e.done){if(f=!0,p===0&&!d){if(!r&&c.length>0){y(AggregateError(c));return}if(d=!0,l.size===0){v(s);return}let e=[];for(let[t,n]of s.entries())l.get(t)!==Ar&&e.push(n);v(e)}return}p++,(async()=>{try{let r=await e.value;if(d)return;let i=await t(r,n);i===Ar&&l.set(n,i),s[n]=i}catch(e){if(r){y(e);return}c.push(e)}p--;try{await b()}catch(e){y(e)}})()};(async()=>{for(let e=0;e<n;e++){try{await b()}catch(e){y(e);break}if(f||u)break}})()})}const Ar=Symbol(`skip`);async function jr(e){try{await e.return?.()}catch{}}var Mr=async e=>{let t=e.getReader(),n=[],r=0;for(;;){let{done:e,value:i}=await t.read();if(e)break;i&&(n.push(i),r+=i.byteLength)}let i=new Uint8Array(r),a=0;for(let e of n)i.set(e,a),a+=e.byteLength;return i},Nr=e=>new ReadableStream({start(t){t.enqueue(e),t.close()}}),Pr=e=>new ReadableStream({async start(t){let n=await e;t.enqueue(n),t.close()}}),Fr=()=>new K(`Provider`,`StoredFile body was already consumed via stream(). For multi-format access, call text()/arrayBuffer()/blob() before stream() — those drain into a cache.`),Ir=()=>{try{return new Blob([/* @__PURE__ */ new Uint8Array]).size===0}catch{return!1}},Lr=async e=>Dr(e.arrayBuffer)?new Uint8Array(await e.arrayBuffer()):await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(new Uint8Array(r.result)),r.onerror=()=>n(r.error??/* @__PURE__ */ Error(`FileReader failed`)),r.readAsArrayBuffer(e)}),Rr=(e,t,n)=>{let r,i,a=!1,o,s=async e=>{let t=await e();return r=t,t},c=()=>{if(r)return Promise.resolve(r);if(i)return i;if(o){let e=o;return i=s(async()=>Lr(await e)),i}if(t.kind===`buffer`)return r=t.data,Promise.resolve(r);if(t.kind===`lazy`)return i=s(t.factory),i;if(a)return Promise.reject(Fr());let e=t.factory();return i=s(()=>Mr(e)),i};return{async arrayBuffer(){let e=await c();return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)},async blob(){if(o)return await o;if(n&&r===void 0&&i===void 0&&!Ir())return o=n(),await o;let t=await c();try{return new Blob([t],{type:e.type})}catch(e){throw new K(`Provider`,`this runtime's Blob cannot wrap bytes (React Native). Call blob() before text()/arrayBuffer(), or read the download with arrayBuffer() instead.`,e)}},etag:e.etag,key:e.key,lastModified:e.lastModified,metadata:e.metadata,name:e.key,size:e.size,stream(){if(r)return Nr(r);if(i)return Pr(i);if(t.kind===`stream`){if(a)throw Fr();return a=!0,t.factory()}return Pr(c())},async text(){let e=await c();return new TextDecoder().decode(e)},type:e.type}},zr=e=>{if(!e)return{};try{let t=Uint8Array.from(atob(e),e=>e.codePointAt(0)??0);return JSON.parse(new TextDecoder().decode(t))}catch{return{}}},Br=(e,t)=>{let n=zr(e.headers.get(`x-files-meta`)),r=e.headers.get(`content-length`),i=r===null?0:Number(r),{body:a}=e;return Rr({etag:e.headers.get(`etag`)??n.etag,key:n.key??t,lastModified:n.lastModified,metadata:n.metadata,size:i,type:e.headers.get(`content-type`)??`application/octet-stream`},a?{factory:()=>a,kind:`stream`}:{factory:async()=>new Uint8Array(await e.arrayBuffer()),kind:`lazy`},a?void 0:()=>e.blob())},q=e=>Or(e)&&!(e instanceof Blob)&&`uri`in e&&Er(e.uri),Vr=e=>{let t=0,n=0;for(let r of e)t+=r.loaded,n+=r.total;return{fraction:n===0?0:t/n,loaded:t,total:n}},Hr=e=>e.name?e.name:e.uri.split(`?`)[0]?.split(`/`).pop()||`blob`,Ur=e=>e instanceof File?e.name:q(e)?Hr(e):`blob`,Wr=e=>e instanceof Blob?{size:e.size,type:e.type}:q(e)?{size:e.size??0,type:e.type??``}:{size:e.byteLength,type:``},Gr=e=>{let{size:t,type:n}=Wr(e);return{file:e,loaded:0,name:Ur(e),progress:0,size:t,status:`pending`,total:t,type:n||`application/octet-stream`}};AbortSignal.any;var Kr=e=>e instanceof K?e:e instanceof Error?new K(`Provider`,`Operation aborted: ${e.message}`,e,{aborted:!0}):new K(`Provider`,e===void 0?`Operation aborted`:`Operation aborted: ${String(e)}`,e,{aborted:!0}),qr=e=>e instanceof Blob?e.size:q(e)?e.size??0:e.byteLength,Jr=e=>e instanceof Blob||q(e)?e:new Blob([e]),Yr=e=>{if(q(e))throw new K(`Provider`,`a NativeFileRef body requires a presigned-POST target; resolve it to a Blob first`);return e},Xr=e=>{if(e.method===`POST`&&e.fields){let t=new FormData;for(let[n,r]of Object.entries(e.fields))t.append(n,r);return e.body&&t.append(`file`,Jr(e.body)),t}return Yr(e.body)},Zr=e=>new Promise((t,n)=>{if(e.signal?.aborted){n(Kr(e.signal.reason));return}let r=new XMLHttpRequest;if(r.open(e.method,e.url,!0),e.headers&&!(e.method===`POST`&&e.fields))for(let[t,n]of Object.entries(e.headers))r.setRequestHeader(t,n);e.onProgress&&r.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(t.loaded,t.total)}),r.addEventListener(`load`,()=>t({status:r.status,text:r.responseText})),r.addEventListener(`error`,()=>n(new K(`Provider`,`network error during upload`))),r.addEventListener(`abort`,()=>n(Kr(e.signal?.reason))),e.signal?.addEventListener(`abort`,()=>r.abort(),{once:!0}),r.send(Xr(e))}),Qr=e=>async t=>{let n=t.body?qr(t.body):0;t.onProgress?.(0,n);let r;if(t.method===`POST`&&t.fields){let e=new FormData;for(let[n,r]of Object.entries(t.fields))e.append(n,r);t.body&&e.append(`file`,Jr(t.body)),r=e}else r=Yr(t.body);let i=await e(t.url,{body:r,headers:t.method===`POST`&&t.fields?void 0:t.headers,method:t.method,signal:t.signal});return t.onProgress?.(n,n),{status:i.status,text:await i.text()}},$r=e=>typeof XMLHttpRequest>`u`?Qr(e):Zr,ei=`/api/files`,ti=4,ni=e=>{switch(e){case`NotFound`:return`NotFound`;case`Unauthorized`:case`Forbidden`:return`Unauthorized`;case`Conflict`:return`Conflict`;case`ReadOnly`:return`ReadOnly`;default:return`Provider`}},ri=e=>new K(ni(e.code),e.message,void 0,{aborted:e.aborted,permanent:e.code===`Validation`,timedOut:e.timedOut}),ii=e=>e?.length?e.map(e=>({error:ri(e.error),key:e.key})):void 0,ai=(e,t)=>{let n=ii(t);return n?{...e,errors:n}:e},oi=e=>({body:e,size:e.size,type:e.type}),si=e=>e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),ci=(e,t)=>{if(e instanceof Blob)return oi(t&&e.type!==t?new Blob([e],{type:t}):e);if(Er(e))return oi(new Blob([e],t?{type:t}:void 0));let n=si(e);try{return oi(new Blob([n],t?{type:t}:void 0))}catch{return{body:n,size:n.byteLength,type:t??``}}},li=(e={})=>{let t=e.endpoint??ei,n=e.fetchImpl??fetch,r=e.transport??$r(n),i=e.concurrency??ti,a=t.includes(`?`)?`&`:`?`,o=async e=>{let t=await n(e.uri);if(!t.ok)throw new K(`Provider`,`could not read upload source ${e.uri} (${t.status})`);return t.blob()},s=async()=>{let t=Dr(e.headers)?await e.headers():e.headers;return t?Object.fromEntries(new Headers(t).entries()):{}},c=async e=>{try{let t=await e.json();if(t.error?.code)return ri(t.error)}catch{}return new K(`Provider`,`gateway responded ${e.status}`)},l=async(e,r)=>{let i=await n(t,{body:JSON.stringify(e),headers:{"content-type":`application/json`,...await s()},method:`POST`,signal:r});if(!i.ok)throw await c(i);return await i.json()},u=async(e,r)=>{let i=await s();r?.range&&(i.range=`bytes=${r.range.start}-${r.range.end??``}`);let o=await n(`${t}${a}op=download&key=${encodeURIComponent(e)}`,{headers:i,method:`GET`,signal:r?.signal});if(!o.ok)throw await c(o);return Br(o,e)},d=e=>Rr({etag:e.etag,key:e.key,lastModified:e.lastModified,metadata:e.metadata,size:e.size,type:e.type},{factory:async()=>{let t=await u(e.key);return new Uint8Array(await t.arrayBuffer())},kind:`lazy`}),f=(e,t)=>{let n;try{n=JSON.parse(t)}catch{n=void 0}if(e<200||e>=300){let t=n?.error;throw t?ri(t):new K(`Provider`,`upload failed (${e})`)}return n},p=async(e,t,n,i)=>{let a=await r({body:t,method:e.method,onProgress:i,signal:n,url:e.url,...e.method===`PUT`?{headers:e.headers}:{fields:e.fields}});if(a.status<200||a.status>=300)throw new K(`Provider`,`upload failed (${a.status})`)},m=async(e,t)=>{let n={name:Ur(e),size:e.size??0,type:e.type||`application/octet-stream`},[r]=(await l({files:[n],op:`presign`,...t?.expiresIn&&{expiresIn:t.expiresIn}},t?.signal)).uploads;if(!r)throw new K(`Provider`,`presign returned no upload target`);let{id:i,key:a,target:s}=r,c=q(e)&&s.method===`PUT`?await o(e):e,u=Gr(e);u.status=`uploading`,u.key=a;let d=[u];await p(s,c,t?.signal,(e,n)=>{u.loaded=e,u.total=n||u.size,u.progress=u.total?e/u.total:0,t?.onProgress?.(Vr(d),d)});let f=await l({completions:[{id:i,key:a}],op:`complete`},t?.signal),[m]=f.files;if(!m){let e=f.errors?.[0];throw e?ri(e.error):new K(`Provider`,`upload did not complete`)}return u.status=`success`,u.progress=1,{etag:m.etag,key:m.key,lastModified:m.lastModified,size:m.size,type:m.type}},h=async(e,n,i)=>{let c=q(n)?ci(await o(n),i?.contentType??n.type):ci(n,i?.contentType),l=await r({body:c.body,headers:{"content-type":c.type||`application/octet-stream`,...await s()},method:`PUT`,onProgress:i?.onProgress?(t,n)=>{let r=Gr(c.body);r.key=e,r.status=`uploading`,r.loaded=t,r.total=n||c.size,r.progress=r.total?t/r.total:0,i.onProgress?.(Vr([r]),[r])}:void 0,signal:i?.signal,url:`${t}${a}op=upload&key=${encodeURIComponent(e)}`});return f(l.status,l.text).file},g=async(e,t)=>{let n=await kr(e,async e=>{try{return{ok:!0,out:await h(e.key,e.body,{contentType:e.contentType,signal:t?.signal})}}catch(n){if(t?.stopOnError)throw n;return{error:K.wrap(n),key:e.key,ok:!1}}},{concurrency:t?.concurrency??i}),r=[],a=[];for(let e of n)e.ok?r.push({contentType:e.out.type,etag:e.out.etag,key:e.out.key,lastModified:e.out.lastModified,size:e.out.size}):a.push({error:e.error,key:e.key});return a.length?{errors:a,uploaded:r}:{uploaded:r}},_=async(e,t)=>{let n=await kr(e,async e=>{try{return{file:await u(e,{as:t?.as,signal:t?.signal}),ok:!0}}catch(n){if(t?.stopOnError)throw n;return{error:K.wrap(n),key:e,ok:!1}}},{concurrency:t?.concurrency??i}),r=[],a=[];for(let e of n)e.ok?r.push(e.file):a.push({error:e.error,key:e.key});return a.length?{downloaded:r,errors:a}:{downloaded:r}},v={capabilities:async e=>(await l({op:`capabilities`},e?.signal)).capabilities,copy:async(e,t,n)=>{await l({from:e,op:`copy`,to:t},n?.signal)},delete:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`delete-many`,stopOnError:t?.stopOnError},t?.signal);return ai({deleted:n.deleted},n.errors)}await l({key:e,op:`delete`},t?.signal)},download:(e,t)=>Array.isArray(e)?_(e,t):u(e,t),exists:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`exists-many`,stopOnError:t?.stopOnError},t?.signal);return ai({existing:n.existing,missing:n.missing},n.errors)}return(await l({key:e,op:`exists`},t?.signal)).exists},head:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`head-many`,stopOnError:t?.stopOnError},t?.signal);return ai({files:n.files.map(d)},n.errors)}let n=await l({key:e,op:`head`},t?.signal);return d(n.file)},list:async e=>{let t=await l({op:`list`,...e?.prefix!==void 0&&{prefix:e.prefix},...e?.cursor!==void 0&&{cursor:e.cursor},...e?.limit!==void 0&&{limit:e.limit},...e?.delimiter!==void 0&&{delimiter:e.delimiter}},e?.signal);return{items:t.items.map(d),...t.prefixes&&{prefixes:t.prefixes},...t.cursor&&{cursor:t.cursor}}},async*listAll(e){let t=e?.cursor;do{let n=await v.list({...e,cursor:t});for(let e of n.items)yield e;({cursor:t}=n)}while(t)},move:async(e,t,n)=>{await l({from:e,op:`move`,to:t},n?.signal)},purge:async(e,t)=>{await l({op:`purge`,...e!==void 0&&{key:e}},t?.signal)},restoreTrashed:async(e,t)=>{let n=await l({key:e,op:`restore-trashed`},t?.signal);return d(n.file)},restoreVersion:async(e,t,n)=>{let r=await l({key:e,op:`restore-version`,...t!==void 0&&{versionId:t}},n?.signal);return d(r.file)},async*search(e,t){let n=e instanceof RegExp?{flags:e.flags,isRegex:!0,pattern:e.source}:{pattern:e},r=await l({op:`search`,...n,...t?.match&&{match:t.match},...t?.prefix!==void 0&&{prefix:t.prefix},...t?.limit!==void 0&&{limit:t.limit},...t?.maxResults!==void 0&&{maxResults:t.maxResults},...t?.caseInsensitive!==void 0&&{caseInsensitive:t.caseInsensitive}},t?.signal);for(let e of r.matches)yield d(e)},signedUploadUrl:async(e,t)=>(await l({expiresIn:t.expiresIn,key:e,op:`signed-upload-url`,...t.contentType&&{contentType:t.contentType},...t.maxSize!==void 0&&{maxSize:t.maxSize},...t.minSize!==void 0&&{minSize:t.minSize}},t.signal)).signed,trashed:async e=>(await l({op:`trashed`},e?.signal)).trashed,upload:(e,t,n)=>Array.isArray(e)?g(e,t):Er(e)?h(e,t,n):m(e,t),url:async(e,t)=>(await l({key:e,op:`url`,...t?.expiresIn!==void 0&&{expiresIn:t.expiresIn},...t?.responseContentDisposition!==void 0&&{responseContentDisposition:t.responseContentDisposition}},t?.signal)).url,versions:async(e,t)=>(await l({key:e,op:`versions`},t?.signal)).versions};return v};const ui=`https://github.com/liria24/nuxt-files-sdk/blob/main/docs/content/4.reference/4.troubleshooting.md`,di={NUXT_FILES_NOT_CONFIGURED:{level:`warning`,message:`The Files registry has not been configured.`,hint:`Check that files.config.ts is loaded by the Nuxt or Nitro integration.`,docs:ui},NUXT_FILES_INVALID_CONFIG:{level:`error`,message:`The Files registry rejected the storage configuration.`,hint:`Check the storage shape in the active files.config.ts environment.`,docs:ui},NUXT_FILES_ADAPTER_INIT_FAILED:{level:`error`,message:`A configured storage adapter could not be initialized.`,hint:`Check the provider package, runtime support, and required configuration.`,docs:ui},NUXT_FILES_GATEWAY_FAILED:{level:`error`,message:`The Files DevTools gateway could not complete a request.`,hint:`Check the Nitro development server and the Files registry diagnostics.`,docs:ui}},fi=e=>!!(e&&typeof e==`object`&&`code`in e&&typeof e.code==`string`&&Object.hasOwn(di,e.code)&&`level`in e&&(e.level===`info`||e.level===`warning`||e.level===`error`)&&`message`in e&&typeof e.message==`string`);var pi=class{storage;prefix=``;#e;#t=/* @__PURE__ */ new Map;#n;#r=0;#i=[void 0];#a;constructor(e){this.#e=e}get hasPrevious(){return this.#i.length>1}get hasNext(){return this.#a!==void 0}get initializing(){return!this.#t.has(this.storage)}navigate(e,t=``){this.storage=e,this.prefix=t,this.reset()}reset(e=!1){this.#o(),this.#i=[void 0],this.#a=void 0,e&&this.#t.clear()}next(){this.hasNext&&(this.#i.push(this.#a),this.#a=void 0,this.#o())}previous(){this.hasPrevious&&(this.#i.pop(),this.#a=void 0,this.#o())}#o(){this.#n?.abort(),this.#r++}capture(){let e=this.#r;return{storage:this.storage,prefix:this.prefix,client:this.#e(this.storage),current:()=>e===this.#r}}async list(){this.#o();let e=this.#n=new AbortController,t=this.capture(),n=this.#i.at(-1);try{let r=this.#t.get(t.storage);if(!r){if(r=await t.client.capabilities({signal:e.signal}),!t.current())return;this.#t.set(t.storage,r)}let i=await t.client.list({prefix:t.prefix,limit:1e3,...n===void 0?{}:{cursor:n},...r.delimiter?{delimiter:`/`}:{},signal:e.signal});return t.current()?(this.#a=i.cursor||void 0,i):void 0}catch(e){if(t.current())throw e;return}}};const J=(e,t)=>{let n=document.querySelector(e);if(!(n instanceof t))throw Error(`Missing DevTools element: ${e}`);return n},mi=J(`#summary`,HTMLElement),hi=J(`#storage-select`,HTMLSelectElement),gi=J(`#breadcrumbs`,HTMLElement),_i=J(`#files`,HTMLTableSectionElement),vi=J(`#browser-status`,HTMLElement),yi=J(`#access-badge`,HTMLElement),bi=J(`#refresh`,HTMLButtonElement),xi=J(`#upload`,HTMLInputElement),Si=J(`.upload-button`,HTMLElement);let Y,X,Ci=0,wi,Ti,Ei,Di,Oi,ki;const Ai=J(`#previous-page`,HTMLButtonElement),ji=J(`#next-page`,HTMLButtonElement),Mi=e=>typeof e==`object`&&!!e,Ni=e=>Mi(e)&&Array.isArray(e.storages)&&e.storages.every(e=>Mi(e)&&(e.name===void 0||typeof e.name==`string`)&&typeof e.adapter==`string`&&Array.isArray(e.plugins)&&e.plugins.every(e=>typeof e==`string`)&&typeof e.initialized==`boolean`)&&Array.isArray(e.diagnostics)&&e.diagnostics.every(fi),Pi=e=>Mi(e)&&typeof e.write==`boolean`&&typeof e.maxUploadSize==`number`,Fi=e=>Mi(e)&&typeof e.token==`string`&&typeof e.expiresAt==`number`,Ii=async()=>{if(new URL(window.location.href).searchParams.get(`host`)===`nuxt-v3`){let e=localStorage.getItem(`__nuxt_dev_token__`);if(!e)throw Error(`Authorize this browser in Nuxt DevTools, then refresh Files.`);let t=await fetch(`./token`,{headers:{"x-nuxt-devtools-token":e}});if(!t.ok)throw Error(`DevTools authentication failed (${t.status}).`);let n=await t.json();if(Fi(n))return n;throw Error(`Files development tools returned an invalid access token.`)}await Di;let e=await Ei?.scope(`nuxt-files-sdk`).rpc.call(`issue-http-token`);if(Fi(e))return e;throw Error(`Files development tools require a trusted DevFrame connection.`)},Li=async()=>Oi&&Oi.expiresAt-Date.now()>1e4?Oi.token:(ki??=Ii().finally(()=>ki=void 0),Oi=await ki,Oi.token),Ri=async()=>({authorization:`Bearer ${await Li()}`}),zi=async(e,t)=>{let n=await fetch(e,{headers:await Ri(),...t&&{signal:t}});if(!n.ok)throw Error(`DevTools request failed (${n.status}).`);return n.json()},Z=new pi(e=>li({endpoint:e===void 0?`./files`:`./files?storage=`+encodeURIComponent(e),headers:Ri})),Q=(e,t=!1)=>{vi.textContent=e,vi.classList.toggle(`error-text`,t)},Bi=async(e,t)=>{await Di,t()&&Ei?.scope(`nuxt-files-sdk`).rpc.callEvent(`report-failure`,e)},Vi=async()=>{let e=Y;await Di,Y===e&&Ei?.scope(`nuxt-files-sdk`).rpc.callEvent(`report-diagnostics`,e.diagnostics)},Hi=e=>{if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e,r=-1;do n/=1024,r++;while(n>=1024&&r<t.length-1);return`${n.toFixed(n>=10?0:1)} ${t[r]}`},Ui=e=>e.slice(Z.prefix.length).replace(/\/$/u,``)||e,Wi=(e,t)=>{let n=document.createElement(`button`);return n.type=`button`,n.className=`row-action`,n.textContent=e,n.addEventListener(`click`,t),n},Gi=()=>{let e=Z.prefix.split(`/`).filter(Boolean),t=[],n=Wi(`Root`,()=>{Z.navigate(Z.storage),$()});n.className=`breadcrumb`,t.push(n);let r=``;for(let n of e){t.push(document.createTextNode(`/`)),r+=`${n}/`;let e=r,i=Wi(n,()=>{Z.navigate(Z.storage,e),$()});i.className=`breadcrumb`,t.push(i)}gi.replaceChildren(...t)},Ki=e=>{let t=document.createElement(`tr`),n=document.createElement(`td`);n.className=`file-name`,n.textContent=Ui(e.key);let r=document.createElement(`td`);r.textContent=Hi(e.size);let i=document.createElement(`td`);i.textContent=e.type||`application/octet-stream`;let a=document.createElement(`td`);a.textContent=e.lastModified?new Date(e.lastModified).toLocaleString():`—`;let o=document.createElement(`td`);return o.className=`actions`,o.append(Wi(`Download`,()=>void Yi(e.key)),...X.write?[Wi(`Delete`,()=>void Xi(e.key))]:[]),t.append(n,r,i,a,o),t},qi=e=>{let t=document.createElement(`tr`),n=document.createElement(`td`);n.className=`file-name`;let r=Wi(`📁 ${Ui(e)}`,()=>{Z.navigate(Z.storage,e),$()});r.className=`folder`,n.append(r);let i=document.createElement(`td`);return i.colSpan=4,i.className=`folder-detail`,i.textContent=`Folder`,t.append(n,i),t},Ji=async(e,t=!1)=>{if(!t&&Y.storages.find(({name:t})=>t===e.storage)?.initialized)return;Ti?.abort();let n=Ti=new AbortController;try{let t=await zi(`./snapshot`,n.signal);e.current()&&!n.signal.aborted&&Ni(t)&&(Y=t,Qi(),Vi())}catch{}},$=async()=>{Ti?.abort();let e=Z.initializing;Gi(),_i.innerHTML=`<tr><td colspan="5" class="empty-state">Loading files…</td></tr>`,Q(`Loading…`),Ai.disabled=!0,ji.disabled=!0;let t=Z.list(),n=Z.capture();try{let e=await t;if(!n.current()||!e)return;let r=[...(e.prefixes??[]).toSorted().map(qi),...e.items.toSorted((e,t)=>e.key.localeCompare(t.key)).map(Ki)];r.length?_i.replaceChildren(...r):_i.innerHTML=`<tr><td colspan="5" class="empty-state">No files in this location.</td></tr>`,Q(`${r.length} item${r.length===1?``:`s`}`),Ai.disabled=!Z.hasPrevious,ji.disabled=!Z.hasNext,Ji(n)}catch(t){if(!n.current())return;_i.innerHTML=`<tr><td colspan="5" class="empty-state">Unable to load files.</td></tr>`;let r=t instanceof Error?t.message:String(t);Q(r,!0),Bi({kind:e?`initialization`:`gateway`,message:r,...Z.storage===void 0?{}:{target:Z.storage}},n.current),Ai.disabled=!Z.hasPrevious,await Ji(n,!0)}},Yi=async e=>{let t=Z.capture();Q(`Downloading ${e}…`);try{let n=window.showSaveFilePicker,r=e.split(`/`).at(-1)||e,i=n?await n({suggestedName:r}):void 0,a=await t.client.download(e,{as:`stream`});if(i){await a.stream().pipeTo(await i.createWritable()),t.current()&&Q(`Downloaded ${e}`);return}if(a.size>67108864)throw Error(`Large downloads require a browser with streaming file save support.`);let o=URL.createObjectURL(await a.blob()),s=document.createElement(`a`);s.href=o,s.download=r,s.click(),setTimeout(()=>URL.revokeObjectURL(o),6e4),t.current()&&Q(`Downloaded ${e}`)}catch(e){if(!t.current())return;Q(e instanceof Error?e.message:String(e),!0)}},Xi=async e=>{let t=Z.capture();if(window.confirm(`Delete ${e}? This cannot be undone.`)){Q(`Deleting ${e}…`);try{if(await t.client.delete(e),!t.current())return;Z.reset(),await $()}catch(n){if(!t.current())return;let r=n instanceof Error?n.message:String(n);Q(r,!0),Bi({kind:`delete`,message:r,target:e},t.current)}}},Zi=async e=>{let t=Z.capture(),n=`${t.prefix}${e.name}`;if(e.size>X.maxUploadSize){let r=`${e.name} exceeds the ${Hi(X.maxUploadSize)} development upload limit.`;Q(r,!0),Bi({kind:`upload`,message:r,target:n},t.current);return}let r=t.client;try{if(!window.confirm(`Upload ${n}? This may replace an existing file.`)||(Q(`Uploading ${n}…`),await r.upload(n,e,{contentType:e.type||`application/octet-stream`}),!t.current()))return;Z.reset(),await $()}catch(e){if(!t.current())return;let r=e instanceof Error?e.message:String(e);Q(r,!0),Bi({kind:`upload`,message:r,target:n},t.current)}},Qi=()=>{mi.textContent=`${Y.storages.length} configured storage${Y.storages.length===1?``:`s`}`,J(`#storages`,HTMLTableSectionElement).replaceChildren(...Y.storages.map(e=>{let t=document.createElement(`tr`);for(let n of[e.name??`Single storage`,e.adapter,e.plugins.join(`, `)||`—`]){let e=document.createElement(`td`);e.textContent=n,t.append(e)}let n=document.createElement(`td`),r=document.createElement(`span`);return r.className=`status ${e.initialized?`success`:`idle`}`,r.textContent=e.initialized?`Initialized`:`Not initialized`,n.append(r),t.append(n),t}));let e=J(`#diagnostics`,HTMLElement);Y.diagnostics.length?e.replaceChildren(...Y.diagnostics.map(e=>{let t=document.createElement(`p`);t.className=e.level;let n=document.createElement(`strong`);if(n.textContent=`${e.code}: ${e.message}`,t.append(n),e.hint&&t.append(document.createElement(`br`),e.hint),e.docs){let n=document.createElement(`a`);n.href=e.docs,n.target=`_blank`,n.rel=`noreferrer`,n.textContent=`Troubleshooting`,t.append(document.createElement(`br`),n)}return t})):e.textContent=`No integration diagnostics.`},$i=async()=>{let e=++Ci;wi?.abort(),Ti?.abort();let t=wi=new AbortController;Z.reset(!0);let n=Z.capture();try{let[r,i]=await Promise.all([zi(`./snapshot`,t.signal),zi(`./files?op=devtools`,t.signal)]);if(e!==Ci||!n.current())return;if(!Ni(r)||!Pi(i))throw Error(`Files development tools returned an invalid response.`);Y=r,X=i,Qi(),Vi();let a=Z.storage;hi.replaceChildren(...Y.storages.map(e=>{let t=document.createElement(`option`);return t.value=e.name??``,t.textContent=e.name??`Single storage`,t})),hi.hidden=Y.storages.length<2;let o=Y.storages.some(({name:e})=>e===a)?a:Y.storages[0]?.name;Z.navigate(o,o===a?Z.prefix:``),hi.value=Z.storage??``,yi.textContent=X.write?`Read & write`:`Read only`,yi.className=`access-badge ${X.write?`write`:``}`,yi.hidden=!1,xi.disabled=!X.write,Si.hidden=!X.write,Y.storages.length?await $():Q(`No configured storage.`,!0)}catch(t){if(e!==Ci||!n.current())return;mi.textContent=`Unable to load Files development tools`;let r=t instanceof Error?t.message:String(t);Q(r,!0),Bi({kind:`gateway`,message:r},n.current)}},ea=async()=>{try{let e=Y.diagnostics.length?Y.diagnostics.map(e=>[`${e.code} [${e.level}]: ${e.message}`,e.hint?`Hint: ${e.hint}`:``,e.docs?`Docs: ${e.docs}`:``].filter(Boolean).join(`
5
+ `))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await v(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(/* @__PURE__ */ Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,"x-birpc-session":t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Kn(e,t){let{channel:n,rpcOptions:r={}}=t;return y(e,{...n,timeout:-1,...r,proxify:!1})}function qn(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,l=!1,u=`connecting`,d=null,f=Promise.withResolvers();function p(e,t=null){if(t?d=t:e===`connected`&&(d=null),e===u)return;let n=u;u=e,i.emit(c.client.connectionStatus,e,n)}let m=/* @__PURE__ */ new Set;function h(e){for(let t of[...m])t.reject(e)}function g(){return u===`disconnected`||u===`error`?new W(`connection`,`[devframe] Not connected to the devframe server`,{cause:d??void 0}):u===`unauthorized`?new W(`auth`,`[devframe] Not authorized by the devframe server`,{cause:d??void 0}):null}function _(e,t){return new Promise((n,r)=>{let a=!1,o,l={reject(e){a||(u(),i.emit(c.client.error,e,t),r(e))}};function u(){a=!0,m.delete(l),o&&clearTimeout(o)}m.add(l),s>0&&(o=setTimeout(()=>{l.reject(new W(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(u(),n(e))},e=>{if(a)return;u();let n=e instanceof Error?e:Error(String(e));i.emit(c.client.error,n,t),r(n)})})}let v=/* @__PURE__ */ new Map;for(let e of r.jsonSerializableMethods??[])v.set(e,{jsonSerializable:!0});let y=e.createChannel({definitions:v,onError(e){p(`error`,e),i.emit(c.client.connectionError,e),h(new W(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){u!==`error`&&p(`disconnected`),h(new W(`connection`,`[devframe] Disconnected from the devframe server`,{cause:d??void 0}))}}),b=Kn(a.functions,{channel:y,rpcOptions:o});a.register({name:c.broadcast.authRevoked,type:`event`,handler:()=>{l=!1;let e=new W(`auth`,`[devframe] The devframe server revoked this client's trust`);p(`unauthorized`,e),i.emit(c.client.connectionError,e),h(e),i.emit(c.client.isTrustedUpdated,!1)}});let x=n;async function S(e){x=e;let t=await b.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(l=t.isTrusted,l)f.resolve(!0),p(`connected`);else{let e=new W(`auth`,`[devframe] The devframe server refused this client's credentials`);p(`unauthorized`,e),i.emit(c.client.connectionError,e)}return i.emit(c.client.isTrustedUpdated,l),t.isTrusted}async function C(e){let t=(await b.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(x=t,l=!0,f.resolve(!0),p(`connected`),i.emit(c.client.isTrustedUpdated,!0)),t}async function w(e={}){await b.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ee(){return l?!0:S(x??``)}async function T(e=6e4){if(l&&f.resolve(!0),e<=0)return f.promise;let t;try{return await Promise.race([f.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(/* @__PURE__ */ Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),l}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return l},get status(){return u},get connectionError(){return d},requestTrust:ee,requestTrustWithToken:S,requestTrustWithCode:C,requestAuthCode:w,ensureTrusted:T,call:(...e)=>{let t=String(e[0]),n=g();return n?(i.emit(c.client.error,n,t),Promise.reject(n)):_(b.$call(...e),t)},callEvent:(...e)=>{let t=g();if(t){i.emit(c.client.error,t,String(e[0]));return}return b.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=g();return n?(i.emit(c.client.error,n,t),Promise.reject(n)):_(b.$callOptional(...e),t)},close:()=>{y.close()}}}function Jn(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Yn(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Jn(n.sse,r??`./`,location);return qn({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Gn({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Xn(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Zn(r)?Xn(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Zn(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function Qn(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function $n(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function er(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function tr(e){if(e.error)throw Xn(e.error);return e.output}function nr(e){return e.some(e=>e!=null)}function rr(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function ir(e,t){let n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?Qt(e):e}function a(e,t){return i(rr(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return er(r)?tr(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(Qn(r)){if(nr(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if($n(r)){let e=le(n),i=r.records[e];if(i)return tr(await s(i,r.serialization));if(r.fallback)return tr(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!nr(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function ar(e){let t=ir(await e.fetchJsonFromBases(`__rpc-dump/index.json`),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}function or(e,t){return`${e}${t}`}function sr(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map;e.client.register({name:c.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(or(e,n))?._push(r,i)}}),e.client.register({name:c.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=or(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:c.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=or(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(c.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(``);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=or(n,r),o=t.get(a);if(o)return o;let s=rn({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(c.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=or(t,r),a=n.get(i);if(a)return a;let o=nn({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function cr(){}const lr=/* @__PURE__ */ new Map;function ur(e){let t=e.url;e.authToken&&(t=`${t}?${un}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=cr,onError:i=cr,onDisconnected:a=cr,definitions:o=lr}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Vn(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(/* @__PURE__ */ Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function dr(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return ge(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function fr(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=dr(n.websocket,r??`./`,location);return qn({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>ur({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function pr(e){return e.includes(`:`)}function G(e,t){return pr(t)?t:`${e}:${t}`}function mr(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function hr(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return mr(a)}function gr(e,t){return{global:hr(e,t,`global`),project:hr(e,t,`project`)}}function _r(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(pr(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(G(t,n),...r)),callEvent:((n,...r)=>e.callEvent(G(t,n),...r)),callOptional:((n,...r)=>e.callOptional(G(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(G(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(G(t,n),r,i),upload:(n,r)=>e.streaming.upload(G(t,n),r)}},settings:gr(e,t),scope:e.scope}}function vr(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function yr(e,t={}){let n=t.modelContext??vr();if(!n)return()=>{};let r=n,i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map;function o(t,n){let o=on(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=b(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:C(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>br(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function br(e,t,n){try{let r=ee(n,e.args?.length);return{content:[{type:`text`,text:xr(await(await vn(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:Sr(e)}]}}}function xr(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function Sr(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function Cr(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function wr(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=ue(),a=Array.isArray(t)?t:[t],o=await Nn(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new dn({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new yn(f),m=e.webmcp===!1?void 0:yr(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(he(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let v={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},y=Cr(e.transport??`auto`,s),b=y===`static`?await ar({fetchJsonFromBases:_}):y===`sse`?Yn({...v,sseOptions:e.sseOptions}):fr({...v,wsOptions:e.wsOptions}),x;try{x=new BroadcastChannel(`devframe-auth`)}catch{}let S,C=!1;function w(e){return((...t)=>C||!S?e(...t):S.then(()=>e(...t)))}function ee(){g=!0;try{h?.(),m?.()}finally{try{x?.close()}finally{b.close?.()}}}let T={events:i,get isTrusted(){return b.isTrusted},get status(){return b.status},get connectionError(){return b.connectionError},get transport(){return b.transport??y},get connection(){return o},connectionMeta:s,ensureTrusted:b.ensureTrusted,requestTrust:b.requestTrust,requestTrustWithToken:async e=>(kn(e),o={...o,authToken:e},b.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await b.requestTrustWithCode(e);if(!t)return!1;kn(t),o={...o,authToken:t};try{x?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>b.requestAuthCode(e),call:w(b.call),callEvent:w(b.callEvent),callOptional:w(b.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:ee};T.sharedState=zn(T),T.streaming=sr(T),T.services=Rn(T);let E=/* @__PURE__ */ new Map;T.scope=(e=>{if(!e)return T;let t=E.get(e);return t||(t=_r(T,e),E.set(e,t)),t}),f.rpc=T;function te(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ne(){if(e.simpleAuth!==!1&&te()&&typeof globalThis.prompt==`function`)for(await T.requestAuthCode().catch(()=>{});!T.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await T.requestTrustWithCode(t))return}}async function re(){let t=await b.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await Ln(T,{param:n}):!1;t||r||T.isTrusted||await ne()}return S=re().then(()=>{C=!0},()=>{C=!0}),s.mcp&&import(`./browser-agent-rpc-BXhoSh1z-DRoP5jHQ.js`).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(T))}).catch(()=>{}),x&&(x.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&T.requestTrustWithToken(e.data.authToken)}),T}const Tr=wr;var Er=e=>typeof e==`string`,Dr=e=>typeof e==`function`,Or=e=>typeof e==`object`&&!!e,kr=Symbol.for(`files-sdk.FilesError`),K=class e extends Error{static[Symbol.hasInstance](t){return this===e?Or(t)&&kr in t:Function.prototype[Symbol.hasInstance].call(this,t)}code;aborted;timedOut;permanent;applied;appliedEtag;cause;constructor(e,t,n,r){super(t),this.name=`FilesError`,this.code=e,this.aborted=r?.aborted===!0,this.timedOut=r?.timedOut===!0,this.permanent=r?.permanent===!0,this.applied=r?.applied===!0,r?.appliedEtag!==void 0&&(this.appliedEtag=r.appliedEtag),this.cause=n}static applied(t,n){let r=e.wrap(t);return new e(r.code,r.message,t,{aborted:r.aborted,applied:!0,...n!==void 0&&{appliedEtag:n},permanent:r.permanent,timedOut:r.timedOut})}static wrap(t,n=`Provider`){if(t instanceof e)return t;let r=t instanceof Error?t.message:String(t);return new e(n,r,t)}};Object.defineProperty(K.prototype,kr,{value:!0});async function Ar(e,t,{concurrency:n=1/0,stopOnError:r=!0,signal:i}={}){return new Promise((a,o)=>{if(e[Symbol.iterator]===void 0&&e[Symbol.asyncIterator]===void 0)throw TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`);if(typeof t!=`function`)throw TypeError(`Mapper function is required`);if(!(Number.isSafeInteger(n)&&n>=1||n===1/0))throw TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);let s=[],c=[],l=/* @__PURE__ */ new Map,u=!1,d=!1,f=!1,p=0,m=0,h=e[Symbol.asyncIterator]===void 0?e[Symbol.iterator]():e[Symbol.asyncIterator](),g=()=>{y(i.reason)},_=()=>{i?.removeEventListener(`abort`,g)},v=e=>{a(e),_()},y=e=>{d||(u=!0,d=!0,o(e),_(),f||Mr(h))};if(i){if(i.aborted){y(i.reason);return}i.addEventListener(`abort`,g,{once:!0})}let b=async()=>{if(d)return;let e=f?{done:!0}:await h.next(),n=m;if(m++,e.done){if(f=!0,p===0&&!d){if(!r&&c.length>0){y(AggregateError(c));return}if(d=!0,l.size===0){v(s);return}let e=[];for(let[t,n]of s.entries())l.get(t)!==jr&&e.push(n);v(e)}return}p++,(async()=>{try{let r=await e.value;if(d)return;let i=await t(r,n);i===jr&&l.set(n,i),s[n]=i}catch(e){if(r){y(e);return}c.push(e)}p--;try{await b()}catch(e){y(e)}})()};(async()=>{for(let e=0;e<n;e++){try{await b()}catch(e){y(e);break}if(f||u)break}})()})}const jr=Symbol(`skip`);async function Mr(e){try{await e.return?.()}catch{}}var Nr=(e,t)=>{if(e!==206)throw new K(`Provider`,`${t}: the server ignored the requested byte range (HTTP ${e}, expected 206 Partial Content). The object's host does not support range requests.`,void 0,{permanent:!0})},Pr=/* @__PURE__ */ new Set([404]),Fr=/* @__PURE__ */ new Set([401,403]),Ir=/* @__PURE__ */ new Set([409,412]),Lr=(e,t,n)=>t&&e.codes.notFound.has(t)||Pr.has(n??0)?`NotFound`:t&&e.codes.unauthorized.has(t)||Fr.has(n??0)?`Unauthorized`:t&&e.codes.conflict.has(t)||Ir.has(n??0)?`Conflict`:`Provider`,Rr=e=>{let t={Conflict:`Conflict`,NotFound:`Not found`,Provider:e.providerLabel,Unauthorized:`Unauthorized`};return n=>{if(n instanceof K)return n;let{code:r,status:i,message:a}=e.extract(n),o=Lr(e,r,i);return new K(o,a??t[o],n)}},zr=async e=>{let t=e.getReader(),n=[],r=0;for(;;){let{done:e,value:i}=await t.read();if(e)break;i&&(n.push(i),r+=i.byteLength)}let i=new Uint8Array(r),a=0;for(let e of n)i.set(e,a),a+=e.byteLength;return i},Br=e=>new ReadableStream({start(t){t.enqueue(e),t.close()}}),Vr=e=>new ReadableStream({async start(t){let n=await e;t.enqueue(n),t.close()}}),Hr=()=>new K(`Provider`,`StoredFile body was already consumed via stream(). For multi-format access, call text()/arrayBuffer()/blob() before stream() — those drain into a cache.`),Ur=()=>{try{return new Blob([/* @__PURE__ */ new Uint8Array]).size===0}catch{return!1}},Wr=async e=>Dr(e.arrayBuffer)?new Uint8Array(await e.arrayBuffer()):await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(new Uint8Array(r.result)),r.onerror=()=>n(r.error??/* @__PURE__ */ Error(`FileReader failed`)),r.readAsArrayBuffer(e)}),Gr=(e,t,n)=>{let r,i,a=!1,o,s=async e=>{let t=await e();return r=t,t},c=()=>{if(r)return Promise.resolve(r);if(i)return i;if(o){let e=o;return i=s(async()=>Wr(await e)),i}if(t.kind===`buffer`)return r=t.data,Promise.resolve(r);if(t.kind===`lazy`)return i=s(t.factory),i;if(a)return Promise.reject(Hr());let e=t.factory();return i=s(()=>zr(e)),i};return{async arrayBuffer(){let e=await c();return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)},async blob(){if(o)return await o;if(n&&r===void 0&&i===void 0&&!Ur())return o=n(),await o;let t=await c();try{return new Blob([t],{type:e.type})}catch(e){throw new K(`Provider`,`this runtime's Blob cannot wrap bytes (React Native). Call blob() before text()/arrayBuffer(), or read the download with arrayBuffer() instead.`,e)}},etag:e.etag,key:e.key,lastModified:e.lastModified,metadata:e.metadata,name:e.key,size:e.size,stream(){if(r)return Br(r);if(i)return Vr(i);if(t.kind===`stream`){if(a)throw Hr();return a=!0,t.factory()}return Vr(c())},async text(){let e=await c();return new TextDecoder().decode(e)},type:e.type}},Kr=e=>{if(!e)return{};try{let t=Uint8Array.from(atob(e),e=>e.codePointAt(0)??0);return JSON.parse(new TextDecoder().decode(t))}catch{return{}}},qr=(e,t)=>{let n=Kr(e.headers.get(`x-files-meta`)),r=e.headers.get(`content-length`),i=r===null?0:Number(r),{body:a}=e;return Gr({etag:e.headers.get(`etag`)??n.etag,key:n.key??t,lastModified:n.lastModified,metadata:n.metadata,size:i,type:e.headers.get(`content-type`)??`application/octet-stream`},a?{factory:()=>a,kind:`stream`}:{factory:async()=>new Uint8Array(await e.arrayBuffer()),kind:`lazy`},a?void 0:()=>e.blob())},q=e=>Or(e)&&!(e instanceof Blob)&&`uri`in e&&Er(e.uri),Jr=e=>{let t=0,n=0;for(let r of e)t+=r.loaded,n+=r.total;return{fraction:n===0?0:t/n,loaded:t,total:n}},Yr=e=>e.name?e.name:e.uri.split(`?`)[0]?.split(`/`).pop()||`blob`,Xr=e=>e instanceof File?e.name:q(e)?Yr(e):`blob`,Zr=e=>e instanceof Blob?{size:e.size,type:e.type}:q(e)?{size:e.size??0,type:e.type??``}:{size:e.byteLength,type:``},Qr=e=>{let{size:t,type:n}=Zr(e);return{file:e,loaded:0,name:Xr(e),progress:0,size:t,status:`pending`,total:t,type:n||`application/octet-stream`}};AbortSignal.any;var $r=e=>e instanceof K?e:e instanceof Error?new K(`Provider`,`Operation aborted: ${e.message}`,e,{aborted:!0}):new K(`Provider`,e===void 0?`Operation aborted`:`Operation aborted: ${String(e)}`,e,{aborted:!0}),ei=e=>e instanceof Blob?e.size:q(e)?e.size??0:e.byteLength,ti=e=>e instanceof Blob||q(e)?e:new Blob([e]),ni=e=>{if(q(e))throw new K(`Provider`,`a NativeFileRef body requires a presigned-POST target; resolve it to a Blob first`);return e},ri=e=>{if(e.method===`POST`&&e.fields){let t=new FormData;for(let[n,r]of Object.entries(e.fields))t.append(n,r);return e.body&&t.append(`file`,ti(e.body)),t}return ni(e.body)},ii=e=>new Promise((t,n)=>{if(e.signal?.aborted){n($r(e.signal.reason));return}let r=new XMLHttpRequest;if(r.open(e.method,e.url,!0),e.headers&&!(e.method===`POST`&&e.fields))for(let[t,n]of Object.entries(e.headers))r.setRequestHeader(t,n);e.onProgress&&r.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(t.loaded,t.total)});let i=()=>r.abort(),a=()=>e.signal?.removeEventListener(`abort`,i);r.addEventListener(`load`,()=>{a(),t({status:r.status,text:r.responseText})}),r.addEventListener(`error`,()=>{a(),n(new K(`Provider`,`network error during upload`))}),r.addEventListener(`abort`,()=>{a(),n($r(e.signal?.reason))}),e.signal?.addEventListener(`abort`,i,{once:!0}),r.send(ri(e))}),ai=e=>async t=>{let n=t.body?ei(t.body):0;t.onProgress?.(0,n);let r;if(t.method===`POST`&&t.fields){let e=new FormData;for(let[n,r]of Object.entries(t.fields))e.append(n,r);t.body&&e.append(`file`,ti(t.body)),r=e}else r=ni(t.body);let i=await e(t.url,{body:r,headers:t.method===`POST`&&t.fields?void 0:t.headers,method:t.method,signal:t.signal});return t.onProgress?.(n,n),{status:i.status,text:await i.text()}},oi=e=>typeof XMLHttpRequest>`u`?ai(e):ii,si=`/api/files`,ci=4,li=e=>{switch(e){case`NotFound`:return`NotFound`;case`Unauthorized`:case`Forbidden`:return`Unauthorized`;case`Conflict`:return`Conflict`;case`ReadOnly`:return`ReadOnly`;default:return`Provider`}},ui=e=>new K(li(e.code),e.message,void 0,{aborted:e.aborted,permanent:e.code===`Validation`,timedOut:e.timedOut}),di=e=>e?.length?e.map(e=>({error:ui(e.error),key:e.key})):void 0,fi=(e,t)=>{let n=di(t);return n?{...e,errors:n}:e},pi=Rr({codes:{conflict:/* @__PURE__ */ new Set,notFound:/* @__PURE__ */ new Set,unauthorized:/* @__PURE__ */ new Set},extract:e=>{let t=e instanceof Response?e.status:void 0;return{message:`storage responded ${String(t)}`,status:t}},providerLabel:`files-sdk/client`}),mi=e=>({body:e,size:e.size,type:e.type}),hi=e=>e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),gi=(e,t)=>{if(e instanceof Blob)return mi(t&&e.type!==t?new Blob([e],{type:t}):e);if(Er(e))return mi(new Blob([e],t?{type:t}:void 0));let n=hi(e);try{return mi(new Blob([n],t?{type:t}:void 0))}catch{return{body:n,size:n.byteLength,type:t??``}}},_i=(e,t)=>t?.aborted===!0||e instanceof K&&e.aborted||Or(e)&&`name`in e&&e.name===`AbortError`,vi=(e,t,n)=>{e.status=_i(t,n)?`aborted`:`error`,e.error=K.wrap(t)},yi=(e,t)=>{e.status=`success`,e.key=t,e.loaded=e.total,e.progress=1},bi=(e,t,n)=>{e.loaded=t,e.total=n||e.size,e.progress=e.total?t/e.total:0},xi=(e,t)=>{let n=[e];return{report:()=>t?.(Jr(n),n),state:e}},Si=(e,t)=>q(e)?{ref:e}:{norm:gi(e,t)},Ci=(e,t)=>{let n=Qr(t.ref??t.norm.body);return n.key=e,t.norm?.type&&(n.type=t.norm.type),n},wi=(e={})=>{let t=e.endpoint??si,n=e.fetchImpl??fetch,r=e.transport??oi(n),i=e.concurrency??ci,a=t.includes(`?`)?`&`:`?`,o=async e=>{let t=await n(e.uri);if(!t.ok)throw new K(`Provider`,`could not read upload source ${e.uri} (${t.status})`);return t.blob()},s=async()=>{let t=Dr(e.headers)?await e.headers():e.headers;return t?Object.fromEntries(new Headers(t).entries()):{}},c=async e=>{try{let t=await e.json();if(t.error?.code)return ui(t.error)}catch{}return e.redirected?pi(e):new K(`Provider`,`gateway responded ${e.status}`)},l=async(e,r)=>{let i=await n(t,{body:JSON.stringify(e),headers:{"content-type":`application/json`,...await s()},method:`POST`,signal:r});if(!i.ok)throw await c(i);return await i.json()},u=async(e,r)=>{let i=await s();r?.range&&(i.range=`bytes=${r.range.start}-${r.range.end??``}`);let o=await n(`${t}${a}op=download&key=${encodeURIComponent(e)}`,{headers:i,method:`GET`,signal:r?.signal});if(!o.ok)throw await c(o);return r?.range&&Nr(o.status,`files-sdk/client`),qr(o,e)},d=e=>Gr({etag:e.etag,key:e.key,lastModified:e.lastModified,metadata:e.metadata,size:e.size,type:e.type},{factory:async()=>{let t=await u(e.key);return new Uint8Array(await t.arrayBuffer())},kind:`lazy`}),f=(e,t)=>{let n;try{n=JSON.parse(t)}catch{n=void 0}if(e<200||e>=300){let t=n?.error;throw t?ui(t):new K(`Provider`,`upload failed (${e})`)}return n},p=async(e,t,n,i)=>{let a=await r({body:t,method:e.method,onProgress:i,signal:n,url:e.url,...e.method===`PUT`?{headers:e.headers}:{fields:e.fields}});if(a.status<200||a.status>=300)throw new K(`Provider`,`upload failed (${a.status})`)},m=async(e,t)=>{let n=t?.contentType||e.type||`application/octet-stream`,{report:r,state:i}=xi(Qr(e),t?.onProgress);i.type=n,i.status=`uploading`,r();try{let[a]=(await l({files:[{name:Xr(e),size:e.size??0,type:n}],op:`presign`,...t?.expiresIn&&{expiresIn:t.expiresIn}},t?.signal)).uploads;if(!a)throw new K(`Provider`,`presign returned no upload target`);let{id:s,key:c,target:u}=a;i.key=c;let d=q(e)&&u.method===`PUT`?await o(e):e;await p(u,d,t?.signal,(e,t)=>{bi(i,e,t),r()});let f=await l({completions:[{id:s,key:c}],op:`complete`},t?.signal),[m]=f.files;if(!m){let e=f.errors?.[0];throw e?ui(e.error):new K(`Provider`,`upload did not complete`)}return yi(i,m.key),r(),{etag:m.etag,key:m.key,lastModified:m.lastModified,size:m.size,type:m.type}}catch(e){throw vi(i,e,t?.signal),r(),e}},h=async(e,n,i,c)=>{let{report:l,state:u}=c;u.status=`uploading`,l();try{let c=n.ref?gi(await o(n.ref),i?.contentType??n.ref.type):n.norm;u.size=c.size,u.total=c.size;let d=await r({body:c.body,headers:{"content-type":c.type||`application/octet-stream`,...await s()},method:`PUT`,onProgress:(e,t)=>{bi(u,e,t),l()},signal:i?.signal,url:`${t}${a}op=upload&key=${encodeURIComponent(e)}`}),p=f(d.status,d.text);return yi(u,p.file.key),l(),p.file}catch(e){throw vi(u,e,i?.signal),l(),e}},g=(e,t,n)=>{let r=Si(t,n?.contentType);return h(e,r,n,xi(Ci(e,r),n?.onProgress))},_=async(e,t)=>{let n=e.map(e=>{let t=Si(e.body,e.contentType);return{item:e,prepared:t,state:Ci(e.key,t)}}),r=n.map(e=>e.state),a=()=>t?.onProgress?.(Jr(r),r),o;try{o=await Ar(n,async({item:e,prepared:n,state:r})=>{try{return{ok:!0,out:await h(e.key,n,{contentType:e.contentType,signal:t?.signal},{report:a,state:r})}}catch(n){if(t?.stopOnError)throw n;return{error:K.wrap(n),key:e.key,ok:!1}}},{concurrency:t?.concurrency??i})}catch(e){let t=r.filter(e=>e.status===`pending`);for(let n of t)n.status=`aborted`,n.error=new K(`Provider`,`upload not started: an earlier upload in the batch failed`,e,{aborted:!0});throw t.length>0&&a(),e}let s=[],c=[];for(let e of o)e.ok?s.push({contentType:e.out.type,etag:e.out.etag,key:e.out.key,lastModified:e.out.lastModified,size:e.out.size}):c.push({error:e.error,key:e.key});return c.length?{errors:c,uploaded:s}:{uploaded:s}},v=async(e,t)=>{let n=await Ar(e,async e=>{try{return{file:await u(e,{as:t?.as,signal:t?.signal}),ok:!0}}catch(n){if(t?.stopOnError)throw n;return{error:K.wrap(n),key:e,ok:!1}}},{concurrency:t?.concurrency??i}),r=[],a=[];for(let e of n)e.ok?r.push(e.file):a.push({error:e.error,key:e.key});return a.length?{downloaded:r,errors:a}:{downloaded:r}},y={capabilities:async e=>(await l({op:`capabilities`},e?.signal)).capabilities,copy:async(e,t,n)=>{await l({from:e,op:`copy`,to:t},n?.signal)},delete:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`delete-many`,stopOnError:t?.stopOnError},t?.signal);return fi({deleted:n.deleted},n.errors)}await l({key:e,op:`delete`},t?.signal)},download:(e,t)=>Array.isArray(e)?v(e,t):u(e,t),exists:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`exists-many`,stopOnError:t?.stopOnError},t?.signal);return fi({existing:n.existing,missing:n.missing},n.errors)}return(await l({key:e,op:`exists`},t?.signal)).exists},head:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`head-many`,stopOnError:t?.stopOnError},t?.signal);return fi({files:n.files.map(d)},n.errors)}let n=await l({key:e,op:`head`},t?.signal);return d(n.file)},list:async e=>{let t=await l({op:`list`,...e?.prefix!==void 0&&{prefix:e.prefix},...e?.cursor!==void 0&&{cursor:e.cursor},...e?.limit!==void 0&&{limit:e.limit},...e?.delimiter!==void 0&&{delimiter:e.delimiter}},e?.signal);return{items:t.items.map(d),...t.prefixes&&{prefixes:t.prefixes},...t.cursor&&{cursor:t.cursor}}},async*listAll(e){let t=e?.cursor;do{let n=await y.list({...e,cursor:t});for(let e of n.items)yield e;({cursor:t}=n)}while(t)},move:async(e,t,n)=>{await l({from:e,op:`move`,to:t},n?.signal)},purge:async(e,t)=>{await l({op:`purge`,...e!==void 0&&{key:e}},t?.signal)},restoreTrashed:async(e,t)=>{let n=await l({key:e,op:`restore-trashed`},t?.signal);return d(n.file)},restoreVersion:async(e,t,n)=>{let r=await l({key:e,op:`restore-version`,...t!==void 0&&{versionId:t}},n?.signal);return d(r.file)},async*search(e,t){let n=e instanceof RegExp?{flags:e.flags,isRegex:!0,pattern:e.source}:{pattern:e},r=await l({op:`search`,...n,...t?.match&&{match:t.match},...t?.prefix!==void 0&&{prefix:t.prefix},...t?.limit!==void 0&&{limit:t.limit},...t?.maxResults!==void 0&&{maxResults:t.maxResults},...t?.caseInsensitive!==void 0&&{caseInsensitive:t.caseInsensitive}},t?.signal);for(let e of r.matches)yield d(e)},signedUploadUrl:async(e,t)=>(await l({expiresIn:t.expiresIn,key:e,op:`signed-upload-url`,...t.contentType&&{contentType:t.contentType},...t.maxSize!==void 0&&{maxSize:t.maxSize},...t.minSize!==void 0&&{minSize:t.minSize}},t.signal)).signed,trashed:async e=>(await l({op:`trashed`},e?.signal)).trashed,upload:(e,t,n)=>Array.isArray(e)?_(e,t):Er(e)?g(e,t,n):m(e,t),url:async(e,t)=>(await l({key:e,op:`url`,...t?.expiresIn!==void 0&&{expiresIn:t.expiresIn},...t?.responseContentDisposition!==void 0&&{responseContentDisposition:t.responseContentDisposition}},t?.signal)).url,versions:async(e,t)=>(await l({key:e,op:`versions`},t?.signal)).versions};return y};const Ti=`https://github.com/liria24/nuxt-files-sdk/blob/main/docs/content/4.reference/4.troubleshooting.md`,Ei={NUXT_FILES_NOT_CONFIGURED:{level:`warning`,message:`The Files registry has not been configured.`,hint:`Check that files.config.ts is loaded by the Nuxt or Nitro integration.`,docs:Ti},NUXT_FILES_INVALID_CONFIG:{level:`error`,message:`The Files registry rejected the storage configuration.`,hint:`Check the storage shape in the active files.config.ts environment.`,docs:Ti},NUXT_FILES_ADAPTER_INIT_FAILED:{level:`error`,message:`A configured storage adapter could not be initialized.`,hint:`Check the provider package, runtime support, and required configuration.`,docs:Ti},NUXT_FILES_GATEWAY_FAILED:{level:`error`,message:`The Files DevTools gateway could not complete a request.`,hint:`Check the Nitro development server and the Files registry diagnostics.`,docs:Ti}},Di=e=>!!(e&&typeof e==`object`&&`code`in e&&typeof e.code==`string`&&Object.hasOwn(Ei,e.code)&&`level`in e&&(e.level===`info`||e.level===`warning`||e.level===`error`)&&`message`in e&&typeof e.message==`string`),Oi=`/__nuxt-files-api/snapshot`,ki=`/__nuxt-files-api/files`;var Ai=class{storage;prefix=``;#e;#t=/* @__PURE__ */ new Map;#n;#r=0;#i=[void 0];#a;constructor(e){this.#e=e}get hasPrevious(){return this.#i.length>1}get hasNext(){return this.#a!==void 0}get initializing(){return!this.#t.has(this.storage)}navigate(e,t=``){this.storage=e,this.prefix=t,this.reset()}reset(e=!1){this.#o(),this.#i=[void 0],this.#a=void 0,e&&this.#t.clear()}next(){this.hasNext&&(this.#i.push(this.#a),this.#a=void 0,this.#o())}previous(){this.hasPrevious&&(this.#i.pop(),this.#a=void 0,this.#o())}#o(){this.#n?.abort(),this.#r++}capture(){let e=this.#r;return{storage:this.storage,prefix:this.prefix,client:this.#e(this.storage),current:()=>e===this.#r}}async list(){this.#o();let e=this.#n=new AbortController,t=this.capture(),n=this.#i.at(-1);try{let r=this.#t.get(t.storage);if(!r){if(r=await t.client.capabilities({signal:e.signal}),!t.current())return;this.#t.set(t.storage,r)}let i=await t.client.list({prefix:t.prefix,limit:1e3,...n===void 0?{}:{cursor:n},...r.delimiter?{delimiter:`/`}:{},signal:e.signal});return t.current()?(this.#a=i.cursor||void 0,i):void 0}catch(e){if(t.current())throw e;return}}};const J=(e,t)=>{let n=document.querySelector(e);if(!(n instanceof t))throw Error(`Missing DevTools element: ${e}`);return n},ji=J(`#summary`,HTMLElement),Mi=J(`#storage-select`,HTMLSelectElement),Ni=J(`#breadcrumbs`,HTMLElement),Pi=J(`#files`,HTMLTableSectionElement),Fi=J(`#browser-status`,HTMLElement),Ii=J(`#access-badge`,HTMLElement),Li=J(`#refresh`,HTMLButtonElement),Ri=J(`#upload`,HTMLInputElement),zi=J(`.upload-button`,HTMLElement);let Y,X,Bi=0,Vi,Hi,Ui,Wi,Gi,Ki;const qi=J(`#previous-page`,HTMLButtonElement),Ji=J(`#next-page`,HTMLButtonElement),Yi=e=>typeof e==`object`&&!!e,Xi=e=>Yi(e)&&Array.isArray(e.storages)&&e.storages.every(e=>Yi(e)&&(e.name===void 0||typeof e.name==`string`)&&typeof e.adapter==`string`&&Array.isArray(e.plugins)&&e.plugins.every(e=>typeof e==`string`)&&typeof e.initialized==`boolean`)&&Array.isArray(e.dependencies)&&e.dependencies.every(e=>Yi(e)&&(e.storage===void 0||typeof e.storage==`string`)&&typeof e.subpath==`string`&&typeof e.dependency==`string`&&typeof e.status==`string`&&typeof e.reason==`string`)&&Array.isArray(e.diagnostics)&&e.diagnostics.every(Di),Zi=e=>Yi(e)&&typeof e.write==`boolean`&&typeof e.maxUploadSize==`number`,Qi=e=>Yi(e)&&typeof e.token==`string`&&typeof e.expiresAt==`number`,$i=async()=>{if(new URL(window.location.href).searchParams.get(`host`)===`nuxt-v3`){let e=localStorage.getItem(`__nuxt_dev_token__`);if(!e)throw Error(`Authorize this browser in Nuxt DevTools, then refresh Files.`);let t=await fetch(`/__nuxt-files-api/token`,{headers:{"x-nuxt-devtools-token":e}});if(!t.ok)throw Error(`DevTools authentication failed (${t.status}).`);let n=await t.json();if(Qi(n))return n;throw Error(`Files development tools returned an invalid access token.`)}await Wi;let e=await Ui?.scope(`nuxt-files-sdk`).rpc.call(`issue-http-token`);if(Qi(e))return e;throw Error(`Files development tools require a trusted DevFrame connection.`)},ea=async()=>Gi&&Gi.expiresAt-Date.now()>1e4?Gi.token:(Ki??=$i().finally(()=>Ki=void 0),Gi=await Ki,Gi.token),ta=async()=>({authorization:`Bearer ${await ea()}`}),na=async(e,t)=>{let n=await fetch(e,{headers:await ta(),...t&&{signal:t}});if(!n.ok)throw Error(`DevTools request failed (${n.status}).`);return n.json()},Z=new Ai(e=>wi({endpoint:e===void 0?ki:`${ki}?storage=${encodeURIComponent(e)}`,headers:ta})),Q=(e,t=!1)=>{Fi.textContent=e,Fi.classList.toggle(`error-text`,t)},ra=async(e,t)=>{await Wi,t()&&Ui?.scope(`nuxt-files-sdk`).rpc.callEvent(`report-failure`,e)},ia=async()=>{let e=Y;await Wi,Y===e&&Ui?.scope(`nuxt-files-sdk`).rpc.callEvent(`report-diagnostics`,e.diagnostics)},aa=e=>{if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e,r=-1;do n/=1024,r++;while(n>=1024&&r<t.length-1);return`${n.toFixed(n>=10?0:1)} ${t[r]}`},oa=e=>e.slice(Z.prefix.length).replace(/\/$/u,``)||e,sa=(e,t)=>{let n=document.createElement(`button`);return n.type=`button`,n.className=`row-action`,n.textContent=e,n.addEventListener(`click`,t),n},ca=()=>{let e=Z.prefix.split(`/`).filter(Boolean),t=[],n=sa(`Root`,()=>{Z.navigate(Z.storage),$()});n.className=`breadcrumb`,t.push(n);let r=``;for(let n of e){t.push(document.createTextNode(`/`)),r+=`${n}/`;let e=r,i=sa(n,()=>{Z.navigate(Z.storage,e),$()});i.className=`breadcrumb`,t.push(i)}Ni.replaceChildren(...t)},la=e=>{let t=document.createElement(`tr`),n=document.createElement(`td`);n.className=`file-name`,n.textContent=oa(e.key);let r=document.createElement(`td`);r.textContent=aa(e.size);let i=document.createElement(`td`);i.textContent=e.type||`application/octet-stream`;let a=document.createElement(`td`);a.textContent=e.lastModified?new Date(e.lastModified).toLocaleString():`—`;let o=document.createElement(`td`);return o.className=`actions`,o.append(sa(`Download`,()=>void fa(e.key)),...X.write?[sa(`Delete`,()=>void pa(e.key))]:[]),t.append(n,r,i,a,o),t},ua=e=>{let t=document.createElement(`tr`),n=document.createElement(`td`);n.className=`file-name`;let r=sa(`📁 ${oa(e)}`,()=>{Z.navigate(Z.storage,e),$()});r.className=`folder`,n.append(r);let i=document.createElement(`td`);return i.colSpan=4,i.className=`folder-detail`,i.textContent=`Folder`,t.append(n,i),t},da=async(e,t=!1)=>{if(!t&&Y.storages.find(({name:t})=>t===e.storage)?.initialized)return;Hi?.abort();let n=Hi=new AbortController;try{let t=await na(Oi,n.signal);e.current()&&!n.signal.aborted&&Xi(t)&&(Y=t,ha(),ia())}catch{}},$=async()=>{Hi?.abort();let e=Z.initializing;ca(),Pi.innerHTML=`<tr><td colspan="5" class="empty-state">Loading files…</td></tr>`,Q(`Loading…`),qi.disabled=!0,Ji.disabled=!0;let t=Z.list(),n=Z.capture();try{let e=await t;if(!n.current()||!e)return;let r=[...(e.prefixes??[]).toSorted().map(ua),...e.items.toSorted((e,t)=>e.key.localeCompare(t.key)).map(la)];r.length?Pi.replaceChildren(...r):Pi.innerHTML=`<tr><td colspan="5" class="empty-state">No files in this location.</td></tr>`,Q(`${r.length} item${r.length===1?``:`s`}`),qi.disabled=!Z.hasPrevious,Ji.disabled=!Z.hasNext,da(n)}catch(t){if(!n.current())return;Pi.innerHTML=`<tr><td colspan="5" class="empty-state">Unable to load files.</td></tr>`;let r=t instanceof Error?t.message:String(t);Q(r,!0),ra({kind:e?`initialization`:`gateway`,message:r,...Z.storage===void 0?{}:{target:Z.storage}},n.current),qi.disabled=!Z.hasPrevious,await da(n,!0)}},fa=async e=>{let t=Z.capture();Q(`Downloading ${e}…`);try{let n=window.showSaveFilePicker,r=e.split(`/`).at(-1)||e,i=n?await n({suggestedName:r}):void 0,a=await t.client.download(e,{as:`stream`});if(i){await a.stream().pipeTo(await i.createWritable()),t.current()&&Q(`Downloaded ${e}`);return}if(a.size>67108864)throw Error(`Large downloads require a browser with streaming file save support.`);let o=URL.createObjectURL(await a.blob()),s=document.createElement(`a`);s.href=o,s.download=r,s.click(),setTimeout(()=>URL.revokeObjectURL(o),6e4),t.current()&&Q(`Downloaded ${e}`)}catch(e){if(!t.current())return;Q(e instanceof Error?e.message:String(e),!0)}},pa=async e=>{let t=Z.capture();if(window.confirm(`Delete ${e}? This cannot be undone.`)){Q(`Deleting ${e}…`);try{if(await t.client.delete(e),!t.current())return;Z.reset(),await $()}catch(n){if(!t.current())return;let r=n instanceof Error?n.message:String(n);Q(r,!0),ra({kind:`delete`,message:r,target:e},t.current)}}},ma=async e=>{let t=Z.capture(),n=`${t.prefix}${e.name}`;if(e.size>X.maxUploadSize){let r=`${e.name} exceeds the ${aa(X.maxUploadSize)} development upload limit.`;Q(r,!0),ra({kind:`upload`,message:r,target:n},t.current);return}let r=t.client;try{if(!window.confirm(`Upload ${n}? This may replace an existing file.`)||(Q(`Uploading ${n}…`),await r.upload(n,e,{contentType:e.type||`application/octet-stream`}),!t.current()))return;Z.reset(),await $()}catch(e){if(!t.current())return;let r=e instanceof Error?e.message:String(e);Q(r,!0),ra({kind:`upload`,message:r,target:n},t.current)}},ha=()=>{J(`#dependencies`,HTMLElement).replaceChildren(...Y.dependencies.map(e=>{let t=document.createElement(`p`);return t.textContent=`${e.storage??e.subpath}: ${e.dependency} — ${e.status}. ${e.reason}`,t})),ji.textContent=`${Y.storages.length} configured storage${Y.storages.length===1?``:`s`}`,J(`#storages`,HTMLTableSectionElement).replaceChildren(...Y.storages.map(e=>{let t=document.createElement(`tr`);for(let n of[e.name??`Single storage`,e.adapter,e.plugins.join(`, `)||`—`]){let e=document.createElement(`td`);e.textContent=n,t.append(e)}let n=document.createElement(`td`),r=document.createElement(`span`);return r.className=`status ${e.initialized?`success`:`idle`}`,r.textContent=e.initialized?`Initialized`:`Not initialized`,n.append(r),t.append(n),t}));let e=J(`#diagnostics`,HTMLElement);Y.diagnostics.length?e.replaceChildren(...Y.diagnostics.map(e=>{let t=document.createElement(`p`);t.className=e.level;let n=document.createElement(`strong`);if(n.textContent=`${e.code}: ${e.message}`,t.append(n),e.hint&&t.append(document.createElement(`br`),e.hint),e.docs){let n=document.createElement(`a`);n.href=e.docs,n.target=`_blank`,n.rel=`noreferrer`,n.textContent=`Troubleshooting`,t.append(document.createElement(`br`),n)}return t})):e.textContent=`No integration diagnostics.`},ga=async()=>{let e=++Bi;Vi?.abort(),Hi?.abort();let t=Vi=new AbortController;Z.reset(!0);let n=Z.capture();try{let[r,i]=await Promise.all([na(Oi,t.signal),na(`${ki}?op=devtools`,t.signal)]);if(e!==Bi||!n.current())return;if(!Xi(r)||!Zi(i))throw Error(`Files development tools returned an invalid response.`);Y=r,X=i,ha(),ia();let a=Z.storage;Mi.replaceChildren(...Y.storages.map(e=>{let t=document.createElement(`option`);return t.value=e.name??``,t.textContent=e.name??`Single storage`,t})),Mi.hidden=Y.storages.length<2;let o=Y.storages.some(({name:e})=>e===a)?a:Y.storages[0]?.name;Z.navigate(o,o===a?Z.prefix:``),Mi.value=Z.storage??``,Ii.textContent=X.write?`Read & write`:`Read only`,Ii.className=`access-badge ${X.write?`write`:``}`,Ii.hidden=!1,Ri.disabled=!X.write,zi.hidden=!X.write,Y.storages.length?await $():Q(`No configured storage.`,!0)}catch(t){if(e!==Bi||!n.current())return;ji.textContent=`Unable to load Files development tools`;let r=t instanceof Error?t.message:String(t);Q(r,!0),ra({kind:`gateway`,message:r},n.current)}},_a=async()=>{try{let e=Y.diagnostics.length?Y.diagnostics.map(e=>[`${e.code} [${e.level}]: ${e.message}`,e.hint?`Hint: ${e.hint}`:``,e.docs?`Docs: ${e.docs}`:``].filter(Boolean).join(`
6
6
  `)).join(`
7
7
 
8
- `):`No integration diagnostics.`;await navigator.clipboard.writeText(e),Q(`Copied diagnostics.`)}catch(e){Q(e instanceof Error?e.message:String(e),!0)}};hi.addEventListener(`change`,()=>{Ci++,wi?.abort(),Ti?.abort(),Z.navigate(Y.storages[hi.selectedIndex]?.name),$()}),Ai.addEventListener(`click`,()=>{Z.previous(),$()}),ji.addEventListener(`click`,()=>{Z.next(),$()}),bi.addEventListener(`click`,()=>void $i()),xi.addEventListener(`change`,()=>{let e=xi.files?.[0];xi.value=``,e&&Zi(e)}),Di=(async()=>{if(new URL(window.location.href).searchParams.get(`host`)!==`nuxt-v3`)try{Ei=await Tr({simpleAuth:!1});let e=Ei.scope(`nuxt-files-sdk`).rpc;e.register({name:`refresh`,type:`event`,handler:()=>void $i()}),e.register({name:`copy-diagnostics`,type:`event`,handler:()=>void ea()})}catch{}})(),$i();export{_e as t};
8
+ `):`No integration diagnostics.`;await navigator.clipboard.writeText(e),Q(`Copied diagnostics.`)}catch(e){Q(e instanceof Error?e.message:String(e),!0)}};Mi.addEventListener(`change`,()=>{Bi++,Vi?.abort(),Hi?.abort(),Z.navigate(Y.storages[Mi.selectedIndex]?.name),$()}),qi.addEventListener(`click`,()=>{Z.previous(),$()}),Ji.addEventListener(`click`,()=>{Z.next(),$()}),Li.addEventListener(`click`,()=>void ga()),Ri.addEventListener(`change`,()=>{let e=Ri.files?.[0];Ri.value=``,e&&ma(e)}),Wi=(async()=>{if(new URL(window.location.href).searchParams.get(`host`)!==`nuxt-v3`)try{Ui=await Tr({simpleAuth:!1});let e=Ui.scope(`nuxt-files-sdk`).rpc;e.register({name:`refresh`,type:`event`,handler:()=>void ga()}),e.register({name:`copy-diagnostics`,type:`event`,handler:()=>void _a()})}catch{}})(),ga();export{_e as t};
@@ -426,6 +426,10 @@
426
426
  </div>
427
427
  </header>
428
428
  <div id="diagnostics" class="empty-state"></div>
429
+ <details>
430
+ <summary>Dependency details</summary>
431
+ <div id="dependencies"></div>
432
+ </details>
429
433
  </section>
430
434
  </main>
431
435
  <script type="module" src="./app.js"></script>
@@ -1,6 +1,6 @@
1
1
  import { createFilesDevtoolsToken } from "./auth.js";
2
+ import { FILES_DEVTOOLS_PATH } from "./paths.js";
2
3
  import { FILES_DEVTOOLS_DIAGNOSTICS, createFilesDevtoolsDiagnostic, isFilesDevtoolsDiagnostic, isFilesDevtoolsFailure } from "./diagnostics.js";
3
- import { FILES_DEVTOOLS_PATH } from "./snapshot.js";
4
4
  import { version } from "../package.js";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { defineDevframe, defineRpcFunction } from "devframe";
@@ -79,5 +79,3 @@ const createFilesDevframe = ({ write, maxUploadSize, tokenSecret, notifyFailure
79
79
  });
80
80
  //#endregion
81
81
  export { createFilesDevframe };
82
-
83
- //# sourceMappingURL=devframe.js.map
@@ -33,5 +33,4 @@ export declare const FILES_DEVTOOLS_DIAGNOSTICS: {
33
33
  };
34
34
  };
35
35
  export type FilesDevtoolsDiagnosticCode = keyof typeof FILES_DEVTOOLS_DIAGNOSTICS;
36
- //#endregion
37
- //# sourceMappingURL=diagnostics.d.ts.map
36
+ //#endregion
@@ -35,5 +35,3 @@ const isFilesDevtoolsDiagnostic = (value) => Boolean(value && typeof value === "
35
35
  const isFilesDevtoolsFailure = (value) => Boolean(value && typeof value === "object" && "kind" in value && (value.kind === "upload" || value.kind === "delete" || value.kind === "initialization" || value.kind === "gateway") && "message" in value && typeof value.message === "string" && (!("target" in value) || value.target === void 0 || typeof value.target === "string"));
36
36
  //#endregion
37
37
  export { FILES_DEVTOOLS_DIAGNOSTICS, createFilesDevtoolsDiagnostic, isFilesDevtoolsDiagnostic, isFilesDevtoolsFailure };
38
-
39
- //# sourceMappingURL=diagnostics.js.map
@@ -5,5 +5,4 @@ export interface FilesDevtoolsOptions {
5
5
  /** Allow uploads and deletes from the development-only file browser. Defaults to true. */
6
6
  write?: boolean;
7
7
  }
8
- //#endregion
9
- //# sourceMappingURL=enabled.d.ts.map
8
+ //#endregion
@@ -3,5 +3,3 @@ const shouldEnableFilesDevtools = (development, moduleDevtools, nuxtDevtools) =>
3
3
  const filesDevtoolsWriteEnabled = (setting) => typeof setting === "boolean" ? setting : setting.enabled !== false && setting.write !== false;
4
4
  //#endregion
5
5
  export { filesDevtoolsWriteEnabled, shouldEnableFilesDevtools };
6
-
7
- //# sourceMappingURL=enabled.js.map
@@ -1,5 +1,4 @@
1
1
  //#region src/devtools/files-read.d.ts
2
- declare const _default: (event: Parameters<import("files-sdk/nitro").NitroRouteHandler>[0], secret: string) => Promise<Response>;
2
+ declare const _default: (event: import("@nuxt/schema").RequestEvent, secret: string) => Promise<Response>;
3
3
  //#endregion
4
- export { _default as default };
5
- //# sourceMappingURL=files-read.d.ts.map
4
+ export { _default as default };
@@ -3,5 +3,3 @@ import { createFilesDevtoolsHandler } from "./files.js";
3
3
  var files_read_default = createFilesDevtoolsHandler(false);
4
4
  //#endregion
5
5
  export { files_read_default as default };
6
-
7
- //# sourceMappingURL=files-read.js.map
@@ -1,5 +1,4 @@
1
1
  //#region src/devtools/files-write.d.ts
2
- declare const _default: (event: Parameters<import("files-sdk/nitro").NitroRouteHandler>[0], secret: string) => Promise<Response>;
2
+ declare const _default: (event: import("@nuxt/schema").RequestEvent, secret: string) => Promise<Response>;
3
3
  //#endregion
4
- export { _default as default };
5
- //# sourceMappingURL=files-write.d.ts.map
4
+ export { _default as default };
@@ -3,5 +3,3 @@ import { createFilesDevtoolsHandler } from "./files.js";
3
3
  var files_write_default = createFilesDevtoolsHandler(true);
4
4
  //#endregion
5
5
  export { files_write_default as default };
6
-
7
- //# sourceMappingURL=files-write.js.map
@@ -1,9 +1,8 @@
1
1
  import { inspectFiles } from "../runtime/internal.js";
2
2
  import { useServerFiles } from "../runtime.js";
3
3
  import { authorizeFilesDevtoolsRequest } from "./auth.js";
4
- import { FILES_DEVTOOLS_MAX_UPLOAD_SIZE } from "./snapshot.js";
4
+ import { FILES_DEVTOOLS_MAX_UPLOAD_SIZE } from "./paths.js";
5
5
  import { createFilesRouter } from "files-sdk/api";
6
- import { createRouteHandler } from "files-sdk/nitro";
7
6
  //#region src/devtools/files.ts
8
7
  const readOperations = [
9
8
  "capabilities",
@@ -29,23 +28,21 @@ const resolveFiles = (request) => {
29
28
  return getFiles(requested);
30
29
  };
31
30
  const createFilesDevtoolsHandler = (write) => {
32
- const handleFiles = createRouteHandler(createFilesRouter({
31
+ const router = createFilesRouter({
33
32
  files: resolveFiles,
34
33
  operations: filesDevtoolsOperations(write),
35
34
  maxUploadSize: FILES_DEVTOOLS_MAX_UPLOAD_SIZE,
36
35
  secret: crypto.randomUUID()
37
- }));
36
+ });
38
37
  return async (event, secret) => {
39
- if (!await authorizeFilesDevtoolsRequest(event.node.req, secret)) return new Response(null, { status: 401 });
40
- const url = new URL(event.node.req.url ?? "/", "http://nuxt-files-sdk.local");
41
- if (event.node.req.method === "GET" && url.searchParams.get("op") === "devtools") return Response.json({
38
+ if (!await authorizeFilesDevtoolsRequest(event.req, secret)) return new Response(null, { status: 401 });
39
+ const url = event.url;
40
+ if (event.req.method === "GET" && url.searchParams.get("op") === "devtools") return Response.json({
42
41
  write,
43
42
  maxUploadSize: FILES_DEVTOOLS_MAX_UPLOAD_SIZE
44
43
  });
45
- return handleFiles(event);
44
+ return router.handle(event.req);
46
45
  };
47
46
  };
48
47
  //#endregion
49
48
  export { createFilesDevtoolsHandler, filesDevtoolsOperations };
50
-
51
- //# sourceMappingURL=files.js.map
@@ -1,37 +1,37 @@
1
- import { FILES_DEVTOOLS_MAX_UPLOAD_SIZE, FILES_DEVTOOLS_PATH, FILES_GATEWAY_PATH, FILES_SNAPSHOT_PATH, FILES_TOKEN_PATH } from "./snapshot.js";
2
- import nuxt_v3_handler_default from "./nuxt-v3-handler.js";
3
- import token_default from "./token.js";
4
- import { setupNuxtV3Devtools } from "./nuxt-v3.js";
5
- import { setupNuxtV4Devtools } from "./nuxt-v4.js";
6
- import { addDevServerHandler, addServerHandler, addServerTemplate } from "@nuxt/kit";
1
+ import { FILES_DEVTOOLS_MAX_UPLOAD_SIZE, FILES_DEVTOOLS_PATH, FILES_GATEWAY_PATH, FILES_SNAPSHOT_PATH, FILES_TOKEN_PATH } from "./paths.js";
2
+ import { addDevServerHandler, addServerHandler, addTemplate } from "@nuxt/kit";
7
3
  import { fileURLToPath } from "node:url";
8
4
  //#region src/devtools/index.ts
9
- const authenticatedHandler = (name, path, arguments_) => {
10
- const filename = `#nuxt-files-sdk/${name}`;
11
- addServerTemplate({
12
- filename,
13
- getContents: () => `import handler from ${JSON.stringify(path.replaceAll("\\", "/"))}\nexport default event => handler(event, ${arguments_.map((value) => JSON.stringify(value)).join(", ")})\n`
14
- });
15
- return filename;
5
+ const authenticatedHandler = (name, path, environmentKey) => {
6
+ return addTemplate({
7
+ filename: `nuxt-files-sdk/devtools-${name}.mjs`,
8
+ write: true,
9
+ getContents: () => `import { registry } from '#nuxt-files-sdk/registry'\nimport { defineEventHandler } from 'nuxt/server'\nimport handler from ${JSON.stringify(path.replaceAll("\\", "/"))}\nvoid registry\nexport default defineEventHandler(event => handler(event, process.env[${JSON.stringify(environmentKey)}] || ''))\n`
10
+ }).dst.replaceAll("\\", "/");
16
11
  };
17
- const setupFilesDevtools = (nuxt, version, write, secrets) => {
12
+ const setupFilesDevtools = async (nuxt, version, write, secrets) => {
18
13
  addServerHandler({
19
14
  route: FILES_SNAPSHOT_PATH,
20
- handler: authenticatedHandler("snapshot", fileURLToPath(new URL("./snapshot.js", import.meta.url)), [secrets.token])
15
+ handler: { nuxt: authenticatedHandler("snapshot", fileURLToPath(new URL("./snapshot.js", import.meta.url)), secrets.environmentKey) }
21
16
  });
22
17
  addServerHandler({
23
18
  route: FILES_GATEWAY_PATH,
24
- handler: authenticatedHandler("files", fileURLToPath(new URL(write ? "./files-write.js" : "./files-read.js", import.meta.url)), [secrets.token])
25
- });
26
- if (Number.parseInt(version) >= 4) setupNuxtV4Devtools(nuxt, {
27
- write,
28
- maxUploadSize: FILES_DEVTOOLS_MAX_UPLOAD_SIZE,
29
- tokenSecret: secrets.token
19
+ handler: { nuxt: authenticatedHandler("files", fileURLToPath(new URL(write ? "./files-write.js" : "./files-read.js", import.meta.url)), secrets.environmentKey) }
30
20
  });
31
- else {
21
+ if (Number.parseInt(version) >= 4) {
22
+ const { setupNuxtV4Devtools } = await import("./nuxt-v4.js");
23
+ setupNuxtV4Devtools(nuxt, {
24
+ write,
25
+ maxUploadSize: FILES_DEVTOOLS_MAX_UPLOAD_SIZE,
26
+ tokenSecret: secrets.token
27
+ });
28
+ } else {
29
+ const { setupNuxtV3Devtools } = await import("./nuxt-v3.js");
30
+ const { default: uiHandler } = await import("./nuxt-v3-handler.js");
31
+ const { default: tokenHandler } = await import("./token.js");
32
32
  addDevServerHandler({
33
33
  route: FILES_TOKEN_PATH,
34
- handler: (event) => token_default(event, secrets.token, async (token) => {
34
+ handler: (event) => tokenHandler(event, secrets.token, async (token) => {
35
35
  const host = "devtools" in nuxt ? nuxt.devtools : void 0;
36
36
  if (!host || typeof host !== "object" || !("ensureDevAuthToken" in host) || typeof host.ensureDevAuthToken !== "function") throw new Error("Nuxt DevTools authentication is unavailable.");
37
37
  await host.ensureDevAuthToken(token);
@@ -39,12 +39,10 @@ const setupFilesDevtools = (nuxt, version, write, secrets) => {
39
39
  });
40
40
  addDevServerHandler({
41
41
  route: FILES_DEVTOOLS_PATH,
42
- handler: nuxt_v3_handler_default
42
+ handler: uiHandler
43
43
  });
44
44
  setupNuxtV3Devtools(nuxt);
45
45
  }
46
46
  };
47
47
  //#endregion
48
48
  export { setupFilesDevtools };
49
-
50
- //# sourceMappingURL=index.js.map
@@ -8,5 +8,4 @@ declare function _default(event: {
8
8
  };
9
9
  }): Promise<string | undefined>;
10
10
  //#endregion
11
- export { _default as default };
12
- //# sourceMappingURL=nuxt-v3-handler.d.ts.map
11
+ export { _default as default };
@@ -20,5 +20,3 @@ var nuxt_v3_handler_default = async (event) => {
20
20
  };
21
21
  //#endregion
22
22
  export { nuxt_v3_handler_default as default };
23
-
24
- //# sourceMappingURL=nuxt-v3-handler.js.map
@@ -1,4 +1,4 @@
1
- import { FILES_DEVTOOLS_PATH } from "./snapshot.js";
1
+ import { FILES_DEVTOOLS_PATH } from "./paths.js";
2
2
  //#region src/devtools/nuxt-v3.ts
3
3
  const setupNuxtV3Devtools = (nuxt) => {
4
4
  nuxt.hook("devtools:customTabs", (tabs) => {
@@ -15,5 +15,3 @@ const setupNuxtV3Devtools = (nuxt) => {
15
15
  };
16
16
  //#endregion
17
17
  export { setupNuxtV3Devtools };
18
-
19
- //# sourceMappingURL=nuxt-v3.js.map
@@ -1,10 +1,9 @@
1
- import { FILES_DEVTOOLS_PATH } from "./snapshot.js";
1
+ import { FILES_DEVTOOLS_PATH } from "./paths.js";
2
2
  import { createFilesDevframe } from "./devframe.js";
3
- import { NUXT_DEVTOOLS_GROUP_ID, onDevtoolsReady } from "@nuxt/devtools-kit";
4
3
  import { createEmbedded } from "devframe/adapters/embedded";
5
4
  //#region src/devtools/nuxt-v4.ts
6
5
  const setupNuxtV4Devtools = (nuxt, options) => {
7
- onDevtoolsReady(async (context) => {
6
+ nuxt.hook("devtools:ready", async (context) => {
8
7
  await createEmbedded(createFilesDevframe({
9
8
  ...options,
10
9
  notifyFailure: (message) => context.messages.add(message)
@@ -15,7 +14,7 @@ const setupNuxtV4Devtools = (nuxt, options) => {
15
14
  icon: "ph:files-duotone",
16
15
  type: "iframe",
17
16
  url: FILES_DEVTOOLS_PATH,
18
- groupId: NUXT_DEVTOOLS_GROUP_ID
17
+ groupId: "nuxt"
19
18
  });
20
19
  const broadcast = (method) => context.scope("nuxt-files-sdk").rpc.broadcast({
21
20
  method,
@@ -44,9 +43,7 @@ const setupNuxtV4Devtools = (nuxt, options) => {
44
43
  category: "tools",
45
44
  handler: () => broadcast("copy-diagnostics")
46
45
  });
47
- }, nuxt);
46
+ });
48
47
  };
49
48
  //#endregion
50
49
  export { setupNuxtV4Devtools };
51
-
52
- //# sourceMappingURL=nuxt-v4.js.map