token-usage-dashboard 1.0.6

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 (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +151 -0
  3. package/bin/ai-usage-dashboard.js +92 -0
  4. package/build/client/_app/immutable/assets/0.fjR0gTLF.css +1 -0
  5. package/build/client/_app/immutable/assets/0.fjR0gTLF.css.br +0 -0
  6. package/build/client/_app/immutable/assets/0.fjR0gTLF.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/2.BABRsmGA.css +1 -0
  8. package/build/client/_app/immutable/assets/2.BABRsmGA.css.br +0 -0
  9. package/build/client/_app/immutable/assets/2.BABRsmGA.css.gz +0 -0
  10. package/build/client/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  11. package/build/client/_app/immutable/chunks/Bjy-W4x2.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/Bjy-W4x2.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/DC6tN2WI.js +3 -0
  14. package/build/client/_app/immutable/chunks/DC6tN2WI.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/DC6tN2WI.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/DRLSLo2t.js +2 -0
  17. package/build/client/_app/immutable/chunks/DRLSLo2t.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/DRLSLo2t.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
  20. package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
  21. package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  22. package/build/client/_app/immutable/entry/app.C7Gg5PnI.js +2 -0
  23. package/build/client/_app/immutable/entry/app.C7Gg5PnI.js.br +0 -0
  24. package/build/client/_app/immutable/entry/app.C7Gg5PnI.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/start.fbJ-_JRS.js +1 -0
  26. package/build/client/_app/immutable/entry/start.fbJ-_JRS.js.br +0 -0
  27. package/build/client/_app/immutable/entry/start.fbJ-_JRS.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/0.BNwlucmP.js +1 -0
  29. package/build/client/_app/immutable/nodes/0.BNwlucmP.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/0.BNwlucmP.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/1.Dj3Fzim2.js +1 -0
  32. package/build/client/_app/immutable/nodes/1.Dj3Fzim2.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/1.Dj3Fzim2.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/2.Csi9nKxw.js +2 -0
  35. package/build/client/_app/immutable/nodes/2.Csi9nKxw.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/2.Csi9nKxw.js.gz +0 -0
  37. package/build/client/_app/version.json +1 -0
  38. package/build/client/_app/version.json.br +0 -0
  39. package/build/client/_app/version.json.gz +0 -0
  40. package/build/client/favicon.svg +1 -0
  41. package/build/client/favicon.svg.br +0 -0
  42. package/build/client/favicon.svg.gz +0 -0
  43. package/build/client/robots.txt +2 -0
  44. package/build/client/robots.txt.br +3 -0
  45. package/build/client/robots.txt.gz +0 -0
  46. package/build/env.js +70 -0
  47. package/build/handler.js +22 -0
  48. package/build/index.js +145 -0
  49. package/build/server/chunks/chunks/client.js-C1_n_a2s.js +28 -0
  50. package/build/server/chunks/chunks/env.js-l0sNRNKZ.js +2 -0
  51. package/build/server/chunks/chunks/exports.js-Dd48p7Ih.js +263 -0
  52. package/build/server/chunks/chunks/internal.js-b-1wrnfA.js +1201 -0
  53. package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js +22 -0
  54. package/build/server/chunks/chunks/queries.js-aTxz7ubg.js +676 -0
  55. package/build/server/chunks/chunks/range.js-CLYFtcRE.js +117 -0
  56. package/build/server/chunks/chunks/refresh.js-DM1hnB2Y.js +107 -0
  57. package/build/server/chunks/chunks/request.js-B3j1_Icg.js +20 -0
  58. package/build/server/chunks/chunks/server.js-mTMwhapa.js +5374 -0
  59. package/build/server/chunks/chunks/shared.js-7DyfRqo3.js +255 -0
  60. package/build/server/chunks/chunks/utils.js-DzwqnkBT.js +1049 -0
  61. package/build/server/chunks/entries/endpoints/api/refresh/_server.ts.js-CJa6pKKD.js +21 -0
  62. package/build/server/chunks/entries/endpoints/api/settings/_server.ts.js-DQt7Bc2q.js +24 -0
  63. package/build/server/chunks/entries/endpoints/api/usage/_server.ts.js-kInjrhtE.js +17 -0
  64. package/build/server/chunks/entries/fallbacks/error.svelte.js-CVKDebWa.js +68 -0
  65. package/build/server/chunks/entries/hooks.server.js-BbojNy1X.js +16 -0
  66. package/build/server/chunks/entries/pages/_layout.svelte.js-C9kkUOBf.js +9 -0
  67. package/build/server/chunks/entries/pages/_page.server.ts.js-Oa3Sfml2.js +17 -0
  68. package/build/server/chunks/entries/pages/_page.svelte.js-D91hy9R4.js +1255 -0
  69. package/build/server/chunks/handler-br42Ds2q.js +1475 -0
  70. package/build/server/chunks/index.js-CBAFVV7O.js +3972 -0
  71. package/build/server/chunks/manifest.js-s70ajt69.js +63 -0
  72. package/build/server/chunks/nodes/0.js-Bzngkdxl.js +9 -0
  73. package/build/server/chunks/nodes/1.js-Cvu2_eGw.js +9 -0
  74. package/build/server/chunks/nodes/2.js-7xvomkGu.js +20 -0
  75. package/build/shims.js +33 -0
  76. package/package.json +64 -0
@@ -0,0 +1,2 @@
1
+ import{F as e,I as t,L as n,P as r,Q as i,X as a,Y as o,n as s,t as c}from"./DC6tN2WI.js";var l=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},u=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},d=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function f(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function p(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function ee(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var v=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(x(e)),v(e,t));var y=new Map;function b(e,t){let n=x(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=_(e));let i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function te(e,t,n){if(y.size>0){let t=x(e,n),r=y.get(t);if(r){if(performance.now()<r.ttl&&[`default`,`force-cache`,`only-if-cached`,void 0].includes(n?.cache))return new Response(r.body,r.init);y.delete(t)}}return window.fetch(t,n)}function x(e,t){let n=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){let e=[];t.headers&&e.push([...new Headers(t.headers)].join(`,`)),t.body&&(typeof t.body==`string`||ArrayBuffer.isView(t.body))&&e.push(t.body),n+=`[data-hash="${g(...e)}"]`}return n}var ne=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/,S=/^\/\((?:[^)]+)\)$/;function re(e){let t=[];return{pattern:e===`/`||S.test(e)?/^\/$/:RegExp(`^${ae(e).map(e=>{let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=ne.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;e<t.length;e+=1){let s=t[e],c=i[e-o];if(s.chained&&s.rest&&o&&(c=i.slice(e-o,e+1).filter(e=>e).join(`/`),o=0),c===void 0){if(s.rest)c=``;else continue}if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ce({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=re(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function le(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ue(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var C=globalThis.__sveltekit_s9j3o6?.base??``,de=globalThis.__sveltekit_s9j3o6?.assets??C??``,fe=`1789319316920`,pe=`sveltekit:snapshot`,me=`sveltekit:scroll`,he=`sveltekit:states`,ge=`sveltekit:pageurl`,w=`sveltekit:history`,T=`sveltekit:navigation`,E={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},_e=location.origin;function ve(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function D(){return{x:pageXOffset,y:pageYOffset}}function O(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ye={...E,"":E.hover};function be(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function xe(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=be(e)}}function Se(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||De(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===_e&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function Ce(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=O(s,`preload-code`)),i===null&&(i=O(s,`preload-data`)),t===null&&(t=O(s,`keepfocus`)),n===null&&(n=O(s,`noscroll`)),a===null&&(a=O(s,`reload`)),o===null&&(o=O(s,`replacestate`)),s=be(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ye[r??`off`],preload_data:ye[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function we(e){let t=i(e),n=!0;function r(){n=!0,t.update(e=>e)}function a(e){n=!1,t.set(e)}function o(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:a,subscribe:o}}var Te={v:h};function Ee(){let{set:e,subscribe:t}=i(!1),n;async function r(){clearTimeout(n);try{let t=await fetch(`${de}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let r=(await t.json()).version!==fe;return r&&(e(!0),Te.v(),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:r}}function De(e,t,n){return e.origin!==_e||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Oe(e){}var ke=2**32-1,Ae=ke-1,je=Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Me(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||Object.getPrototypeOf(t)===null||Object.getOwnPropertyNames(t).sort().join(`\0`)===je}function Ne(e){return Object.prototype.toString.call(e).slice(8,-1)}function Pe(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.getOwnPropertyDescriptor(e,t).enumerable)}function Fe(e){return!(!Number.isInteger(e)||e<0||e>Ae)}function Ie(e){return!(!Number.isInteger(e)||e<0||e>ke)}function Le(e){if(e.length===0||e.length>1&&e.charCodeAt(0)===48)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<48||n>57)return!1}return Fe(+e)}function Re(e){for(var t=e.length-1;t>=0&&!Le(e[t]);t--);return t+1}function ze(e){let t=Object.keys(e);return t.length=Re(t),t}function Be(e){return Uint8Array.fromBase64(e).buffer}function Ve(e){return Uint8Array.from(Buffer.from(e,`base64`)).buffer}function He(e){let t=atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer}var Ue=typeof Uint8Array.fromBase64==`function`,We=typeof process==`object`&&process.versions?.node!==void 0,Ge=Ue?Be:We?Ve:He;function Ke(e,t){if(!t)return e;let n={};for(let r of Object.keys(e))n[r]=t[r]??e[r];return n}var qe=Object.freeze({kind:`not-plain`}),Je=Object.freeze({kind:`symbol-keys`});Object.freeze({identify:e=>e,typeOf:e=>e===null?`null`:typeof e,toPrimitive:e=>e,tagOf:e=>Ne(e),isThenable:e=>typeof e.then==`function`,toPromise:e=>Promise.resolve(e),unbox:e=>e.valueOf(),toISOString:e=>isNaN(e.getDate())?``:e.toISOString(),toStringValue:e=>e.toString(),regExpInfo:e=>({source:e.source,flags:e.flags}),valuesOf:e=>e,entriesOf:e=>e,viewInfo:e=>({buffer:e.buffer,byteOffset:e.byteOffset,byteLength:e.byteLength,length:e.length,bufferByteLength:e.buffer.byteLength}),toArrayBuffer:e=>e,lengthOf:e=>e.length,hasOwn:(e,t)=>Object.hasOwn(e,t),indicesOf:e=>ze(e),shapeOf:e=>Me(e)?Pe(e).length>0?Je:{kind:Object.getPrototypeOf(e)===null?`null-proto`:`plain`,keys:Object.keys(e)}:qe,get:(e,t)=>e[t]});var Ye=Object.freeze({fromPrimitive:e=>e,fromISOString:e=>new Date(e),fromStringValue:(e,t)=>e===`URL`?new URL(t):e===`URLSearchParams`?new URLSearchParams(t):Temporal[e.slice(9)].from(t),fromArrayBuffer:e=>e,fromRegExpInfo:(e,t)=>new RegExp(e,t),fromViewInfo:(e,t,n,r)=>{let i=globalThis[e];return n===void 0?new i(t):new i(t,n,r)},box:e=>Object(e),createArray:e=>Array(e),createSparseArray:e=>{let t=[];return t[Ae]=void 0,delete t[Ae],t.length=e,t},createObject:()=>({}),createNullPrototypeObject:()=>Object.create(null),createSet:()=>new Set,createMap:()=>new Map,set:(e,t,n)=>{e[t]=n},addValue:(e,t)=>{e.add(t)},addEntry:(e,t,n)=>{e.set(t,n)}});function Xe(e,t,n){let r=Ke(Ye,n?.operations);if(typeof e==`number`)return s(e,!0);if(!Array.isArray(e)||e.length===0)throw Error(`Invalid input`);let i=e,a=Array(i.length),o=null;function s(e,n=!1){if(e===-1)return r.fromPrimitive(void 0);if(e===-3)return r.fromPrimitive(NaN);if(e===-4)return r.fromPrimitive(1/0);if(e===-5)return r.fromPrimitive(-1/0);if(e===-6)return r.fromPrimitive(-0);if(n||typeof e!=`number`)throw Error(`Invalid input`);if(e in a)return a[e];if(e>=i.length)throw Error(`Invalid input`);let c=i[e];if(!c||typeof c!=`object`)a[e]=r.fromPrimitive(c);else if(Array.isArray(c)){if(typeof c[0]==`string`){let n=c[0],l=t&&Object.hasOwn(t,n)?t[n]:void 0;if(l){let t=c[1];if(typeof t!=`number`&&(t=i.push(c[1])-1),Object.hasOwn(a,t))return a[e]=l(a[t]);if(o??=new Set,o.has(t))throw Error(`Invalid circular reference`);return o.add(t),a[e]=l(s(t)),o.delete(t),a[e]}switch(n){case`Date`:a[e]=r.fromISOString(c[1]);break;case`Set`:let t=r.createSet();a[e]=t;for(let e=1;e<c.length;e+=1)r.addValue(t,s(c[e]));break;case`Map`:let o=r.createMap();a[e]=o;for(let e=1;e<c.length;e+=2)r.addEntry(o,s(c[e]),s(c[e+1]));break;case`RegExp`:a[e]=r.fromRegExpInfo(c[1],c[2]);break;case`Object`:{let t=c[1];if(typeof i[t]==`object`&&i[t][0]!==`BigInt`)throw Error(`Invalid input`);a[e]=r.box(s(t));break}case`BigInt`:a[e]=r.fromPrimitive(BigInt(c[1]));break;case`null`:let l=r.createNullPrototypeObject();a[e]=l;for(let e=1;e<c.length;e+=2){if(c[e]===`__proto__`)throw Error("Cannot parse an object with a `__proto__` property");r.set(l,c[e],s(c[e+1]))}break;case`Int8Array`:case`Uint8Array`:case`Uint8ClampedArray`:case`Int16Array`:case`Uint16Array`:case`Float16Array`:case`Int32Array`:case`Uint32Array`:case`Float32Array`:case`Float64Array`:case`BigInt64Array`:case`BigUint64Array`:case`DataView`:{if(i[c[1]][0]!==`ArrayBuffer`)throw Error(`Invalid data`);let t=s(c[1]);a[e]=r.fromViewInfo(n,t,c[2],c[3]);break}case`ArrayBuffer`:{let t=c[1];if(typeof t!=`string`)throw Error(`Invalid ArrayBuffer encoding`);a[e]=r.fromArrayBuffer(Ge(t));break}case`URL`:case`URLSearchParams`:case`Temporal.Duration`:case`Temporal.Instant`:case`Temporal.PlainDate`:case`Temporal.PlainTime`:case`Temporal.PlainDateTime`:case`Temporal.PlainMonthDay`:case`Temporal.PlainYearMonth`:case`Temporal.ZonedDateTime`:a[e]=r.fromStringValue(n,c[1]);break;default:throw Error(`Unknown type ${n}`)}}else if(c[0]===-7){let t=c[1];if(!Ie(t))throw Error(`Invalid input`);let n=r.createSparseArray(t);a[e]=n;for(let e=2;e<c.length;e+=2){let i=c[e];if(!Fe(i)||i>=t)throw Error(`Invalid input`);r.set(n,i,s(c[e+1]))}}else{let t=r.createArray(c.length);a[e]=t;for(let e=0;e<c.length;e+=1){let n=c[e];n!==-2&&r.set(t,e,s(n))}}}else{let t=r.createObject();a[e]=t;for(let e of Object.keys(c)){if(e===`__proto__`)throw Error("Cannot parse an object with a `__proto__` property");r.set(t,e,s(c[e]))}}return a[e]}return s(0)}var Ze=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...Ze],[...new Set([...Ze])];function Qe(e){return e.filter(e=>e!=null)}var $e=`x-sveltekit-invalidated`,et=`x-sveltekit-trailing-slash`;function k(e,t){return e+`/`+t}function A(e){return e instanceof l||e instanceof d?e.status:500}function tt(e){return e instanceof d?e.text:`Internal Error`}var j,M,nt,rt=s.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(s.toString()),it=`a:`;rt?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(it)},M={current:null},nt={current:!1}):(j=new class{#e=a({});get data(){return r(this.#e)}set data(e){o(this.#e,e)}#t=a(null);get form(){return r(this.#t)}set form(e){o(this.#t,e)}#n=a(null);get error(){return r(this.#n)}set error(e){o(this.#n,e)}#r=a({});get params(){return r(this.#r)}set params(e){o(this.#r,e)}#i=a({id:null});get route(){return r(this.#i)}set route(e){o(this.#i,e)}#a=a({});get state(){return r(this.#a)}set state(e){o(this.#a,e)}#o=a(-1);get status(){return r(this.#o)}set status(e){o(this.#o,e)}#s=a(new URL(it));get url(){return r(this.#s)}set url(e){o(this.#s,e)}},M=new class{#e=a(null);get current(){return r(this.#e)}set current(e){o(this.#e,e)}},nt=new class{#e=a(!1);get current(){return r(this.#e)}set current(e){o(this.#e,e)}},Te.v=()=>nt.current=!0);function at(e){Object.assign(j,e)}var ot=`/__data.json`,st=`.html__data.json`;function ct(e){return e.endsWith(`.html`)?e.replace(/\.html$/,st):e.replace(/\/$/,``)+ot}async function*lt(e,t){let n=!1,r=``,i=new TextDecoder;for(;;){let a=r.indexOf(t);for(;a!==-1;)yield r.slice(0,a),r=r.slice(a+t.length),a=r.indexOf(t);if(n){r&&(yield r);return}let o=await e.read();n=o.done,o.value&&(r+=i.decode(o.value,{stream:!0})),n&&(r+=i.decode())}}async function*ut(e){for await(let t of lt(e,`
2
+ `)){let e=t.trim();e&&(yield JSON.parse(e))}}var{onMount:dt,tick:ft}=c,pt=n??(e=>e()),mt=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),N=null,P=le(`sveltekit:scroll`)??{},F=le(`sveltekit:snapshot`)??{},I={url:we({}),page:we({}),navigating:i(null),updated:Ee()};function ht(e){P[e]=D()}function gt(e,t){let n=e+1;for(;P[n];)delete P[n],n+=1;for(n=t+1;F[n];)delete F[n],n+=1}function L(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function _t(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(C||`/`);e&&await e.update()}}var vt,yt,R,z,bt,B,xt={},St={},Ct=[],V=[],H=null;function wt(){H?.fork?.then(e=>e?.discard()),H=null,Q={element:void 0,href:void 0}}var Tt=new Map,Et=new Set,Dt=new Set,U=new Set,W={branch:[],error:null,url:null,nav:null},Ot=!1,kt=!1,At=!0,G=!1,K=!1,jt=!1,Mt=!1,Nt,q,J,Y,X=new Set,Pt=new Map,Ft=new Map;async function It(e,t,n){if(globalThis.__sveltekit_s9j3o6.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_s9j3o6.data;for(let t in e)xt[t]=e[t];for(let e in n)xt[e]=n[e];for(let e in r)xt[e]=r[e];for(let e in t)St[e]=t[e]}document.URL!==location.href&&(location.href=location.href),B=e,await e.hooks.init?.(),vt=ce(e),z=document.documentElement,bt=t,yt=e.nodes[0],R=e.nodes[1],yt(),R(),q=history.state?.[w],J=history.state?.[T],q||(q=J=Date.now(),history.replaceState({...history.state,[w]:q,[T]:J},``));let r=P[q];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await fn(bt,n)):(await Z({type:`enter`,url:ve(B.hash?bn(new URL(location.href)):location.href),replace_state:!0}),i()),dn()}function Lt(){Ct.length=0,Mt=!1}function Rt(e){V.some(e=>e?.snapshot)&&(F[e]=V.map(e=>e?.snapshot?.capture()))}function zt(e){F[e]?.forEach((e,t)=>{V[t]?.snapshot?.restore(e)})}function Bt(){ht(q),ue(me,P),Rt(J),ue(pe,F)}async function Vt(e,n,r,i){let a,o;n.invalidateAll&&wt(),await Z({type:`goto`,url:ve(e),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){Mt=!0,a=new Set;for(let[e,t]of Pt)for(let[n,r]of t)r.resource?.reset(),a.add(k(e,n));o=new Set;for(let[e,t]of Ft)for(let n of t.keys())o.add(k(e,n))}n.invalidate&&n.invalidate.forEach(ln)}}),n.invalidateAll&&t().then(t).then(()=>{for(let[e,t]of Pt)for(let[n,{resource:r}]of t)a?.has(k(e,n))&&r.start();for(let[e,t]of Ft)for(let[n,{resource:r}]of t)o?.has(k(e,n))&&r.reconnect()})}async function Ht(e){if(e.id!==H?.id){wt();let t={};X.add(t),H={id:e.id,token:t,promise:Qt({...e,preload:t}).then(e=>(X.delete(t),e.type===`loaded`&&e.state.error&&wt(),e)),fork:null}}return H.promise}async function Ut(e){let t=(await nn(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function Wt(e,t,n){let r={params:W.params,route:{id:W.route?.id??null},url:new URL(location.href)};if(W={...e.state,nav:r},at(e.props.page),Nt=new B.root({target:t,props:{...e.props,stores:I,components:V},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:P[q]??D()},willUnload:!1,type:`enter`,complete:Promise.resolve()};U.forEach(t=>t(e))}zt(J),kt=!0}async function Gt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(C&&(e.pathname===C||e.pathname===C+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=f(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:Qe(n).map(e=>e.node.component),page:yn(j)}};s!==void 0&&(l.props.form=s);let u={},d=!j,p=0;for(let e=0;e<Math.max(n.length,W.branch.length);e+=1){let t=n[e],r=W.branch[e];t?.data!==r?.data&&(d=!0),t&&(u={...u,...t.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!W.url||e.href!==W.url.href||W.error!==a||s!==void 0&&s!==j.form||d)&&(l.props.page={error:a,params:t,route:{id:o?.id??null},state:{},status:i,url:new URL(e),form:s??null,data:d?u:j.data}),l}async function Kt({loader:e,parent:t,url:n,params:r,route:i,server_data_node:a}){let o={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},s=await e();return{node:s,loader:e,server:a,universal:s.universal?.load?{type:`data`,data:null,uses:o}:null,data:a?.data??null,slash:s.universal?.trailingSlash??a?.slash}}function qt(e,t,n){let r=e instanceof Request?e.url:e,i=new URL(r,n);return i.origin===n.origin&&(r=i.href.slice(n.origin.length)),{resolved:i,promise:kt?te(r,i.href,t):b(r,t)}}function Jt(e,t,n,r,i,a){if(Mt)return!0;if(!i)return!1;if(i.parent&&e||i.route&&t||i.url&&n)return!0;for(let e of i.search_params)if(r.has(e))return!0;for(let e of i.params)if(a[e]!==W.params[e])return!0;for(let e of i.dependencies)if(Ct.some(t=>t(new URL(e))))return!0;return!1}function Yt(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function Xt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function Zt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:yn(j),constructors:[]}}}async function Qt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(H?.id===e)return X.delete(H.token),H.promise;let{errors:o,layouts:s,leaf:c}=i,d=[...s,c];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=null,p=W.url?e!==an(W.url):!1,ee=W.route?i.id!==W.route.id:!1,m=Xt(W.url,n),g=!1;{let t=d.map((e,t)=>{let n=W.branch[t],i=!!e?.[0]&&(n?.loader!==e[1]||Jt(g,ee,p,m,n.server?.uses,r));return i&&(g=!0),i});if(t.some(Boolean)){try{f=await pn(n,t)}catch(t){let o=await $(t,{url:n,params:r,route:{id:e}});return a&&X.has(a)?Zt({error:o,url:n,params:r,route:i}):en({status:A(t),error:o,url:n,route:i})}if(f.type===`redirect`)return f}}let _=f?.nodes,v=!1,y=d.map(async(e,t)=>{if(!e)return;let a=W.branch[t],o=_?.[t];if((!o||o.type===`skip`)&&e[1]===a?.loader&&!Jt(v,ee,p,m,a.universal?.uses,r))return a;if(v=!0,o?.type===`error`)throw o;return Kt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;n<t;n+=1)Object.assign(e,(await y[n])?.data);return e},server_data_node:Yt(o===void 0&&e[0]?{type:`skip`}:o??null,e[0]?a?.server:void 0)})});for(let e of y)e.catch(h);let b=[];for(let e=0;e<d.length;e+=1)if(d[e])try{b.push(await y[e])}catch(t){if(t instanceof u)return{type:`redirect`,location:t.location};if(a&&X.has(a))return Zt({error:await $(t,{params:r,url:n,route:{id:i.id}}),url:n,params:r,route:i});let s=A(t),c;if(_?.includes(t))s=t.status??s,c=t.error;else if(t instanceof l)c=t.body;else{if(await I.updated.check())return await _t(),await L(n);c=await $(t,{params:r,url:n,route:{id:i.id}})}let d=await $t(e,b,o);return d?Gt({url:n,params:r,branch:b.slice(0,d.idx).concat(d.node),errors:o,status:s,error:c,route:i}):await sn(n,{id:i.id},c,s)}else b.push(void 0);return Gt({url:n,params:r,branch:b,errors:o,status:200,error:null,route:i,form:t?void 0:null})}async function $t(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)--r;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function en({status:e,error:t,url:n,route:r}){let i={},a=null;if(B.server_loads[0]===0)try{let e=await pn(n,[!0]);if(e.type!==`data`||e.nodes[0]&&e.nodes[0].type!==`data`)throw 0;a=e.nodes[0]??null}catch(e){if(!(e instanceof l&&e.status===404)&&(n.origin!==_e||n.pathname!==location.pathname||Ot))return await L(n)}try{return Gt({url:n,params:i,branch:[await Kt({loader:yt,url:n,params:i,route:r,parent:()=>Promise.resolve({}),server_data_node:Yt(a)}),{node:await R(),loader:R,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof u){await Vt(new URL(t.location,location.href),{},0);return}let a=await B.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function tn(e){let t=e.href;if(Tt.has(t))return Tt.get(t);let n;try{let r=(async()=>{let t=await B.hooks.reroute({url:new URL(e),fetch:async(t,n)=>qt(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);B.hash?n.hash=t:n.pathname=t,t=n}return t})();Tt.set(t,r),n=await r}catch{Tt.delete(t);return}return n}async function nn(e,t){if(e&&!De(e,C,B.hash)){let n=await tn(e);if(!n)return;let r=rn(n);for(let n of vt){let i=n.exec(r);if(i)return{id:an(e),invalidating:t,route:n,params:ee(i),url:e}}}}function rn(e){return p(B.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(C.length))||`/`}function an(e){return(B.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function on({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=vn(W,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return G||Et.forEach(e=>e(c)),o?null:s}async function Z({type:n,url:r,popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c={},redirect_count:l=0,nav_token:u={},accept:f=h,block:p=h,event:ee}){let m=Y;Y=u;let g=await nn(r,!1),_=n===`enter`?vn(W,g,r,n):on({url:r,type:n,delta:i?.delta,intent:g,scroll:i?.scroll,event:ee});if(!_){p(),Y===u&&(Y=m);return}let v=q,y=J;f(),G=!0,kt&&_.navigation.type!==`enter`&&I.navigating.set(M.current=_.navigation);let b=g&&await Qt(g);if(!b){if(De(r,C,B.hash))return await L(r,s);b=await sn(r,{id:null},await $(new d(404,`Not Found`,`Not found: ${r.pathname}`),{url:r,params:{},route:{id:null}}),404,s)}if(r=g?.url||r,Y!==u){_.reject(Error(`navigation aborted`));return}if(!b)return;if(b.type===`redirect`){if(l<20){await Z({type:n,url:new URL(b.location,r),popped:i,keepfocus:a,noscroll:o,replace_state:s,state:c,redirect_count:l+1,nav_token:u}),_.fulfil(void 0);return}if(b=await en({status:500,error:await $(Error(`Redirect loop`),{url:r,params:{},route:{id:null}}),url:r,route:{id:null}}),!b)return}else if(b.props.page.status>=400&&await I.updated.check())return await _t(),await L(r,s);if(Lt(),ht(v),Rt(y),b.props.page.url.pathname!==r.pathname&&(r.pathname=b.props.page.url.pathname),c=i?i.state:c,!i){let e=+!s,t={[w]:q+=e,[T]:J+=e,[he]:c};(s?history.replaceState:history.pushState).call(history,t,``,r),s||gt(q,J)}let te=g&&H?.id===g.id?H.fork:null;H?.fork&&!te?wt():(H=null,Q={element:void 0,href:void 0}),b.props.page.state=c;let x;if(kt){let t=(await Promise.all(Array.from(Dt,e=>e(_.navigation)))).filter(e=>typeof e==`function`);if(t.length>0){function e(){t.forEach(e=>{U.delete(e)})}t.push(e),t.forEach(e=>{U.add(e)})}let n=_.navigation.to;W={...b.state,nav:{params:n.params,route:n.route,url:n.url}},b.props.page&&(b.props.page.url=r),!a&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let i=te&&await te;i?x=i.commit():(N=null,Nt.$set(b.props),N&&Object.assign(b.props.page,N),at(b.props.page),x=e?.()),jt=!0}else await Wt(b,bt,!1);let{activeElement:ne}=document;if(await x,await t(),await t(),Y!==u){_.reject(Error(`navigation aborted`));return}b.props.page&&N&&Object.assign(b.props.page,N);let S=null;if(At){let e=i?i.scroll:o?D():null;e?scrollTo(e.x,e.y):(S=r.hash&&document.getElementById(xn(r)))?S.scrollIntoView():scrollTo(0,0)}let re=document.activeElement!==ne&&document.activeElement!==document.body;!a&&!re&&_n(r,!S),At=!0,G=!1,_.fulfil(void 0),_.navigation.to&&(_.navigation.to.scroll=D()),U.forEach(e=>e(_.navigation)),n===`popstate`&&zt(J),I.navigating.set(M.current=null)}async function sn(e,t,n,r,i){return e.origin===_e&&e.pathname===location.pathname&&!Ot?await en({status:r,error:n,url:e,route:t}):await L(e,i)}var Q={element:void 0,href:void 0};function cn(){let e,t;z.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,E.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],E.tap)}z.addEventListener(`mousedown`,n),z.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(Ut(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=xe(e,z),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=Se(r,C,B.hash);if(o||s)return;let c=Ce(r),l=a&&an(W.url)===an(a);if(!(c.reload||l)){if(n<=c.preload_data){Q={element:r,href:r.href},t=E.tap;let e=await nn(a,!1);if(!e)return;Ht(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,Ut(a))}}function a(){r.disconnect();for(let e of z.querySelectorAll(`a`)){let{url:t,external:n,download:i}=Se(e,C,B.hash);if(n||i)continue;let a=Ce(e);a.reload||(a.preload_code===E.viewport&&r.observe(e),a.preload_code===E.eager&&Ut(t))}}U.add(a),a()}function $(e,t){if(e instanceof l)return e.body;let n=A(e),r=tt(e);return B.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function ln(e){if(typeof e==`function`)Ct.push(e);else{let{href:t}=new URL(e,location.href);Ct.push(e=>e.href===t)}}function un(e,t){let n={[w]:q,[T]:J,[ge]:j.url.href,[he]:t};history.replaceState(n,``,ve(e)),j.state=t,Nt.$set({page:pt(()=>yn(j))})}function dn(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(Bt(),!G){let e=vn(W,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};Et.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&Bt()}),navigator.connection?.saveData||cn(),z.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=xe(t.composedPath()[0],z);if(!n)return;let{url:r,external:i,target:a,download:o}=Se(n,C,B.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=Ce(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(B.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){on({url:r,type:`link`,event:t})?G=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=W.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(K=!0,ht(q),e(r),!s.replace_state)return;K=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),z.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(De(r,C,!1))return;let i=e.target,a=Ce(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!gn){if(t.state?.[`sveltekit:history`]){let n=t.state[w];if(Y={},n===q)return;let r=P[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[T],s=W.url?m(location)===m(W.url):!1;if(o===J&&(jt||s)){i!==j.state&&(j.state=i),e(a),P[q]=D(),r&&scrollTo(r.x,r.y),q=n;return}let c=n-q;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{q=n,J=o},block:()=>{history.go(-c)},nav_token:Y,event:t})}else K||(e(new URL(location.href)),B.hash&&location.reload())}}),addEventListener(`hashchange`,()=>{K&&(K=!1,history.replaceState({...history.state,[w]:++q,[T]:J},``,location.href))});for(let e of document.querySelectorAll(`link`))mt.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&I.navigating.set(M.current=null)});function e(e){W.url=j.url=e,I.page.set(yn(j)),I.page.notify()}}async function fn(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Ot=!0;let l=new URL(location.href),d;({params:i={},route:a={id:null}}=await nn(l,!1)||{}),d=vt.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=hn(r.uses)),Kt({loader:B.nodes[t],url:l,params:i,route:a,parent:async()=>{let t={};for(let r=0;r<n;r+=1)Object.assign(t,(await e[r]).data);return t},server_data_node:Yt(r)})}),o=await Promise.all(e);if(d){let e=d.layouts;for(let t=0;t<e.length;t++)e[t]||o.splice(t,0,void 0)}f=await Gt({url:l,params:i,branch:o,status:t,error:n,errors:d?.errors,form:c,route:d??null})}catch(t){if(t instanceof u)return await L(new URL(t.location,location.href));f=await en({status:A(t),error:await $(t,{url:l,params:i,route:a}),url:l,route:a}),e.textContent=``,p=!1}f&&(f.props.page&&(f.props.page.state={}),await Wt(f,e,p))}async function pn(e,t){let n=new URL(e);n.pathname=ct(e.pathname),e.pathname.endsWith(`/`)&&n.searchParams.append(et,`1`),n.searchParams.append($e,t.map(e=>e?`1`:`0`).join(``));let r=await(0,window.fetch)(n.href,{});if(!r.ok){let e;throw r.headers.get(`content-type`)?.includes(`application/json`)?e=await r.json():r.status===404?e=`Not Found`:r.status===500&&(e=`Internal Error`),new l(r.status,e)}return new Promise((e,t)=>{mn(e,r).catch(t)})}async function mn(e,t){let n=t.body.getReader(),r=new Map;function i(e){return Xe(e,{...B.decoders,Promise:e=>new Promise((t,n)=>{r.set(e,{fulfil:t,reject:n})})})}for await(let t of ut(n)){if(t.type===`redirect`)return e(t);if(t.type===`data`)t.nodes?.forEach(e=>{e?.type===`data`&&(e.uses=hn(e.uses),e.data=i(e.data))}),e(t);else if(t.type===`chunk`){let{id:e,data:n,error:a}=t,o=r.get(e);r.delete(e),a?o.reject(i(a)):o.fulfil(i(n))}}}function hn(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}var gn=!1;function _n(e,t=!0){let n=document.querySelector(`[autofocus]`);if(n)n.focus();else{let n=xn(e);if(n&&document.getElementById(n)){let{x:r,y:i}=D();setTimeout(()=>{let a=history.state;gn=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),gn=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t<r.rangeCount;t+=1)e.push(r.getRangeAt(t));setTimeout(()=>{if(r.rangeCount===e.length){for(let t=0;t<r.rangeCount;t+=1){let n=e[t],i=r.getRangeAt(t);if(n.commonAncestorContainer!==i.commonAncestorContainer||n.startContainer!==i.startContainer||n.endContainer!==i.endContainer||n.startOffset!==i.startOffset||n.endOffset!==i.endOffset)return}r.removeAllRanges()}})}}}function vn(e,t,n,r,i=null){let a,o,s=new Promise((e,t)=>{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:D()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function yn(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function bn(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function xn(e){let t;if(B.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Oe as a,j as i,It as n,M as r,un as t};
@@ -0,0 +1 @@
1
+ typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);
@@ -0,0 +1 @@
1
+ �typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BNwlucmP.js","../chunks/DC6tN2WI.js","../chunks/xihTtKlq.js","../assets/0.fjR0gTLF.css","../nodes/1.Dj3Fzim2.js","../chunks/DRLSLo2t.js","../nodes/2.Csi9nKxw.js","../assets/2.BABRsmGA.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,D as n,E as r,G as i,I as a,O as o,P as s,T as c,V as l,W as u,X as d,Y as f,Z as p,a as m,b as h,et as g,i as _,it as v,n as y,q as b,r as x,tt as S,w as C,z as w}from"../chunks/DC6tN2WI.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=E(t,n),t=s(t),t in D)return;D[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:T,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},k={},A=o(`<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>`),j=o(`<!> <!>`,1);function M(o,x){S(x,!0);let T=_(x,`components`,23,()=>[]),E=_(x,`data_0`,3,null),D=_(x,`data_1`,3,null);l(()=>x.stores.page.set(x.page)),t(()=>{x.stores,x.page,x.constructors,T(),x.form,E(),D(),x.stores.page.notify()});let O=d(!1),k=d(!1),M=d(null);y(()=>{let e=x.stores.page.subscribe(()=>{s(O)&&(f(k,!0),a().then(()=>{f(M,document.title||`untitled page`,!0)}))});return f(O,!0),e});let N=p(()=>x.constructors[1]);var P=j(),F=i(P),I=e=>{let t=p(()=>x.constructors[0]);var a=n(),o=i(a);h(o,()=>s(t),(e,t)=>{m(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params},children:(e,t)=>{var a=n(),o=i(a);h(o,()=>s(N),(e,t)=>{m(t(e,{get data(){return D()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),r(e,a)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),r(e,a)},L=e=>{let t=p(()=>x.constructors[0]);var a=n(),o=i(a);h(o,()=>s(t),(e,t)=>{m(t(e,{get data(){return E()},get form(){return x.form},get params(){return x.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),r(e,a)};C(F,e=>{x.constructors[1]?e(I):e(L,-1)});var R=b(F,2),z=t=>{var n=A(),i=u(n),a=t=>{var n=e();w(()=>c(n,s(M))),r(t,n)};C(i,e=>{s(k)&&e(a)}),v(n),r(t,n)};C(R,e=>{s(O)&&e(z)}),r(o,P),g()}var N=x(M),P=[()=>O(()=>import(`../nodes/0.BNwlucmP.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>O(()=>import(`../nodes/1.Dj3Fzim2.js`),__vite__mapDeps([4,1,5,2]),import.meta.url),()=>O(()=>import(`../nodes/2.Csi9nKxw.js`),__vite__mapDeps([6,1,5,2,7]),import.meta.url)],F=[],I={"/":[-3]},L={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},R=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.decode])),z=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.encode])),B=!1,V=(e,t)=>R[e](t),H=()=>O(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{V as decode,R as decoders,I as dictionary,z as encoders,H as get_error_template,B as hash,L as hooks,k as matchers,P as nodes,N as root,F as server_loads};
@@ -0,0 +1 @@
1
+ import{a as e,n as t}from"../chunks/DRLSLo2t.js";export{e as load_css,t as start};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,G as n,x as r}from"../chunks/DC6tN2WI.js";import"../chunks/xihTtKlq.js";function i(i,a){var o=e(),s=n(o);r(s,()=>a.children),t(i,o)}export{i as component};
@@ -0,0 +1 @@
1
+ import{E as e,G as t,K as n,O as r,T as i,et as a,q as o,tt as s,z as c}from"../chunks/DC6tN2WI.js";import{i as l}from"../chunks/DRLSLo2t.js";import"../chunks/xihTtKlq.js";var u={get data(){return l.data},get error(){return l.error},get form(){return l.form},get params(){return l.params},get route(){return l.route},get state(){return l.state},get status(){return l.status},get url(){return l.url}},d=r(`<h1> </h1> <p> </p>`,1);function f(r,l){s(l,!0);var f=d(),p=t(f),m=n(p,!0),h=o(p,2),g=n(h,!0);c(()=>{i(m,u.status),i(g,u.error?.message)}),e(r,f),a()}export{f as component};
@@ -0,0 +1,2 @@
1
+ import{A as e,B as t,C as n,D as r,E as i,G as a,H as o,J as s,K as c,L as l,M as u,N as d,O as f,P as p,R as m,S as h,T as g,U as _,W as v,X as y,Y as b,Z as x,_ as S,a as C,at as w,c as T,d as E,et as D,f as O,g as k,h as A,i as j,it as M,j as N,k as P,l as F,m as I,o as L,p as R,q as z,rt as ee,s as te,tt as B,u as ne,v as V,w as H,x as re,y as ie,z as U}from"../chunks/DC6tN2WI.js";import{t as ae}from"../chunks/DRLSLo2t.js";import"../chunks/xihTtKlq.js";var W=null;function oe(){return W||(W=document.createElement(`div`),W.className=`app-tooltip`,W.setAttribute(`role`,`tooltip`),document.body.append(W),W)}var G=(e,t)=>{let n=t,r=()=>{W&&W.classList.remove(`is-open`)},i=()=>{if(!n)return;let t=oe();t.textContent=n,t.classList.add(`is-open`);let r=e.getBoundingClientRect(),i=t.getBoundingClientRect(),a=Math.min(Math.max(8,r.left+r.width/2-i.width/2),window.innerWidth-i.width-8),o=r.top>i.height+12;t.style.left=`${a}px`,t.style.top=`${o?r.top-i.height-8:r.bottom+8}px`};return e.addEventListener(`pointerenter`,i),e.addEventListener(`focusin`,i),e.addEventListener(`pointerleave`,r),e.addEventListener(`focusout`,r),window.addEventListener(`scroll`,r,!0),{update:t=>{n=t,t&&e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??t)},destroy:()=>{r(),e.removeEventListener(`pointerenter`,i),e.removeEventListener(`focusin`,i),e.removeEventListener(`pointerleave`,r),e.removeEventListener(`focusout`,r),window.removeEventListener(`scroll`,r,!0)}}},se=f(`<div class="actions svelte-hxsa5u"><!></div>`),ce=f(`<section class="panel svelte-hxsa5u"><header class="svelte-hxsa5u"><h2 class="svelte-hxsa5u"> </h2> <!></header> <div class="body svelte-hxsa5u"><!></div></section>`);function K(e,t){let n=j(t,`span`,3,12);var r=ce(),a=v(r),o=v(a),s=c(o,!0);S(o,(e,t)=>G?.(e,t),()=>t.hint);var l=z(o,2),u=e=>{var n=se(),r=v(n);re(r,()=>t.actions),M(n),i(e,n)};H(l,e=>{t.actions&&e(u)}),M(a);var d=z(a,2),f=v(d);re(f,()=>t.children),M(d),M(r),U(()=>{A(r,`--span: ${n()??``}`),g(s,t.title)}),i(e,r)}var le=f(`<button type="button"> </button>`),ue=f(`<div role="group"></div>`);function de(e,t){B(t,!0);let n=j(t,`value`,15),r=j(t,`size`,3,`md`);var a=ue();let o;h(a,21,()=>t.options,e=>e.id,(e,t)=>{var r=le();let a;var o=c(r,!0);S(r,(e,t)=>G?.(e,t),()=>p(t).hint),U(()=>{E(r,`aria-pressed`,n()===p(t).id),a=k(r,1,`svelte-1dkbyok`,null,a,{on:n()===p(t).id}),g(o,p(t).label)}),u(`click`,r,()=>n(p(t).id)),i(e,r)}),M(a),U(()=>{o=k(a,1,`segmented svelte-1dkbyok`,null,o,{sm:r()===`sm`}),E(a,`aria-label`,t.label)}),i(e,a),D()}N([`click`]);var fe=f(`<b class="num svelte-vbwhwd"> </b>`),pe=f(`<label class="svelte-vbwhwd"><input type="checkbox" class="svelte-vbwhwd"/> <span class="svelte-vbwhwd"> </span></label>`),me=f(`<p class="none svelte-vbwhwd">Nothing matches</p>`),he=f(`<button type="button" class="clear svelte-vbwhwd">Clear</button>`),ge=f(`<div class="menu svelte-vbwhwd"><input class="search svelte-vbwhwd" type="search"/> <div class="list svelte-vbwhwd"></div> <!></div>`),_e=f(`<div class="select svelte-vbwhwd"><button type="button"> <!> <svg viewBox="0 0 12 12" width="10" height="10" aria-hidden="true"><path d="M2 4.5 6 8.5 10 4.5" fill="none" stroke="currentColor" stroke-width="1.5"></path></svg></button> <!></div>`);function ve(e,t){B(t,!0);let n=j(t,`selected`,15),r=j(t,`format`,3,e=>e),a=y(!1),o=y(``),s,l=x(()=>t.options.filter(e=>r()(e).toLowerCase().includes(p(o).toLowerCase()))),f=e=>{n(n().includes(e)?n().filter(t=>t!==e):[...n(),e])},m=e=>{p(a)&&!s.contains(e.target)&&b(a,!1)};var S=_e();d(`click`,_,m);var w=v(S);let T;var A=v(w),N=z(A),P=e=>{var t=fe(),r=c(t,!0);U(()=>g(r,n().length)),i(e,t)};H(N,e=>{n().length&&e(P)}),ee(2),M(w);var F=z(w,2),I=e=>{var a=ge(),s=v(a);ne(s);var d=z(s,2);h(d,20,()=>p(l),e=>e,(e,t)=>{var a=pe(),o=v(a);ne(o);var s=z(o,2),l=c(s,!0);M(a),U((e,t)=>{O(o,e),g(l,t)},[()=>n().includes(t),()=>r()(t)]),u(`change`,o,()=>f(t)),i(e,a)},e=>{var t=me();i(e,t)}),M(d);var m=z(d,2),_=e=>{var t=he();u(`click`,t,()=>n([])),i(e,t)};H(m,e=>{n().length&&e(_)}),M(a),U(e=>E(s,`placeholder`,`Filter ${e??``}`),[()=>t.label.toLowerCase()]),te(s,()=>p(o),e=>b(o,e)),i(e,a)};H(F,e=>{p(a)&&e(I)}),M(S),C(S,e=>s=e,()=>s),U(()=>{T=k(w,1,`trigger svelte-vbwhwd`,null,T,{on:n().length>0}),E(w,`aria-expanded`,p(a)),g(A,`${t.label??``} `)}),u(`click`,w,()=>b(a,!p(a))),i(e,S),D()}N([`click`,`change`]);var q=[{at:0xe8d4a51000,suffix:`T`},{at:1e9,suffix:`B`},{at:1e6,suffix:`M`},{at:1e3,suffix:`k`}];function J(e){let t=q.find(t=>Math.abs(e)>=t.at);if(!t)return String(Math.round(e));let n=e/t.at;return`${n.toFixed(+(n<10))}${t.suffix}`}var Y=e=>Math.round(e).toLocaleString(`en-GB`);function X(e){return e===null?`--`:e===0?`$0`:Math.abs(e)<.01?`<$0.01`:`$${e.toLocaleString(`en-GB`,{minimumFractionDigits:2,maximumFractionDigits:2})}`}function ye(e){return e===null?`--`:Math.abs(e)>=1e3?`$${J(e)}`:X(e)}var be=new Intl.RelativeTimeFormat(`en-GB`,{numeric:`auto`}),xe=[[`second`,60],[`minute`,60],[`hour`,24],[`day`,7],[`week`,4.35],[`month`,12]];function Se(e,t=Date.now()){if(!e)return`never`;let n=(e-t)/1e3;if(Math.abs(n)<45)return n<0?`just now`:`in a moment`;for(let[e,t]of xe){if(Math.abs(n)<t)return be.format(Math.round(n),e);n/=t}return be.format(Math.round(n),`year`)}var Z=e=>new Date(`${e}T00:00:00`).toLocaleDateString(`en-GB`,{weekday:`short`,day:`numeric`,month:`short`}),Ce=e=>new Date(e).toLocaleString(`en-GB`,{day:`numeric`,month:`short`,hour:`2-digit`,minute:`2-digit`});function we(e){let t=Math.round(e/6e4);return t<1?`under a minute`:t<60?`${t} min`:`${Math.floor(t/60)}h ${t%60}m`}var Te=e=>e?e.replace(/\/+$/,``).split(`/`).pop()||e:`unknown`,Ee=e=>(e.includes(`/`)?e.slice(e.indexOf(`/`)+1):e).replace(/-\d{8}$/,``);function De(e,t){if(!t)return null;let n=(e-t)/t*100;return!Number.isFinite(n)||Math.abs(n)<1?{text:`flat`,tone:`even`}:{text:`${n>0?`+`:``}${n.toFixed(0)}%`,tone:n>0?`up`:`down`}}var Oe=f(`<span class="delta svelte-l3stpt"> </span>`),ke=f(`<i> </i>`),Ae=f(`<div class="figures svelte-l3stpt"><div class="lead svelte-l3stpt"><span class="cap svelte-l3stpt"> </span> <strong class="num svelte-l3stpt"> </strong> <!></div> <dl class="svelte-l3stpt"><div class="svelte-l3stpt"><dt class="svelte-l3stpt">Est. cost</dt> <dd class="num svelte-l3stpt"> <!></dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Sessions</dt> <dd class="num svelte-l3stpt"> </dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Active days</dt> <dd class="num svelte-l3stpt"> </dd></div> <div class="svelte-l3stpt"><dt class="svelte-l3stpt">Daily pace</dt> <dd class="num svelte-l3stpt"> </dd></div></dl></div>`);function je(e,t){B(t,!0);let n=x(()=>De(t.totals.total,t.previous.total)),r=x(()=>De(t.totals.cost??0,t.previous.cost??0)),a=x(()=>t.activeDays?t.totals.total/t.activeDays:0);var o=Ae(),s=v(o),l=v(s),u=c(l),d=z(l,2),f=c(d,!0);S(d,(e,t)=>G?.(e,t),()=>Y(t.totals.total));var m=z(d,2),h=e=>{var r=Oe(),a=c(r,!0);S(r,(e,t)=>G?.(e,t),()=>`on the ${t.rangeLabel.toLowerCase()} before`),U(()=>g(a,p(n).text)),i(e,r)};H(m,e=>{p(n)&&e(h)}),M(s);var _=z(s,2),y=v(_),b=v(y);S(b,(e,t)=>G?.(e,t),()=>`What these tokens would cost at published API rates. A subscription is billed separately.`);var C=z(b,2),w=v(C),T=z(w),E=e=>{var t=ke(),n=c(t,!0);U(()=>{k(t,1,`delta cost ${p(r).tone??``}`,`svelte-l3stpt`),g(n,p(r).text)}),i(e,t)};H(T,e=>{p(r)&&e(E)}),M(C),M(y);var O=z(y,2),A=z(v(O),2),j=c(A,!0);M(O);var N=z(O,2),P=v(N);S(P,(e,t)=>G?.(e,t),()=>`Days with at least one request`);var F=z(P,2),I=c(F,!0);M(N);var L=z(N,2),R=v(L);S(R,(e,t)=>G?.(e,t),()=>`Tokens per active day`);var ee=z(R,2),te=c(ee,!0);M(L),M(_),M(o),U((e,t,n,r,i,a)=>{g(u,`Tokens, ${e??``}`),g(f,t),g(w,`${n??``} `),g(j,r),g(I,i),g(te,a)},[()=>t.rangeLabel.toLowerCase(),()=>J(t.totals.total),()=>X(t.totals.cost),()=>Y(t.totals.sessions),()=>Y(t.activeDays),()=>J(p(a))]),i(e,o),D()}var Me=P(`<text class="axis svelte-1iu5iby" y="10"> </text>`),Ne=P(`<text class="axis svelte-1iu5iby" x="0"> </text>`),Pe=P(`<rect role="img"></rect>`),Fe=f(`<i class="svelte-1iu5iby"></i>`),Ie=f(`<div class="calendar svelte-1iu5iby"><svg role="img" aria-label="Daily usage calendar" class="svelte-1iu5iby"><!><!><!></svg> <div class="legend svelte-1iu5iby"><span class="span svelte-1iu5iby"> </span> <span>No records</span> <i class="blank svelte-1iu5iby"></i> <span class="spread svelte-1iu5iby">Quieter</span> <!> <span>Busier</span></div></div>`);function Le(e,t){B(t,!0);let o=y(680),s=e=>e.toLocaleDateString(`en-CA`),l=e=>e?t.metric===`cost`?e.cost??0:e.total:0,u=x(()=>new Map(t.days.map(e=>[e.day,e]))),d=x(()=>t.oldest?s(new Date(t.oldest)):t.days[0]?.day??``),f=x(()=>{let e=new Date;e.setHours(0,0,0,0);let n=new Date(t.days.length?`${t.days[0].day}T00:00:00`:e),r=new Date(e);r.setDate(r.getDate()-370);let i=new Date(e);i.setDate(i.getDate()-125);let a=new Date(Math.max(r.getTime(),Math.min(n.getTime(),i.getTime())));a.setDate(a.getDate()-(a.getDay()+6)%7);let o=[],c=new Date(a),l=0;for(;c<=e;){let e=(c.getDay()+6)%7;o.push({day:s(c),date:new Date(c),week:l,weekday:e}),e===6&&(l+=1),c.setDate(c.getDate()+1)}return{cells:o,weeks:l+1}}),m=x(()=>Math.max(9,Math.min(30,Math.floor((p(o)-32)/p(f).weeks)-3))),_=x(()=>p(m)+3),C=x(()=>{let e=t.days.map(e=>l(e)).filter(e=>e>0).sort((e,t)=>e-t);return e.length?[.2,.4,.6,.8].map(t=>e[Math.floor(e.length*t)]):[]}),w=e=>e<=0?0:p(C).filter(t=>e>=t).length+1,T=x(()=>{let e=[];for(let t of p(f).cells){if(t.weekday!==0)continue;let n=t.date.toLocaleDateString(`en-GB`,{month:`short`});(!e.length||t.date.getDate()<=7&&e[e.length-1].label!==n)&&e.push({label:n,week:t.week})}return e}),O=e=>{if(p(d)&&e<p(d))return`${Z(e)} - before your records start`;let n=l(p(u).get(e)),r=t.metric===`cost`?X(n):`${J(n)} tokens`;return`${Z(e)} - ${n?r:`nothing`}`},j=[`Mon`,``,`Wed`,``,`Fri`,``,`Sun`],N=x(()=>t.days.filter(e=>l(e)>0).length),P=x(()=>p(d)?`Since ${Z(p(d))}, ${p(N)} ${p(N)===1?`day`:`days`} with usage`:``);var F=Ie(),I=v(F),R=v(I);h(R,17,()=>p(T),e=>e.week+e.label,(e,t)=>{var n=Me(),r=c(n,!0);U(()=>{E(n,`x`,32+p(t).week*p(_)),g(r,p(t).label)}),i(e,n)});var te=z(R);h(te,17,()=>j,n,(e,t,n)=>{var o=r(),s=a(o),l=e=>{var r=Ne(),a=c(r,!0);U(()=>{E(r,`y`,18+n*p(_)+p(m)/2+3),g(a,p(t))}),i(e,r)};H(s,e=>{p(t)&&e(l)}),i(e,o)});var ne=z(te);h(ne,17,()=>p(f).cells,e=>e.day,(e,t)=>{let n=x(()=>!!p(d)&&p(t).day<p(d));var r=Pe();let a;S(r,(e,t)=>G?.(e,t),()=>O(p(t).day)),U((e,i,o)=>{a=k(r,0,`cell svelte-1iu5iby`,null,a,{blank:p(n)}),E(r,`x`,32+p(t).week*p(_)),E(r,`y`,18+p(t).weekday*p(_)),E(r,`width`,p(m)),E(r,`height`,p(m)),E(r,`rx`,e),E(r,`fill`,`var(--ramp-${i??``})`),E(r,`aria-label`,o)},[()=>Math.max(2,p(m)/4),()=>p(n)?0:w(l(p(u).get(p(t).day))),()=>O(p(t).day)]),i(e,r)}),M(I);var V=z(I,2),re=v(V),ie=c(re,!0),ae=z(re,8);h(ae,16,()=>[0,1,2,3,4,5],e=>e,(e,t)=>{var n=Fe();U(()=>A(n,`background: var(--ramp-${t??``})`)),i(e,n)}),ee(2),M(V),M(F),U(()=>{E(I,`width`,p(f).weeks*p(_)+32),E(I,`height`,7*p(_)+18),g(ie,p(P))}),L(F,`clientWidth`,e=>b(o,e)),i(e,F),D()}var Re=f(`<div class="tick svelte-118k1un"><span class="svelte-118k1un"> </span></div>`),ze=f(`<span aria-hidden="true" class="svelte-118k1un"></span>`),Be=f(`<div class="column svelte-118k1un"><div class="stack svelte-118k1un"></div></div>`),Ve=f(`<div class="trend svelte-118k1un"><div class="plot svelte-118k1un"><!> <div class="bars svelte-118k1un"></div></div> <div class="axis svelte-118k1un"><span> </span> <span> </span></div></div>`);function He(e,t){B(t,!0);let n=e=>t.metric===`cost`?e.cost??0:e.total,o=e=>t.metric===`cost`?X(e):J(e),s=x(()=>{let e=new Map;for(let r of t.series){let t=e.get(r.day)??{day:r.day,total:0,parts:new Map};t.total+=n(r),t.parts.set(r.key,(t.parts.get(r.key)??0)+n(r)),e.set(r.day,t)}return[...e.values()].sort((e,t)=>e.day.localeCompare(t.day))}),l=x(()=>Math.max(1,...p(s).map(e=>e.total))),u=e=>{let n=t.keys.filter(t=>e.parts.get(t.id)).map(t=>`${t.label} ${o(e.parts.get(t.id)??0)}`).join(`, `);return`${Z(e.day)} - ${o(e.total)}${n?` (${n})`:``}`},d=e=>t.metric===`cost`?ye(e):J(e),f=x(()=>[1,.5,0].map(e=>({at:e,label:d(p(l)*e)})));var m=Ve(),_=v(m),y=v(_);h(y,17,()=>p(f),e=>e.at,(e,t)=>{var n=Re(),r=v(n),a=c(r,!0);M(n),U(()=>{A(n,`bottom: ${p(t).at*100}%`),g(a,p(t).label)}),i(e,n)});var b=z(y,2);h(b,21,()=>p(s),e=>e.day,(e,n)=>{var o=Be(),s=v(o);h(s,21,()=>t.keys,e=>e.id,(e,t)=>{let o=x(()=>p(n).parts.get(p(t).id)??0);var s=r(),c=a(s),l=e=>{var n=ze();U(()=>A(n,`flex: ${p(o)??``}; background: ${p(t).colour??``}`)),i(e,n)};H(c,e=>{p(o)>0&&e(l)}),i(e,s)}),M(s),M(o),S(o,(e,t)=>G?.(e,t),()=>u(p(n))),U(()=>A(s,`height: ${p(n).total/p(l)*100}%`)),i(e,o)}),M(b),M(_);var C=z(_,2),w=v(C),T=c(w,!0),E=z(w,2),O=c(E,!0);M(C),M(m),U((e,t)=>{g(T,e),g(O,t)},[()=>p(s).length?Z(p(s)[0].day):``,()=>p(s).length?Z(p(s)[p(s).length-1].day):``]),i(e,m),D()}var Ue=`M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81`,We={anthropic:`M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z`,openai:`M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z`,google:Ue,xai:`M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815`,meta:`M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z`,mistral:`M17.143 3.429v3.428h-3.429v3.429h-3.428V6.857H6.857V3.43H3.43v13.714H0v3.428h10.286v-3.428H6.857v-3.429h3.429v3.429h3.429v-3.429h3.428v3.429h-3.428v3.428H24v-3.428h-3.43V3.429z`,deepseek:`M23.748 4.651c-.254-.124-.364.113-.512.233-.051.04-.094.09-.137.137-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.155-.708-.311-.955-.65-.172-.24-.219-.509-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.094.172.187.129.323-.082.28-.18.553-.266.833-.055.179-.137.218-.328.14a5.5 5.5 0 0 1-1.737-1.179c-.857-.828-1.631-1.743-2.597-2.46a12 12 0 0 0-.689-.47c-.985-.957.13-1.743.387-1.836.27-.098.094-.433-.778-.428-.872.003-1.67.295-2.687.685a3 3 0 0 1-.465.136 9.6 9.6 0 0 0-2.883-.101c-1.885.21-3.39 1.1-4.497 2.622C.082 8.776-.231 10.854.152 13.02c.403 2.284 1.568 4.175 3.36 5.653 1.857 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.132-.284 4.994-1.86.47.234.962.328 1.78.398.629.058 1.235-.031 1.705-.129.735-.155.684-.836.418-.961-2.155-1.004-1.682-.595-2.112-.926 1.095-1.295 2.768-3.598 3.284-6.733.05-.346.115-.834.108-1.114-.004-.171.035-.238.23-.257a4.2 4.2 0 0 0 1.545-.475c1.397-.763 1.96-2.016 2.093-3.517.02-.23-.004-.467-.247-.588M11.58 18.168c-2.088-1.642-3.101-2.183-3.52-2.16-.39.024-.32.472-.234.763.09.288.207.487.371.74.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.168-1.361-.801-2.5-1.86-3.301-3.306-.775-1.393-1.225-2.888-1.299-4.482-.02-.385.094-.522.477-.592a4.7 4.7 0 0 1 1.53-.038c2.131.311 3.946 1.264 5.467 2.774.868.86 1.525 1.887 2.202 2.89.72 1.066 1.494 2.082 2.48 2.915.348.291.626.513.892.677-.802.09-2.14.109-3.055-.615zm1.001-6.44a.306.306 0 0 1 .415-.287.3.3 0 0 1 .113.074.3.3 0 0 1 .086.214c0 .17-.136.307-.308.307a.303.303 0 0 1-.306-.307m3.11 1.596c-.2.081-.4.151-.591.16a1.25 1.25 0 0 1-.798-.254c-.274-.23-.47-.358-.551-.758a1.7 1.7 0 0 1 .015-.588c.07-.327-.007-.537-.238-.727-.188-.156-.426-.199-.689-.199a.6.6 0 0 1-.254-.078.253.253 0 0 1-.114-.358 1 1 0 0 1 .192-.21c.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.392.451.462.576.685.915.176.264.336.536.446.848.066.194-.02.353-.25.45`,qwen:`M23.919 14.545 20.817 9.17l1.47-2.544a.56.56 0 0 0 0-.566l-1.633-2.83a.57.57 0 0 0-.49-.283h-6.207L12.487.402a.57.57 0 0 0-.49-.284H8.732a.56.56 0 0 0-.49.284L5.139 5.775h-2.94a.56.56 0 0 0-.49.284L.077 8.887a.56.56 0 0 0 0 .567L3.18 14.83l-1.47 2.545a.56.56 0 0 0 0 .566l1.634 2.83a.57.57 0 0 0 .49.283h6.205l1.47 2.545a.57.57 0 0 0 .49.284h3.266a.57.57 0 0 0 .49-.284l3.104-5.375h2.94a.57.57 0 0 0 .49-.283l1.634-2.828a.55.55 0 0 0-.004-.568M8.733.686l1.634 2.828-1.634 2.828H21.8L20.164 9.17H7.425L5.63 6.06Zm1.306 19.801-6.205-.002 1.634-2.83h3.265L2.201 6.344h3.267q3.182 5.517 6.367 11.032zm10.124-5.66L18.53 12l-6.532 11.315-1.634-2.83c2.129-3.673 4.25-7.351 6.373-11.028h3.592l3.102 5.374z`,"claude-code":`M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0V10.95h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z`,codex:`M8.086.457a6.105 6.105 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.117.117 0 00.107.029c1.408-.346 2.762-.224 4.061.366l.063.03.154.076c1.357.703 2.33 1.77 2.918 3.198.278.679.418 1.388.421 2.126a5.655 5.655 0 01-.18 1.631.167.167 0 00.04.155 5.982 5.982 0 011.578 2.891c.385 1.901-.01 3.615-1.183 5.14l-.182.22a6.063 6.063 0 01-2.934 1.851.162.162 0 00-.108.102c-.255.736-.511 1.364-.987 1.992-1.199 1.582-2.962 2.462-4.948 2.451-1.583-.008-2.986-.587-4.21-1.736a.145.145 0 00-.14-.032c-.518.167-1.04.191-1.604.185a5.924 5.924 0 01-2.595-.622 6.058 6.058 0 01-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74 7.74 0 01-.495-1.283 6.11 6.11 0 01-.017-3.064.166.166 0 00.008-.074.115.115 0 00-.037-.064 5.958 5.958 0 01-1.38-2.202 5.196 5.196 0 01-.333-1.589 6.915 6.915 0 01.188-2.132c.45-1.484 1.309-2.648 2.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129 0 00.087-.087A6.016 6.016 0 015.635 2.31C6.315 1.464 7.132.846 8.086.457zm-.804 7.85a.848.848 0 00-1.473.842l1.694 2.965-1.688 2.848a.849.849 0 001.46.864l1.94-3.272a.849.849 0 00.007-.854l-1.94-3.393zm5.446 6.24a.849.849 0 000 1.695h4.848a.849.849 0 000-1.696h-4.848z`,opencode:`M22 24H2V0h20zM17 4.8H7v14.4h10z`,"gemini-cli":Ue},Ge=P(`<path fill="currentColor"></path>`),Ke=P(`<rect x="1.5" y="1.5" width="21" height="21" rx="6" fill="none" stroke="currentColor" stroke-width="1.8"></rect><text x="12" y="12.5" text-anchor="middle" dominant-baseline="central" fill="currentColor" font-weight="600" font-family="var(--sans)"> </text>`,1),qe=P(`<svg class="mark svelte-jlywqn" viewBox="0 0 24 24" role="img"><!></svg>`);function Je(e,t){B(t,!0);let n=j(t,`size`,3,16),r=x(()=>We[t.id]),o=x(()=>t.label.replace(/[^a-z ]/gi,``).split(` `).map(e=>e[0]).join(``).slice(0,2).toUpperCase());var s=qe();let l;var u=v(s),d=e=>{var t=Ge();U(()=>E(t,`d`,p(r))),i(e,t)},f=e=>{var t=Ke(),n=z(a(t)),r=c(n,!0);U(()=>{E(n,`font-size`,p(o).length>1?9:12),g(r,p(o))}),i(e,t)};H(u,e=>{p(r)?e(d):e(f,-1)}),M(s),U(()=>{E(s,`width`,n()),E(s,`height`,n()),E(s,`aria-label`,t.label),l=A(s,``,l,{color:t.colour})}),i(e,s),D()}var Ye=f(`<i class="dot svelte-eh60s9"></i>`),Xe=f(`<em class="svelte-eh60s9"> </em>`),Ze=f(`<span class="fill svelte-eh60s9"></span> <span class="label svelte-eh60s9"><!> <b class="svelte-eh60s9"> </b> <!></span> <span class="value num svelte-eh60s9"> </span>`,1),Qe=f(`<li><!></li>`),$e=f(`<ul class="bars svelte-eh60s9"></ul>`),et=f(`<p class="empty svelte-eh60s9"> </p>`);function tt(e,t){B(t,!0);let n=j(t,`active`,19,()=>[]),o=j(t,`empty`,3,`Nothing in this range`),s=x(()=>Math.max(1,...t.rows.map(e=>e.value)));var l=r(),u=a(l),d=e=>{var r=$e();h(r,21,()=>t.rows,e=>e.id,(e,r)=>{var o=Qe(),l=v(o);ie(l,()=>t.onpick?`button`:`div`,!1,(e,o)=>{S(e,(e,t)=>G?.(e,t),()=>p(r).hint);var l=()=>t.onpick?.(p(r).id);F(e,e=>({class:`row`,role:t.onpick?`button`:void 0,tabindex:t.onpick?0:void 0,onclick:l,[T]:{on:e}}),[()=>n().includes(p(r).id)],void 0,void 0,`svelte-eh60s9`);var u=Ze(),d=a(u),f=z(d,2),m=v(f),h=e=>{Je(e,{get id(){return p(r).mark},get label(){return p(r).label},get colour(){return p(r).colour},size:15})},_=e=>{var t=Ye();U(()=>A(t,`background: ${p(r).colour??``}`)),i(e,t)};H(m,e=>{p(r).mark?e(h):e(_,-1)});var y=z(m,2),b=c(y,!0),x=z(y,2),C=e=>{var t=Xe(),n=c(t,!0);U(()=>g(n,p(r).detail)),i(e,t)};H(x,e=>{p(r).detail&&e(C)}),M(f);var w=z(f,2),E=c(w,!0);U(()=>{A(d,`width: ${p(r).value/p(s)*100}%; background: ${p(r).colour??``}`),g(b,p(r).label),g(E,p(r).display)}),i(o,u)}),M(o),i(e,o)}),M(r),i(e,r)},f=e=>{var t=et(),n=c(t,!0);U(()=>g(n,o())),i(e,t)};H(u,e=>{t.rows.length?e(d):e(f,-1)}),i(e,l),D()}var nt=P(`<circle cx="70" cy="70" fill="none" stroke-width="18" transform="rotate(-90 70 70)" class="svelte-1o711x0"></circle>`),rt=f(`<div class="donut svelte-1o711x0"><svg viewBox="0 0 140 140" role="img" class="svelte-1o711x0"><circle cx="70" cy="70" fill="none" stroke="var(--surface-3)" stroke-width="18" class="svelte-1o711x0"></circle><!><text class="centre num svelte-1o711x0" x="70" y="66" text-anchor="middle"> </text><text class="sub svelte-1o711x0" x="70" y="84" text-anchor="middle"> </text></svg></div>`);function it(e,t){B(t,!0);let n=2*Math.PI*52,r=x(()=>{let e=t.slices.reduce((e,t)=>e+t.value,0)||1,r=0;return t.slices.map(t=>{let i=t.value/e*n,a={...t,length:i,offset:r,share:t.value/e*100};return r+=i,a})});var a=rt(),o=v(a),s=v(o);E(s,`r`,52);var l=z(s);h(l,17,()=>p(r),e=>e.id,(e,t)=>{var n=nt();E(n,`r`,52),S(n,(e,t)=>G?.(e,t),()=>`${p(t).label} - ${p(t).display} (${p(t).share.toFixed(1)}%)`),U(e=>{E(n,`stroke`,p(t).colour),E(n,`stroke-dasharray`,`${e??``} 326.7256359733385`),E(n,`stroke-dashoffset`,-p(t).offset)},[()=>Math.max(0,p(t).length-2)]),i(e,n)});var u=z(l),d=c(u,!0),f=z(u),m=c(f,!0);M(o),M(a),U(()=>{E(o,`aria-label`,t.caption),g(d,t.centre),g(m,t.caption)}),i(e,a),D()}var at=f(`<span class="svelte-1qwkpf0"></span>`),ot=f(`<li class="svelte-1qwkpf0"><i class="svelte-1qwkpf0"></i> <span class="name svelte-1qwkpf0"> </span> <span class="value num svelte-1qwkpf0"> </span> <span class="share num svelte-1qwkpf0"> </span></li>`),st=f(`<div class="split svelte-1qwkpf0"><div class="bar svelte-1qwkpf0"></div> <ul class="svelte-1qwkpf0"></ul></div>`);function ct(e,t){B(t,!0);let n=x(()=>t.parts.reduce((e,t)=>e+t.value,0)||1);var o=st(),s=v(o);h(s,21,()=>t.parts,e=>e.id,(e,t)=>{var o=r(),s=a(o),c=e=>{var r=at();S(r,(e,t)=>G?.(e,t),()=>`${p(t).label} - ${p(t).display} (${(p(t).value/p(n)*100).toFixed(1)}%)`),U(()=>A(r,`flex: ${p(t).value??``}; background: ${p(t).colour??``}`)),i(e,r)};H(s,e=>{p(t).value>0&&e(c)}),i(e,o)}),M(s);var l=z(s,2);h(l,21,()=>t.parts,e=>e.id,(e,t)=>{var r=ot(),a=v(r),o=z(a,2),s=c(o,!0),l=z(o,2),u=c(l,!0),d=z(l,2),f=c(d);M(r),S(r,(e,t)=>G?.(e,t),()=>p(t).hint),U(e=>{A(a,`background: ${p(t).colour??``}`),g(s,p(t).label),g(u,p(t).display),g(f,`${e??``}%`)},[()=>(p(t).value/p(n)*100).toFixed(1)]),i(e,r)}),M(l),M(o),i(e,o),D()}var lt=f(`<i class="svelte-13d36y"></i>`),ut=f(`<span class="day svelte-13d36y"> </span> <div class="hours svelte-13d36y"></div>`,1),dt=f(`<span> </span>`),ft=f(`<div class="clock svelte-13d36y"><div class="rows svelte-13d36y"></div> <div class="scale svelte-13d36y"><!> <span>23</span></div></div>`);function pt(e,t){B(t,!0);let r=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],o=x(()=>{let e=new Map;for(let n of t.points){let t=(n.day+6)%7;e.set(`${t}-${n.hour}`,(e.get(`${t}-${n.hour}`)??0)+n.total)}return e}),s=x(()=>Math.max(1,...p(o).values())),l=e=>e?.32+.68*Math.sqrt(e/p(s)):0;var u=ft(),d=v(u);h(d,22,()=>r,e=>e,(e,t,r)=>{var s=ut(),u=a(s),d=c(u,!0),f=z(u,2);h(f,20,()=>Array(24),n,(e,n,a)=>{let s=x(()=>p(o).get(`${p(r)}-${a}`)??0);var c=lt();S(c,(e,t)=>G?.(e,t),()=>`${t} ${String(a).padStart(2,`0`)}:00 - ${p(s)?`${J(p(s))} tokens`:`nothing`}`),U(e=>A(c,`--dot: ${e??``}`),[()=>l(p(s))]),i(e,c)}),M(f),U(()=>g(d,t)),i(e,s)}),M(d);var f=z(d,2),m=v(f);h(m,16,()=>[0,6,12,18],e=>e,(e,t)=>{var n=dt(),r=c(n,!0);U(e=>g(r,e),[()=>String(t).padStart(2,`0`)]),i(e,n)}),ee(2),M(f),M(u),i(e,u),D()}var mt=f(`<div><div class="top svelte-tlhxud"><span class="name svelte-tlhxud"> </span> <span class="num pct svelte-tlhxud"> </span></div> <div class="track svelte-tlhxud" role="meter" aria-valuemin="0" aria-valuemax="100"><span class="svelte-tlhxud"></span></div> <span class="reset svelte-tlhxud"><!></span></div>`);function ht(t,n){B(n,!0);let r=x(()=>!!n.window.resets_at&&n.window.resets_at<Date.now()),a=x(()=>p(r)?`text-faint`:n.window.used_percent>=90?`bad`:n.window.used_percent>=70?`warn`:`good`),o=x(()=>[n.window.detail,n.window.resets_at?`resets ${Se(n.window.resets_at)}`:``,`seen ${Se(n.window.seen_at)}`].filter(Boolean).join(` - `));var s=mt();let l;var u=v(s),d=v(u),f=c(d,!0),m=z(d,2),h=c(m);M(u);var _=z(u,2),y=c(_),b=z(_,2),C=v(b),w=t=>{var r=e();U(e=>g(r,`window has turned over, last read ${e??``}`),[()=>Se(n.window.seen_at)]),i(t,r)},T=t=>{var r=e();U(e=>g(r,`resets ${e??``}`),[()=>Se(n.window.resets_at)]),i(t,r)};H(C,e=>{p(r)?e(w):n.window.resets_at&&e(T,1)}),M(b),M(s),S(s,(e,t)=>G?.(e,t),()=>p(o)),U((e,t,i)=>{l=k(s,1,`meter svelte-tlhxud`,null,l,{stale:p(r)}),g(f,n.window.label),A(m,`color: var(--${p(a)??``})`),g(h,`${e??``}%`),E(_,`aria-valuenow`,t),E(_,`aria-label`,n.window.label),A(y,`width: ${i??``}%; background: var(--${p(a)??``})`)},[()=>Math.round(n.window.used_percent),()=>Math.round(n.window.used_percent),()=>Math.min(100,n.window.used_percent)]),i(t,s),D()}var gt=[{id:`anthropic`,label:`Anthropic`,colour:`#d97757`},{id:`openai`,label:`OpenAI`,colour:`#10a37f`},{id:`google`,label:`Google`,colour:`#4285f4`},{id:`meta`,label:`Meta`,colour:`#0668e1`},{id:`mistral`,label:`Mistral`,colour:`#fa520f`},{id:`xai`,label:`xAI`,colour:`#7c7c8a`},{id:`deepseek`,label:`DeepSeek`,colour:`#4d6bfe`},{id:`qwen`,label:`Qwen`,colour:`#a855f7`},{id:`unknown`,label:`Other`,colour:`#8b93a7`}],_t=[[/^claude/,`anthropic`],[/^(gpt|codex|o[1-4]-|chatgpt|text-embedding)/,`openai`],[/^(gemini|gemma|palm)/,`google`],[/^(llama|code-?llama)/,`meta`],[/^(mistral|mixtral|codestral|magistral|devstral)/,`mistral`],[/^grok/,`xai`],[/^deepseek/,`deepseek`],[/^(qwen|qwq)/,`qwen`]];function vt(e){let t=e.includes(`/`)?e.slice(e.indexOf(`/`)+1):e,n=e.includes(`/`)?e.slice(0,e.indexOf(`/`)).toLowerCase():``;return gt.some(e=>e.id===n)?n:_t.find(([e])=>e.test(t.toLowerCase()))?.[1]??`unknown`}var yt=e=>gt.find(t=>t.id===e)??gt[gt.length-1],bt=[{id:`claude-code`,label:`Claude Code`,colour:`#d97757`,home:`https://claude.com/claude-code`},{id:`codex`,label:`Codex`,colour:`#10a37f`,home:`https://developers.openai.com/codex`},{id:`opencode`,label:`OpenCode`,colour:`#f5a524`,home:`https://opencode.ai`},{id:`gemini-cli`,label:`Gemini CLI`,colour:`#4285f4`,home:`https://github.com/google-gemini/gemini-cli`}],xt=e=>bt.find(t=>t.id===e)??{id:e,label:e,colour:`#8b93a7`,home:``},St=f(`<tr class="svelte-1uqtl83"><td class="svelte-1uqtl83"><span class="tool svelte-1uqtl83"><!> <span class="id mono svelte-1uqtl83"> </span></span></td><td class="svelte-1uqtl83"><button type="button" class="link svelte-1uqtl83"> </button></td><td class="models svelte-1uqtl83"> </td><td class="svelte-1uqtl83"> </td><td class="right num svelte-1uqtl83"> </td></tr>`),Ct=f(`<div class="scroll svelte-1uqtl83"><table class="svelte-1uqtl83"><thead><tr><th scope="col" class="svelte-1uqtl83">Session</th><th scope="col" class="svelte-1uqtl83">Project</th><th scope="col" class="svelte-1uqtl83">Models</th><th scope="col" class="svelte-1uqtl83">Ran</th><th scope="col" class="right svelte-1uqtl83"> </th></tr></thead><tbody class="svelte-1uqtl83"></tbody></table></div>`),wt=f(`<p class="empty svelte-1uqtl83">No sessions in this range</p>`);function Tt(e,t){B(t,!0);var n=r(),o=a(n),s=e=>{var n=Ct(),r=v(n),a=v(r),o=v(a),s=z(v(o),4),l=c(s,!0);M(o),M(a);var d=z(a);h(d,21,()=>t.rows,e=>e.id,(e,n)=>{let r=x(()=>xt(p(n).tool));var a=St(),o=v(a),s=v(o),l=v(s);Je(l,{get id(){return p(n).tool},get label(){return p(r).label},get colour(){return p(r).colour},size:14});var d=z(l,2),f=c(d,!0);S(d,(e,t)=>G?.(e,t),()=>p(n).id),M(s),M(o);var m=z(o),h=v(m),_=c(h,!0);S(h,(e,t)=>G?.(e,t),()=>p(n).project||`unknown`),M(m);var y=z(m),b=c(y,!0),C=z(y),w=c(C,!0);S(C,(e,t)=>G?.(e,t),()=>`${Ce(p(n).started)} for ${we(p(n).ended-p(n).started)}`);var T=z(C),E=c(T,!0);M(a),U((e,t,n,r,i)=>{g(f,e),g(_,t),g(b,n),g(w,r),g(E,i)},[()=>p(n).id.slice(0,8),()=>Te(p(n).project),()=>p(n).models.split(`, `).map(Ee).join(`, `),()=>Ce(p(n).ended),()=>t.metric===`cost`?X(p(n).cost):J(p(n).total)]),u(`click`,h,()=>t.onpick?.(p(n).project)),i(e,a)}),M(d),M(r),M(n),U(()=>g(l,t.metric===`cost`?`Est. cost`:`Tokens`)),i(e,n)},l=e=>{var t=wt();i(e,t)};H(o,e=>{t.rows.length?e(s):e(l,-1)}),i(e,n),D()}N([`click`]);var Et=f(`<span class="hint svelte-1vaf4tg"> </span>`),Dt=f(`<li class="svelte-1vaf4tg"><div class="svelte-1vaf4tg"><b class="svelte-1vaf4tg"> </b> <span class="svelte-1vaf4tg"> </span> <!> <time class="svelte-1vaf4tg"> </time></div> <button type="button" class="close svelte-1vaf4tg" aria-label="Dismiss"><svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg></button></li>`),Ot=f(`<ul class="svelte-1vaf4tg"></ul>`),kt=f(`<aside aria-live="polite"><button type="button" class="head svelte-1vaf4tg"><svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><circle cx="8" cy="8" r="6.6" fill="none" stroke="currentColor" stroke-width="1.5"></circle><path d="M8 4.6v4.2" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path><circle cx="8" cy="11.4" r="0.9" fill="currentColor"></circle></svg> <span class="svelte-1vaf4tg"> </span> <em class="svelte-1vaf4tg"> </em></button> <!></aside>`);function At(e,t){B(t,!0);let n=y(s([])),o=y(!1),l=x(()=>t.problems.filter(e=>!p(n).includes(e.id))),d=x(()=>p(l).some(e=>e.level===`error`)?`error`:p(l).some(e=>e.level===`warn`)?`warn`:`info`);var f=r(),m=a(f),_=e=>{var t=kt(),r=v(t),a=z(v(r),2),s=c(a,!0),f=z(a,2),m=c(f,!0);M(r);var _=z(r,2),y=e=>{var t=Ot();h(t,21,()=>p(l),e=>e.id,(e,t)=>{var r=Dt(),a=v(r),o=v(a),s=c(o,!0),l=z(o,2),d=c(l,!0),f=z(l,2),m=e=>{var n=Et(),r=c(n,!0);U(()=>g(r,p(t).hint)),i(e,n)};H(f,e=>{p(t).hint&&e(m)});var h=z(f,2),_=c(h,!0);M(a);var y=z(a,2);M(r),U(e=>{g(s,p(t).scope),g(d,p(t).message),g(_,e)},[()=>Se(p(t).at)]),u(`click`,y,()=>b(n,[...p(n),p(t).id],!0)),i(e,r)}),M(t),i(e,t)};H(_,e=>{p(o)&&e(y)}),M(t),U(()=>{k(t,1,`problems ${p(d)??``}`,`svelte-1vaf4tg`),E(r,`aria-expanded`,p(o)),g(s,p(l).length===1?p(l)[0].message:`${p(l).length} things need a look`),g(m,p(o)?`Hide`:`Details`)}),u(`click`,r,()=>b(o,!p(o))),i(e,t)};H(m,e=>{p(l).length&&e(_)}),i(e,f),D()}N([`click`]);var jt=[{id:`today`,label:`Today`,days:1},{id:`7d`,label:`7 days`,days:7},{id:`30d`,label:`30 days`,days:30},{id:`90d`,label:`90 days`,days:90},{id:`1y`,label:`12 months`,days:365},{id:`all`,label:`All time`,days:0}],Mt=e=>jt.find(t=>t.id===e)?.label??`30 days`,Q=(e,t)=>({input:e,output:t,cacheRead:e*.1,cacheWrite:e*1.25}),$=(e,t)=>({input:e,output:t,cacheRead:e*.1,cacheWrite:0}),Nt={"claude-fable-5":Q(10,50),"claude-opus-5":Q(5,25),"claude-opus-4-8":Q(5,25),"claude-opus-4-7":Q(5,25),"claude-opus-4-6":Q(5,25),"claude-opus-4-5":Q(5,25),"claude-opus-4-1":Q(15,75),"claude-sonnet-5":Q(3,15),"claude-sonnet-4-6":Q(3,15),"claude-sonnet-4-5":Q(3,15),"claude-sonnet-4":Q(3,15),"claude-haiku-4-5":Q(1,5),"claude-3-5-haiku":Q(.8,4),"gpt-5.6-sol-pro":$(2.5,15),"gpt-5.6-sol":$(2.5,15),"gpt-5.6-terra":$(2,12),"gpt-5.6-luna":$(.2,1.2),"gpt-5":$(1.25,10),"gpt-5-mini":$(.25,2),"gpt-5-nano":$(.05,.4),"gpt-4.1":$(2,8),"gpt-4o":$(2.5,10),"gemini-3-pro":$(2,12),"gemini-2.5-pro":$(1.25,10),"gemini-2.5-flash":$(.3,2.5)},Pt=f(`<option> </option>`),Ft=f(`<li class="svelte-anx9w7"><div><b class="svelte-anx9w7"> </b> <code class="svelte-anx9w7"> </code></div> <span> </span></li>`),It=f(`<code class="svelte-anx9w7"> </code> `,1),Lt=f(`<li class="svelte-anx9w7"><code class="svelte-anx9w7"> </code> <span class="num"> </span> <button type="button" class="svelte-anx9w7">Remove</button></li>`),Rt=f(`<ul class="prices svelte-anx9w7"></ul>`),zt=f(`<dialog class="svelte-anx9w7"><header class="svelte-anx9w7"><h2 class="svelte-anx9w7">Settings</h2> <button type="button" class="close svelte-anx9w7" aria-label="Close settings"><svg viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg></button></header> <div class="body svelte-anx9w7"><section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Appearance</h3> <label class="field svelte-anx9w7"><span>Theme</span> <select class="svelte-anx9w7"><option>Match the system</option><option>Light</option><option>Dark</option></select></label> <label class="field svelte-anx9w7"><span>Range on open</span> <select class="svelte-anx9w7"></select></label> <label class="field svelte-anx9w7"><span>Headline measure</span> <select class="svelte-anx9w7"><option>Tokens</option><option>Estimated cost</option></select></label></section> <section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Data</h3> <ul class="sources svelte-anx9w7"></ul> <p class="note svelte-anx9w7">Point these somewhere else with <!>. History lives in <code class="svelte-anx9w7"> </code> and outlives the transcripts, which most tools prune.</p> <label class="field svelte-anx9w7"><span>Rescan every</span> <select class="svelte-anx9w7"><option>30 seconds</option><option>2 minutes</option><option>10 minutes</option><option>an hour</option></select></label> <label class="check svelte-anx9w7"><input type="checkbox" class="svelte-anx9w7"/> <span>Ask Anthropic for your 5-hour and 7-day windows <em class="svelte-anx9w7">Reads the Claude Code credentials on this machine. Nothing else leaves it.</em></span></label> <div class="row svelte-anx9w7"><button type="button" class="action svelte-anx9w7">Rescan now</button> <span class="note svelte-anx9w7"> </span></div></section> <section class="svelte-anx9w7"><h3 class="svelte-anx9w7">Prices</h3> <p class="note svelte-anx9w7"> </p> <!> <div class="add svelte-anx9w7"><input placeholder="model id" class="svelte-anx9w7"/> <input placeholder="in" inputmode="decimal" class="svelte-anx9w7"/> <input placeholder="out" inputmode="decimal" class="svelte-anx9w7"/> <button type="button" class="action svelte-anx9w7">Add</button></div></section></div></dialog>`);function Bt(e,n){B(n,!0);let r=j(n,`open`,15),o,s=y(``),l=y(``),f=y(``);t(()=>{r()&&!o.open&&o.showModal(),!r()&&o.open&&o.close()});let m=x(()=>Object.entries(n.saved.prices));function _(){let e=Number(p(l)),t=Number(p(f));p(s).trim()&&Number.isFinite(e)&&Number.isFinite(t)&&(n.onsave({prices:{...n.saved.prices,[p(s).trim()]:{input:e,output:t,cacheRead:e*.1,cacheWrite:e*1.25}}}),b(s,``),b(l,``),b(f,``))}function S(e){let t={...n.saved.prices};delete t[e],n.onsave({prices:t})}let T={"claude-code":`AIUSAGE_CLAUDE_DIR`,codex:`AIUSAGE_CODEX_DIR`,opencode:`AIUSAGE_OPENCODE_DIR`};var E=zt(),A=v(E),N=z(v(A),2);M(A);var P=z(A,2),F=v(P),L=z(v(F),2),V=z(v(L),2),re=v(V);re.value=re.__value=`auto`;var ie=z(re);ie.value=ie.__value=`light`;var ae=z(ie);ae.value=ae.__value=`dark`,M(V);var W;R(V),M(L);var oe=z(L,2),G=z(v(oe),2);h(G,21,()=>jt,e=>e.id,(e,t)=>{var n=Pt(),r=c(n,!0),a={};U(()=>{g(r,p(t).label),a!==(a=p(t).id)&&(n.value=(n.__value=a)??``)}),i(e,n)}),M(G);var se;R(G),M(oe);var ce=z(oe,2),K=z(v(ce),2),le=v(K);le.value=le.__value=`tokens`;var ue=z(le);ue.value=ue.__value=`cost`,M(K);var de;R(K),M(ce),M(F);var fe=z(F,2),pe=z(v(fe),2);h(pe,21,()=>n.sources,e=>e.id,(e,t)=>{var n=Ft(),r=v(n),a=v(r),o=c(a,!0),s=z(a,2),l=c(s,!0);M(r);var u=z(r,2);let d;var f=c(u,!0);M(n),U(()=>{g(o,p(t).label),g(l,p(t).root),d=k(u,1,`badge svelte-anx9w7`,null,d,{on:p(t).present}),g(f,p(t).present?`${p(t).files} files`:`not found`)}),i(e,n)}),M(pe);var me=z(pe,2),he=z(v(me));h(he,19,()=>n.sources,e=>e.id,(e,t,r)=>{var o=It(),s=a(o),l=c(s,!0),u=z(s,1,!0);U(()=>{g(l,T[p(t).id]??p(t).id),g(u,p(r)<n.sources.length-1?`, `:``)}),i(e,o)});var ge=z(he,2),_e=c(ge,!0);ee(),M(me);var ve=z(me,2),q=z(v(ve),2),J=v(q);J.value=J.__value=`30`;var Y=z(J);Y.value=Y.__value=`120`;var X=z(Y);X.value=X.__value=`600`;var ye=z(X);ye.value=ye.__value=`3600`,M(q);var be;R(q),M(ve);var xe=z(ve,2),Z=v(xe);ne(Z),ee(2),M(xe);var Ce=z(xe,2),we=v(Ce),Te=z(we,2),Ee=c(Te);M(Ce),M(fe);var De=z(fe,2),Oe=z(v(De),2),ke=c(Oe),Ae=z(Oe,2),je=e=>{var t=Rt();h(t,21,()=>p(m),([e,t])=>e,(e,t)=>{var n=x(()=>w(p(t),2));let r=()=>p(n)[0],a=()=>p(n)[1];var o=Lt(),s=v(o),l=c(s,!0),d=z(s,2),f=c(d),m=z(d,2);M(o),U(()=>{g(l,r()),g(f,`in ${a().input??``} / out ${a().output??``}`)}),u(`click`,m,()=>S(r())),i(e,o)}),M(t),i(e,t)};H(Ae,e=>{p(m).length&&e(je)});var Me=z(Ae,2),Ne=v(Me);ne(Ne);var Pe=z(Ne,2);ne(Pe);var Fe=z(Pe,2);ne(Fe);var Ie=z(Fe,2);M(Me),M(De),M(P),M(E),C(E,e=>o=e,()=>o),U((e,t,r)=>{W!==(W=n.saved.theme)&&(V.value=(V.__value=W)??``,I(V,W)),se!==(se=n.saved.range)&&(G.value=(G.__value=se)??``,I(G,se)),de!==(de=n.saved.metric)&&(K.value=(K.__value=de)??``,I(K,de)),g(_e,n.dbPath),be!==(be=e)&&(q.value=(q.__value=be)??``,I(q,be)),O(Z,n.saved.claudeWindows),g(Ee,`Last scan ${t??``}`),g(ke,`Dollars per million tokens. ${r??``} models are priced out of the box; anything
2
+ you add here wins, and an unknown model is reported rather than counted as free.`)},[()=>String(n.saved.scanIntervalSec),()=>Se(n.scannedAt),()=>Object.keys(Nt).length]),d(`close`,E,()=>r(!1)),u(`click`,N,()=>r(!1)),u(`change`,V,e=>n.onsave({theme:e.currentTarget.value})),u(`change`,G,e=>n.onsave({range:e.currentTarget.value})),u(`change`,K,e=>n.onsave({metric:e.currentTarget.value})),u(`change`,q,e=>n.onsave({scanIntervalSec:Number(e.currentTarget.value)})),u(`change`,Z,e=>n.onsave({claudeWindows:e.currentTarget.checked})),u(`click`,we,function(...e){n.onrescan?.apply(this,e)}),te(Ne,()=>p(s),e=>b(s,e)),te(Pe,()=>p(l),e=>b(l,e)),te(Fe,()=>p(f),e=>b(f,e)),u(`click`,Ie,_),i(e,E),D()}N([`click`,`change`]);var Vt=P(`<rect width="4" height="4" rx="1.2" fill="var(--accent-text)"></rect>`),Ht=P(`<svg class="logo svelte-nck4wt" viewBox="0 0 32 32" role="img" aria-label="AI usage dashboard"><rect width="32" height="32" rx="8" fill="var(--accent)"></rect><!></svg>`);function Ut(e,t){B(t,!0);let n=j(t,`size`,3,28),r=[0,1,2,3].flatMap(e=>[0,1,2,3].map(t=>({row:e,column:t,heat:(t+(3-e))/6})));var a=Ht(),o=z(v(a));h(o,17,()=>r,e=>`${e.row}-${e.column}`,(e,t)=>{var n=Vt();U(e=>{E(n,`x`,5+p(t).column*6),E(n,`y`,5+p(t).row*6),E(n,`opacity`,e)},[()=>(.22+p(t).heat*.78).toFixed(2)]),i(e,n)}),M(a),U(()=>{E(a,`width`,n()),E(a,`height`,n())}),i(e,a),D()}var Wt=f(`<button type="button" class="reset svelte-1uha8ag">Clear filters</button>`),Gt=f(`<div class="meters svelte-1uha8ag"></div>`),Kt=f(`<p class="empty svelte-1uha8ag">No plan windows yet. Sign in with Claude Code or run Codex once and they turn up here.</p>`),qt=f(`<li class="svelte-1uha8ag"><!> <span class="svelte-1uha8ag"> </span> <b class="num svelte-1uha8ag"> </b></li>`),Jt=f(`<div class="share svelte-1uha8ag"><!> <ul class="key svelte-1uha8ag"></ul></div>`),Yt=f(`<!> <p class="aside svelte-1uha8ag"> </p>`,1),Xt=f(`<header class="bar svelte-1uha8ag"><a class="brand svelte-1uha8ag" href="/"><!> <span>AI usage</span></a> <div class="filters svelte-1uha8ag"><!> <!> <!> <!> <!> <!></div> <div class="tools svelte-1uha8ag"><button type="button" aria-label="Rescan now"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true" class="svelte-1uha8ag"><path d="M13.4 7A5.5 5.5 0 1 0 12.6 11" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path><path d="M13.8 3.4v3.8h-3.8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></button> <button type="button" class="icon svelte-1uha8ag" aria-label="Settings"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><circle cx="8" cy="8" r="2.3" fill="none" stroke="currentColor" stroke-width="1.5"></circle><path d="M8 1.6v1.8M8 12.6v1.8M14.4 8h-1.8M3.4 8H1.6M12.5 3.5l-1.3 1.3M4.8 11.2l-1.3 1.3M12.5 12.5l-1.3-1.3M4.8 4.8 3.5 3.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg></button></div></header> <main class="svelte-1uha8ag"><!> <div class="grid svelte-1uha8ag"><!> <!> <!> <!> <!> <!> <!> <!> <!></div> <footer class="svelte-1uha8ag"><span>Reads the transcripts already on this machine. Nothing is sent anywhere.</span> <span><!> </span></footer></main> <!> <!>`,1);function Zt(n,d){B(d,!0);let f=l(()=>d.data),_=y(s(f.usage)),C=y(s(f.settings)),w=y(!1),T=y(!1),E=y(s(f.usage.filters.range)),O=y(s(f.usage.filters.tools)),A=y(s(f.usage.filters.models)),j=y(s(f.usage.filters.projects)),N=y(s(f.settings.metric)),P=y(`tool`),F=y(`share`),I=y(`measure`),L=x(()=>new URLSearchParams({range:p(E),tools:p(O).join(`,`),models:p(A).join(`,`),projects:p(j).join(`,`)}).toString()),R=l(()=>p(L));async function te(e){b(w,!0);try{let t=await fetch(`/api/usage?${e}`);t.ok&&b(_,await t.json(),!0)}finally{b(w,!1)}}t(()=>{p(L)!==R&&(R=p(L),ae(`?${p(L)}`,{}),te(p(L)))}),t(()=>{let e=setInterval(()=>void te(R),3e4);return()=>clearInterval(e)}),t(()=>{let e=p(C).theme;document.documentElement.dataset.theme=e===`auto`?``:e});async function ne(e){let t=await fetch(`/api/settings`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e)});t.ok&&b(C,await t.json(),!0)}async function re(){b(w,!0);try{let e=await fetch(`/api/refresh?${R}`,{method:`POST`});e.ok&&b(_,await e.json(),!0)}finally{b(w,!1)}}let ie=(e,t)=>e.includes(t)?e.filter(e=>e!==t):[...e,t],W=e=>p(N)===`cost`?e.cost??0:e.total,oe=e=>p(N)===`cost`?X(e):J(e),se=x(()=>new Set(p(_).series.filter(e=>e.total>0).map(e=>e.day)).size),ce=x(()=>p(_).byTool.map(e=>({id:e.key,label:xt(e.key).label,colour:xt(e.key).colour}))),le=x(()=>p(_).byModel.map(e=>({id:e.key,label:Ee(e.key),colour:yt(vt(e.key)).colour}))),ue=x(()=>p(P)===`tool`?p(ce):p(le)),fe=x(()=>p(_).byModel.map(e=>{let t=yt(vt(e.key));return{id:e.key,label:Ee(e.key),detail:t.label,value:W(e),display:oe(W(e)),colour:t.colour,mark:t.id,hint:`${e.key} - ${Y(e.total)} tokens over ${Y(e.events)} requests, ${X(e.cost)} estimated`}})),pe=x(()=>p(_).byProject.map(e=>({id:e.key,label:Te(e.key),detail:``,value:p(I)===`sessions`?e.sessions:W(e),display:p(I)===`sessions`?Y(e.sessions):oe(W(e)),colour:`var(--accent)`,hint:`${e.key||`unknown`} - ${Y(e.total)} tokens, ${Y(e.sessions)} sessions`}))),me=x(()=>p(_).sources.map(e=>{let t=p(_).byTool.find(t=>t.key===e.id),n=xt(e.id);return{id:e.id,label:n.label,detail:t?`${Y(t.sessions)} sessions`:`not found`,value:t?W(t):0,display:t?oe(W(t)):`--`,colour:n.colour,mark:e.id,hint:e.present?`${Y(e.files)} files under ${e.root}`:`Nothing at ${e.root}`}})),he=x(()=>[{id:`input`,label:`Input`,value:p(_).totals.tokens.input,display:J(p(_).totals.tokens.input),colour:`var(--ramp-4)`,hint:`Fresh prompt tokens, billed at full rate`},{id:`output`,label:`Output`,value:p(_).totals.tokens.output,display:J(p(_).totals.tokens.output),colour:`var(--ramp-2)`,hint:`Everything the model wrote back, ${J(p(_).totals.reasoning)} of it reasoning`},{id:`cache_read`,label:`Cache read`,value:p(_).totals.tokens.cache_read,display:J(p(_).totals.tokens.cache_read),colour:`var(--ramp-1)`,hint:`Context served from cache, usually a tenth of the input price`},{id:`cache_write`,label:`Cache write`,value:p(_).totals.tokens.cache_write,display:J(p(_).totals.tokens.cache_write),colour:`var(--ramp-3)`,hint:`Putting context into the cache, a premium on the input price`}]),ge=x(()=>p(_).totals.total?p(_).totals.tokens.cache_read/p(_).totals.total*100:0);var _e=Xt();V(`1uha8ag`,e=>{m(()=>{o.title=`AI usage dashboard`})});var q=a(_e),ye=v(q);Ut(v(ye),{}),ee(2),M(ye);var be=z(ye,2),xe=v(be);{let e=x(()=>jt.map(e=>({id:e.id,label:e.label})));de(xe,{get options(){return p(e)},label:`Date range`,size:`sm`,get value(){return p(E)},set value(e){b(E,e,!0)}})}var Z=z(xe,2);de(Z,{options:[{id:`tokens`,label:`Tokens`},{id:`cost`,label:`Est. cost`,hint:`At published API rates. Your subscription is billed separately.`}],label:`Measure`,size:`sm`,get value(){return p(N)},set value(e){b(N,e,!0)}});var Ce=z(Z,2);ve(Ce,{label:`Tools`,get options(){return p(_).options.tools},format:e=>xt(e).label,get selected(){return p(O)},set selected(e){b(O,e,!0)}});var we=z(Ce,2);ve(we,{label:`Models`,get options(){return p(_).options.models},get format(){return Ee},get selected(){return p(A)},set selected(e){b(A,e,!0)}});var De=z(we,2);ve(De,{label:`Projects`,get options(){return p(_).options.projects},get format(){return Te},get selected(){return p(j)},set selected(e){b(j,e,!0)}});var Oe=z(De,2),ke=e=>{var t=Wt();u(`click`,t,()=>{b(O,[],!0),b(A,[],!0),b(j,[],!0)}),i(e,t)};H(Oe,e=>{(p(O).length||p(A).length||p(j).length)&&e(ke)}),M(be);var Ae=z(be,2),Me=v(Ae);let Ne;S(Me,(e,t)=>G?.(e,t),()=>`Last scan ${Se(p(_).scannedAt)}`);var Pe=z(Me,2);S(Pe,(e,t)=>G?.(e,t),()=>`Settings`),M(Ae),M(q);var Fe=z(q,2),Ie=v(Fe);{let e=x(()=>Mt(p(_).filters.range));je(Ie,{get totals(){return p(_).totals},get previous(){return p(_).previous},get activeDays(){return p(se)},get rangeLabel(){return p(e)}})}var Re=z(Ie,2),ze=v(Re);K(ze,{title:`Every day so far`,span:8,hint:`One square per day, whatever range is picked above. Outlined days are before your records start.`,children:(e,t)=>{Le(e,{get days(){return p(_).calendar},get metric(){return p(N)},get oldest(){return p(_).oldest}})},$$slots:{default:!0}});var Be=z(ze,2);K(Be,{title:`Plan windows`,span:4,hint:`Straight from each account, not worked out from tokens`,children:(e,t)=>{var n=r(),o=a(n),s=e=>{var t=Gt();h(t,21,()=>p(_).windows,e=>e.id,(e,t)=>{ht(e,{get window(){return p(t)}})}),M(t),i(e,t)},c=e=>{var t=Kt();i(e,t)};H(o,e=>{p(_).windows.length?e(s):e(c,-1)}),i(e,n)},$$slots:{default:!0}});var Ve=z(Be,2);K(Ve,{title:`Day by day`,span:12,hint:`Stacked over the range you picked`,actions:e=>{de(e,{options:[{id:`tool`,label:`By tool`},{id:`model`,label:`By model`}],label:`Trend grouping`,size:`sm`,get value(){return p(P)},set value(e){b(P,e,!0)}})},children:(e,t)=>{{let t=x(()=>p(P)===`tool`?p(_).series:p(_).seriesByModel);He(e,{get series(){return p(t)},get keys(){return p(ue)},get metric(){return p(N)}})}},$$slots:{actions:!0,default:!0}});var Ue=z(Ve,2);K(Ue,{title:`Models`,span:5,hint:`Click one to filter the whole page by it`,actions:e=>{de(e,{options:[{id:`share`,label:`Share`},{id:`list`,label:`Ranked`}],label:`Model view`,size:`sm`,get value(){return p(F)},set value(e){b(F,e,!0)}})},children:(e,t)=>{var n=r(),o=a(n),s=e=>{var t=Jt(),n=v(t);{let e=x(()=>p(fe).map(e=>({id:e.id,label:e.label,value:e.value,colour:e.colour,display:e.display}))),t=x(()=>oe(W(p(_).totals))),r=x(()=>p(N)===`cost`?`estimated`:`tokens`);it(n,{get slices(){return p(e)},get centre(){return p(t)},get caption(){return p(r)}})}var r=z(n,2);h(r,21,()=>p(fe),e=>e.id,(e,t)=>{var n=qt(),r=v(n);Je(r,{get id(){return p(t).mark},get label(){return p(t).detail},get colour(){return p(t).colour},size:14});var a=z(r,2),o=c(a,!0),s=z(a,2),l=c(s,!0);M(n),U(()=>{g(o,p(t).label),g(l,p(t).display)}),i(e,n)}),M(r),M(t),i(e,t)},l=e=>{tt(e,{get rows(){return p(fe)},get active(){return p(A)},onpick:e=>b(A,ie(p(A),e),!0)})};H(o,e=>{p(F)===`share`?e(s):e(l,-1)}),i(e,n)},$$slots:{actions:!0,default:!0}});var We=z(Ue,2);K(We,{title:`Projects`,span:7,hint:`Where the work happened. Click one to filter.`,actions:e=>{{let t=x(()=>[{id:`measure`,label:p(N)===`cost`?`Est. cost`:`Tokens`},{id:`sessions`,label:`Sessions`}]);de(e,{get options(){return p(t)},label:`Project measure`,size:`sm`,get value(){return p(I)},set value(e){b(I,e,!0)}})}},children:(e,t)=>{{let t=x(()=>p(pe).slice(0,8));tt(e,{get rows(){return p(t)},get active(){return p(j)},onpick:e=>b(j,ie(p(j),e),!0)})}},$$slots:{actions:!0,default:!0}});var Ge=z(We,2);K(Ge,{title:`Where the tokens go`,span:4,hint:`Cache reads are cheap, cache writes are not. This is the split that decides the bill.`,children:(e,t)=>{var n=Yt(),r=a(n);ct(r,{get parts(){return p(he)}});var o=z(r,2),s=c(o);U(e=>g(s,`${e??``}% of everything counted was served from cache.`),[()=>p(ge).toFixed(0)]),i(e,n)},$$slots:{default:!0}});var Ke=z(Ge,2);K(Ke,{title:`When you work`,span:5,hint:`Local time, over the range above`,children:(e,t)=>{pt(e,{get points(){return p(_).clock}})},$$slots:{default:!0}});var qe=z(Ke,2);K(qe,{title:`Tools`,span:3,hint:`Click one to filter the whole page by it`,children:(e,t)=>{tt(e,{get rows(){return p(me)},get active(){return p(O)},onpick:e=>b(O,ie(p(O),e),!0)})},$$slots:{default:!0}}),K(z(qe,2),{title:`Recent sessions`,span:12,children:(e,t)=>{Tt(e,{get rows(){return p(_).sessions},get metric(){return p(N)},onpick:e=>b(j,ie(p(j),e),!0)})},$$slots:{default:!0}}),M(Re);var Ye=z(Re,2),Xe=z(v(Ye),2),Ze=v(Xe),Qe=t=>{var n=e();U(e=>g(n,`Records from ${e??``} ·`),[()=>new Date(p(_).oldest).toLocaleDateString(`en-GB`)]),i(t,n)};H(Ze,e=>{p(_).oldest&&e(Qe)});var $e=z(Ze);M(Xe),M(Ye),M(Fe);var et=z(Fe,2);At(et,{get problems(){return p(_).problems}}),Bt(z(et,2),{get saved(){return p(C)},get sources(){return p(_).sources},get dbPath(){return d.data.paths.db},get scannedAt(){return p(_).scannedAt},onsave:ne,onrescan:re,get open(){return p(T)},set open(e){b(T,e,!0)}}),U(e=>{Ne=k(Me,1,`icon svelte-1uha8ag`,null,Ne,{busy:p(w)}),g($e,` Scanned ${e??``}`)},[()=>Se(p(_).scannedAt)]),u(`click`,Me,re),u(`click`,Pe,()=>b(T,!0)),i(n,_e),D()}N([`click`]);export{Zt as component};
@@ -0,0 +1 @@
1
+ {"version":"1789319316920"}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><rect width="32" height="32" rx="8" fill="#5250d4"/><rect x="5" y="5" width="4" height="4" rx="1.2" fill="#fff" opacity="0.61"/><rect x="11" y="5" width="4" height="4" rx="1.2" fill="#fff" opacity="0.74"/><rect x="17" y="5" width="4" height="4" rx="1.2" fill="#fff" opacity="0.87"/><rect x="23" y="5" width="4" height="4" rx="1.2" fill="#fff" opacity="1.00"/><rect x="5" y="11" width="4" height="4" rx="1.2" fill="#fff" opacity="0.48"/><rect x="11" y="11" width="4" height="4" rx="1.2" fill="#fff" opacity="0.61"/><rect x="17" y="11" width="4" height="4" rx="1.2" fill="#fff" opacity="0.74"/><rect x="23" y="11" width="4" height="4" rx="1.2" fill="#fff" opacity="0.87"/><rect x="5" y="17" width="4" height="4" rx="1.2" fill="#fff" opacity="0.35"/><rect x="11" y="17" width="4" height="4" rx="1.2" fill="#fff" opacity="0.48"/><rect x="17" y="17" width="4" height="4" rx="1.2" fill="#fff" opacity="0.61"/><rect x="23" y="17" width="4" height="4" rx="1.2" fill="#fff" opacity="0.74"/><rect x="5" y="23" width="4" height="4" rx="1.2" fill="#fff" opacity="0.22"/><rect x="11" y="23" width="4" height="4" rx="1.2" fill="#fff" opacity="0.35"/><rect x="17" y="23" width="4" height="4" rx="1.2" fill="#fff" opacity="0.48"/><rect x="23" y="23" width="4" height="4" rx="1.2" fill="#fff" opacity="0.61"/></svg>
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+ User-agent: *
2
+ Disallow: /
@@ -0,0 +1,3 @@
1
+ � �User-agent: *
2
+ Disallow: /
3
+ 
Binary file
package/build/env.js ADDED
@@ -0,0 +1,70 @@
1
+ import path from 'node:path';
2
+ import process from 'node:process';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ // since env.js is an entrypoint, `dir` will point to the output directory
6
+ const dir = path.dirname(fileURLToPath(import.meta.url));
7
+
8
+ const expected_unprefixed = new Set(['LISTEN_PID', 'LISTEN_FDS']);
9
+
10
+ const env_prefix = "";
11
+
12
+ /**
13
+ * @param {string} name
14
+ * @param {any} [fallback]
15
+ */
16
+ function env(name, fallback) {
17
+ const prefix = expected_unprefixed.has(name) ? '' : env_prefix;
18
+ const prefixed = prefix + name;
19
+ return prefixed in process.env ? process.env[prefixed] : fallback;
20
+ }
21
+
22
+ const integer_regexp = /^\d+$/;
23
+
24
+ /**
25
+ * Throw a consistently-structured parsing error for environment variables.
26
+ * @param {string} name
27
+ * @param {any} value
28
+ * @param {string} description
29
+ * @returns {never}
30
+ */
31
+ function parsing_error(name, value, description) {
32
+ throw new Error(
33
+ `Invalid value for environment variable ${name}: ${JSON.stringify(value)} (${description})`
34
+ );
35
+ }
36
+
37
+ /**
38
+ * Check the environment for a timeout value (non-negative integer) in seconds.
39
+ * @param {string} name
40
+ * @param {number} [fallback]
41
+ * @returns {number | undefined}
42
+ */
43
+ function timeout_env(name, fallback) {
44
+ const raw = env(name, fallback);
45
+ if (!raw) {
46
+ return fallback;
47
+ }
48
+
49
+ if (!integer_regexp.test(raw)) {
50
+ parsing_error(name, raw, 'should be a non-negative integer');
51
+ }
52
+
53
+ const parsed = Number.parseInt(raw, 10);
54
+
55
+ // We don't technically need to check `Number.isNaN` because the value already passed the regexp test.
56
+ // However, just in case there's some new codepath introduced somewhere down the line, it's probably good
57
+ // to stick this in here.
58
+ if (Number.isNaN(parsed)) {
59
+ parsing_error(name, raw, 'should be a non-negative integer');
60
+ }
61
+
62
+ if (parsed < 0) {
63
+ parsing_error(name, raw, 'should be a non-negative integer');
64
+ }
65
+
66
+ return parsed;
67
+ }
68
+
69
+ export { dir, env, env_prefix, timeout_env };
70
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1,22 @@
1
+ import './shims.js';
2
+ import 'node:fs';
3
+ import 'node:path';
4
+ import 'node:process';
5
+ export { h as handler } from './server/chunks/handler-br42Ds2q.js';
6
+ import './server/chunks/index.js-CBAFVV7O.js';
7
+ import './server/chunks/manifest.js-s70ajt69.js';
8
+ import './env.js';
9
+ import 'node:buffer';
10
+ import 'node:crypto';
11
+ import 'node:http';
12
+ import 'node:timers';
13
+ import 'node:querystring';
14
+ import 'node:stream';
15
+ import './server/chunks/chunks/shared.js-7DyfRqo3.js';
16
+ import './server/chunks/chunks/server.js-mTMwhapa.js';
17
+ import './server/chunks/chunks/utils.js-DzwqnkBT.js';
18
+ import 'node:url';
19
+ import './server/chunks/chunks/internal.js-b-1wrnfA.js';
20
+ import './server/chunks/chunks/internal2.js-BlXt2rfE.js';
21
+ import './server/chunks/chunks/exports.js-Dd48p7Ih.js';
22
+ //# sourceMappingURL=handler.js.map
package/build/index.js ADDED
@@ -0,0 +1,145 @@
1
+ import http from 'node:http';
2
+ import fs__default from 'node:fs';
3
+ import process from 'node:process';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-br42Ds2q.js';
5
+ import { env, timeout_env } from './env.js';
6
+ import { rm } from 'node:fs/promises';
7
+ import './shims.js';
8
+ import 'node:buffer';
9
+ import 'node:crypto';
10
+ import 'node:path';
11
+ import 'node:timers';
12
+ import 'node:querystring';
13
+ import 'node:stream';
14
+ import './server/chunks/chunks/shared.js-7DyfRqo3.js';
15
+ import './server/chunks/chunks/server.js-mTMwhapa.js';
16
+ import './server/chunks/chunks/utils.js-DzwqnkBT.js';
17
+ import './server/chunks/index.js-CBAFVV7O.js';
18
+ import './server/chunks/chunks/internal.js-b-1wrnfA.js';
19
+ import './server/chunks/chunks/internal2.js-BlXt2rfE.js';
20
+ import './server/chunks/chunks/exports.js-Dd48p7Ih.js';
21
+ import './server/chunks/manifest.js-s70ajt69.js';
22
+ import 'node:url';
23
+
24
+ const path = env('SOCKET_PATH', false);
25
+ const host = env('HOST', '0.0.0.0');
26
+ const port = env('PORT', !path && '3000');
27
+
28
+ const shutdown_timeout = parseInt(env('SHUTDOWN_TIMEOUT', '30'));
29
+ const idle_timeout = parseInt(env('IDLE_TIMEOUT', '0'));
30
+ const listen_pid = parseInt(env('LISTEN_PID', '0'));
31
+ const listen_fds = parseInt(env('LISTEN_FDS', '0'));
32
+ // https://www.freedesktop.org/software/systemd/man/latest/sd_listen_fds.html
33
+ const SD_LISTEN_FDS_START = 3;
34
+
35
+ if (listen_pid !== 0 && listen_pid !== process.pid) {
36
+ throw new Error(`received LISTEN_PID ${listen_pid} but current process id is ${process.pid}`);
37
+ }
38
+ if (listen_fds > 1) {
39
+ throw new Error(
40
+ `only one socket is allowed for socket activation, but LISTEN_FDS was set to ${listen_fds}`
41
+ );
42
+ }
43
+
44
+ const socket_activation = listen_pid === process.pid && listen_fds === 1;
45
+
46
+ let requests = 0;
47
+ /** @type {NodeJS.Timeout | void} */
48
+ let shutdown_timeout_id;
49
+ /** @type {NodeJS.Timeout | void} */
50
+ let idle_timeout_id;
51
+
52
+ // Initialize the HTTP server here so that we can set properties before starting to listen.
53
+ // Otherwise, polka delays creating the server until listen() is called. Settings these
54
+ // properties after the server has started listening could lead to race conditions.
55
+ const httpServer = http.createServer();
56
+
57
+ const keep_alive_timeout = timeout_env('KEEP_ALIVE_TIMEOUT');
58
+ if (keep_alive_timeout !== undefined) {
59
+ // Convert the keep-alive timeout from seconds to milliseconds (the unit Node.js expects).
60
+ httpServer.keepAliveTimeout = keep_alive_timeout * 1000;
61
+ }
62
+
63
+ const headers_timeout = timeout_env('HEADERS_TIMEOUT');
64
+ if (headers_timeout !== undefined) {
65
+ // Convert the headers timeout from seconds to milliseconds (the unit Node.js expects).
66
+ httpServer.headersTimeout = headers_timeout * 1000;
67
+ }
68
+
69
+ const server = polka({ server: httpServer }).use(handler);
70
+
71
+ if (socket_activation) {
72
+ server.listen({ fd: SD_LISTEN_FDS_START }, () => {
73
+ console.log(`Listening on file descriptor ${SD_LISTEN_FDS_START}`);
74
+ });
75
+ } else {
76
+ if (path) {
77
+ try {
78
+ if (fs__default.statSync(path).size === 0) {
79
+ await rm(path);
80
+ }
81
+ } catch {
82
+ // ignore
83
+ }
84
+ }
85
+
86
+ server.listen({ path, host, port }, () => {
87
+ console.log(`Listening on ${format_listening_address(path, host, port, httpServer.address())}`);
88
+ });
89
+ }
90
+
91
+ /** @param {'SIGINT' | 'SIGTERM' | 'IDLE'} reason */
92
+ function graceful_shutdown(reason) {
93
+ if (shutdown_timeout_id) return;
94
+
95
+ // If a connection was opened with a keep-alive header close() will wait for the connection to
96
+ // time out rather than close it even if it is not handling any requests, so call this first
97
+ httpServer.closeIdleConnections();
98
+
99
+ httpServer.close((error) => {
100
+ // occurs if the server is already closed
101
+ if (error) return;
102
+
103
+ if (shutdown_timeout_id) {
104
+ clearTimeout(shutdown_timeout_id);
105
+ }
106
+ if (idle_timeout_id) {
107
+ clearTimeout(idle_timeout_id);
108
+ }
109
+
110
+ // @ts-expect-error custom events cannot be typed
111
+ process.emit('sveltekit:shutdown', reason);
112
+ });
113
+
114
+ shutdown_timeout_id = setTimeout(() => httpServer.closeAllConnections(), shutdown_timeout * 1000);
115
+ }
116
+
117
+ httpServer.on(
118
+ 'request',
119
+ /** @param {import('node:http').IncomingMessage} req */
120
+ (req) => {
121
+ requests++;
122
+
123
+ if (socket_activation && idle_timeout_id) {
124
+ idle_timeout_id = clearTimeout(idle_timeout_id);
125
+ }
126
+
127
+ req.on('close', () => {
128
+ requests--;
129
+
130
+ if (shutdown_timeout_id) {
131
+ // close connections as soon as they become idle, so they don't accept new requests
132
+ httpServer.closeIdleConnections();
133
+ }
134
+ if (requests === 0 && socket_activation && idle_timeout) {
135
+ idle_timeout_id = setTimeout(() => graceful_shutdown('IDLE'), idle_timeout * 1000);
136
+ }
137
+ });
138
+ }
139
+ );
140
+
141
+ process.on('SIGTERM', graceful_shutdown);
142
+ process.on('SIGINT', graceful_shutdown);
143
+
144
+ export { host, path, port, server };
145
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,28 @@
1
+ import { i as index_server_exports } from './internal.js-b-1wrnfA.js';
2
+ import './shared.js-7DyfRqo3.js';
3
+ import './exports.js-Dd48p7Ih.js';
4
+ import { a1 as noop } from './server.js-mTMwhapa.js';
5
+ import './utils.js-DzwqnkBT.js';
6
+
7
+ var is_legacy = noop.toString().includes("$$") || /function \w+\(\) \{\}/.test(noop.toString());
8
+ var placeholder_url = "a:";
9
+ if (is_legacy) {
10
+ ({
11
+ data: {},
12
+ form: null,
13
+ error: null,
14
+ params: {},
15
+ route: { id: null },
16
+ state: {},
17
+ status: -1,
18
+ url: new URL(placeholder_url)
19
+ });
20
+ }
21
+ //#endregion
22
+ //#region node_modules/@sveltejs/kit/src/runtime/client/client.js
23
+ /** @import { RemoteFunctionDataNode, ServerNodesResponse, ServerRedirectNode } from 'types' */
24
+ /** @import { CacheEntry } from './remote-functions/cache.svelte.js' */
25
+ /** @import { Query } from './remote-functions/query/instance.svelte.js' */
26
+ /** @import { LiveQuery } from './remote-functions/query-live/instance.svelte.js' */
27
+ var { onMount, tick } = index_server_exports;
28
+ //# sourceMappingURL=client.js-C1_n_a2s.js.map
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=env.js-l0sNRNKZ.js.map