termbeam 1.18.0 → 1.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/public/assets/{_basePickBy-CVn0rIeA.js → _basePickBy-SVV3-IdA.js} +1 -1
- package/public/assets/{_baseUniq-D-ViDZI1.js → _baseUniq-DOa_cDXJ.js} +1 -1
- package/public/assets/{arc-BWX7iih_.js → arc-CiPooz6h.js} +1 -1
- package/public/assets/{architectureDiagram-2XIMDMQ5-Dr3bqfT2.js → architectureDiagram-2XIMDMQ5-DLhsY97x.js} +1 -1
- package/public/assets/{blockDiagram-WCTKOSBZ-RZQh_7bp.js → blockDiagram-WCTKOSBZ-BmfWKjiE.js} +1 -1
- package/public/assets/{c4Diagram-IC4MRINW-BM1jg1mo.js → c4Diagram-IC4MRINW-CHJjiNgt.js} +1 -1
- package/public/assets/channel-BK2nwbl-.js +1 -0
- package/public/assets/{chunk-4BX2VUAB-Cz0Sexay.js → chunk-4BX2VUAB-DslNFup8.js} +1 -1
- package/public/assets/{chunk-55IACEB6-DhjD4VKO.js → chunk-55IACEB6-DF8ZBVw6.js} +1 -1
- package/public/assets/{chunk-FMBD7UC4-H_1l13Rz.js → chunk-FMBD7UC4-CVO2u-Sv.js} +1 -1
- package/public/assets/{chunk-JSJVCQXG-D_GdzPQn.js → chunk-JSJVCQXG-CdSwCmzy.js} +1 -1
- package/public/assets/{chunk-KX2RTZJC-BU-NTTwY.js → chunk-KX2RTZJC-DR85cVBM.js} +1 -1
- package/public/assets/{chunk-NQ4KR5QH-_X3IQmYu.js → chunk-NQ4KR5QH-DENB8fT9.js} +1 -1
- package/public/assets/{chunk-QZHKN3VN-CrSItx1v.js → chunk-QZHKN3VN-D1hlvsPG.js} +1 -1
- package/public/assets/{chunk-WL4C6EOR-XtpH4KKr.js → chunk-WL4C6EOR-BFkfV9d-.js} +1 -1
- package/public/assets/classDiagram-VBA2DB6C-Ca3s5d8r.js +1 -0
- package/public/assets/classDiagram-v2-RAHNMMFH-Ca3s5d8r.js +1 -0
- package/public/assets/clone-Zyw2C-Y3.js +1 -0
- package/public/assets/{cose-bilkent-S5V4N54A-BNYNzK1p.js → cose-bilkent-S5V4N54A-BHgn8K1Z.js} +1 -1
- package/public/assets/{dagre-KLK3FWXG-CvP5MaIU.js → dagre-KLK3FWXG-CK-UftHZ.js} +1 -1
- package/public/assets/{diagram-E7M64L7V-C1ypW2kT.js → diagram-E7M64L7V-B7XX1Mqr.js} +1 -1
- package/public/assets/{diagram-IFDJBPK2-CH5mcu6V.js → diagram-IFDJBPK2-DtSlXz7u.js} +1 -1
- package/public/assets/{diagram-P4PSJMXO-D7EqFseu.js → diagram-P4PSJMXO-Cb0uoPeh.js} +1 -1
- package/public/assets/{erDiagram-INFDFZHY-Dc_91GQC.js → erDiagram-INFDFZHY-D2aAhxDx.js} +1 -1
- package/public/assets/{flowDiagram-PKNHOUZH-wUw5Mjvb.js → flowDiagram-PKNHOUZH-BxCqn1aV.js} +1 -1
- package/public/assets/{ganttDiagram-A5KZAMGK-C55hiPqb.js → ganttDiagram-A5KZAMGK-oBrRehQA.js} +1 -1
- package/public/assets/{gitGraphDiagram-K3NZZRJ6-D3HBxR11.js → gitGraphDiagram-K3NZZRJ6-CMuK7hOw.js} +1 -1
- package/public/assets/{graph-mq5DkKwp.js → graph-NJUd-2rr.js} +1 -1
- package/public/assets/{index-Cpm34cTy.css → index-BzV_FYAW.css} +1 -1
- package/public/assets/{index-BxVq7AYs.js → index-DBnflEQZ.js} +98 -98
- package/public/assets/{infoDiagram-LFFYTUFH-Cisyfr_w.js → infoDiagram-LFFYTUFH-C0cd4K10.js} +1 -1
- package/public/assets/{ishikawaDiagram-PHBUUO56-BjaKmPoV.js → ishikawaDiagram-PHBUUO56-Ny_4n8vD.js} +1 -1
- package/public/assets/{journeyDiagram-4ABVD52K-BNP3C6Ph.js → journeyDiagram-4ABVD52K-2QGufcXt.js} +1 -1
- package/public/assets/{kanban-definition-K7BYSVSG-D9TVNfL2.js → kanban-definition-K7BYSVSG-DDGFShX4.js} +1 -1
- package/public/assets/{layout-DIfi_3Cg.js → layout-DTAwaKXg.js} +1 -1
- package/public/assets/{linear-CNFortHj.js → linear-CSYWJnE5.js} +1 -1
- package/public/assets/{mindmap-definition-YRQLILUH-CfNe7W8X.js → mindmap-definition-YRQLILUH-C6Jy7Tz1.js} +1 -1
- package/public/assets/{pieDiagram-SKSYHLDU-C3T1FeFD.js → pieDiagram-SKSYHLDU-DCNv1DYe.js} +1 -1
- package/public/assets/{quadrantDiagram-337W2JSQ-Dcj0avLR.js → quadrantDiagram-337W2JSQ-DWGyMcZ6.js} +1 -1
- package/public/assets/{requirementDiagram-Z7DCOOCP-D4yTZU0p.js → requirementDiagram-Z7DCOOCP-BC1_RS6p.js} +1 -1
- package/public/assets/{sankeyDiagram-WA2Y5GQK-CpT1bDmZ.js → sankeyDiagram-WA2Y5GQK-GoTjgmGo.js} +1 -1
- package/public/assets/{sequenceDiagram-2WXFIKYE-CPsVjHHb.js → sequenceDiagram-2WXFIKYE-CjTa5Eua.js} +1 -1
- package/public/assets/{stateDiagram-RAJIS63D-CbB0QqSa.js → stateDiagram-RAJIS63D-wf6b0MTk.js} +1 -1
- package/public/assets/stateDiagram-v2-FVOUBMTO-lYMaTr7v.js +1 -0
- package/public/assets/{timeline-definition-YZTLITO2-Bi12ioU0.js → timeline-definition-YZTLITO2-BHWYxexH.js} +1 -1
- package/public/assets/{treemap-KZPCXAKY-Ct-pligZ.js → treemap-KZPCXAKY-0OLZO-76.js} +1 -1
- package/public/assets/{vennDiagram-LZ73GAT5-Ci8AKqD1.js → vennDiagram-LZ73GAT5-DzlX55oz.js} +1 -1
- package/public/assets/{xychartDiagram-JWTSCODW-BsOGuDAL.js → xychartDiagram-JWTSCODW-DafJ-a-f.js} +1 -1
- package/public/index.html +2 -2
- package/public/sw.js +2 -2
- package/src/server/index.js +5 -49
- package/src/server/routes.js +19 -72
- package/src/server/sessions.js +20 -0
- package/src/tunnel/index.js +4 -6
- package/public/assets/channel-N7LACYfb.js +0 -1
- package/public/assets/classDiagram-VBA2DB6C-Ct_F3N6M.js +0 -1
- package/public/assets/classDiagram-v2-RAHNMMFH-Ct_F3N6M.js +0 -1
- package/public/assets/clone-DfaqXUXL.js +0 -1
- package/public/assets/stateDiagram-v2-FVOUBMTO-CQnYvVz1.js +0 -1
package/public/sw.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
try{self["workbox:core:7.3.0"]&&_()}catch{}const G=(s,...e)=>{let t=s;return e.length>0&&(t+=` :: ${JSON.stringify(e)}`),t},Q=G;class h extends Error{constructor(e,t){const n=Q(e,t);super(n),this.name=e,this.details=t}}const d={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:typeof registration<"u"?registration.scope:""},E=s=>[d.prefix,s,d.suffix].filter(e=>e&&e.length>0).join("-"),z=s=>{for(const e of Object.keys(d))s(e)},b={updateDetails:s=>{z(e=>{typeof s[e]=="string"&&(d[e]=s[e])})},getGoogleAnalyticsName:s=>s||E(d.googleAnalytics),getPrecacheName:s=>s||E(d.precache),getPrefix:()=>d.prefix,getRuntimeName:s=>s||E(d.runtime),getSuffix:()=>d.suffix};function N(s,e){const t=e();return s.waitUntil(t),t}try{self["workbox:precaching:7.3.0"]&&_()}catch{}const J="__WB_REVISION__";function X(s){if(!s)throw new h("add-to-cache-list-unexpected-type",{entry:s});if(typeof s=="string"){const r=new URL(s,location.href);return{cacheKey:r.href,url:r.href}}const{revision:e,url:t}=s;if(!t)throw new h("add-to-cache-list-unexpected-type",{entry:s});if(!e){const r=new URL(t,location.href);return{cacheKey:r.href,url:r.href}}const n=new URL(t,location.href),a=new URL(t,location.href);return n.searchParams.set(J,e),{cacheKey:n.href,url:a.href}}class Y{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){const a=t.originalRequest.url;n?this.notUpdatedURLs.push(a):this.updatedURLs.push(a)}return n}}}class Z{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:t,params:n})=>{const a=(n==null?void 0:n.cacheKey)||this._precacheController.getCacheKeyForURL(t.url);return a?new Request(a,{headers:t.headers}):t},this._precacheController=e}}let m;function ee(){if(m===void 0){const s=new Response("");if("body"in s)try{new Response(s.body),m=!0}catch{m=!1}m=!1}return m}async function te(s,e){let t=null;if(s.url&&(t=new URL(s.url).origin),t!==self.location.origin)throw new h("cross-origin-copy-response",{origin:t});const n=s.clone(),r={headers:new Headers(n.headers),status:n.status,statusText:n.statusText},i=ee()?n.body:await n.blob();return new Response(i,r)}const se=s=>new URL(String(s),location.href).href.replace(new RegExp(`^${location.origin}`),"");function M(s,e){const t=new URL(s);for(const n of e)t.searchParams.delete(n);return t.href}async function ne(s,e,t,n){const a=M(e.url,t);if(e.url===a)return s.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),i=await s.keys(e,r);for(const c of i){const o=M(c.url,t);if(a===o)return s.match(c,n)}}class ae{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}const B=new Set;async function re(){for(const s of B)await s()}function ie(s){return new Promise(e=>setTimeout(e,s))}try{self["workbox:strategies:7.3.0"]&&_()}catch{}function C(s){return typeof s=="string"?new Request(s):s}class ce{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new ae,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const n of this._plugins)this._pluginStateMap.set(n,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:t}=this;let n=C(e);if(n.mode==="navigate"&&t instanceof FetchEvent&&t.preloadResponse){const i=await t.preloadResponse;if(i)return i}const a=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const i of this.iterateCallbacks("requestWillFetch"))n=await i({request:n.clone(),event:t})}catch(i){if(i instanceof Error)throw new h("plugin-error-request-will-fetch",{thrownErrorMessage:i.message})}const r=n.clone();try{let i;i=await fetch(n,n.mode==="navigate"?void 0:this._strategy.fetchOptions);for(const c of this.iterateCallbacks("fetchDidSucceed"))i=await c({event:t,request:r,response:i});return i}catch(i){throw a&&await this.runCallbacks("fetchDidFail",{error:i,event:t,originalRequest:a.clone(),request:r.clone()}),i}}async fetchAndCachePut(e){const t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){const t=C(e);let n;const{cacheName:a,matchOptions:r}=this._strategy,i=await this.getCacheKey(t,"read"),c=Object.assign(Object.assign({},r),{cacheName:a});n=await caches.match(i,c);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))n=await o({cacheName:a,matchOptions:r,cachedResponse:n,request:i,event:this.event})||void 0;return n}async cachePut(e,t){const n=C(e);await ie(0);const a=await this.getCacheKey(n,"write");if(!t)throw new h("cache-put-with-no-response",{url:se(a.url)});const r=await this._ensureResponseSafeToCache(t);if(!r)return!1;const{cacheName:i,matchOptions:c}=this._strategy,o=await self.caches.open(i),l=this.hasCallback("cacheDidUpdate"),g=l?await ne(o,a.clone(),["__WB_REVISION__"],c):null;try{await o.put(a,l?r.clone():r)}catch(u){if(u instanceof Error)throw u.name==="QuotaExceededError"&&await re(),u}for(const u of this.iterateCallbacks("cacheDidUpdate"))await u({cacheName:i,oldResponse:g,newResponse:r.clone(),request:a,event:this.event});return!0}async getCacheKey(e,t){const n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let a=e;for(const r of this.iterateCallbacks("cacheKeyWillBeUsed"))a=C(await r({mode:t,request:a,event:this.event,params:this.params}));this._cacheKeys[n]=a}return this._cacheKeys[n]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if(typeof t[e]=="function"){const n=this._pluginStateMap.get(t);yield r=>{const 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;){const e=this._extendLifetimePromises.splice(0),n=(await Promise.allSettled(e)).find(a=>a.status==="rejected");if(n)throw n.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(const a of this.iterateCallbacks("cacheWillUpdate"))if(t=await a({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}}class W{constructor(e={}){this.cacheName=b.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,n=typeof e.request=="string"?new Request(e.request):e.request,a="params"in e?e.params:void 0,r=new ce(this,{event:t,request:n,params:a}),i=this._getResponse(r,n,t),c=this._awaitComplete(i,r,n,t);return[i,c]}async _getResponse(e,t,n){await e.runCallbacks("handlerWillStart",{event:n,request:t});let a;try{if(a=await this._handle(t,e),!a||a.type==="error")throw new h("no-response",{url:t.url})}catch(r){if(r instanceof Error){for(const i of e.iterateCallbacks("handlerDidError"))if(a=await i({error:r,event:n,request:t}),a)break}if(!a)throw r}for(const r of e.iterateCallbacks("handlerWillRespond"))a=await r({event:n,request:t,response:a});return a}async _awaitComplete(e,t,n,a){let r,i;try{r=await e}catch{}try{await t.runCallbacks("handlerDidRespond",{event:a,request:n,response:r}),await t.doneWaiting()}catch(c){c instanceof Error&&(i=c)}if(await t.runCallbacks("handlerDidComplete",{event:a,request:n,response:r,error:i}),t.destroy(),i)throw i}}class p extends W{constructor(e={}){e.cacheName=b.getPrecacheName(e.cacheName),super(e),this._fallbackToNetwork=e.fallbackToNetwork!==!1,this.plugins.push(p.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const n=await t.cacheMatch(e);return n||(t.event&&t.event.type==="install"?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,t){let n;const a=t.params||{};if(this._fallbackToNetwork){const r=a.integrity,i=e.integrity,c=!i||i===r;n=await t.fetch(new Request(e,{integrity:e.mode!=="no-cors"?i||r:void 0})),r&&c&&e.mode!=="no-cors"&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,n.clone()))}else throw new h("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return n}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();const n=await t.fetch(e);if(!await t.cachePut(e,n.clone()))throw new h("bad-precaching-response",{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[n,a]of this.plugins.entries())a!==p.copyRedirectedCacheableResponsesPlugin&&(a===p.defaultPrecacheCacheabilityPlugin&&(e=n),a.cacheWillUpdate&&t++);t===0?this.plugins.push(p.defaultPrecacheCacheabilityPlugin):t>1&&e!==null&&this.plugins.splice(e,1)}}p.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:s}){return!s||s.status>=400?null:s}};p.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:s}){return s.redirected?await te(s):s}};class oe{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new p({cacheName:b.getPrecacheName(e),plugins:[...t,new Z({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),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const t=[];for(const n of e){typeof n=="string"?t.push(n):n&&n.revision===void 0&&t.push(n.url);const{cacheKey:a,url:r}=X(n),i=typeof n!="string"&&n.revision?"reload":"default";if(this._urlsToCacheKeys.has(r)&&this._urlsToCacheKeys.get(r)!==a)throw new h("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(r),secondEntry:a});if(typeof n!="string"&&n.integrity){if(this._cacheKeysToIntegrities.has(a)&&this._cacheKeysToIntegrities.get(a)!==n.integrity)throw new h("add-to-cache-list-conflicting-integrities",{url:r});this._cacheKeysToIntegrities.set(a,n.integrity)}if(this._urlsToCacheKeys.set(r,a),this._urlsToCacheModes.set(r,i),t.length>0){const c=`Workbox is precaching URLs without revision info: ${t.join(", ")}
|
|
2
|
-
This is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(c)}}}install(e){return N(e,async()=>{const t=new Y;this.strategy.plugins.push(t);for(const[r,i]of this._urlsToCacheKeys){const c=this._cacheKeysToIntegrities.get(i),o=this._urlsToCacheModes.get(r),l=new Request(r,{integrity:c,cache:o,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:i},request:l,event:e}))}const{updatedURLs:n,notUpdatedURLs:a}=t;return{updatedURLs:n,notUpdatedURLs:a}})}activate(e){return N(e,async()=>{const t=await self.caches.open(this.strategy.cacheName),n=await t.keys(),a=new Set(this._urlsToCacheKeys.values()),r=[];for(const i of n)a.has(i.url)||(await t.delete(i),r.push(i.url));return{deletedURLs:r}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const 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){const t=this.getCacheKeyForURL(e);if(!t)throw new h("non-precached-url",{url:e});return n=>(n.request=new Request(e),n.params=Object.assign({cacheKey:t},n.params),this.strategy.handle(n))}}let L;const j=()=>(L||(L=new oe),L);try{self["workbox:routing:7.3.0"]&&_()}catch{}const F="GET",x=s=>s&&typeof s=="object"?s:{handle:s};class R{constructor(e,t,n=F){this.handler=x(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=x(e)}}class le extends R{constructor(e,t,n){const a=({url:r})=>{const i=e.exec(r.href);if(i&&!(r.origin!==location.origin&&i.index!==0))return i.slice(1)};super(a,t,n)}}class he{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",(e=>{const{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"){const{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(a=>{typeof a=="string"&&(a=[a]);const r=new Request(...a);return this.handleRequest({request:r,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){const n=new URL(e.url,location.href);if(!n.protocol.startsWith("http"))return;const a=n.origin===location.origin,{params:r,route:i}=this.findMatchingRoute({event:t,request:e,sameOrigin:a,url:n});let c=i&&i.handler;const o=e.method;if(!c&&this._defaultHandlerMap.has(o)&&(c=this._defaultHandlerMap.get(o)),!c)return;let l;try{l=c.handle({url:n,request:e,event:t,params:r})}catch(u){l=Promise.reject(u)}const g=i&&i.catchHandler;return l instanceof Promise&&(this._catchHandler||g)&&(l=l.catch(async u=>{if(g)try{return await g.handle({url:n,request:e,event:t,params:r})}catch(I){I instanceof Error&&(u=I)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw u})),l}findMatchingRoute({url:e,sameOrigin:t,request:n,event:a}){const r=this._routes.get(n.method)||[];for(const i of r){let c;const o=i.match({url:e,sameOrigin:t,request:n,event:a});if(o)return c=o,(Array.isArray(c)&&c.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o=="boolean")&&(c=void 0),{route:i,params:c}}return{}}setDefaultHandler(e,t=F){this._defaultHandlerMap.set(t,x(e))}setCatchHandler(e){this._catchHandler=x(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 h("unregister-route-but-not-found-with-method",{method:e.method});const t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new h("unregister-route-route-not-registered")}}let w;const ue=()=>(w||(w=new he,w.addFetchListener(),w.addCacheListener()),w);function q(s,e,t){let n;if(typeof s=="string"){const r=new URL(s,location.href),i=({url:c})=>c.href===r.href;n=new R(i,e,t)}else if(s instanceof RegExp)n=new le(s,e,t);else if(typeof s=="function")n=new R(s,e,t);else if(s instanceof R)n=s;else throw new h("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return ue().registerRoute(n),n}function de(s,e=[]){for(const t of[...s.searchParams.keys()])e.some(n=>n.test(t))&&s.searchParams.delete(t);return s}function*fe(s,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:t="index.html",cleanURLs:n=!0,urlManipulation:a}={}){const r=new URL(s,location.href);r.hash="",yield r.href;const i=de(r,e);if(yield i.href,t&&i.pathname.endsWith("/")){const c=new URL(i.href);c.pathname+=t,yield c.href}if(n){const c=new URL(i.href);c.pathname+=".html",yield c.href}if(a){const c=a({url:r});for(const o of c)yield o.href}}class pe extends R{constructor(e,t){const n=({request:a})=>{const r=e.getURLsToCacheKeys();for(const i of fe(a.url,t)){const c=r.get(i);if(c){const o=e.getIntegrityForCacheKey(c);return{cacheKey:c,integrity:o}}}};super(n,e.strategy)}}function ge(s){const e=j(),t=new pe(e,s);q(t)}const me="-precache-",we=async(s,e=me)=>{const n=(await self.caches.keys()).filter(a=>a.includes(e)&&a.includes(self.registration.scope)&&a!==s);return await Promise.all(n.map(a=>self.caches.delete(a))),n};function ye(){self.addEventListener("activate",(s=>{const e=b.getPrecacheName();s.waitUntil(we(e).then(t=>{}))}))}function _e(s){j().precache(s)}function Re(s,e){_e(s),ge(e)}class be extends W{async _handle(e,t){let n=await t.cacheMatch(e),a;if(!n)try{n=await t.fetchAndCachePut(e)}catch(r){r instanceof Error&&(a=r)}if(!n)throw new h("no-response",{url:e.url,error:a});return n}}function H(s){s.then(()=>{})}const Ce=(s,e)=>e.some(t=>s instanceof t);let A,K;function xe(){return A||(A=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Ee(){return K||(K=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const V=new WeakMap,k=new WeakMap,$=new WeakMap,D=new WeakMap,v=new WeakMap;function Le(s){const e=new Promise((t,n)=>{const a=()=>{s.removeEventListener("success",r),s.removeEventListener("error",i)},r=()=>{t(f(s.result)),a()},i=()=>{n(s.error),a()};s.addEventListener("success",r),s.addEventListener("error",i)});return e.then(t=>{t instanceof IDBCursor&&V.set(t,s)}).catch(()=>{}),v.set(e,s),e}function De(s){if(k.has(s))return;const e=new Promise((t,n)=>{const a=()=>{s.removeEventListener("complete",r),s.removeEventListener("error",i),s.removeEventListener("abort",i)},r=()=>{t(),a()},i=()=>{n(s.error||new DOMException("AbortError","AbortError")),a()};s.addEventListener("complete",r),s.addEventListener("error",i),s.addEventListener("abort",i)});k.set(s,e)}let P={get(s,e,t){if(s instanceof IDBTransaction){if(e==="done")return k.get(s);if(e==="objectStoreNames")return s.objectStoreNames||$.get(s);if(e==="store")return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return f(s[e])},set(s,e,t){return s[e]=t,!0},has(s,e){return s instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in s}};function Ue(s){P=s(P)}function Te(s){return s===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...t){const n=s.call(U(this),e,...t);return $.set(n,e.sort?e.sort():[e]),f(n)}:Ee().includes(s)?function(...e){return s.apply(U(this),e),f(V.get(this))}:function(...e){return f(s.apply(U(this),e))}}function ke(s){return typeof s=="function"?Te(s):(s instanceof IDBTransaction&&De(s),Ce(s,xe())?new Proxy(s,P):s)}function f(s){if(s instanceof IDBRequest)return Le(s);if(D.has(s))return D.get(s);const e=ke(s);return e!==s&&(D.set(s,e),v.set(e,s)),e}const U=s=>v.get(s);function Pe(s,e,{blocked:t,upgrade:n,blocking:a,terminated:r}={}){const i=indexedDB.open(s,e),c=f(i);return n&&i.addEventListener("upgradeneeded",o=>{n(f(i.result),o.oldVersion,o.newVersion,f(i.transaction),o)}),t&&i.addEventListener("blocked",o=>t(o.oldVersion,o.newVersion,o)),c.then(o=>{r&&o.addEventListener("close",()=>r()),a&&o.addEventListener("versionchange",l=>a(l.oldVersion,l.newVersion,l))}).catch(()=>{}),c}function ve(s,{blocked:e}={}){const t=indexedDB.deleteDatabase(s);return e&&t.addEventListener("blocked",n=>e(n.oldVersion,n)),f(t).then(()=>{})}const Ie=["get","getKey","getAll","getAllKeys","count"],Ne=["put","add","delete","clear"],T=new Map;function S(s,e){if(!(s instanceof IDBDatabase&&!(e in s)&&typeof e=="string"))return;if(T.get(e))return T.get(e);const t=e.replace(/FromIndex$/,""),n=e!==t,a=Ne.includes(t);if(!(t in(n?IDBIndex:IDBObjectStore).prototype)||!(a||Ie.includes(t)))return;const r=async function(i,...c){const o=this.transaction(i,a?"readwrite":"readonly");let l=o.store;return n&&(l=l.index(c.shift())),(await Promise.all([l[t](...c),a&&o.done]))[0]};return T.set(e,r),r}Ue(s=>({...s,get:(e,t,n)=>S(e,t)||s.get(e,t,n),has:(e,t)=>!!S(e,t)||s.has(e,t)}));try{self["workbox:expiration:7.3.0"]&&_()}catch{}const Me="workbox-expiration",y="cache-entries",O=s=>{const e=new URL(s,location.href);return e.hash="",e.href};class Ae{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(y,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&ve(this._cacheName)}async setTimestamp(e,t){e=O(e);const n={url:e,timestamp:t,cacheName:this._cacheName,id:this._getId(e)},r=(await this.getDb()).transaction(y,"readwrite",{durability:"relaxed"});await r.store.put(n),await r.done}async getTimestamp(e){const n=await(await this.getDb()).get(y,this._getId(e));return n==null?void 0:n.timestamp}async expireEntries(e,t){const n=await this.getDb();let a=await n.transaction(y).store.index("timestamp").openCursor(null,"prev");const r=[];let i=0;for(;a;){const o=a.value;o.cacheName===this._cacheName&&(e&&o.timestamp<e||t&&i>=t?r.push(a.value):i++),a=await a.continue()}const c=[];for(const o of r)await n.delete(y,o.id),c.push(o.url);return c}_getId(e){return this._cacheName+"|"+O(e)}async getDb(){return this._db||(this._db=await Pe(Me,1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class Ke{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;const e=this._maxAgeSeconds?Date.now()-this._maxAgeSeconds*1e3:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),n=await self.caches.open(this._cacheName);for(const a of t)await n.delete(a,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,H(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),n=Date.now()-this._maxAgeSeconds*1e3;return t!==void 0?t<n:!0}else return!1}async delete(){this._rerunRequested=!1,await this._timestampModel.expireEntries(1/0)}}function Se(s){B.add(s)}class Oe{constructor(e={}){this.cachedResponseWillBeUsed=async({event:t,request:n,cacheName:a,cachedResponse:r})=>{if(!r)return null;const i=this._isResponseDateFresh(r),c=this._getCacheExpiration(a);H(c.expireEntries());const o=c.updateTimestamp(n.url);if(t)try{t.waitUntil(o)}catch{}return i?r:null},this.cacheDidUpdate=async({cacheName:t,request:n})=>{const a=this._getCacheExpiration(t);await a.updateTimestamp(n.url),await a.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&Se(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(e){if(e===b.getRuntimeName())throw new h("expire-custom-caches-only");let t=this._cacheExpirations.get(e);return t||(t=new Ke(e,this._config),this._cacheExpirations.set(e,t)),t}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(t===null)return!0;const n=Date.now();return t>=n-this._maxAgeSeconds*1e3}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),a=new Date(t).getTime();return isNaN(a)?null:a}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}Re([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"0f93805414c783a30b72e0ce88f2c7c4","url":"icons/icon.svg"},{"revision":"5dee5ddcd8e8533edb348118334d9756","url":"icons/icon-512.png"},{"revision":"75734e6b38a556148f51b9e10eeb01c8","url":"icons/icon-192.png"},{"revision":"0362e0eb00358646fd4c97674945adba","url":"icons/icon-180.png"},{"revision":null,"url":"assets/xychartDiagram-JWTSCODW-BsOGuDAL.js"},{"revision":null,"url":"assets/vennDiagram-LZ73GAT5-Ci8AKqD1.js"},{"revision":null,"url":"assets/treemap-KZPCXAKY-Ct-pligZ.js"},{"revision":null,"url":"assets/timeline-definition-YZTLITO2-Bi12ioU0.js"},{"revision":null,"url":"assets/stateDiagram-v2-FVOUBMTO-CQnYvVz1.js"},{"revision":null,"url":"assets/stateDiagram-RAJIS63D-CbB0QqSa.js"},{"revision":null,"url":"assets/sequenceDiagram-2WXFIKYE-CPsVjHHb.js"},{"revision":null,"url":"assets/sankeyDiagram-WA2Y5GQK-CpT1bDmZ.js"},{"revision":null,"url":"assets/requirementDiagram-Z7DCOOCP-D4yTZU0p.js"},{"revision":null,"url":"assets/quadrantDiagram-337W2JSQ-Dcj0avLR.js"},{"revision":null,"url":"assets/pieDiagram-SKSYHLDU-C3T1FeFD.js"},{"revision":null,"url":"assets/ordinal-Cboi1Yqb.js"},{"revision":null,"url":"assets/mindmap-definition-YRQLILUH-CfNe7W8X.js"},{"revision":null,"url":"assets/linear-CNFortHj.js"},{"revision":null,"url":"assets/layout-DIfi_3Cg.js"},{"revision":null,"url":"assets/katex-B1X10hvy.js"},{"revision":null,"url":"assets/kanban-definition-K7BYSVSG-D9TVNfL2.js"},{"revision":null,"url":"assets/journeyDiagram-4ABVD52K-BNP3C6Ph.js"},{"revision":null,"url":"assets/ishikawaDiagram-PHBUUO56-BjaKmPoV.js"},{"revision":null,"url":"assets/init-Gi6I4Gst.js"},{"revision":null,"url":"assets/infoDiagram-LFFYTUFH-Cisyfr_w.js"},{"revision":null,"url":"assets/index-Cpm34cTy.css"},{"revision":null,"url":"assets/index-BxVq7AYs.js"},{"revision":null,"url":"assets/graph-mq5DkKwp.js"},{"revision":null,"url":"assets/gitGraphDiagram-K3NZZRJ6-D3HBxR11.js"},{"revision":null,"url":"assets/ganttDiagram-A5KZAMGK-C55hiPqb.js"},{"revision":null,"url":"assets/flowDiagram-PKNHOUZH-wUw5Mjvb.js"},{"revision":null,"url":"assets/erDiagram-INFDFZHY-Dc_91GQC.js"},{"revision":null,"url":"assets/diagram-P4PSJMXO-D7EqFseu.js"},{"revision":null,"url":"assets/diagram-IFDJBPK2-CH5mcu6V.js"},{"revision":null,"url":"assets/diagram-E7M64L7V-C1ypW2kT.js"},{"revision":null,"url":"assets/defaultLocale-DX6XiGOO.js"},{"revision":null,"url":"assets/dagre-KLK3FWXG-CvP5MaIU.js"},{"revision":null,"url":"assets/cytoscape.esm-BQaXIfA_.js"},{"revision":null,"url":"assets/cose-bilkent-S5V4N54A-BNYNzK1p.js"},{"revision":null,"url":"assets/clone-DfaqXUXL.js"},{"revision":null,"url":"assets/classDiagram-v2-RAHNMMFH-Ct_F3N6M.js"},{"revision":null,"url":"assets/classDiagram-VBA2DB6C-Ct_F3N6M.js"},{"revision":null,"url":"assets/chunk-WL4C6EOR-XtpH4KKr.js"},{"revision":null,"url":"assets/chunk-QZHKN3VN-CrSItx1v.js"},{"revision":null,"url":"assets/chunk-NQ4KR5QH-_X3IQmYu.js"},{"revision":null,"url":"assets/chunk-KX2RTZJC-BU-NTTwY.js"},{"revision":null,"url":"assets/chunk-JSJVCQXG-D_GdzPQn.js"},{"revision":null,"url":"assets/chunk-FMBD7UC4-H_1l13Rz.js"},{"revision":null,"url":"assets/chunk-55IACEB6-DhjD4VKO.js"},{"revision":null,"url":"assets/chunk-4BX2VUAB-Cz0Sexay.js"},{"revision":null,"url":"assets/channel-N7LACYfb.js"},{"revision":null,"url":"assets/c4Diagram-IC4MRINW-BM1jg1mo.js"},{"revision":null,"url":"assets/blockDiagram-WCTKOSBZ-RZQh_7bp.js"},{"revision":null,"url":"assets/architectureDiagram-2XIMDMQ5-Dr3bqfT2.js"},{"revision":null,"url":"assets/arc-BWX7iih_.js"},{"revision":null,"url":"assets/_baseUniq-D-ViDZI1.js"},{"revision":null,"url":"assets/_basePickBy-CVn0rIeA.js"},{"revision":"0362e0eb00358646fd4c97674945adba","url":"icons/icon-180.png"},{"revision":"75734e6b38a556148f51b9e10eeb01c8","url":"icons/icon-192.png"},{"revision":"5dee5ddcd8e8533edb348118334d9756","url":"icons/icon-512.png"},{"revision":"b0747e8d6cde0d45e05be8e5c731729e","url":"manifest.webmanifest"}]);ye();q(({url:s})=>s.hostname==="cdn.jsdelivr.net"&&s.pathname.endsWith(".ttf"),new be({cacheName:"termbeam-fonts",plugins:[new Oe({maxEntries:5,maxAgeSeconds:365*24*60*60})]}));self.addEventListener("message",s=>{var e;((e=s.data)==null?void 0:e.type)==="CLEAR_CACHES"&&caches.keys().then(t=>{for(const n of t)n!=="workbox-precache-v2"&&caches.delete(n)})});self.addEventListener("install",()=>{self.skipWaiting()});self.addEventListener("activate",s=>{s.waitUntil(caches.delete("termbeam-navigation").then(()=>self.clients.claim()))});self.addEventListener("push",s=>{let e={title:"Command finished",body:"TermBeam"};if(s.data)try{e=s.data.json()}catch{}s.waitUntil(self.clients.matchAll({type:"window",includeUncontrolled:!0}).then(async t=>{if(t.some(r=>r.url.includes(self.location.origin)&&r.focused))return;const a={body:e.body||"A command has completed",icon:"/icons/icon-192.png",badge:"/icons/icon-192.png",tag:"termbeam-cmd",renotify:!0,data:{url:"/"},vibrate:[200,100,200]};try{await self.navigator.setAppBadge(1)}catch{}return self.registration.showNotification(e.title||"Command finished",a)}))});self.addEventListener("notificationclick",s=>{var t;s.notification.close();try{self.navigator.clearAppBadge()}catch{}const e=((t=s.notification.data)==null?void 0:t.url)||"/";s.waitUntil(self.clients.matchAll({type:"window",includeUncontrolled:!0}).then(n=>{for(const a of n)if(a.url.includes(self.location.origin)&&"focus"in a)return a.focus();return self.clients.openWindow(e)}))});
|
|
1
|
+
try{self["workbox:core:7.3.0"]&&_()}catch{}const G=(s,...e)=>{let t=s;return e.length>0&&(t+=` :: ${JSON.stringify(e)}`),t},Q=G;class h extends Error{constructor(e,t){const n=Q(e,t);super(n),this.name=e,this.details=t}}const d={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:typeof registration<"u"?registration.scope:""},E=s=>[d.prefix,s,d.suffix].filter(e=>e&&e.length>0).join("-"),z=s=>{for(const e of Object.keys(d))s(e)},b={updateDetails:s=>{z(e=>{typeof s[e]=="string"&&(d[e]=s[e])})},getGoogleAnalyticsName:s=>s||E(d.googleAnalytics),getPrecacheName:s=>s||E(d.precache),getPrefix:()=>d.prefix,getRuntimeName:s=>s||E(d.runtime),getSuffix:()=>d.suffix};function v(s,e){const t=e();return s.waitUntil(t),t}try{self["workbox:precaching:7.3.0"]&&_()}catch{}const J="__WB_REVISION__";function X(s){if(!s)throw new h("add-to-cache-list-unexpected-type",{entry:s});if(typeof s=="string"){const i=new URL(s,location.href);return{cacheKey:i.href,url:i.href}}const{revision:e,url:t}=s;if(!t)throw new h("add-to-cache-list-unexpected-type",{entry:s});if(!e){const i=new URL(t,location.href);return{cacheKey:i.href,url:i.href}}const n=new URL(t,location.href),a=new URL(t,location.href);return n.searchParams.set(J,e),{cacheKey:n.href,url:a.href}}class Y{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){const a=t.originalRequest.url;n?this.notUpdatedURLs.push(a):this.updatedURLs.push(a)}return n}}}class Z{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:t,params:n})=>{const a=(n==null?void 0:n.cacheKey)||this._precacheController.getCacheKeyForURL(t.url);return a?new Request(a,{headers:t.headers}):t},this._precacheController=e}}let m;function ee(){if(m===void 0){const s=new Response("");if("body"in s)try{new Response(s.body),m=!0}catch{m=!1}m=!1}return m}async function te(s,e){let t=null;if(s.url&&(t=new URL(s.url).origin),t!==self.location.origin)throw new h("cross-origin-copy-response",{origin:t});const n=s.clone(),i={headers:new Headers(n.headers),status:n.status,statusText:n.statusText},r=ee()?n.body:await n.blob();return new Response(r,i)}const se=s=>new URL(String(s),location.href).href.replace(new RegExp(`^${location.origin}`),"");function M(s,e){const t=new URL(s);for(const n of e)t.searchParams.delete(n);return t.href}async function ne(s,e,t,n){const a=M(e.url,t);if(e.url===a)return s.match(e,n);const i=Object.assign(Object.assign({},n),{ignoreSearch:!0}),r=await s.keys(e,i);for(const c of r){const o=M(c.url,t);if(a===o)return s.match(c,n)}}class ae{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}const B=new Set;async function ie(){for(const s of B)await s()}function re(s){return new Promise(e=>setTimeout(e,s))}try{self["workbox:strategies:7.3.0"]&&_()}catch{}function C(s){return typeof s=="string"?new Request(s):s}class ce{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new ae,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const n of this._plugins)this._pluginStateMap.set(n,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:t}=this;let n=C(e);if(n.mode==="navigate"&&t instanceof FetchEvent&&t.preloadResponse){const r=await t.preloadResponse;if(r)return r}const a=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const r of this.iterateCallbacks("requestWillFetch"))n=await r({request:n.clone(),event:t})}catch(r){if(r instanceof Error)throw new h("plugin-error-request-will-fetch",{thrownErrorMessage:r.message})}const i=n.clone();try{let r;r=await fetch(n,n.mode==="navigate"?void 0:this._strategy.fetchOptions);for(const c of this.iterateCallbacks("fetchDidSucceed"))r=await c({event:t,request:i,response:r});return r}catch(r){throw a&&await this.runCallbacks("fetchDidFail",{error:r,event:t,originalRequest:a.clone(),request:i.clone()}),r}}async fetchAndCachePut(e){const t=await this.fetch(e),n=t.clone();return this.waitUntil(this.cachePut(e,n)),t}async cacheMatch(e){const t=C(e);let n;const{cacheName:a,matchOptions:i}=this._strategy,r=await this.getCacheKey(t,"read"),c=Object.assign(Object.assign({},i),{cacheName:a});n=await caches.match(r,c);for(const o of this.iterateCallbacks("cachedResponseWillBeUsed"))n=await o({cacheName:a,matchOptions:i,cachedResponse:n,request:r,event:this.event})||void 0;return n}async cachePut(e,t){const n=C(e);await re(0);const a=await this.getCacheKey(n,"write");if(!t)throw new h("cache-put-with-no-response",{url:se(a.url)});const i=await this._ensureResponseSafeToCache(t);if(!i)return!1;const{cacheName:r,matchOptions:c}=this._strategy,o=await self.caches.open(r),l=this.hasCallback("cacheDidUpdate"),g=l?await ne(o,a.clone(),["__WB_REVISION__"],c):null;try{await o.put(a,l?i.clone():i)}catch(u){if(u instanceof Error)throw u.name==="QuotaExceededError"&&await ie(),u}for(const u of this.iterateCallbacks("cacheDidUpdate"))await u({cacheName:r,oldResponse:g,newResponse:i.clone(),request:a,event:this.event});return!0}async getCacheKey(e,t){const n=`${e.url} | ${t}`;if(!this._cacheKeys[n]){let a=e;for(const i of this.iterateCallbacks("cacheKeyWillBeUsed"))a=C(await i({mode:t,request:a,event:this.event,params:this.params}));this._cacheKeys[n]=a}return this._cacheKeys[n]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const n of this.iterateCallbacks(e))await n(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if(typeof t[e]=="function"){const n=this._pluginStateMap.get(t);yield i=>{const r=Object.assign(Object.assign({},i),{state:n});return t[e](r)}}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){for(;this._extendLifetimePromises.length;){const e=this._extendLifetimePromises.splice(0),n=(await Promise.allSettled(e)).find(a=>a.status==="rejected");if(n)throw n.reason}}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,n=!1;for(const a of this.iterateCallbacks("cacheWillUpdate"))if(t=await a({request:this.request,response:t,event:this.event})||void 0,n=!0,!t)break;return n||t&&t.status!==200&&(t=void 0),t}}class W{constructor(e={}){this.cacheName=b.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,n=typeof e.request=="string"?new Request(e.request):e.request,a="params"in e?e.params:void 0,i=new ce(this,{event:t,request:n,params:a}),r=this._getResponse(i,n,t),c=this._awaitComplete(r,i,n,t);return[r,c]}async _getResponse(e,t,n){await e.runCallbacks("handlerWillStart",{event:n,request:t});let a;try{if(a=await this._handle(t,e),!a||a.type==="error")throw new h("no-response",{url:t.url})}catch(i){if(i instanceof Error){for(const r of e.iterateCallbacks("handlerDidError"))if(a=await r({error:i,event:n,request:t}),a)break}if(!a)throw i}for(const i of e.iterateCallbacks("handlerWillRespond"))a=await i({event:n,request:t,response:a});return a}async _awaitComplete(e,t,n,a){let i,r;try{i=await e}catch{}try{await t.runCallbacks("handlerDidRespond",{event:a,request:n,response:i}),await t.doneWaiting()}catch(c){c instanceof Error&&(r=c)}if(await t.runCallbacks("handlerDidComplete",{event:a,request:n,response:i,error:r}),t.destroy(),r)throw r}}class p extends W{constructor(e={}){e.cacheName=b.getPrecacheName(e.cacheName),super(e),this._fallbackToNetwork=e.fallbackToNetwork!==!1,this.plugins.push(p.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const n=await t.cacheMatch(e);return n||(t.event&&t.event.type==="install"?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,t){let n;const a=t.params||{};if(this._fallbackToNetwork){const i=a.integrity,r=e.integrity,c=!r||r===i;n=await t.fetch(new Request(e,{integrity:e.mode!=="no-cors"?r||i:void 0})),i&&c&&e.mode!=="no-cors"&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,n.clone()))}else throw new h("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return n}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();const n=await t.fetch(e);if(!await t.cachePut(e,n.clone()))throw new h("bad-precaching-response",{url:e.url,status:n.status});return n}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[n,a]of this.plugins.entries())a!==p.copyRedirectedCacheableResponsesPlugin&&(a===p.defaultPrecacheCacheabilityPlugin&&(e=n),a.cacheWillUpdate&&t++);t===0?this.plugins.push(p.defaultPrecacheCacheabilityPlugin):t>1&&e!==null&&this.plugins.splice(e,1)}}p.defaultPrecacheCacheabilityPlugin={async cacheWillUpdate({response:s}){return!s||s.status>=400?null:s}};p.copyRedirectedCacheableResponsesPlugin={async cacheWillUpdate({response:s}){return s.redirected?await te(s):s}};class oe{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:n=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new p({cacheName:b.getPrecacheName(e),plugins:[...t,new Z({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),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const t=[];for(const n of e){typeof n=="string"?t.push(n):n&&n.revision===void 0&&t.push(n.url);const{cacheKey:a,url:i}=X(n),r=typeof n!="string"&&n.revision?"reload":"default";if(this._urlsToCacheKeys.has(i)&&this._urlsToCacheKeys.get(i)!==a)throw new h("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(i),secondEntry:a});if(typeof n!="string"&&n.integrity){if(this._cacheKeysToIntegrities.has(a)&&this._cacheKeysToIntegrities.get(a)!==n.integrity)throw new h("add-to-cache-list-conflicting-integrities",{url:i});this._cacheKeysToIntegrities.set(a,n.integrity)}if(this._urlsToCacheKeys.set(i,a),this._urlsToCacheModes.set(i,r),t.length>0){const c=`Workbox is precaching URLs without revision info: ${t.join(", ")}
|
|
2
|
+
This is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(c)}}}install(e){return v(e,async()=>{const t=new Y;this.strategy.plugins.push(t);for(const[i,r]of this._urlsToCacheKeys){const c=this._cacheKeysToIntegrities.get(r),o=this._urlsToCacheModes.get(i),l=new Request(i,{integrity:c,cache:o,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:r},request:l,event:e}))}const{updatedURLs:n,notUpdatedURLs:a}=t;return{updatedURLs:n,notUpdatedURLs:a}})}activate(e){return v(e,async()=>{const t=await self.caches.open(this.strategy.cacheName),n=await t.keys(),a=new Set(this._urlsToCacheKeys.values()),i=[];for(const r of n)a.has(r.url)||(await t.delete(r),i.push(r.url));return{deletedURLs:i}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){const 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){const t=this.getCacheKeyForURL(e);if(!t)throw new h("non-precached-url",{url:e});return n=>(n.request=new Request(e),n.params=Object.assign({cacheKey:t},n.params),this.strategy.handle(n))}}let D;const j=()=>(D||(D=new oe),D);try{self["workbox:routing:7.3.0"]&&_()}catch{}const F="GET",x=s=>s&&typeof s=="object"?s:{handle:s};class R{constructor(e,t,n=F){this.handler=x(t),this.match=e,this.method=n}setCatchHandler(e){this.catchHandler=x(e)}}class le extends R{constructor(e,t,n){const a=({url:i})=>{const r=e.exec(i.href);if(r&&!(i.origin!==location.origin&&r.index!==0))return r.slice(1)};super(a,t,n)}}class he{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",(e=>{const{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"){const{payload:t}=e.data,n=Promise.all(t.urlsToCache.map(a=>{typeof a=="string"&&(a=[a]);const i=new Request(...a);return this.handleRequest({request:i,event:e})}));e.waitUntil(n),e.ports&&e.ports[0]&&n.then(()=>e.ports[0].postMessage(!0))}}))}handleRequest({request:e,event:t}){const n=new URL(e.url,location.href);if(!n.protocol.startsWith("http"))return;const a=n.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:t,request:e,sameOrigin:a,url:n});let c=r&&r.handler;const o=e.method;if(!c&&this._defaultHandlerMap.has(o)&&(c=this._defaultHandlerMap.get(o)),!c)return;let l;try{l=c.handle({url:n,request:e,event:t,params:i})}catch(u){l=Promise.reject(u)}const g=r&&r.catchHandler;return l instanceof Promise&&(this._catchHandler||g)&&(l=l.catch(async u=>{if(g)try{return await g.handle({url:n,request:e,event:t,params:i})}catch(N){N instanceof Error&&(u=N)}if(this._catchHandler)return this._catchHandler.handle({url:n,request:e,event:t});throw u})),l}findMatchingRoute({url:e,sameOrigin:t,request:n,event:a}){const i=this._routes.get(n.method)||[];for(const r of i){let c;const o=r.match({url:e,sameOrigin:t,request:n,event:a});if(o)return c=o,(Array.isArray(c)&&c.length===0||o.constructor===Object&&Object.keys(o).length===0||typeof o=="boolean")&&(c=void 0),{route:r,params:c}}return{}}setDefaultHandler(e,t=F){this._defaultHandlerMap.set(t,x(e))}setCatchHandler(e){this._catchHandler=x(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 h("unregister-route-but-not-found-with-method",{method:e.method});const t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new h("unregister-route-route-not-registered")}}let y;const ue=()=>(y||(y=new he,y.addFetchListener(),y.addCacheListener()),y);function q(s,e,t){let n;if(typeof s=="string"){const i=new URL(s,location.href),r=({url:c})=>c.href===i.href;n=new R(r,e,t)}else if(s instanceof RegExp)n=new le(s,e,t);else if(typeof s=="function")n=new R(s,e,t);else if(s instanceof R)n=s;else throw new h("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return ue().registerRoute(n),n}function de(s,e=[]){for(const t of[...s.searchParams.keys()])e.some(n=>n.test(t))&&s.searchParams.delete(t);return s}function*fe(s,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:t="index.html",cleanURLs:n=!0,urlManipulation:a}={}){const i=new URL(s,location.href);i.hash="",yield i.href;const r=de(i,e);if(yield r.href,t&&r.pathname.endsWith("/")){const c=new URL(r.href);c.pathname+=t,yield c.href}if(n){const c=new URL(r.href);c.pathname+=".html",yield c.href}if(a){const c=a({url:i});for(const o of c)yield o.href}}class pe extends R{constructor(e,t){const n=({request:a})=>{const i=e.getURLsToCacheKeys();for(const r of fe(a.url,t)){const c=i.get(r);if(c){const o=e.getIntegrityForCacheKey(c);return{cacheKey:c,integrity:o}}}};super(n,e.strategy)}}function ge(s){const e=j(),t=new pe(e,s);q(t)}const me="-precache-",ye=async(s,e=me)=>{const n=(await self.caches.keys()).filter(a=>a.includes(e)&&a.includes(self.registration.scope)&&a!==s);return await Promise.all(n.map(a=>self.caches.delete(a))),n};function we(){self.addEventListener("activate",(s=>{const e=b.getPrecacheName();s.waitUntil(ye(e).then(t=>{}))}))}function _e(s){j().precache(s)}function Re(s,e){_e(s),ge(e)}class be extends W{async _handle(e,t){let n=await t.cacheMatch(e),a;if(!n)try{n=await t.fetchAndCachePut(e)}catch(i){i instanceof Error&&(a=i)}if(!n)throw new h("no-response",{url:e.url,error:a});return n}}function H(s){s.then(()=>{})}const Ce=(s,e)=>e.some(t=>s instanceof t);let A,K;function xe(){return A||(A=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Ee(){return K||(K=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const V=new WeakMap,k=new WeakMap,$=new WeakMap,L=new WeakMap,P=new WeakMap;function De(s){const e=new Promise((t,n)=>{const a=()=>{s.removeEventListener("success",i),s.removeEventListener("error",r)},i=()=>{t(f(s.result)),a()},r=()=>{n(s.error),a()};s.addEventListener("success",i),s.addEventListener("error",r)});return e.then(t=>{t instanceof IDBCursor&&V.set(t,s)}).catch(()=>{}),P.set(e,s),e}function Le(s){if(k.has(s))return;const e=new Promise((t,n)=>{const a=()=>{s.removeEventListener("complete",i),s.removeEventListener("error",r),s.removeEventListener("abort",r)},i=()=>{t(),a()},r=()=>{n(s.error||new DOMException("AbortError","AbortError")),a()};s.addEventListener("complete",i),s.addEventListener("error",r),s.addEventListener("abort",r)});k.set(s,e)}let I={get(s,e,t){if(s instanceof IDBTransaction){if(e==="done")return k.get(s);if(e==="objectStoreNames")return s.objectStoreNames||$.get(s);if(e==="store")return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return f(s[e])},set(s,e,t){return s[e]=t,!0},has(s,e){return s instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in s}};function Ue(s){I=s(I)}function Te(s){return s===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...t){const n=s.call(U(this),e,...t);return $.set(n,e.sort?e.sort():[e]),f(n)}:Ee().includes(s)?function(...e){return s.apply(U(this),e),f(V.get(this))}:function(...e){return f(s.apply(U(this),e))}}function ke(s){return typeof s=="function"?Te(s):(s instanceof IDBTransaction&&Le(s),Ce(s,xe())?new Proxy(s,I):s)}function f(s){if(s instanceof IDBRequest)return De(s);if(L.has(s))return L.get(s);const e=ke(s);return e!==s&&(L.set(s,e),P.set(e,s)),e}const U=s=>P.get(s);function Ie(s,e,{blocked:t,upgrade:n,blocking:a,terminated:i}={}){const r=indexedDB.open(s,e),c=f(r);return n&&r.addEventListener("upgradeneeded",o=>{n(f(r.result),o.oldVersion,o.newVersion,f(r.transaction),o)}),t&&r.addEventListener("blocked",o=>t(o.oldVersion,o.newVersion,o)),c.then(o=>{i&&o.addEventListener("close",()=>i()),a&&o.addEventListener("versionchange",l=>a(l.oldVersion,l.newVersion,l))}).catch(()=>{}),c}function Pe(s,{blocked:e}={}){const t=indexedDB.deleteDatabase(s);return e&&t.addEventListener("blocked",n=>e(n.oldVersion,n)),f(t).then(()=>{})}const Ne=["get","getKey","getAll","getAllKeys","count"],ve=["put","add","delete","clear"],T=new Map;function O(s,e){if(!(s instanceof IDBDatabase&&!(e in s)&&typeof e=="string"))return;if(T.get(e))return T.get(e);const t=e.replace(/FromIndex$/,""),n=e!==t,a=ve.includes(t);if(!(t in(n?IDBIndex:IDBObjectStore).prototype)||!(a||Ne.includes(t)))return;const i=async function(r,...c){const o=this.transaction(r,a?"readwrite":"readonly");let l=o.store;return n&&(l=l.index(c.shift())),(await Promise.all([l[t](...c),a&&o.done]))[0]};return T.set(e,i),i}Ue(s=>({...s,get:(e,t,n)=>O(e,t)||s.get(e,t,n),has:(e,t)=>!!O(e,t)||s.has(e,t)}));try{self["workbox:expiration:7.3.0"]&&_()}catch{}const Me="workbox-expiration",w="cache-entries",S=s=>{const e=new URL(s,location.href);return e.hash="",e.href};class Ae{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const 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&&Pe(this._cacheName)}async setTimestamp(e,t){e=S(e);const n={url:e,timestamp:t,cacheName:this._cacheName,id:this._getId(e)},i=(await this.getDb()).transaction(w,"readwrite",{durability:"relaxed"});await i.store.put(n),await i.done}async getTimestamp(e){const n=await(await this.getDb()).get(w,this._getId(e));return n==null?void 0:n.timestamp}async expireEntries(e,t){const n=await this.getDb();let a=await n.transaction(w).store.index("timestamp").openCursor(null,"prev");const i=[];let r=0;for(;a;){const o=a.value;o.cacheName===this._cacheName&&(e&&o.timestamp<e||t&&r>=t?i.push(a.value):r++),a=await a.continue()}const c=[];for(const o of i)await n.delete(w,o.id),c.push(o.url);return c}_getId(e){return this._cacheName+"|"+S(e)}async getDb(){return this._db||(this._db=await Ie(Me,1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class Ke{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;const e=this._maxAgeSeconds?Date.now()-this._maxAgeSeconds*1e3:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),n=await self.caches.open(this._cacheName);for(const a of t)await n.delete(a,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,H(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),n=Date.now()-this._maxAgeSeconds*1e3;return t!==void 0?t<n:!0}else return!1}async delete(){this._rerunRequested=!1,await this._timestampModel.expireEntries(1/0)}}function Oe(s){B.add(s)}class Se{constructor(e={}){this.cachedResponseWillBeUsed=async({event:t,request:n,cacheName:a,cachedResponse:i})=>{if(!i)return null;const r=this._isResponseDateFresh(i),c=this._getCacheExpiration(a);H(c.expireEntries());const o=c.updateTimestamp(n.url);if(t)try{t.waitUntil(o)}catch{}return r?i:null},this.cacheDidUpdate=async({cacheName:t,request:n})=>{const a=this._getCacheExpiration(t);await a.updateTimestamp(n.url),await a.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&Oe(()=>this.deleteCacheAndMetadata())}_getCacheExpiration(e){if(e===b.getRuntimeName())throw new h("expire-custom-caches-only");let t=this._cacheExpirations.get(e);return t||(t=new Ke(e,this._config),this._cacheExpirations.set(e,t)),t}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(t===null)return!0;const n=Date.now();return t>=n-this._maxAgeSeconds*1e3}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),a=new Date(t).getTime();return isNaN(a)?null:a}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}Re([{"revision":"1872c500de691dce40960bb85481de07","url":"registerSW.js"},{"revision":"0f93805414c783a30b72e0ce88f2c7c4","url":"icons/icon.svg"},{"revision":"5dee5ddcd8e8533edb348118334d9756","url":"icons/icon-512.png"},{"revision":"75734e6b38a556148f51b9e10eeb01c8","url":"icons/icon-192.png"},{"revision":"0362e0eb00358646fd4c97674945adba","url":"icons/icon-180.png"},{"revision":null,"url":"assets/xychartDiagram-JWTSCODW-DafJ-a-f.js"},{"revision":null,"url":"assets/vennDiagram-LZ73GAT5-DzlX55oz.js"},{"revision":null,"url":"assets/treemap-KZPCXAKY-0OLZO-76.js"},{"revision":null,"url":"assets/timeline-definition-YZTLITO2-BHWYxexH.js"},{"revision":null,"url":"assets/stateDiagram-v2-FVOUBMTO-lYMaTr7v.js"},{"revision":null,"url":"assets/stateDiagram-RAJIS63D-wf6b0MTk.js"},{"revision":null,"url":"assets/sequenceDiagram-2WXFIKYE-CjTa5Eua.js"},{"revision":null,"url":"assets/sankeyDiagram-WA2Y5GQK-GoTjgmGo.js"},{"revision":null,"url":"assets/requirementDiagram-Z7DCOOCP-BC1_RS6p.js"},{"revision":null,"url":"assets/quadrantDiagram-337W2JSQ-DWGyMcZ6.js"},{"revision":null,"url":"assets/pieDiagram-SKSYHLDU-DCNv1DYe.js"},{"revision":null,"url":"assets/ordinal-Cboi1Yqb.js"},{"revision":null,"url":"assets/mindmap-definition-YRQLILUH-C6Jy7Tz1.js"},{"revision":null,"url":"assets/linear-CSYWJnE5.js"},{"revision":null,"url":"assets/layout-DTAwaKXg.js"},{"revision":null,"url":"assets/katex-B1X10hvy.js"},{"revision":null,"url":"assets/kanban-definition-K7BYSVSG-DDGFShX4.js"},{"revision":null,"url":"assets/journeyDiagram-4ABVD52K-2QGufcXt.js"},{"revision":null,"url":"assets/ishikawaDiagram-PHBUUO56-Ny_4n8vD.js"},{"revision":null,"url":"assets/init-Gi6I4Gst.js"},{"revision":null,"url":"assets/infoDiagram-LFFYTUFH-C0cd4K10.js"},{"revision":null,"url":"assets/index-DBnflEQZ.js"},{"revision":null,"url":"assets/index-BzV_FYAW.css"},{"revision":null,"url":"assets/graph-NJUd-2rr.js"},{"revision":null,"url":"assets/gitGraphDiagram-K3NZZRJ6-CMuK7hOw.js"},{"revision":null,"url":"assets/ganttDiagram-A5KZAMGK-oBrRehQA.js"},{"revision":null,"url":"assets/flowDiagram-PKNHOUZH-BxCqn1aV.js"},{"revision":null,"url":"assets/erDiagram-INFDFZHY-D2aAhxDx.js"},{"revision":null,"url":"assets/diagram-P4PSJMXO-Cb0uoPeh.js"},{"revision":null,"url":"assets/diagram-IFDJBPK2-DtSlXz7u.js"},{"revision":null,"url":"assets/diagram-E7M64L7V-B7XX1Mqr.js"},{"revision":null,"url":"assets/defaultLocale-DX6XiGOO.js"},{"revision":null,"url":"assets/dagre-KLK3FWXG-CK-UftHZ.js"},{"revision":null,"url":"assets/cytoscape.esm-BQaXIfA_.js"},{"revision":null,"url":"assets/cose-bilkent-S5V4N54A-BHgn8K1Z.js"},{"revision":null,"url":"assets/clone-Zyw2C-Y3.js"},{"revision":null,"url":"assets/classDiagram-v2-RAHNMMFH-Ca3s5d8r.js"},{"revision":null,"url":"assets/classDiagram-VBA2DB6C-Ca3s5d8r.js"},{"revision":null,"url":"assets/chunk-WL4C6EOR-BFkfV9d-.js"},{"revision":null,"url":"assets/chunk-QZHKN3VN-D1hlvsPG.js"},{"revision":null,"url":"assets/chunk-NQ4KR5QH-DENB8fT9.js"},{"revision":null,"url":"assets/chunk-KX2RTZJC-DR85cVBM.js"},{"revision":null,"url":"assets/chunk-JSJVCQXG-CdSwCmzy.js"},{"revision":null,"url":"assets/chunk-FMBD7UC4-CVO2u-Sv.js"},{"revision":null,"url":"assets/chunk-55IACEB6-DF8ZBVw6.js"},{"revision":null,"url":"assets/chunk-4BX2VUAB-DslNFup8.js"},{"revision":null,"url":"assets/channel-BK2nwbl-.js"},{"revision":null,"url":"assets/c4Diagram-IC4MRINW-CHJjiNgt.js"},{"revision":null,"url":"assets/blockDiagram-WCTKOSBZ-BmfWKjiE.js"},{"revision":null,"url":"assets/architectureDiagram-2XIMDMQ5-DLhsY97x.js"},{"revision":null,"url":"assets/arc-CiPooz6h.js"},{"revision":null,"url":"assets/_baseUniq-DOa_cDXJ.js"},{"revision":null,"url":"assets/_basePickBy-SVV3-IdA.js"},{"revision":"0362e0eb00358646fd4c97674945adba","url":"icons/icon-180.png"},{"revision":"75734e6b38a556148f51b9e10eeb01c8","url":"icons/icon-192.png"},{"revision":"5dee5ddcd8e8533edb348118334d9756","url":"icons/icon-512.png"},{"revision":"b0747e8d6cde0d45e05be8e5c731729e","url":"manifest.webmanifest"}]);we();q(({url:s})=>s.hostname==="cdn.jsdelivr.net"&&s.pathname.endsWith(".ttf"),new be({cacheName:"termbeam-fonts",plugins:[new Se({maxEntries:5,maxAgeSeconds:365*24*60*60})]}));self.addEventListener("message",s=>{var e;((e=s.data)==null?void 0:e.type)==="CLEAR_CACHES"&&caches.keys().then(t=>{for(const n of t)n!=="workbox-precache-v2"&&caches.delete(n)})});self.addEventListener("install",()=>{self.skipWaiting()});self.addEventListener("activate",s=>{s.waitUntil(caches.delete("termbeam-navigation").then(()=>self.clients.claim()))});self.addEventListener("push",s=>{let e={title:"Command finished",body:"TermBeam"};if(s.data)try{e=s.data.json()}catch{}s.waitUntil(self.clients.matchAll({type:"window",includeUncontrolled:!0}).then(async t=>{if(t.some(i=>i.url.includes(self.location.origin)&&i.focused))return;const a={body:e.body||"A command has completed",icon:"/icons/icon-192.png",badge:"/icons/icon-192.png",tag:e.tag||"termbeam-cmd",renotify:!0,data:{url:e.url||"/",type:e.type||"command-complete",sessionId:e.sessionId},vibrate:[200,100,200]};try{await self.navigator.setAppBadge(1)}catch{}return self.registration.showNotification(e.title||"Command finished",a)}))});self.addEventListener("notificationclick",s=>{s.notification.close();try{self.navigator.clearAppBadge()}catch{}const e=s.notification.data||{},t=e.url||"/",n=e.type||"";s.waitUntil(self.clients.matchAll({type:"window",includeUncontrolled:!0}).then(a=>{for(const i of a)if(i.url.includes(self.location.origin)&&"focus"in i)return n&&i.postMessage({type:"NOTIFICATION_CLICKED",notificationType:n,sessionId:e.sessionId}),i.focus();return self.clients.openWindow(t)}))});
|
package/src/server/index.js
CHANGED
|
@@ -71,6 +71,9 @@ function createTermBeamServer(overrides = {}) {
|
|
|
71
71
|
title: 'Command finished',
|
|
72
72
|
body: `Session: ${sessionName}`,
|
|
73
73
|
tag: `termbeam-cmd-${sessionId}-${Date.now()}`,
|
|
74
|
+
url: `/terminal`,
|
|
75
|
+
type: 'command-complete',
|
|
76
|
+
sessionId,
|
|
74
77
|
})
|
|
75
78
|
.catch((err) => {
|
|
76
79
|
log.warn(`Push notification failed: ${err.message}`);
|
|
@@ -253,63 +256,18 @@ function createTermBeamServer(overrides = {}) {
|
|
|
253
256
|
|
|
254
257
|
let publicUrl = null;
|
|
255
258
|
if (config.useTunnel) {
|
|
256
|
-
// Helper: broadcast a message to all WebSocket clients
|
|
257
|
-
function broadcastTunnelStatus(msg) {
|
|
258
|
-
if (!wss) return;
|
|
259
|
-
const data = JSON.stringify(msg);
|
|
260
|
-
wss.clients.forEach((client) => {
|
|
261
|
-
if (client.readyState === 1) {
|
|
262
|
-
try {
|
|
263
|
-
client.send(data);
|
|
264
|
-
} catch {
|
|
265
|
-
/* client disconnected */
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
|
|
271
259
|
// Wire up tunnel events BEFORE starting (startTunnel emits during setup)
|
|
272
260
|
tunnelEvents.removeAllListeners();
|
|
273
261
|
tunnelEvents.on('disconnected', () => {
|
|
274
262
|
log.warn('Tunnel disconnected — watchdog will attempt to reconnect');
|
|
275
263
|
state.tunnelStatus = { state: 'disconnected' };
|
|
276
|
-
broadcastTunnelStatus({ type: 'tunnel-status', state: 'disconnected' });
|
|
277
|
-
});
|
|
278
|
-
tunnelEvents.on('auth-expiring', ({ expiresIn, provider }) => {
|
|
279
|
-
const minutes = Math.round(expiresIn / 60000);
|
|
280
|
-
log.warn(`Tunnel token expiring in ${minutes}m`);
|
|
281
|
-
state.tunnelStatus = { state: 'expiring', expiresIn, provider };
|
|
282
|
-
broadcastTunnelStatus({
|
|
283
|
-
type: 'tunnel-status',
|
|
284
|
-
state: 'expiring',
|
|
285
|
-
expiresIn,
|
|
286
|
-
provider,
|
|
287
|
-
});
|
|
288
|
-
void pushManager
|
|
289
|
-
.notify({
|
|
290
|
-
title: '⏰ Tunnel token expiring',
|
|
291
|
-
body: `Token expires in ${minutes}m — open TermBeam to renew.`,
|
|
292
|
-
tag: 'termbeam-tunnel-expiring',
|
|
293
|
-
})
|
|
294
|
-
.catch(() => {});
|
|
295
264
|
});
|
|
296
265
|
tunnelEvents.on('auth-expired', () => {
|
|
297
|
-
log.warn('Tunnel auth expired —
|
|
298
|
-
|
|
299
|
-
const provider = loginInfo?.provider ?? null;
|
|
300
|
-
state.tunnelStatus = { state: 'auth-expired', provider };
|
|
301
|
-
broadcastTunnelStatus({ type: 'tunnel-status', state: 'auth-expired', provider });
|
|
302
|
-
void pushManager
|
|
303
|
-
.notify({
|
|
304
|
-
title: '❌ Tunnel disconnected',
|
|
305
|
-
body: 'Auth token expired. Re-authenticate to restore.',
|
|
306
|
-
tag: 'termbeam-tunnel-expired',
|
|
307
|
-
})
|
|
308
|
-
.catch(() => {});
|
|
266
|
+
log.warn('Tunnel auth expired — run "devtunnel user login" on host to restore');
|
|
267
|
+
state.tunnelStatus = { state: 'auth-expired' };
|
|
309
268
|
});
|
|
310
269
|
tunnelEvents.on('auth-restored', () => {
|
|
311
270
|
log.info('Tunnel auth restored — resuming reconnection');
|
|
312
|
-
broadcastTunnelStatus({ type: 'tunnel-status', state: 'reconnecting' });
|
|
313
271
|
});
|
|
314
272
|
tunnelEvents.on('reconnecting', ({ attempt, delay }) => {
|
|
315
273
|
log.info(`Tunnel reconnecting (attempt ${attempt}, backoff ${delay}ms)`);
|
|
@@ -317,14 +275,12 @@ function createTermBeamServer(overrides = {}) {
|
|
|
317
275
|
tunnelEvents.on('connected', ({ url }) => {
|
|
318
276
|
log.info(`Tunnel connected: ${url}`);
|
|
319
277
|
state.tunnelStatus = { state: 'connected' };
|
|
320
|
-
broadcastTunnelStatus({ type: 'tunnel-status', state: 'connected' });
|
|
321
278
|
});
|
|
322
279
|
tunnelEvents.on('failed', ({ attempts }) => {
|
|
323
280
|
log.error(
|
|
324
281
|
`Tunnel watchdog gave up after ${attempts} attempts — tunnel URL is unreachable`,
|
|
325
282
|
);
|
|
326
283
|
state.tunnelStatus = { state: 'failed' };
|
|
327
|
-
broadcastTunnelStatus({ type: 'tunnel-status', state: 'failed' });
|
|
328
284
|
});
|
|
329
285
|
|
|
330
286
|
const tunnel = await startTunnel(actualPort, {
|
package/src/server/routes.js
CHANGED
|
@@ -595,7 +595,7 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
595
595
|
return res.status(400).json({ error: 'Invalid dir parameter' });
|
|
596
596
|
}
|
|
597
597
|
|
|
598
|
-
const rootDir = path.resolve(
|
|
598
|
+
const rootDir = path.resolve(sessions.getSessionCwd(req.params.id));
|
|
599
599
|
const dir = path.resolve(rootDir, req.query.dir || '.');
|
|
600
600
|
|
|
601
601
|
const MAX_ENTRIES = 1000;
|
|
@@ -666,7 +666,7 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
666
666
|
depth = parsedDepth;
|
|
667
667
|
}
|
|
668
668
|
depth = Math.min(Math.max(depth, 1), MAX_DEPTH);
|
|
669
|
-
const rootDir = path.resolve(
|
|
669
|
+
const rootDir = path.resolve(sessions.getSessionCwd(req.params.id));
|
|
670
670
|
let totalEntries = 0;
|
|
671
671
|
|
|
672
672
|
function buildTree(dir, currentDepth) {
|
|
@@ -749,7 +749,7 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
749
749
|
return res.status(400).json({ error: 'Missing file parameter' });
|
|
750
750
|
}
|
|
751
751
|
|
|
752
|
-
const rootDir = path.resolve(
|
|
752
|
+
const rootDir = path.resolve(sessions.getSessionCwd(req.params.id));
|
|
753
753
|
const filePath = path.resolve(rootDir, file);
|
|
754
754
|
|
|
755
755
|
try {
|
|
@@ -780,7 +780,7 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
780
780
|
return res.status(400).json({ error: 'Missing file parameter' });
|
|
781
781
|
}
|
|
782
782
|
|
|
783
|
-
const rootDir = path.resolve(
|
|
783
|
+
const rootDir = path.resolve(sessions.getSessionCwd(req.params.id));
|
|
784
784
|
const filePath = path.resolve(rootDir, file);
|
|
785
785
|
|
|
786
786
|
try {
|
|
@@ -811,7 +811,7 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
811
811
|
return res.status(400).json({ error: 'Missing file parameter' });
|
|
812
812
|
}
|
|
813
813
|
|
|
814
|
-
const rootDir = path.resolve(
|
|
814
|
+
const rootDir = path.resolve(sessions.getSessionCwd(req.params.id));
|
|
815
815
|
const filePath = path.resolve(rootDir, file);
|
|
816
816
|
|
|
817
817
|
try {
|
|
@@ -849,7 +849,7 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
849
849
|
if (!session) return res.status(404).json({ error: 'Session not found' });
|
|
850
850
|
|
|
851
851
|
try {
|
|
852
|
-
const status = await getDetailedStatus(
|
|
852
|
+
const status = await getDetailedStatus(sessions.getSessionCwd(req.params.id));
|
|
853
853
|
res.json(status);
|
|
854
854
|
} catch (err) {
|
|
855
855
|
log.warn(`Git status failed: ${err.message}`);
|
|
@@ -876,7 +876,11 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
876
876
|
}
|
|
877
877
|
}
|
|
878
878
|
try {
|
|
879
|
-
const diff = await getFileDiff(
|
|
879
|
+
const diff = await getFileDiff(sessions.getSessionCwd(req.params.id), file, {
|
|
880
|
+
staged,
|
|
881
|
+
untracked,
|
|
882
|
+
context,
|
|
883
|
+
});
|
|
880
884
|
res.json(diff);
|
|
881
885
|
} catch (err) {
|
|
882
886
|
log.warn(`Git diff failed: ${err.message}`);
|
|
@@ -894,7 +898,7 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
894
898
|
}
|
|
895
899
|
|
|
896
900
|
try {
|
|
897
|
-
const blame = await getFileBlame(
|
|
901
|
+
const blame = await getFileBlame(sessions.getSessionCwd(req.params.id), file);
|
|
898
902
|
res.json(blame);
|
|
899
903
|
} catch (err) {
|
|
900
904
|
log.warn(`Git blame failed: ${err.message}`);
|
|
@@ -913,7 +917,10 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
913
917
|
}
|
|
914
918
|
|
|
915
919
|
try {
|
|
916
|
-
const logResult = await getGitLog(
|
|
920
|
+
const logResult = await getGitLog(sessions.getSessionCwd(req.params.id), {
|
|
921
|
+
limit,
|
|
922
|
+
file: file || null,
|
|
923
|
+
});
|
|
917
924
|
res.json(logResult);
|
|
918
925
|
} catch (err) {
|
|
919
926
|
log.warn(`Git log failed: ${err.message}`);
|
|
@@ -991,69 +998,9 @@ function setupRoutes(app, { auth, sessions, config, state, pushManager }) {
|
|
|
991
998
|
});
|
|
992
999
|
});
|
|
993
1000
|
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
const cmd = findDevtunnel() || 'devtunnel';
|
|
998
|
-
const proc = spawn(cmd, ['user', 'login', '-d'], {
|
|
999
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
1000
|
-
});
|
|
1001
|
-
|
|
1002
|
-
let output = '';
|
|
1003
|
-
let responded = false;
|
|
1004
|
-
|
|
1005
|
-
const timeout = setTimeout(() => {
|
|
1006
|
-
if (!responded) {
|
|
1007
|
-
responded = true;
|
|
1008
|
-
proc.kill();
|
|
1009
|
-
res.status(504).json({ error: 'Timed out waiting for device code' });
|
|
1010
|
-
}
|
|
1011
|
-
}, 15000);
|
|
1012
|
-
|
|
1013
|
-
function tryParse(data) {
|
|
1014
|
-
if (responded || output.length > 10_000) return;
|
|
1015
|
-
output += data;
|
|
1016
|
-
// Entra: "open the page https://... and enter the code ABC123 to authenticate"
|
|
1017
|
-
// GitHub: "Browse to https://... and enter the code: AB12-CD34"
|
|
1018
|
-
const match =
|
|
1019
|
-
output.match(/open the page (https:\/\/[^\s]+) and enter the code ([A-Z0-9]+)/i) ||
|
|
1020
|
-
output.match(/Browse to (https:\/\/[^\s]+) and enter the code:?\s*([A-Z0-9-]+)/i);
|
|
1021
|
-
if (match) {
|
|
1022
|
-
responded = true;
|
|
1023
|
-
clearTimeout(timeout);
|
|
1024
|
-
// Stop reading output — we have what we need
|
|
1025
|
-
proc.stdout.removeAllListeners('data');
|
|
1026
|
-
proc.stderr.removeAllListeners('data');
|
|
1027
|
-
res.json({
|
|
1028
|
-
url: match[1],
|
|
1029
|
-
code: match[2],
|
|
1030
|
-
});
|
|
1031
|
-
}
|
|
1032
|
-
}
|
|
1033
|
-
|
|
1034
|
-
proc.stdout.on('data', (d) => tryParse(d.toString()));
|
|
1035
|
-
proc.stderr.on('data', (d) => tryParse(d.toString()));
|
|
1036
|
-
|
|
1037
|
-
proc.on('close', (code) => {
|
|
1038
|
-
clearTimeout(timeout);
|
|
1039
|
-
if (!responded) {
|
|
1040
|
-
responded = true;
|
|
1041
|
-
if (code === 0) {
|
|
1042
|
-
res.json({ ok: true, message: 'Already authenticated' });
|
|
1043
|
-
} else {
|
|
1044
|
-
res.status(500).json({ error: 'DevTunnel login failed' });
|
|
1045
|
-
}
|
|
1046
|
-
}
|
|
1047
|
-
});
|
|
1048
|
-
|
|
1049
|
-
proc.on('error', (err) => {
|
|
1050
|
-
clearTimeout(timeout);
|
|
1051
|
-
if (!responded) {
|
|
1052
|
-
responded = true;
|
|
1053
|
-
res.status(500).json({ error: err.message });
|
|
1054
|
-
}
|
|
1055
|
-
});
|
|
1056
|
-
});
|
|
1001
|
+
// Tunnel renew endpoint removed — DevTunnel CLI auto-refreshes OAuth
|
|
1002
|
+
// tokens. If auth truly expires, user must run "devtunnel user login" on
|
|
1003
|
+
// the host machine; the watchdog auto-reconnects after re-auth.
|
|
1057
1004
|
}
|
|
1058
1005
|
|
|
1059
1006
|
function cleanupUploadedFiles() {
|
package/src/server/sessions.js
CHANGED
|
@@ -407,10 +407,30 @@ class SessionManager {
|
|
|
407
407
|
return true;
|
|
408
408
|
}
|
|
409
409
|
|
|
410
|
+
/** Get the live CWD for a session (detected from PTY process). */
|
|
411
|
+
getSessionCwd(id) {
|
|
412
|
+
const s = this.sessions.get(id);
|
|
413
|
+
if (!s) return null;
|
|
414
|
+
const cached = _gitCache.get(id);
|
|
415
|
+
if (cached && cached.cwd) {
|
|
416
|
+
// Update session.cwd so endpoints using session.cwd directly get fresh values
|
|
417
|
+
s.cwd = cached.cwd;
|
|
418
|
+
return cached.cwd;
|
|
419
|
+
}
|
|
420
|
+
// Trigger a refresh for next time
|
|
421
|
+
scheduleGitRefresh(id, s.pty.pid, s.cwd);
|
|
422
|
+
return s.cwd;
|
|
423
|
+
}
|
|
424
|
+
|
|
410
425
|
list() {
|
|
411
426
|
const list = [];
|
|
412
427
|
for (const [id, s] of this.sessions) {
|
|
413
428
|
const { cwd, git } = getCachedGitInfo(id, s.pty.pid, s.cwd);
|
|
429
|
+
// Keep session.cwd in sync with detected live CWD
|
|
430
|
+
if (cwd !== s.cwd) {
|
|
431
|
+
log.debug(`Session ${id} CWD changed: ${s.cwd} → ${cwd}`);
|
|
432
|
+
s.cwd = cwd;
|
|
433
|
+
}
|
|
414
434
|
list.push({
|
|
415
435
|
id,
|
|
416
436
|
name: s.name,
|
package/src/tunnel/index.js
CHANGED
|
@@ -293,13 +293,11 @@ function checkTokenExpiry() {
|
|
|
293
293
|
if (remaining <= TOKEN_EXPIRY_WARN_SECONDS && !expiryWarned) {
|
|
294
294
|
expiryWarned = true;
|
|
295
295
|
const minutes = Math.round(remaining / 60);
|
|
296
|
-
log.warn(`DevTunnel token expires in ${minutes}m`);
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
});
|
|
296
|
+
log.warn(`DevTunnel token expires in ${minutes}m (will auto-refresh)`);
|
|
297
|
+
} else if (remaining > TOKEN_EXPIRY_WARN_SECONDS && expiryWarned) {
|
|
298
|
+
expiryWarned = false;
|
|
299
|
+
log.info('DevTunnel token was auto-refreshed');
|
|
301
300
|
} else if (remaining > TOKEN_EXPIRY_WARN_SECONDS) {
|
|
302
|
-
// Reset the warning flag when token is refreshed
|
|
303
301
|
expiryWarned = false;
|
|
304
302
|
}
|
|
305
303
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aq as o,ar as n}from"./index-BxVq7AYs.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-WL4C6EOR-XtpH4KKr.js";import{_ as i}from"./index-BxVq7AYs.js";import"./chunk-FMBD7UC4-H_1l13Rz.js";import"./chunk-JSJVCQXG-D_GdzPQn.js";import"./chunk-55IACEB6-DhjD4VKO.js";import"./chunk-KX2RTZJC-BU-NTTwY.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-WL4C6EOR-XtpH4KKr.js";import{_ as i}from"./index-BxVq7AYs.js";import"./chunk-FMBD7UC4-H_1l13Rz.js";import"./chunk-JSJVCQXG-D_GdzPQn.js";import"./chunk-55IACEB6-DhjD4VKO.js";import"./chunk-KX2RTZJC-BU-NTTwY.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./_baseUniq-D-ViDZI1.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as t,b as r,a,S as s}from"./chunk-NQ4KR5QH-_X3IQmYu.js";import{_ as i}from"./index-BxVq7AYs.js";import"./chunk-55IACEB6-DhjD4VKO.js";import"./chunk-KX2RTZJC-BU-NTTwY.js";var l={parser:a,get db(){return new s(2)},renderer:r,styles:t,init:i(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{l as diagram};
|