@kimuson/claude-code-viewer 0.7.3 → 0.7.5

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 (40) hide show
  1. package/README.md +9 -0
  2. package/dist/main.js +104087 -9930
  3. package/dist/static/assets/AuthProvider-a1wlLm40.js +22 -0
  4. package/dist/static/assets/ProtectedRoute-Bd-6jyxE.js +1 -0
  5. package/dist/static/assets/card-D9aMzhGi.js +1 -0
  6. package/dist/static/assets/createLucideIcon-Dr4vJxG7.js +1 -0
  7. package/dist/static/assets/dist-BSr9MeK6.js +109 -0
  8. package/dist/static/assets/{dist-CG2L4mx5.js → dist-DsKpSV8b.js} +1 -1
  9. package/dist/static/assets/{eye-SsvAY8oF.js → eye-93IqRP6X.js} +1 -1
  10. package/dist/static/assets/index-B-si4iv9.js +20 -0
  11. package/dist/static/assets/{index-DNPVlDui.css → index-CRjH32Aw.css} +2 -2
  12. package/dist/static/assets/{input-B_6IT1CP.js → input-M1VOtQpS.js} +1 -1
  13. package/dist/static/assets/label-CV_Y-Hm3.js +1 -0
  14. package/dist/static/assets/{login-CKSjZM5v.js → login-B5ql67Sw.js} +1 -1
  15. package/dist/static/assets/{markdown-parser-vendor-D9j1a-bm.js → markdown-parser-vendor-BdkS_k_8.js} +7 -7
  16. package/dist/static/assets/{projects-DH0K12HM.js → projects-CzabZWrQ.js} +1 -1
  17. package/dist/static/assets/{refractor-vendor-B-OUwWR7.js → refractor-vendor-BfdmH2uT.js} +1 -1
  18. package/dist/static/assets/rolldown-runtime-S-ySWqyJ.js +1 -0
  19. package/dist/static/assets/routes-DCVxLOkG.js +1 -0
  20. package/dist/static/assets/session-Bh26l_lo.js +13 -0
  21. package/dist/static/assets/session-BxPcWj4u.js +1 -0
  22. package/dist/static/assets/{syntax-highlighter-vendor-CwGXx8v4.js → syntax-highlighter-vendor-BmNdBw1C.js} +4 -4
  23. package/dist/static/assets/workbox-window.prod.es5-8x20nBgX.js +2 -0
  24. package/dist/static/assets/{xterm-vendor-DRG2K165.js → xterm-vendor-D6WsVDeV.js} +3 -3
  25. package/dist/static/index.html +10 -10
  26. package/dist/static/sw.js +1 -1
  27. package/package.json +3 -130
  28. package/dist/main.js.map +0 -7
  29. package/dist/static/assets/AuthProvider-Ds-c4CWc.js +0 -22
  30. package/dist/static/assets/ProtectedRoute-BTfjJdM-.js +0 -1
  31. package/dist/static/assets/card-DGrqtTaC.js +0 -1
  32. package/dist/static/assets/createLucideIcon-BL_meogc.js +0 -1
  33. package/dist/static/assets/dist-Cartj9I0.js +0 -84
  34. package/dist/static/assets/index-Bmg7UpkS.js +0 -20
  35. package/dist/static/assets/label-Cw6sZ5kQ.js +0 -1
  36. package/dist/static/assets/rolldown-runtime-Dw2cE7zH.js +0 -1
  37. package/dist/static/assets/routes-CzLZwWu9.js +0 -1
  38. package/dist/static/assets/session-DItKrSkz.js +0 -12
  39. package/dist/static/assets/session-DdZMHc5j.js +0 -1
  40. package/dist/static/assets/workbox-window.prod.es5-DaBTyiAs.js +0 -2
@@ -11,16 +11,16 @@
11
11
  <meta name="theme-color" content="#0a0a0a" />
12
12
  <meta name="description" content="Web Viewer for Claude Code history" />
13
13
  <title>Claude Code Viewer</title>
14
- <script type="module" crossorigin src="/assets/index-Bmg7UpkS.js"></script>
15
- <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dw2cE7zH.js">
16
- <link rel="modulepreload" crossorigin href="/assets/markdown-parser-vendor-D9j1a-bm.js">
17
- <link rel="modulepreload" crossorigin href="/assets/dist-CG2L4mx5.js">
18
- <link rel="modulepreload" crossorigin href="/assets/card-DGrqtTaC.js">
19
- <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-BL_meogc.js">
20
- <link rel="modulepreload" crossorigin href="/assets/AuthProvider-Ds-c4CWc.js">
21
- <link rel="modulepreload" crossorigin href="/assets/input-B_6IT1CP.js">
22
- <link rel="modulepreload" crossorigin href="/assets/dist-Cartj9I0.js">
23
- <link rel="stylesheet" crossorigin href="/assets/index-DNPVlDui.css">
14
+ <script type="module" crossorigin src="/assets/index-B-si4iv9.js"></script>
15
+ <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-S-ySWqyJ.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/markdown-parser-vendor-BdkS_k_8.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/dist-DsKpSV8b.js">
18
+ <link rel="modulepreload" crossorigin href="/assets/card-D9aMzhGi.js">
19
+ <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-Dr4vJxG7.js">
20
+ <link rel="modulepreload" crossorigin href="/assets/AuthProvider-a1wlLm40.js">
21
+ <link rel="modulepreload" crossorigin href="/assets/input-M1VOtQpS.js">
22
+ <link rel="modulepreload" crossorigin href="/assets/dist-BSr9MeK6.js">
23
+ <link rel="stylesheet" crossorigin href="/assets/index-CRjH32Aw.css">
24
24
  <link rel="manifest" href="/manifest.webmanifest"></head>
25
25
  <body>
26
26
  <div id="app"></div>
package/dist/static/sw.js CHANGED
@@ -1 +1 @@
1
- try{self[`workbox:core:7.3.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}};function n(e){e.then(()=>{})}var r=(e,t)=>t.some(t=>e instanceof t),i,a;function o(){return i||=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]}function s(){return a||=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]}var c=new WeakMap,l=new WeakMap,u=new WeakMap,d=new WeakMap,f=new WeakMap;function ee(e){let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`success`,i),e.removeEventListener(`error`,a)},i=()=>{t(v(e.result)),r()},a=()=>{n(e.error),r()};e.addEventListener(`success`,i),e.addEventListener(`error`,a)});return t.then(t=>{t instanceof IDBCursor&&c.set(t,e)}).catch(()=>{}),f.set(t,e),t}function te(e){if(l.has(e))return;let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`complete`,i),e.removeEventListener(`error`,a),e.removeEventListener(`abort`,a)},i=()=>{t(),r()},a=()=>{n(e.error||new DOMException(`AbortError`,`AbortError`)),r()};e.addEventListener(`complete`,i),e.addEventListener(`error`,a),e.addEventListener(`abort`,a)});l.set(e,t)}var p={get(e,t,n){if(e instanceof IDBTransaction){if(t===`done`)return l.get(e);if(t===`objectStoreNames`)return e.objectStoreNames||u.get(e);if(t===`store`)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return v(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t===`done`||t===`store`)?!0:t in e}};function m(e){p=e(p)}function h(e){return e===IDBDatabase.prototype.transaction&&!(`objectStoreNames`in IDBTransaction.prototype)?function(t,...n){let r=e.call(y(this),t,...n);return u.set(r,t.sort?t.sort():[t]),v(r)}:s().includes(e)?function(...t){return e.apply(y(this),t),v(c.get(this))}:function(...t){return v(e.apply(y(this),t))}}function g(e){return typeof e==`function`?h(e):(e instanceof IDBTransaction&&te(e),r(e,o())?new Proxy(e,p):e)}function v(e){if(e instanceof IDBRequest)return ee(e);if(d.has(e))return d.get(e);let t=g(e);return t!==e&&(d.set(e,t),f.set(t,e)),t}var y=e=>f.get(e);function ne(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){let o=indexedDB.open(e,t),s=v(o);return r&&o.addEventListener(`upgradeneeded`,e=>{r(v(o.result),e.oldVersion,e.newVersion,v(o.transaction),e)}),n&&o.addEventListener(`blocked`,e=>n(e.oldVersion,e.newVersion,e)),s.then(e=>{a&&e.addEventListener(`close`,()=>a()),i&&e.addEventListener(`versionchange`,e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),s}function re(e,{blocked:t}={}){let n=indexedDB.deleteDatabase(e);return t&&n.addEventListener(`blocked`,e=>t(e.oldVersion,e)),v(n).then(()=>void 0)}var ie=[`get`,`getKey`,`getAll`,`getAllKeys`,`count`],b=[`put`,`add`,`delete`,`clear`],x=new Map;function S(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t==`string`))return;if(x.get(t))return x.get(t);let n=t.replace(/FromIndex$/,``),r=t!==n,i=b.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||ie.includes(n)))return;let a=async function(e,...t){let a=this.transaction(e,i?`readwrite`:`readonly`),o=a.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&a.done]))[0]};return x.set(t,a),a}m(e=>({...e,get:(t,n,r)=>S(t,n)||e.get(t,n,r),has:(t,n)=>!!S(t,n)||e.has(t,n)}));try{self[`workbox:expiration:7.3.0`]&&_()}catch{}var C=`workbox-expiration`,w=`cache-entries`,T=e=>{let t=new URL(e,location.href);return t.hash=``,t.href},ae=class{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){let t=e.createObjectStore(w,{keyPath:`id`});t.createIndex(`cacheName`,`cacheName`,{unique:!1}),t.createIndex(`timestamp`,`timestamp`,{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&re(this._cacheName)}async setTimestamp(e,t){e=T(e);let n={url:e,timestamp:t,cacheName:this._cacheName,id:this._getId(e)},r=(await this.getDb()).transaction(w,`readwrite`,{durability:`relaxed`});await r.store.put(n),await r.done}async getTimestamp(e){return(await(await this.getDb()).get(w,this._getId(e)))?.timestamp}async expireEntries(e,t){let n=await this.getDb(),r=await n.transaction(w).store.index(`timestamp`).openCursor(null,`prev`),i=[],a=0;for(;r;){let n=r.value;n.cacheName===this._cacheName&&(e&&n.timestamp<e||t&&a>=t?i.push(r.value):a++),r=await r.continue()}let o=[];for(let e of i)await n.delete(w,e.id),o.push(e.url);return o}_getId(e){return this._cacheName+`|`+T(e)}async getDb(){return this._db||=await ne(C,1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)}),this._db}},oe=class{constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new ae(e)}async expireEntries(){if(this._isRunning){this._rerunRequested=!0;return}this._isRunning=!0;let e=this._maxAgeSeconds?Date.now()-this._maxAgeSeconds*1e3:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),r=await self.caches.open(this._cacheName);for(let e of t)await r.delete(e,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,n(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){let t=await this._timestampModel.getTimestamp(e),n=Date.now()-this._maxAgeSeconds*1e3;return t===void 0?!0:t<n}else return!1}async delete(){this._rerunRequested=!1,await this._timestampModel.expireEntries(1/0)}},E={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},D=e=>[E.prefix,e,E.suffix].filter(e=>e&&e.length>0).join(`-`),se=e=>{for(let t of Object.keys(E))e(t)},O={updateDetails:e=>{se(t=>{typeof e[t]==`string`&&(E[t]=e[t])})},getGoogleAnalyticsName:e=>e||D(E.googleAnalytics),getPrecacheName:e=>e||D(E.precache),getPrefix:()=>E.prefix,getRuntimeName:e=>e||D(E.runtime),getSuffix:()=>E.suffix},ce=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``),k=new Set;function le(e){k.add(e)}var A=class{constructor(e={}){this.cachedResponseWillBeUsed=async({event:e,request:t,cacheName:r,cachedResponse:i})=>{if(!i)return null;let a=this._isResponseDateFresh(i),o=this._getCacheExpiration(r);n(o.expireEntries());let s=o.updateTimestamp(t.url);if(e)try{e.waitUntil(s)}catch{}return a?i:null},this.cacheDidUpdate=async({cacheName:e,request:t})=>{let n=this._getCacheExpiration(e);await n.updateTimestamp(t.url),await n.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&le(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(e){if(e===O.getRuntimeName())throw new t(`expire-custom-caches-only`);let n=this._cacheExpirations.get(e);return n||(n=new oe(e,this._config),this._cacheExpirations.set(e,n)),n}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;let t=this._getDateHeaderTimestamp(e);return t===null?!0:t>=Date.now()-this._maxAgeSeconds*1e3}_getDateHeaderTimestamp(e){if(!e.headers.has(`date`))return null;let t=e.headers.get(`date`),n=new Date(t).getTime();return isNaN(n)?null:n}async deleteCacheAndMetadata(){for(let[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}};function j(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.3.0`]&&_()}catch{}var M=`__WB_REVISION__`;function N(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(M,n),{cacheKey:i.href,url:a.href}}var P=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},F=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},I;function L(){if(I===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),I=!0}catch{I=!1}I=!1}return I}async function R(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=L()?i.body:await i.blob();return new Response(s,o)}function z(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function B(e,t,n,r){let i=z(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===z(t.url,n))return e.match(t,r)}var V=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};async function H(){for(let e of k)await e()}function U(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.3.0`]&&_()}catch{}function W(e){return typeof e==`string`?new Request(e):e}var ue=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new V,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=W(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=W(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=W(e);await U(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:ce(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await B(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await H(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=W(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},G=class{constructor(e={}){this.cacheName=O.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new ue(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},K=class e extends G{constructor(t={}){t.cacheName=O.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};K.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},K.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await R(e):e}};var de=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new K({cacheName:O.getPrecacheName(e),plugins:[...t,new F({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=N(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return j(e,async()=>{let t=new P;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return j(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},q,J=()=>(q||=new de,q);try{self[`workbox:routing:7.3.0`]&&_()}catch{}var Y=e=>e&&typeof e==`object`?e:{handle:e},X=class{constructor(e,t,n=`GET`){this.handler=Y(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=Y(e)}},fe=class extends X{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},pe=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,Y(e))}setCatchHandler(e){this._catchHandler=Y(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},Z,me=()=>(Z||(Z=new pe,Z.addFetchListener(),Z.addCacheListener()),Z);function Q(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new X(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new fe(e,n,r);else if(typeof e==`function`)i=new X(e,n,r);else if(e instanceof X)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return me().registerRoute(i),i}function he(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*ge(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=he(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var _e=class extends X{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of ge(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function ve(e){Q(new _e(J(),e))}var ye=`-precache-`,be=async(e,t=ye)=>{let n=(await self.caches.keys()).filter(n=>n.includes(t)&&n.includes(self.registration.scope)&&n!==e);return await Promise.all(n.map(e=>self.caches.delete(e))),n};function xe(){self.addEventListener(`activate`,(e=>{let t=O.getPrecacheName();e.waitUntil(be(t).then(e=>{}))}))}function $(e){return J().createHandlerBoundToURL(e)}function Se(e){J().precache(e)}function Ce(e,t){Se(e),ve(t)}var we=class extends X{constructor(e,{allowlist:t=[/./],denylist:n=[]}={}){super(e=>this._match(e),e),this._allowlist=t,this._denylist=n}_match({url:e,request:t}){if(t&&t.mode!==`navigate`)return!1;let n=e.pathname+e.search;for(let e of this._denylist)if(e.test(n))return!1;return!!this._allowlist.some(e=>e.test(n))}},Te={cacheWillUpdate:async({response:e})=>e.status===200||e.status===0?e:null},Ee=class extends G{constructor(e={}){super(e),this.plugins.some(e=>`cacheWillUpdate`in e)||this.plugins.unshift(Te),this._networkTimeoutSeconds=e.networkTimeoutSeconds||0}async _handle(e,n){let r=[],i=[],a;if(this._networkTimeoutSeconds){let{id:t,promise:o}=this._getTimeoutPromise({request:e,logs:r,handler:n});a=t,i.push(o)}let o=this._getNetworkPromise({timeoutId:a,request:e,logs:r,handler:n});i.push(o);let s=await n.waitUntil((async()=>await n.waitUntil(Promise.race(i))||await o)());if(!s)throw new t(`no-response`,{url:e.url});return s}_getTimeoutPromise({request:e,logs:t,handler:n}){let r;return{promise:new Promise(t=>{r=setTimeout(async()=>{t(await n.cacheMatch(e))},this._networkTimeoutSeconds*1e3)}),id:r}}async _getNetworkPromise({timeoutId:e,request:t,logs:n,handler:r}){let i,a;try{a=await r.fetchAndCachePut(t)}catch(e){e instanceof Error&&(i=e)}return e&&clearTimeout(e),(i||!a)&&(a=await r.cacheMatch(t)),a}},De=class extends G{constructor(e={}){super(e),this._networkTimeoutSeconds=e.networkTimeoutSeconds||0}async _handle(e,n){let r,i;try{let t=[n.fetch(e)];if(this._networkTimeoutSeconds){let e=U(this._networkTimeoutSeconds*1e3);t.push(e)}if(i=await Promise.race(t),!i)throw Error(`Timed out the network response after ${this._networkTimeoutSeconds} seconds.`)}catch(e){e instanceof Error&&(r=e)}if(!i)throw new t(`no-response`,{url:e.url,error:r});return i}};Ce([{"revision":"949625f78cd8af61415658f8d18348a6","url":"index.html"},{"revision":"17c979def623728f51d6366b8cc9a9fa","url":"icon-maskable-512x512.png"},{"revision":"c6fdf51d474ddaffd7f6eae78b98617d","url":"icon-maskable-192x192.png"},{"revision":"3c2b8343871429861982aaebd87cb3fd","url":"icon-512x512.png"},{"revision":"6fbf57d0a7e87f24825a540ee2680e31","url":"icon-192x192.png"},{"revision":"4d206474ef1d07340d4877fd8d55d1f2","url":"favicon.ico"},{"revision":"240b426534684434a379fabf89e4e7de","url":"apple-touch-icon.png"},{"revision":null,"url":"assets/xterm-vendor-DRG2K165.js"},{"revision":null,"url":"assets/xterm-vendor-BrP-ENHg.css"},{"revision":null,"url":"assets/workbox-window.prod.es5-DaBTyiAs.js"},{"revision":null,"url":"assets/syntax-highlighter-vendor-CwGXx8v4.js"},{"revision":null,"url":"assets/session-DdZMHc5j.js"},{"revision":null,"url":"assets/session-DItKrSkz.js"},{"revision":null,"url":"assets/routes-CzLZwWu9.js"},{"revision":null,"url":"assets/rolldown-runtime-Dw2cE7zH.js"},{"revision":null,"url":"assets/refractor-vendor-B-OUwWR7.js"},{"revision":null,"url":"assets/projects-DH0K12HM.js"},{"revision":null,"url":"assets/messages-CXGVSZXJ.js"},{"revision":null,"url":"assets/messages-C9GGR_pN.js"},{"revision":null,"url":"assets/messages-BugsdlC4.js"},{"revision":null,"url":"assets/markdown-parser-vendor-D9j1a-bm.js"},{"revision":null,"url":"assets/login-CKSjZM5v.js"},{"revision":null,"url":"assets/label-Cw6sZ5kQ.js"},{"revision":null,"url":"assets/input-B_6IT1CP.js"},{"revision":null,"url":"assets/index-DNPVlDui.css"},{"revision":null,"url":"assets/index-Bmg7UpkS.js"},{"revision":null,"url":"assets/eye-SsvAY8oF.js"},{"revision":null,"url":"assets/dist-Cartj9I0.js"},{"revision":null,"url":"assets/dist-CG2L4mx5.js"},{"revision":null,"url":"assets/createLucideIcon-BL_meogc.js"},{"revision":null,"url":"assets/card-DGrqtTaC.js"},{"revision":null,"url":"assets/ProtectedRoute-BTfjJdM-.js"},{"revision":null,"url":"assets/AuthProvider-Ds-c4CWc.js"},{"revision":"240b426534684434a379fabf89e4e7de","url":"apple-touch-icon.png"},{"revision":"4d206474ef1d07340d4877fd8d55d1f2","url":"favicon.ico"},{"revision":"6fbf57d0a7e87f24825a540ee2680e31","url":"icon-192x192.png"},{"revision":"3c2b8343871429861982aaebd87cb3fd","url":"icon-512x512.png"},{"revision":"c6fdf51d474ddaffd7f6eae78b98617d","url":"icon-maskable-192x192.png"},{"revision":"17c979def623728f51d6366b8cc9a9fa","url":"icon-maskable-512x512.png"},{"revision":"aba1d187e457a57dabd71890aaf77577","url":"manifest.webmanifest"}]),xe(),Q(new we($(`/index.html`),{denylist:[/^\/api\//]})),Q(/\/api\/sse/,new De),Q(/^.*\/api\/.*/i,new Ee({cacheName:`api-cache`,plugins:[new A({maxEntries:100,maxAgeSeconds:3600})]})),self.addEventListener(`push`,e=>{if(!e.data)return;let t=e.data.json();e.waitUntil(self.registration.showNotification(t.title,{body:t.body,icon:`/icon-192x192.png`,badge:`/icon-192x192.png`,data:{url:t.url}}))}),self.addEventListener(`notificationclick`,e=>{e.notification.close();let t=e.notification.data?.url??`/`;e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(e=>{let[n]=e;return n?n.focus().then(e=>e?.navigate(t)):self.clients.openWindow(t)}))});
1
+ try{self[`workbox:core:7.4.0`]&&_()}catch{}var e=(e,...t)=>{let n=e;return t.length>0&&(n+=` :: ${JSON.stringify(t)}`),n},t=class extends Error{constructor(t,n){let r=e(t,n);super(r),this.name=t,this.details=n}};function n(e){e.then(()=>{})}var r=(e,t)=>t.some(t=>e instanceof t),i,a;function o(){return i||=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]}function s(){return a||=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey]}var c=new WeakMap,l=new WeakMap,u=new WeakMap,d=new WeakMap,f=new WeakMap;function ee(e){let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`success`,i),e.removeEventListener(`error`,a)},i=()=>{t(v(e.result)),r()},a=()=>{n(e.error),r()};e.addEventListener(`success`,i),e.addEventListener(`error`,a)});return t.then(t=>{t instanceof IDBCursor&&c.set(t,e)}).catch(()=>{}),f.set(t,e),t}function te(e){if(l.has(e))return;let t=new Promise((t,n)=>{let r=()=>{e.removeEventListener(`complete`,i),e.removeEventListener(`error`,a),e.removeEventListener(`abort`,a)},i=()=>{t(),r()},a=()=>{n(e.error||new DOMException(`AbortError`,`AbortError`)),r()};e.addEventListener(`complete`,i),e.addEventListener(`error`,a),e.addEventListener(`abort`,a)});l.set(e,t)}var p={get(e,t,n){if(e instanceof IDBTransaction){if(t===`done`)return l.get(e);if(t===`objectStoreNames`)return e.objectStoreNames||u.get(e);if(t===`store`)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return v(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t===`done`||t===`store`)?!0:t in e}};function m(e){p=e(p)}function h(e){return e===IDBDatabase.prototype.transaction&&!(`objectStoreNames`in IDBTransaction.prototype)?function(t,...n){let r=e.call(y(this),t,...n);return u.set(r,t.sort?t.sort():[t]),v(r)}:s().includes(e)?function(...t){return e.apply(y(this),t),v(c.get(this))}:function(...t){return v(e.apply(y(this),t))}}function g(e){return typeof e==`function`?h(e):(e instanceof IDBTransaction&&te(e),r(e,o())?new Proxy(e,p):e)}function v(e){if(e instanceof IDBRequest)return ee(e);if(d.has(e))return d.get(e);let t=g(e);return t!==e&&(d.set(e,t),f.set(t,e)),t}var y=e=>f.get(e);function ne(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){let o=indexedDB.open(e,t),s=v(o);return r&&o.addEventListener(`upgradeneeded`,e=>{r(v(o.result),e.oldVersion,e.newVersion,v(o.transaction),e)}),n&&o.addEventListener(`blocked`,e=>n(e.oldVersion,e.newVersion,e)),s.then(e=>{a&&e.addEventListener(`close`,()=>a()),i&&e.addEventListener(`versionchange`,e=>i(e.oldVersion,e.newVersion,e))}).catch(()=>{}),s}function re(e,{blocked:t}={}){let n=indexedDB.deleteDatabase(e);return t&&n.addEventListener(`blocked`,e=>t(e.oldVersion,e)),v(n).then(()=>void 0)}var ie=[`get`,`getKey`,`getAll`,`getAllKeys`,`count`],b=[`put`,`add`,`delete`,`clear`],x=new Map;function S(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t==`string`))return;if(x.get(t))return x.get(t);let n=t.replace(/FromIndex$/,``),r=t!==n,i=b.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||ie.includes(n)))return;let a=async function(e,...t){let a=this.transaction(e,i?`readwrite`:`readonly`),o=a.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&a.done]))[0]};return x.set(t,a),a}m(e=>({...e,get:(t,n,r)=>S(t,n)||e.get(t,n,r),has:(t,n)=>!!S(t,n)||e.has(t,n)}));try{self[`workbox:expiration:7.4.0`]&&_()}catch{}var C=`workbox-expiration`,w=`cache-entries`,T=e=>{let t=new URL(e,location.href);return t.hash=``,t.href},ae=class{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){let t=e.createObjectStore(w,{keyPath:`id`});t.createIndex(`cacheName`,`cacheName`,{unique:!1}),t.createIndex(`timestamp`,`timestamp`,{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&re(this._cacheName)}async setTimestamp(e,t){e=T(e);let n={url:e,timestamp:t,cacheName:this._cacheName,id:this._getId(e)},r=(await this.getDb()).transaction(w,`readwrite`,{durability:`relaxed`});await r.store.put(n),await r.done}async getTimestamp(e){return(await(await this.getDb()).get(w,this._getId(e)))?.timestamp}async expireEntries(e,t){let n=await this.getDb(),r=await n.transaction(w).store.index(`timestamp`).openCursor(null,`prev`),i=[],a=0;for(;r;){let n=r.value;n.cacheName===this._cacheName&&(e&&n.timestamp<e||t&&a>=t?i.push(r.value):a++),r=await r.continue()}let o=[];for(let e of i)await n.delete(w,e.id),o.push(e.url);return o}_getId(e){return this._cacheName+`|`+T(e)}async getDb(){return this._db||=await ne(C,1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)}),this._db}},oe=class{constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new ae(e)}async expireEntries(){if(this._isRunning){this._rerunRequested=!0;return}this._isRunning=!0;let e=this._maxAgeSeconds?Date.now()-this._maxAgeSeconds*1e3:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),r=await self.caches.open(this._cacheName);for(let e of t)await r.delete(e,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,n(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){let t=await this._timestampModel.getTimestamp(e),n=Date.now()-this._maxAgeSeconds*1e3;return t===void 0?!0:t<n}else return!1}async delete(){this._rerunRequested=!1,await this._timestampModel.expireEntries(1/0)}},E={googleAnalytics:`googleAnalytics`,precache:`precache-v2`,prefix:`workbox`,runtime:`runtime`,suffix:typeof registration<`u`?registration.scope:``},D=e=>[E.prefix,e,E.suffix].filter(e=>e&&e.length>0).join(`-`),se=e=>{for(let t of Object.keys(E))e(t)},O={updateDetails:e=>{se(t=>{typeof e[t]==`string`&&(E[t]=e[t])})},getGoogleAnalyticsName:e=>e||D(E.googleAnalytics),getPrecacheName:e=>e||D(E.precache),getPrefix:()=>E.prefix,getRuntimeName:e=>e||D(E.runtime),getSuffix:()=>E.suffix},ce=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),``),k=new Set;function le(e){k.add(e)}var A=class{constructor(e={}){this.cachedResponseWillBeUsed=async({event:e,request:t,cacheName:r,cachedResponse:i})=>{if(!i)return null;let a=this._isResponseDateFresh(i),o=this._getCacheExpiration(r);n(o.expireEntries());let s=o.updateTimestamp(t.url);if(e)try{e.waitUntil(s)}catch{}return a?i:null},this.cacheDidUpdate=async({cacheName:e,request:t})=>{let n=this._getCacheExpiration(e);await n.updateTimestamp(t.url),await n.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&le(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(e){if(e===O.getRuntimeName())throw new t(`expire-custom-caches-only`);let n=this._cacheExpirations.get(e);return n||(n=new oe(e,this._config),this._cacheExpirations.set(e,n)),n}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;let t=this._getDateHeaderTimestamp(e);return t===null?!0:t>=Date.now()-this._maxAgeSeconds*1e3}_getDateHeaderTimestamp(e){if(!e.headers.has(`date`))return null;let t=e.headers.get(`date`),n=new Date(t).getTime();return isNaN(n)?null:n}async deleteCacheAndMetadata(){for(let[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}};function j(e,t){let n=t();return e.waitUntil(n),n}try{self[`workbox:precaching:7.4.0`]&&_()}catch{}var M=`__WB_REVISION__`;function N(e){if(!e)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(typeof e==`string`){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:n,url:r}=e;if(!r)throw new t(`add-to-cache-list-unexpected-type`,{entry:e});if(!n){let e=new URL(r,location.href);return{cacheKey:e.href,url:e.href}}let i=new URL(r,location.href),a=new URL(r,location.href);return i.searchParams.set(M,n),{cacheKey:i.href,url:a.href}}var P=class{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:n})=>{if(e.type===`install`&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;n?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return n}}},F=class{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let n=t?.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return n?new Request(n,{headers:e.headers}):e},this._precacheController=e}},I;function L(){if(I===void 0){let e=new Response(``);if(`body`in e)try{new Response(e.body),I=!0}catch{I=!1}I=!1}return I}async function R(e,n){let r=null;if(e.url&&(r=new URL(e.url).origin),r!==self.location.origin)throw new t(`cross-origin-copy-response`,{origin:r});let i=e.clone(),a={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},o=n?n(a):a,s=L()?i.body:await i.blob();return new Response(s,o)}function z(e,t){let n=new URL(e);for(let e of t)n.searchParams.delete(e);return n.href}async function B(e,t,n,r){let i=z(t.url,n);if(t.url===i)return e.match(t,r);let a=Object.assign(Object.assign({},r),{ignoreSearch:!0}),o=await e.keys(t,a);for(let t of o)if(i===z(t.url,n))return e.match(t,r)}var V=class{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}};async function H(){for(let e of k)await e()}function U(e){return new Promise(t=>setTimeout(t,e))}try{self[`workbox:strategies:7.4.0`]&&_()}catch{}function W(e){return typeof e==`string`?new Request(e):e}var ue=class{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new V,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(let e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:n}=this,r=W(e);if(r.mode===`navigate`&&n instanceof FetchEvent&&n.preloadResponse){let e=await n.preloadResponse;if(e)return e}let i=this.hasCallback(`fetchDidFail`)?r.clone():null;try{for(let e of this.iterateCallbacks(`requestWillFetch`))r=await e({request:r.clone(),event:n})}catch(e){if(e instanceof Error)throw new t(`plugin-error-request-will-fetch`,{thrownErrorMessage:e.message})}let a=r.clone();try{let e;e=await fetch(r,r.mode===`navigate`?void 0:this._strategy.fetchOptions);for(let t of this.iterateCallbacks(`fetchDidSucceed`))e=await t({event:n,request:a,response:e});return e}catch(e){throw i&&await this.runCallbacks(`fetchDidFail`,{error:e,event:n,originalRequest:i.clone(),request:a.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){let t=W(e),n,{cacheName:r,matchOptions:i}=this._strategy,a=await this.getCacheKey(t,`read`),o=Object.assign(Object.assign({},i),{cacheName:r});n=await caches.match(a,o);for(let e of this.iterateCallbacks(`cachedResponseWillBeUsed`))n=await e({cacheName:r,matchOptions:i,cachedResponse:n,request:a,event:this.event})||void 0;return n}async cachePut(e,n){let r=W(e);await U(0);let i=await this.getCacheKey(r,`write`);if(!n)throw new t(`cache-put-with-no-response`,{url:ce(i.url)});let a=await this._ensureResponseSafeToCache(n);if(!a)return!1;let{cacheName:o,matchOptions:s}=this._strategy,c=await self.caches.open(o),l=this.hasCallback(`cacheDidUpdate`),u=l?await B(c,i.clone(),[`__WB_REVISION__`],s):null;try{await c.put(i,l?a.clone():a)}catch(e){if(e instanceof Error)throw e.name===`QuotaExceededError`&&await H(),e}for(let e of this.iterateCallbacks(`cacheDidUpdate`))await e({cacheName:o,oldResponse:u,newResponse:a.clone(),request:i,event:this.event});return!0}async getCacheKey(e,t){let n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let r=e;for(let e of this.iterateCallbacks(`cacheKeyWillBeUsed`))r=W(await e({mode:t,request:r,event:this.event,params:this.params}));this._cacheKeys[n]=r}return this._cacheKeys[n]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if(typeof t[e]==`function`){let n=this._pluginStateMap.get(t);yield r=>{let i=Object.assign(Object.assign({},r),{state:n});return t[e](i)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){let e=this._extendLifetimePromises.splice(0),t=(await Promise.allSettled(e)).find(e=>e.status===`rejected`);if(t)throw t.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(let e of this.iterateCallbacks(`cacheWillUpdate`))if(t=await e({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}},G=class{constructor(e={}){this.cacheName=O.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,n=typeof e.request==`string`?new Request(e.request):e.request,r=`params`in e?e.params:void 0,i=new ue(this,{event:t,request:n,params:r}),a=this._getResponse(i,n,t);return[a,this._awaitComplete(a,i,n,t)]}async _getResponse(e,n,r){await e.runCallbacks(`handlerWillStart`,{event:r,request:n});let i;try{if(i=await this._handle(n,e),!i||i.type===`error`)throw new t(`no-response`,{url:n.url})}catch(t){if(t instanceof Error){for(let a of e.iterateCallbacks(`handlerDidError`))if(i=await a({error:t,event:r,request:n}),i)break}if(!i)throw t}for(let t of e.iterateCallbacks(`handlerWillRespond`))i=await t({event:r,request:n,response:i});return i}async _awaitComplete(e,t,n,r){let i,a;try{i=await e}catch{}try{await t.runCallbacks(`handlerDidRespond`,{event:r,request:n,response:i}),await t.doneWaiting()}catch(e){e instanceof Error&&(a=e)}if(await t.runCallbacks(`handlerDidComplete`,{event:r,request:n,response:i,error:a}),t.destroy(),a)throw a}},K=class e extends G{constructor(t={}){t.cacheName=O.getPrecacheName(t.cacheName),super(t),this._fallbackToNetwork=t.fallbackToNetwork!==!1,this.plugins.push(e.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){return await t.cacheMatch(e)||(t.event&&t.event.type===`install`?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,n){let r,i=n.params||{};if(this._fallbackToNetwork){let t=i.integrity,a=e.integrity,o=!a||a===t;r=await n.fetch(new Request(e,{integrity:e.mode===`no-cors`?void 0:a||t})),t&&o&&e.mode!==`no-cors`&&(this._useDefaultCacheabilityPluginIfNeeded(),await n.cachePut(e,r.clone()))}else throw new t(`missing-precache-entry`,{cacheName:this.cacheName,url:e.url});return r}async _handleInstall(e,n){this._useDefaultCacheabilityPluginIfNeeded();let r=await n.fetch(e);if(!await n.cachePut(e,r.clone()))throw new t(`bad-precaching-response`,{url:e.url,status:r.status});return r}_useDefaultCacheabilityPluginIfNeeded(){let t=null,n=0;for(let[r,i]of this.plugins.entries())i!==e.copyRedirectedCacheableResponsesPlugin&&(i===e.defaultPrecacheCacheabilityPlugin&&(t=r),i.cacheWillUpdate&&n++);n===0?this.plugins.push(e.defaultPrecacheCacheabilityPlugin):n>1&&t!==null&&this.plugins.splice(t,1)}};K.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:e}){return!e||e.status>=400?null:e}},K.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:e}){return e.redirected?await R(e):e}};var de=class{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new K({cacheName:O.getPrecacheName(e),plugins:[...t,new F({precacheController:this})],fallbackToNetwork:n}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||=(self.addEventListener(`install`,this.install),self.addEventListener(`activate`,this.activate),!0)}addToCacheList(e){let n=[];for(let r of e){typeof r==`string`?n.push(r):r&&r.revision===void 0&&n.push(r.url);let{cacheKey:e,url:i}=N(r),a=typeof r!=`string`&&r.revision?`reload`:`default`;if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==e)throw new t(`add-to-cache-list-conflicting-entries`,{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:e});if(typeof r!=`string`&&r.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==r.integrity)throw new t(`add-to-cache-list-conflicting-integrities`,{url:i});this._cacheKeysToIntegrities.set(e,r.integrity)}if(this._urlsToCacheKeys.set(i,e),this._urlsToCacheModes.set(i,a),n.length>0){let e=`Workbox is precaching URLs without revision info: ${n.join(`, `)}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return j(e,async()=>{let t=new P;this.strategy.plugins.push(t);for(let[t,n]of this._urlsToCacheKeys){let r=this._cacheKeysToIntegrities.get(n),i=this._urlsToCacheModes.get(t),a=new Request(t,{integrity:r,cache:i,credentials:`same-origin`});await Promise.all(this.strategy.handleAll({params:{cacheKey:n},request:a,event:e}))}let{updatedURLs:n,notUpdatedURLs:r}=t;return{updatedURLs:n,notUpdatedURLs:r}})}activate(e){return j(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),n=new Set(this._urlsToCacheKeys.values()),r=[];for(let i of t)n.has(i.url)||(await e.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,n=this.getCacheKeyForURL(t);if(n)return(await self.caches.open(this.strategy.cacheName)).match(n)}createHandlerBoundToURL(e){let n=this.getCacheKeyForURL(e);if(!n)throw new t(`non-precached-url`,{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:n},t.params),this.strategy.handle(t))}},q,J=()=>(q||=new de,q);try{self[`workbox:routing:7.4.0`]&&_()}catch{}var Y=e=>e&&typeof e==`object`?e:{handle:e},X=class{constructor(e,t,n=`GET`){this.handler=Y(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=Y(e)}},fe=class extends X{constructor(e,t,n){super(({url:t})=>{let n=e.exec(t.href);if(n&&!(t.origin!==location.origin&&n.index!==0))return n.slice(1)},t,n)}},pe=class{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener(`fetch`,(e=>{let{request:t}=e,n=this.handleRequest({request:t,event:e});n&&e.respondWith(n)}))}addCacheListener(){self.addEventListener(`message`,(e=>{if(e.data&&e.data.type===`CACHE_URLS`){let{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(t=>{typeof t==`string`&&(t=[t]);let n=new Request(...t);return this.handleRequest({request:n,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){let n=new URL(e.url,location.href);if(!n.protocol.startsWith(`http`))return;let r=n.origin===location.origin,{params:i,route:a}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:n}),o=a&&a.handler,s=e.method;if(!o&&this._defaultHandlerMap.has(s)&&(o=this._defaultHandlerMap.get(s)),!o)return;let c;try{c=o.handle({url:n,request:e,event:t,params:i})}catch(e){c=Promise.reject(e)}let l=a&&a.catchHandler;return c instanceof Promise&&(this._catchHandler||l)&&(c=c.catch(async r=>{if(l)try{return await l.handle({url:n,request:e,event:t,params:i})}catch(e){e instanceof Error&&(r=e)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw r})),c}findMatchingRoute({url:e,sameOrigin:t,request:n,event:r}){let i=this._routes.get(n.method)||[];for(let a of i){let i,o=a.match({url:e,sameOrigin:t,request:n,event:r});if(o)return i=o,(Array.isArray(i)&&i.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o==`boolean`)&&(i=void 0),{route:a,params:i}}return{}}setDefaultHandler(e,t=`GET`){this._defaultHandlerMap.set(t,Y(e))}setCatchHandler(e){this._catchHandler=Y(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t(`unregister-route-but-not-found-with-method`,{method:e.method});let n=this._routes.get(e.method).indexOf(e);if(n>-1)this._routes.get(e.method).splice(n,1);else throw new t(`unregister-route-route-not-registered`)}},Z,me=()=>(Z||(Z=new pe,Z.addFetchListener(),Z.addCacheListener()),Z);function Q(e,n,r){let i;if(typeof e==`string`){let t=new URL(e,location.href);i=new X(({url:e})=>e.href===t.href,n,r)}else if(e instanceof RegExp)i=new fe(e,n,r);else if(typeof e==`function`)i=new X(e,n,r);else if(e instanceof X)i=e;else throw new t(`unsupported-route-type`,{moduleName:`workbox-routing`,funcName:`registerRoute`,paramName:`capture`});return me().registerRoute(i),i}function he(e,t=[]){for(let n of[...e.searchParams.keys()])t.some(e=>e.test(n))&&e.searchParams.delete(n);return e}function*ge(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:n=`index.html`,cleanURLs:r=!0,urlManipulation:i}={}){let a=new URL(e,location.href);a.hash=``,yield a.href;let o=he(a,t);if(yield o.href,n&&o.pathname.endsWith(`/`)){let e=new URL(o.href);e.pathname+=n,yield e.href}if(r){let e=new URL(o.href);e.pathname+=`.html`,yield e.href}if(i){let e=i({url:a});for(let t of e)yield t.href}}var _e=class extends X{constructor(e,t){super(({request:n})=>{let r=e.getURLsToCacheKeys();for(let i of ge(n.url,t)){let t=r.get(i);if(t)return{cacheKey:t,integrity:e.getIntegrityForCacheKey(t)}}},e.strategy)}};function ve(e){Q(new _e(J(),e))}var ye=`-precache-`,be=async(e,t=ye)=>{let n=(await self.caches.keys()).filter(n=>n.includes(t)&&n.includes(self.registration.scope)&&n!==e);return await Promise.all(n.map(e=>self.caches.delete(e))),n};function xe(){self.addEventListener(`activate`,(e=>{let t=O.getPrecacheName();e.waitUntil(be(t).then(e=>{}))}))}function $(e){return J().createHandlerBoundToURL(e)}function Se(e){J().precache(e)}function Ce(e,t){Se(e),ve(t)}var we=class extends X{constructor(e,{allowlist:t=[/./],denylist:n=[]}={}){super(e=>this._match(e),e),this._allowlist=t,this._denylist=n}_match({url:e,request:t}){if(t&&t.mode!==`navigate`)return!1;let n=e.pathname+e.search;for(let e of this._denylist)if(e.test(n))return!1;return!!this._allowlist.some(e=>e.test(n))}},Te={cacheWillUpdate:async({response:e})=>e.status===200||e.status===0?e:null},Ee=class extends G{constructor(e={}){super(e),this.plugins.some(e=>`cacheWillUpdate`in e)||this.plugins.unshift(Te),this._networkTimeoutSeconds=e.networkTimeoutSeconds||0}async _handle(e,n){let r=[],i=[],a;if(this._networkTimeoutSeconds){let{id:t,promise:o}=this._getTimeoutPromise({request:e,logs:r,handler:n});a=t,i.push(o)}let o=this._getNetworkPromise({timeoutId:a,request:e,logs:r,handler:n});i.push(o);let s=await n.waitUntil((async()=>await n.waitUntil(Promise.race(i))||await o)());if(!s)throw new t(`no-response`,{url:e.url});return s}_getTimeoutPromise({request:e,logs:t,handler:n}){let r;return{promise:new Promise(t=>{r=setTimeout(async()=>{t(await n.cacheMatch(e))},this._networkTimeoutSeconds*1e3)}),id:r}}async _getNetworkPromise({timeoutId:e,request:t,logs:n,handler:r}){let i,a;try{a=await r.fetchAndCachePut(t)}catch(e){e instanceof Error&&(i=e)}return e&&clearTimeout(e),(i||!a)&&(a=await r.cacheMatch(t)),a}},De=class extends G{constructor(e={}){super(e),this._networkTimeoutSeconds=e.networkTimeoutSeconds||0}async _handle(e,n){let r,i;try{let t=[n.fetch(e)];if(this._networkTimeoutSeconds){let e=U(this._networkTimeoutSeconds*1e3);t.push(e)}if(i=await Promise.race(t),!i)throw Error(`Timed out the network response after ${this._networkTimeoutSeconds} seconds.`)}catch(e){e instanceof Error&&(r=e)}if(!i)throw new t(`no-response`,{url:e.url,error:r});return i}};Ce([{"revision":"883b2fe30e466b130205f50ff9d8fd36","url":"index.html"},{"revision":"17c979def623728f51d6366b8cc9a9fa","url":"icon-maskable-512x512.png"},{"revision":"c6fdf51d474ddaffd7f6eae78b98617d","url":"icon-maskable-192x192.png"},{"revision":"3c2b8343871429861982aaebd87cb3fd","url":"icon-512x512.png"},{"revision":"6fbf57d0a7e87f24825a540ee2680e31","url":"icon-192x192.png"},{"revision":"4d206474ef1d07340d4877fd8d55d1f2","url":"favicon.ico"},{"revision":"240b426534684434a379fabf89e4e7de","url":"apple-touch-icon.png"},{"revision":null,"url":"assets/xterm-vendor-D6WsVDeV.js"},{"revision":null,"url":"assets/xterm-vendor-BrP-ENHg.css"},{"revision":null,"url":"assets/workbox-window.prod.es5-8x20nBgX.js"},{"revision":null,"url":"assets/syntax-highlighter-vendor-BmNdBw1C.js"},{"revision":null,"url":"assets/session-BxPcWj4u.js"},{"revision":null,"url":"assets/session-Bh26l_lo.js"},{"revision":null,"url":"assets/routes-DCVxLOkG.js"},{"revision":null,"url":"assets/rolldown-runtime-S-ySWqyJ.js"},{"revision":null,"url":"assets/refractor-vendor-BfdmH2uT.js"},{"revision":null,"url":"assets/projects-CzabZWrQ.js"},{"revision":null,"url":"assets/messages-CXGVSZXJ.js"},{"revision":null,"url":"assets/messages-C9GGR_pN.js"},{"revision":null,"url":"assets/messages-BugsdlC4.js"},{"revision":null,"url":"assets/markdown-parser-vendor-BdkS_k_8.js"},{"revision":null,"url":"assets/login-B5ql67Sw.js"},{"revision":null,"url":"assets/label-CV_Y-Hm3.js"},{"revision":null,"url":"assets/input-M1VOtQpS.js"},{"revision":null,"url":"assets/index-CRjH32Aw.css"},{"revision":null,"url":"assets/index-B-si4iv9.js"},{"revision":null,"url":"assets/eye-93IqRP6X.js"},{"revision":null,"url":"assets/dist-DsKpSV8b.js"},{"revision":null,"url":"assets/dist-BSr9MeK6.js"},{"revision":null,"url":"assets/createLucideIcon-Dr4vJxG7.js"},{"revision":null,"url":"assets/card-D9aMzhGi.js"},{"revision":null,"url":"assets/ProtectedRoute-Bd-6jyxE.js"},{"revision":null,"url":"assets/AuthProvider-a1wlLm40.js"},{"revision":"240b426534684434a379fabf89e4e7de","url":"apple-touch-icon.png"},{"revision":"4d206474ef1d07340d4877fd8d55d1f2","url":"favicon.ico"},{"revision":"6fbf57d0a7e87f24825a540ee2680e31","url":"icon-192x192.png"},{"revision":"3c2b8343871429861982aaebd87cb3fd","url":"icon-512x512.png"},{"revision":"c6fdf51d474ddaffd7f6eae78b98617d","url":"icon-maskable-192x192.png"},{"revision":"17c979def623728f51d6366b8cc9a9fa","url":"icon-maskable-512x512.png"},{"revision":"aba1d187e457a57dabd71890aaf77577","url":"manifest.webmanifest"}]),xe(),Q(new we($(`/index.html`),{denylist:[/^\/api\//]})),Q(/\/api\/sse/,new De),Q(/^.*\/api\/.*/i,new Ee({cacheName:`api-cache`,plugins:[new A({maxEntries:100,maxAgeSeconds:3600})]})),self.addEventListener(`push`,e=>{if(!e.data)return;let t=e.data.json();e.waitUntil(self.registration.showNotification(t.title,{body:t.body,icon:`/icon-192x192.png`,badge:`/icon-192x192.png`,data:{url:t.url}}))}),self.addEventListener(`notificationclick`,e=>{e.notification.close();let t=e.notification.data?.url??`/`;e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(e=>{let[n]=e;return n?n.focus().then(e=>e?.navigate(t)):self.clients.openWindow(t)}))});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kimuson/claude-code-viewer",
3
- "version": "0.7.3",
3
+ "version": "0.7.5",
4
4
  "description": "A full-featured web-based Claude Code client that provides complete interactive functionality for managing Claude Code projects.",
5
5
  "homepage": "https://github.com/d-kimuson/claude-code-viewer",
6
6
  "license": "MIT",
@@ -16,137 +16,10 @@
16
16
  ],
17
17
  "type": "module",
18
18
  "dependencies": {
19
- "@anthropic-ai/claude-agent-sdk": "0.2.90",
20
19
  "@anthropic-ai/claude-code": "2.1.90",
21
- "@anthropic-ai/sdk": "0.82.0",
22
- "@effect/cluster": "0.58.0",
23
- "@effect/experimental": "0.60.0",
24
- "@effect/platform": "0.96.0",
25
- "@effect/platform-node": "0.106.0",
26
- "@effect/rpc": "0.75.0",
27
- "@effect/sql": "0.51.0",
28
- "@effect/workflow": "0.18.0",
29
- "@hono/node-server": "1.19.12",
30
- "@hono/zod-validator": "0.7.6",
31
- "@hookform/resolvers": "5.2.2",
32
- "@lingui/core": "5.9.4",
33
- "@lingui/react": "5.9.4",
34
- "@radix-ui/react-avatar": "1.1.11",
35
- "@radix-ui/react-checkbox": "1.3.3",
36
- "@radix-ui/react-collapsible": "1.1.12",
37
- "@radix-ui/react-dialog": "1.1.15",
38
- "@radix-ui/react-hover-card": "1.1.15",
39
- "@radix-ui/react-popover": "1.1.15",
40
- "@radix-ui/react-select": "2.2.6",
41
- "@radix-ui/react-slot": "1.2.4",
42
- "@radix-ui/react-tabs": "1.1.13",
43
- "@radix-ui/react-tooltip": "1.2.8",
44
- "@replit/ruspty": "3.7.0",
45
- "@tailwindcss/vite": "4.2.2",
46
- "@tanstack/react-devtools": "0.10.1",
47
- "@tanstack/react-query": "5.96.1",
48
- "@tanstack/react-router": "1.168.10",
49
- "@tanstack/react-router-devtools": "1.166.11",
50
- "@xterm/addon-fit": "0.11.0",
51
- "@xterm/xterm": "6.0.0",
52
- "class-variance-authority": "0.7.1",
53
- "clsx": "2.1.1",
54
- "cmdk": "1.1.1",
55
- "commander": "14.0.3",
56
- "date-fns": "4.1.0",
57
- "drizzle-orm": "1.0.0-beta.20",
58
- "effect": "3.21.0",
59
- "es-toolkit": "1.45.1",
60
- "hono": "4.12.9",
61
- "jotai": "2.19.0",
62
- "lucide-react": "1.7.0",
63
- "parse-git-diff": "0.0.20",
64
- "picomatch": "^4.0.4",
65
- "prexit": "2.3.0",
66
- "radix-ui": "1.4.3",
67
- "react": "19.2.4",
68
- "react-dom": "19.2.4",
69
- "react-error-boundary": "6.1.1",
70
- "react-hook-form": "7.72.0",
71
- "react-markdown": "10.1.0",
72
- "react-syntax-highlighter": "16.1.1",
73
- "remark-gfm": "4.0.1",
74
- "sonner": "2.0.7",
75
- "tailwind-merge": "3.5.0",
76
- "ulid": "3.0.2",
77
- "web-push": "^3.6.7",
78
- "ws": "8.20.0",
79
- "zod": "4.3.6"
80
- },
81
- "devDependencies": {
82
- "@effect/language-service": "0.84.2",
83
- "@effect/vitest": "^0.29.0",
84
- "@lingui/cli": "5.9.4",
85
- "@lingui/conf": "5.9.4",
86
- "@lingui/format-json": "5.9.4",
87
- "@lingui/loader": "5.9.4",
88
- "@lingui/vite-plugin": "5.9.4",
89
- "@tailwindcss/postcss": "4.2.2",
90
- "@tanstack/router-plugin": "1.167.12",
91
- "@tsconfig/strictest": "2.0.8",
92
- "@types/node": "25.5.0",
93
- "@types/picomatch": "^4.0.3",
94
- "@types/react": "19.2.14",
95
- "@types/react-dom": "19.2.3",
96
- "@types/react-syntax-highlighter": "15.5.13",
97
- "@types/web-push": "^3.6.4",
98
- "@types/ws": "8.18.1",
99
- "@typescript/native-preview": "7.0.0-dev.20260401.1",
100
- "@vitejs/plugin-react-swc": "4.3.0",
101
- "dotenv": "17.4.0",
102
- "drizzle-kit": "1.0.0-beta.20",
103
- "esbuild": "0.27.5",
104
- "gatecheck": "0.0.1-beta.5",
105
- "jsdom": "^29.0.1",
106
- "lefthook": "2.1.4",
107
- "npm-run-all2": "8.0.4",
108
- "oxfmt": "^0.43.0",
109
- "oxlint": "^1.58.0",
110
- "oxlint-tsgolint": "^0.19.0",
111
- "playwright": "1.59.1",
112
- "release-it": "19.2.4",
113
- "release-it-pnpm": "4.6.6",
114
- "tailwindcss": "4.2.2",
115
- "tw-animate-css": "1.4.0",
116
- "vite": "8.0.3",
117
- "vite-plugin-pwa": "^1.2.0",
118
- "vitest": "4.1.2",
119
- "workbox-build": "^7.4.0",
120
- "workbox-expiration": "^7.4.0",
121
- "workbox-precaching": "^7.4.0",
122
- "workbox-routing": "^7.4.0",
123
- "workbox-strategies": "^7.4.0",
124
- "workbox-window": "^7.4.0"
20
+ "@replit/ruspty": "3.7.0"
125
21
  },
126
22
  "engines": {
127
- "node": ">=22.13.0"
128
- },
129
- "scripts": {
130
- "dev": "run-p 'dev:*'",
131
- "dev:frontend": "vite",
132
- "dev:backend": "CCV_ENV=development node --watch --env-file-if-exists=.env.local src/server/main.ts",
133
- "start": "node dist/main.js",
134
- "build": "./scripts/build.sh",
135
- "build:frontend": "vite build",
136
- "build:backend": "esbuild src/server/main.ts --format=esm --bundle --packages=external --sourcemap --platform=node --outfile=dist/main.js",
137
- "lint": "run-p 'lint:*'",
138
- "lint:oxlint": "oxlint --ignore-path .gitignore",
139
- "lint:oxfmt": "pnpm fix:oxfmt --check",
140
- "fix": "run-p 'fix:*'",
141
- "fix:oxlint": "pnpm lint:oxlint --fix",
142
- "fix:oxfmt": "oxfmt --ignore-path .gitignore --no-error-on-unmatched-pattern",
143
- "typecheck": "tsgo --noEmit",
144
- "test": "vitest --run",
145
- "test:watch": "vitest",
146
- "e2e": "./scripts/e2e/exec_e2e.sh",
147
- "e2e:start-server": "./scripts/e2e/start_server.sh",
148
- "e2e:capture-snapshots": "./scripts/e2e/capture_snapshots.sh",
149
- "lingui:extract": "lingui extract --clean && node ./scripts/lingui-sort.js",
150
- "lingui:compile": "lingui compile --typescript"
23
+ "node": ">=24.0.0"
151
24
  }
152
25
  }