@jamesmddoyle/phantom 0.2.0 → 0.2.4

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 (77) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -3
  3. package/dist/cli.js +0 -1
  4. package/dist/config.js +24 -18
  5. package/dist/dashboard-ui/_app/immutable/assets/0.FNtPPDe9.css +1 -0
  6. package/dist/dashboard-ui/_app/immutable/assets/2.BjJLdTkN.css +1 -0
  7. package/dist/dashboard-ui/_app/immutable/assets/transition.DFBo9_nW.css +1 -0
  8. package/dist/dashboard-ui/_app/immutable/chunks/B1pWchDh.js +1 -0
  9. package/dist/dashboard-ui/_app/immutable/chunks/B88eyH1f.js +3 -0
  10. package/dist/dashboard-ui/_app/immutable/chunks/Bjy-W4x2.js +81 -0
  11. package/dist/dashboard-ui/_app/immutable/chunks/C36Lt_W_.js +2 -0
  12. package/dist/dashboard-ui/_app/immutable/chunks/CRzLMJPS.js +1 -0
  13. package/dist/dashboard-ui/_app/immutable/chunks/DQqs5H8T.js +3 -0
  14. package/dist/dashboard-ui/_app/immutable/entry/app.xWq8izru.js +2 -0
  15. package/dist/dashboard-ui/_app/immutable/entry/payload.DSmR2FwN.js +1 -0
  16. package/dist/dashboard-ui/_app/immutable/entry/start.DRnrjJWJ.js +2 -0
  17. package/dist/dashboard-ui/_app/immutable/nodes/0.CdDx3raB.js +1 -0
  18. package/dist/dashboard-ui/_app/immutable/nodes/1.BxSHdZhx.js +1 -0
  19. package/dist/dashboard-ui/_app/immutable/nodes/2.CT3-HJct.js +1 -0
  20. package/dist/dashboard-ui/_app/version.json +1 -1
  21. package/dist/dashboard-ui/index.html +17 -16
  22. package/dist/index.js +22 -13
  23. package/dist/logger.js +0 -1
  24. package/dist/package.json +11 -7
  25. package/dist/parser.js +0 -1
  26. package/dist/responder.js +0 -1
  27. package/dist/router.js +0 -1
  28. package/dist/static.js +0 -1
  29. package/dist/utils.js +0 -1
  30. package/dist/ws.js +0 -1
  31. package/package.json +11 -7
  32. package/dist/cli.d.ts +0 -10
  33. package/dist/cli.d.ts.map +0 -1
  34. package/dist/cli.js.map +0 -1
  35. package/dist/config.d.ts +0 -16
  36. package/dist/config.d.ts.map +0 -1
  37. package/dist/config.js.map +0 -1
  38. package/dist/dashboard-ui/_app/env.js +0 -1
  39. package/dist/dashboard-ui/_app/immutable/assets/0.qdgu5uXf.css +0 -1
  40. package/dist/dashboard-ui/_app/immutable/assets/2.NbOPcGNK.css +0 -1
  41. package/dist/dashboard-ui/_app/immutable/assets/index.BkcWggqo.css +0 -1
  42. package/dist/dashboard-ui/_app/immutable/chunks/BWM6cuy1.js +0 -1
  43. package/dist/dashboard-ui/_app/immutable/chunks/Bj1t19nj.js +0 -1
  44. package/dist/dashboard-ui/_app/immutable/chunks/CG6hkJ2r.js +0 -4
  45. package/dist/dashboard-ui/_app/immutable/chunks/DHt6uv_5.js +0 -1
  46. package/dist/dashboard-ui/_app/immutable/chunks/DUglripS.js +0 -2
  47. package/dist/dashboard-ui/_app/immutable/chunks/Dmv-rCLU.js +0 -1
  48. package/dist/dashboard-ui/_app/immutable/chunks/Mkbhf_NF.js +0 -1
  49. package/dist/dashboard-ui/_app/immutable/entry/app.Cr8OU7Ai.js +0 -2
  50. package/dist/dashboard-ui/_app/immutable/entry/start.DvmAD5k5.js +0 -1
  51. package/dist/dashboard-ui/_app/immutable/nodes/0.CnuSotPZ.js +0 -1
  52. package/dist/dashboard-ui/_app/immutable/nodes/1.CbFKAVFr.js +0 -1
  53. package/dist/dashboard-ui/_app/immutable/nodes/2.wYRnMaww.js +0 -1
  54. package/dist/index.d.ts +0 -5
  55. package/dist/index.d.ts.map +0 -1
  56. package/dist/index.js.map +0 -1
  57. package/dist/logger.d.ts +0 -36
  58. package/dist/logger.d.ts.map +0 -1
  59. package/dist/logger.js.map +0 -1
  60. package/dist/parser.d.ts +0 -45
  61. package/dist/parser.d.ts.map +0 -1
  62. package/dist/parser.js.map +0 -1
  63. package/dist/responder.d.ts +0 -14
  64. package/dist/responder.d.ts.map +0 -1
  65. package/dist/responder.js.map +0 -1
  66. package/dist/router.d.ts +0 -13
  67. package/dist/router.d.ts.map +0 -1
  68. package/dist/router.js.map +0 -1
  69. package/dist/static.d.ts +0 -7
  70. package/dist/static.d.ts.map +0 -1
  71. package/dist/static.js.map +0 -1
  72. package/dist/utils.d.ts +0 -23
  73. package/dist/utils.d.ts.map +0 -1
  74. package/dist/utils.js.map +0 -1
  75. package/dist/ws.d.ts +0 -16
  76. package/dist/ws.d.ts.map +0 -1
  77. package/dist/ws.js.map +0 -1
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,D as n,F as r,G as i,K as a,L as o,N as s,P as c,S as l,V as u,W as d,X as f,Y as p,Z as m,a as h,b as g,c as _,et as v,f as y,h as b,i as x,j as S,k as C,n as w,nt as T,o as E,p as D,q as O,r as k,rt as A,st as j,t as M,tt as N,u as P,v as F,w as I}from"../chunks/DQqs5H8T.js";import{c as L,d as R,i as z,l as B,n as V,o as H,r as U,s as W,t as G,u as K}from"../chunks/B88eyH1f.js";var q={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}],[`path`,{d:`m7 10 5 5 5-5`}]]};q.node;var J=new Set([`$$slots`,`$$events`,`$$legacy`]);function ee(e,t){let n=w(t,J);R(e,k(()=>n,{get icon(){return q}}))}var Y={name:`maximize-2`,size:24,node:[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`m21 3-7 7`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M9 21H3v-6`}]]};Y.node;var te=new Set([`$$slots`,`$$events`,`$$legacy`]);function ne(e,t){let n=w(t,te);R(e,k(()=>n,{get icon(){return Y}}))}var X={name:`minimize-2`,size:24,node:[[`path`,{d:`m14 10 7-7`}],[`path`,{d:`M20 10h-6V4`}],[`path`,{d:`m3 21 7-7`}],[`path`,{d:`M4 14h6v6`}]]};X.node;var re=new Set([`$$slots`,`$$events`,`$$legacy`]);function ie(e,t){let n=w(t,re);R(e,k(()=>n,{get icon(){return X}}))}var Z={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],aliases:[`trash-2`]};Z.node;var ae=new Set([`$$slots`,`$$events`,`$$legacy`]);function oe(e,t){let n=w(t,ae);R(e,k(()=>n,{get icon(){return Z}}))}var se=S(`<div class="status-indicator svelte-18q28wq"><span></span> <p class="status-text svelte-18q28wq"> </p></div>`);function ce(e,t){let r=M(t,`online`,3,!1);var i=se(),o=d(i);let s;var c=O(o,2),l=a(c,!0);A(i),u(()=>{s=b(o,1,`dot svelte-18q28wq`,null,s,{online:r()}),n(l,r()?`Dashboard active`:`Connecting to server...`)}),C(e,i)}var le=S(`<span class="header-key svelte-35qjzc"> </span> <span class="header-val svelte-35qjzc"> </span>`,1),ue=S(`<h5 class="sub-label svelte-35qjzc">Body</h5> <pre class="body-content svelte-35qjzc"><code> </code></pre>`,1),de=S(`<div class="details svelte-35qjzc"><div class="exchange-grid svelte-35qjzc"><div class="detail-section svelte-35qjzc"><h4 class="detail-label svelte-35qjzc">Request</h4> <div class="section-content svelte-35qjzc"><h5 class="sub-label svelte-35qjzc">Headers</h5> <div class="headers-grid svelte-35qjzc"></div> <!></div></div> <div class="detail-section svelte-35qjzc"><h4 class="detail-label svelte-35qjzc">Response</h4> <div class="section-content svelte-35qjzc"><div class="status-summary svelte-35qjzc"><!> <span class="duration svelte-35qjzc"> </span></div> <h5 class="sub-label svelte-35qjzc">Body</h5> <pre class="body-content svelte-35qjzc"><code> </code></pre></div></div></div></div>`);function fe(t,r){v(r,!0);let s=e=>e>=500?`error`:e>=400?`warn`:`success`;var c=de(),f=d(c),p=d(f),h=O(d(p),2),_=O(d(h),2);g(_,21,()=>Object.entries(r.log.headers??{}),([e,t])=>e,(e,t)=>{var r=m(()=>j(o(t),2));let s=()=>o(r)[0],c=()=>o(r)[1];var l=le(),d=i(l),f=a(d),p=O(d,2),h=a(p,!0);u(()=>{n(f,`${s()??``}:`),n(h,c())}),C(e,l)}),A(_);var y=O(_,2),b=e=>{var t=ue(),o=O(i(t),2),s=d(o),c=a(s,!0);A(o),u(()=>n(c,r.log.body)),C(e,t)};l(y,e=>{r.log.body&&e(b)}),A(h),A(p);var x=O(p,2),S=O(d(x),2),w=d(S),T=d(w);{let e=m(()=>s(r.log.status));B(T,{get type(){return o(e)},get label(){return r.log.status}})}var E=O(T,2),D=a(E);A(w);var k=O(w,4),M=d(k),N=a(M,!0);A(k),A(S),A(x),A(f),A(c),u(e=>{n(D,`${r.log.duration??``}ms`),n(N,e)},[()=>JSON.stringify(r.log.responseBody,null,2)]),F(3,c,()=>V,()=>({duration:200})),C(t,c),e()}var pe=S(`<span> </span>`),me=S(`<div role="button" tabindex="0"><div class="summary-line svelte-1qnyn9m"><span><!></span> <!> <span class="path svelte-1qnyn9m"> </span> <button type="button" class="copy-button svelte-1qnyn9m">Copy</button> <!> <!> <span class="timestamp svelte-1qnyn9m"> </span></div> <!></div>`);function he(t,i){v(i,!0);let s=()=>h(W,`$isGlobalExpanded`,c),[c,f]=x(),g=m(s),_=e=>new Date(e).toTimeString().split(` `)[0],y=e=>e>=500?`error`:e>=400?`warn`:`success`;var S=me();let w;var T=d(S),E=d(T);let D;var k=d(E);K(k,{size:14,strokeWidth:3}),A(E);var j=O(E,2);B(j,{get type(){return i.log.method},get label(){return i.log.method}});var M=O(j,2),N=a(M,!0),P=O(M,2),I=O(P,2),L=e=>{var t=pe();let r;var o=a(t);u(()=>{r=b(t,1,`duration svelte-1qnyn9m`,null,r,{slow:i.log.duration>500}),n(o,`${i.log.duration??``}ms`)}),C(e,t)};l(I,e=>{i.log.duration!==void 0&&e(L)});var R=O(I,2);{let e=m(()=>y(i.log.status));B(R,{get type(){return o(e)},get label(){return i.log.status}})}var z=O(R,2),V=a(z,!0);A(T);var H=O(T,2),U=e=>{fe(e,{get log(){return i.log}})};l(H,e=>{o(g)&&e(U)}),A(S),u(e=>{w=b(S,1,`log-entry svelte-1qnyn9m`,null,w,{expanded:o(g)}),D=b(E,1,`chevron svelte-1qnyn9m`,null,D,{rotated:o(g)}),n(N,i.log.path),n(V,e)},[()=>_(i.log.timestamp)]),r(`click`,S,()=>p(g,!o(g))),r(`keydown`,S,e=>e.key===`Enter`&&p(g,!o(g))),r(`click`,P,e=>{e.stopPropagation(),i.onCopy(i.log.path)}),F(1,S,()=>G,()=>({y:-10,duration:200})),C(t,S),e(),f()}c([`click`,`keydown`]);var ge=S(`<button type="button" class="clear-search svelte-c2kcm7" title="Clear search">&times;</button>`),_e=S(`<div class="search-container svelte-c2kcm7"><input type="text" placeholder="Filter by path or method..." class="search-input svelte-c2kcm7"/> <!></div>`);function ve(t,n){v(n,!0);let i=M(n,`value`,15,``);var a=_e(),o=d(a);y(o);var s=O(o,2),c=e=>{var t=ge();r(`click`,t,()=>i(``)),C(e,t)};l(s,e=>{i()&&e(c)}),A(a),P(o,i),C(t,a),e()}c([`click`]),N();var ye=S(`<span class="button-icon svelte-1xko78n"><!></span>`),be=S(`<span class="button-label svelte-1xko78n"><!></span>`),xe=S(`<button type="button"><!> <!></button>`);function Q(e,t){let n=M(t,`variant`,3,`outline`),i=M(t,`active`,3,!1),a=M(t,`class`,3,``);var o=xe();let s;var c=d(o),f=e=>{var n=ye(),r=d(n);I(r,()=>t.icon),A(n),C(e,n)};l(c,e=>{t.icon&&e(f)});var p=O(c,2),m=e=>{var n=be(),r=d(n);I(r,()=>t.children),A(n),C(e,n)};l(p,e=>{t.children&&e(m)}),A(o),u(()=>{s=b(o,1,`button variant-${n()??``} ${a()??``}`,`svelte-1xko78n`,s,{active:i()}),D(o,`title`,t.title)}),r(`click`,o,function(...e){t.onclick?.apply(this,e)}),C(e,o)}c([`click`]);function Se(t,n){v(n,!1);function r(){let e=E(L);if(e.length===0)return;let t=JSON.stringify(e,null,2),n=new Blob([t],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`phantom-logs-${new Date().toISOString().replace(/[:.]/g,`-`).slice(0,19)}.json`,i.click(),URL.revokeObjectURL(r)}_(),Q(t,{onclick:r,title:`Export as JSON`,icon:e=>{ee(e,{size:14,strokeWidth:2.5})},children:(e,t)=>{T();var n=s(`Export Logs`);C(e,n)},$$slots:{icon:!0,default:!0}}),e()}var $=S(`<div class="header-controls svelte-1uha8ag"><!> <!> <!> <!></div>`),Ce=S(`<code class="svelte-1uha8ag">curl http://localhost:3001/health</code>`),we=S(`<div class="empty svelte-1uha8ag"><p class="svelte-1uha8ag"> </p> <!></div>`),Te=S(`<div class="log-feed svelte-1uha8ag"></div>`),Ee=S(`<div class="page-header svelte-1uha8ag"><div class="header-left svelte-1uha8ag"><h2 class="svelte-1uha8ag">Request Feed</h2> <!> <!></div></div> <!>`,1);function De(r,c){v(c,!0);let _=()=>h(L,`$requestLog`,E),y=()=>h(U,`$activeMethodFilter`,E),b=()=>h(z,`$activeStatusFilter`,E),S=()=>h(H,`$isConnected`,E),w=()=>h(W,`$isGlobalExpanded`,E),[E,D]=x(),k=f(``),j=m(()=>_().filter(e=>{let t=e.path.toLowerCase().includes(o(k).toLowerCase())||e.method.toLowerCase().includes(o(k).toLowerCase())||e.body&&e.body.toLowerCase().includes(o(k).toLowerCase())||e.responseBody&&JSON.stringify(e.responseBody).toLowerCase().includes(o(k).toLowerCase()),n=!y()||e.method===y(),r=!0;return b()===`2xx`&&(r=e.status>=200&&e.status<300),b()===`4xx`&&(r=e.status>=400&&e.status<500),b()===`5xx`&&(r=e.status>=500),t&&n&&r}));function M(){W.update(e=>!e)}async function N(){await fetch(`http://localhost:3001/_admin/clear`,{method:`POST`}),L.set([])}async function P(e){let t=`http://localhost:3001${e}`;await navigator.clipboard.writeText(t)}var F=Ee(),I=i(F),R=d(I),B=O(d(R),2);ce(B,{get online(){return S()}});var V=O(B,2),G=e=>{var r=$(),a=d(r);ve(a,{get value(){return o(k)},set value(e){p(k,e,!0)}});var c=O(a,2);Q(c,{onclick:M,get active(){return w()},icon:e=>{var n=t(),r=i(n),a=e=>{ie(e,{size:14,strokeWidth:2.5})},o=e=>{ne(e,{size:14,strokeWidth:2.5})};l(r,e=>{w()?e(a):e(o,-1)}),C(e,n)},children:(e,t)=>{T();var r=s();u(()=>n(r,w()?`Collapse All`:`Expand All`)),C(e,r)},$$slots:{icon:!0,default:!0}});var f=O(c,2);Se(f,{}),Q(O(f,2),{variant:`danger`,onclick:N,icon:e=>{oe(e,{size:14,strokeWidth:2.5})},children:(e,t)=>{T();var n=s(`Clear Logs`);C(e,n)},$$slots:{icon:!0,default:!0}}),A(r),C(e,r)};l(V,e=>{_().length>0&&e(G)}),A(R),A(I);var K=O(I,2),q=e=>{var t=we(),r=d(t),i=a(r,!0),s=O(r,2),c=e=>{var t=Ce();C(e,t)};l(s,e=>{o(k)||e(c)}),A(t),u(()=>n(i,o(k)?`No requests match your search.`:`No activity yet...`)),C(e,t)},J=e=>{var t=Te();g(t,21,()=>o(j),e=>e.id,(e,t)=>{he(e,{get log(){return o(t)},onCopy:P})}),A(t),C(e,t)};l(K,e=>{o(j).length===0?e(q):e(J,-1)}),C(r,F),e(),D()}export{De as component};
@@ -1 +1 @@
1
- {"version":"1772883122228"}
1
+ {"version":"1793227677261"}
@@ -4,34 +4,35 @@
4
4
  <meta charset="utf-8" />
5
5
  <link rel="icon" type="image/svg+xml" href="/_dashboard/phantom.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
7
- <link
8
- href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&display=swap"
9
- rel="stylesheet"
10
- />
11
- <link href="/_dashboard/_app/immutable/entry/start.DvmAD5k5.js" rel="modulepreload">
12
- <link href="/_dashboard/_app/immutable/chunks/Dmv-rCLU.js" rel="modulepreload">
13
- <link href="/_dashboard/_app/immutable/chunks/Bj1t19nj.js" rel="modulepreload">
14
- <link href="/_dashboard/_app/immutable/chunks/DHt6uv_5.js" rel="modulepreload">
15
- <link href="/_dashboard/_app/immutable/entry/app.Cr8OU7Ai.js" rel="modulepreload">
16
- <link href="/_dashboard/_app/immutable/chunks/DUglripS.js" rel="modulepreload">
17
- <link href="/_dashboard/_app/immutable/chunks/BWM6cuy1.js" rel="modulepreload">
7
+ <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&display=swap" rel="stylesheet" />
8
+ <link href="/_dashboard/_app/immutable/entry/start.DRnrjJWJ.js" rel="modulepreload">
9
+ <link href="/_dashboard/_app/immutable/entry/payload.DSmR2FwN.js" rel="modulepreload">
10
+ <link href="/_dashboard/_app/immutable/chunks/CRzLMJPS.js" rel="modulepreload">
11
+ <link href="/_dashboard/_app/immutable/chunks/C36Lt_W_.js" rel="modulepreload">
12
+ <link href="/_dashboard/_app/immutable/chunks/DQqs5H8T.js" rel="modulepreload">
13
+ <link href="/_dashboard/_app/immutable/chunks/B1pWchDh.js" rel="modulepreload">
14
+ <link href="/_dashboard/_app/immutable/entry/app.xWq8izru.js" rel="modulepreload">
15
+ <link href="/_dashboard/_app/immutable/nodes/0.CdDx3raB.js" rel="modulepreload">
16
+ <link href="/_dashboard/_app/immutable/chunks/B88eyH1f.js" rel="modulepreload">
18
17
 
18
+ <link href="/_dashboard/_app/immutable/assets/transition.DFBo9_nW.css" rel="stylesheet">
19
+ <link href="/_dashboard/_app/immutable/assets/0.FNtPPDe9.css" rel="stylesheet">
19
20
  </head>
20
21
  <body data-sveltekit-preload-data="hover">
21
22
  <div style="display: contents">
22
23
  <script>
23
24
  {
24
- __sveltekit_460rdo = {
25
+ __sveltekit_1m83ubh = {
25
26
  base: "/_dashboard",
27
+ version: "1793227677261",
26
28
  assets: "/_dashboard"
27
29
  };
28
30
 
29
31
  const element = document.currentScript.parentElement;
30
32
 
31
- Promise.all([
32
- import("/_dashboard/_app/immutable/entry/start.DvmAD5k5.js"),
33
- import("/_dashboard/_app/immutable/entry/app.Cr8OU7Ai.js")
34
- ]).then(([kit, app]) => {
33
+ import("/_dashboard/_app/immutable/entry/start.DRnrjJWJ.js").then(async (kit) => {
34
+ kit.init(__sveltekit_1m83ubh);
35
+ const app = await import("/_dashboard/_app/immutable/entry/app.xWq8izru.js");
35
36
  kit.start(app, element);
36
37
  });
37
38
  }
package/dist/index.js CHANGED
@@ -34,9 +34,7 @@ if (options.command === "init") {
34
34
  process.exit(0);
35
35
  }
36
36
  setConfigPath(options.config);
37
- reloadRoutes();
38
- const PORT = options.port;
39
- const server = net.createServer();
37
+ export const server = net.createServer();
40
38
  if (options.verbose) {
41
39
  logger.setLogLevel("verbose");
42
40
  }
@@ -61,11 +59,12 @@ const socketManager = {
61
59
  };
62
60
  export const wsClients = new Map();
63
61
  const requestHistory = [];
64
- server.on("connection", (socket) => {
62
+ server.on("connection", socket => {
65
63
  socketManager.add(socket);
66
64
  const socketID = `${socket.remoteAddress}:${socket.remotePort}`;
67
65
  let requestBuffer = Buffer.alloc(0);
68
66
  // listen to raw data
67
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises -- Nothing catches errors in this handler, so one bad request can stop the server.
69
68
  socket.on("data", async (chunk) => {
70
69
  // if its a websocket connection, ignore the http parser
71
70
  if (wsClients.has(socketID))
@@ -123,7 +122,7 @@ server.on("connection", (socket) => {
123
122
  if (delay > 0) {
124
123
  logger.info(`Delaying response by ${delay}ms`);
125
124
  }
126
- setTimeout(async () => {
125
+ setTimeout(() => {
127
126
  if (socket.destroyed)
128
127
  return;
129
128
  const errorRate = options.errorRate ?? response.errorRate ?? 0;
@@ -164,7 +163,7 @@ server.on("connection", (socket) => {
164
163
  socketManager.remove(socket);
165
164
  wsClients.delete(socketID);
166
165
  });
167
- socket.on("error", (error) => {
166
+ socket.on("error", error => {
168
167
  if ("code" in error && error.code === "ECONNRESET")
169
168
  return;
170
169
  logger.error(`Socket error: ${error.message}`);
@@ -175,10 +174,21 @@ watchConfig(() => {
175
174
  broadcast(wsClients, { type: "CONFIG_UPDATED" });
176
175
  });
177
176
  startHeartbeat(wsClients);
178
- server.listen(PORT, () => {
179
- showBanner(PORT);
180
- });
181
- function showBanner(PORT) {
177
+ export function startServer(port, willShowBanner) {
178
+ return new Promise(resolve => {
179
+ server.listen(port, () => {
180
+ if (willShowBanner)
181
+ showBanner(port);
182
+ resolve(server);
183
+ });
184
+ });
185
+ }
186
+ if (import.meta.url === `file://${process.argv[1]}` || process.env.NODE_ENV !== "test") {
187
+ await startServer(Number(options.port), true);
188
+ // The banner clears the screen, so load the routes after it to keep their log line visible.
189
+ reloadRoutes();
190
+ }
191
+ function showBanner(port) {
182
192
  console.clear();
183
193
  const art = [
184
194
  " ████████ ",
@@ -195,9 +205,9 @@ function showBanner(PORT) {
195
205
  const brand = hexBg(COLOURS.PURPLE, "PHANTOM");
196
206
  const details = [
197
207
  `${brand} ${styleText("white", `v${VERSION}`)}`,
198
- `port: ${hex(COLOURS.PURPLE, PORT.toString())}`,
208
+ `port: ${hex(COLOURS.PURPLE, port.toString())}`,
199
209
  `config: ${hex(COLOURS.PURPLE, options.config)}`,
200
- `dashboard: ${hex(COLOURS.PURPLE, `http://localhost:${PORT}/_dashboard/`)}`,
210
+ `dashboard: ${hex(COLOURS.PURPLE, `http://localhost:${port}/_dashboard/`)}`,
201
211
  styleText("dim", "─".repeat(44)),
202
212
  ];
203
213
  console.log("");
@@ -218,4 +228,3 @@ function shutdown() {
218
228
  }
219
229
  process.on("SIGINT", shutdown);
220
230
  process.on("SIGTERM", shutdown);
221
- //# sourceMappingURL=index.js.map
package/dist/logger.js CHANGED
@@ -67,4 +67,3 @@ class Logger {
67
67
  }
68
68
  }
69
69
  export const logger = new Logger();
70
- //# sourceMappingURL=logger.js.map
package/dist/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "@jamesmddoyle/phantom",
3
- "version": "0.2.0",
3
+ "version": "0.2.4",
4
4
  "description": "API mocker and traffic inspector with a built-in dashboard.",
5
5
  "author": "James Doyle",
6
6
  "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/jmmd2000/phantom.git",
10
+ "directory": "server"
11
+ },
7
12
  "bin": {
8
13
  "phantom": "./dist/index.js"
9
14
  },
@@ -13,16 +18,15 @@
13
18
  ],
14
19
  "type": "module",
15
20
  "scripts": {
16
- "build": "tsc && cp package.json ./dist/ && cp -r ../dashboard/build ./dist/dashboard-ui",
21
+ "build": "rm -rf dist && tsc -p tsconfig.build.json && cp package.json ./dist/ && cp -r ../dashboard/build ./dist/dashboard-ui",
17
22
  "dev": "node --watch --experimental-strip-types index.ts",
18
- "test": "vitest run"
23
+ "typecheck": "tsc --noEmit"
19
24
  },
20
25
  "devDependencies": {
21
- "@types/node": "^25.3.0",
22
- "typescript": "^5.9.3",
23
- "vitest": "^4.0.18"
26
+ "@types/node": "26.6.5",
27
+ "typescript": "6.0.3"
24
28
  },
25
29
  "dependencies": {
26
- "cac": "^7.0.0"
30
+ "cac": "7.1.0"
27
31
  }
28
32
  }
package/dist/parser.js CHANGED
@@ -140,4 +140,3 @@ function decodeChunkedBody(buffer) {
140
140
  }
141
141
  return Buffer.concat(chunks);
142
142
  }
143
- //# sourceMappingURL=parser.js.map
package/dist/responder.js CHANGED
@@ -51,4 +51,3 @@ export function buildResponse(status, message, body, customHeaders = {}) {
51
51
  const headerString = lines.join("\r\n") + "\r\n\r\n";
52
52
  return Buffer.concat([Buffer.from(headerString), bodyBuffer]);
53
53
  }
54
- //# sourceMappingURL=responder.js.map
package/dist/router.js CHANGED
@@ -58,4 +58,3 @@ function matchPath(pattern, actualPath) {
58
58
  });
59
59
  return params;
60
60
  }
61
- //# sourceMappingURL=router.js.map
package/dist/static.js CHANGED
@@ -53,4 +53,3 @@ export async function handleStaticFile(requestPath) {
53
53
  }
54
54
  return null;
55
55
  }
56
- //# sourceMappingURL=static.js.map
package/dist/utils.js CHANGED
@@ -36,4 +36,3 @@ export const centerText = (text, width) => {
36
36
  const rightPad = padding - leftPad;
37
37
  return " ".repeat(leftPad) + label + " ".repeat(rightPad);
38
38
  };
39
- //# sourceMappingURL=utils.js.map
package/dist/ws.js CHANGED
@@ -65,4 +65,3 @@ export function startHeartbeat(clients) {
65
65
  broadcast(clients, { type: "PING", timestamp: Date.now() });
66
66
  }, 30000);
67
67
  }
68
- //# sourceMappingURL=ws.js.map
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "@jamesmddoyle/phantom",
3
- "version": "0.2.0",
3
+ "version": "0.2.4",
4
4
  "description": "API mocker and traffic inspector with a built-in dashboard.",
5
5
  "author": "James Doyle",
6
6
  "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/jmmd2000/phantom.git",
10
+ "directory": "server"
11
+ },
7
12
  "bin": {
8
13
  "phantom": "./dist/index.js"
9
14
  },
@@ -13,16 +18,15 @@
13
18
  ],
14
19
  "type": "module",
15
20
  "scripts": {
16
- "build": "tsc && cp package.json ./dist/ && cp -r ../dashboard/build ./dist/dashboard-ui",
21
+ "build": "rm -rf dist && tsc -p tsconfig.build.json && cp package.json ./dist/ && cp -r ../dashboard/build ./dist/dashboard-ui",
17
22
  "dev": "node --watch --experimental-strip-types index.ts",
18
- "test": "vitest run"
23
+ "typecheck": "tsc --noEmit"
19
24
  },
20
25
  "devDependencies": {
21
- "@types/node": "^25.3.0",
22
- "typescript": "^5.9.3",
23
- "vitest": "^4.0.18"
26
+ "@types/node": "26.6.5",
27
+ "typescript": "6.0.3"
24
28
  },
25
29
  "dependencies": {
26
- "cac": "^7.0.0"
30
+ "cac": "7.1.0"
27
31
  }
28
32
  }
package/dist/cli.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export declare function parseCLI(version: string): {
2
- command: string | undefined;
3
- port: number;
4
- config: string;
5
- delay: number | null;
6
- errorRate: number | null;
7
- verbose: boolean;
8
- quiet: boolean;
9
- };
10
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM;;;;;;;;EA8BvC"}
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;AAE3B,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,GAAG;SACA,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SACvE,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,EAAE;QACzD,OAAO,EAAE,aAAa;KACvB,CAAC;SACD,MAAM,CAAC,cAAc,EAAE,qDAAqD,CAAC;SAC7E,MAAM,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;SACvF,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;SAClD,IAAI,EAAE;SACN,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,4DAA4D,CAAC,CAAC;IAElF,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAE3B,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,kBAAkB;QAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/E,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3F,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;QACjC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;KAC9B,CAAC;AACJ,CAAC"}
package/dist/config.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export declare function setConfigPath(newPath: string): void;
2
- export interface RouteConfig {
3
- path: string;
4
- method: string;
5
- status: number;
6
- body: any;
7
- enabled: boolean;
8
- delay: number;
9
- errorRate: number;
10
- headers: Record<string, string>;
11
- }
12
- export declare function getActiveRoutes(): RouteConfig[];
13
- export declare function reloadRoutes(): void;
14
- export declare function watchConfig(onReload: () => void): void;
15
- export declare function writeRoutes(routes: RouteConfig[]): void;
16
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"AAMA,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,QAE5C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAID,wBAAgB,eAAe,kBAE9B;AAED,wBAAgB,YAAY,SAa3B;AAID,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,QAa/C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,QAGhD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;AAE1D,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;AACvF,CAAC;AAaD,IAAI,YAAY,GAAkB,EAAE,CAAC;AAErC,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,YAAY,GAAG,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,kCAAkC,YAAY,CAAC,MAAM,gBAAgB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IACpI,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,4BAA4B,WAAW,6BAA6B,CAAC,CAAC,CAAC;IACxG,CAAC;AACH,CAAC;AAED,IAAI,YAAY,GAA0B,IAAI,CAAC;AAE/C,MAAM,UAAU,WAAW,CAAC,QAAoB;IAC9C,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,EAAE;QAClC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,4DAA4D;YAC5D,IAAI,YAAY;gBAAE,YAAY,CAAC,YAAY,CAAC,CAAC;YAE7C,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,YAAY,EAAE,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAqB;IAC/C,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,kBAAkB,MAAM,CAAC,MAAM,cAAc,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5G,CAAC;AAED,YAAY,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- export const env={}
@@ -1 +0,0 @@
1
- :root{--bg-main: #f7f6f4;--bg-surface: #ffffff;--bg-sidebar: #2a2320;--bg-sidebar-surface: #362e2a;--border-color: #c9c1b8;--border-sidebar: rgba(255, 255, 255, .1);--accent: #5e4d8a;--accent-light: #7a6aab;--accent-saturated: #8b5cf6;--accent-subtle: rgba(94, 77, 138, .08);--text-primary: #2c2825;--text-secondary: #8a8078;--text-sidebar: #f5f3ef;--text-sidebar-muted: rgba(245, 245, 240, .5);--status-success: #16a34a;--status-error: #dc2626;--status-warning: #eab308;--method-get: #5ba4cf;--method-post: #8b5cf6;--method-put: #c46b1a;--method-patch: #f4845f;--method-delete: #a03030}body,html{margin:0;padding:0;height:100%;background-color:var(--bg-main);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px;color:var(--text-primary);font-family:DM Sans,sans-serif;overflow:hidden}*{box-sizing:border-box}.toggle.svelte-1dbwn3b{position:relative;width:32px;height:18px;border-radius:9px;border:none;padding:2px;cursor:pointer;background:#ffffff1f;transition:background .2s ease;flex-shrink:0}.toggle.active.svelte-1dbwn3b{background:var(--accent-light)}.knob.svelte-1dbwn3b{display:block;width:14px;height:14px;border-radius:50%;background:var(--text-sidebar);transition:transform .2s ease;transform:translate(0)}.toggle.active.svelte-1dbwn3b .knob:where(.svelte-1dbwn3b){transform:translate(14px)}.route-card.svelte-1dkpee2{background:var(--bg-sidebar-surface);border:1px solid var(--border-sidebar);padding:.65rem .85rem;border-radius:6px;display:flex;flex-direction:column;gap:.35rem;transition:border-color .2s ease,opacity .2s ease}.route-card.svelte-1dkpee2:hover{border-color:var(--accent-light)}.route-card.disabled.svelte-1dkpee2{opacity:.4}.route-header.svelte-1dkpee2{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.route-path.svelte-1dkpee2{color:var(--text-sidebar);font-family:ui-monospace,monospace;font-size:.82rem;font-weight:600;word-break:break-all}.route-info.svelte-1dkpee2{display:flex;justify-content:space-between;align-items:center;font-size:.7rem;color:var(--text-sidebar-muted)}.route-controls.svelte-1dkpee2{display:flex;align-items:center;gap:.4rem;flex-shrink:0}.route-method.svelte-1dkpee2{font-weight:700;font-size:.65rem;color:var(--text-sidebar-muted)}.settings-button.svelte-1dkpee2{background:none;border:none;color:var(--text-sidebar-muted);cursor:pointer;padding:.15rem;border-radius:3px;display:flex;align-items:center;transition:color .15s ease}.settings-button.svelte-1dkpee2:hover{color:var(--text-sidebar)}.settings-button.svelte-1dkpee2.modified{color:var(--accent-saturated);filter:drop-shadow(0 0 8px rgba(168,85,247,.4))}.settings-button.svelte-1dkpee2.modified:hover{color:var(--accent-light)}.delay-input.svelte-1x00vna{display:flex;align-items:center;gap:.35rem}input.svelte-1x00vna{width:100%;background:var(--bg-main);border:1px solid var(--border-color);border-radius:5px;color:var(--text-primary);font-family:ui-monospace,monospace;font-size:.82rem;padding:.4rem .5rem;outline:none;transition:border-color .2s ease;appearance:textfield;-moz-appearance:textfield}input.svelte-1x00vna:focus{border-color:var(--accent)}input.svelte-1x00vna::-webkit-inner-spin-button,input.svelte-1x00vna::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.suffix.svelte-1x00vna{font-size:.72rem;color:var(--text-secondary);font-family:ui-monospace,monospace;flex-shrink:0}.error-rate-wrapper.svelte-l339yv{display:flex;align-items:center;gap:1rem;padding:.5rem 0}.slider.svelte-l339yv{flex:1;accent-color:var(--status-error)}.percentage.svelte-l339yv{font-family:ui-monospace,monospace;font-size:.9rem;font-weight:700;min-width:3rem;color:var(--text-primary)}.headers-list.svelte-ijdozu{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;background:var(--bg-main);border-radius:6px;border:1px solid var(--border-color);margin-top:.25rem}.header-row.svelte-ijdozu{display:flex;align-items:center;gap:.5rem}.header-input.svelte-ijdozu{flex:1;background:var(--bg-surface);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);padding:.4rem .6rem;font-size:.8rem;font-family:ui-monospace,monospace;outline:none;min-width:0;transition:border-color .15s ease}.header-input.svelte-ijdozu:focus{border-color:var(--accent)}.separator.svelte-ijdozu{color:var(--text-secondary);font-weight:700;opacity:.5}.remove-header.svelte-ijdozu{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.25rem;padding:0 .2rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:color .15s ease}.remove-header.svelte-ijdozu:hover{color:var(--status-error)}.add-header-btn.svelte-ijdozu{background:transparent;border:1px dashed var(--border-color);color:var(--text-secondary);padding:.5rem;font-size:.75rem;font-weight:600;border-radius:4px;cursor:pointer;margin-top:.25rem;transition:all .15s ease}.add-header-btn.svelte-ijdozu:hover{border-color:var(--accent);color:var(--accent);background:#5ba4cf0a}.backdrop.svelte-1kd3xks{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100;animation:svelte-1kd3xks-fadeIn .15s ease}.dialog.svelte-1kd3xks{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:10px;width:420px;max-width:90vw;box-shadow:0 16px 48px #0003;animation:svelte-1kd3xks-slideUp .15s ease}.dialog-header.svelte-1kd3xks{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--border-color)}.dialog-title.svelte-1kd3xks{display:flex;align-items:center;gap:.5rem}.dialog-method.svelte-1kd3xks{font-size:.7rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase}.dialog-path.svelte-1kd3xks{font-family:ui-monospace,monospace;font-size:.9rem;font-weight:600;color:var(--text-primary)}.close-button.svelte-1kd3xks{background:none;border:none;font-size:1.4rem;color:var(--text-secondary);cursor:pointer;padding:0 .25rem;line-height:1;border-radius:4px;transition:color .15s ease}.close-button.svelte-1kd3xks:hover{color:var(--text-primary)}.dialog-body.svelte-1kd3xks{padding:1.25rem;display:flex;flex-direction:column;gap:1rem}.field.svelte-1kd3xks{display:flex;flex-direction:column;gap:.35rem}.field-label.svelte-1kd3xks{font-size:.72rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}@keyframes svelte-1kd3xks-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes svelte-1kd3xks-slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.app-layout.svelte-12qhfyh{display:grid;grid-template-columns:280px 1fr;height:100vh;width:100vw;overflow:hidden}.sidebar.svelte-12qhfyh{background-color:var(--bg-sidebar);border-right:1px solid var(--border-sidebar);padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem;height:100vh;overflow:hidden}.logo-area.svelte-12qhfyh{display:flex;align-items:center;gap:.65rem;flex-shrink:0}.logo.svelte-12qhfyh{flex-shrink:0;color:var(--accent-light);display:flex;align-items:center}.logo-text.svelte-12qhfyh{display:flex;flex-direction:column;gap:.1rem}.logo-name.svelte-12qhfyh{color:var(--text-sidebar);font-weight:800;font-size:.95rem;letter-spacing:.12em}.version.svelte-12qhfyh{font-size:.65rem;color:var(--text-sidebar-muted)}.sidebar-divider.svelte-12qhfyh{height:1px;background:linear-gradient(to right,var(--accent-light),transparent);flex-shrink:0;margin:-.25rem 0}.sidebar-nav.svelte-12qhfyh{display:flex;flex-direction:column;overflow:hidden;flex:1}.nav-section.svelte-12qhfyh{display:flex;flex-direction:column;min-height:0;margin-bottom:1.5rem}.nav-section.svelte-12qhfyh:last-of-type{flex:1;overflow:hidden;margin-bottom:0}.section-header.svelte-12qhfyh{display:flex;justify-content:space-between;align-items:center;padding-bottom:.5rem;border-bottom:1px solid rgba(255,255,255,.05);margin-bottom:.75rem;transition:border-color .15s ease}.section-header.interactive.svelte-12qhfyh{cursor:pointer;-webkit-user-select:none;user-select:none;outline:none}.section-header.interactive.svelte-12qhfyh:hover{border-bottom-color:#ffffff26}.section-header.interactive.svelte-12qhfyh:hover .nav-label:where(.svelte-12qhfyh){opacity:1}.nav-label.svelte-12qhfyh{font-size:.65rem;font-weight:800;color:var(--text-sidebar);letter-spacing:.15em;opacity:.8;transition:opacity .15s ease}.section-chevron{color:var(--text-sidebar-muted);transition:transform .2s ease,color .15s ease}.section-chevron.rotated{transform:rotate(90deg);color:var(--accent)}.filter-group.svelte-12qhfyh{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem}.filter-label.svelte-12qhfyh{font-size:.65rem;font-weight:700;color:var(--text-sidebar);opacity:.6;text-transform:uppercase}.filter-buttons.svelte-12qhfyh{display:flex;flex-wrap:wrap;gap:.4rem}.filter-btn.svelte-12qhfyh{background:#ffffff08;border:1px solid rgba(255,255,255,.08);color:var(--text-sidebar-muted);font-family:ui-monospace,monospace;font-size:.65rem;font-weight:600;padding:.25rem .5rem;border-radius:4px;cursor:pointer;transition:all .15s ease}.filter-btn.svelte-12qhfyh:hover{background:#ffffff14;color:var(--text-sidebar);border-color:#ffffff26}.filter-btn.svelte-12qhfyh.active{background:var(--accent);color:var(--text-sidebar);border-color:var(--accent);box-shadow:0 0 12px #5ba4cf33}.content.svelte-12qhfyh{overflow-y:auto;height:100vh;padding:2rem;min-width:0;scrollbar-color:var(--accent-light) transparent}.route-list.svelte-12qhfyh{display:flex;flex-direction:column;gap:.4rem;overflow-y:auto;flex:1;padding-right:.5rem;scrollbar-width:thin;scrollbar-color:var(--accent-light) transparent}
@@ -1 +0,0 @@
1
- .status-indicator.svelte-18q28wq{display:flex;align-items:center;gap:.4rem;color:var(--text-secondary)}.dot.svelte-18q28wq{display:inline-block;width:8px;height:8px;border-radius:50%;background-color:#b0a8a0}.dot.svelte-18q28wq.online{background-color:var(--status-success);animation:svelte-18q28wq-pulse 2s infinite}.status-text.svelte-18q28wq{font-size:.825rem;font-style:italic;margin:0}@keyframes svelte-18q28wq-pulse{0%{box-shadow:0 0 #16a34a80}70%{box-shadow:0 0 0 5px #16a34a00}to{box-shadow:0 0 #16a34a00}}.details.svelte-35qjzc{display:flex;flex-direction:column;padding:.75rem 0 .5rem;border-top:1px solid var(--border-color);width:100%;overflow:hidden}.exchange-grid.svelte-35qjzc{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}.detail-section.svelte-35qjzc{display:flex;flex-direction:column;gap:.75rem}.section-content.svelte-35qjzc{display:flex;flex-direction:column;gap:.75rem;background:#0000000d;padding:1rem;border-radius:6px;border:1px solid var(--border-color)}.detail-label.svelte-35qjzc{margin:0;font-size:.7rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.sub-label.svelte-35qjzc{margin:0;font-size:.65rem;font-weight:700;color:var(--accent-light);text-transform:uppercase;letter-spacing:.05em}.status-summary.svelte-35qjzc{display:flex;align-items:baseline;gap:.5rem;margin-bottom:-.25rem}.duration.svelte-35qjzc{font-size:.75rem;color:var(--text-secondary);font-weight:600}.headers-grid.svelte-35qjzc{display:grid;grid-template-columns:auto 1fr;column-gap:1.5rem;row-gap:.35rem;font-size:.82rem}.header-key.svelte-35qjzc{color:var(--text-secondary);font-weight:600}.header-val.svelte-35qjzc{color:var(--text-primary);word-break:break-all}.body-content.svelte-35qjzc{margin:0;background:var(--bg-main);padding:.75rem;border-radius:4px;border:1px solid var(--border-color);font-size:.82rem;color:var(--text-primary);white-space:pre-wrap;word-break:break-all;max-height:250px;overflow-y:auto}.log-entry.svelte-1qnyn9m{background-color:var(--bg-surface);padding:.75rem 1.25rem;border:2px solid var(--border-color);border-radius:6px;display:flex;flex-direction:column;gap:0rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875rem;transition:all .15s ease;min-width:0;cursor:pointer;outline:none}.log-entry.svelte-1qnyn9m:hover{border-color:var(--accent-light);border-left:3px solid var(--accent);box-shadow:0 1px 4px #0000000a}.log-entry.svelte-1qnyn9m:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-subtle)}.log-entry.svelte-1qnyn9m.expanded{border-color:var(--accent-light);border-left:3px solid var(--accent);background-color:var(--bg-surface-elevated);margin-bottom:.5rem;gap:1rem}.log-entry.svelte-1qnyn9m:hover .copy-button:where(.svelte-1qnyn9m){opacity:1}.summary-line.svelte-1qnyn9m{display:flex;align-items:center;gap:1rem;width:100%;min-width:0}.chevron.svelte-1qnyn9m{color:var(--text-secondary);transition:transform .2s ease,color .15s ease;display:flex;align-items:center;flex-shrink:0;margin-right:-.25rem}.chevron.rotated.svelte-1qnyn9m{transform:rotate(90deg);color:var(--accent)}.path.svelte-1qnyn9m{color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.copy-button.svelte-1qnyn9m{background:transparent;border:2px solid var(--border-color);color:var(--text-secondary);padding:.15rem .5rem;cursor:pointer;border-radius:4px;opacity:0;transition:all .15s ease;flex-shrink:0;font-size:.7rem;font-family:inherit}.copy-button.svelte-1qnyn9m:hover{border-color:var(--accent);color:var(--text-sidebar);background-color:var(--accent)}.duration.svelte-1qnyn9m{margin-left:auto;font-size:.75rem;color:var(--text-secondary);font-weight:600}.duration.svelte-1qnyn9m.slow{color:var(--status-warning)}.timestamp.svelte-1qnyn9m{color:var(--accent-light);font-size:.8rem;flex-shrink:0;min-width:85px;text-align:right}.search-container.svelte-c2kcm7{position:relative;display:flex;align-items:center}.search-input.svelte-c2kcm7{background:var(--bg-main);border:2px solid var(--border-color);color:var(--text-secondary);padding:.4rem 2rem .4rem .75rem;border-radius:4px;font-size:.8rem;width:200px;outline:none;transition:all .2s ease}.search-input.svelte-c2kcm7:focus{border-color:var(--accent)}.clear-search.svelte-c2kcm7{position:absolute;right:.5rem;background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.2rem;line-height:1;padding:0}.clear-search.svelte-c2kcm7:hover{color:var(--text-primary)}.button.svelte-1xko78n{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.4rem 1rem;font-size:.8rem;font-weight:600;border-radius:4px;cursor:pointer;transition:all .15s ease;white-space:nowrap;font-family:inherit;border:2px solid transparent;-webkit-user-select:none;user-select:none;outline:none}.button.svelte-1xko78n:active{transform:translateY(1px)}.variant-outline.svelte-1xko78n{background:transparent;border-color:var(--border-color);color:var(--text-secondary)}.variant-outline.svelte-1xko78n:hover{border-color:var(--accent);color:var(--text-primary);background-color:var(--bg-surface)}.variant-outline.active.svelte-1xko78n{background-color:var(--accent);border-color:var(--accent);color:#fff}.variant-danger.svelte-1xko78n{background:transparent;border-color:var(--border-color);color:var(--text-secondary)}.variant-danger.svelte-1xko78n:hover{border-color:var(--status-error);color:#fff;background-color:var(--status-error)}.variant-ghost.svelte-1xko78n{background:transparent;border:none;color:var(--text-secondary);padding:.25rem}.variant-ghost.svelte-1xko78n:hover{color:var(--text-primary)}.button-icon.svelte-1xko78n{display:flex;align-items:center;flex-shrink:0}.button-label.svelte-1xko78n{line-height:1}.page-header.svelte-1uha8ag{display:flex;justify-content:start;align-items:flex-end;margin-bottom:2rem}.header-left.svelte-1uha8ag{display:flex;flex-direction:column;gap:1rem}.header-controls.svelte-1uha8ag{display:flex;align-items:center;gap:1rem;margin-top:.5rem}h2.svelte-1uha8ag{margin:0;font-size:1.4rem;font-weight:700;color:var(--accent)}.log-feed.svelte-1uha8ag{display:flex;flex-direction:column;gap:.2rem;padding-bottom:2rem}.empty.svelte-1uha8ag{display:flex;flex-direction:column;align-items:center;justify-content:center;margin-top:6rem;color:var(--text-secondary);text-align:center}.empty.svelte-1uha8ag p:where(.svelte-1uha8ag){font-size:1.05rem;margin-bottom:1.25rem}.empty.svelte-1uha8ag code:where(.svelte-1uha8ag){background-color:var(--accent-subtle);padding:.75rem 1.5rem;border-radius:6px;border:1px solid var(--border-color);color:var(--accent);font-family:ui-monospace,monospace;font-size:.875rem}
@@ -1 +0,0 @@
1
- .badge.svelte-16wd81y{font-weight:700;font-size:.7rem;padding:.2rem .5rem;border-radius:4px;text-align:center;flex-shrink:0;line-height:1;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;-webkit-user-select:none;user-select:none}.badge-get.svelte-16wd81y{color:var(--method-get);background:#5ba4cf1f;border-color:#5ba4cf33;min-width:58px}.badge-post.svelte-16wd81y{color:var(--method-post);background:#8b5cf61a;border-color:#8b5cf633;min-width:58px}.badge-put.svelte-16wd81y{color:var(--method-put);background:#c46b1a1a;border-color:#c46b1a33;min-width:58px}.badge-patch.svelte-16wd81y{color:var(--method-patch);background:#f4845f1a;border-color:#f4845f33;min-width:58px}.badge-delete.svelte-16wd81y{color:var(--method-delete);background:#a030301a;border-color:#a0303033;min-width:58px}.badge-success.svelte-16wd81y{color:var(--status-success);background:#16a34a1a;border:1px solid rgba(22,163,74,.15);min-width:42px}.badge-warn.svelte-16wd81y{color:var(--status-warning);background:#eab3081a;border:1px solid rgba(234,179,8,.15);min-width:42px}.badge-error.svelte-16wd81y{color:var(--status-error);background:#dc26261a;border:1px solid rgba(220,38,38,.15);min-width:42px}
@@ -1 +0,0 @@
1
- import{n as $,o as g,q as j,v as I,w as x,x as H,y as w,z as L,A as q,B as z,C as G,D as Z,E as J,F as Q,H as V,G as W,I as X,J as k,K as D,L as ee,M as se,N,O as re,P as te,Q as ne,g as v,R as B,S as O,T as ie,U as T,V as ae,W as Y,X as fe,Y as ue,Z as oe,_ as M,$ as y,a0 as ce,a as le,l as de,a1 as _e,a2 as pe,f as he,a3 as ve,a4 as h,a5 as U,a6 as F,a7 as be}from"./Bj1t19nj.js";class me{anchor;#s=new Map;#r=new Map;#e=new Map;#t=new Set;#n=!0;constructor(e,t=!0){this.anchor=e,this.#n=t}#i=e=>{if(this.#s.has(e)){var t=this.#s.get(e),r=this.#r.get(t);if(r)$(r),this.#t.delete(t);else{var n=this.#e.get(t);n&&(this.#r.set(t,n.effect),this.#e.delete(t),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),r=n.effect)}for(const[i,f]of this.#s){if(this.#s.delete(i),i===e)break;const a=this.#e.get(f);a&&(g(a.effect),this.#e.delete(f))}for(const[i,f]of this.#r){if(i===t||this.#t.has(i))continue;const a=()=>{if(Array.from(this.#s.values()).includes(i)){var c=document.createDocumentFragment();q(f,c),c.append(I()),this.#e.set(i,{effect:f,fragment:c})}else g(f);this.#t.delete(i),this.#r.delete(i)};this.#n||!r?(this.#t.add(i),j(f,a,!1)):a()}}};#a=e=>{this.#s.delete(e);const t=Array.from(this.#s.values());for(const[r,n]of this.#e)t.includes(r)||(g(n.effect),this.#e.delete(r))};ensure(e,t){var r=H,n=z();if(t&&!this.#r.has(e)&&!this.#e.has(e))if(n){var i=document.createDocumentFragment(),f=I();i.append(f),this.#e.set(e,{effect:x(()=>t(f)),fragment:i})}else this.#r.set(e,x(()=>t(this.anchor)));if(this.#s.set(r,e),n){for(const[a,u]of this.#r)a===e?r.unskip_effect(u):r.skip_effect(u);for(const[a,u]of this.#e)a===e?r.unskip_effect(u.effect):r.skip_effect(u.effect);r.oncommit(this.#i),r.ondiscard(this.#a)}else w&&(this.anchor=L),this.#i(r)}}function Ae(s,e,t=!1){var r;w&&(r=L,Z());var n=new me(s),i=t?J:0;function f(a,u){if(w){var c=Q(r),l;if(c===V?l=0:c===W?l=!1:l=parseInt(c.substring(1)),a!==l){var b=X();k(b),n.anchor=b,D(!1),n.ensure(a,u),D(!0);return}}n.ensure(a,u)}G(()=>{var a=!1;e((u,c=0)=>{a=!0,f(c,u)}),a||f(!1,null)},i)}let S=!1,A=Symbol();function Oe(s,e,t){const r=t[e]??={store:null,source:re(void 0),unsubscribe:N};if(r.store!==s&&!(A in t))if(r.unsubscribe(),r.store=s??null,s==null)r.source.v=void 0,r.unsubscribe=N;else{var n=!0;r.unsubscribe=te(s,i=>{n?r.source.v=i:B(r.source,i)}),n=!1}return s&&A in t?ne(s):v(r.source)}function Re(){const s={};function e(){ee(()=>{for(var t in s)s[t].unsubscribe();se(s,A,{enumerable:!1,value:!0})})}return[s,e]}function Se(s){var e=S;try{return S=!1,[s(),S]}finally{S=e}}const Pe={get(s,e){if(!s.exclude.includes(e))return v(s.version),e in s.special?s.special[e]():s.props[e]},set(s,e,t){if(!(e in s.special)){var r=O;try{y(s.parent_effect),s.special[e]=we({get[e](){return s.props[e]}},e,Y)}finally{y(r)}}return s.special[e](t),M(s.version),!0},getOwnPropertyDescriptor(s,e){if(!s.exclude.includes(e)&&e in s.props)return{enumerable:!0,configurable:!0,value:s.props[e]}},deleteProperty(s,e){return s.exclude.includes(e)||(s.exclude.push(e),M(s.version)),!0},has(s,e){return s.exclude.includes(e)?!1:e in s.props},ownKeys(s){return Reflect.ownKeys(s.props).filter(e=>!s.exclude.includes(e))}};function Ee(s,e){return new Proxy({props:s,exclude:e,special:{},version:ie(0),parent_effect:O},Pe)}const ge={get(s,e){let t=s.props.length;for(;t--;){let r=s.props[t];if(h(r)&&(r=r()),typeof r=="object"&&r!==null&&e in r)return r[e]}},set(s,e,t){let r=s.props.length;for(;r--;){let n=s.props[r];h(n)&&(n=n());const i=T(n,e);if(i&&i.set)return i.set(t),!0}return!1},getOwnPropertyDescriptor(s,e){let t=s.props.length;for(;t--;){let r=s.props[t];if(h(r)&&(r=r()),typeof r=="object"&&r!==null&&e in r){const n=T(r,e);return n&&!n.configurable&&(n.configurable=!0),n}}},has(s,e){if(e===U||e===F)return!1;for(let t of s.props)if(h(t)&&(t=t()),t!=null&&e in t)return!0;return!1},ownKeys(s){const e=[];for(let t of s.props)if(h(t)&&(t=t()),!!t){for(const r in t)e.includes(r)||e.push(r);for(const r of Object.getOwnPropertySymbols(t))e.includes(r)||e.push(r)}return e}};function Ie(...s){return new Proxy({props:s},ge)}function we(s,e,t,r){var n=!de||(t&_e)!==0,i=(t&ce)!==0,f=(t&be)!==0,a=r,u=!0,c=()=>(u&&(u=!1,a=f?le(r):r),a),l;if(i){var b=U in s||F in s;l=T(s,e)?.set??(b&&e in s?o=>s[e]=o:void 0)}var _,R=!1;i?[_,R]=Se(()=>s[e]):_=s[e],_===void 0&&r!==void 0&&(_=c(),l&&(n&&ae(),l(_)));var d;if(n?d=()=>{var o=s[e];return o===void 0?c():(u=!0,o)}:d=()=>{var o=s[e];return o!==void 0&&(a=void 0),o===void 0?a:o},n&&(t&Y)===0)return d;if(l){var C=s.$$legacy;return(function(o,m){return arguments.length>0?((!n||!m||C||R)&&l(m?d():o),o):d()})}var P=!1,p=((t&pe)!==0?he:ve)(()=>(P=!1,d()));i&&v(p);var K=O;return(function(o,m){if(arguments.length>0){const E=m?v(p):n&&i?fe(o):o;return B(p,E),P=!0,a!==void 0&&(a=E),o}return ue&&P||(K.f&oe)!==0?p.v:v(p)})}export{me as B,Oe as a,Re as b,Ae as i,Ee as l,we as p,Ie as s};
@@ -1 +0,0 @@
1
- var Vt=Array.isArray,Ut=Array.prototype.indexOf,fe=Array.prototype.includes,Ln=Array.from,jn=Object.defineProperty,pe=Object.getOwnPropertyDescriptor,Bt=Object.getOwnPropertyDescriptors,Gt=Object.prototype,zt=Array.prototype,ot=Object.getPrototypeOf,et=Object.isExtensible;function Yn(e){return typeof e=="function"}const we=()=>{};function qn(e){return e()}function Kt(e){for(var t=0;t<e.length;t++)e[t]()}function ut(){var e,t,n=new Promise((r,s)=>{e=r,t=s});return{promise:n,resolve:e,reject:t}}function Hn(e,t){if(Array.isArray(e))return e;if(!(Symbol.iterator in e))return Array.from(e);const n=[];for(const r of e)if(n.push(r),n.length===t)break;return n}const E=2,_e=4,ae=8,He=1<<24,z=16,L=32,re=64,$t=128,x=512,y=1024,T=2048,F=4096,M=8192,V=16384,ve=32768,Se=65536,tt=1<<17,Xt=1<<18,Ee=1<<19,ct=1<<20,Vn=1<<25,Q=65536,Ce=1<<21,Ve=1<<22,U=1<<23,W=Symbol("$state"),Un=Symbol("legacy props"),Bn=Symbol(""),$=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},zn=!!globalThis.document?.contentType&&globalThis.document.contentType.includes("xml"),Kn=1,xe=3,_t=8;function Zt(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function $n(e,t,n){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Wt(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Jt(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Qt(e){throw new Error("https://svelte.dev/e/effect_orphan")}function en(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Xn(){throw new Error("https://svelte.dev/e/hydration_failed")}function Zn(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function tn(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function nn(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function rn(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Wn(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Jn=1,Qn=2,er=4,tr=8,nr=16,rr=1,sr=2,ir=4,fr=8,ar=16,lr=1,or=2,ur=4,cr=1,_r=2,sn="[",fn="[!",vr="[?",an="]",Ue={},b=Symbol(),ln="http://www.w3.org/1999/xhtml",dr="http://www.w3.org/2000/svg",hr="@attach";function Be(e){console.warn("https://svelte.dev/e/hydration_mismatch")}function pr(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function wr(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let ee=!1;function yr(e){ee=e}let R;function le(e){if(e===null)throw Be(),Ue;return R=e}function br(){return le(K(R))}function Er(e){if(ee){if(K(R)!==null)throw Be(),Ue;R=e}}function gr(e=1){if(ee){for(var t=e,n=R;t--;)n=K(n);R=n}}function mr(e=!0){for(var t=0,n=R;;){if(n.nodeType===_t){var r=n.data;if(r===an){if(t===0)return n;t-=1}else(r===sn||r===fn||r[0]==="["&&!isNaN(Number(r.slice(1))))&&(t+=1)}var s=K(n);e&&n.remove(),n=s}}function Tr(e){if(!e||e.nodeType!==_t)throw Be(),Ue;return e.data}function vt(e){return e===this.v}function dt(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function ht(e){return!dt(e,this.v)}let ke=!1;function Ar(){ke=!0}let m=null;function Re(e){m=e}function Sr(e,t=!1,n){m={p:m,i:!1,c:null,e:null,s:e,x:null,l:ke&&!t?{s:null,u:null,$:[]}:null}}function Rr(e){var t=m,n=t.e;if(n!==null){t.e=null;for(var r of n)kt(r)}return t.i=!0,m=t.p,{}}function ge(){return!ke||m!==null&&m.l===null}let X=[];function pt(){var e=X;X=[],Kt(e)}function Me(e){if(X.length===0&&!ye){var t=X;queueMicrotask(()=>{t===X&&pt()})}X.push(e)}function on(){for(;X.length>0;)pt()}function un(e){var t=d;if(t===null)return v.f|=U,e;if((t.f&ve)===0&&(t.f&_e)===0)throw e;Ne(e,t)}function Ne(e,t){for(;t!==null;){if((t.f&$t)!==0){if((t.f&ve)===0)throw e;try{t.b.error(e);return}catch(n){e=n}}t=t.parent}throw e}const cn=-7169;function w(e,t){e.f=e.f&cn|t}function Ge(e){(e.f&x)!==0||e.deps===null?w(e,y):w(e,F)}function wt(e){if(e!==null)for(const t of e)(t.f&E)===0||(t.f&Q)===0||(t.f^=Q,wt(t.deps))}function _n(e,t,n){(e.f&T)!==0?t.add(e):(e.f&F)!==0&&n.add(e),wt(e.deps),w(e,y)}const Te=new Set;let p=null,nt=null,D=null,A=[],Ie=null,ye=!1,oe=null;class de{current=new Map;previous=new Map;#t=new Set;#s=new Set;#r=0;#i=0;#f=null;#a=new Set;#n=new Set;#e=new Map;is_fork=!1;#l=!1;#o(){return this.is_fork||this.#i>0}skip_effect(t){this.#e.has(t)||this.#e.set(t,{d:[],m:[]})}unskip_effect(t){var n=this.#e.get(t);if(n){this.#e.delete(t);for(var r of n.d)w(r,T),Y(r);for(r of n.m)w(r,F),Y(r)}}process(t){A=[],this.apply();var n=oe=[],r=[];for(const s of t)this.#u(s,n,r);if(oe=null,this.#o()){this.#c(r),this.#c(n);for(const[s,i]of this.#e)gt(s,i)}else{nt=this,p=null;for(const s of this.#t)s(this);this.#t.clear(),this.#r===0&&this.#_(),rt(r),rt(n),this.#a.clear(),this.#n.clear(),nt=null,this.#f?.resolve()}D=null}#u(t,n,r){t.f^=y;for(var s=t.first;s!==null;){var i=s.f,o=(i&(L|re))!==0,l=o&&(i&y)!==0,f=l||(i&M)!==0||this.#e.has(s);if(!f&&s.fn!==null){o?s.f^=y:(i&_e)!==0?n.push(s):me(s)&&((i&z)!==0&&this.#n.add(s),ce(s));var a=s.first;if(a!==null){s=a;continue}}for(;s!==null;){var u=s.next;if(u!==null){s=u;break}s=s.parent}}}#c(t){for(var n=0;n<t.length;n+=1)_n(t[n],this.#a,this.#n)}capture(t,n){n!==b&&!this.previous.has(t)&&this.previous.set(t,n),(t.f&U)===0&&(this.current.set(t,t.v),D?.set(t,t.v))}activate(){p=this,this.apply()}deactivate(){p===this&&(p=null,D=null)}flush(){if(A.length>0)p=this,yt();else if(this.#r===0&&!this.is_fork){for(const t of this.#t)t(this);this.#t.clear(),this.#_(),this.#f?.resolve()}this.deactivate()}discard(){for(const t of this.#s)t(this);this.#s.clear()}#_(){if(Te.size>1){this.previous.clear();var t=p,n=D,r=!0;for(const i of Te){if(i===this){r=!1;continue}const o=[];for(const[f,a]of this.current){if(i.current.has(f))if(r&&a!==i.current.get(f))i.current.set(f,a);else continue;o.push(f)}if(o.length===0)continue;const l=[...i.current.keys()].filter(f=>!this.current.has(f));if(l.length>0){var s=A;A=[];const f=new Set,a=new Map;for(const u of o)bt(u,l,f,a);if(A.length>0){p=i,i.apply();for(const u of A)i.#u(u,[],[]);i.deactivate()}A=s}}p=t,D=n}this.#e.clear(),Te.delete(this)}increment(t){this.#r+=1,t&&(this.#i+=1)}decrement(t){this.#r-=1,t&&(this.#i-=1),!this.#l&&(this.#l=!0,Me(()=>{this.#l=!1,this.#o()?A.length>0&&this.flush():this.revive()}))}revive(){for(const t of this.#a)this.#n.delete(t),w(t,T),Y(t);for(const t of this.#n)w(t,F),Y(t);this.flush()}oncommit(t){this.#t.add(t)}ondiscard(t){this.#s.add(t)}settled(){return(this.#f??=ut()).promise}static ensure(){if(p===null){const t=p=new de;Te.add(p),ye||Me(()=>{p===t&&t.flush()})}return p}apply(){}}function vn(e){var t=ye;ye=!0;try{for(var n;;){if(on(),A.length===0&&(p?.flush(),A.length===0))return Ie=null,n;yt()}}finally{ye=t}}function yt(){var e=null;try{for(var t=0;A.length>0;){var n=de.ensure();if(t++>1e3){var r,s;dn()}n.process(A),B.clear()}}finally{A=[],Ie=null,oe=null}}function dn(){try{en()}catch(e){Ne(e,Ie)}}let j=null;function rt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if((r.f&(V|M))===0&&me(r)&&(j=new Set,ce(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&Dt(r),j?.size>0)){B.clear();for(const s of j){if((s.f&(V|M))!==0)continue;const i=[s];let o=s.parent;for(;o!==null;)j.has(o)&&(j.delete(o),i.push(o)),o=o.parent;for(let l=i.length-1;l>=0;l--){const f=i[l];(f.f&(V|M))===0&&ce(f)}}j.clear()}}j=null}}function bt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const s of e.reactions){const i=s.f;(i&E)!==0?bt(s,t,n,r):(i&(Ve|z))!==0&&(i&T)===0&&Et(s,t,r)&&(w(s,T),Y(s))}}function Et(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const s of e.deps){if(fe.call(t,s))return!0;if((s.f&E)!==0&&Et(s,t,n))return n.set(s,!0),!0}return n.set(e,!1),!1}function Y(e){var t=Ie=e,n=t.b;if(n?.is_pending&&(e.f&(_e|ae|He))!==0&&(e.f&ve)===0){n.defer_effect(e);return}for(;t.parent!==null;){t=t.parent;var r=t.f;if(oe!==null&&t===d&&(e.f&ae)===0)return;if((r&(re|L))!==0){if((r&y)===0)return;t.f^=y}}A.push(t)}function gt(e,t){if(!((e.f&L)!==0&&(e.f&y)!==0)){(e.f&T)!==0?t.d.push(e):(e.f&F)!==0&&t.m.push(e),w(e,y);for(var n=e.first;n!==null;)gt(n,t),n=n.next}}function hn(e,t,n,r){const s=ge()?ze:bn;var i=e.filter(c=>!c.settled);if(n.length===0&&i.length===0){r(t.map(s));return}var o=d,l=pn(),f=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(c=>c.promise)):null;function a(c){l();try{r(c)}catch(_){(o.f&V)===0&&Ne(_,o)}Fe()}if(n.length===0){f.then(()=>a(t.map(s)));return}function u(){l(),Promise.all(n.map(c=>yn(c))).then(c=>a([...t.map(s),...c])).catch(c=>Ne(c,o))}f?f.then(u):u()}function pn(){var e=d,t=v,n=m,r=p;return function(i=!0){ue(e),G(t),Re(n),i&&r?.activate()}}function Fe(e=!0){ue(null),G(null),Re(null),e&&p?.deactivate()}function wn(){var e=d.b,t=p,n=e.is_rendered();return e.update_pending_count(1),t.increment(n),()=>{e.update_pending_count(-1),t.decrement(n)}}function ze(e){var t=E|T,n=v!==null&&(v.f&E)!==0?v:null;return d!==null&&(d.f|=Ee),{ctx:m,deps:null,effects:null,equals:vt,f:t,fn:e,reactions:null,rv:0,v:b,wv:0,parent:n??d,ac:null}}function yn(e,t,n){d===null&&Zt();var s=void 0,i=$e(b),o=!v,l=new Map;return xn(()=>{var f=ut();s=f.promise;try{Promise.resolve(e()).then(f.resolve,f.reject).finally(Fe)}catch(_){f.reject(_),Fe()}var a=p;if(o){var u=wn();l.get(a)?.reject($),l.delete(a),l.set(a,f)}const c=(_,g=void 0)=>{if(a.activate(),g)g!==$&&(i.f|=U,je(i,g));else{(i.f&U)!==0&&(i.f^=U),je(i,_);for(const[h,I]of l){if(l.delete(h),h===a)break;I.reject($)}}u&&u()};f.promise.then(c,_=>c(null,_||"unknown"))}),On(()=>{for(const f of l.values())f.reject($)}),new Promise(f=>{function a(u){function c(){u===s?f(i):a(s)}u.then(c,c)}a(s)})}function Nr(e){const t=ze(e);return Mt(t),t}function bn(e){const t=ze(e);return t.equals=ht,t}function En(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)te(t[n])}}function gn(e){for(var t=e.parent;t!==null;){if((t.f&E)===0)return(t.f&V)===0?t:null;t=t.parent}return null}function Ke(e){var t,n=d;ue(gn(e));try{e.f&=~Q,En(e),t=Yt(e)}finally{ue(n)}return t}function mt(e){var t=Ke(e);if(!e.equals(t)&&(e.wv=Lt(),(!p?.is_fork||e.deps===null)&&(e.v=t,e.deps===null))){w(e,y);return}ne||(D!==null?(xt()||p?.is_fork)&&D.set(e,t):Ge(e))}function mn(e){if(e.effects!==null)for(const t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort($),t.teardown=we,t.ac=null,be(t,0),We(t))}function Tt(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&ce(t)}let Le=new Set;const B=new Map;let At=!1;function $e(e,t){var n={f:0,v:e,reactions:null,equals:vt,rv:0,wv:0};return n}function q(e,t){const n=$e(e);return Mt(n),n}function Or(e,t=!1,n=!0){const r=$e(e);return t||(r.equals=ht),ke&&n&&m!==null&&m.l!==null&&(m.l.s??=[]).push(r),r}function H(e,t,n=!1){v!==null&&(!P||(v.f&tt)!==0)&&ge()&&(v.f&(E|z|Ve|tt))!==0&&(k===null||!fe.call(k,e))&&rn();let r=n?he(t):t;return je(e,r)}function je(e,t){if(!e.equals(t)){var n=e.v;ne?B.set(e,t):B.set(e,n),e.v=t;var r=de.ensure();if(r.capture(e,n),(e.f&E)!==0){const s=e;(e.f&T)!==0&&Ke(s),Ge(s)}e.wv=Lt(),St(e,T),ge()&&d!==null&&(d.f&y)!==0&&(d.f&(L|re))===0&&(O===null?Pn([e]):O.push(e)),!r.is_fork&&Le.size>0&&!At&&Tn()}return t}function Tn(){At=!1;for(const e of Le)(e.f&y)!==0&&w(e,F),me(e)&&ce(e);Le.clear()}function xr(e,t=1){var n=ie(e),r=t===1?n++:n--;return H(e,n),r}function Pe(e){H(e,e.v+1)}function St(e,t){var n=e.reactions;if(n!==null)for(var r=ge(),s=n.length,i=0;i<s;i++){var o=n[i],l=o.f;if(!(!r&&o===d)){var f=(l&T)===0;if(f&&w(o,t),(l&E)!==0){var a=o;D?.delete(a),(l&Q)===0&&(l&x&&(o.f|=Q),St(a,F))}else f&&((l&z)!==0&&j!==null&&j.add(o),Y(o))}}}function he(e){if(typeof e!="object"||e===null||W in e)return e;const t=ot(e);if(t!==Gt&&t!==zt)return e;var n=new Map,r=Vt(e),s=q(0),i=J,o=l=>{if(J===i)return l();var f=v,a=J;G(null),lt(i);var u=l();return G(f),lt(a),u};return r&&n.set("length",q(e.length)),new Proxy(e,{defineProperty(l,f,a){(!("value"in a)||a.configurable===!1||a.enumerable===!1||a.writable===!1)&&tn();var u=n.get(f);return u===void 0?o(()=>{var c=q(a.value);return n.set(f,c),c}):H(u,a.value,!0),!0},deleteProperty(l,f){var a=n.get(f);if(a===void 0){if(f in l){const u=o(()=>q(b));n.set(f,u),Pe(s)}}else H(a,b),Pe(s);return!0},get(l,f,a){if(f===W)return e;var u=n.get(f),c=f in l;if(u===void 0&&(!c||pe(l,f)?.writable)&&(u=o(()=>{var g=he(c?l[f]:b),h=q(g);return h}),n.set(f,u)),u!==void 0){var _=ie(u);return _===b?void 0:_}return Reflect.get(l,f,a)},getOwnPropertyDescriptor(l,f){var a=Reflect.getOwnPropertyDescriptor(l,f);if(a&&"value"in a){var u=n.get(f);u&&(a.value=ie(u))}else if(a===void 0){var c=n.get(f),_=c?.v;if(c!==void 0&&_!==b)return{enumerable:!0,configurable:!0,value:_,writable:!0}}return a},has(l,f){if(f===W)return!0;var a=n.get(f),u=a!==void 0&&a.v!==b||Reflect.has(l,f);if(a!==void 0||d!==null&&(!u||pe(l,f)?.writable)){a===void 0&&(a=o(()=>{var _=u?he(l[f]):b,g=q(_);return g}),n.set(f,a));var c=ie(a);if(c===b)return!1}return u},set(l,f,a,u){var c=n.get(f),_=f in l;if(r&&f==="length")for(var g=a;g<c.v;g+=1){var h=n.get(g+"");h!==void 0?H(h,b):g in l&&(h=o(()=>q(b)),n.set(g+"",h))}if(c===void 0)(!_||pe(l,f)?.writable)&&(c=o(()=>q(void 0)),H(c,he(a)),n.set(f,c));else{_=c.v!==b;var I=o(()=>he(a));H(c,I)}var Je=Reflect.getOwnPropertyDescriptor(l,f);if(Je?.set&&Je.set.call(u,a),!_){if(r&&typeof f=="string"){var Qe=n.get("length"),De=Number(f);Number.isInteger(De)&&De>=Qe.v&&H(Qe,De+1)}Pe(s)}return!0},ownKeys(l){ie(s);var f=Reflect.ownKeys(l).filter(c=>{var _=n.get(c);return _===void 0||_.v!==b});for(var[a,u]of n)u.v!==b&&!(a in l)&&f.push(a);return f},setPrototypeOf(){nn()}})}function st(e){try{if(e!==null&&typeof e=="object"&&W in e)return e[W]}catch{}return e}function kr(e,t){return Object.is(st(e),st(t))}var it,An,Sn,Rt,Nt;function Ir(){if(it===void 0){it=window,An=document,Sn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Rt=pe(t,"firstChild").get,Nt=pe(t,"nextSibling").get,et(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),et(n)&&(n.__t=void 0)}}function Oe(e=""){return document.createTextNode(e)}function Ye(e){return Rt.call(e)}function K(e){return Nt.call(e)}function Dr(e,t){if(!ee)return Ye(e);var n=Ye(R);if(n===null)n=R.appendChild(Oe());else if(t&&n.nodeType!==xe){var r=Oe();return n?.before(r),le(r),r}return t&&Xe(n),le(n),n}function Pr(e,t=!1){if(!ee){var n=Ye(e);return n instanceof Comment&&n.data===""?K(n):n}if(t){if(R?.nodeType!==xe){var r=Oe();return R?.before(r),le(r),r}Xe(R)}return R}function Cr(e,t=1,n=!1){let r=ee?R:e;for(var s;t--;)s=r,r=K(r);if(!ee)return r;if(n){if(r?.nodeType!==xe){var i=Oe();return r===null?s?.after(i):r.before(i),le(i),i}Xe(r)}return le(r),r}function Mr(e){e.textContent=""}function Fr(){return!1}function Lr(e,t,n){return document.createElementNS(t??ln,e,void 0)}function Xe(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===xe;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function jr(e,t){if(t){const n=document.body;e.autofocus=!0,Me(()=>{document.activeElement===n&&e.focus()})}}let ft=!1;function Rn(){ft||(ft=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Ze(e){var t=v,n=d;G(null),ue(null);try{return e()}finally{G(t),ue(n)}}function Yr(e,t,n,r=n){e.addEventListener(t,()=>Ze(n));const s=e.__on_r;s?e.__on_r=()=>{s(),r(!0)}:e.__on_r=()=>r(!0),Rn()}function Ot(e){d===null&&(v===null&&Qt(),Jt()),ne&&Wt()}function Nn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function C(e,t){var n=d;n!==null&&(n.f&M)!==0&&(e|=M);var r={ctx:m,deps:null,nodes:null,f:e|T|x,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null},s=r;if((e&_e)!==0)oe!==null?oe.push(r):Y(r);else if(t!==null){try{ce(r)}catch(o){throw te(r),o}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&(s.f&Ee)===0&&(s=s.first,(e&z)!==0&&(e&Se)!==0&&s!==null&&(s.f|=Se))}if(s!==null&&(s.parent=n,n!==null&&Nn(s,n),v!==null&&(v.f&E)!==0&&(e&re)===0)){var i=v;(i.effects??=[]).push(s)}return r}function xt(){return v!==null&&!P}function On(e){const t=C(ae,null);return w(t,y),t.teardown=e,t}function qr(e){Ot();var t=d.f,n=!v&&(t&L)!==0&&(t&ve)===0;if(n){var r=m;(r.e??=[]).push(e)}else return kt(e)}function kt(e){return C(_e|ct,e)}function Hr(e){return Ot(),C(ae|ct,e)}function Vr(e){de.ensure();const t=C(re|Ee,e);return(n={})=>new Promise(r=>{n.outro?Dn(t,()=>{te(t),r(void 0)}):(te(t),r(void 0))})}function Ur(e){return C(_e,e)}function xn(e){return C(Ve|Ee,e)}function Br(e,t=0){return C(ae|t,e)}function Gr(e,t=[],n=[],r=[]){hn(r,t,n,s=>{C(ae,()=>e(...s.map(ie)))})}function zr(e,t=0){var n=C(z|t,e);return n}function Kr(e,t=0){var n=C(He|t,e);return n}function $r(e){return C(L|Ee,e)}function It(e){var t=e.teardown;if(t!==null){const n=ne,r=v;at(!0),G(null);try{t.call(null)}finally{at(n),G(r)}}}function We(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const s=n.ac;s!==null&&Ze(()=>{s.abort($)});var r=n.next;(n.f&re)!==0?n.parent=null:te(n,t),n=r}}function kn(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&L)===0&&te(t),t=n}}function te(e,t=!0){var n=!1;(t||(e.f&Xt)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(In(e.nodes.start,e.nodes.end),n=!0),We(e,t&&!n),be(e,0),w(e,V);var r=e.nodes&&e.nodes.t;if(r!==null)for(const i of r)i.stop();It(e);var s=e.parent;s!==null&&s.first!==null&&Dt(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function In(e,t){for(;e!==null;){var n=e===t?null:K(e);e.remove(),e=n}}function Dt(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Dn(e,t,n=!0){var r=[];Pt(e,r,!0);var s=()=>{n&&te(e),t&&t()},i=r.length;if(i>0){var o=()=>--i||s();for(var l of r)l.out(o)}else s()}function Pt(e,t,n){if((e.f&M)===0){e.f^=M;var r=e.nodes&&e.nodes.t;if(r!==null)for(const l of r)(l.is_global||n)&&t.push(l);for(var s=e.first;s!==null;){var i=s.next,o=(s.f&Se)!==0||(s.f&L)!==0&&(e.f&z)!==0;Pt(s,t,o?n:!1),s=i}}}function Xr(e){Ct(e,!0)}function Ct(e,t){if((e.f&M)!==0){e.f^=M,(e.f&y)===0&&(w(e,T),Y(e));for(var n=e.first;n!==null;){var r=n.next,s=(n.f&Se)!==0||(n.f&L)!==0;Ct(n,s?t:!1),n=r}var i=e.nodes&&e.nodes.t;if(i!==null)for(const o of i)(o.is_global||t)&&o.in()}}function Zr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var s=n===r?null:K(n);t.append(n),n=s}}let Ae=!1,ne=!1;function at(e){ne=e}let v=null,P=!1;function G(e){v=e}let d=null;function ue(e){d=e}let k=null;function Mt(e){v!==null&&(k===null?k=[e]:k.push(e))}let S=null,N=0,O=null;function Pn(e){O=e}let Ft=1,Z=0,J=Z;function lt(e){J=e}function Lt(){return++Ft}function me(e){var t=e.f;if((t&T)!==0)return!0;if(t&E&&(e.f&=~Q),(t&F)!==0){for(var n=e.deps,r=n.length,s=0;s<r;s++){var i=n[s];if(me(i)&&mt(i),i.wv>e.wv)return!0}(t&x)!==0&&D===null&&w(e,y)}return!1}function jt(e,t,n=!0){var r=e.reactions;if(r!==null&&!(k!==null&&fe.call(k,e)))for(var s=0;s<r.length;s++){var i=r[s];(i.f&E)!==0?jt(i,t,!1):t===i&&(n?w(i,T):(i.f&y)!==0&&w(i,F),Y(i))}}function Yt(e){var t=S,n=N,r=O,s=v,i=k,o=m,l=P,f=J,a=e.f;S=null,N=0,O=null,v=(a&(L|re))===0?e:null,k=null,Re(e.ctx),P=!1,J=++Z,e.ac!==null&&(Ze(()=>{e.ac.abort($)}),e.ac=null);try{e.f|=Ce;var u=e.fn,c=u();e.f|=ve;var _=e.deps,g=p?.is_fork;if(S!==null){var h;if(g||be(e,N),_!==null&&N>0)for(_.length=N+S.length,h=0;h<S.length;h++)_[N+h]=S[h];else e.deps=_=S;if(xt()&&(e.f&x)!==0)for(h=N;h<_.length;h++)(_[h].reactions??=[]).push(e)}else!g&&_!==null&&N<_.length&&(be(e,N),_.length=N);if(ge()&&O!==null&&!P&&_!==null&&(e.f&(E|F|T))===0)for(h=0;h<O.length;h++)jt(O[h],e);if(s!==null&&s!==e){if(Z++,s.deps!==null)for(let I=0;I<n;I+=1)s.deps[I].rv=Z;if(t!==null)for(const I of t)I.rv=Z;O!==null&&(r===null?r=O:r.push(...O))}return(e.f&U)!==0&&(e.f^=U),c}catch(I){return un(I)}finally{e.f^=Ce,S=t,N=n,O=r,v=s,k=i,Re(o),P=l,J=f}}function Cn(e,t){let n=t.reactions;if(n!==null){var r=Ut.call(n,e);if(r!==-1){var s=n.length-1;s===0?n=t.reactions=null:(n[r]=n[s],n.pop())}}if(n===null&&(t.f&E)!==0&&(S===null||!fe.call(S,t))){var i=t;(i.f&x)!==0&&(i.f^=x,i.f&=~Q),Ge(i),mn(i),be(i,0)}}function be(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Cn(e,n[r])}function ce(e){var t=e.f;if((t&V)===0){w(e,y);var n=d,r=Ae;d=e,Ae=!0;try{(t&(z|He))!==0?kn(e):We(e),It(e);var s=Yt(e);e.teardown=typeof s=="function"?s:null,e.wv=Ft;var i}finally{Ae=r,d=n}}}async function Wr(){await Promise.resolve(),vn()}function Jr(){return de.ensure().settled()}function ie(e){var t=e.f,n=(t&E)!==0;if(v!==null&&!P){var r=d!==null&&(d.f&V)!==0;if(!r&&(k===null||!fe.call(k,e))){var s=v.deps;if((v.f&Ce)!==0)e.rv<Z&&(e.rv=Z,S===null&&s!==null&&s[N]===e?N++:S===null?S=[e]:S.push(e));else{(v.deps??=[]).push(e);var i=e.reactions;i===null?e.reactions=[v]:fe.call(i,v)||i.push(v)}}}if(ne&&B.has(e))return B.get(e);if(n){var o=e;if(ne){var l=o.v;return((o.f&y)===0&&o.reactions!==null||Ht(o))&&(l=Ke(o)),B.set(o,l),l}var f=(o.f&x)===0&&!P&&v!==null&&(Ae||(v.f&x)!==0),a=(o.f&ve)===0;me(o)&&(f&&(o.f|=x),mt(o)),f&&!a&&(Tt(o),qt(o))}if(D?.has(e))return D.get(e);if((e.f&U)!==0)throw e.v;return e.v}function qt(e){if(e.f|=x,e.deps!==null)for(const t of e.deps)(t.reactions??=[]).push(e),(t.f&E)!==0&&(t.f&x)===0&&(Tt(t),qt(t))}function Ht(e){if(e.v===b)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(B.has(t)||(t.f&E)!==0&&Ht(t))return!0;return!1}function Mn(e){var t=P;try{return P=!0,e()}finally{P=t}}function Qr(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(W in e)qe(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&W in n&&qe(n)}}}function qe(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let r in e)try{qe(e[r],t)}catch{}const n=ot(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const r=Bt(n);for(let s in r){const i=r[s].get;if(i)try{i.call(e)}catch{}}}}}function Fn(e,t,n){if(e==null)return t(void 0),we;const r=Mn(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const se=[];function es(e,t=we){let n=null;const r=new Set;function s(l){if(dt(e,l)&&(e=l,n)){const f=!se.length;for(const a of r)a[1](),se.push(a,e);if(f){for(let a=0;a<se.length;a+=2)se[a][0](se[a+1]);se.length=0}}}function i(l){s(l(e))}function o(l,f=we){const a=[l,f];return r.add(a),r.size===1&&(n=t(s,i)||we),l(e),()=>{r.delete(a),r.size===0&&n&&(n(),n=null)}}return{set:s,update:i,subscribe:o}}function ts(e){let t;return Fn(e,n=>t=n)(),t}export{ue as $,Zr as A,Fr as B,zr as C,br as D,Se as E,Tr as F,fn as G,sn as H,mr as I,le as J,yr as K,On as L,jn as M,we as N,Or as O,Fn as P,ts as Q,H as R,d as S,$e as T,pe as U,Zn as V,ir as W,he as X,ne as Y,V as Z,xr as _,Mn as a,nr as a$,fr as a0,sr as a1,rr as a2,bn as a3,Yn as a4,W as a5,Un as a6,ar as a7,Ur as a8,Br as a9,Lr as aA,Ye as aB,Sn as aC,cr as aD,_r as aE,ve as aF,xe as aG,Xe as aH,Ir as aI,_t as aJ,K as aK,Ue as aL,Xn as aM,Mr as aN,Vr as aO,Ln as aP,an as aQ,Be as aR,Hn as aS,Xt as aT,it as aU,An as aV,er as aW,Vn as aX,$n as aY,Vt as aZ,Jn as a_,Me as aa,vn as ab,Wr as ac,q as ad,Nr as ae,xt as af,Pe as ag,$t as ah,vr as ai,de as aj,w as ak,T as al,Y as am,F as an,_n as ao,G as ap,Re as aq,un as ar,v as as,je as at,gr as au,Ne as av,Ee as aw,Wn as ax,wr as ay,Ze as az,Hr as b,Qn as b0,M as b1,L as b2,tr as b3,z as b4,ur as b5,lr as b6,or as b7,Kn as b8,dr as b9,Kr as ba,pr as bb,kr as bc,hn as bd,hr as be,zn as bf,jr as bg,b as bh,Rn as bi,ln as bj,ot as bk,Bn as bl,Bt as bm,Yr as bn,nt as bo,es as bp,Jr as bq,m as c,qn as d,Qr as e,ze as f,ie as g,Ar as h,Pr as i,Rr as j,Dr as k,ke as l,Er as m,Xr as n,te as o,Sr as p,Dn as q,Kt as r,Cr as s,Gr as t,qr as u,Oe as v,$r as w,p as x,ee as y,R as z};
@@ -1,4 +0,0 @@
1
- import{v as K,C as _e,aW as Fe,y as w,J as z,aB as Le,D as J,g as G,F as sr,G as ir,I as ye,K as L,z as F,aJ as nr,aQ as or,at as Ae,x as P,aX as I,w as j,aY as fr,B as lr,a3 as ur,aZ as Me,aP as pe,a_ as cr,a$ as dr,O as vr,T as Ee,b0 as _r,n as Pe,q as ze,b1 as se,aa as he,b2 as pr,b3 as hr,aN as gr,o as X,aK as br,E as ge,S as Ge,b4 as mr,aF as yr,a8 as be,a as Z,b5 as Ar,a4 as Er,N as W,az as We,b6 as wr,b7 as Tr,b8 as Sr,aA as Nr,b9 as kr,L as Be,ba as De,bb as Cr,bc as Ir,bd as $r,be as Or,bf as V,bg as Rr,bh as Fr,bi as Lr,bj as Mr,bk as Pr,bl as zr,bm as Gr,bn as Wr,ac as Br,a9 as Dr,bo as Hr,X as Ur,p as He,j as Ue,e as M,k as je,s as jr,m as Ve,i as qe,ae as Vr,aS as qr,t as Yr,bp as q}from"./Bj1t19nj.js";import{B as Ye,l as ue,p as R,s as Kr}from"./BWM6cuy1.js";import{i as Jr,j as Xr,k as Zr,l as Y,n as Qr,b as xr,d as et,o as rt,p as tt,q as at,a as Q,e as st,c as Ke,s as it,f as nt}from"./DUglripS.js";import{i as ot}from"./Mkbhf_NF.js";function ft(e,r){return r}function lt(e,r,t){for(var a=[],s=r.length,i,n=r.length,f=0;f<s;f++){let p=r[f];ze(p,()=>{if(i){if(i.pending.delete(p),i.done.add(p),i.pending.size===0){var u=e.outrogroups;ce(pe(i.done)),u.delete(i),u.size===0&&(e.outrogroups=null)}}else n-=1},!1)}if(n===0){var v=a.length===0&&t!==null;if(v){var d=t,o=d.parentNode;gr(o),o.append(d),e.items.clear()}ce(r,!v)}else i={pending:new Set(r),done:new Set},(e.outrogroups??=new Set).add(i)}function ce(e,r=!0){for(var t=0;t<e.length;t++)X(e[t],r)}var we;function ut(e,r,t,a,s,i=null){var n=e,f=new Map,v=(r&Fe)!==0;if(v){var d=e;n=w?z(Le(d)):d.appendChild(K())}w&&J();var o=null,p=ur(()=>{var c=t();return Me(c)?c:c==null?[]:pe(c)}),u,_=!0;function b(){l.fallback=o,ct(l,u,n,r,a),o!==null&&(u.length===0?(o.f&I)===0?Pe(o):(o.f^=I,U(o,null,n)):ze(o,()=>{o=null}))}var g=_e(()=>{u=G(p);var c=u.length;let E=!1;if(w){var N=sr(n)===ir;N!==(c===0)&&(n=ye(),z(n),L(!1),E=!0)}for(var y=new Set,k=P,m=lr(),h=0;h<c;h+=1){w&&F.nodeType===nr&&F.data===or&&(n=F,E=!0,L(!1));var T=u[h],S=a(T,h),A=_?null:f.get(S);A?(A.v&&Ae(A.v,T),A.i&&Ae(A.i,h),m&&k.unskip_effect(A.e)):(A=dt(f,_?n:we??=K(),T,S,h,s,r,t),_||(A.e.f|=I),f.set(S,A)),y.add(S)}if(c===0&&i&&!o&&(_?o=j(()=>i(n)):(o=j(()=>i(we??=K())),o.f|=I)),c>y.size&&fr(),w&&c>0&&z(ye()),!_)if(m){for(const[te,ae]of f)y.has(te)||k.skip_effect(ae.e);k.oncommit(b),k.ondiscard(()=>{})}else b();E&&L(!0),G(p)}),l={effect:g,items:f,outrogroups:null,fallback:o};_=!1,w&&(n=F)}function B(e){for(;e!==null&&(e.f&pr)===0;)e=e.next;return e}function ct(e,r,t,a,s){var i=(a&hr)!==0,n=r.length,f=e.items,v=B(e.effect.first),d,o=null,p,u=[],_=[],b,g,l,c;if(i)for(c=0;c<n;c+=1)b=r[c],g=s(b,c),l=f.get(g).e,(l.f&I)===0&&(l.nodes?.a?.measure(),(p??=new Set).add(l));for(c=0;c<n;c+=1){if(b=r[c],g=s(b,c),l=f.get(g).e,e.outrogroups!==null)for(const A of e.outrogroups)A.pending.delete(l),A.done.delete(l);if((l.f&I)!==0)if(l.f^=I,l===v)U(l,null,t);else{var E=o?o.next:v;l===e.effect.last&&(e.effect.last=l.prev),l.prev&&(l.prev.next=l.next),l.next&&(l.next.prev=l.prev),$(e,o,l),$(e,l,E),U(l,E,t),o=l,u=[],_=[],v=B(o.next);continue}if((l.f&se)!==0&&(Pe(l),i&&(l.nodes?.a?.unfix(),(p??=new Set).delete(l))),l!==v){if(d!==void 0&&d.has(l)){if(u.length<_.length){var N=_[0],y;o=N.prev;var k=u[0],m=u[u.length-1];for(y=0;y<u.length;y+=1)U(u[y],N,t);for(y=0;y<_.length;y+=1)d.delete(_[y]);$(e,k.prev,m.next),$(e,o,k),$(e,m,N),v=N,o=m,c-=1,u=[],_=[]}else d.delete(l),U(l,v,t),$(e,l.prev,l.next),$(e,l,o===null?e.effect.first:o.next),$(e,o,l),o=l;continue}for(u=[],_=[];v!==null&&v!==l;)(d??=new Set).add(v),_.push(v),v=B(v.next);if(v===null)continue}(l.f&I)===0&&u.push(l),o=l,v=B(l.next)}if(e.outrogroups!==null){for(const A of e.outrogroups)A.pending.size===0&&(ce(pe(A.done)),e.outrogroups?.delete(A));e.outrogroups.size===0&&(e.outrogroups=null)}if(v!==null||d!==void 0){var h=[];if(d!==void 0)for(l of d)(l.f&se)===0&&h.push(l);for(;v!==null;)(v.f&se)===0&&v!==e.fallback&&h.push(v),v=B(v.next);var T=h.length;if(T>0){var S=(a&Fe)!==0&&n===0?t:null;if(i){for(c=0;c<T;c+=1)h[c].nodes?.a?.measure();for(c=0;c<T;c+=1)h[c].nodes?.a?.fix()}lt(e,h,S)}}i&&he(()=>{if(p!==void 0)for(l of p)l.nodes?.a?.apply()})}function dt(e,r,t,a,s,i,n,f){var v=(n&cr)!==0?(n&dr)===0?vr(t,!1,!1):Ee(t):null,d=(n&_r)!==0?Ee(s):null;return{v,i:d,e:j(()=>(i(r,v??t,d??s,f),()=>{e.delete(a)}))}}function U(e,r,t){if(e.nodes)for(var a=e.nodes.start,s=e.nodes.end,i=r&&(r.f&I)===0?r.nodes.start:t;a!==null;){var n=br(a);if(i.before(a),a===s)return;a=n}}function $(e,r,t){r===null?e.effect.first=t:r.next=t,t===null?e.effect.last=r:t.prev=r}function Je(e,r,t,a,s){w&&J();var i=r.$$slots?.[t],n=!1;i===!0&&(i=r.children,n=!0),i===void 0||i(e,n?()=>a:a)}function Vt(e,r,...t){var a=new Ye(e);_e(()=>{const s=r()??null;a.ensure(s,s&&(i=>s(i,...t)))},ge)}const vt=()=>performance.now(),C={tick:e=>requestAnimationFrame(e),now:()=>vt(),tasks:new Set};function Xe(){const e=C.now();C.tasks.forEach(r=>{r.c(e)||(C.tasks.delete(r),r.f())}),C.tasks.size!==0&&C.tick(Xe)}function _t(e){let r;return C.tasks.size===0&&C.tick(Xe),{promise:new Promise(t=>{C.tasks.add(r={c:e,f:t})}),abort(){C.tasks.delete(r)}}}function x(e,r){We(()=>{e.dispatchEvent(new CustomEvent(r))})}function pt(e){if(e==="float")return"cssFloat";if(e==="offset")return"cssOffset";if(e.startsWith("--"))return e;const r=e.split("-");return r.length===1?r[0]:r[0]+r.slice(1).map(t=>t[0].toUpperCase()+t.slice(1)).join("")}function Te(e){const r={},t=e.split(";");for(const a of t){const[s,i]=a.split(":");if(!s||i===void 0)break;const n=pt(s.trim());r[n]=i.trim()}return r}const ht=e=>e;function qt(e,r,t,a){var s=(e&wr)!==0,i=(e&Tr)!==0,n=s&&i,f=(e&Ar)!==0,v=n?"both":s?"in":"out",d,o=r.inert,p=r.style.overflow,u,_;function b(){return We(()=>d??=t()(r,a?.()??{},{direction:v}))}var g={is_global:f,in(){if(r.inert=o,!s){_?.abort(),_?.reset?.();return}i||u?.abort(),u=de(r,b(),_,1,()=>{x(r,"introend"),u?.abort(),u=d=void 0,r.style.overflow=p})},out(N){if(!i){N?.(),d=void 0;return}r.inert=!0,_=de(r,b(),u,0,()=>{x(r,"outroend"),N?.()})},stop:()=>{u?.abort(),_?.abort()}},l=Ge;if((l.nodes.t??=[]).push(g),s&&Jr){var c=f;if(!c){for(var E=l.parent;E&&(E.f&ge)!==0;)for(;(E=E.parent)&&(E.f&mr)===0;);c=!E||(E.f&yr)!==0}c&&be(()=>{Z(()=>g.in())})}}function de(e,r,t,a,s){var i=a===1;if(Er(r)){var n,f=!1;return he(()=>{if(!f){var l=r({direction:i?"in":"out"});n=de(e,l,t,a,s)}}),{abort:()=>{f=!0,n?.abort()},deactivate:()=>n.deactivate(),reset:()=>n.reset(),t:()=>n.t()}}if(t?.deactivate(),!r?.duration&&!r?.delay)return x(e,i?"introstart":"outrostart"),s(),{abort:W,deactivate:W,reset:W,t:()=>a};const{delay:v=0,css:d,tick:o,easing:p=ht}=r;var u=[];if(i&&t===void 0&&(o&&o(0,1),d)){var _=Te(d(0,1));u.push(_,_)}var b=()=>1-a,g=e.animate(u,{duration:v,fill:"forwards"});return g.onfinish=()=>{g.cancel(),x(e,i?"introstart":"outrostart");var l=t?.t()??1-a;t?.abort();var c=a-l,E=r.duration*Math.abs(c),N=[];if(E>0){var y=!1;if(d)for(var k=Math.ceil(E/16.666666666666668),m=0;m<=k;m+=1){var h=l+c*p(m/k),T=Te(d(h,1-h));N.push(T),y||=T.overflow==="hidden"}y&&(e.style.overflow="hidden"),b=()=>{var S=g.currentTime;return l+c*p(S/E)},o&&_t(()=>{if(g.playState!=="running")return!1;var S=b();return o(S,1-S),!0})}g=e.animate(N,{duration:E,fill:"forwards"}),g.onfinish=()=>{b=()=>a,o?.(a,1-a),s()}},{abort:()=>{g&&(g.cancel(),g.effect=null,g.onfinish=W)},deactivate:()=>{s=W},reset:()=>{a===0&&o?.(1,0)},t:()=>b()}}function gt(e,r,t,a,s,i){let n=w;w&&J();var f=null;w&&F.nodeType===Sr&&(f=F,J());var v=w?F:e,d=new Ye(v,!1);_e(()=>{const o=r()||null;var p=kr;if(o===null){d.ensure(null,null),Y(!0);return}return d.ensure(o,u=>{if(o){if(f=w?f:Nr(o,p),Xr(f,f),a){w&&Zr(o)&&f.append(document.createComment(""));var _=w?Le(f):f.appendChild(K());w&&(_===null?L(!1):z(_)),a(f,_)}Ge.nodes.end=f,u.before(f)}w&&z(u)}),Y(!0),()=>{o&&Y(!1)}},ge),Be(()=>{Y(!0)}),n&&(L(!0),z(v))}function bt(e,r){var t=void 0,a;De(()=>{t!==(t=r())&&(a&&(X(a),a=null),t&&(a=j(()=>{be(()=>t(e))})))})}function Ze(e){var r,t,a="";if(typeof e=="string"||typeof e=="number")a+=e;else if(typeof e=="object")if(Array.isArray(e)){var s=e.length;for(r=0;r<s;r++)e[r]&&(t=Ze(e[r]))&&(a&&(a+=" "),a+=t)}else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}function mt(){for(var e,r,t=0,a="",s=arguments.length;t<s;t++)(e=arguments[t])&&(r=Ze(e))&&(a&&(a+=" "),a+=r);return a}function yt(e){return typeof e=="object"?mt(e):e??""}const Se=[...`
2
- \r\f \v\uFEFF`];function At(e,r,t){var a=e==null?"":""+e;if(r&&(a=a?a+" "+r:r),t){for(var s of Object.keys(t))if(t[s])a=a?a+" "+s:s;else if(a.length)for(var i=s.length,n=0;(n=a.indexOf(s,n))>=0;){var f=n+i;(n===0||Se.includes(a[n-1]))&&(f===a.length||Se.includes(a[f]))?a=(n===0?"":a.substring(0,n))+a.substring(f+1):n=f}}return a===""?null:a}function Ne(e,r=!1){var t=r?" !important;":";",a="";for(var s of Object.keys(e)){var i=e[s];i!=null&&i!==""&&(a+=" "+s+": "+i+t)}return a}function ie(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function Et(e,r){if(r){var t="",a,s;if(Array.isArray(r)?(a=r[0],s=r[1]):a=r,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var i=!1,n=0,f=!1,v=[];a&&v.push(...Object.keys(a).map(ie)),s&&v.push(...Object.keys(s).map(ie));var d=0,o=-1;const g=e.length;for(var p=0;p<g;p++){var u=e[p];if(f?u==="/"&&e[p-1]==="*"&&(f=!1):i?i===u&&(i=!1):u==="/"&&e[p+1]==="*"?f=!0:u==='"'||u==="'"?i=u:u==="("?n++:u===")"&&n--,!f&&i===!1&&n===0){if(u===":"&&o===-1)o=p;else if(u===";"||p===g-1){if(o!==-1){var _=ie(e.substring(d,o).trim());if(!v.includes(_)){u!==";"&&p++;var b=e.substring(d,p).trim();t+=" "+b+";"}}d=p+1,o=-1}}}}return a&&(t+=Ne(a)),s&&(t+=Ne(s,!0)),t=t.trim(),t===""?null:t}return e==null?null:String(e)}function Qe(e,r,t,a,s,i){var n=e.__className;if(w||n!==t||n===void 0){var f=At(t,a,i);(!w||f!==e.getAttribute("class"))&&(f==null?e.removeAttribute("class"):r?e.className=f:e.setAttribute("class",f)),e.__className=t}else if(i&&s!==i)for(var v in i){var d=!!i[v];(s==null||d!==!!s[v])&&e.classList.toggle(v,d)}return i}function ne(e,r={},t,a){for(var s in t){var i=t[s];r[s]!==i&&(t[s]==null?e.style.removeProperty(s):e.style.setProperty(s,i,a))}}function wt(e,r,t,a){var s=e.__style;if(w||s!==r){var i=Et(r,a);(!w||i!==e.getAttribute("style"))&&(i==null?e.removeAttribute("style"):e.style.cssText=i),e.__style=r}else a&&(Array.isArray(a)?(ne(e,t?.[0],a[0]),ne(e,t?.[1],a[1],"important")):ne(e,t,a));return a}function ve(e,r,t=!1){if(e.multiple){if(r==null)return;if(!Me(r))return Cr();for(var a of e.options)a.selected=r.includes(ke(a));return}for(a of e.options){var s=ke(a);if(Ir(s,r)){a.selected=!0;return}}(!t||r!==void 0)&&(e.selectedIndex=-1)}function Tt(e){var r=new MutationObserver(()=>{ve(e,e.__value)});r.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Be(()=>{r.disconnect()})}function ke(e){return"__value"in e?e.__value:e.value}const D=Symbol("class"),H=Symbol("style"),xe=Symbol("is custom element"),er=Symbol("is html"),St=V?"link":"LINK",Nt=V?"input":"INPUT",kt=V?"option":"OPTION",Ct=V?"select":"SELECT",It=V?"progress":"PROGRESS";function $t(e){if(w){var r=!1,t=()=>{if(!r){if(r=!0,e.hasAttribute("value")){var a=e.value;ee(e,"value",null),e.value=a}if(e.hasAttribute("checked")){var s=e.checked;ee(e,"checked",null),e.checked=s}}};e.__on_r=t,he(t),Lr()}}function Yt(e,r){var t=me(e);t.value===(t.value=r??void 0)||e.value===r&&(r!==0||e.nodeName!==It)||(e.value=r??"")}function Ot(e,r){r?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function ee(e,r,t,a){var s=me(e);w&&(s[r]=e.getAttribute(r),r==="src"||r==="srcset"||r==="href"&&e.nodeName===St)||s[r]!==(s[r]=t)&&(r==="loading"&&(e[zr]=t),t==null?e.removeAttribute(r):typeof t!="string"&&rr(e).includes(r)?e[r]=t:e.setAttribute(r,t))}function Rt(e,r,t,a,s=!1,i=!1){if(w&&s&&e.nodeName===Nt){var n=e,f=n.type==="checkbox"?"defaultChecked":"defaultValue";f in t||$t(n)}var v=me(e),d=v[xe],o=!v[er];let p=w&&d;p&&L(!1);var u=r||{},_=e.nodeName===kt;for(var b in r)b in t||(t[b]=null);t.class?t.class=yt(t.class):t[D]&&(t.class=null),t[H]&&(t.style??=null);var g=rr(e);for(const m in t){let h=t[m];if(_&&m==="value"&&h==null){e.value=e.__value="",u[m]=h;continue}if(m==="class"){var l=e.namespaceURI==="http://www.w3.org/1999/xhtml";Qe(e,l,h,a,r?.[D],t[D]),u[m]=h,u[D]=t[D];continue}if(m==="style"){wt(e,h,r?.[H],t[H]),u[m]=h,u[H]=t[H];continue}var c=u[m];if(!(h===c&&!(h===void 0&&e.hasAttribute(m)))){u[m]=h;var E=m[0]+m[1];if(E!=="$$")if(E==="on"){const T={},S="$$"+m;let A=m.slice(2);var N=at(A);if(Qr(A)&&(A=A.slice(0,-7),T.capture=!0),!N&&c){if(h!=null)continue;e.removeEventListener(A,u[S],T),u[S]=null}if(N)xr(A,e,h),et([A]);else if(h!=null){let te=function(ae){u[m].call(this,ae)};u[S]=rt(A,e,te,T)}}else if(m==="style")ee(e,m,h);else if(m==="autofocus")Rr(e,!!h);else if(!d&&(m==="__value"||m==="value"&&h!=null))e.value=e.__value=h;else if(m==="selected"&&_)Ot(e,h);else{var y=m;o||(y=tt(y));var k=y==="defaultValue"||y==="defaultChecked";if(h==null&&!d&&!k)if(v[m]=null,y==="value"||y==="checked"){let T=e;const S=r===void 0;if(y==="value"){let A=T.defaultValue;T.removeAttribute(y),T.defaultValue=A,T.value=T.__value=S?A:null}else{let A=T.defaultChecked;T.removeAttribute(y),T.defaultChecked=A,T.checked=S?A:!1}}else e.removeAttribute(m);else k||g.includes(y)&&(d||typeof h!="string")?(e[y]=h,y in v&&(v[y]=Fr)):typeof h!="function"&&ee(e,y,h)}}}return p&&L(!0),u}function Ce(e,r,t=[],a=[],s=[],i,n=!1,f=!1){$r(s,t,a,v=>{var d=void 0,o={},p=e.nodeName===Ct,u=!1;if(De(()=>{var b=r(...v.map(G)),g=Rt(e,d,b,i,n,f);u&&p&&"value"in b&&ve(e,b.value);for(let c of Object.getOwnPropertySymbols(o))b[c]||X(o[c]);for(let c of Object.getOwnPropertySymbols(b)){var l=b[c];c.description===Or&&(!d||l!==d[c])&&(o[c]&&X(o[c]),o[c]=j(()=>bt(e,()=>l))),g[c]=l}d=g}),p){var _=e;be(()=>{ve(_,d.value,!0),Tt(_)})}u=!0})}function me(e){return e.__attributes??={[xe]:e.nodeName.includes("-"),[er]:e.namespaceURI===Mr}}var Ie=new Map;function rr(e){var r=e.getAttribute("is")||e.nodeName,t=Ie.get(r);if(t)return t;Ie.set(r,t=[]);for(var a,s=e,i=Element.prototype;i!==s;){a=Gr(s);for(var n in a)a[n].set&&t.push(n);s=Pr(s)}return t}function Kt(e,r,t=r){var a=new WeakSet;Wr(e,"input",async s=>{var i=s?e.defaultValue:e.value;if(i=oe(e)?fe(i):i,t(i),P!==null&&a.add(P),await Br(),i!==(i=r())){var n=e.selectionStart,f=e.selectionEnd,v=e.value.length;if(e.value=i??"",f!==null){var d=e.value.length;n===f&&f===v&&d>v?(e.selectionStart=d,e.selectionEnd=d):(e.selectionStart=n,e.selectionEnd=Math.min(f,d))}}}),(w&&e.defaultValue!==e.value||Z(r)==null&&e.value)&&(t(oe(e)?fe(e.value):e.value),P!==null&&a.add(P)),Dr(()=>{var s=r();if(e===document.activeElement){var i=Hr??P;if(a.has(i))return}oe(e)&&s===fe(e.value)||e.type==="date"&&!s&&!e.value||s!==e.value&&(e.value=s??"")})}function oe(e){var r=e.type;return r==="number"||r==="range"}function fe(e){return e===""?null:+e}const tr="http://localhost:3001/_admin/routes",Ft=e=>({path:e.path??"/",method:e.method??"GET",status:e.status??200,body:e.body??{},enabled:e.enabled??!0,delay:e.delay??0,errorRate:e.errorRate??0,headers:e.headers??{}}),re=Ur({items:[]}),Jt={get items(){return re.items},set items(e){re.items=e}};async function Lt(){try{const r=await(await fetch(tr)).json();re.items=r.map(Ft)}catch(e){console.error("Failed to fetch routes",e)}}async function Xt(){try{await fetch(tr,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(re.items)})}catch(e){console.error("Failed to save routes",e)}}const Mt={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const Pt=e=>{for(const r in e)if(r.startsWith("aria-")||r==="role"||r==="title")return!0;return!1};const $e=(...e)=>e.filter((r,t,a)=>!!r&&r.trim()!==""&&a.indexOf(r)===t).join(" ").trim();var zt=st("<svg><!><!></svg>");function Gt(e,r){const t=ue(r,["children","$$slots","$$events","$$legacy"]),a=ue(t,["name","color","size","strokeWidth","absoluteStrokeWidth","iconNode"]);He(r,!1);let s=R(r,"name",8,void 0),i=R(r,"color",8,"currentColor"),n=R(r,"size",8,24),f=R(r,"strokeWidth",8,2),v=R(r,"absoluteStrokeWidth",8,!1),d=R(r,"iconNode",24,()=>[]);ot();var o=zt();Ce(o,(_,b,g)=>({...Mt,..._,...a,width:n(),height:n(),stroke:i(),"stroke-width":b,class:g}),[()=>Pt(a)?void 0:{"aria-hidden":"true"},()=>(M(v()),M(f()),M(n()),Z(()=>v()?Number(f())*24/Number(n()):f())),()=>(M($e),M(s()),M(t),Z(()=>$e("lucide-icon","lucide",s()?`lucide-${s()}`:"",t.class)))]);var p=je(o);ut(p,1,d,ft,(_,b)=>{var g=Vr(()=>qr(G(b),2));let l=()=>G(g)[0],c=()=>G(g)[1];var E=Ke(),N=qe(E);gt(N,l,!0,(y,k)=>{Ce(y,()=>({...c()}))}),Q(_,E)});var u=jr(p);Je(u,r,"default",{}),Ve(o),Q(e,o),Ue()}function Zt(e,r){const t=ue(r,["children","$$slots","$$events","$$legacy"]);const a=[["path",{d:"m9 18 6-6-6-6"}]];Gt(e,Kr({name:"chevron-right"},()=>t,{get iconNode(){return a},children:(s,i)=>{var n=Ke(),f=qe(n);Je(f,r,"default",{}),Q(s,n)},$$slots:{default:!0}}))}var Wt=nt("<span> </span>");function Qt(e,r){He(r,!0);let t=R(r,"class",3,"");var a=Wt(),s=je(a,!0);Ve(a),Yr(i=>{Qe(a,1,`badge badge-${i??""} ${t()??""}`,"svelte-16wd81y"),it(s,r.label)},[()=>r.type.toLowerCase()]),Q(e,a),Ue()}const Oe=q([]),le=q(!1),xt=q(!1),ea=q(null),ra=q(null);let O=null;function Bt(){O||(O=new WebSocket("ws://localhost:3001"),O.onopen=()=>{console.log("[Phantom] Connected to live stream"),le.set(!0)},O.onmessage=e=>{try{const r=JSON.parse(e.data);if(r.type==="PING")return;if(r.type==="HISTORY"){Oe.set(r.data);return}if(r.type==="CONFIG_UPDATED"){Lt();return}Oe.update(t=>[r,...t].slice(0,1e3))}catch(r){console.error("Failed to parse Websocket message:",r)}},O.onclose=()=>{console.log("[Phantom] Connection lost. Retrying in 3s..."),le.set(!1),O=null,setTimeout(Bt,3e3)},O.onerror=e=>{console.error("WebSocket error:",e),le.set(!1),O?.close()})}function ar(e){const r=e-1;return r*r*r+1}function Re(e){const r=typeof e=="string"&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return r?[parseFloat(r[1]),r[2]||"px"]:[e,"px"]}function ta(e,{delay:r=0,duration:t=400,easing:a=ar,x:s=0,y:i=0,opacity:n=0}={}){const f=getComputedStyle(e),v=+f.opacity,d=f.transform==="none"?"":f.transform,o=v*(1-n),[p,u]=Re(s),[_,b]=Re(i);return{delay:r,duration:t,easing:a,css:(g,l)=>`
3
- transform: ${d} translate(${(1-g)*p}${u}, ${(1-g)*_}${b});
4
- opacity: ${v-o*l}`}}function aa(e,{delay:r=0,duration:t=400,easing:a=ar,axis:s="y"}={}){const i=getComputedStyle(e),n=+i.opacity,f=s==="y"?"height":"width",v=parseFloat(i[f]),d=s==="y"?["top","bottom"]:["left","right"],o=d.map(c=>`${c[0].toUpperCase()}${c.slice(1)}`),p=parseFloat(i[`padding${o[0]}`]),u=parseFloat(i[`padding${o[1]}`]),_=parseFloat(i[`margin${o[0]}`]),b=parseFloat(i[`margin${o[1]}`]),g=parseFloat(i[`border${o[0]}Width`]),l=parseFloat(i[`border${o[1]}Width`]);return{delay:r,duration:t,easing:a,css:c=>`overflow: hidden;opacity: ${Math.min(c*20,1)*n};${f}: ${c*v}px;padding-${d[0]}: ${c*p}px;padding-${d[1]}: ${c*u}px;margin-${d[0]}: ${c*_}px;margin-${d[1]}: ${c*b}px;border-${d[0]}-width: ${c*g}px;border-${d[1]}-width: ${c*l}px;min-${f}: 0`}}export{Qt as B,Zt as C,Gt as I,Qe as a,aa as b,xt as c,Kt as d,ut as e,ta as f,ee as g,Vt as h,ft as i,Oe as j,ea as k,ra as l,le as m,Jt as n,Xt as o,Yt as p,Lt as q,$t as r,Je as s,qt as t,Bt as u};
@@ -1 +0,0 @@
1
- import{u as o,c as t,l as c,a as l}from"./Bj1t19nj.js";function u(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function r(e){t===null&&u(),c&&t.l!==null?a(t).m.push(e):o(()=>{const n=l(e);if(typeof n=="function")return n})}function a(e){var n=e.l;return n.u??={a:[],b:[],m:[]}}export{r as o};
@@ -1,2 +0,0 @@
1
- import{af as ie,g as X,a9 as oe,T as Q,a as le,ag as j,aa as N,z as u,y as _,S as m,ah as q,C as ue,D as Z,G as fe,ai as z,w as y,v as A,aj as x,q as C,A as ce,ak as G,al as de,am as U,an as he,ao as _e,$ as O,ap as k,aq as J,ar as pe,as as ee,c as te,at as ve,o as F,J as R,au as ge,I as me,av as D,E as ye,aw as Ee,ax as Te,ay as be,M as we,az as Ne,L as Ae,aA as Re,aB as S,aC as Se,aD as De,aE as Me,aF as Le,aG as Oe,aH as ke,aI as P,aJ as re,H as Ie,aK as xe,aL as H,K as M,aM as Ce,aN as Fe,aO as Pe,aP as He,p as Ve,aQ as Be,aR as We,j as Ye}from"./Bj1t19nj.js";function $e(t){let e=0,r=Q(0),s;return()=>{ie()&&(X(r),oe(()=>(e===0&&(s=le(()=>t(()=>j(r)))),e+=1,()=>{N(()=>{e-=1,e===0&&(s?.(),s=void 0,j(r))})})))}}var je=ye|Ee;function qe(t,e,r,s){new ze(t,e,r,s)}class ze{parent;is_pending=!1;transform_error;#t;#v=_?u:null;#s;#u;#e;#a=null;#r=null;#n=null;#i=null;#f=0;#l=0;#c=!1;#d=new Set;#h=new Set;#o=null;#y=$e(()=>(this.#o=Q(this.#f),()=>{this.#o=null}));constructor(e,r,s,a){this.#t=e,this.#s=r,this.#u=n=>{var i=m;i.b=this,i.f|=q,s(n)},this.parent=m.b,this.transform_error=a??this.parent?.transform_error??(n=>n),this.#e=ue(()=>{if(_){const n=this.#v;Z();const i=n.data===fe;if(n.data.startsWith(z)){const o=JSON.parse(n.data.slice(z.length));this.#T(o)}else i?this.#b():this.#E()}else this.#g()},je),_&&(this.#t=u)}#E(){try{this.#a=y(()=>this.#u(this.#t))}catch(e){this.error(e)}}#T(e){const r=this.#s.failed;r&&(this.#n=y(()=>{r(this.#t,()=>e,()=>()=>{})}))}#b(){const e=this.#s.pending;e&&(this.is_pending=!0,this.#r=y(()=>e(this.#t)),N(()=>{var r=this.#i=document.createDocumentFragment(),s=A();r.append(s),this.#a=this.#p(()=>(x.ensure(),y(()=>this.#u(s)))),this.#l===0&&(this.#t.before(r),this.#i=null,C(this.#r,()=>{this.#r=null}),this.#_())}))}#g(){try{if(this.is_pending=this.has_pending_snippet(),this.#l=0,this.#f=0,this.#a=y(()=>{this.#u(this.#t)}),this.#l>0){var e=this.#i=document.createDocumentFragment();ce(this.#a,e);const r=this.#s.pending;this.#r=y(()=>r(this.#t))}else this.#_()}catch(r){this.error(r)}}#_(){this.is_pending=!1;for(const e of this.#d)G(e,de),U(e);for(const e of this.#h)G(e,he),U(e);this.#d.clear(),this.#h.clear()}defer_effect(e){_e(e,this.#d,this.#h)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#s.pending}#p(e){var r=m,s=ee,a=te;O(this.#e),k(this.#e),J(this.#e.ctx);try{return e()}catch(n){return pe(n),null}finally{O(r),k(s),J(a)}}#m(e){if(!this.has_pending_snippet()){this.parent&&this.parent.#m(e);return}this.#l+=e,this.#l===0&&(this.#_(),this.#r&&C(this.#r,()=>{this.#r=null}),this.#i&&(this.#t.before(this.#i),this.#i=null))}update_pending_count(e){this.#m(e),this.#f+=e,!(!this.#o||this.#c)&&(this.#c=!0,N(()=>{this.#c=!1,this.#o&&ve(this.#o,this.#f)}))}get_effect_pending(){return this.#y(),X(this.#o)}error(e){var r=this.#s.onerror;let s=this.#s.failed;if(!r&&!s)throw e;this.#a&&(F(this.#a),this.#a=null),this.#r&&(F(this.#r),this.#r=null),this.#n&&(F(this.#n),this.#n=null),_&&(R(this.#v),ge(),R(me()));var a=!1,n=!1;const i=()=>{if(a){be();return}a=!0,n&&Te(),this.#n!==null&&C(this.#n,()=>{this.#n=null}),this.#p(()=>{x.ensure(),this.#g()})},f=o=>{try{n=!0,r?.(o,i),n=!1}catch(l){D(l,this.#e&&this.#e.parent)}s&&(this.#n=this.#p(()=>{x.ensure();try{return y(()=>{var l=m;l.b=this,l.f|=q,s(this.#t,()=>o,()=>i)})}catch(l){return D(l,this.#e.parent),null}}))};N(()=>{var o;try{o=this.transform_error(e)}catch(l){D(l,this.#e&&this.#e.parent);return}o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(f,l=>D(l,this.#e&&this.#e.parent)):f(o)})}}function at(t){return t.endsWith("capture")&&t!=="gotpointercapture"&&t!=="lostpointercapture"}const Ge=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function it(t){return Ge.includes(t)}const Ue={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function ot(t){return t=t.toLowerCase(),Ue[t]??t}const Je=["touchstart","touchmove"];function Ke(t){return Je.includes(t)}const Xe=["textarea","script","style","title"];function lt(t){return Xe.includes(t)}const w=Symbol("events"),ne=new Set,V=new Set;function Qe(t,e,r,s={}){function a(n){if(s.capture||B.call(e,n),!n.cancelBubble)return Ne(()=>r?.call(this,n))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?N(()=>{e.addEventListener(t,a,s)}):e.addEventListener(t,a,s),a}function ut(t,e,r,s,a){var n={capture:s,passive:a},i=Qe(t,e,r,n);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&Ae(()=>{e.removeEventListener(t,i,n)})}function ft(t,e,r){(e[w]??={})[t]=r}function ct(t){for(var e=0;e<t.length;e++)ne.add(t[e]);for(var r of V)r(t)}let K=null;function B(t){var e=this,r=e.ownerDocument,s=t.type,a=t.composedPath?.()||[],n=a[0]||t.target;K=t;var i=0,f=K===t&&t[w];if(f){var o=a.indexOf(f);if(o!==-1&&(e===document||e===window)){t[w]=e;return}var l=a.indexOf(e);if(l===-1)return;o<=l&&(i=o)}if(n=a[i]||t.target,n!==e){we(t,"currentTarget",{configurable:!0,get(){return n||r}});var E=ee,b=m;k(null),O(null);try{for(var g,d=[];n!==null;){var c=n.assignedSlot||n.parentNode||n.host||null;try{var h=n[w]?.[s];h!=null&&(!n.disabled||t.target===n)&&h.call(n,t)}catch(p){g?d.push(p):g=p}if(t.cancelBubble||c===e||c===null)break;n=c}if(g){for(let p of d)queueMicrotask(()=>{throw p});throw g}}finally{t[w]=e,delete t.currentTarget,k(E),O(b)}}}const Ze=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:t=>t});function et(t){return Ze?.createHTML(t)??t}function se(t){var e=Re("template");return e.innerHTML=et(t.replaceAll("<!>","<!---->")),e.content}function v(t,e){var r=m;r.nodes===null&&(r.nodes={start:t,end:e,a:null,t:null})}function dt(t,e){var r=(e&De)!==0,s=(e&Me)!==0,a,n=!t.startsWith("<!>");return()=>{if(_)return v(u,null),u;a===void 0&&(a=se(n?t:"<!>"+t),r||(a=S(a)));var i=s||Se?document.importNode(a,!0):a.cloneNode(!0);if(r){var f=S(i),o=i.lastChild;v(f,o)}else v(i,i);return i}}function tt(t,e,r="svg"){var s=!t.startsWith("<!>"),a=`<${r}>${s?t:"<!>"+t}</${r}>`,n;return()=>{if(_)return v(u,null),u;if(!n){var i=se(a),f=S(i);n=S(f)}var o=n.cloneNode(!0);return v(o,o),o}}function ht(t,e){return tt(t,e,"svg")}function _t(t=""){if(!_){var e=A(t+"");return v(e,e),e}var r=u;return r.nodeType!==Oe?(r.before(r=A()),R(r)):ke(r),v(r,r),r}function pt(){if(_)return v(u,null),u;var t=document.createDocumentFragment(),e=document.createComment(""),r=A();return t.append(e,r),v(e,r),t}function vt(t,e){if(_){var r=m;((r.f&Le)===0||r.nodes.end===null)&&(r.nodes.end=u),Z();return}t!==null&&t.before(e)}let W=!0;function gt(t){W=t}function mt(t,e){var r=e==null?"":typeof e=="object"?`${e}`:e;r!==(t.__t??=t.nodeValue)&&(t.__t=r,t.nodeValue=`${r}`)}function rt(t,e){return ae(t,e)}function yt(t,e){P(),e.intro=e.intro??!1;const r=e.target,s=_,a=u;try{for(var n=S(r);n&&(n.nodeType!==re||n.data!==Ie);)n=xe(n);if(!n)throw H;M(!0),R(n);const i=ae(t,{...e,anchor:n});return M(!1),i}catch(i){if(i instanceof Error&&i.message.split(`
2
- `).some(f=>f.startsWith("https://svelte.dev/e/")))throw i;return i!==H&&console.warn("Failed to hydrate: ",i),e.recover===!1&&Ce(),P(),Fe(r),M(!1),rt(t,e)}finally{M(s),R(a)}}const L=new Map;function ae(t,{target:e,anchor:r,props:s={},events:a,context:n,intro:i=!0,transformError:f}){P();var o=void 0,l=Pe(()=>{var E=r??e.appendChild(A());qe(E,{pending:()=>{}},d=>{Ve({});var c=te;if(n&&(c.c=n),a&&(s.$$events=a),_&&v(d,null),W=i,o=t(d,s)||{},W=!0,_&&(m.nodes.end=u,u===null||u.nodeType!==re||u.data!==Be))throw We(),H;Ye()},f);var b=new Set,g=d=>{for(var c=0;c<d.length;c++){var h=d[c];if(!b.has(h)){b.add(h);var p=Ke(h);for(const I of[e,document]){var T=L.get(I);T===void 0&&(T=new Map,L.set(I,T));var $=T.get(h);$===void 0?(I.addEventListener(h,B,{passive:p}),T.set(h,1)):T.set(h,$+1)}}}};return g(He(ne)),V.add(g),()=>{for(var d of b)for(const p of[e,document]){var c=L.get(p),h=c.get(d);--h==0?(p.removeEventListener(d,B),c.delete(d),c.size===0&&L.delete(p)):c.set(d,h)}V.delete(g),E!==r&&E.parentNode?.removeChild(E)}});return Y.set(o,l),o}let Y=new WeakMap;function Et(t,e){const r=Y.get(t);return r?(Y.delete(t),r(e)):Promise.resolve()}const nt="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(nt);export{vt as a,ft as b,pt as c,ct as d,ht as e,dt as f,ut as g,yt as h,W as i,v as j,lt as k,gt as l,rt as m,at as n,Qe as o,ot as p,it as q,mt as s,_t as t,Et as u};