\n\t\n\n"
+ },
+ version_hash: "1ynwnul"
+};
+
+export async function get_hooks() {
+ let handle;
+ let handleFetch;
+ let handleError;
+ let handleValidationError;
+ let init;
+
+
+ let reroute;
+ let transport;
+
+
+ return {
+ handle,
+ handleFetch,
+ handleError,
+ handleValidationError,
+ init,
+ reroute,
+ transport
+ };
+}
+
+export { set_assets, set_building, set_manifest, set_prerendering, set_private_env, set_public_env, set_read_implementation };
diff --git a/frontend/.svelte-kit/non-ambient.d.ts b/frontend/.svelte-kit/non-ambient.d.ts
new file mode 100644
index 0000000..5235a97
--- /dev/null
+++ b/frontend/.svelte-kit/non-ambient.d.ts
@@ -0,0 +1,42 @@
+
+// this file is generated — do not edit it
+
+
+declare module "svelte/elements" {
+ export interface HTMLAttributes {
+ 'data-sveltekit-keepfocus'?: true | '' | 'off' | undefined | null;
+ 'data-sveltekit-noscroll'?: true | '' | 'off' | undefined | null;
+ 'data-sveltekit-preload-code'?:
+ | true
+ | ''
+ | 'eager'
+ | 'viewport'
+ | 'hover'
+ | 'tap'
+ | 'off'
+ | undefined
+ | null;
+ 'data-sveltekit-preload-data'?: true | '' | 'hover' | 'tap' | 'off' | undefined | null;
+ 'data-sveltekit-reload'?: true | '' | 'off' | undefined | null;
+ 'data-sveltekit-replacestate'?: true | '' | 'off' | undefined | null;
+ }
+}
+
+export {};
+
+
+declare module "$app/types" {
+ export interface AppTypes {
+ RouteId(): "/" | "/settings";
+ RouteParams(): {
+
+ };
+ LayoutParams(): {
+ "/": Record;
+ "/settings": Record
+ };
+ Pathname(): "/" | "/settings" | "/settings/";
+ ResolvedPathname(): `${"" | `/${string}`}${ReturnType}`;
+ Asset(): string & {};
+ }
+}
\ No newline at end of file
diff --git a/frontend/.svelte-kit/output/client/.vite/manifest.json b/frontend/.svelte-kit/output/client/.vite/manifest.json
new file mode 100644
index 0000000..3bad808
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/.vite/manifest.json
@@ -0,0 +1,159 @@
+{
+ ".svelte-kit/generated/client-optimized/app.js": {
+ "file": "_app/immutable/entry/app.B-xBk5-0.js",
+ "name": "entry/app",
+ "src": ".svelte-kit/generated/client-optimized/app.js",
+ "isEntry": true,
+ "imports": [
+ "_CQO205-B.js",
+ "_CWb4Vnhz.js",
+ "_CqZim_6h.js",
+ "_C98uKxzC.js"
+ ],
+ "dynamicImports": [
+ ".svelte-kit/generated/client-optimized/nodes/0.js",
+ ".svelte-kit/generated/client-optimized/nodes/1.js",
+ ".svelte-kit/generated/client-optimized/nodes/2.js",
+ ".svelte-kit/generated/client-optimized/nodes/3.js"
+ ]
+ },
+ ".svelte-kit/generated/client-optimized/nodes/0.js": {
+ "file": "_app/immutable/nodes/0.Cd4CVt-Z.js",
+ "name": "nodes/0",
+ "src": ".svelte-kit/generated/client-optimized/nodes/0.js",
+ "isEntry": true,
+ "isDynamicEntry": true,
+ "imports": [
+ "_CWb4Vnhz.js",
+ "_CCsGeFPC.js",
+ "_CQO205-B.js",
+ "_DKg_yD9X.js",
+ "_BEiADdeo.js",
+ "_CsANhQOh.js"
+ ]
+ },
+ ".svelte-kit/generated/client-optimized/nodes/1.js": {
+ "file": "_app/immutable/nodes/1.CppBCq8O.js",
+ "name": "nodes/1",
+ "src": ".svelte-kit/generated/client-optimized/nodes/1.js",
+ "isEntry": true,
+ "isDynamicEntry": true,
+ "imports": [
+ "_CWb4Vnhz.js",
+ "_CCsGeFPC.js",
+ "_CQO205-B.js",
+ "_BEiADdeo.js"
+ ]
+ },
+ ".svelte-kit/generated/client-optimized/nodes/2.js": {
+ "file": "_app/immutable/nodes/2.DbjHrap6.js",
+ "name": "nodes/2",
+ "src": ".svelte-kit/generated/client-optimized/nodes/2.js",
+ "isEntry": true,
+ "isDynamicEntry": true,
+ "imports": [
+ "_BGnnHgKo.js",
+ "_CWb4Vnhz.js",
+ "_CCsGeFPC.js",
+ "_CQO205-B.js",
+ "_C98uKxzC.js",
+ "_CsANhQOh.js",
+ "_CqZim_6h.js",
+ "_DKg_yD9X.js"
+ ]
+ },
+ ".svelte-kit/generated/client-optimized/nodes/3.js": {
+ "file": "_app/immutable/nodes/3.BgpIj6zk.js",
+ "name": "nodes/3",
+ "src": ".svelte-kit/generated/client-optimized/nodes/3.js",
+ "isEntry": true,
+ "isDynamicEntry": true,
+ "imports": [
+ "_BGnnHgKo.js",
+ "_CWb4Vnhz.js",
+ "_CCsGeFPC.js",
+ "_CQO205-B.js",
+ "_C98uKxzC.js",
+ "_CsANhQOh.js"
+ ]
+ },
+ "_BEiADdeo.js": {
+ "file": "_app/immutable/chunks/BEiADdeo.js",
+ "name": "stores",
+ "imports": [
+ "_CHnJS4Dz.js"
+ ]
+ },
+ "_BGnnHgKo.js": {
+ "file": "_app/immutable/chunks/BGnnHgKo.js",
+ "name": "api",
+ "imports": [
+ "_CQO205-B.js",
+ "_CsANhQOh.js"
+ ]
+ },
+ "_C98uKxzC.js": {
+ "file": "_app/immutable/chunks/C98uKxzC.js",
+ "name": "props",
+ "imports": [
+ "_CQO205-B.js",
+ "_CWb4Vnhz.js"
+ ]
+ },
+ "_CCsGeFPC.js": {
+ "file": "_app/immutable/chunks/CCsGeFPC.js",
+ "name": "legacy",
+ "imports": [
+ "_CQO205-B.js"
+ ]
+ },
+ "_CHnJS4Dz.js": {
+ "file": "_app/immutable/chunks/CHnJS4Dz.js",
+ "name": "entry",
+ "imports": [
+ "_CQO205-B.js",
+ "_CqZim_6h.js"
+ ]
+ },
+ "_CQO205-B.js": {
+ "file": "_app/immutable/chunks/CQO205-B.js",
+ "name": "index"
+ },
+ "_CWb4Vnhz.js": {
+ "file": "_app/immutable/chunks/CWb4Vnhz.js",
+ "name": "disclose-version",
+ "imports": [
+ "_CQO205-B.js"
+ ]
+ },
+ "_CqZim_6h.js": {
+ "file": "_app/immutable/chunks/CqZim_6h.js",
+ "name": "index-client",
+ "imports": [
+ "_CQO205-B.js"
+ ]
+ },
+ "_CsANhQOh.js": {
+ "file": "_app/immutable/chunks/CsANhQOh.js",
+ "name": "toasts",
+ "imports": [
+ "_CQO205-B.js"
+ ]
+ },
+ "_DKg_yD9X.js": {
+ "file": "_app/immutable/chunks/DKg_yD9X.js",
+ "name": "class",
+ "imports": [
+ "_CQO205-B.js"
+ ]
+ },
+ "node_modules/@sveltejs/kit/src/runtime/client/entry.js": {
+ "file": "_app/immutable/entry/start.CiUb2lZD.js",
+ "name": "entry/start",
+ "src": "node_modules/@sveltejs/kit/src/runtime/client/entry.js",
+ "isEntry": true,
+ "imports": [
+ "_CHnJS4Dz.js"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/BEiADdeo.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/BEiADdeo.js
new file mode 100644
index 0000000..f2c067c
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/BEiADdeo.js
@@ -0,0 +1 @@
+import{s as e}from"./CHnJS4Dz.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/BGnnHgKo.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/BGnnHgKo.js
new file mode 100644
index 0000000..f0e6762
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/BGnnHgKo.js
@@ -0,0 +1 @@
+import{h as v,Z as S,a5 as T,a6 as b,a7 as C,a8 as P,a9 as I,aa as w,ab as N,e as $,ac as p,J as i,ad as L}from"./CQO205-B.js";import{a as m}from"./CsANhQOh.js";const M=Symbol("is custom element"),q=Symbol("is html");function F(e){if(v){var t=!1,r=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var s=e.value;k(e,"value",null),e.value=s}if(e.hasAttribute("checked")){var a=e.checked;k(e,"checked",null),e.checked=a}}};e.__on_r=r,S(r),T()}}function k(e,t,r,s){var a=j(e);v&&(a[t]=e.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&e.nodeName==="LINK")||a[t]!==(a[t]=r)&&(t==="loading"&&(e[b]=r),r==null?e.removeAttribute(t):typeof r!="string"&&O(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function j(e){return e.__attributes??={[M]:e.nodeName.includes("-"),[q]:e.namespaceURI===C}}var y=new Map;function O(e){var t=e.getAttribute("is")||e.nodeName,r=y.get(t);if(r)return r;y.set(t,r=[]);for(var s,a=e,o=Element.prototype;o!==a;){s=I(a);for(var n in s)s[n].set&&r.push(n);a=P(a)}return r}function U(e,t,r=t){var s=new WeakSet;w(e,"input",async a=>{var o=a?e.defaultValue:e.value;if(o=u(e)?h(o):o,r(o),i!==null&&s.add(i),await N(),o!==(o=t())){var n=e.selectionStart,f=e.selectionEnd,A=e.value.length;if(e.value=o??"",f!==null){var d=e.value.length;n===f&&f===A&&d>A?(e.selectionStart=d,e.selectionEnd=d):(e.selectionStart=n,e.selectionEnd=Math.min(f,d))}}}),(v&&e.defaultValue!==e.value||$(t)==null&&e.value)&&(r(u(e)?h(e.value):e.value),i!==null&&s.add(i)),p(()=>{var a=t();if(e===document.activeElement){var o=L??i;if(s.has(o))return}u(e)&&a===h(e.value)||e.type==="date"&&!a&&!e.value||a!==e.value&&(e.value=a??"")})}function B(e,t,r=t){w(e,"change",s=>{var a=s?e.defaultChecked:e.checked;r(a)}),(v&&e.defaultChecked!==e.checked||$(t)==null)&&r(e.checked),p(()=>{var s=t();e.checked=!!s})}function u(e){var t=e.type;return t==="number"||t==="range"}function h(e){return e===""?null:+e}const E="/api";async function c(e){try{console.log(`[api.fetchApi][Action] Fetching from context={{'endpoint': '${e}'}}`);const t=await fetch(`${E}${e}`);if(!t.ok)throw new Error(`API request failed with status ${t.status}`);return await t.json()}catch(t){throw console.error(`[api.fetchApi][Coherence:Failed] Error fetching from ${e}:`,t),m(t.message,"error"),t}}async function _(e,t){try{console.log(`[api.postApi][Action] Posting to context={{'endpoint': '${e}'}}`);const r=await fetch(`${E}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!r.ok)throw new Error(`API request failed with status ${r.status}`);return await r.json()}catch(r){throw console.error(`[api.postApi][Coherence:Failed] Error posting to ${e}:`,r),m(r.message,"error"),r}}async function g(e,t="GET",r=null){try{console.log(`[api.requestApi][Action] ${t} to context={{'endpoint': '${e}'}}`);const s={method:t,headers:{"Content-Type":"application/json"}};r&&(s.body=JSON.stringify(r));const a=await fetch(`${E}${e}`,s);if(!a.ok){const o=await a.json().catch(()=>({}));throw new Error(o.detail||`API request failed with status ${a.status}`)}return await a.json()}catch(s){throw console.error(`[api.requestApi][Coherence:Failed] Error ${t} to ${e}:`,s),m(s.message,"error"),s}}const l={getPlugins:()=>c("/plugins/"),getTasks:()=>c("/tasks/"),getTask:e=>c(`/tasks/${e}`),createTask:(e,t)=>_("/tasks/",{plugin_id:e,params:t}),getSettings:()=>c("/settings/"),updateGlobalSettings:e=>g("/settings/global","PATCH",e),getEnvironments:()=>c("/settings/environments"),addEnvironment:e=>_("/settings/environments",e),updateEnvironment:(e,t)=>g(`/settings/environments/${e}`,"PUT",t),deleteEnvironment:e=>g(`/settings/environments/${e}`,"DELETE"),testEnvironmentConnection:e=>_(`/settings/environments/${e}/test`,{})},D=l.updateGlobalSettings,H=l.addEnvironment,J=l.updateEnvironment,R=l.deleteEnvironment,V=l.testEnvironmentConnection;export{l as a,U as b,B as c,J as d,H as e,R as f,F as r,k as s,V as t,D as u};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/C98uKxzC.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/C98uKxzC.js
new file mode 100644
index 0000000..06fea01
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/C98uKxzC.js
@@ -0,0 +1 @@
+import{J as E,S as y,X as S,T as L,v as P,L as T,h as g,E as M,ae as k,M as w,w as B,z as N,af as x,B as Y,H as C,C as F,x as U,D as R,ag as j,ah as q,j as b,ai as z,o as H,aj as $,ak as G,A as J,d as X,al as Z,am as K,an as Q,ao as V,ap as W,a3 as ee,e as te,aq as ae,ar as se,as as re}from"./CQO205-B.js";import{d as ie}from"./CWb4Vnhz.js";class ne{anchor;#t=new Map;#a=new Map;#e=new Map;#s=new Set;#r=!0;constructor(e,a=!0){this.anchor=e,this.#r=a}#i=()=>{var e=E;if(this.#t.has(e)){var a=this.#t.get(e),t=this.#a.get(a);if(t)y(t),this.#s.delete(a);else{var n=this.#e.get(a);n&&(this.#a.set(a,n.effect),this.#e.delete(a),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),t=n.effect)}for(const[s,i]of this.#t){if(this.#t.delete(s),s===e)break;const r=this.#e.get(i);r&&(S(r.effect),this.#e.delete(i))}for(const[s,i]of this.#a){if(s===a||this.#s.has(s))continue;const r=()=>{if(Array.from(this.#t.values()).includes(s)){var h=document.createDocumentFragment();k(i,h),h.append(P()),this.#e.set(s,{effect:i,fragment:h})}else S(i);this.#s.delete(s),this.#a.delete(s)};this.#r||!t?(this.#s.add(s),L(i,r,!1)):r()}}};#n=e=>{this.#t.delete(e);const a=Array.from(this.#t.values());for(const[t,n]of this.#e)a.includes(t)||(S(n.effect),this.#e.delete(t))};ensure(e,a){var t=E,n=w();if(a&&!this.#a.has(e)&&!this.#e.has(e))if(n){var s=document.createDocumentFragment(),i=P();s.append(i),this.#e.set(e,{effect:T(()=>a(i)),fragment:s})}else this.#a.set(e,T(()=>a(this.anchor)));if(this.#t.set(t,e),n){for(const[r,f]of this.#a)r===e?t.skipped_effects.delete(f):t.skipped_effects.add(f);for(const[r,f]of this.#e)r===e?t.skipped_effects.delete(f.effect):t.skipped_effects.add(f.effect);t.oncommit(this.#i),t.ondiscard(this.#n)}else g&&(this.anchor=M),this.#i()}}function de(d,e,a=!1){g&&N();var t=new ne(d),n=a?x:0;function s(i,r){if(g){const h=Y(d)===C;if(i===h){var f=F();U(f),t.anchor=f,R(!1),t.ensure(i,r),R(!0);return}}t.ensure(i,r)}B(()=>{var i=!1;e((r,f=!0)=>{i=!0,s(f,r)}),i||s(!1,null)},n)}function he(d,e,a,t){var n=!X||(a&Z)!==0,s=(a&K)!==0,i=(a&re)!==0,r=t,f=!0,h=()=>(f&&(f=!1,r=i?te(t):t),r),o;if(s){var I=V in d||W in d;o=j(d,e)?.set??(I&&e in d?c=>d[e]=c:void 0)}var _,p=!1;s?[_,p]=ie(()=>d[e]):_=d[e],_===void 0&&t!==void 0&&(_=h(),o&&(n&&ae(),o(_)));var u;if(n?u=()=>{var c=d[e];return c===void 0?h():(f=!0,c)}:u=()=>{var c=d[e];return c!==void 0&&(r=void 0),c===void 0?r:c},n&&(a&q)===0)return u;if(o){var D=d.$$legacy;return(function(c,v){return arguments.length>0?((!n||!v||D||p)&&o(v?u():c),c):u()})}var m=!1,l=((a&se)!==0?ee:J)(()=>(m=!1,u()));s&&b(l);var O=$;return(function(c,v){if(arguments.length>0){const A=v?b(l):n&&s?z(c):c;return H(l,A),m=!0,r!==void 0&&(r=A),c}return Q&&m||(O.f&G)!==0?l.v:b(l)})}export{ne as B,de as i,he as p};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/CCsGeFPC.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CCsGeFPC.js
new file mode 100644
index 0000000..e040cf5
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CCsGeFPC.js
@@ -0,0 +1 @@
+import{b as d,a0 as g,u as c,e as b,a1 as i,a2 as m,j as p,k,a3 as v,a4 as h}from"./CQO205-B.js";function x(a=!1){const s=d,e=s.l.u;if(!e)return;let f=()=>k(s.s);if(a){let n=0,t={};const _=v(()=>{let l=!1;const r=s.s;for(const o in r)r[o]!==t[o]&&(t[o]=r[o],l=!0);return l&&n++,n});f=()=>p(_)}e.b.length&&g(()=>{u(s,f),i(e.b)}),c(()=>{const n=b(()=>e.m.map(m));return()=>{for(const t of n)typeof t=="function"&&t()}}),e.a.length&&c(()=>{u(s,f),i(e.a)})}function u(a,s){if(a.l.s)for(const e of a.l.s)p(e);s()}h();export{x as i};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/CHnJS4Dz.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CHnJS4Dz.js
new file mode 100644
index 0000000..5fb6da7
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CHnJS4Dz.js
@@ -0,0 +1 @@
+import{$ as be,aA as U,j as T,o as P,ab as Z,b1 as Ne,b2 as mt}from"./CQO205-B.js";import{o as qe}from"./CqZim_6h.js";class ke{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ee{constructor(t,n){this.status=t,this.location=n}}class Se extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function _t(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function wt(e){return e.split("%25").map(decodeURI).join("%25")}function vt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function de({href:e}){return e.split("#")[0]}function yt(e,t,n,a=!1){const r=new URL(e);Object.defineProperty(r,"searchParams",{value:new Proxy(r.searchParams,{get(o,s){if(s==="get"||s==="getAll"||s==="has")return l=>(n(l),o[s](l));t();const c=Reflect.get(o,s);return typeof c=="function"?c.bind(o):c}}),enumerable:!0,configurable:!0});const i=["href","pathname","search","toString","toJSON"];a&&i.push("hash");for(const o of i)Object.defineProperty(r,o,{get(){return t(),e[o]},enumerable:!0,configurable:!0});return r}function bt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function kt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&G.delete(Re(e)),Et(e,t));const G=new Map;function St(e,t){const n=Re(e,t),a=document.querySelector(n);if(a?.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const o=a.getAttribute("data-ttl");return o&&G.set(n,{body:r,init:i,ttl:1e3*Number(o)}),a.getAttribute("data-b64")!==null&&(r=kt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function Rt(e,t,n){if(G.size>0){const a=Re(e,n),r=G.get(a);if(r){if(performance.now(){const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const o=a.split(/\[(.+?)\](?!\])/);return"/"+o.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return he(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return he(String.fromCharCode(...c.slice(2).split("-").map(w=>parseInt(w,16))));const d=xt.exec(c),[,h,f,u,p]=d;return t.push({name:u,matcher:p,optional:!!h,rest:!!f,chained:f?l===1&&o[0]==="":!1}),f?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return he(c)}).join("")}).join("")}/?$`),params:t}}function Lt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Ut(e){return e.slice(1).split("/").filter(Lt)}function Tt(e,t,n){const a={},r=e.slice(1),i=r.filter(s=>s!==void 0);let o=0;for(let s=0;sd).join("/"),o=0),l===void 0){c.rest&&(a[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){a[c.name]=l;const d=t[s+1],h=r[s+1];d&&!d.rest&&d.optional&&h&&c.chained&&(o=0),!d&&!h&&Object.keys(a).length===i.length&&(o=0);continue}if(c.optional&&c.chained){o++;continue}return}if(!o)return a}function he(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Pt({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([s,[c,l,d]])=>{const{pattern:h,params:f}=At(s),u={id:s,exec:p=>{const w=h.exec(p);if(w)return Tt(w,f,a)},errors:[1,...d||[]].map(p=>e[p]),layouts:[0,...l||[]].map(o),leaf:i(c)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function i(s){const c=s<0;return c&&(s=~s),[c,e[s]]}function o(s){return s===void 0?s:[r.has(s),e[s]]}}function We(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function De(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}const A=globalThis.__sveltekit_1uq6ubj?.base??"",It=globalThis.__sveltekit_1uq6ubj?.assets??A??"",Ot="1766259433446",Ye="sveltekit:snapshot",Je="sveltekit:scroll",ze="sveltekit:states",$t="sveltekit:pageurl",B="sveltekit:history",H="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},xe=location.origin;function Xe(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function ce(){return{x:pageXOffset,y:pageYOffset}}function V(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ve={...j,"":j.hover};function Qe(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function Ze(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Qe(e)}}function me(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";a.hash=`#${s}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||le(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=a?.origin===xe&&e.hasAttribute("download");return{url:a,external:i,target:r,download:o}}function ee(e){let t=null,n=null,a=null,r=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)a===null&&(a=V(s,"preload-code")),r===null&&(r=V(s,"preload-data")),t===null&&(t=V(s,"keepfocus")),n===null&&(n=V(s,"noscroll")),i===null&&(i=V(s,"reload")),o===null&&(o=V(s,"replacestate")),s=Qe(s);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ve[a??"off"],preload_data:Ve[r??"off"],keepfocus:c(t),noscroll:c(n),reload:c(i),replace_state:c(o)}}function Be(e){const t=be(e);let n=!0;function a(){n=!0,t.update(o=>o)}function r(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(c=>{(s===void 0||n&&c!==s)&&o(s=c)})}return{notify:a,set:r,subscribe:i}}const et={v:()=>{}};function Ct(){const{set:e,subscribe:t}=be(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${It}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const o=(await r.json()).version!==Ot;return o&&(e(!0),et.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:a}}function le(e,t,n){return e.origin!==xe||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function ln(e){}const tt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...tt];const jt=new Set([...tt]);[...jt];function Nt(e){return e.filter(t=>t!=null)}function Ae(e){return e instanceof ke||e instanceof Se?e.status:500}function qt(e){return e instanceof Se?e.text:"Internal Error"}let k,W,pe;const Dt=qe.toString().includes("$$")||/function \w+\(\) \{\}/.test(qe.toString());Dt?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},W={current:null},pe={current:!1}):(k=new class{#e=U({});get data(){return T(this.#e)}set data(t){P(this.#e,t)}#t=U(null);get form(){return T(this.#t)}set form(t){P(this.#t,t)}#n=U(null);get error(){return T(this.#n)}set error(t){P(this.#n,t)}#a=U({});get params(){return T(this.#a)}set params(t){P(this.#a,t)}#r=U({id:null});get route(){return T(this.#r)}set route(t){P(this.#r,t)}#o=U({});get state(){return T(this.#o)}set state(t){P(this.#o,t)}#s=U(-1);get status(){return T(this.#s)}set status(t){P(this.#s,t)}#i=U(new URL("https://example.com"));get url(){return T(this.#i)}set url(t){P(this.#i,t)}},W=new class{#e=U(null);get current(){return T(this.#e)}set current(t){P(this.#e,t)}},pe=new class{#e=U(!1);get current(){return T(this.#e)}set current(t){P(this.#e,t)}},et.v=()=>pe.current=!0);function nt(e){Object.assign(k,e)}const Ke={spanContext(){return Vt},setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){return this},isRecording(){return!1},recordException(){return this},addLink(){return this},addLinks(){return this}},Vt={traceId:"",spanId:"",traceFlags:0},Bt=new Set(["icon","shortcut icon","apple-touch-icon"]),q=We(Je)??{},Y=We(Ye)??{},C={url:Be({}),page:Be({}),navigating:be(null),updated:Ct()};function Le(e){q[e]=ce()}function Kt(e,t){let n=e+1;for(;q[n];)delete q[n],n+=1;for(n=t+1;Y[n];)delete Y[n],n+=1}function J(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function at(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(A||"/");e&&await e.update()}}function Fe(){}let Ue,_e,te,I,we,v;const ne=[],ae=[];let R=null;function ve(){R?.fork?.then(e=>e?.discard()),R=null}const Q=new Map,rt=new Set,Ft=new Set,M=new Set;let _={branch:[],error:null,url:null},ot=!1,re=!1,Ge=!0,z=!1,F=!1,st=!1,Te=!1,Pe,y,x,N;const oe=new Set,Me=new Map;async function hn(e,t,n){globalThis.__sveltekit_1uq6ubj?.data&&globalThis.__sveltekit_1uq6ubj.data,document.URL!==location.href&&(location.href=location.href),v=e,await e.hooks.init?.(),Ue=Pt(e),I=document.documentElement,we=t,_e=e.nodes[0],te=e.nodes[1],_e(),te(),y=history.state?.[B],x=history.state?.[H],y||(y=x=Date.now(),history.replaceState({...history.state,[B]:y,[H]:x},""));const a=q[y];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await nn(we,n)):(await K({type:"enter",url:Xe(v.hash?on(new URL(location.href)):location.href),replace_state:!0}),r()),tn()}function Gt(){ne.length=0,Te=!1}function it(e){ae.some(t=>t?.snapshot)&&(Y[e]=ae.map(t=>t?.snapshot?.capture()))}function ct(e){Y[e]?.forEach((t,n)=>{ae[n]?.snapshot?.restore(t)})}function He(){Le(y),De(Je,q),it(x),De(Ye,Y)}async function Mt(e,t,n,a){let r;t.invalidateAll&&ve(),await K({type:"goto",url:Xe(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{t.invalidateAll&&(Te=!0,r=[...Me.keys()]),t.invalidate&&t.invalidate.forEach(en)}}),t.invalidateAll&&Z().then(Z).then(()=>{Me.forEach(({resource:i},o)=>{r?.includes(o)&&i.refresh?.()})})}async function Ht(e){if(e.id!==R?.id){ve();const t={};if(oe.add(t),R={id:e.id,token:t,promise:ft({...e,preload:t}).then(n=>(oe.delete(t),n.type==="loaded"&&n.state.error&&ve(),n)),fork:null},Ne){const n=R;n.fork=n.promise.then(a=>{if(n===R&&a.type==="loaded")try{return Ne(()=>{Pe.$set(a.props),nt(a.props.page)})}catch{}return null})}}return R.promise}async function ge(e){const t=(await ue(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].map(n=>n?.[1]()))}async function lt(e,t,n){_=e.state;const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(k,e.props.page),Pe=new v.root({target:t,props:{...e.props,stores:C,components:ae},hydrate:n,sync:!1}),await Promise.resolve(),ct(x),n){const r={from:null,to:{params:_.params,route:{id:_.route?.id??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};M.forEach(i=>i(r))}re=!0}function se({url:e,params:t,branch:n,status:a,error:r,route:i,form:o}){let s="never";if(A&&(e.pathname===A||e.pathname===A+"/"))s="always";else for(const u of n)u?.slash!==void 0&&(s=u.slash);e.pathname=_t(e.pathname,s),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:r,route:i},props:{constructors:Nt(n).map(u=>u.node.component),page:je(k)}};o!==void 0&&(c.props.form=o);let l={},d=!k,h=0;for(let u=0;u(s&&(c.route=!0),f[u])}),params:new Proxy(a,{get:(f,u)=>(s&&c.params.add(u),f[u])}),data:i?.data??null,url:yt(n,()=>{s&&(c.url=!0)},f=>{s&&c.search_params.add(f)},v.hash),async fetch(f,u){f instanceof Request&&(u={body:f.method==="GET"||f.method==="HEAD"?void 0:await f.blob(),cache:f.cache,credentials:f.credentials,headers:[...f.headers].length>0?f?.headers:void 0,integrity:f.integrity,keepalive:f.keepalive,method:f.method,mode:f.mode,redirect:f.redirect,referrer:f.referrer,referrerPolicy:f.referrerPolicy,signal:f.signal,...u});const{resolved:p,promise:w}=ut(f,u,n);return s&&d(p.href),w},setHeaders:()=>{},depends:d,parent(){return s&&(c.parent=!0),t()},untrack(f){s=!1;try{return f()}finally{s=!0}}};o=await l.universal.load.call(null,h)??null}return{node:l,loader:e,server:i,universal:l.universal?.load?{type:"data",data:o,uses:c}:null,data:o??i?.data??null,slash:l.universal?.trailingSlash??i?.slash}}function ut(e,t,n){let a=e instanceof Request?e.url:e;const r=new URL(a,n);r.origin===n.origin&&(a=r.href.slice(n.origin.length));const i=re?Rt(a,r.href,t):St(a,t);return{resolved:r,promise:i}}function Wt(e,t,n,a,r,i){if(Te)return!0;if(!r)return!1;if(r.parent&&e||r.route&&t||r.url&&n)return!0;for(const o of r.search_params)if(a.has(o))return!0;for(const o of r.params)if(i[o]!==_.params[o])return!0;for(const o of r.dependencies)if(ne.some(s=>s(new URL(o))))return!0;return!1}function Oe(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function Yt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(o=>i.includes(o))&&i.every(o=>r.includes(o))&&n.delete(a)}return n}function Jt({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:je(k),constructors:[]}}}async function ft({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if(R?.id===e)return oe.delete(R.token),R.promise;const{errors:o,layouts:s,leaf:c}=r,l=[...s,c];o.forEach(m=>m?.().catch(()=>{})),l.forEach(m=>m?.[1]().catch(()=>{}));const d=_.url?e!==ie(_.url):!1,h=_.route?r.id!==_.route.id:!1,f=Yt(_.url,n);let u=!1;const p=l.map(async(m,g)=>{if(!m)return;const E=_.branch[g];return m[1]===E?.loader&&!Wt(u,h,d,f,E.universal?.uses,a)?E:(u=!0,Ie({loader:m[1],url:n,params:a,route:r,parent:async()=>{const O={};for(let L=0;L{});const w=[];for(let m=0;mPromise.resolve({}),server_data_node:Oe(i)}),s={node:await te(),loader:te,universal:null,server:null,data:null};return se({url:n,params:r,branch:[o,s],status:e,error:t,route:null})}catch(o){if(o instanceof Ee)return Mt(new URL(o.location,location.href),{},0);throw o}}async function Xt(e){const t=e.href;if(Q.has(t))return Q.get(t);let n;try{const a=(async()=>{let r=await v.hooks.reroute({url:new URL(e),fetch:async(i,o)=>ut(i,o,e).promise})??e;if(typeof r=="string"){const i=new URL(e);v.hash?i.hash=r:i.pathname=r,r=i}return r})();Q.set(t,a),n=await a}catch{Q.delete(t);return}return n}async function ue(e,t){if(e&&!le(e,A,v.hash)){const n=await Xt(e);if(!n)return;const a=Qt(n);for(const r of Ue){const i=r.exec(a);if(i)return{id:ie(e),invalidating:t,route:r,params:vt(i),url:e}}}}function Qt(e){return wt(v.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(A.length))||"/"}function ie(e){return(v.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function dt({url:e,type:t,intent:n,delta:a,event:r}){let i=!1;const o=Ce(_,n,e,t);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const s={...o.navigation,cancel:()=>{i=!0,o.reject(new Error("navigation cancelled"))}};return z||rt.forEach(c=>c(s)),i?null:o}async function K({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o={},redirect_count:s=0,nav_token:c={},accept:l=Fe,block:d=Fe,event:h}){const f=N;N=c;const u=await ue(t,!1),p=e==="enter"?Ce(_,u,t,e):dt({url:t,type:e,delta:n?.delta,intent:u,event:h});if(!p){d(),N===c&&(N=f);return}const w=y,m=x;l(),z=!0,re&&p.navigation.type!=="enter"&&C.navigating.set(W.current=p.navigation);let g=u&&await ft(u);if(!g){if(le(t,A,v.hash))return await J(t,i);g=await ht(t,{id:null},await X(new Se(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=u?.url||t,N!==c)return p.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(s<20){await K({type:e,url:new URL(g.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o,redirect_count:s+1,nav_token:c}),p.fulfil(void 0);return}g=await $e({status:500,error:await X(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await C.updated.check()&&(await at(),await J(t,i));if(Gt(),Le(w),it(m),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),o=n?n.state:o,!n){const b=i?0:1,D={[B]:y+=b,[H]:x+=b,[ze]:o};(i?history.replaceState:history.pushState).call(history,D,"",t),i||Kt(y,x)}const E=u&&R?.id===u.id?R.fork:null;R=null,g.props.page.state=o;let S;if(re){const b=(await Promise.all(Array.from(Ft,$=>$(p.navigation)))).filter($=>typeof $=="function");if(b.length>0){let $=function(){b.forEach(fe=>{M.delete(fe)})};b.push($),b.forEach(fe=>{M.add(fe)})}_=g.state,g.props.page&&(g.props.page.url=t);const D=E&&await E;D?S=D.commit():(Pe.$set(g.props),nt(g.props.page),S=mt?.()),st=!0}else await lt(g,we,!1);const{activeElement:O}=document;await S,await Z(),await Z();let L=n?n.scroll:r?ce():null;if(Ge){const b=t.hash&&document.getElementById(pt(t));if(L)scrollTo(L.x,L.y);else if(b){b.scrollIntoView();const{top:D,left:$}=b.getBoundingClientRect();L={x:pageXOffset+$,y:pageYOffset+D}}else scrollTo(0,0)}const gt=document.activeElement!==O&&document.activeElement!==document.body;!a&&!gt&&rn(t,L),Ge=!0,g.props.page&&Object.assign(k,g.props.page),z=!1,e==="popstate"&&ct(x),p.fulfil(void 0),M.forEach(b=>b(p.navigation)),C.navigating.set(W.current=null)}async function ht(e,t,n,a,r){return e.origin===xe&&e.pathname===location.pathname&&!ot?await $e({status:a,error:n,url:e,route:t}):await J(e,r)}function Zt(){let e,t,n;I.addEventListener("mousemove",s=>{const c=s.target;clearTimeout(e),e=setTimeout(()=>{i(c,j.hover)},20)});function a(s){s.defaultPrevented||i(s.composedPath()[0],j.tap)}I.addEventListener("mousedown",a),I.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(s=>{for(const c of s)c.isIntersecting&&(ge(new URL(c.target.href)),r.unobserve(c.target))},{threshold:0});async function i(s,c){const l=Ze(s,I),d=l===t&&c>=n;if(!l||d)return;const{url:h,external:f,download:u}=me(l,A,v.hash);if(f||u)return;const p=ee(l),w=h&&ie(_.url)===ie(h);if(!(p.reload||w))if(c<=p.preload_data){t=l,n=j.tap;const m=await ue(h,!1);if(!m)return;Ht(m)}else c<=p.preload_code&&(t=l,n=c,ge(h))}function o(){r.disconnect();for(const s of I.querySelectorAll("a")){const{url:c,external:l,download:d}=me(s,A,v.hash);if(l||d)continue;const h=ee(s);h.reload||(h.preload_code===j.viewport&&r.observe(s),h.preload_code===j.eager&&ge(c))}}M.add(o),o()}function X(e,t){if(e instanceof ke)return e.body;const n=Ae(e),a=qt(e);return v.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function en(e){if(typeof e=="function")ne.push(e);else{const{href:t}=new URL(e,location.href);ne.push(n=>n.href===t)}}function tn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(He(),!z){const a=Ce(_,void 0,null,"leave"),r={...a.navigation,cancel:()=>{n=!0,a.reject(new Error("navigation cancelled"))}};rt.forEach(i=>i(r))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&He()}),navigator.connection?.saveData||Zt(),I.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=Ze(t.composedPath()[0],I);if(!n)return;const{url:a,external:r,target:i,download:o}=me(n,A,v.hash);if(!a)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const s=ee(n);if(!(n instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||o)return;const[l,d]=(v.hash?a.hash.replace(/^#/,""):a.href).split("#"),h=l===de(location);if(r||s.reload&&(!h||!d)){dt({url:a,type:"link",event:t})?z=!0:t.preventDefault();return}if(d!==void 0&&h){const[,f]=_.url.href.split("#");if(f===d){if(t.preventDefault(),d===""||d==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const u=n.ownerDocument.getElementById(decodeURIComponent(d));u&&(u.scrollIntoView(),u.focus())}return}if(F=!0,Le(y),e(a),!s.replace_state)return;F=!1}t.preventDefault(),await new Promise(f=>{requestAnimationFrame(()=>{setTimeout(f,0)}),setTimeout(f,100)}),await K({type:"link",url:a,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??a.href===location.href,event:t})}),I.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),a=t.submitter;if((a?.formTarget||n.target)==="_blank"||(a?.formMethod||n.method)!=="get")return;const o=new URL(a?.hasAttribute("formaction")&&a?.formAction||n.action);if(le(o,A,!1))return;const s=t.target,c=ee(s);if(c.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(s,a);o.search=new URLSearchParams(l).toString(),K({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!ye){if(t.state?.[B]){const n=t.state[B];if(N={},n===y)return;const a=q[n],r=t.state[ze]??{},i=new URL(t.state[$t]??location.href),o=t.state[H],s=_.url?de(location)===de(_.url):!1;if(o===x&&(st||s)){r!==k.state&&(k.state=r),e(i),q[y]=ce(),a&&scrollTo(a.x,a.y),y=n;return}const l=n-y;await K({type:"popstate",url:i,popped:{state:r,scroll:a,delta:l},accept:()=>{y=n,x=o},block:()=>{history.go(-l)},nav_token:N,event:t})}else if(!F){const n=new URL(location.href);e(n),v.hash&&location.reload()}}}),addEventListener("hashchange",()=>{F&&(F=!1,history.replaceState({...history.state,[B]:++y,[H]:x},"",location.href))});for(const t of document.querySelectorAll("link"))Bt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&C.navigating.set(W.current=null)});function e(t){_.url=k.url=t,C.page.set(je(k)),C.page.notify()}}async function nn(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:o,data:s,form:c}){ot=!0;const l=new URL(location.href);let d;({params:r={},route:i={id:null}}=await ue(l,!1)||{}),d=Ue.find(({id:u})=>u===i.id);let h,f=!0;try{const u=a.map(async(w,m)=>{const g=s[m];return g?.uses&&(g.uses=an(g.uses)),Ie({loader:v.nodes[w],url:l,params:r,route:i,parent:async()=>{const E={};for(let S=0;S{const s=history.state;ye=!0,location.replace(`#${a}`),v.hash&&location.replace(e.hash),history.replaceState(s,"",e.hash),scrollTo(i,o),ye=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let o=0;o{if(r.rangeCount===i.length){for(let o=0;o{r=c,i=l});return o.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n},willUnload:!t,type:a,complete:o},fulfil:r,reject:i}}function je(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function on(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function pt(e){let t;if(v.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{hn as a,ln as l,C as s};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/CQO205-B.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CQO205-B.js
new file mode 100644
index 0000000..dd5ca2f
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CQO205-B.js
@@ -0,0 +1 @@
+var Ut=Array.isArray,Bt=Array.prototype.indexOf,Pn=Array.from,In=Object.defineProperty,ce=Object.getOwnPropertyDescriptor,Vt=Object.getOwnPropertyDescriptors,Gt=Object.prototype,$t=Array.prototype,lt=Object.getPrototypeOf,nt=Object.isExtensible;const we=()=>{};function Cn(e){return e()}function zt(e){for(var t=0;t{e=r,t=s});return{promise:n,resolve:e,reject:t}}function Fn(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 y=2,Ue=4,Re=8,Kt=1<<24,L=16,j=32,te=64,Be=128,D=512,E=1024,A=2048,N=4096,I=8192,H=16384,Ve=32768,ye=65536,Ce=1<<17,ot=1<<18,he=1<<19,ct=1<<20,Mn=1<<25,W=32768,Fe=1<<21,Ge=1<<22,U=1<<23,_e=Symbol("$state"),Ln=Symbol("legacy props"),jn=Symbol(""),re=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},$e=3,_t=8;function Xt(e){throw new Error("https://svelte.dev/e/experimental_async_required")}function Yn(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function Zt(){throw new Error("https://svelte.dev/e/async_derived_orphan")}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 tn(){throw new Error("https://svelte.dev/e/fork_discarded")}function nn(){throw new Error("https://svelte.dev/e/fork_timing")}function Hn(){throw new Error("https://svelte.dev/e/hydration_failed")}function Un(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function rn(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function sn(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function fn(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Bn(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Vn=1,Gn=2,$n=4,zn=8,Kn=16,Xn=1,Zn=2,Wn=4,Jn=8,Qn=16,er=1,tr=2,an="[",ln="[!",un="]",ze={},m=Symbol(),nr="http://www.w3.org/1999/xhtml";function Ke(e){console.warn("https://svelte.dev/e/hydration_mismatch")}function rr(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let J=!1;function sr(e){J=e}let x;function fe(e){if(e===null)throw Ke(),ze;return x=e}function fr(){return fe($(x))}function ir(e){if(J){if($(x)!==null)throw Ke(),ze;x=e}}function ar(e=1){if(J){for(var t=e,n=x;t--;)n=$(n);x=n}}function lr(e=!0){for(var t=0,n=x;;){if(n.nodeType===_t){var r=n.data;if(r===un){if(t===0)return n;t-=1}else(r===an||r===ln)&&(t+=1)}var s=$(n);e&&n.remove(),n=s}}function ur(e){if(!e||e.nodeType!==_t)throw Ke(),ze;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 or(){ke=!0}let g=null;function Ee(e){g=e}function cr(e,t=!1,n){g={p:g,i:!1,c:null,e:null,s:e,x:null,l:ke&&!t?{s:null,u:null,$:[]}:null}}function _r(e){var t=g,n=t.e;if(n!==null){t.e=null;for(var r of n)kt(r)}return t.i=!0,g=t.p,{}}function pe(){return!ke||g!==null&&g.l===null}let z=[];function pt(){var e=z;z=[],zt(e)}function on(e){if(z.length===0&&!ve){var t=z;queueMicrotask(()=>{t===z&&pt()})}z.push(e)}function cn(){for(;z.length>0;)pt()}function _n(e){var t=h;if(t===null)return _.f|=U,e;if((t.f&Ve)===0){if((t.f&Be)===0)throw e;t.b.error(e)}else ge(e,t)}function ge(e,t){for(;t!==null;){if((t.f&Be)!==0)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e}const K=new Set;let p=null,Pe=null,T=null,k=[],Oe=null,Me=!1,ve=!1;class V{committed=!1;current=new Map;previous=new Map;#r=new Set;#s=new Set;#e=0;#t=0;#a=null;#f=new Set;#i=new Set;skipped_effects=new Set;is_fork=!1;is_deferred(){return this.is_fork||this.#t>0}process(t){k=[],Pe=null,this.apply();var n={parent:null,effect:null,effects:[],render_effects:[]};for(const r of t)this.#l(r,n);this.is_fork||this.#o(),this.is_deferred()?(this.#n(n.effects),this.#n(n.render_effects)):(Pe=this,p=null,rt(n.render_effects),rt(n.effects),Pe=null,this.#a?.resolve()),T=null}#l(t,n){t.f^=E;for(var r=t.first;r!==null;){var s=r.f,f=(s&(j|te))!==0,u=f&&(s&E)!==0,l=u||(s&I)!==0||this.skipped_effects.has(r);if((r.f&Be)!==0&&r.b?.is_pending()&&(n={parent:n,effect:r,effects:[],render_effects:[]}),!l&&r.fn!==null){f?r.f^=E:(s&Ue)!==0?n.effects.push(r):ue(r)&&((r.f&L)!==0&&this.#f.add(r),ae(r));var a=r.first;if(a!==null){r=a;continue}}var i=r.parent;for(r=r.next;r===null&&i!==null;)i===n.effect&&(this.#n(n.effects),this.#n(n.render_effects),n=n.parent),r=i.next,i=i.parent}}#n(t){for(const n of t)(n.f&A)!==0?this.#f.add(n):(n.f&N)!==0&&this.#i.add(n),this.#u(n.deps),w(n,E)}#u(t){if(t!==null)for(const n of t)(n.f&y)===0||(n.f&W)===0||(n.f^=W,this.#u(n.deps))}capture(t,n){this.previous.has(t)||this.previous.set(t,n),(t.f&U)===0&&(this.current.set(t,t.v),T?.set(t,t.v))}activate(){p=this,this.apply()}deactivate(){p===this&&(p=null,T=null)}flush(){if(this.activate(),k.length>0){if(je(),p!==null&&p!==this)return}else this.#e===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#s)t(this);this.#s.clear()}#o(){if(this.#t===0){for(const t of this.#r)t();this.#r.clear()}this.#e===0&&this.#c()}#c(){if(K.size>1){this.previous.clear();var t=T,n=!0,r={parent:null,effect:null,effects:[],render_effects:[]};for(const f of K){if(f===this){n=!1;continue}const u=[];for(const[a,i]of this.current){if(f.current.has(a))if(n&&i!==f.current.get(a))f.current.set(a,i);else continue;u.push(a)}if(u.length===0)continue;const l=[...f.current.keys()].filter(a=>!this.current.has(a));if(l.length>0){var s=k;k=[];const a=new Set,i=new Map;for(const o of u)wt(o,l,a,i);if(k.length>0){p=f,f.apply();for(const o of k)f.#l(o,r);f.deactivate()}k=s}}p=null,T=t}this.committed=!0,K.delete(this)}increment(t){this.#e+=1,t&&(this.#t+=1)}decrement(t){this.#e-=1,t&&(this.#t-=1),this.revive()}revive(){for(const t of this.#f)this.#i.delete(t),w(t,A),Q(t);for(const t of this.#i)w(t,N),Q(t);this.flush()}oncommit(t){this.#r.add(t)}ondiscard(t){this.#s.add(t)}settled(){return(this.#a??=ut()).promise}static ensure(){if(p===null){const t=p=new V;K.add(p),ve||V.enqueue(()=>{p===t&&t.flush()})}return p}static enqueue(t){on(t)}apply(){}}function Le(e){var t=ve;ve=!0;try{var n;for(e&&(p!==null&&je(),n=e());;){if(cn(),k.length===0&&(p?.flush(),k.length===0))return Oe=null,n;je()}}finally{ve=t}}function je(){var e=X;Me=!0;var t=null;try{var n=0;for(Se(!0);k.length>0;){var r=V.ensure();if(n++>1e3){var s,f;vn()}r.process(k),B.clear()}}finally{Me=!1,Se(e),Oe=null}}function vn(){try{en()}catch(e){ge(e,Oe)}}let F=null;function rt(e){var t=e.length;if(t!==0){for(var n=0;n0)){B.clear();for(const s of F){if((s.f&(H|I))!==0)continue;const f=[s];let u=s.parent;for(;u!==null;)F.has(u)&&(F.delete(u),f.push(u)),u=u.parent;for(let l=f.length-1;l>=0;l--){const a=f[l];(a.f&(H|I))===0&&ae(a)}}F.clear()}}F=null}}function wt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const s of e.reactions){const f=s.f;(f&y)!==0?wt(s,t,n,r):(f&(Ge|L))!==0&&(f&A)===0&&Et(s,t,r)&&(w(s,A),Q(s))}}function yt(e,t){if(e.reactions!==null)for(const n of e.reactions){const r=n.f;(r&y)!==0?yt(n,t):(r&Ce)!==0&&(w(n,A),t.add(n))}}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(t.includes(s))return!0;if((s.f&y)!==0&&Et(s,t,n))return n.set(s,!0),!0}return n.set(e,!1),!1}function Q(e){for(var t=Oe=e;t.parent!==null;){t=t.parent;var n=t.f;if(Me&&t===h&&(n&L)!==0&&(n&ot)===0)return;if((n&(te|j))!==0){if((n&E)===0)return;t.f^=E}}k.push(t)}function vr(e){Xt(),p!==null&&nn();var t=V.ensure();t.is_fork=!0,T=new Map;var n=!1,r=t.settled();Le(e),T=null;for(var[s,f]of t.previous)s.v=f;return{commit:async()=>{if(n){await r;return}K.has(t)||tn(),n=!0,t.is_fork=!1;for(var[u,l]of t.current)u.v=l;Le(()=>{var a=new Set;for(var i of t.current.keys())yt(i,a);En(a),Tt()}),t.revive(),await r},discard:()=>{!n&&K.has(t)&&(K.delete(t),t.discard())}}}function dn(e,t,n,r){const s=pe()?Xe:wn;if(n.length===0&&e.length===0){r(t.map(s));return}var f=p,u=h,l=hn();function a(){Promise.all(n.map(i=>pn(i))).then(i=>{l();try{r([...t.map(s),...i])}catch(o){(u.f&H)===0&&ge(o,u)}f?.deactivate(),me()}).catch(i=>{ge(i,u)})}e.length>0?Promise.all(e).then(()=>{l();try{return a()}finally{f?.deactivate(),me()}}):a()}function hn(){var e=h,t=_,n=g,r=p;return function(f=!0){ie(e),G(t),Ee(n),f&&r?.activate()}}function me(){ie(null),G(null),Ee(null)}function Xe(e){var t=y|A,n=_!==null&&(_.f&y)!==0?_:null;return h!==null&&(h.f|=he),{ctx:g,deps:null,effects:null,equals:vt,f:t,fn:e,reactions:null,rv:0,v:m,wv:0,parent:n??h,ac:null}}function pn(e,t){let n=h;n===null&&Zt();var r=n.b,s=void 0,f=We(m),u=!_,l=new Map;return An(()=>{var a=ut();s=a.promise;try{Promise.resolve(e()).then(a.resolve,a.reject).then(()=>{i===p&&i.committed&&i.deactivate(),me()})}catch(c){a.reject(c),me()}var i=p;if(u){var o=!r.is_pending();r.update_pending_count(1),i.increment(o),l.get(i)?.reject(re),l.delete(i),l.set(i,a)}const v=(c,d=void 0)=>{if(i.activate(),d)d!==re&&(f.f|=U,qe(f,d));else{(f.f&U)!==0&&(f.f^=U),qe(f,c);for(const[O,De]of l){if(l.delete(O),O===i)break;De.reject(re)}}u&&(r.update_pending_count(-1),i.decrement(o))};a.promise.then(v,c=>v(null,c||"unknown"))}),Tn(()=>{for(const a of l.values())a.reject(re)}),new Promise(a=>{function i(o){function v(){o===s?a(f):i(s)}o.then(v,v)}i(s)})}function dr(e){const t=Xe(e);return Ft(t),t}function wn(e){const t=Xe(e);return t.equals=ht,t}function gt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;nse(e))),t}function Y(e,t,n=!1){_!==null&&(!P||(_.f&Ce)!==0)&&pe()&&(_.f&(y|L|Ge|Ce))!==0&&!M?.includes(e)&&fn();let r=n?oe(t):t;return qe(e,r)}function qe(e,t){if(!e.equals(t)){var n=e.v;le?B.set(e,t):B.set(e,n),e.v=t;var r=V.ensure();r.capture(e,n),(e.f&y)!==0&&((e.f&A)!==0&&Ze(e),w(e,(e.f&D)!==0?E:N)),e.wv=Lt(),At(e,A),pe()&&h!==null&&(h.f&E)!==0&&(h.f&(j|te))===0&&(R===null?kn([e]):R.push(e)),!r.is_fork&&be.size>0&&!bt&&Tt()}return t}function Tt(){bt=!1;var e=X;Se(!0);const t=Array.from(be);try{for(const n of t)(n.f&E)!==0&&w(n,N),ue(n)&&ae(n)}finally{Se(e)}be.clear()}function Ie(e){Y(e,e.v+1)}function At(e,t){var n=e.reactions;if(n!==null)for(var r=pe(),s=n.length,f=0;f{if(Z===f)return l();var a=_,i=Z;G(null),at(f);var o=l();return G(a),at(i),o};return r&&n.set("length",q(e.length)),new Proxy(e,{defineProperty(l,a,i){(!("value"in i)||i.configurable===!1||i.enumerable===!1||i.writable===!1)&&rn();var o=n.get(a);return o===void 0?o=u(()=>{var v=q(i.value);return n.set(a,v),v}):Y(o,i.value,!0),!0},deleteProperty(l,a){var i=n.get(a);if(i===void 0){if(a in l){const o=u(()=>q(m));n.set(a,o),Ie(s)}}else Y(i,m),Ie(s);return!0},get(l,a,i){if(a===_e)return e;var o=n.get(a),v=a in l;if(o===void 0&&(!v||ce(l,a)?.writable)&&(o=u(()=>{var d=oe(v?l[a]:m),O=q(d);return O}),n.set(a,o)),o!==void 0){var c=se(o);return c===m?void 0:c}return Reflect.get(l,a,i)},getOwnPropertyDescriptor(l,a){var i=Reflect.getOwnPropertyDescriptor(l,a);if(i&&"value"in i){var o=n.get(a);o&&(i.value=se(o))}else if(i===void 0){var v=n.get(a),c=v?.v;if(v!==void 0&&c!==m)return{enumerable:!0,configurable:!0,value:c,writable:!0}}return i},has(l,a){if(a===_e)return!0;var i=n.get(a),o=i!==void 0&&i.v!==m||Reflect.has(l,a);if(i!==void 0||h!==null&&(!o||ce(l,a)?.writable)){i===void 0&&(i=u(()=>{var c=o?oe(l[a]):m,d=q(c);return d}),n.set(a,i));var v=se(i);if(v===m)return!1}return o},set(l,a,i,o){var v=n.get(a),c=a in l;if(r&&a==="length")for(var d=i;dq(m)),n.set(d+"",O))}if(v===void 0)(!c||ce(l,a)?.writable)&&(v=u(()=>q(void 0)),Y(v,oe(i)),n.set(a,v));else{c=v.v!==m;var De=u(()=>oe(i));Y(v,De)}var et=Reflect.getOwnPropertyDescriptor(l,a);if(et?.set&&et.set.call(o,i),!c){if(r&&typeof a=="string"){var tt=n.get("length"),Ne=Number(a);Number.isInteger(Ne)&&Ne>=tt.v&&Y(tt,Ne+1)}Ie(s)}return!0},ownKeys(l){se(s);var a=Reflect.ownKeys(l).filter(v=>{var c=n.get(v);return c===void 0||c.v!==m});for(var[i,o]of n)o.v!==m&&!(i in l)&&a.push(i);return a},setPrototypeOf(){sn()}})}var st,gn,St,xt;function wr(){if(st===void 0){st=window,gn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;St=ce(t,"firstChild").get,xt=ce(t,"nextSibling").get,nt(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),nt(n)&&(n.__t=void 0)}}function Te(e=""){return document.createTextNode(e)}function Ye(e){return St.call(e)}function $(e){return xt.call(e)}function yr(e,t){if(!J)return Ye(e);var n=Ye(x);if(n===null)n=x.appendChild(Te());else if(t&&n.nodeType!==$e){var r=Te();return n?.before(r),fe(r),r}return fe(n),n}function Er(e,t=!1){if(!J){var n=Ye(e);return n instanceof Comment&&n.data===""?$(n):n}if(t&&x?.nodeType!==$e){var r=Te();return x?.before(r),fe(r),r}return x}function gr(e,t=1,n=!1){let r=J?x:e;for(var s;t--;)s=r,r=$(r);if(!J)return r;if(n&&r?.nodeType!==$e){var f=Te();return r===null?s?.after(f):r.before(f),fe(f),f}return fe(r),r}function mr(e){e.textContent=""}function br(){return!1}let ft=!1;function mn(){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 Je(e){var t=_,n=h;G(null),ie(null);try{return e()}finally{G(t),ie(n)}}function Tr(e,t,n,r=n){e.addEventListener(t,()=>Je(n));const s=e.__on_r;s?e.__on_r=()=>{s(),r(!0)}:e.__on_r=()=>r(!0),mn()}function Rt(e){h===null&&(_===null&&Qt(),Jt()),le&&Wt()}function bn(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,n){var r=h;r!==null&&(r.f&I)!==0&&(e|=I);var s={ctx:g,deps:null,nodes:null,f:e|A|D,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};if(n)try{ae(s),s.f|=Ve}catch(l){throw ee(s),l}else t!==null&&Q(s);var f=s;if(n&&f.deps===null&&f.teardown===null&&f.nodes===null&&f.first===f.last&&(f.f&he)===0&&(f=f.first,(e&L)!==0&&(e&ye)!==0&&f!==null&&(f.f|=ye)),f!==null&&(f.parent=r,r!==null&&bn(f,r),_!==null&&(_.f&y)!==0&&(e&te)===0)){var u=_;(u.effects??=[]).push(f)}return s}function Ae(){return _!==null&&!P}function Tn(e){const t=C(Re,null,!1);return w(t,E),t.teardown=e,t}function Ar(e){Rt();var t=h.f,n=!_&&(t&j)!==0&&(t&Ve)===0;if(n){var r=g;(r.e??=[]).push(e)}else return kt(e)}function kt(e){return C(Ue|ct,e,!1)}function Sr(e){return Rt(),C(Re|ct,e,!0)}function xr(e){V.ensure();const t=C(te|he,e,!0);return(n={})=>new Promise(r=>{n.outro?Rn(t,()=>{ee(t),r(void 0)}):(ee(t),r(void 0))})}function Rr(e){return C(Ue,e,!1)}function kr(e,t){var n=g,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=Ot(()=>{e(),!r.ran&&(r.ran=!0,Qe(t))})}function Or(){var e=g;Ot(()=>{for(var t of e.l.$){t.deps();var n=t.effect;(n.f&E)!==0&&w(n,N),ue(n)&&ae(n),t.ran=!1}})}function An(e){return C(Ge|he,e,!0)}function Ot(e,t=0){return C(Re|t,e,!0)}function Dr(e,t=[],n=[],r=[]){dn(r,t,n,s=>{C(Re,()=>e(...s.map(se)),!0)})}function Nr(e,t=0){var n=C(L|t,e,!0);return n}function Pr(e){return C(j|he,e,!0)}function Dt(e){var t=e.teardown;if(t!==null){const n=le,r=_;it(!0),G(null);try{t.call(null)}finally{it(n),G(r)}}}function Nt(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const s=n.ac;s!==null&&Je(()=>{s.abort(re)});var r=n.next;(n.f&te)!==0?n.parent=null:ee(n,t),n=r}}function Sn(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&j)===0&&ee(t),t=n}}function ee(e,t=!0){var n=!1;(t||(e.f&ot)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(xn(e.nodes.start,e.nodes.end),n=!0),Nt(e,t&&!n),xe(e,0),w(e,H);var r=e.nodes&&e.nodes.t;if(r!==null)for(const f of r)f.stop();Dt(e);var s=e.parent;s!==null&&s.first!==null&&Pt(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function xn(e,t){for(;e!==null;){var n=e===t?null:$(e);e.remove(),e=n}}function Pt(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 Rn(e,t,n=!0){var r=[];It(e,r,!0);var s=()=>{n&&ee(e),t&&t()},f=r.length;if(f>0){var u=()=>--f||s();for(var l of r)l.out(u)}else s()}function It(e,t,n){if((e.f&I)===0){e.f^=I;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 f=s.next,u=(s.f&ye)!==0||(s.f&j)!==0&&(e.f&L)!==0;It(s,t,u?n:!1),s=f}}}function Ir(e){Ct(e,!0)}function Ct(e,t){if((e.f&I)!==0){e.f^=I,(e.f&E)===0&&(w(e,A),Q(e));for(var n=e.first;n!==null;){var r=n.next,s=(n.f&ye)!==0||(n.f&j)!==0;Ct(n,s?t:!1),n=r}var f=e.nodes&&e.nodes.t;if(f!==null)for(const u of f)(u.is_global||t)&&u.in()}}function Cr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var s=n===r?null:$(n);t.append(n),n=s}}let X=!1;function Se(e){X=e}let le=!1;function it(e){le=e}let _=null,P=!1;function G(e){_=e}let h=null;function ie(e){h=e}let M=null;function Ft(e){_!==null&&(M===null?M=[e]:M.push(e))}let b=null,S=0,R=null;function kn(e){R=e}let Mt=1,de=0,Z=de;function at(e){Z=e}function Lt(){return++Mt}function ue(e){var t=e.f;if((t&A)!==0)return!0;if(t&y&&(e.f&=~W),(t&N)!==0){var n=e.deps;if(n!==null)for(var r=n.length,s=0;se.wv)return!0}(t&D)!==0&&T===null&&w(e,E)}return!1}function jt(e,t,n=!0){var r=e.reactions;if(r!==null&&!M?.includes(e))for(var s=0;s{e.ac.abort(re)}),e.ac=null);try{e.f|=Fe;var o=e.fn,v=o(),c=e.deps;if(b!==null){var d;if(xe(e,S),c!==null&&S>0)for(c.length=S+b.length,d=0;de.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const ne=[];function jr(e,t=we){let n=null;const r=new Set;function s(l){if(dt(e,l)&&(e=l,n)){const a=!ne.length;for(const i of r)i[1](),ne.push(i,e);if(a){for(let i=0;i{r.delete(i),r.size===0&&n&&(n(),n=null)}}return{set:s,update:f,subscribe:u}}function qr(e){let t;return Nn(e,n=>t=n)(),t}export{jr as $,wn as A,ur as B,lr as C,sr as D,x as E,_t as F,un as G,ln as H,qe as I,p as J,Mn as K,Pr as L,br as M,We as N,Pn as O,Vn as P,Kn as Q,Gn as R,Ir as S,Rn as T,I as U,$ as V,mr as W,ee as X,$n as Y,on as Z,zn as _,_r as a,we as a$,Sr as a0,zt as a1,Cn as a2,Xe as a3,or as a4,mn as a5,jn as a6,nr as a7,lt as a8,Vt as a9,q as aA,Ae as aB,Ie as aC,V as aD,ie as aE,G as aF,Ee as aG,_n as aH,_ as aI,ge as aJ,Bn as aK,he as aL,Be as aM,rr as aN,Tn as aO,Je as aP,gn as aQ,er as aR,tr as aS,Ve as aT,$e as aU,wr as aV,an as aW,ze as aX,Hn as aY,xr as aZ,Ke as a_,Tr as aa,Fr as ab,Ot as ac,Pe as ad,Cr as ae,ye as af,ce as ag,Wn as ah,oe as ai,h as aj,H as ak,Zn as al,Jn as am,le as an,_e as ao,Ln as ap,Un as aq,Xn as ar,Qn as as,Er as at,qr as au,dr as av,Fn as aw,Rr as ax,Le as ay,In as az,g as b,Nn as b0,vr as b1,Mr as b2,yr as c,ke as d,Qe as e,kr as f,Or as g,J as h,Ut as i,se as j,Lr as k,Yn as l,hr as m,ar as n,Y as o,cr as p,pr as q,ir as r,gr as s,Dr as t,Ar as u,Te as v,Nr as w,fe as x,Ye as y,fr as z};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/CWb4Vnhz.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CWb4Vnhz.js
new file mode 100644
index 0000000..debe96c
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CWb4Vnhz.js
@@ -0,0 +1,2 @@
+import{aB as ee,j as V,N as X,ac as te,e as re,aC as U,Z as B,E as f,h as c,aj as v,w as ne,z,F as W,H as se,L as p,aD as S,T as F,v as w,aE as A,aF as m,aG as Y,aH as ie,aI as C,b as Z,ae,I as ue,X as M,x as N,n as oe,C as le,aJ as $,aK as fe,af as he,aL as ce,aM as de,aN as _e,aO as J,aP as pe,az as K,y as I,aQ as ve,aR as ge,aS as be,aT as ye,aU as me,aV as x,aW as Ee,V as Te,aX as P,D as O,aY as we,W as Ne,O as Re,aZ as Se,p as Oe,G as De,a_ as Ae,a as Le,a$ as j,m as Fe,b0 as Me,au as Ce,o as Ie}from"./CQO205-B.js";function xe(t){let e=0,r=X(0),s;return()=>{ee()&&(V(r),te(()=>(e===0&&(s=re(()=>t(()=>U(r)))),e+=1,()=>{B(()=>{e-=1,e===0&&(s?.(),s=void 0,U(r))})})))}}var Pe=he|ce|de;function ke(t,e,r){new He(t,e,r)}class He{parent;#r=!1;#t;#v=c?f:null;#s;#h;#i;#n=null;#e=null;#a=null;#u=null;#o=null;#c=0;#l=0;#d=!1;#f=null;#y=xe(()=>(this.#f=X(this.#c),()=>{this.#f=null}));constructor(e,r,s){this.#t=e,this.#s=r,this.#h=s,this.parent=v.b,this.#r=!!this.#s.pending,this.#i=ne(()=>{if(v.b=this,c){const n=this.#v;z(),n.nodeType===W&&n.data===se?this.#E():this.#m()}else{var i=this.#g();try{this.#n=p(()=>s(i))}catch(n){this.error(n)}this.#l>0?this.#p():this.#r=!1}return()=>{this.#o?.remove()}},Pe),c&&(this.#t=f)}#m(){try{this.#n=p(()=>this.#h(this.#t))}catch(e){this.error(e)}this.#r=!1}#E(){const e=this.#s.pending;e&&(this.#e=p(()=>e(this.#t)),S.enqueue(()=>{var r=this.#g();this.#n=this.#_(()=>(S.ensure(),p(()=>this.#h(r)))),this.#l>0?this.#p():(F(this.#e,()=>{this.#e=null}),this.#r=!1)}))}#g(){var e=this.#t;return this.#r&&(this.#o=w(),this.#t.before(this.#o),e=this.#o),e}is_pending(){return this.#r||!!this.parent&&this.parent.is_pending()}has_pending_snippet(){return!!this.#s.pending}#_(e){var r=v,s=C,i=Z;A(this.#i),m(this.#i),Y(this.#i.ctx);try{return e()}catch(n){return ie(n),null}finally{A(r),m(s),Y(i)}}#p(){const e=this.#s.pending;this.#n!==null&&(this.#u=document.createDocumentFragment(),this.#u.append(this.#o),ae(this.#n,this.#u)),this.#e===null&&(this.#e=p(()=>e(this.#t)))}#b(e){if(!this.has_pending_snippet()){this.parent&&this.parent.#b(e);return}this.#l+=e,this.#l===0&&(this.#r=!1,this.#e&&F(this.#e,()=>{this.#e=null}),this.#u&&(this.#t.before(this.#u),this.#u=null))}update_pending_count(e){this.#b(e),this.#c+=e,this.#f&&ue(this.#f,this.#c)}get_effect_pending(){return this.#y(),V(this.#f)}error(e){var r=this.#s.onerror;let s=this.#s.failed;if(this.#d||!r&&!s)throw e;this.#n&&(M(this.#n),this.#n=null),this.#e&&(M(this.#e),this.#e=null),this.#a&&(M(this.#a),this.#a=null),c&&(N(this.#v),oe(),N(le()));var i=!1,n=!1;const a=()=>{if(i){_e();return}i=!0,n&&fe(),S.ensure(),this.#c=0,this.#a!==null&&F(this.#a,()=>{this.#a=null}),this.#r=this.has_pending_snippet(),this.#n=this.#_(()=>(this.#d=!1,p(()=>this.#h(this.#t)))),this.#l>0?this.#p():this.#r=!1};var h=C;try{m(null),n=!0,r?.(e,a),n=!1}catch(l){$(l,this.#i&&this.#i.parent)}finally{m(h)}s&&B(()=>{this.#a=this.#_(()=>{S.ensure(),this.#d=!0;try{return p(()=>{s(this.#t,()=>e,()=>a)})}catch(l){return $(l,this.#i.parent),null}finally{this.#d=!1}})})}}const Ve=["touchstart","touchmove"];function Be(t){return Ve.includes(t)}const We=new Set,q=new Set;function Ue(t,e,r,s={}){function i(n){if(s.capture||T.call(e,n),!n.cancelBubble)return pe(()=>r?.call(this,n))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?B(()=>{e.addEventListener(t,i,s)}):e.addEventListener(t,i,s),i}function Ge(t,e,r,s,i){var n={capture:s,passive:i},a=Ue(t,e,r,n);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&J(()=>{e.removeEventListener(t,a,n)})}let G=null;function T(t){var e=this,r=e.ownerDocument,s=t.type,i=t.composedPath?.()||[],n=i[0]||t.target;G=t;var a=0,h=G===t&&t.__root;if(h){var l=i.indexOf(h);if(l!==-1&&(e===document||e===window)){t.__root=e;return}var g=i.indexOf(e);if(g===-1)return;l<=g&&(a=l)}if(n=i[a]||t.target,n!==e){K(t,"currentTarget",{configurable:!0,get(){return n||r}});var L=C,d=v;m(null),A(null);try{for(var u,o=[];n!==null;){var b=n.assignedSlot||n.parentNode||n.host||null;try{var E=n["__"+s];E!=null&&(!n.disabled||t.target===n)&&E.call(n,t)}catch(R){u?o.push(R):u=R}if(t.cancelBubble||b===e||b===null)break;n=b}if(u){for(let R of o)queueMicrotask(()=>{throw R});throw u}}finally{t.__root=e,delete t.currentTarget,m(L),A(d)}}}function Ye(t){var e=document.createElement("template");return e.innerHTML=t.replaceAll("",""),e.content}function _(t,e){var r=v;r.nodes===null&&(r.nodes={start:t,end:e,a:null,t:null})}function Xe(t,e){var r=(e&ge)!==0,s=(e&be)!==0,i,n=!t.startsWith("");return()=>{if(c)return _(f,null),f;i===void 0&&(i=Ye(n?t:""+t),r||(i=I(i)));var a=s||ve?document.importNode(i,!0):i.cloneNode(!0);if(r){var h=I(a),l=a.lastChild;_(h,l)}else _(a,a);return a}}function ze(t=""){if(!c){var e=w(t+"");return _(e,e),e}var r=f;return r.nodeType!==me&&(r.before(r=w()),N(r)),_(r,r),r}function Ze(){if(c)return _(f,null),f;var t=document.createDocumentFragment(),e=document.createComment(""),r=w();return t.append(e,r),_(e,r),t}function Je(t,e){if(c){var r=v;((r.f&ye)===0||r.nodes.end===null)&&(r.nodes.end=f),z();return}t!==null&&t.before(e)}function Ke(t,e){var r=e==null?"":typeof e=="object"?e+"":e;r!==(t.__t??=t.nodeValue)&&(t.__t=r,t.nodeValue=r+"")}function $e(t,e){return Q(t,e)}function Qe(t,e){x(),e.intro=e.intro??!1;const r=e.target,s=c,i=f;try{for(var n=I(r);n&&(n.nodeType!==W||n.data!==Ee);)n=Te(n);if(!n)throw P;O(!0),N(n);const a=Q(t,{...e,anchor:n});return O(!1),a}catch(a){if(a instanceof Error&&a.message.split(`
+`).some(h=>h.startsWith("https://svelte.dev/e/")))throw a;return a!==P&&console.warn("Failed to hydrate: ",a),e.recover===!1&&we(),x(),Ne(r),O(!1),$e(t,e)}finally{O(s),N(i)}}const y=new Map;function Q(t,{target:e,anchor:r,props:s={},events:i,context:n,intro:a=!0}){x();var h=new Set,l=d=>{for(var u=0;u{var d=r??e.appendChild(w());return ke(d,{pending:()=>{}},u=>{if(n){Oe({});var o=Z;o.c=n}if(i&&(s.$$events=i),c&&_(u,null),g=t(u,s)||{},c&&(v.nodes.end=f,f===null||f.nodeType!==W||f.data!==De))throw Ae(),P;n&&Le()}),()=>{for(var u of h){e.removeEventListener(u,T);var o=y.get(u);--o===0?(document.removeEventListener(u,T),y.delete(u)):y.set(u,o)}q.delete(l),d!==r&&d.parentNode?.removeChild(d)}});return k.set(g,L),g}let k=new WeakMap;function et(t,e){const r=k.get(t);return r?(k.delete(t),r(e)):Promise.resolve()}let D=!1,H=Symbol();function tt(t,e,r){const s=r[e]??={store:null,source:Fe(void 0),unsubscribe:j};if(s.store!==t&&!(H in r))if(s.unsubscribe(),s.store=t??null,t==null)s.source.v=void 0,s.unsubscribe=j;else{var i=!0;s.unsubscribe=Me(t,n=>{i?s.source.v=n:Ie(s.source,n)}),i=!1}return t&&H in r?Ce(t):V(s.source)}function rt(){const t={};function e(){J(()=>{for(var r in t)t[r].unsubscribe();K(t,H,{enumerable:!1,value:!0})})}return[t,e]}function nt(t){var e=D;try{return D=!1,[t(),D]}finally{D=e}}const je="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(je);export{Je as a,Ke as b,tt as c,nt as d,Ge as e,Xe as f,Ze as g,Qe as h,$e as m,rt as s,ze as t,et as u};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/CqZim_6h.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CqZim_6h.js
new file mode 100644
index 0000000..f50db26
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CqZim_6h.js
@@ -0,0 +1 @@
+import{l as a,u as i,b as t,d as _,e as l,i as m}from"./CQO205-B.js";function p(e){t===null&&a(),_&&t.l!==null?d(t).m.push(e):i(()=>{const n=l(e);if(typeof n=="function")return n})}function x(e){t===null&&a(),p(()=>()=>l(e))}function v(e,n,{bubbles:o=!1,cancelable:s=!1}={}){return new CustomEvent(e,{detail:n,bubbles:o,cancelable:s})}function y(){const e=t;return e===null&&a(),(n,o,s)=>{const c=e.s.$$events?.[n];if(c){const r=m(c)?c.slice():[c],u=v(n,o,s);for(const f of r)f.call(e.x,u);return!u.defaultPrevented}return!0}}function d(e){var n=e.l;return n.u??={a:[],b:[],m:[]}}export{x as a,y as c,p as o};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/CsANhQOh.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CsANhQOh.js
new file mode 100644
index 0000000..63f5701
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/CsANhQOh.js
@@ -0,0 +1 @@
+import{v as H,w as W,x as O,h as R,y as Z,z as y,j as V,A as j,B as ee,H as ne,C as Y,D as k,E as D,F as re,G as fe,I as q,J as ae,K as m,L as F,M as ie,N as B,m as se,O as $,i as le,P as oe,Q as te,R as ue,S as X,T as G,U as z,V as de,W as ve,X as ce,Y as J,Z as pe,_ as ge,$ as he}from"./CQO205-B.js";function Se(e,r){return r}function _e(e,r,f){for(var t=[],g=r.length,o,l=r.length,p=0;p{if(o){if(o.pending.delete(_),o.done.add(_),o.pending.size===0){var u=e.outrogroups;L($(o.done)),u.delete(o),u.size===0&&(e.outrogroups=null)}}else l-=1},!1)}if(l===0){var i=t.length===0&&f!==null;if(i){var d=f,a=d.parentNode;ve(a),a.append(d),e.items.clear()}L(r,!i)}else o={pending:new Set(r),done:new Set},(e.outrogroups??=new Set).add(o)}function L(e,r=!0){for(var f=0;f{var s=f();return le(s)?s:s==null?[]:$(s)}),u,c=!0;function A(){n.fallback=a,Ee(n,u,l,r,t),a!==null&&(u.length===0?(a.f&m)===0?X(a):(a.f^=m,b(a,null,l)):G(a,()=>{a=null}))}var C=W(()=>{u=V(_);var s=u.length;let I=!1;if(R){var x=ee(l)===ne;x!==(s===0)&&(l=Y(),O(l),k(!1),I=!0)}for(var E=new Set,S=ae,N=ie(),h=0;ho(l)):(a=F(()=>o(U??=H())),a.f|=m)),R&&s>0&&O(Y()),!c)if(N){for(const[P,Q]of p)E.has(P)||S.skipped_effects.add(Q.e);S.oncommit(A),S.ondiscard(()=>{})}else A();I&&k(!0),V(_)}),n={effect:C,items:p,outrogroups:null,fallback:a};c=!1,R&&(l=D)}function Ee(e,r,f,t,g){var o=(t&ge)!==0,l=r.length,p=e.items,i=e.effect.first,d,a=null,_,u=[],c=[],A,C,n,s;if(o)for(s=0;s0){var M=(t&J)!==0&&l===0?f:null;if(o){for(s=0;s{if(_!==void 0)for(n of _)n.nodes?.a?.apply()})}function me(e,r,f,t,g,o,l,p){var i=(l&oe)!==0?(l&te)===0?se(f,!1,!1):B(f):null,d=(l&ue)!==0?B(g):null;return{v:i,i:d,e:F(()=>(o(r,i??f,d??g,p),()=>{e.delete(t)}))}}function b(e,r,f){if(e.nodes)for(var t=e.nodes.start,g=e.nodes.end,o=r&&(r.f&m)===0?r.nodes.start:f;t!==null;){var l=de(t);if(o.before(t),t===g)return;t=l}}function T(e,r,f){r===null?e.effect.first=f:r.next=f,f===null?e.effect.last=r:f.prev=r}const K=he([]);function Ce(e,r="info",f=3e3){const t=Math.random().toString(36).substr(2,9);console.log(`[toasts.addToast][Action] Adding toast context={{'id': '${t}', 'type': '${r}', 'message': '${e}'}}`),K.update(g=>[...g,{id:t,message:e,type:r}]),setTimeout(()=>Te(t),f)}function Te(e){console.log(`[toasts.removeToast][Action] Removing toast context={{'id': '${e}'}}`),K.update(r=>r.filter(f=>f.id!==e))}export{Ce as a,we as e,Se as i,K as t};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/chunks/DKg_yD9X.js b/frontend/.svelte-kit/output/client/_app/immutable/chunks/DKg_yD9X.js
new file mode 100644
index 0000000..eece145
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/chunks/DKg_yD9X.js
@@ -0,0 +1 @@
+import{h as i}from"./CQO205-B.js";function n(s,l,r){var t=s==null?"":""+s;return t===""?null:t}function u(s,l,r,t,f,c){var a=s.__className;if(i||a!==r||a===void 0){var e=n(r);(!i||e!==s.getAttribute("class"))&&(e==null?s.removeAttribute("class"):s.className=e),s.__className=r}return c}export{u as s};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/entry/app.B-xBk5-0.js b/frontend/.svelte-kit/output/client/_app/immutable/entry/app.B-xBk5-0.js
new file mode 100644
index 0000000..24ed7c7
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/entry/app.B-xBk5-0.js
@@ -0,0 +1,2 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.Cd4CVt-Z.js","../chunks/CWb4Vnhz.js","../chunks/CQO205-B.js","../chunks/CCsGeFPC.js","../chunks/DKg_yD9X.js","../chunks/BEiADdeo.js","../chunks/CHnJS4Dz.js","../chunks/CqZim_6h.js","../chunks/CsANhQOh.js","../nodes/1.CppBCq8O.js","../nodes/2.DbjHrap6.js","../chunks/BGnnHgKo.js","../chunks/C98uKxzC.js","../nodes/3.BgpIj6zk.js"])))=>i.map(i=>d[i]);
+import{h as U,z as Y,w as G,af as W,ax as Z,ac as H,e as J,Z as K,ao as Q,o as x,ap as X,j as d,ay as $,az as tt,m as et,p as rt,a0 as st,u as at,aA as S,ab as nt,at as k,s as ot,a as ct,c as it,r as ut,av as A,t as lt}from"../chunks/CQO205-B.js";import{h as ft,m as dt,u as mt,f as D,a as b,g as L,t as ht,b as _t}from"../chunks/CWb4Vnhz.js";import{o as vt}from"../chunks/CqZim_6h.js";import{B as gt,p as T,i as j}from"../chunks/C98uKxzC.js";function p(s,t,a){U&&Y();var i=new gt(s);G(()=>{var n=t()??null;i.ensure(n,n&&(e=>a(e,n)))},W)}function N(s,t){return s===t||s?.[Q]===t}function C(s={},t,a,i){return Z(()=>{var n,e;return H(()=>{n=e,e=[],J(()=>{s!==a(...e)&&(t(s,...e),n&&N(a(...n),s)&&t(null,...n))})}),()=>{K(()=>{e&&N(a(...e),s)&&t(null,...e)})}}),s}function yt(s){return class extends bt{constructor(t){super({component:s,...t})}}}class bt{#e;#t;constructor(t){var a=new Map,i=(e,r)=>{var o=et(r,!1,!1);return a.set(e,o),o};const n=new Proxy({...t.props||{},$$events:{}},{get(e,r){return d(a.get(r)??i(r,Reflect.get(e,r)))},has(e,r){return r===X?!0:(d(a.get(r)??i(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,o){return x(a.get(r)??i(r,o),o),Reflect.set(e,r,o)}});this.#t=(t.hydrate?ft:dt)(t.component,{target:t.target,anchor:t.anchor,props:n,context:t.context,intro:t.intro??!1,recover:t.recover}),(!t?.props?.$$host||t.sync===!1)&&$(),this.#e=n.$$events;for(const e of Object.keys(this.#t))e==="$set"||e==="$destroy"||e==="$on"||tt(this,e,{get(){return this.#t[e]},set(r){this.#t[e]=r},enumerable:!0});this.#t.$set=e=>{Object.assign(n,e)},this.#t.$destroy=()=>{mt(this.#t)}}$set(t){this.#t.$set(t)}$on(t,a){this.#e[t]=this.#e[t]||[];const i=(...n)=>a.call(this,...n);return this.#e[t].push(i),()=>{this.#e[t]=this.#e[t].filter(n=>n!==i)}}$destroy(){this.#t.$destroy()}}const Et="modulepreload",Pt=function(s,t){return new URL(s,t).href},B={},O=function(t,a,i){let n=Promise.resolve();if(a&&a.length>0){let R=function(u){return Promise.all(u.map(f=>Promise.resolve(f).then(m=>({status:"fulfilled",value:m}),m=>({status:"rejected",reason:m}))))};const r=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),w=o?.nonce||o?.getAttribute("nonce");n=R(a.map(u=>{if(u=Pt(u,i),u in B)return;B[u]=!0;const f=u.endsWith(".css"),m=f?'[rel="stylesheet"]':"";if(i)for(let h=r.length-1;h>=0;h--){const c=r[h];if(c.href===u&&(!f||c.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${u}"]${m}`))return;const l=document.createElement("link");if(l.rel=f?"stylesheet":Et,f||(l.as="script"),l.crossOrigin="",l.href=u,w&&l.setAttribute("nonce",w),document.head.appendChild(l),f)return new Promise((h,c)=>{l.addEventListener("load",h),l.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${u}`)))})}))}function e(r){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=r,window.dispatchEvent(o),!o.defaultPrevented)throw r}return n.then(r=>{for(const o of r||[])o.status==="rejected"&&e(o.reason);return t().catch(e)})},jt={};var wt=D(''),Rt=D(" ",1);function kt(s,t){rt(t,!0);let a=T(t,"components",23,()=>[]),i=T(t,"data_0",3,null),n=T(t,"data_1",3,null);st(()=>t.stores.page.set(t.page)),at(()=>{t.stores,t.page,t.constructors,a(),t.form,i(),n(),t.stores.page.notify()});let e=S(!1),r=S(!1),o=S(null);vt(()=>{const c=t.stores.page.subscribe(()=>{d(e)&&(x(r,!0),nt().then(()=>{x(o,document.title||"untitled page",!0)}))});return x(e,!0),c});const w=A(()=>t.constructors[1]);var R=Rt(),u=k(R);{var f=c=>{const _=A(()=>t.constructors[0]);var v=L(),E=k(v);p(E,()=>d(_),(g,y)=>{C(y(g,{get data(){return i()},get form(){return t.form},get params(){return t.page.params},children:(P,xt)=>{var M=L(),V=k(M);p(V,()=>d(w),(q,z)=>{C(z(q,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),F=>a()[1]=F,()=>a()?.[1])}),b(P,M)},$$slots:{default:!0}}),P=>a()[0]=P,()=>a()?.[0])}),b(c,v)},m=c=>{const _=A(()=>t.constructors[0]);var v=L(),E=k(v);p(E,()=>d(_),(g,y)=>{C(y(g,{get data(){return i()},get form(){return t.form},get params(){return t.page.params}}),P=>a()[0]=P,()=>a()?.[0])}),b(c,v)};j(u,c=>{t.constructors[1]?c(f):c(m,!1)})}var l=ot(u,2);{var h=c=>{var _=wt(),v=it(_);{var E=g=>{var y=ht();lt(()=>_t(y,d(o))),b(g,y)};j(v,g=>{d(r)&&g(E)})}ut(_),b(c,_)};j(l,c=>{d(e)&&c(h)})}b(s,R),ct()}const pt=yt(kt),Ct=[()=>O(()=>import("../nodes/0.Cd4CVt-Z.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url),()=>O(()=>import("../nodes/1.CppBCq8O.js"),__vite__mapDeps([9,1,2,3,5,6,7]),import.meta.url),()=>O(()=>import("../nodes/2.DbjHrap6.js"),__vite__mapDeps([10,11,2,8,1,3,12,7,4]),import.meta.url),()=>O(()=>import("../nodes/3.BgpIj6zk.js"),__vite__mapDeps([13,11,2,8,1,3,12]),import.meta.url)],Mt=[],Nt={"/":[2],"/settings":[3]},I={handleError:(({error:s})=>{console.error(s)}),reroute:(()=>{}),transport:{}},Ot=Object.fromEntries(Object.entries(I.transport).map(([s,t])=>[s,t.decode])),Bt=Object.fromEntries(Object.entries(I.transport).map(([s,t])=>[s,t.encode])),Dt=!1,It=(s,t)=>Ot[s](t);export{It as decode,Ot as decoders,Nt as dictionary,Bt as encoders,Dt as hash,I as hooks,jt as matchers,Ct as nodes,pt as root,Mt as server_loads};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/entry/start.CiUb2lZD.js b/frontend/.svelte-kit/output/client/_app/immutable/entry/start.CiUb2lZD.js
new file mode 100644
index 0000000..1e6a22b
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/entry/start.CiUb2lZD.js
@@ -0,0 +1 @@
+import{l as o,a as r}from"../chunks/CHnJS4Dz.js";export{o as load_css,r as start};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.Cd4CVt-Z.js b/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.Cd4CVt-Z.js
new file mode 100644
index 0000000..02647b1
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/nodes/0.Cd4CVt-Z.js
@@ -0,0 +1,5 @@
+import{f as u,a as c,s as b,c as g,b as x}from"../chunks/CWb4Vnhz.js";import{i as _}from"../chunks/CCsGeFPC.js";import{h as $,z as y,p as w,t as h,a as S,s as d,c as v,r as l,j as p,at as j}from"../chunks/CQO205-B.js";import{s as m}from"../chunks/DKg_yD9X.js";import{p as T}from"../chunks/BEiADdeo.js";import{e as z,t as O}from"../chunks/CsANhQOh.js";function k(r,a,s,o,n){$&&y();var e=a.$$slots?.[s],t=!1;e===!0&&(e=a.children,t=!0),e===void 0||e(r,t?()=>o:o)}const A=!1,D=!1,Q=Object.freeze(Object.defineProperty({__proto__:null,prerender:D,ssr:A},Symbol.toStringTag,{value:"Module"}));var F=u('Superset Tools');function M(r,a){w(a,!1);const s=()=>g(T,"$page",o),[o,n]=b();_();var e=F(),t=d(v(e),2),i=v(t),f=d(i,2);l(t),l(e),h(()=>{m(i,1,`text-gray-600 hover:text-blue-600 font-medium ${s().url.pathname==="/"?"text-blue-600 border-b-2 border-blue-600":""}`),m(f,1,`text-gray-600 hover:text-blue-600 font-medium ${s().url.pathname==="/settings"?"text-blue-600 border-b-2 border-blue-600":""}`)}),c(r,e),S(),n()}var N=u('');function P(r){var a=N();c(r,a)}var q=u("
"),B=u('');function C(r){const a=()=>g(O,"$toasts",s),[s,o]=b();var n=B();z(n,5,a,e=>e.id,(e,t)=>{var i=q(),f=v(i,!0);l(i),h(()=>{m(i,1,`p-4 rounded-md shadow-lg text-white
+ ${p(t).type==="info"&&"bg-blue-500"}
+ ${p(t).type==="success"&&"bg-green-500"}
+ ${p(t).type==="error"&&"bg-red-500"}
+ `),x(f,p(t).message)}),c(e,i)}),l(n),c(r,n),o()}var E=u(' ',1);function R(r,a){var s=E(),o=j(s);C(o);var n=d(o,2),e=v(n);M(e,{});var t=d(e,2),i=v(t);k(i,a,"default",{}),l(t);var f=d(t,2);P(f),l(n),c(r,s)}export{R as component,Q as universal};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/nodes/1.CppBCq8O.js b/frontend/.svelte-kit/output/client/_app/immutable/nodes/1.CppBCq8O.js
new file mode 100644
index 0000000..544fb9e
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/nodes/1.CppBCq8O.js
@@ -0,0 +1 @@
+import{f,a as g,s as u,b as p,c as b}from"../chunks/CWb4Vnhz.js";import{i as d}from"../chunks/CCsGeFPC.js";import{p as h,t as v,a as _,c as e,r as s,s as $,n as y}from"../chunks/CQO205-B.js";import{p as k}from"../chunks/BEiADdeo.js";var w=f('
');function q(n,i){h(i,!1);const r=()=>b(k,"$page",c),[c,l]=u();d();var t=w(),a=e(t),m=e(a,!0);s(a);var o=$(a,2),x=e(o,!0);s(o),y(2),s(t),v(()=>{p(m,r().status),p(x,r().error?.message||"Page not found")}),g(n,t),_(),l()}export{q as component};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.DbjHrap6.js b/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.DbjHrap6.js
new file mode 100644
index 0000000..eb7f892
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/nodes/2.DbjHrap6.js
@@ -0,0 +1 @@
+import{a as de,s as z,r as ee,b as le,c as fe}from"../chunks/BGnnHgKo.js";import{f as m,c as Q,a as i,s as ve,b as F,e as J,g as ae}from"../chunks/CWb4Vnhz.js";import{i as re}from"../chunks/CCsGeFPC.js";import{$ as V,p as oe,au as pe,c as u,r as c,a as se,at as E,s as y,t as O,j as e,k as B,e as p,q as I,m as ge,av as be,n as _e,aw as he,f as ke,g as xe}from"../chunks/CQO205-B.js";import{i as P,p as ue}from"../chunks/C98uKxzC.js";import{e as ne,i as ie}from"../chunks/CsANhQOh.js";import{o as ye,a as $e,c as we}from"../chunks/CqZim_6h.js";import{s as Te}from"../chunks/DKg_yD9X.js";function Se($){return function(...w){var d=w[0];return d.preventDefault(),$?.apply(this,w)}}async function De(){try{return{plugins:await de.getPlugins()}}catch($){return console.error("Failed to load plugins:",$),{plugins:[],error:"Failed to load plugins"}}}const et=Object.freeze(Object.defineProperty({__proto__:null,load:De},Symbol.toStringTag,{value:"Module"})),ce=V([]),H=V(null),U=V(null),te=V([]);var Fe=m('
'),je=m(' ',1),ze=m('');function Be($,w){oe(w,!1);let d=ue(w,"schema",8),a=ge({});const L=we();function K(){console.log("[DynamicForm][Action] Submitting form data.",{formData:e(a)}),L("submit",e(a))}function s(){if(d()&&d().properties)for(const T in d().properties)I(a,e(a)[T]=d().properties[T].default||"")}s(),re();var k=ze(),M=u(k);{var W=T=>{var f=je(),R=E(f);ne(R,1,()=>(B(d()),p(()=>Object.entries(d().properties))),ie,(n,g)=>{var v=be(()=>he(e(g),2));let t=()=>e(v)[0],o=()=>e(v)[1];var b=We(),_=u(b),S=u(_,!0);c(_);var D=y(_,2);{var A=r=>{var l=Ee();ee(l),O(()=>{z(l,"id",t()),z(l,"placeholder",(o(),p(()=>o().description||"")))}),le(l,()=>e(a)[t()],j=>I(a,e(a)[t()]=j)),i(r,l)},h=r=>{var l=ae(),j=E(l);{var X=C=>{var x=Pe();ee(x),O(()=>{z(x,"id",t()),z(x,"placeholder",(o(),p(()=>o().description||"")))}),le(x,()=>e(a)[t()],q=>I(a,e(a)[t()]=q)),i(C,x)},N=C=>{var x=ae(),q=E(x);{var Y=Z=>{var G=Le();ee(G),O(()=>z(G,"id",t())),fe(G,()=>e(a)[t()],me=>I(a,e(a)[t()]=me)),i(Z,G)};P(q,Z=>{o(),p(()=>o().type==="boolean")&&Z(Y)},!0)}i(C,x)};P(j,C=>{o(),p(()=>o().type==="number"||o().type==="integer")?C(X):C(N,!1)},!0)}i(r,l)};P(D,r=>{o(),p(()=>o().type==="string")?r(A):r(h,!1)})}c(b),O(()=>{z(_,"for",t()),F(S,(o(),t(),p(()=>o().title||t())))}),i(n,b)}),_e(2),i(T,f)};P(M,T=>{B(d()),p(()=>d()&&d().properties)&&T(W)})}c(k),J("submit",k,Se(K)),i($,k),se()}var Ke=m(' ',1),Me=m('
',1),Ne=m('
'),qe=m('
'),He=m('
Available Tools
',1),Je=m('');function tt($,w){oe(w,!1);const d=()=>Q(U,"$selectedTask",L),a=()=>Q(H,"$selectedPlugin",L),[L,K]=ve();let s=ue(w,"data",8);function k(n){console.log(`[Dashboard][Action] Selecting plugin: ${n.id}`),H.set(n)}async function M(n){console.log("[App.handleFormSubmit][Action] Handling form submission for task creation.");const g=n.detail;try{const v=pe(H),t=await de.createTask(v.id,g);U.set(t),H.set(null),console.log(`[App.handleFormSubmit][Coherence:OK] Task created id=${t.id}`)}catch(v){console.error(`[App.handleFormSubmit][Coherence:Failed] Task creation failed error=${v}`)}}ke(()=>(B(s()),ce),()=>{s().plugins&&ce.set(s().plugins)}),xe(),re();var W=Je(),T=u(W);{var f=n=>{var g=Ke(),v=E(g);Ce(v,{});var t=y(v,2);J("click",t,()=>U.set(null)),i(n,g)},R=n=>{var g=ae(),v=E(g);{var t=b=>{var _=Me(),S=E(_),D=u(S,!0);c(S);var A=y(S,2);Be(A,{get schema(){return a(),p(()=>a().schema)},$$events:{submit:M}});var h=y(A,2);O(()=>F(D,(a(),p(()=>a().name)))),J("click",h,()=>H.set(null)),i(b,_)},o=b=>{var _=He(),S=y(E(_),2);{var D=h=>{var r=Ne(),l=u(r,!0);c(r),O(()=>F(l,(B(s()),p(()=>s().error)))),i(h,r)};P(S,h=>{B(s()),p(()=>s().error)&&h(D)})}var A=y(S,2);ne(A,5,()=>(B(s()),p(()=>s().plugins)),ie,(h,r)=>{var l=qe(),j=u(l),X=u(j,!0);c(j);var N=y(j,2),C=u(N,!0);c(N);var x=y(N,2),q=u(x);c(x),c(l),O(()=>{F(X,(e(r),p(()=>e(r).name))),F(C,(e(r),p(()=>e(r).description))),F(q,`v${e(r),p(()=>e(r).version)??""}`)}),J("click",l,()=>k(e(r))),J("keydown",l,Y=>Y.key==="Enter"&&k(e(r))),i(h,l)}),c(A),i(b,_)};P(v,b=>{a()?b(t):b(o,!1)},!0)}i(n,g)};P(T,n=>{d()?n(f):n(R,!1)})}c(W),i($,W),se(),K()}export{tt as component,et as universal};
diff --git a/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.BgpIj6zk.js b/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.BgpIj6zk.js
new file mode 100644
index 0000000..04d2afd
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/immutable/nodes/3.BgpIj6zk.js
@@ -0,0 +1 @@
+import{a as Ce,b as g,c as Fe,r as u,u as Ae,d as Oe,e as Ue,t as De,f as Ge}from"../chunks/BGnnHgKo.js";import{f as _,e as b,a as h,b as p}from"../chunks/CWb4Vnhz.js";import{i as Te}from"../chunks/CCsGeFPC.js";import{p as $e,m as I,f as Ke,g as Ne,t as L,j as t,a as je,k as R,s as a,c as s,o as x,e as c,r as n,n as Pe,q as m}from"../chunks/CQO205-B.js";import{p as Ie,i as Y}from"../chunks/C98uKxzC.js";import{e as Le,i as Re,a as d}from"../chunks/CsANhQOh.js";async function Ye(){try{return{settings:await Ce.getSettings()}}catch(y){return console.error("Failed to load settings:",y),{settings:{environments:[],settings:{backup_path:"",default_environment_id:null}},error:"Failed to load settings"}}}const et=Object.freeze(Object.defineProperty({__proto__:null,load:Ye},Symbol.toStringTag,{value:"Module"}));var qe=_('
'),ze=_('
Warning
No Superset environments configured. You must add at least one environment to perform backups or migrations.
'),Be=_('
'),Me=_(''),We=_('
Settings
Global Settings
Superset Environments
Name
URL
Username
Default
Actions
');function tt(y,q){$e(q,!1);let v=Ie(q,"data",8),i=I(v().settings),o=I({id:"",name:"",url:"",username:"",password:"",is_default:!1}),l=I(null);async function le(){try{console.log("[Settings.handleSaveGlobal][Action] Saving global settings."),await Ae(t(i).settings),d("Global settings saved","success"),console.log("[Settings.handleSaveGlobal][Coherence:OK] Global settings saved.")}catch(e){console.error("[Settings.handleSaveGlobal][Coherence:Failed] Failed to save global settings:",e),d("Failed to save global settings","error")}}async function ce(){try{console.log(`[Settings.handleAddOrUpdateEnv][Action] ${t(l)?"Updating":"Adding"} environment.`),t(l)?(await Oe(t(l),t(o)),d("Environment updated","success")):(await Ue(t(o)),d("Environment added","success")),z(),location.reload(),console.log("[Settings.handleAddOrUpdateEnv][Coherence:OK] Environment saved.")}catch(e){console.error("[Settings.handleAddOrUpdateEnv][Coherence:Failed] Failed to save environment:",e),d("Failed to save environment","error")}}async function ve(e){if(confirm("Are you sure you want to delete this environment?"))try{console.log(`[Settings.handleDeleteEnv][Action] Deleting environment: ${e}`),await Ge(e),d("Environment deleted","success"),location.reload(),console.log("[Settings.handleDeleteEnv][Coherence:OK] Environment deleted.")}catch(r){console.error("[Settings.handleDeleteEnv][Coherence:Failed] Failed to delete environment:",r),d("Failed to delete environment","error")}}async function ue(e){try{console.log(`[Settings.handleTestEnv][Action] Testing environment: ${e}`);const r=await De(e);r.status==="success"?(d("Connection successful","success"),console.log("[Settings.handleTestEnv][Coherence:OK] Connection successful.")):(d(`Connection failed: ${r.message}`,"error"),console.log("[Settings.handleTestEnv][Coherence:Failed] Connection failed."))}catch(r){console.error("[Settings.handleTestEnv][Coherence:Failed] Error testing connection:",r),d("Failed to test connection","error")}}function pe(e){x(o,{...e}),x(l,e.id)}function z(){x(o,{id:"",name:"",url:"",username:"",password:"",is_default:!1}),x(l,null)}Ke(()=>R(v()),()=>{x(i,v().settings)}),Ne(),Te();var k=We(),B=a(s(k),2);{var me=e=>{var r=qe(),f=s(r,!0);n(r),L(()=>p(f,(R(v()),c(()=>v().error)))),h(e,r)};Y(B,e=>{R(v()),c(()=>v().error)&&e(me)})}var E=a(B,2),M=a(s(E),2),S=s(M),W=a(s(S),2);u(W),n(S);var ge=a(S,2);n(M),n(E);var H=a(E,2),J=a(s(H),2);{var be=e=>{var r=ze();h(e,r)};Y(J,e=>{t(i),c(()=>t(i).environments.length===0)&&e(be)})}var C=a(J,2),Q=s(C),V=a(s(Q));Le(V,5,()=>(t(i),c(()=>t(i).environments)),Re,(e,r)=>{var f=Be(),K=s(f),ye=s(K,!0);n(K);var N=a(K),we=s(N,!0);n(N);var j=a(N),ke=s(j,!0);n(j);var P=a(j),Ee=s(P,!0);n(P);var oe=a(P),de=s(oe),ie=a(de,2),Se=a(ie,2);n(oe),n(f),L(()=>{p(ye,(t(r),c(()=>t(r).name))),p(we,(t(r),c(()=>t(r).url))),p(ke,(t(r),c(()=>t(r).username))),p(Ee,(t(r),c(()=>t(r).is_default?"Yes":"No")))}),b("click",de,()=>ue(t(r).id)),b("click",ie,()=>pe(t(r))),b("click",Se,()=>ve(t(r).id)),h(e,f)}),n(V),n(Q),n(C);var X=a(C,2),F=s(X),fe=s(F);n(F);var A=a(F,2),O=s(A),U=a(s(O),2);u(U),n(O);var D=a(O,2),Z=a(s(D),2);u(Z),n(D);var G=a(D,2),ee=a(s(G),2);u(ee),n(G);var T=a(G,2),te=a(s(T),2);u(te),n(T);var $=a(T,2),ae=a(s($),2);u(ae),n($);var re=a($,2),ne=s(re);u(ne),Pe(2),n(re),n(A);var se=a(A,2),w=s(se),he=s(w);n(w);var xe=a(w,2);{var _e=e=>{var r=Me();b("click",r,z),h(e,r)};Y(xe,e=>{t(l)&&e(_e)})}n(se),n(X),n(H),n(k),L(()=>{p(fe,`${t(l)?"Edit":"Add"} Environment`),U.disabled=!!t(l),p(he,`${t(l)?"Update":"Add"} Environment`)}),g(W,()=>t(i).settings.backup_path,e=>m(i,t(i).settings.backup_path=e)),b("click",ge,le),g(U,()=>t(o).id,e=>m(o,t(o).id=e)),g(Z,()=>t(o).name,e=>m(o,t(o).name=e)),g(ee,()=>t(o).url,e=>m(o,t(o).url=e)),g(te,()=>t(o).username,e=>m(o,t(o).username=e)),g(ae,()=>t(o).password,e=>m(o,t(o).password=e)),Fe(ne,()=>t(o).is_default,e=>m(o,t(o).is_default=e)),b("click",w,ce),h(y,k),je()}export{tt as component,et as universal};
diff --git a/frontend/.svelte-kit/output/client/_app/version.json b/frontend/.svelte-kit/output/client/_app/version.json
new file mode 100644
index 0000000..1fb0742
--- /dev/null
+++ b/frontend/.svelte-kit/output/client/_app/version.json
@@ -0,0 +1 @@
+{"version":"1766259433446"}
\ No newline at end of file
diff --git a/frontend/.svelte-kit/output/prerendered/dependencies/_app/env.js b/frontend/.svelte-kit/output/prerendered/dependencies/_app/env.js
new file mode 100644
index 0000000..f5427da
--- /dev/null
+++ b/frontend/.svelte-kit/output/prerendered/dependencies/_app/env.js
@@ -0,0 +1 @@
+export const env={}
\ No newline at end of file
diff --git a/frontend/.svelte-kit/output/server/.vite/manifest.json b/frontend/.svelte-kit/output/server/.vite/manifest.json
new file mode 100644
index 0000000..53586a9
--- /dev/null
+++ b/frontend/.svelte-kit/output/server/.vite/manifest.json
@@ -0,0 +1,177 @@
+{
+ ".svelte-kit/generated/server/internal.js": {
+ "file": "internal.js",
+ "name": "internal",
+ "src": ".svelte-kit/generated/server/internal.js",
+ "isEntry": true,
+ "imports": [
+ "_internal.js",
+ "_environment.js"
+ ]
+ },
+ "_api.js": {
+ "file": "chunks/api.js",
+ "name": "api",
+ "imports": [
+ "_toasts.js"
+ ]
+ },
+ "_environment.js": {
+ "file": "chunks/environment.js",
+ "name": "environment"
+ },
+ "_equality.js": {
+ "file": "chunks/equality.js",
+ "name": "equality"
+ },
+ "_exports.js": {
+ "file": "chunks/exports.js",
+ "name": "exports"
+ },
+ "_false.js": {
+ "file": "chunks/false.js",
+ "name": "false"
+ },
+ "_index.js": {
+ "file": "chunks/index.js",
+ "name": "index",
+ "imports": [
+ "_equality.js"
+ ]
+ },
+ "_index2.js": {
+ "file": "chunks/index2.js",
+ "name": "index",
+ "imports": [
+ "_false.js",
+ "_equality.js"
+ ]
+ },
+ "_internal.js": {
+ "file": "chunks/internal.js",
+ "name": "internal",
+ "imports": [
+ "_index2.js",
+ "_equality.js",
+ "_environment.js"
+ ]
+ },
+ "_shared.js": {
+ "file": "chunks/shared.js",
+ "name": "shared",
+ "imports": [
+ "_utils.js"
+ ]
+ },
+ "_stores.js": {
+ "file": "chunks/stores.js",
+ "name": "stores",
+ "imports": [
+ "_index2.js",
+ "_exports.js",
+ "_utils.js",
+ "_equality.js"
+ ]
+ },
+ "_toasts.js": {
+ "file": "chunks/toasts.js",
+ "name": "toasts",
+ "imports": [
+ "_index.js"
+ ]
+ },
+ "_utils.js": {
+ "file": "chunks/utils.js",
+ "name": "utils"
+ },
+ "node_modules/@sveltejs/kit/src/runtime/app/server/remote/index.js": {
+ "file": "remote-entry.js",
+ "name": "remote-entry",
+ "src": "node_modules/@sveltejs/kit/src/runtime/app/server/remote/index.js",
+ "isEntry": true,
+ "imports": [
+ "_shared.js",
+ "_false.js",
+ "_environment.js"
+ ]
+ },
+ "node_modules/@sveltejs/kit/src/runtime/server/index.js": {
+ "file": "index.js",
+ "name": "index",
+ "src": "node_modules/@sveltejs/kit/src/runtime/server/index.js",
+ "isEntry": true,
+ "imports": [
+ "_false.js",
+ "_environment.js",
+ "_shared.js",
+ "_exports.js",
+ "_utils.js",
+ "_index.js",
+ "_internal.js"
+ ]
+ },
+ "src/routes/+error.svelte": {
+ "file": "entries/pages/_error.svelte.js",
+ "name": "entries/pages/_error.svelte",
+ "src": "src/routes/+error.svelte",
+ "isEntry": true,
+ "imports": [
+ "_index2.js",
+ "_stores.js"
+ ]
+ },
+ "src/routes/+layout.svelte": {
+ "file": "entries/pages/_layout.svelte.js",
+ "name": "entries/pages/_layout.svelte",
+ "src": "src/routes/+layout.svelte",
+ "isEntry": true,
+ "imports": [
+ "_index2.js",
+ "_stores.js",
+ "_toasts.js"
+ ]
+ },
+ "src/routes/+layout.ts": {
+ "file": "entries/pages/_layout.ts.js",
+ "name": "entries/pages/_layout.ts",
+ "src": "src/routes/+layout.ts",
+ "isEntry": true
+ },
+ "src/routes/+page.svelte": {
+ "file": "entries/pages/_page.svelte.js",
+ "name": "entries/pages/_page.svelte",
+ "src": "src/routes/+page.svelte",
+ "isEntry": true,
+ "imports": [
+ "_index2.js",
+ "_index.js"
+ ]
+ },
+ "src/routes/+page.ts": {
+ "file": "entries/pages/_page.ts.js",
+ "name": "entries/pages/_page.ts",
+ "src": "src/routes/+page.ts",
+ "isEntry": true,
+ "imports": [
+ "_api.js"
+ ]
+ },
+ "src/routes/settings/+page.svelte": {
+ "file": "entries/pages/settings/_page.svelte.js",
+ "name": "entries/pages/settings/_page.svelte",
+ "src": "src/routes/settings/+page.svelte",
+ "isEntry": true,
+ "imports": [
+ "_index2.js"
+ ]
+ },
+ "src/routes/settings/+page.ts": {
+ "file": "entries/pages/settings/_page.ts.js",
+ "name": "entries/pages/settings/_page.ts",
+ "src": "src/routes/settings/+page.ts",
+ "isEntry": true,
+ "imports": [
+ "_api.js"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/frontend/.svelte-kit/output/server/chunks/api.js b/frontend/.svelte-kit/output/server/chunks/api.js
new file mode 100644
index 0000000..08dc5f4
--- /dev/null
+++ b/frontend/.svelte-kit/output/server/chunks/api.js
@@ -0,0 +1,77 @@
+import { a as addToast } from "./toasts.js";
+const API_BASE_URL = "/api";
+async function fetchApi(endpoint) {
+ try {
+ console.log(`[api.fetchApi][Action] Fetching from context={{'endpoint': '${endpoint}'}}`);
+ const response = await fetch(`${API_BASE_URL}${endpoint}`);
+ if (!response.ok) {
+ throw new Error(`API request failed with status ${response.status}`);
+ }
+ return await response.json();
+ } catch (error) {
+ console.error(`[api.fetchApi][Coherence:Failed] Error fetching from ${endpoint}:`, error);
+ addToast(error.message, "error");
+ throw error;
+ }
+}
+async function postApi(endpoint, body) {
+ try {
+ console.log(`[api.postApi][Action] Posting to context={{'endpoint': '${endpoint}'}}`);
+ const response = await fetch(`${API_BASE_URL}${endpoint}`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json"
+ },
+ body: JSON.stringify(body)
+ });
+ if (!response.ok) {
+ throw new Error(`API request failed with status ${response.status}`);
+ }
+ return await response.json();
+ } catch (error) {
+ console.error(`[api.postApi][Coherence:Failed] Error posting to ${endpoint}:`, error);
+ addToast(error.message, "error");
+ throw error;
+ }
+}
+async function requestApi(endpoint, method = "GET", body = null) {
+ try {
+ console.log(`[api.requestApi][Action] ${method} to context={{'endpoint': '${endpoint}'}}`);
+ const options = {
+ method,
+ headers: {
+ "Content-Type": "application/json"
+ }
+ };
+ if (body) {
+ options.body = JSON.stringify(body);
+ }
+ const response = await fetch(`${API_BASE_URL}${endpoint}`, options);
+ if (!response.ok) {
+ const errorData = await response.json().catch(() => ({}));
+ throw new Error(errorData.detail || `API request failed with status ${response.status}`);
+ }
+ return await response.json();
+ } catch (error) {
+ console.error(`[api.requestApi][Coherence:Failed] Error ${method} to ${endpoint}:`, error);
+ addToast(error.message, "error");
+ throw error;
+ }
+}
+const api = {
+ getPlugins: () => fetchApi("/plugins/"),
+ getTasks: () => fetchApi("/tasks/"),
+ getTask: (taskId) => fetchApi(`/tasks/${taskId}`),
+ createTask: (pluginId, params) => postApi("/tasks/", { plugin_id: pluginId, params }),
+ // Settings
+ getSettings: () => fetchApi("/settings/"),
+ updateGlobalSettings: (settings) => requestApi("/settings/global", "PATCH", settings),
+ getEnvironments: () => fetchApi("/settings/environments"),
+ addEnvironment: (env) => postApi("/settings/environments", env),
+ updateEnvironment: (id, env) => requestApi(`/settings/environments/${id}`, "PUT", env),
+ deleteEnvironment: (id) => requestApi(`/settings/environments/${id}`, "DELETE"),
+ testEnvironmentConnection: (id) => postApi(`/settings/environments/${id}/test`, {})
+};
+export {
+ api as a
+};
diff --git a/frontend/.svelte-kit/output/server/chunks/environment.js b/frontend/.svelte-kit/output/server/chunks/environment.js
new file mode 100644
index 0000000..ad45c3c
--- /dev/null
+++ b/frontend/.svelte-kit/output/server/chunks/environment.js
@@ -0,0 +1,34 @@
+let base = "";
+let assets = base;
+const app_dir = "_app";
+const relative = true;
+const initial = { base, assets };
+function override(paths) {
+ base = paths.base;
+ assets = paths.assets;
+}
+function reset() {
+ base = initial.base;
+ assets = initial.assets;
+}
+function set_assets(path) {
+ assets = initial.assets = path;
+}
+let prerendering = false;
+function set_building() {
+}
+function set_prerendering() {
+ prerendering = true;
+}
+export {
+ assets as a,
+ base as b,
+ app_dir as c,
+ reset as d,
+ set_building as e,
+ set_prerendering as f,
+ override as o,
+ prerendering as p,
+ relative as r,
+ set_assets as s
+};
diff --git a/frontend/.svelte-kit/output/server/chunks/equality.js b/frontend/.svelte-kit/output/server/chunks/equality.js
new file mode 100644
index 0000000..3f27de5
--- /dev/null
+++ b/frontend/.svelte-kit/output/server/chunks/equality.js
@@ -0,0 +1,51 @@
+var is_array = Array.isArray;
+var index_of = Array.prototype.indexOf;
+var array_from = Array.from;
+var define_property = Object.defineProperty;
+var get_descriptor = Object.getOwnPropertyDescriptor;
+var object_prototype = Object.prototype;
+var array_prototype = Array.prototype;
+var get_prototype_of = Object.getPrototypeOf;
+var is_extensible = Object.isExtensible;
+const noop = () => {
+};
+function run_all(arr) {
+ for (var i = 0; i < arr.length; i++) {
+ arr[i]();
+ }
+}
+function deferred() {
+ var resolve;
+ var reject;
+ var promise = new Promise((res, rej) => {
+ resolve = res;
+ reject = rej;
+ });
+ return { promise, resolve, reject };
+}
+function equals(value) {
+ return value === this.v;
+}
+function safe_not_equal(a, b) {
+ return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
+}
+function safe_equals(value) {
+ return !safe_not_equal(value, this.v);
+}
+export {
+ array_from as a,
+ deferred as b,
+ array_prototype as c,
+ define_property as d,
+ equals as e,
+ get_prototype_of as f,
+ get_descriptor as g,
+ is_extensible as h,
+ is_array as i,
+ index_of as j,
+ safe_not_equal as k,
+ noop as n,
+ object_prototype as o,
+ run_all as r,
+ safe_equals as s
+};
diff --git a/frontend/.svelte-kit/output/server/chunks/exports.js b/frontend/.svelte-kit/output/server/chunks/exports.js
new file mode 100644
index 0000000..4380620
--- /dev/null
+++ b/frontend/.svelte-kit/output/server/chunks/exports.js
@@ -0,0 +1,174 @@
+const SCHEME = /^[a-z][a-z\d+\-.]+:/i;
+const internal = new URL("sveltekit-internal://");
+function resolve(base, path) {
+ if (path[0] === "/" && path[1] === "/") return path;
+ let url = new URL(base, internal);
+ url = new URL(path, url);
+ return url.protocol === internal.protocol ? url.pathname + url.search + url.hash : url.href;
+}
+function normalize_path(path, trailing_slash) {
+ if (path === "/" || trailing_slash === "ignore") return path;
+ if (trailing_slash === "never") {
+ return path.endsWith("/") ? path.slice(0, -1) : path;
+ } else if (trailing_slash === "always" && !path.endsWith("/")) {
+ return path + "/";
+ }
+ return path;
+}
+function decode_pathname(pathname) {
+ return pathname.split("%25").map(decodeURI).join("%25");
+}
+function decode_params(params) {
+ for (const key in params) {
+ params[key] = decodeURIComponent(params[key]);
+ }
+ return params;
+}
+function make_trackable(url, callback, search_params_callback, allow_hash = false) {
+ const tracked = new URL(url);
+ Object.defineProperty(tracked, "searchParams", {
+ value: new Proxy(tracked.searchParams, {
+ get(obj, key) {
+ if (key === "get" || key === "getAll" || key === "has") {
+ return (param) => {
+ search_params_callback(param);
+ return obj[key](param);
+ };
+ }
+ callback();
+ const value = Reflect.get(obj, key);
+ return typeof value === "function" ? value.bind(obj) : value;
+ }
+ }),
+ enumerable: true,
+ configurable: true
+ });
+ const tracked_url_properties = ["href", "pathname", "search", "toString", "toJSON"];
+ if (allow_hash) tracked_url_properties.push("hash");
+ for (const property of tracked_url_properties) {
+ Object.defineProperty(tracked, property, {
+ get() {
+ callback();
+ return url[property];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ }
+ {
+ tracked[/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")] = (depth, opts, inspect) => {
+ return inspect(url, opts);
+ };
+ tracked.searchParams[/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")] = (depth, opts, inspect) => {
+ return inspect(url.searchParams, opts);
+ };
+ }
+ if (!allow_hash) {
+ disable_hash(tracked);
+ }
+ return tracked;
+}
+function disable_hash(url) {
+ allow_nodejs_console_log(url);
+ Object.defineProperty(url, "hash", {
+ get() {
+ throw new Error(
+ "Cannot access event.url.hash. Consider using `page.url.hash` inside a component instead"
+ );
+ }
+ });
+}
+function disable_search(url) {
+ allow_nodejs_console_log(url);
+ for (const property of ["search", "searchParams"]) {
+ Object.defineProperty(url, property, {
+ get() {
+ throw new Error(`Cannot access url.${property} on a page with prerendering enabled`);
+ }
+ });
+ }
+}
+function allow_nodejs_console_log(url) {
+ {
+ url[/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")] = (depth, opts, inspect) => {
+ return inspect(new URL(url), opts);
+ };
+ }
+}
+function validator(expected) {
+ function validate(module, file) {
+ if (!module) return;
+ for (const key in module) {
+ if (key[0] === "_" || expected.has(key)) continue;
+ const values = [...expected.values()];
+ const hint = hint_for_supported_files(key, file?.slice(file.lastIndexOf("."))) ?? `valid exports are ${values.join(", ")}, or anything with a '_' prefix`;
+ throw new Error(`Invalid export '${key}'${file ? ` in ${file}` : ""} (${hint})`);
+ }
+ }
+ return validate;
+}
+function hint_for_supported_files(key, ext = ".js") {
+ const supported_files = [];
+ if (valid_layout_exports.has(key)) {
+ supported_files.push(`+layout${ext}`);
+ }
+ if (valid_page_exports.has(key)) {
+ supported_files.push(`+page${ext}`);
+ }
+ if (valid_layout_server_exports.has(key)) {
+ supported_files.push(`+layout.server${ext}`);
+ }
+ if (valid_page_server_exports.has(key)) {
+ supported_files.push(`+page.server${ext}`);
+ }
+ if (valid_server_exports.has(key)) {
+ supported_files.push(`+server${ext}`);
+ }
+ if (supported_files.length > 0) {
+ return `'${key}' is a valid export in ${supported_files.slice(0, -1).join(", ")}${supported_files.length > 1 ? " or " : ""}${supported_files.at(-1)}`;
+ }
+}
+const valid_layout_exports = /* @__PURE__ */ new Set([
+ "load",
+ "prerender",
+ "csr",
+ "ssr",
+ "trailingSlash",
+ "config"
+]);
+const valid_page_exports = /* @__PURE__ */ new Set([...valid_layout_exports, "entries"]);
+const valid_layout_server_exports = /* @__PURE__ */ new Set([...valid_layout_exports]);
+const valid_page_server_exports = /* @__PURE__ */ new Set([...valid_layout_server_exports, "actions", "entries"]);
+const valid_server_exports = /* @__PURE__ */ new Set([
+ "GET",
+ "POST",
+ "PATCH",
+ "PUT",
+ "DELETE",
+ "OPTIONS",
+ "HEAD",
+ "fallback",
+ "prerender",
+ "trailingSlash",
+ "config",
+ "entries"
+]);
+const validate_layout_exports = validator(valid_layout_exports);
+const validate_page_exports = validator(valid_page_exports);
+const validate_layout_server_exports = validator(valid_layout_server_exports);
+const validate_page_server_exports = validator(valid_page_server_exports);
+const validate_server_exports = validator(valid_server_exports);
+export {
+ SCHEME as S,
+ decode_params as a,
+ validate_layout_exports as b,
+ validate_page_server_exports as c,
+ disable_search as d,
+ validate_page_exports as e,
+ decode_pathname as f,
+ validate_server_exports as g,
+ make_trackable as m,
+ normalize_path as n,
+ resolve as r,
+ validate_layout_server_exports as v
+};
diff --git a/frontend/.svelte-kit/output/server/chunks/false.js b/frontend/.svelte-kit/output/server/chunks/false.js
new file mode 100644
index 0000000..85bc56d
--- /dev/null
+++ b/frontend/.svelte-kit/output/server/chunks/false.js
@@ -0,0 +1,4 @@
+const BROWSER = false;
+export {
+ BROWSER as B
+};
diff --git a/frontend/.svelte-kit/output/server/chunks/index.js b/frontend/.svelte-kit/output/server/chunks/index.js
new file mode 100644
index 0000000..f33cead
--- /dev/null
+++ b/frontend/.svelte-kit/output/server/chunks/index.js
@@ -0,0 +1,59 @@
+import { n as noop, k as safe_not_equal } from "./equality.js";
+import "clsx";
+const subscriber_queue = [];
+function readable(value, start) {
+ return {
+ subscribe: writable(value, start).subscribe
+ };
+}
+function writable(value, start = noop) {
+ let stop = null;
+ const subscribers = /* @__PURE__ */ new Set();
+ function set(new_value) {
+ if (safe_not_equal(value, new_value)) {
+ value = new_value;
+ if (stop) {
+ const run_queue = !subscriber_queue.length;
+ for (const subscriber of subscribers) {
+ subscriber[1]();
+ subscriber_queue.push(subscriber, value);
+ }
+ if (run_queue) {
+ for (let i = 0; i < subscriber_queue.length; i += 2) {
+ subscriber_queue[i][0](subscriber_queue[i + 1]);
+ }
+ subscriber_queue.length = 0;
+ }
+ }
+ }
+ }
+ function update(fn) {
+ set(fn(
+ /** @type {T} */
+ value
+ ));
+ }
+ function subscribe(run, invalidate = noop) {
+ const subscriber = [run, invalidate];
+ subscribers.add(subscriber);
+ if (subscribers.size === 1) {
+ stop = start(set, update) || noop;
+ }
+ run(
+ /** @type {T} */
+ value
+ );
+ return () => {
+ subscribers.delete(subscriber);
+ if (subscribers.size === 0 && stop) {
+ stop();
+ stop = null;
+ }
+ };
+ }
+ return { set, update, subscribe };
+}
+export {
+ readable as r,
+ writable as w
+};
diff --git a/frontend/.svelte-kit/output/server/chunks/index2.js b/frontend/.svelte-kit/output/server/chunks/index2.js
new file mode 100644
index 0000000..3a8ff46
--- /dev/null
+++ b/frontend/.svelte-kit/output/server/chunks/index2.js
@@ -0,0 +1,2783 @@
+import { clsx as clsx$1 } from "clsx";
+import { B as BROWSER } from "./false.js";
+import { r as run_all, b as deferred, s as safe_equals, e as equals, o as object_prototype, c as array_prototype, g as get_descriptor, f as get_prototype_of, i as is_array, h as is_extensible, j as index_of, n as noop } from "./equality.js";
+const DERIVED = 1 << 1;
+const EFFECT = 1 << 2;
+const RENDER_EFFECT = 1 << 3;
+const MANAGED_EFFECT = 1 << 24;
+const BLOCK_EFFECT = 1 << 4;
+const BRANCH_EFFECT = 1 << 5;
+const ROOT_EFFECT = 1 << 6;
+const BOUNDARY_EFFECT = 1 << 7;
+const CONNECTED = 1 << 9;
+const CLEAN = 1 << 10;
+const DIRTY = 1 << 11;
+const MAYBE_DIRTY = 1 << 12;
+const INERT = 1 << 13;
+const DESTROYED = 1 << 14;
+const EFFECT_RAN = 1 << 15;
+const EFFECT_TRANSPARENT = 1 << 16;
+const EAGER_EFFECT = 1 << 17;
+const HEAD_EFFECT = 1 << 18;
+const EFFECT_PRESERVED = 1 << 19;
+const USER_EFFECT = 1 << 20;
+const WAS_MARKED = 1 << 15;
+const REACTION_IS_UPDATING = 1 << 21;
+const ASYNC = 1 << 22;
+const ERROR_VALUE = 1 << 23;
+const STATE_SYMBOL = /* @__PURE__ */ Symbol("$state");
+const LEGACY_PROPS = /* @__PURE__ */ Symbol("legacy props");
+const STALE_REACTION = new class StaleReactionError extends Error {
+ name = "StaleReactionError";
+ message = "The reaction that called `getAbortSignal()` was re-run or destroyed";
+}();
+const COMMENT_NODE = 8;
+function lifecycle_outside_component(name) {
+ {
+ throw new Error(`https://svelte.dev/e/lifecycle_outside_component`);
+ }
+}
+function effect_update_depth_exceeded() {
+ {
+ throw new Error(`https://svelte.dev/e/effect_update_depth_exceeded`);
+ }
+}
+function hydration_failed() {
+ {
+ throw new Error(`https://svelte.dev/e/hydration_failed`);
+ }
+}
+function state_descriptors_fixed() {
+ {
+ throw new Error(`https://svelte.dev/e/state_descriptors_fixed`);
+ }
+}
+function state_prototype_fixed() {
+ {
+ throw new Error(`https://svelte.dev/e/state_prototype_fixed`);
+ }
+}
+function state_unsafe_mutation() {
+ {
+ throw new Error(`https://svelte.dev/e/state_unsafe_mutation`);
+ }
+}
+function svelte_boundary_reset_onerror() {
+ {
+ throw new Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`);
+ }
+}
+const HYDRATION_START = "[";
+const HYDRATION_START_ELSE = "[!";
+const HYDRATION_END = "]";
+const HYDRATION_ERROR = {};
+const ELEMENT_IS_NAMESPACED = 1;
+const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1;
+const ELEMENT_IS_INPUT = 1 << 2;
+const UNINITIALIZED = /* @__PURE__ */ Symbol();
+let tracing_mode_flag = false;
+let component_context = null;
+function set_component_context(context) {
+ component_context = context;
+}
+function push$1(props, runes = false, fn) {
+ component_context = {
+ p: component_context,
+ i: false,
+ c: null,
+ e: null,
+ s: props,
+ x: null,
+ l: null
+ };
+}
+function pop$1(component) {
+ var context = (
+ /** @type {ComponentContext} */
+ component_context
+ );
+ var effects = context.e;
+ if (effects !== null) {
+ context.e = null;
+ for (var fn of effects) {
+ create_user_effect(fn);
+ }
+ }
+ context.i = true;
+ component_context = context.p;
+ return (
+ /** @type {T} */
+ {}
+ );
+}
+function is_runes() {
+ return true;
+}
+let micro_tasks = [];
+function run_micro_tasks() {
+ var tasks = micro_tasks;
+ micro_tasks = [];
+ run_all(tasks);
+}
+function queue_micro_task(fn) {
+ if (micro_tasks.length === 0 && !is_flushing_sync) {
+ var tasks = micro_tasks;
+ queueMicrotask(() => {
+ if (tasks === micro_tasks) run_micro_tasks();
+ });
+ }
+ micro_tasks.push(fn);
+}
+function flush_tasks() {
+ while (micro_tasks.length > 0) {
+ run_micro_tasks();
+ }
+}
+function handle_error(error) {
+ var effect = active_effect;
+ if (effect === null) {
+ active_reaction.f |= ERROR_VALUE;
+ return error;
+ }
+ if ((effect.f & EFFECT_RAN) === 0) {
+ if ((effect.f & BOUNDARY_EFFECT) === 0) {
+ throw error;
+ }
+ effect.b.error(error);
+ } else {
+ invoke_error_boundary(error, effect);
+ }
+}
+function invoke_error_boundary(error, effect) {
+ while (effect !== null) {
+ if ((effect.f & BOUNDARY_EFFECT) !== 0) {
+ try {
+ effect.b.error(error);
+ return;
+ } catch (e) {
+ error = e;
+ }
+ }
+ effect = effect.parent;
+ }
+ throw error;
+}
+const batches = /* @__PURE__ */ new Set();
+let current_batch = null;
+let batch_values = null;
+let queued_root_effects = [];
+let last_scheduled_effect = null;
+let is_flushing = false;
+let is_flushing_sync = false;
+class Batch {
+ committed = false;
+ /**
+ * The current values of any sources that are updated in this batch
+ * They keys of this map are identical to `this.#previous`
+ * @type {Map}
+ */
+ current = /* @__PURE__ */ new Map();
+ /**
+ * The values of any sources that are updated in this batch _before_ those updates took place.
+ * They keys of this map are identical to `this.#current`
+ * @type {Map}
+ */
+ previous = /* @__PURE__ */ new Map();
+ /**
+ * When the batch is committed (and the DOM is updated), we need to remove old branches
+ * and append new ones by calling the functions added inside (if/each/key/etc) blocks
+ * @type {Set<() => void>}
+ */
+ #commit_callbacks = /* @__PURE__ */ new Set();
+ /**
+ * If a fork is discarded, we need to destroy any effects that are no longer needed
+ * @type {Set<(batch: Batch) => void>}
+ */
+ #discard_callbacks = /* @__PURE__ */ new Set();
+ /**
+ * The number of async effects that are currently in flight
+ */
+ #pending = 0;
+ /**
+ * The number of async effects that are currently in flight, _not_ inside a pending boundary
+ */
+ #blocking_pending = 0;
+ /**
+ * A deferred that resolves when the batch is committed, used with `settled()`
+ * TODO replace with Promise.withResolvers once supported widely enough
+ * @type {{ promise: Promise, resolve: (value?: any) => void, reject: (reason: unknown) => void } | null}
+ */
+ #deferred = null;
+ /**
+ * Deferred effects (which run after async work has completed) that are DIRTY
+ * @type {Set}
+ */
+ #dirty_effects = /* @__PURE__ */ new Set();
+ /**
+ * Deferred effects that are MAYBE_DIRTY
+ * @type {Set}
+ */
+ #maybe_dirty_effects = /* @__PURE__ */ new Set();
+ /**
+ * A set of branches that still exist, but will be destroyed when this batch
+ * is committed — we skip over these during `process`
+ * @type {Set}
+ */
+ skipped_effects = /* @__PURE__ */ new Set();
+ is_fork = false;
+ is_deferred() {
+ return this.is_fork || this.#blocking_pending > 0;
+ }
+ /**
+ *
+ * @param {Effect[]} root_effects
+ */
+ process(root_effects) {
+ queued_root_effects = [];
+ this.apply();
+ var target = {
+ parent: null,
+ effect: null,
+ effects: [],
+ render_effects: []
+ };
+ for (const root of root_effects) {
+ this.#traverse_effect_tree(root, target);
+ }
+ if (!this.is_fork) {
+ this.#resolve();
+ }
+ if (this.is_deferred()) {
+ this.#defer_effects(target.effects);
+ this.#defer_effects(target.render_effects);
+ } else {
+ current_batch = null;
+ flush_queued_effects(target.render_effects);
+ flush_queued_effects(target.effects);
+ this.#deferred?.resolve();
+ }
+ batch_values = null;
+ }
+ /**
+ * Traverse the effect tree, executing effects or stashing
+ * them for later execution as appropriate
+ * @param {Effect} root
+ * @param {EffectTarget} target
+ */
+ #traverse_effect_tree(root, target) {
+ root.f ^= CLEAN;
+ var effect = root.first;
+ while (effect !== null) {
+ var flags = effect.f;
+ var is_branch = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0;
+ var is_skippable_branch = is_branch && (flags & CLEAN) !== 0;
+ var skip = is_skippable_branch || (flags & INERT) !== 0 || this.skipped_effects.has(effect);
+ if ((effect.f & BOUNDARY_EFFECT) !== 0 && effect.b?.is_pending()) {
+ target = {
+ parent: target,
+ effect,
+ effects: [],
+ render_effects: []
+ };
+ }
+ if (!skip && effect.fn !== null) {
+ if (is_branch) {
+ effect.f ^= CLEAN;
+ } else if ((flags & EFFECT) !== 0) {
+ target.effects.push(effect);
+ } else if (is_dirty(effect)) {
+ if ((effect.f & BLOCK_EFFECT) !== 0) this.#dirty_effects.add(effect);
+ update_effect(effect);
+ }
+ var child = effect.first;
+ if (child !== null) {
+ effect = child;
+ continue;
+ }
+ }
+ var parent = effect.parent;
+ effect = effect.next;
+ while (effect === null && parent !== null) {
+ if (parent === target.effect) {
+ this.#defer_effects(target.effects);
+ this.#defer_effects(target.render_effects);
+ target = /** @type {EffectTarget} */
+ target.parent;
+ }
+ effect = parent.next;
+ parent = parent.parent;
+ }
+ }
+ }
+ /**
+ * @param {Effect[]} effects
+ */
+ #defer_effects(effects) {
+ for (const e of effects) {
+ if ((e.f & DIRTY) !== 0) {
+ this.#dirty_effects.add(e);
+ } else if ((e.f & MAYBE_DIRTY) !== 0) {
+ this.#maybe_dirty_effects.add(e);
+ }
+ this.#clear_marked(e.deps);
+ set_signal_status(e, CLEAN);
+ }
+ }
+ /**
+ * @param {Value[] | null} deps
+ */
+ #clear_marked(deps) {
+ if (deps === null) return;
+ for (const dep of deps) {
+ if ((dep.f & DERIVED) === 0 || (dep.f & WAS_MARKED) === 0) {
+ continue;
+ }
+ dep.f ^= WAS_MARKED;
+ this.#clear_marked(
+ /** @type {Derived} */
+ dep.deps
+ );
+ }
+ }
+ /**
+ * Associate a change to a given source with the current
+ * batch, noting its previous and current values
+ * @param {Source} source
+ * @param {any} value
+ */
+ capture(source2, value) {
+ if (!this.previous.has(source2)) {
+ this.previous.set(source2, value);
+ }
+ if ((source2.f & ERROR_VALUE) === 0) {
+ this.current.set(source2, source2.v);
+ batch_values?.set(source2, source2.v);
+ }
+ }
+ activate() {
+ current_batch = this;
+ this.apply();
+ }
+ deactivate() {
+ if (current_batch !== this) return;
+ current_batch = null;
+ batch_values = null;
+ }
+ flush() {
+ this.activate();
+ if (queued_root_effects.length > 0) {
+ flush_effects();
+ if (current_batch !== null && current_batch !== this) {
+ return;
+ }
+ } else if (this.#pending === 0) {
+ this.process([]);
+ }
+ this.deactivate();
+ }
+ discard() {
+ for (const fn of this.#discard_callbacks) fn(this);
+ this.#discard_callbacks.clear();
+ }
+ #resolve() {
+ if (this.#blocking_pending === 0) {
+ for (const fn of this.#commit_callbacks) fn();
+ this.#commit_callbacks.clear();
+ }
+ if (this.#pending === 0) {
+ this.#commit();
+ }
+ }
+ #commit() {
+ if (batches.size > 1) {
+ this.previous.clear();
+ var previous_batch_values = batch_values;
+ var is_earlier = true;
+ var dummy_target = {
+ parent: null,
+ effect: null,
+ effects: [],
+ render_effects: []
+ };
+ for (const batch of batches) {
+ if (batch === this) {
+ is_earlier = false;
+ continue;
+ }
+ const sources = [];
+ for (const [source2, value] of this.current) {
+ if (batch.current.has(source2)) {
+ if (is_earlier && value !== batch.current.get(source2)) {
+ batch.current.set(source2, value);
+ } else {
+ continue;
+ }
+ }
+ sources.push(source2);
+ }
+ if (sources.length === 0) {
+ continue;
+ }
+ const others = [...batch.current.keys()].filter((s) => !this.current.has(s));
+ if (others.length > 0) {
+ var prev_queued_root_effects = queued_root_effects;
+ queued_root_effects = [];
+ const marked = /* @__PURE__ */ new Set();
+ const checked = /* @__PURE__ */ new Map();
+ for (const source2 of sources) {
+ mark_effects(source2, others, marked, checked);
+ }
+ if (queued_root_effects.length > 0) {
+ current_batch = batch;
+ batch.apply();
+ for (const root of queued_root_effects) {
+ batch.#traverse_effect_tree(root, dummy_target);
+ }
+ batch.deactivate();
+ }
+ queued_root_effects = prev_queued_root_effects;
+ }
+ }
+ current_batch = null;
+ batch_values = previous_batch_values;
+ }
+ this.committed = true;
+ batches.delete(this);
+ }
+ /**
+ *
+ * @param {boolean} blocking
+ */
+ increment(blocking) {
+ this.#pending += 1;
+ if (blocking) this.#blocking_pending += 1;
+ }
+ /**
+ *
+ * @param {boolean} blocking
+ */
+ decrement(blocking) {
+ this.#pending -= 1;
+ if (blocking) this.#blocking_pending -= 1;
+ this.revive();
+ }
+ revive() {
+ for (const e of this.#dirty_effects) {
+ this.#maybe_dirty_effects.delete(e);
+ set_signal_status(e, DIRTY);
+ schedule_effect(e);
+ }
+ for (const e of this.#maybe_dirty_effects) {
+ set_signal_status(e, MAYBE_DIRTY);
+ schedule_effect(e);
+ }
+ this.flush();
+ }
+ /** @param {() => void} fn */
+ oncommit(fn) {
+ this.#commit_callbacks.add(fn);
+ }
+ /** @param {(batch: Batch) => void} fn */
+ ondiscard(fn) {
+ this.#discard_callbacks.add(fn);
+ }
+ settled() {
+ return (this.#deferred ??= deferred()).promise;
+ }
+ static ensure() {
+ if (current_batch === null) {
+ const batch = current_batch = new Batch();
+ batches.add(current_batch);
+ if (!is_flushing_sync) {
+ Batch.enqueue(() => {
+ if (current_batch !== batch) {
+ return;
+ }
+ batch.flush();
+ });
+ }
+ }
+ return current_batch;
+ }
+ /** @param {() => void} task */
+ static enqueue(task) {
+ queue_micro_task(task);
+ }
+ apply() {
+ return;
+ }
+}
+function flushSync(fn) {
+ var was_flushing_sync = is_flushing_sync;
+ is_flushing_sync = true;
+ try {
+ var result;
+ if (fn) ;
+ while (true) {
+ flush_tasks();
+ if (queued_root_effects.length === 0) {
+ current_batch?.flush();
+ if (queued_root_effects.length === 0) {
+ last_scheduled_effect = null;
+ return (
+ /** @type {T} */
+ result
+ );
+ }
+ }
+ flush_effects();
+ }
+ } finally {
+ is_flushing_sync = was_flushing_sync;
+ }
+}
+function flush_effects() {
+ var was_updating_effect = is_updating_effect;
+ is_flushing = true;
+ var source_stacks = null;
+ try {
+ var flush_count = 0;
+ set_is_updating_effect(true);
+ while (queued_root_effects.length > 0) {
+ var batch = Batch.ensure();
+ if (flush_count++ > 1e3) {
+ var updates, entry;
+ if (BROWSER) ;
+ infinite_loop_guard();
+ }
+ batch.process(queued_root_effects);
+ old_values.clear();
+ if (BROWSER) ;
+ }
+ } finally {
+ is_flushing = false;
+ set_is_updating_effect(was_updating_effect);
+ last_scheduled_effect = null;
+ }
+}
+function infinite_loop_guard() {
+ try {
+ effect_update_depth_exceeded();
+ } catch (error) {
+ invoke_error_boundary(error, last_scheduled_effect);
+ }
+}
+let eager_block_effects = null;
+function flush_queued_effects(effects) {
+ var length = effects.length;
+ if (length === 0) return;
+ var i = 0;
+ while (i < length) {
+ var effect = effects[i++];
+ if ((effect.f & (DESTROYED | INERT)) === 0 && is_dirty(effect)) {
+ eager_block_effects = /* @__PURE__ */ new Set();
+ update_effect(effect);
+ if (effect.deps === null && effect.first === null && effect.nodes === null) {
+ if (effect.teardown === null && effect.ac === null) {
+ unlink_effect(effect);
+ } else {
+ effect.fn = null;
+ }
+ }
+ if (eager_block_effects?.size > 0) {
+ old_values.clear();
+ for (const e of eager_block_effects) {
+ if ((e.f & (DESTROYED | INERT)) !== 0) continue;
+ const ordered_effects = [e];
+ let ancestor = e.parent;
+ while (ancestor !== null) {
+ if (eager_block_effects.has(ancestor)) {
+ eager_block_effects.delete(ancestor);
+ ordered_effects.push(ancestor);
+ }
+ ancestor = ancestor.parent;
+ }
+ for (let j = ordered_effects.length - 1; j >= 0; j--) {
+ const e2 = ordered_effects[j];
+ if ((e2.f & (DESTROYED | INERT)) !== 0) continue;
+ update_effect(e2);
+ }
+ }
+ eager_block_effects.clear();
+ }
+ }
+ }
+ eager_block_effects = null;
+}
+function mark_effects(value, sources, marked, checked) {
+ if (marked.has(value)) return;
+ marked.add(value);
+ if (value.reactions !== null) {
+ for (const reaction of value.reactions) {
+ const flags = reaction.f;
+ if ((flags & DERIVED) !== 0) {
+ mark_effects(
+ /** @type {Derived} */
+ reaction,
+ sources,
+ marked,
+ checked
+ );
+ } else if ((flags & (ASYNC | BLOCK_EFFECT)) !== 0 && (flags & DIRTY) === 0 && depends_on(reaction, sources, checked)) {
+ set_signal_status(reaction, DIRTY);
+ schedule_effect(
+ /** @type {Effect} */
+ reaction
+ );
+ }
+ }
+ }
+}
+function depends_on(reaction, sources, checked) {
+ const depends = checked.get(reaction);
+ if (depends !== void 0) return depends;
+ if (reaction.deps !== null) {
+ for (const dep of reaction.deps) {
+ if (sources.includes(dep)) {
+ return true;
+ }
+ if ((dep.f & DERIVED) !== 0 && depends_on(
+ /** @type {Derived} */
+ dep,
+ sources,
+ checked
+ )) {
+ checked.set(
+ /** @type {Derived} */
+ dep,
+ true
+ );
+ return true;
+ }
+ }
+ }
+ checked.set(reaction, false);
+ return false;
+}
+function schedule_effect(signal) {
+ var effect = last_scheduled_effect = signal;
+ while (effect.parent !== null) {
+ effect = effect.parent;
+ var flags = effect.f;
+ if (is_flushing && effect === active_effect && (flags & BLOCK_EFFECT) !== 0 && (flags & HEAD_EFFECT) === 0) {
+ return;
+ }
+ if ((flags & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {
+ if ((flags & CLEAN) === 0) return;
+ effect.f ^= CLEAN;
+ }
+ }
+ queued_root_effects.push(effect);
+}
+function destroy_derived_effects(derived) {
+ var effects = derived.effects;
+ if (effects !== null) {
+ derived.effects = null;
+ for (var i = 0; i < effects.length; i += 1) {
+ destroy_effect(
+ /** @type {Effect} */
+ effects[i]
+ );
+ }
+ }
+}
+function get_derived_parent_effect(derived) {
+ var parent = derived.parent;
+ while (parent !== null) {
+ if ((parent.f & DERIVED) === 0) {
+ return (parent.f & DESTROYED) === 0 ? (
+ /** @type {Effect} */
+ parent
+ ) : null;
+ }
+ parent = parent.parent;
+ }
+ return null;
+}
+function execute_derived(derived) {
+ var value;
+ var prev_active_effect = active_effect;
+ set_active_effect(get_derived_parent_effect(derived));
+ {
+ try {
+ derived.f &= ~WAS_MARKED;
+ destroy_derived_effects(derived);
+ value = update_reaction(derived);
+ } finally {
+ set_active_effect(prev_active_effect);
+ }
+ }
+ return value;
+}
+function update_derived(derived) {
+ var value = execute_derived(derived);
+ if (!derived.equals(value)) {
+ if (!current_batch?.is_fork) {
+ derived.v = value;
+ }
+ derived.wv = increment_write_version();
+ }
+ if (is_destroying_effect) {
+ return;
+ }
+ if (batch_values !== null) {
+ if (effect_tracking() || current_batch?.is_fork) {
+ batch_values.set(derived, value);
+ }
+ } else {
+ var status = (derived.f & CONNECTED) === 0 ? MAYBE_DIRTY : CLEAN;
+ set_signal_status(derived, status);
+ }
+}
+let eager_effects = /* @__PURE__ */ new Set();
+const old_values = /* @__PURE__ */ new Map();
+let eager_effects_deferred = false;
+function source(v, stack) {
+ var signal = {
+ f: 0,
+ // TODO ideally we could skip this altogether, but it causes type errors
+ v,
+ reactions: null,
+ equals,
+ rv: 0,
+ wv: 0
+ };
+ return signal;
+}
+// @__NO_SIDE_EFFECTS__
+function state(v, stack) {
+ const s = source(v);
+ push_reaction_value(s);
+ return s;
+}
+// @__NO_SIDE_EFFECTS__
+function mutable_source(initial_value, immutable = false, trackable = true) {
+ const s = source(initial_value);
+ if (!immutable) {
+ s.equals = safe_equals;
+ }
+ return s;
+}
+function set(source2, value, should_proxy = false) {
+ if (active_reaction !== null && // since we are untracking the function inside `$inspect.with` we need to add this check
+ // to ensure we error if state is set inside an inspect effect
+ (!untracking || (active_reaction.f & EAGER_EFFECT) !== 0) && is_runes() && (active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | EAGER_EFFECT)) !== 0 && !current_sources?.includes(source2)) {
+ state_unsafe_mutation();
+ }
+ let new_value = should_proxy ? proxy(value) : value;
+ return internal_set(source2, new_value);
+}
+function internal_set(source2, value) {
+ if (!source2.equals(value)) {
+ var old_value = source2.v;
+ if (is_destroying_effect) {
+ old_values.set(source2, value);
+ } else {
+ old_values.set(source2, old_value);
+ }
+ source2.v = value;
+ var batch = Batch.ensure();
+ batch.capture(source2, old_value);
+ if ((source2.f & DERIVED) !== 0) {
+ if ((source2.f & DIRTY) !== 0) {
+ execute_derived(
+ /** @type {Derived} */
+ source2
+ );
+ }
+ set_signal_status(source2, (source2.f & CONNECTED) !== 0 ? CLEAN : MAYBE_DIRTY);
+ }
+ source2.wv = increment_write_version();
+ mark_reactions(source2, DIRTY);
+ if (active_effect !== null && (active_effect.f & CLEAN) !== 0 && (active_effect.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0) {
+ if (untracked_writes === null) {
+ set_untracked_writes([source2]);
+ } else {
+ untracked_writes.push(source2);
+ }
+ }
+ if (!batch.is_fork && eager_effects.size > 0 && !eager_effects_deferred) {
+ flush_eager_effects();
+ }
+ }
+ return value;
+}
+function flush_eager_effects() {
+ eager_effects_deferred = false;
+ var prev_is_updating_effect = is_updating_effect;
+ set_is_updating_effect(true);
+ const inspects = Array.from(eager_effects);
+ try {
+ for (const effect of inspects) {
+ if ((effect.f & CLEAN) !== 0) {
+ set_signal_status(effect, MAYBE_DIRTY);
+ }
+ if (is_dirty(effect)) {
+ update_effect(effect);
+ }
+ }
+ } finally {
+ set_is_updating_effect(prev_is_updating_effect);
+ }
+ eager_effects.clear();
+}
+function increment(source2) {
+ set(source2, source2.v + 1);
+}
+function mark_reactions(signal, status) {
+ var reactions = signal.reactions;
+ if (reactions === null) return;
+ var length = reactions.length;
+ for (var i = 0; i < length; i++) {
+ var reaction = reactions[i];
+ var flags = reaction.f;
+ var not_dirty = (flags & DIRTY) === 0;
+ if (not_dirty) {
+ set_signal_status(reaction, status);
+ }
+ if ((flags & DERIVED) !== 0) {
+ var derived = (
+ /** @type {Derived} */
+ reaction
+ );
+ batch_values?.delete(derived);
+ if ((flags & WAS_MARKED) === 0) {
+ if (flags & CONNECTED) {
+ reaction.f |= WAS_MARKED;
+ }
+ mark_reactions(derived, MAYBE_DIRTY);
+ }
+ } else if (not_dirty) {
+ if ((flags & BLOCK_EFFECT) !== 0 && eager_block_effects !== null) {
+ eager_block_effects.add(
+ /** @type {Effect} */
+ reaction
+ );
+ }
+ schedule_effect(
+ /** @type {Effect} */
+ reaction
+ );
+ }
+ }
+}
+function proxy(value) {
+ if (typeof value !== "object" || value === null || STATE_SYMBOL in value) {
+ return value;
+ }
+ const prototype = get_prototype_of(value);
+ if (prototype !== object_prototype && prototype !== array_prototype) {
+ return value;
+ }
+ var sources = /* @__PURE__ */ new Map();
+ var is_proxied_array = is_array(value);
+ var version = /* @__PURE__ */ state(0);
+ var parent_version = update_version;
+ var with_parent = (fn) => {
+ if (update_version === parent_version) {
+ return fn();
+ }
+ var reaction = active_reaction;
+ var version2 = update_version;
+ set_active_reaction(null);
+ set_update_version(parent_version);
+ var result = fn();
+ set_active_reaction(reaction);
+ set_update_version(version2);
+ return result;
+ };
+ if (is_proxied_array) {
+ sources.set("length", /* @__PURE__ */ state(
+ /** @type {any[]} */
+ value.length
+ ));
+ }
+ return new Proxy(
+ /** @type {any} */
+ value,
+ {
+ defineProperty(_, prop, descriptor) {
+ if (!("value" in descriptor) || descriptor.configurable === false || descriptor.enumerable === false || descriptor.writable === false) {
+ state_descriptors_fixed();
+ }
+ var s = sources.get(prop);
+ if (s === void 0) {
+ s = with_parent(() => {
+ var s2 = /* @__PURE__ */ state(descriptor.value);
+ sources.set(prop, s2);
+ return s2;
+ });
+ } else {
+ set(s, descriptor.value, true);
+ }
+ return true;
+ },
+ deleteProperty(target, prop) {
+ var s = sources.get(prop);
+ if (s === void 0) {
+ if (prop in target) {
+ const s2 = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED));
+ sources.set(prop, s2);
+ increment(version);
+ }
+ } else {
+ set(s, UNINITIALIZED);
+ increment(version);
+ }
+ return true;
+ },
+ get(target, prop, receiver) {
+ if (prop === STATE_SYMBOL) {
+ return value;
+ }
+ var s = sources.get(prop);
+ var exists = prop in target;
+ if (s === void 0 && (!exists || get_descriptor(target, prop)?.writable)) {
+ s = with_parent(() => {
+ var p = proxy(exists ? target[prop] : UNINITIALIZED);
+ var s2 = /* @__PURE__ */ state(p);
+ return s2;
+ });
+ sources.set(prop, s);
+ }
+ if (s !== void 0) {
+ var v = get(s);
+ return v === UNINITIALIZED ? void 0 : v;
+ }
+ return Reflect.get(target, prop, receiver);
+ },
+ getOwnPropertyDescriptor(target, prop) {
+ var descriptor = Reflect.getOwnPropertyDescriptor(target, prop);
+ if (descriptor && "value" in descriptor) {
+ var s = sources.get(prop);
+ if (s) descriptor.value = get(s);
+ } else if (descriptor === void 0) {
+ var source2 = sources.get(prop);
+ var value2 = source2?.v;
+ if (source2 !== void 0 && value2 !== UNINITIALIZED) {
+ return {
+ enumerable: true,
+ configurable: true,
+ value: value2,
+ writable: true
+ };
+ }
+ }
+ return descriptor;
+ },
+ has(target, prop) {
+ if (prop === STATE_SYMBOL) {
+ return true;
+ }
+ var s = sources.get(prop);
+ var has = s !== void 0 && s.v !== UNINITIALIZED || Reflect.has(target, prop);
+ if (s !== void 0 || active_effect !== null && (!has || get_descriptor(target, prop)?.writable)) {
+ if (s === void 0) {
+ s = with_parent(() => {
+ var p = has ? proxy(target[prop]) : UNINITIALIZED;
+ var s2 = /* @__PURE__ */ state(p);
+ return s2;
+ });
+ sources.set(prop, s);
+ }
+ var value2 = get(s);
+ if (value2 === UNINITIALIZED) {
+ return false;
+ }
+ }
+ return has;
+ },
+ set(target, prop, value2, receiver) {
+ var s = sources.get(prop);
+ var has = prop in target;
+ if (is_proxied_array && prop === "length") {
+ for (var i = value2; i < /** @type {Source} */
+ s.v; i += 1) {
+ var other_s = sources.get(i + "");
+ if (other_s !== void 0) {
+ set(other_s, UNINITIALIZED);
+ } else if (i in target) {
+ other_s = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED));
+ sources.set(i + "", other_s);
+ }
+ }
+ }
+ if (s === void 0) {
+ if (!has || get_descriptor(target, prop)?.writable) {
+ s = with_parent(() => /* @__PURE__ */ state(void 0));
+ set(s, proxy(value2));
+ sources.set(prop, s);
+ }
+ } else {
+ has = s.v !== UNINITIALIZED;
+ var p = with_parent(() => proxy(value2));
+ set(s, p);
+ }
+ var descriptor = Reflect.getOwnPropertyDescriptor(target, prop);
+ if (descriptor?.set) {
+ descriptor.set.call(receiver, value2);
+ }
+ if (!has) {
+ if (is_proxied_array && typeof prop === "string") {
+ var ls = (
+ /** @type {Source} */
+ sources.get("length")
+ );
+ var n = Number(prop);
+ if (Number.isInteger(n) && n >= ls.v) {
+ set(ls, n + 1);
+ }
+ }
+ increment(version);
+ }
+ return true;
+ },
+ ownKeys(target) {
+ get(version);
+ var own_keys = Reflect.ownKeys(target).filter((key2) => {
+ var source3 = sources.get(key2);
+ return source3 === void 0 || source3.v !== UNINITIALIZED;
+ });
+ for (var [key, source2] of sources) {
+ if (source2.v !== UNINITIALIZED && !(key in target)) {
+ own_keys.push(key);
+ }
+ }
+ return own_keys;
+ },
+ setPrototypeOf() {
+ state_prototype_fixed();
+ }
+ }
+ );
+}
+var $window;
+var first_child_getter;
+var next_sibling_getter;
+function init_operations() {
+ if ($window !== void 0) {
+ return;
+ }
+ $window = window;
+ var element_prototype = Element.prototype;
+ var node_prototype = Node.prototype;
+ var text_prototype = Text.prototype;
+ first_child_getter = get_descriptor(node_prototype, "firstChild").get;
+ next_sibling_getter = get_descriptor(node_prototype, "nextSibling").get;
+ if (is_extensible(element_prototype)) {
+ element_prototype.__click = void 0;
+ element_prototype.__className = void 0;
+ element_prototype.__attributes = null;
+ element_prototype.__style = void 0;
+ element_prototype.__e = void 0;
+ }
+ if (is_extensible(text_prototype)) {
+ text_prototype.__t = void 0;
+ }
+}
+function create_text(value = "") {
+ return document.createTextNode(value);
+}
+// @__NO_SIDE_EFFECTS__
+function get_first_child(node) {
+ return (
+ /** @type {TemplateNode | null} */
+ first_child_getter.call(node)
+ );
+}
+// @__NO_SIDE_EFFECTS__
+function get_next_sibling(node) {
+ return (
+ /** @type {TemplateNode | null} */
+ next_sibling_getter.call(node)
+ );
+}
+function clear_text_content(node) {
+ node.textContent = "";
+}
+function without_reactive_context(fn) {
+ var previous_reaction = active_reaction;
+ var previous_effect = active_effect;
+ set_active_reaction(null);
+ set_active_effect(null);
+ try {
+ return fn();
+ } finally {
+ set_active_reaction(previous_reaction);
+ set_active_effect(previous_effect);
+ }
+}
+function push_effect(effect, parent_effect) {
+ var parent_last = parent_effect.last;
+ if (parent_last === null) {
+ parent_effect.last = parent_effect.first = effect;
+ } else {
+ parent_last.next = effect;
+ effect.prev = parent_last;
+ parent_effect.last = effect;
+ }
+}
+function create_effect(type, fn, sync) {
+ var parent = active_effect;
+ if (parent !== null && (parent.f & INERT) !== 0) {
+ type |= INERT;
+ }
+ var effect = {
+ ctx: component_context,
+ deps: null,
+ nodes: null,
+ f: type | DIRTY | CONNECTED,
+ first: null,
+ fn,
+ last: null,
+ next: null,
+ parent,
+ b: parent && parent.b,
+ prev: null,
+ teardown: null,
+ wv: 0,
+ ac: null
+ };
+ if (sync) {
+ try {
+ update_effect(effect);
+ effect.f |= EFFECT_RAN;
+ } catch (e2) {
+ destroy_effect(effect);
+ throw e2;
+ }
+ } else if (fn !== null) {
+ schedule_effect(effect);
+ }
+ var e = effect;
+ if (sync && e.deps === null && e.teardown === null && e.nodes === null && e.first === e.last && // either `null`, or a singular child
+ (e.f & EFFECT_PRESERVED) === 0) {
+ e = e.first;
+ if ((type & BLOCK_EFFECT) !== 0 && (type & EFFECT_TRANSPARENT) !== 0 && e !== null) {
+ e.f |= EFFECT_TRANSPARENT;
+ }
+ }
+ if (e !== null) {
+ e.parent = parent;
+ if (parent !== null) {
+ push_effect(e, parent);
+ }
+ if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0 && (type & ROOT_EFFECT) === 0) {
+ var derived = (
+ /** @type {Derived} */
+ active_reaction
+ );
+ (derived.effects ??= []).push(e);
+ }
+ }
+ return effect;
+}
+function effect_tracking() {
+ return active_reaction !== null && !untracking;
+}
+function create_user_effect(fn) {
+ return create_effect(EFFECT | USER_EFFECT, fn, false);
+}
+function component_root(fn) {
+ Batch.ensure();
+ const effect = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true);
+ return (options = {}) => {
+ return new Promise((fulfil) => {
+ if (options.outro) {
+ pause_effect(effect, () => {
+ destroy_effect(effect);
+ fulfil(void 0);
+ });
+ } else {
+ destroy_effect(effect);
+ fulfil(void 0);
+ }
+ });
+ };
+}
+function render_effect(fn, flags = 0) {
+ return create_effect(RENDER_EFFECT | flags, fn, true);
+}
+function block(fn, flags = 0) {
+ var effect = create_effect(BLOCK_EFFECT | flags, fn, true);
+ return effect;
+}
+function branch(fn) {
+ return create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn, true);
+}
+function execute_effect_teardown(effect) {
+ var teardown = effect.teardown;
+ if (teardown !== null) {
+ const previously_destroying_effect = is_destroying_effect;
+ const previous_reaction = active_reaction;
+ set_is_destroying_effect(true);
+ set_active_reaction(null);
+ try {
+ teardown.call(null);
+ } finally {
+ set_is_destroying_effect(previously_destroying_effect);
+ set_active_reaction(previous_reaction);
+ }
+ }
+}
+function destroy_effect_children(signal, remove_dom = false) {
+ var effect = signal.first;
+ signal.first = signal.last = null;
+ while (effect !== null) {
+ const controller2 = effect.ac;
+ if (controller2 !== null) {
+ without_reactive_context(() => {
+ controller2.abort(STALE_REACTION);
+ });
+ }
+ var next = effect.next;
+ if ((effect.f & ROOT_EFFECT) !== 0) {
+ effect.parent = null;
+ } else {
+ destroy_effect(effect, remove_dom);
+ }
+ effect = next;
+ }
+}
+function destroy_block_effect_children(signal) {
+ var effect = signal.first;
+ while (effect !== null) {
+ var next = effect.next;
+ if ((effect.f & BRANCH_EFFECT) === 0) {
+ destroy_effect(effect);
+ }
+ effect = next;
+ }
+}
+function destroy_effect(effect, remove_dom = true) {
+ var removed = false;
+ if ((remove_dom || (effect.f & HEAD_EFFECT) !== 0) && effect.nodes !== null && effect.nodes.end !== null) {
+ remove_effect_dom(
+ effect.nodes.start,
+ /** @type {TemplateNode} */
+ effect.nodes.end
+ );
+ removed = true;
+ }
+ destroy_effect_children(effect, remove_dom && !removed);
+ remove_reactions(effect, 0);
+ set_signal_status(effect, DESTROYED);
+ var transitions = effect.nodes && effect.nodes.t;
+ if (transitions !== null) {
+ for (const transition of transitions) {
+ transition.stop();
+ }
+ }
+ execute_effect_teardown(effect);
+ var parent = effect.parent;
+ if (parent !== null && parent.first !== null) {
+ unlink_effect(effect);
+ }
+ effect.next = effect.prev = effect.teardown = effect.ctx = effect.deps = effect.fn = effect.nodes = effect.ac = null;
+}
+function remove_effect_dom(node, end) {
+ while (node !== null) {
+ var next = node === end ? null : /* @__PURE__ */ get_next_sibling(node);
+ node.remove();
+ node = next;
+ }
+}
+function unlink_effect(effect) {
+ var parent = effect.parent;
+ var prev = effect.prev;
+ var next = effect.next;
+ if (prev !== null) prev.next = next;
+ if (next !== null) next.prev = prev;
+ if (parent !== null) {
+ if (parent.first === effect) parent.first = next;
+ if (parent.last === effect) parent.last = prev;
+ }
+}
+function pause_effect(effect, callback, destroy = true) {
+ var transitions = [];
+ pause_children(effect, transitions, true);
+ var fn = () => {
+ if (destroy) destroy_effect(effect);
+ if (callback) callback();
+ };
+ var remaining = transitions.length;
+ if (remaining > 0) {
+ var check = () => --remaining || fn();
+ for (var transition of transitions) {
+ transition.out(check);
+ }
+ } else {
+ fn();
+ }
+}
+function pause_children(effect, transitions, local) {
+ if ((effect.f & INERT) !== 0) return;
+ effect.f ^= INERT;
+ var t = effect.nodes && effect.nodes.t;
+ if (t !== null) {
+ for (const transition of t) {
+ if (transition.is_global || local) {
+ transitions.push(transition);
+ }
+ }
+ }
+ var child = effect.first;
+ while (child !== null) {
+ var sibling = child.next;
+ var transparent = (child.f & EFFECT_TRANSPARENT) !== 0 || // If this is a branch effect without a block effect parent,
+ // it means the parent block effect was pruned. In that case,
+ // transparency information was transferred to the branch effect.
+ (child.f & BRANCH_EFFECT) !== 0 && (effect.f & BLOCK_EFFECT) !== 0;
+ pause_children(child, transitions, transparent ? local : false);
+ child = sibling;
+ }
+}
+function move_effect(effect, fragment) {
+ if (!effect.nodes) return;
+ var node = effect.nodes.start;
+ var end = effect.nodes.end;
+ while (node !== null) {
+ var next = node === end ? null : /* @__PURE__ */ get_next_sibling(node);
+ fragment.append(node);
+ node = next;
+ }
+}
+let is_updating_effect = false;
+function set_is_updating_effect(value) {
+ is_updating_effect = value;
+}
+let is_destroying_effect = false;
+function set_is_destroying_effect(value) {
+ is_destroying_effect = value;
+}
+let active_reaction = null;
+let untracking = false;
+function set_active_reaction(reaction) {
+ active_reaction = reaction;
+}
+let active_effect = null;
+function set_active_effect(effect) {
+ active_effect = effect;
+}
+let current_sources = null;
+function push_reaction_value(value) {
+ if (active_reaction !== null && true) {
+ if (current_sources === null) {
+ current_sources = [value];
+ } else {
+ current_sources.push(value);
+ }
+ }
+}
+let new_deps = null;
+let skipped_deps = 0;
+let untracked_writes = null;
+function set_untracked_writes(value) {
+ untracked_writes = value;
+}
+let write_version = 1;
+let read_version = 0;
+let update_version = read_version;
+function set_update_version(value) {
+ update_version = value;
+}
+function increment_write_version() {
+ return ++write_version;
+}
+function is_dirty(reaction) {
+ var flags = reaction.f;
+ if ((flags & DIRTY) !== 0) {
+ return true;
+ }
+ if (flags & DERIVED) {
+ reaction.f &= ~WAS_MARKED;
+ }
+ if ((flags & MAYBE_DIRTY) !== 0) {
+ var dependencies = reaction.deps;
+ if (dependencies !== null) {
+ var length = dependencies.length;
+ for (var i = 0; i < length; i++) {
+ var dependency = dependencies[i];
+ if (is_dirty(
+ /** @type {Derived} */
+ dependency
+ )) {
+ update_derived(
+ /** @type {Derived} */
+ dependency
+ );
+ }
+ if (dependency.wv > reaction.wv) {
+ return true;
+ }
+ }
+ }
+ if ((flags & CONNECTED) !== 0 && // During time traveling we don't want to reset the status so that
+ // traversal of the graph in the other batches still happens
+ batch_values === null) {
+ set_signal_status(reaction, CLEAN);
+ }
+ }
+ return false;
+}
+function schedule_possible_effect_self_invalidation(signal, effect, root = true) {
+ var reactions = signal.reactions;
+ if (reactions === null) return;
+ if (current_sources?.includes(signal)) {
+ return;
+ }
+ for (var i = 0; i < reactions.length; i++) {
+ var reaction = reactions[i];
+ if ((reaction.f & DERIVED) !== 0) {
+ schedule_possible_effect_self_invalidation(
+ /** @type {Derived} */
+ reaction,
+ effect,
+ false
+ );
+ } else if (effect === reaction) {
+ if (root) {
+ set_signal_status(reaction, DIRTY);
+ } else if ((reaction.f & CLEAN) !== 0) {
+ set_signal_status(reaction, MAYBE_DIRTY);
+ }
+ schedule_effect(
+ /** @type {Effect} */
+ reaction
+ );
+ }
+ }
+}
+function update_reaction(reaction) {
+ var previous_deps = new_deps;
+ var previous_skipped_deps = skipped_deps;
+ var previous_untracked_writes = untracked_writes;
+ var previous_reaction = active_reaction;
+ var previous_sources = current_sources;
+ var previous_component_context = component_context;
+ var previous_untracking = untracking;
+ var previous_update_version = update_version;
+ var flags = reaction.f;
+ new_deps = /** @type {null | Value[]} */
+ null;
+ skipped_deps = 0;
+ untracked_writes = null;
+ active_reaction = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;
+ current_sources = null;
+ set_component_context(reaction.ctx);
+ untracking = false;
+ update_version = ++read_version;
+ if (reaction.ac !== null) {
+ without_reactive_context(() => {
+ reaction.ac.abort(STALE_REACTION);
+ });
+ reaction.ac = null;
+ }
+ try {
+ reaction.f |= REACTION_IS_UPDATING;
+ var fn = (
+ /** @type {Function} */
+ reaction.fn
+ );
+ var result = fn();
+ var deps = reaction.deps;
+ if (new_deps !== null) {
+ var i;
+ remove_reactions(reaction, skipped_deps);
+ if (deps !== null && skipped_deps > 0) {
+ deps.length = skipped_deps + new_deps.length;
+ for (i = 0; i < new_deps.length; i++) {
+ deps[skipped_deps + i] = new_deps[i];
+ }
+ } else {
+ reaction.deps = deps = new_deps;
+ }
+ if (effect_tracking() && (reaction.f & CONNECTED) !== 0) {
+ for (i = skipped_deps; i < deps.length; i++) {
+ (deps[i].reactions ??= []).push(reaction);
+ }
+ }
+ } else if (deps !== null && skipped_deps < deps.length) {
+ remove_reactions(reaction, skipped_deps);
+ deps.length = skipped_deps;
+ }
+ if (is_runes() && untracked_writes !== null && !untracking && deps !== null && (reaction.f & (DERIVED | MAYBE_DIRTY | DIRTY)) === 0) {
+ for (i = 0; i < /** @type {Source[]} */
+ untracked_writes.length; i++) {
+ schedule_possible_effect_self_invalidation(
+ untracked_writes[i],
+ /** @type {Effect} */
+ reaction
+ );
+ }
+ }
+ if (previous_reaction !== null && previous_reaction !== reaction) {
+ read_version++;
+ if (untracked_writes !== null) {
+ if (previous_untracked_writes === null) {
+ previous_untracked_writes = untracked_writes;
+ } else {
+ previous_untracked_writes.push(.../** @type {Source[]} */
+ untracked_writes);
+ }
+ }
+ }
+ if ((reaction.f & ERROR_VALUE) !== 0) {
+ reaction.f ^= ERROR_VALUE;
+ }
+ return result;
+ } catch (error) {
+ return handle_error(error);
+ } finally {
+ reaction.f ^= REACTION_IS_UPDATING;
+ new_deps = previous_deps;
+ skipped_deps = previous_skipped_deps;
+ untracked_writes = previous_untracked_writes;
+ active_reaction = previous_reaction;
+ current_sources = previous_sources;
+ set_component_context(previous_component_context);
+ untracking = previous_untracking;
+ update_version = previous_update_version;
+ }
+}
+function remove_reaction(signal, dependency) {
+ let reactions = dependency.reactions;
+ if (reactions !== null) {
+ var index = index_of.call(reactions, signal);
+ if (index !== -1) {
+ var new_length = reactions.length - 1;
+ if (new_length === 0) {
+ reactions = dependency.reactions = null;
+ } else {
+ reactions[index] = reactions[new_length];
+ reactions.pop();
+ }
+ }
+ }
+ if (reactions === null && (dependency.f & DERIVED) !== 0 && // Destroying a child effect while updating a parent effect can cause a dependency to appear
+ // to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps`
+ // allows us to skip the expensive work of disconnecting and immediately reconnecting it
+ (new_deps === null || !new_deps.includes(dependency))) {
+ set_signal_status(dependency, MAYBE_DIRTY);
+ if ((dependency.f & CONNECTED) !== 0) {
+ dependency.f ^= CONNECTED;
+ dependency.f &= ~WAS_MARKED;
+ }
+ destroy_derived_effects(
+ /** @type {Derived} **/
+ dependency
+ );
+ remove_reactions(
+ /** @type {Derived} **/
+ dependency,
+ 0
+ );
+ }
+}
+function remove_reactions(signal, start_index) {
+ var dependencies = signal.deps;
+ if (dependencies === null) return;
+ for (var i = start_index; i < dependencies.length; i++) {
+ remove_reaction(signal, dependencies[i]);
+ }
+}
+function update_effect(effect) {
+ var flags = effect.f;
+ if ((flags & DESTROYED) !== 0) {
+ return;
+ }
+ set_signal_status(effect, CLEAN);
+ var previous_effect = active_effect;
+ var was_updating_effect = is_updating_effect;
+ active_effect = effect;
+ is_updating_effect = true;
+ try {
+ if ((flags & (BLOCK_EFFECT | MANAGED_EFFECT)) !== 0) {
+ destroy_block_effect_children(effect);
+ } else {
+ destroy_effect_children(effect);
+ }
+ execute_effect_teardown(effect);
+ var teardown = update_reaction(effect);
+ effect.teardown = typeof teardown === "function" ? teardown : null;
+ effect.wv = write_version;
+ var dep;
+ if (BROWSER && tracing_mode_flag && (effect.f & DIRTY) !== 0 && effect.deps !== null) ;
+ } finally {
+ is_updating_effect = was_updating_effect;
+ active_effect = previous_effect;
+ }
+}
+function get(signal) {
+ var flags = signal.f;
+ var is_derived = (flags & DERIVED) !== 0;
+ if (active_reaction !== null && !untracking) {
+ var destroyed = active_effect !== null && (active_effect.f & DESTROYED) !== 0;
+ if (!destroyed && !current_sources?.includes(signal)) {
+ var deps = active_reaction.deps;
+ if ((active_reaction.f & REACTION_IS_UPDATING) !== 0) {
+ if (signal.rv < read_version) {
+ signal.rv = read_version;
+ if (new_deps === null && deps !== null && deps[skipped_deps] === signal) {
+ skipped_deps++;
+ } else if (new_deps === null) {
+ new_deps = [signal];
+ } else if (!new_deps.includes(signal)) {
+ new_deps.push(signal);
+ }
+ }
+ } else {
+ (active_reaction.deps ??= []).push(signal);
+ var reactions = signal.reactions;
+ if (reactions === null) {
+ signal.reactions = [active_reaction];
+ } else if (!reactions.includes(active_reaction)) {
+ reactions.push(active_reaction);
+ }
+ }
+ }
+ }
+ if (is_destroying_effect) {
+ if (old_values.has(signal)) {
+ return old_values.get(signal);
+ }
+ if (is_derived) {
+ var derived = (
+ /** @type {Derived} */
+ signal
+ );
+ var value = derived.v;
+ if ((derived.f & CLEAN) === 0 && derived.reactions !== null || depends_on_old_values(derived)) {
+ value = execute_derived(derived);
+ }
+ old_values.set(derived, value);
+ return value;
+ }
+ } else if (is_derived && (!batch_values?.has(signal) || current_batch?.is_fork && !effect_tracking())) {
+ derived = /** @type {Derived} */
+ signal;
+ if (is_dirty(derived)) {
+ update_derived(derived);
+ }
+ if (is_updating_effect && effect_tracking() && (derived.f & CONNECTED) === 0) {
+ reconnect(derived);
+ }
+ }
+ if (batch_values?.has(signal)) {
+ return batch_values.get(signal);
+ }
+ if ((signal.f & ERROR_VALUE) !== 0) {
+ throw signal.v;
+ }
+ return signal.v;
+}
+function reconnect(derived) {
+ if (derived.deps === null) return;
+ derived.f ^= CONNECTED;
+ for (const dep of derived.deps) {
+ (dep.reactions ??= []).push(derived);
+ if ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) {
+ reconnect(
+ /** @type {Derived} */
+ dep
+ );
+ }
+ }
+}
+function depends_on_old_values(derived) {
+ if (derived.v === UNINITIALIZED) return true;
+ if (derived.deps === null) return false;
+ for (const dep of derived.deps) {
+ if (old_values.has(dep)) {
+ return true;
+ }
+ if ((dep.f & DERIVED) !== 0 && depends_on_old_values(
+ /** @type {Derived} */
+ dep
+ )) {
+ return true;
+ }
+ }
+ return false;
+}
+function untrack(fn) {
+ var previous_untracking = untracking;
+ try {
+ untracking = true;
+ return fn();
+ } finally {
+ untracking = previous_untracking;
+ }
+}
+const STATUS_MASK = -7169;
+function set_signal_status(signal, status) {
+ signal.f = signal.f & STATUS_MASK | status;
+}
+const DOM_BOOLEAN_ATTRIBUTES = [
+ "allowfullscreen",
+ "async",
+ "autofocus",
+ "autoplay",
+ "checked",
+ "controls",
+ "default",
+ "disabled",
+ "formnovalidate",
+ "indeterminate",
+ "inert",
+ "ismap",
+ "loop",
+ "multiple",
+ "muted",
+ "nomodule",
+ "novalidate",
+ "open",
+ "playsinline",
+ "readonly",
+ "required",
+ "reversed",
+ "seamless",
+ "selected",
+ "webkitdirectory",
+ "defer",
+ "disablepictureinpicture",
+ "disableremoteplayback"
+];
+function is_boolean_attribute(name) {
+ return DOM_BOOLEAN_ATTRIBUTES.includes(name);
+}
+const PASSIVE_EVENTS = ["touchstart", "touchmove"];
+function is_passive_event(name) {
+ return PASSIVE_EVENTS.includes(name);
+}
+const ATTR_REGEX = /[&"<]/g;
+const CONTENT_REGEX = /[&<]/g;
+function escape_html(value, is_attr) {
+ const str = String(value ?? "");
+ const pattern = is_attr ? ATTR_REGEX : CONTENT_REGEX;
+ pattern.lastIndex = 0;
+ let escaped = "";
+ let last = 0;
+ while (pattern.test(str)) {
+ const i = pattern.lastIndex - 1;
+ const ch = str[i];
+ escaped += str.substring(last, i) + (ch === "&" ? "&" : ch === '"' ? """ : "<");
+ last = i + 1;
+ }
+ return escaped + str.substring(last);
+}
+const replacements = {
+ translate: /* @__PURE__ */ new Map([
+ [true, "yes"],
+ [false, "no"]
+ ])
+};
+function attr(name, value, is_boolean = false) {
+ if (name === "hidden" && value !== "until-found") {
+ is_boolean = true;
+ }
+ if (value == null || !value && is_boolean) return "";
+ const normalized = name in replacements && replacements[name].get(value) || value;
+ const assignment = is_boolean ? "" : `="${escape_html(normalized, true)}"`;
+ return ` ${name}${assignment}`;
+}
+function clsx(value) {
+ if (typeof value === "object") {
+ return clsx$1(value);
+ } else {
+ return value ?? "";
+ }
+}
+const whitespace = [..." \n\r\f \v\uFEFF"];
+function to_class(value, hash, directives) {
+ var classname = value == null ? "" : "" + value;
+ if (hash) {
+ classname = classname ? classname + " " + hash : hash;
+ }
+ if (directives) {
+ for (var key in directives) {
+ if (directives[key]) {
+ classname = classname ? classname + " " + key : key;
+ } else if (classname.length) {
+ var len = key.length;
+ var a = 0;
+ while ((a = classname.indexOf(key, a)) >= 0) {
+ var b = a + len;
+ if ((a === 0 || whitespace.includes(classname[a - 1])) && (b === classname.length || whitespace.includes(classname[b]))) {
+ classname = (a === 0 ? "" : classname.substring(0, a)) + classname.substring(b + 1);
+ } else {
+ a = b;
+ }
+ }
+ }
+ }
+ }
+ return classname === "" ? null : classname;
+}
+function append_styles(styles, important = false) {
+ var separator = important ? " !important;" : ";";
+ var css = "";
+ for (var key in styles) {
+ var value = styles[key];
+ if (value != null && value !== "") {
+ css += " " + key + ": " + value + separator;
+ }
+ }
+ return css;
+}
+function to_css_name(name) {
+ if (name[0] !== "-" || name[1] !== "-") {
+ return name.toLowerCase();
+ }
+ return name;
+}
+function to_style(value, styles) {
+ if (styles) {
+ var new_style = "";
+ var normal_styles;
+ var important_styles;
+ if (Array.isArray(styles)) {
+ normal_styles = styles[0];
+ important_styles = styles[1];
+ } else {
+ normal_styles = styles;
+ }
+ if (value) {
+ value = String(value).replaceAll(/\s*\/\*.*?\*\/\s*/g, "").trim();
+ var in_str = false;
+ var in_apo = 0;
+ var in_comment = false;
+ var reserved_names = [];
+ if (normal_styles) {
+ reserved_names.push(...Object.keys(normal_styles).map(to_css_name));
+ }
+ if (important_styles) {
+ reserved_names.push(...Object.keys(important_styles).map(to_css_name));
+ }
+ var start_index = 0;
+ var name_index = -1;
+ const len = value.length;
+ for (var i = 0; i < len; i++) {
+ var c = value[i];
+ if (in_comment) {
+ if (c === "/" && value[i - 1] === "*") {
+ in_comment = false;
+ }
+ } else if (in_str) {
+ if (in_str === c) {
+ in_str = false;
+ }
+ } else if (c === "/" && value[i + 1] === "*") {
+ in_comment = true;
+ } else if (c === '"' || c === "'") {
+ in_str = c;
+ } else if (c === "(") {
+ in_apo++;
+ } else if (c === ")") {
+ in_apo--;
+ }
+ if (!in_comment && in_str === false && in_apo === 0) {
+ if (c === ":" && name_index === -1) {
+ name_index = i;
+ } else if (c === ";" || i === len - 1) {
+ if (name_index !== -1) {
+ var name = to_css_name(value.substring(start_index, name_index).trim());
+ if (!reserved_names.includes(name)) {
+ if (c !== ";") {
+ i++;
+ }
+ var property = value.substring(start_index, i).trim();
+ new_style += " " + property + ";";
+ }
+ }
+ start_index = i + 1;
+ name_index = -1;
+ }
+ }
+ }
+ }
+ if (normal_styles) {
+ new_style += append_styles(normal_styles);
+ }
+ if (important_styles) {
+ new_style += append_styles(important_styles, true);
+ }
+ new_style = new_style.trim();
+ return new_style === "" ? null : new_style;
+ }
+ return value == null ? null : String(value);
+}
+function subscribe_to_store(store, run, invalidate) {
+ if (store == null) {
+ run(void 0);
+ return noop;
+ }
+ const unsub = untrack(
+ () => store.subscribe(
+ run,
+ // @ts-expect-error
+ invalidate
+ )
+ );
+ return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
+}
+const BLOCK_OPEN = ``;
+const BLOCK_CLOSE = ``;
+let controller = null;
+function abort() {
+ controller?.abort(STALE_REACTION);
+ controller = null;
+}
+function await_invalid() {
+ const error = new Error(`await_invalid
+Encountered asynchronous work while rendering synchronously.
+https://svelte.dev/e/await_invalid`);
+ error.name = "Svelte error";
+ throw error;
+}
+function invalid_csp() {
+ const error = new Error(`invalid_csp
+\`csp.nonce\` was set while \`csp.hash\` was \`true\`. These options cannot be used simultaneously.
+https://svelte.dev/e/invalid_csp`);
+ error.name = "Svelte error";
+ throw error;
+}
+function server_context_required() {
+ const error = new Error(`server_context_required
+Could not resolve \`render\` context.
+https://svelte.dev/e/server_context_required`);
+ error.name = "Svelte error";
+ throw error;
+}
+var ssr_context = null;
+function set_ssr_context(v) {
+ ssr_context = v;
+}
+function getContext(key) {
+ const context_map = get_or_init_context_map();
+ const result = (
+ /** @type {T} */
+ context_map.get(key)
+ );
+ return result;
+}
+function setContext(key, context) {
+ get_or_init_context_map().set(key, context);
+ return context;
+}
+function get_or_init_context_map(name) {
+ if (ssr_context === null) {
+ lifecycle_outside_component();
+ }
+ return ssr_context.c ??= new Map(get_parent_context(ssr_context) || void 0);
+}
+function push(fn) {
+ ssr_context = { p: ssr_context, c: null, r: null };
+}
+function pop() {
+ ssr_context = /** @type {SSRContext} */
+ ssr_context.p;
+}
+function get_parent_context(ssr_context2) {
+ let parent = ssr_context2.p;
+ while (parent !== null) {
+ const context_map = parent.c;
+ if (context_map !== null) {
+ return context_map;
+ }
+ parent = parent.p;
+ }
+ return null;
+}
+function unresolved_hydratable(key, stack) {
+ {
+ console.warn(`https://svelte.dev/e/unresolved_hydratable`);
+ }
+}
+function get_render_context() {
+ const store = als?.getStore();
+ {
+ server_context_required();
+ }
+ return store;
+}
+let als = null;
+let text_encoder;
+let crypto;
+async function sha256(data) {
+ text_encoder ??= new TextEncoder();
+ crypto ??= globalThis.crypto?.subtle?.digest ? globalThis.crypto : (
+ // @ts-ignore - we don't install node types in the prod build
+ (await import("node:crypto")).webcrypto
+ );
+ const hash_buffer = await crypto.subtle.digest("SHA-256", text_encoder.encode(data));
+ return base64_encode(hash_buffer);
+}
+function base64_encode(bytes) {
+ if (globalThis.Buffer) {
+ return globalThis.Buffer.from(bytes).toString("base64");
+ }
+ let binary = "";
+ for (let i = 0; i < bytes.length; i++) {
+ binary += String.fromCharCode(bytes[i]);
+ }
+ return btoa(binary);
+}
+class Renderer {
+ /**
+ * The contents of the renderer.
+ * @type {RendererItem[]}
+ */
+ #out = [];
+ /**
+ * Any `onDestroy` callbacks registered during execution of this renderer.
+ * @type {(() => void)[] | undefined}
+ */
+ #on_destroy = void 0;
+ /**
+ * Whether this renderer is a component body.
+ * @type {boolean}
+ */
+ #is_component_body = false;
+ /**
+ * The type of string content that this renderer is accumulating.
+ * @type {RendererType}
+ */
+ type;
+ /** @type {Renderer | undefined} */
+ #parent;
+ /**
+ * Asynchronous work associated with this renderer
+ * @type {Promise | undefined}
+ */
+ promise = void 0;
+ /**
+ * State which is associated with the content tree as a whole.
+ * It will be re-exposed, uncopied, on all children.
+ * @type {SSRState}
+ * @readonly
+ */
+ global;
+ /**
+ * State that is local to the branch it is declared in.
+ * It will be shallow-copied to all children.
+ *
+ * @type {{ select_value: string | undefined }}
+ */
+ local;
+ /**
+ * @param {SSRState} global
+ * @param {Renderer | undefined} [parent]
+ */
+ constructor(global, parent) {
+ this.#parent = parent;
+ this.global = global;
+ this.local = parent ? { ...parent.local } : { select_value: void 0 };
+ this.type = parent ? parent.type : "body";
+ }
+ /**
+ * @param {(renderer: Renderer) => void} fn
+ */
+ head(fn) {
+ const head = new Renderer(this.global, this);
+ head.type = "head";
+ this.#out.push(head);
+ head.child(fn);
+ }
+ /**
+ * @param {Array>} blockers
+ * @param {(renderer: Renderer) => void} fn
+ */
+ async_block(blockers, fn) {
+ this.#out.push(BLOCK_OPEN);
+ this.async(blockers, fn);
+ this.#out.push(BLOCK_CLOSE);
+ }
+ /**
+ * @param {Array>} blockers
+ * @param {(renderer: Renderer) => void} fn
+ */
+ async(blockers, fn) {
+ let callback = fn;
+ if (blockers.length > 0) {
+ const context = ssr_context;
+ callback = (renderer) => {
+ return Promise.all(blockers).then(() => {
+ const previous_context = ssr_context;
+ try {
+ set_ssr_context(context);
+ return fn(renderer);
+ } finally {
+ set_ssr_context(previous_context);
+ }
+ });
+ };
+ }
+ this.child(callback);
+ }
+ /**
+ * @param {Array<() => void>} thunks
+ */
+ run(thunks) {
+ const context = ssr_context;
+ let promise = Promise.resolve(thunks[0]());
+ const promises = [promise];
+ for (const fn of thunks.slice(1)) {
+ promise = promise.then(() => {
+ const previous_context = ssr_context;
+ set_ssr_context(context);
+ try {
+ return fn();
+ } finally {
+ set_ssr_context(previous_context);
+ }
+ });
+ promises.push(promise);
+ }
+ return promises;
+ }
+ /**
+ * Create a child renderer. The child renderer inherits the state from the parent,
+ * but has its own content.
+ * @param {(renderer: Renderer) => MaybePromise} fn
+ */
+ child(fn) {
+ const child = new Renderer(this.global, this);
+ this.#out.push(child);
+ const parent = ssr_context;
+ set_ssr_context({
+ ...ssr_context,
+ p: parent,
+ c: null,
+ r: child
+ });
+ const result = fn(child);
+ set_ssr_context(parent);
+ if (result instanceof Promise) {
+ if (child.global.mode === "sync") {
+ await_invalid();
+ }
+ result.catch(() => {
+ });
+ child.promise = result;
+ }
+ return child;
+ }
+ /**
+ * Create a component renderer. The component renderer inherits the state from the parent,
+ * but has its own content. It is treated as an ordering boundary for ondestroy callbacks.
+ * @param {(renderer: Renderer) => MaybePromise} fn
+ * @param {Function} [component_fn]
+ * @returns {void}
+ */
+ component(fn, component_fn) {
+ push();
+ const child = this.child(fn);
+ child.#is_component_body = true;
+ pop();
+ }
+ /**
+ * @param {Record} attrs
+ * @param {(renderer: Renderer) => void} fn
+ * @param {string | undefined} [css_hash]
+ * @param {Record | undefined} [classes]
+ * @param {Record | undefined} [styles]
+ * @param {number | undefined} [flags]
+ * @returns {void}
+ */
+ select(attrs, fn, css_hash, classes, styles, flags) {
+ const { value, ...select_attrs } = attrs;
+ this.push(`");
+ }
+ /**
+ * @param {Record} attrs
+ * @param {string | number | boolean | ((renderer: Renderer) => void)} body
+ * @param {string | undefined} [css_hash]
+ * @param {Record | undefined} [classes]
+ * @param {Record | undefined} [styles]
+ * @param {number | undefined} [flags]
+ */
+ option(attrs, body, css_hash, classes, styles, flags) {
+ this.#out.push(``);
+ if (head) {
+ renderer.head((child) => child.push(head));
+ }
+ };
+ if (typeof body === "function") {
+ this.child((renderer) => {
+ const r = new Renderer(this.global, this);
+ body(r);
+ if (this.global.mode === "async") {
+ return r.#collect_content_async().then((content) => {
+ close(renderer, content.body.replaceAll("", ""), content);
+ });
+ } else {
+ const content = r.#collect_content();
+ close(renderer, content.body.replaceAll("", ""), content);
+ }
+ });
+ } else {
+ close(this, body, { body });
+ }
+ }
+ /**
+ * @param {(renderer: Renderer) => void} fn
+ */
+ title(fn) {
+ const path = this.get_path();
+ const close = (head) => {
+ this.global.set_title(head, path);
+ };
+ this.child((renderer) => {
+ const r = new Renderer(renderer.global, renderer);
+ fn(r);
+ if (renderer.global.mode === "async") {
+ return r.#collect_content_async().then((content) => {
+ close(content.head);
+ });
+ } else {
+ const content = r.#collect_content();
+ close(content.head);
+ }
+ });
+ }
+ /**
+ * @param {string | (() => Promise)} content
+ */
+ push(content) {
+ if (typeof content === "function") {
+ this.child(async (renderer) => renderer.push(await content()));
+ } else {
+ this.#out.push(content);
+ }
+ }
+ /**
+ * @param {() => void} fn
+ */
+ on_destroy(fn) {
+ (this.#on_destroy ??= []).push(fn);
+ }
+ /**
+ * @returns {number[]}
+ */
+ get_path() {
+ return this.#parent ? [...this.#parent.get_path(), this.#parent.#out.indexOf(this)] : [];
+ }
+ /**
+ * @deprecated this is needed for legacy component bindings
+ */
+ copy() {
+ const copy = new Renderer(this.global, this.#parent);
+ copy.#out = this.#out.map((item) => item instanceof Renderer ? item.copy() : item);
+ copy.promise = this.promise;
+ return copy;
+ }
+ /**
+ * @param {Renderer} other
+ * @deprecated this is needed for legacy component bindings
+ */
+ subsume(other) {
+ if (this.global.mode !== other.global.mode) {
+ throw new Error(
+ "invariant: A renderer cannot switch modes. If you're seeing this, there's a compiler bug. File an issue!"
+ );
+ }
+ this.local = other.local;
+ this.#out = other.#out.map((item) => {
+ if (item instanceof Renderer) {
+ item.subsume(item);
+ }
+ return item;
+ });
+ this.promise = other.promise;
+ this.type = other.type;
+ }
+ get length() {
+ return this.#out.length;
+ }
+ /**
+ * Only available on the server and when compiling with the `server` option.
+ * Takes a component and returns an object with `body` and `head` properties on it, which you can use to populate the HTML when server-rendering your app.
+ * @template {Record} Props
+ * @param {Component} component
+ * @param {{ props?: Omit; context?: Map; idPrefix?: string; csp?: Csp }} [options]
+ * @returns {RenderOutput}
+ */
+ static render(component, options = {}) {
+ let sync;
+ const result = (
+ /** @type {RenderOutput} */
+ {}
+ );
+ Object.defineProperties(result, {
+ html: {
+ get: () => {
+ return (sync ??= Renderer.#render(component, options)).body;
+ }
+ },
+ head: {
+ get: () => {
+ return (sync ??= Renderer.#render(component, options)).head;
+ }
+ },
+ body: {
+ get: () => {
+ return (sync ??= Renderer.#render(component, options)).body;
+ }
+ },
+ hashes: {
+ value: {
+ script: ""
+ }
+ },
+ then: {
+ value: (
+ /**
+ * this is not type-safe, but honestly it's the best I can do right now, and it's a straightforward function.
+ *
+ * @template TResult1
+ * @template [TResult2=never]
+ * @param { (value: SyncRenderOutput) => TResult1 } onfulfilled
+ * @param { (reason: unknown) => TResult2 } onrejected
+ */
+ (onfulfilled, onrejected) => {
+ {
+ const result2 = sync ??= Renderer.#render(component, options);
+ const user_result = onfulfilled({
+ head: result2.head,
+ body: result2.body,
+ html: result2.body,
+ hashes: { script: [] }
+ });
+ return Promise.resolve(user_result);
+ }
+ }
+ )
+ }
+ });
+ return result;
+ }
+ /**
+ * Collect all of the `onDestroy` callbacks registered during rendering. In an async context, this is only safe to call
+ * after awaiting `collect_async`.
+ *
+ * Child renderers are "porous" and don't affect execution order, but component body renderers
+ * create ordering boundaries. Within a renderer, callbacks run in order until hitting a component boundary.
+ * @returns {Iterable<() => void>}
+ */
+ *#collect_on_destroy() {
+ for (const component of this.#traverse_components()) {
+ yield* component.#collect_ondestroy();
+ }
+ }
+ /**
+ * Performs a depth-first search of renderers, yielding the deepest components first, then additional components as we backtrack up the tree.
+ * @returns {Iterable}
+ */
+ *#traverse_components() {
+ for (const child of this.#out) {
+ if (typeof child !== "string") {
+ yield* child.#traverse_components();
+ }
+ }
+ if (this.#is_component_body) {
+ yield this;
+ }
+ }
+ /**
+ * @returns {Iterable<() => void>}
+ */
+ *#collect_ondestroy() {
+ if (this.#on_destroy) {
+ for (const fn of this.#on_destroy) {
+ yield fn;
+ }
+ }
+ for (const child of this.#out) {
+ if (child instanceof Renderer && !child.#is_component_body) {
+ yield* child.#collect_ondestroy();
+ }
+ }
+ }
+ /**
+ * Render a component. Throws if any of the children are performing asynchronous work.
+ *
+ * @template {Record} Props
+ * @param {Component} component
+ * @param {{ props?: Omit; context?: Map; idPrefix?: string }} options
+ * @returns {AccumulatedContent}
+ */
+ static #render(component, options) {
+ var previous_context = ssr_context;
+ try {
+ const renderer = Renderer.#open_render("sync", component, options);
+ const content = renderer.#collect_content();
+ return Renderer.#close_render(content, renderer);
+ } finally {
+ abort();
+ set_ssr_context(previous_context);
+ }
+ }
+ /**
+ * Render a component.
+ *
+ * @template {Record} Props
+ * @param {Component} component
+ * @param {{ props?: Omit; context?: Map; idPrefix?: string; csp?: Csp }} options
+ * @returns {Promise}
+ */
+ static async #render_async(component, options) {
+ const previous_context = ssr_context;
+ try {
+ const renderer = Renderer.#open_render("async", component, options);
+ const content = await renderer.#collect_content_async();
+ const hydratables = await renderer.#collect_hydratables();
+ if (hydratables !== null) {
+ content.head = hydratables + content.head;
+ }
+ return Renderer.#close_render(content, renderer);
+ } finally {
+ set_ssr_context(previous_context);
+ abort();
+ }
+ }
+ /**
+ * Collect all of the code from the `out` array and return it as a string, or a promise resolving to a string.
+ * @param {AccumulatedContent} content
+ * @returns {AccumulatedContent}
+ */
+ #collect_content(content = { head: "", body: "" }) {
+ for (const item of this.#out) {
+ if (typeof item === "string") {
+ content[this.type] += item;
+ } else if (item instanceof Renderer) {
+ item.#collect_content(content);
+ }
+ }
+ return content;
+ }
+ /**
+ * Collect all of the code from the `out` array and return it as a string.
+ * @param {AccumulatedContent} content
+ * @returns {Promise}
+ */
+ async #collect_content_async(content = { head: "", body: "" }) {
+ await this.promise;
+ for (const item of this.#out) {
+ if (typeof item === "string") {
+ content[this.type] += item;
+ } else if (item instanceof Renderer) {
+ await item.#collect_content_async(content);
+ }
+ }
+ return content;
+ }
+ async #collect_hydratables() {
+ const ctx = get_render_context().hydratable;
+ for (const [_, key] of ctx.unresolved_promises) {
+ unresolved_hydratable(key, ctx.lookup.get(key)?.stack ?? "");
+ }
+ for (const comparison of ctx.comparisons) {
+ await comparison;
+ }
+ return await this.#hydratable_block(ctx);
+ }
+ /**
+ * @template {Record} Props
+ * @param {'sync' | 'async'} mode
+ * @param {import('svelte').Component} component
+ * @param {{ props?: Omit; context?: Map; idPrefix?: string; csp?: Csp }} options
+ * @returns {Renderer}
+ */
+ static #open_render(mode, component, options) {
+ const renderer = new Renderer(
+ new SSRState(mode, options.idPrefix ? options.idPrefix + "-" : "", options.csp)
+ );
+ renderer.push(BLOCK_OPEN);
+ if (options.context) {
+ push();
+ ssr_context.c = options.context;
+ ssr_context.r = renderer;
+ }
+ component(renderer, options.props ?? {});
+ if (options.context) {
+ pop();
+ }
+ renderer.push(BLOCK_CLOSE);
+ return renderer;
+ }
+ /**
+ * @param {AccumulatedContent} content
+ * @param {Renderer} renderer
+ * @returns {AccumulatedContent & { hashes: { script: Sha256Source[] } }}
+ */
+ static #close_render(content, renderer) {
+ for (const cleanup of renderer.#collect_on_destroy()) {
+ cleanup();
+ }
+ let head = content.head + renderer.global.get_title();
+ let body = content.body;
+ for (const { hash, code } of renderer.global.css) {
+ head += ``;
+ }
+ return {
+ head,
+ body,
+ hashes: {
+ script: renderer.global.csp.script_hashes
+ }
+ };
+ }
+ /**
+ * @param {HydratableContext} ctx
+ */
+ async #hydratable_block(ctx) {
+ if (ctx.lookup.size === 0) {
+ return null;
+ }
+ let entries = [];
+ let has_promises = false;
+ for (const [k, v] of ctx.lookup) {
+ if (v.promises) {
+ has_promises = true;
+ for (const p of v.promises) await p;
+ }
+ entries.push(`[${JSON.stringify(k)},${v.serialized}]`);
+ }
+ let prelude = `const h = (window.__svelte ??= {}).h ??= new Map();`;
+ if (has_promises) {
+ prelude = `const r = (v) => Promise.resolve(v);
+ ${prelude}`;
+ }
+ const body = `
+ {
+ ${prelude}
+
+ for (const [k, v] of [
+ ${entries.join(",\n ")}
+ ]) {
+ h.set(k, v);
+ }
+ }
+ `;
+ let csp_attr = "";
+ if (this.global.csp.nonce) {
+ csp_attr = ` nonce="${this.global.csp.nonce}"`;
+ } else if (this.global.csp.hash) {
+ const hash = await sha256(body);
+ this.global.csp.script_hashes.push(`sha256-${hash}`);
+ }
+ return `
+ \n * ```\n */\nexport function getAbortSignal() {\n\tif (active_reaction === null) {\n\t\te.get_abort_signal_outside_reaction();\n\t}\n\n\treturn (active_reaction.ac ??= new AbortController()).signal;\n}\n\n/**\n * `onMount`, like [`$effect`](https://svelte.dev/docs/svelte/$effect), schedules a function to run as soon as the component has been mounted to the DOM.\n * Unlike `$effect`, the provided function only runs once.\n *\n * It must be called during the component's initialisation (but doesn't need to live _inside_ the component;\n * it can be called from an external module). If a function is returned _synchronously_ from `onMount`,\n * it will be called when the component is unmounted.\n *\n * `onMount` functions do not run during [server-side rendering](https://svelte.dev/docs/svelte/svelte-server#render).\n *\n * @template T\n * @param {() => NotFunction | Promise> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('onMount');\n\t}\n\n\tif (legacy_mode_flag && component_context.l !== null) {\n\t\tinit_update_callbacks(component_context).m.push(fn);\n\t} else {\n\t\tuser_effect(() => {\n\t\t\tconst cleanup = untrack(fn);\n\t\t\tif (typeof cleanup === 'function') return /** @type {() => void} */ (cleanup);\n\t\t});\n\t}\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('onDestroy');\n\t}\n\n\tonMount(() => () => untrack(fn));\n}\n\n/**\n * @template [T=any]\n * @param {string} type\n * @param {T} [detail]\n * @param {any}params_0\n * @returns {CustomEvent}\n */\nfunction create_custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs/svelte/legacy-on#Component-events).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n * loaded: null; // does not take a detail argument\n * change: string; // takes a detail argument of type string, which is required\n * optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * @deprecated Use callback props and/or the `$host()` rune instead — see [migration guide](https://svelte.dev/docs/svelte/v5-migration-guide#Event-changes-Component-events)\n * @template {Record} [EventMap = any]\n * @returns {EventDispatcher}\n */\nexport function createEventDispatcher() {\n\tconst active_component_context = component_context;\n\tif (active_component_context === null) {\n\t\te.lifecycle_outside_component('createEventDispatcher');\n\t}\n\n\t/**\n\t * @param [detail]\n\t * @param [options]\n\t */\n\treturn (type, detail, options) => {\n\t\tconst events = /** @type {Record} */ (\n\t\t\tactive_component_context.s.$$events\n\t\t)?.[/** @type {string} */ (type)];\n\n\t\tif (events) {\n\t\t\tconst callbacks = is_array(events) ? events.slice() : [events];\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = create_custom_event(/** @type {string} */ (type), detail, options);\n\t\t\tfor (const fn of callbacks) {\n\t\t\t\tfn.call(active_component_context.x, event);\n\t\t\t}\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\n// TODO mark beforeUpdate and afterUpdate as deprecated in Svelte 6\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`.\n *\n * In runes mode use `$effect.pre` instead.\n *\n * @deprecated Use [`$effect.pre`](https://svelte.dev/docs/svelte/$effect#$effect.pre) instead\n * @param {() => void} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('beforeUpdate');\n\t}\n\n\tif (component_context.l === null) {\n\t\te.lifecycle_legacy_only('beforeUpdate');\n\t}\n\n\tinit_update_callbacks(component_context).b.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`.\n *\n * In runes mode use `$effect` instead.\n *\n * @deprecated Use [`$effect`](https://svelte.dev/docs/svelte/$effect) instead\n * @param {() => void} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tif (component_context === null) {\n\t\te.lifecycle_outside_component('afterUpdate');\n\t}\n\n\tif (component_context.l === null) {\n\t\te.lifecycle_legacy_only('afterUpdate');\n\t}\n\n\tinit_update_callbacks(component_context).a.push(fn);\n}\n\n/**\n * Legacy-mode: Init callbacks object for onMount/beforeUpdate/afterUpdate\n * @param {ComponentContext} context\n */\nfunction init_update_callbacks(context) {\n\tvar l = /** @type {ComponentContextLegacy} */ (context).l;\n\treturn (l.u ??= { a: [], b: [], m: [] });\n}\n\nexport { flushSync, fork } from './internal/client/reactivity/batch.js';\nexport {\n\tcreateContext,\n\tgetContext,\n\tgetAllContexts,\n\thasContext,\n\tsetContext\n} from './internal/client/context.js';\nexport { hydratable } from './internal/client/hydratable.js';\nexport { hydrate, mount, unmount } from './internal/client/render.js';\nexport { tick, untrack, settled } from './internal/client/runtime.js';\nexport { createRawSnippet } from './internal/client/dom/blocks/snippet.js';\n"],
+ "mappings": "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",
+ "names": ["key", "key", "next", "source", "stack", "stack", "key", "flags", "component", "component_context", "effect", "effect", "flags", "child", "source", "stack", "update", "e", "settled", "source", "value", "eager_effects", "comment", "pending", "reset", "error", "derived", "stack", "source", "effect", "source", "flags", "derived", "stack", "version", "prop", "source", "s", "value", "key", "prop", "array_prototype", "index", "effect", "e", "derived", "flags", "effect", "flags", "flags", "effect", "effect", "teardown", "next", "transition", "child", "sibling", "effect", "next", "effect", "flags", "index", "teardown", "trace", "derived", "event", "html", "effect", "effect", "component", "events", "passive", "unmount", "anchor_node", "snippet", "element", "html", "element", "listeners", "run", "set", "update", "run", "derived", "pending", "get", "key", "prop", "next", "event", "slot", "key", "attr", "prop", "element", "key", "event"]
+}
diff --git a/frontend/.vite/deps/package.json b/frontend/.vite/deps/package.json
new file mode 100644
index 0000000..3dbc1ca
--- /dev/null
+++ b/frontend/.vite/deps/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}
diff --git a/frontend/.vite/deps/svelte.js b/frontend/.vite/deps/svelte.js
new file mode 100644
index 0000000..f7977e9
--- /dev/null
+++ b/frontend/.vite/deps/svelte.js
@@ -0,0 +1,46 @@
+import {
+ afterUpdate,
+ beforeUpdate,
+ createContext,
+ createEventDispatcher,
+ createRawSnippet,
+ flushSync,
+ fork,
+ getAbortSignal,
+ getAllContexts,
+ getContext,
+ hasContext,
+ hydratable,
+ hydrate,
+ mount,
+ onDestroy,
+ onMount,
+ setContext,
+ settled,
+ tick,
+ unmount,
+ untrack
+} from "./chunk-YAQNMG2X.js";
+export {
+ afterUpdate,
+ beforeUpdate,
+ createContext,
+ createEventDispatcher,
+ createRawSnippet,
+ flushSync,
+ fork,
+ getAbortSignal,
+ getAllContexts,
+ getContext,
+ hasContext,
+ hydratable,
+ hydrate,
+ mount,
+ onDestroy,
+ onMount,
+ setContext,
+ settled,
+ tick,
+ unmount,
+ untrack
+};
diff --git a/frontend/.vite/deps/svelte.js.map b/frontend/.vite/deps/svelte.js.map
new file mode 100644
index 0000000..9865211
--- /dev/null
+++ b/frontend/.vite/deps/svelte.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": [],
+ "sourcesContent": [],
+ "mappings": "",
+ "names": []
+}
diff --git a/frontend/.vite/deps/svelte_store.js b/frontend/.vite/deps/svelte_store.js
new file mode 100644
index 0000000..5505850
--- /dev/null
+++ b/frontend/.vite/deps/svelte_store.js
@@ -0,0 +1,100 @@
+import {
+ active_effect,
+ active_reaction,
+ createSubscriber,
+ derived,
+ effect_root,
+ effect_tracking,
+ get,
+ readable,
+ readonly,
+ render_effect,
+ set_active_effect,
+ set_active_reaction,
+ writable
+} from "./chunk-YAQNMG2X.js";
+
+// node_modules/svelte/src/store/index-client.js
+function toStore(get2, set) {
+ var effect = active_effect;
+ var reaction = active_reaction;
+ var init_value = get2();
+ const store = writable(init_value, (set2) => {
+ var ran = init_value !== get2();
+ var teardown;
+ var previous_reaction = active_reaction;
+ var previous_effect = active_effect;
+ set_active_reaction(reaction);
+ set_active_effect(effect);
+ try {
+ teardown = effect_root(() => {
+ render_effect(() => {
+ const value = get2();
+ if (ran) set2(value);
+ });
+ });
+ } finally {
+ set_active_reaction(previous_reaction);
+ set_active_effect(previous_effect);
+ }
+ ran = true;
+ return teardown;
+ });
+ if (set) {
+ return {
+ set,
+ update: (fn) => set(fn(get2())),
+ subscribe: store.subscribe
+ };
+ }
+ return {
+ subscribe: store.subscribe
+ };
+}
+function fromStore(store) {
+ let value = (
+ /** @type {V} */
+ void 0
+ );
+ const subscribe = createSubscriber((update) => {
+ let ran = false;
+ const unsubscribe = store.subscribe((v) => {
+ value = v;
+ if (ran) update();
+ });
+ ran = true;
+ return unsubscribe;
+ });
+ function current() {
+ if (effect_tracking()) {
+ subscribe();
+ return value;
+ }
+ return get(store);
+ }
+ if ("set" in store) {
+ return {
+ get current() {
+ return current();
+ },
+ set current(v) {
+ store.set(v);
+ }
+ };
+ }
+ return {
+ get current() {
+ return current();
+ }
+ };
+}
+export {
+ derived,
+ fromStore,
+ get,
+ readable,
+ readonly,
+ toStore,
+ writable
+};
+//# sourceMappingURL=svelte_store.js.map
diff --git a/frontend/.vite/deps/svelte_store.js.map b/frontend/.vite/deps/svelte_store.js.map
new file mode 100644
index 0000000..d0ee695
--- /dev/null
+++ b/frontend/.vite/deps/svelte_store.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../node_modules/svelte/src/store/index-client.js"],
+ "sourcesContent": ["/** @import { Readable, Writable } from './public.js' */\nimport {\n\teffect_root,\n\teffect_tracking,\n\trender_effect\n} from '../internal/client/reactivity/effects.js';\nimport { get, writable } from './shared/index.js';\nimport { createSubscriber } from '../reactivity/create-subscriber.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../internal/client/runtime.js';\n\nexport { derived, get, readable, readonly, writable } from './shared/index.js';\n\n/**\n * @template V\n * @overload\n * @param {() => V} get\n * @param {(v: V) => void} set\n * @returns {Writable}\n */\n/**\n * @template V\n * @overload\n * @param {() => V} get\n * @returns {Readable}\n */\n/**\n * Create a store from a function that returns state, and (to make a writable store), an\n * optional second function that sets state.\n *\n * ```ts\n * import { toStore } from 'svelte/store';\n *\n * let count = $state(0);\n *\n * const store = toStore(() => count, (v) => (count = v));\n * ```\n * @template V\n * @param {() => V} get\n * @param {(v: V) => void} [set]\n * @returns {Writable | Readable}\n */\nexport function toStore(get, set) {\n\tvar effect = active_effect;\n\tvar reaction = active_reaction;\n\tvar init_value = get();\n\n\tconst store = writable(init_value, (set) => {\n\t\t// If the value has changed before we call subscribe, then\n\t\t// we need to treat the value as already having run\n\t\tvar ran = init_value !== get();\n\n\t\t// TODO do we need a different implementation on the server?\n\t\tvar teardown;\n\t\t// Apply the reaction and effect at the time of toStore being called\n\t\tvar previous_reaction = active_reaction;\n\t\tvar previous_effect = active_effect;\n\t\tset_active_reaction(reaction);\n\t\tset_active_effect(effect);\n\n\t\ttry {\n\t\t\tteardown = effect_root(() => {\n\t\t\t\trender_effect(() => {\n\t\t\t\t\tconst value = get();\n\t\t\t\t\tif (ran) set(value);\n\t\t\t\t});\n\t\t\t});\n\t\t} finally {\n\t\t\tset_active_reaction(previous_reaction);\n\t\t\tset_active_effect(previous_effect);\n\t\t}\n\n\t\tran = true;\n\n\t\treturn teardown;\n\t});\n\n\tif (set) {\n\t\treturn {\n\t\t\tset,\n\t\t\tupdate: (fn) => set(fn(get())),\n\t\t\tsubscribe: store.subscribe\n\t\t};\n\t}\n\n\treturn {\n\t\tsubscribe: store.subscribe\n\t};\n}\n\n/**\n * @template V\n * @overload\n * @param {Writable} store\n * @returns {{ current: V }}\n */\n/**\n * @template V\n * @overload\n * @param {Readable} store\n * @returns {{ readonly current: V }}\n */\n/**\n * Convert a store to an object with a reactive `current` property. If `store`\n * is a readable store, `current` will be a readonly property.\n *\n * ```ts\n * import { fromStore, get, writable } from 'svelte/store';\n *\n * const store = writable(0);\n *\n * const count = fromStore(store);\n *\n * count.current; // 0;\n * store.set(1);\n * count.current; // 1\n *\n * count.current += 1;\n * get(store); // 2\n * ```\n * @template V\n * @param {Writable | Readable} store\n */\nexport function fromStore(store) {\n\tlet value = /** @type {V} */ (undefined);\n\n\tconst subscribe = createSubscriber((update) => {\n\t\tlet ran = false;\n\n\t\tconst unsubscribe = store.subscribe((v) => {\n\t\t\tvalue = v;\n\t\t\tif (ran) update();\n\t\t});\n\n\t\tran = true;\n\n\t\treturn unsubscribe;\n\t});\n\n\tfunction current() {\n\t\tif (effect_tracking()) {\n\t\t\tsubscribe();\n\t\t\treturn value;\n\t\t}\n\n\t\treturn get(store);\n\t}\n\n\tif ('set' in store) {\n\t\treturn {\n\t\t\tget current() {\n\t\t\t\treturn current();\n\t\t\t},\n\t\t\tset current(v) {\n\t\t\t\tstore.set(v);\n\t\t\t}\n\t\t};\n\t}\n\n\treturn {\n\t\tget current() {\n\t\t\treturn current();\n\t\t}\n\t};\n}\n"],
+ "mappings": ";;;;;;;;;;;;;;;;;AA8CO,SAAS,QAAQA,MAAK,KAAK;AACjC,MAAI,SAAS;AACb,MAAI,WAAW;AACf,MAAI,aAAaA,KAAI;AAErB,QAAM,QAAQ,SAAS,YAAY,CAACC,SAAQ;AAG3C,QAAI,MAAM,eAAeD,KAAI;AAG7B,QAAI;AAEJ,QAAI,oBAAoB;AACxB,QAAI,kBAAkB;AACtB,wBAAoB,QAAQ;AAC5B,sBAAkB,MAAM;AAExB,QAAI;AACH,iBAAW,YAAY,MAAM;AAC5B,sBAAc,MAAM;AACnB,gBAAM,QAAQA,KAAI;AAClB,cAAI,IAAK,CAAAC,KAAI,KAAK;AAAA,QACnB,CAAC;AAAA,MACF,CAAC;AAAA,IACF,UAAE;AACD,0BAAoB,iBAAiB;AACrC,wBAAkB,eAAe;AAAA,IAClC;AAEA,UAAM;AAEN,WAAO;AAAA,EACR,CAAC;AAED,MAAI,KAAK;AACR,WAAO;AAAA,MACN;AAAA,MACA,QAAQ,CAAC,OAAO,IAAI,GAAGD,KAAI,CAAC,CAAC;AAAA,MAC7B,WAAW,MAAM;AAAA,IAClB;AAAA,EACD;AAEA,SAAO;AAAA,IACN,WAAW,MAAM;AAAA,EAClB;AACD;AAmCO,SAAS,UAAU,OAAO;AAChC,MAAI;AAAA;AAAA,IAA0B;AAAA;AAE9B,QAAM,YAAY,iBAAiB,CAAC,WAAW;AAC9C,QAAI,MAAM;AAEV,UAAM,cAAc,MAAM,UAAU,CAAC,MAAM;AAC1C,cAAQ;AACR,UAAI,IAAK,QAAO;AAAA,IACjB,CAAC;AAED,UAAM;AAEN,WAAO;AAAA,EACR,CAAC;AAED,WAAS,UAAU;AAClB,QAAI,gBAAgB,GAAG;AACtB,gBAAU;AACV,aAAO;AAAA,IACR;AAEA,WAAO,IAAI,KAAK;AAAA,EACjB;AAEA,MAAI,SAAS,OAAO;AACnB,WAAO;AAAA,MACN,IAAI,UAAU;AACb,eAAO,QAAQ;AAAA,MAChB;AAAA,MACA,IAAI,QAAQ,GAAG;AACd,cAAM,IAAI,CAAC;AAAA,MACZ;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN,IAAI,UAAU;AACb,aAAO,QAAQ;AAAA,IAChB;AAAA,EACD;AACD;",
+ "names": ["get", "set"]
+}
diff --git a/frontend/README.md b/frontend/README.md
index 54a2631..6a48769 100755
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -1,43 +1,39 @@
-# Svelte + Vite
+# Superset Tools Frontend (SvelteKit)
-This template should help get you started developing with Svelte in Vite.
+This is the frontend for the Superset Tools application, built with SvelteKit in SPA mode.
-## Recommended IDE Setup
+## Development
-[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode).
+1. **Install dependencies**:
+ ```bash
+ npm install
+ ```
-## Need an official Svelte framework?
+2. **Run development server**:
+ ```bash
+ npm run dev
+ ```
+ The frontend will be available at `http://localhost:5173`. It is configured to proxy API requests to `http://localhost:8000`.
-Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more.
+## Production Build
-## Technical considerations
+1. **Build the static SPA**:
+ ```bash
+ npm run build
+ ```
+ This generates a static SPA in the `build/` directory.
-**Why use this over SvelteKit?**
+2. **Serve with Backend**:
+ The Python backend is configured to serve the files from `frontend/build/`. Ensure the backend is running:
+ ```bash
+ cd ../backend
+ python src/app.py
+ ```
-- It brings its own routing solution which might not be preferable for some users.
-- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.
+## Architecture
-This template contains as little as possible to get started with Vite + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.
-
-Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate.
-
-**Why include `.vscode/extensions.json`?**
-
-Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project.
-
-**Why enable `checkJs` in the JS template?**
-
-It is likely that most cases of changing variable types in runtime are likely to be accidental, rather than deliberate. This provides advanced typechecking out of the box. Should you like to take advantage of the dynamically-typed nature of JavaScript, it is trivial to change the configuration.
-
-**Why is HMR not preserving my local component state?**
-
-HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/sveltejs/svelte-hmr/tree/master/packages/svelte-hmr#preservation-of-local-state).
-
-If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR.
-
-```js
-// store.js
-// An extremely simple external store
-import { writable } from 'svelte/store'
-export default writable(0)
-```
+- **Routing**: File-based routing in `src/routes/`.
+- **Layouts**: Shared UI in `src/routes/+layout.svelte`.
+- **Data Loading**: `load` functions in `+page.ts` for efficient data fetching.
+- **API Client**: Centralized API logic in `src/lib/api.js`.
+- **Styling**: Tailwind CSS.
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 012268a..c033340 100755
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -8,6 +8,8 @@
"name": "frontend",
"version": "0.0.0",
"devDependencies": {
+ "@sveltejs/adapter-static": "^3.0.10",
+ "@sveltejs/kit": "^2.49.2",
"@sveltejs/vite-plugin-svelte": "^6.2.1",
"autoprefixer": "^10.4.0",
"postcss": "^8.4.0",
@@ -559,6 +561,13 @@
"node": ">= 8"
}
},
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.29",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
+ "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.53.5",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.5.tgz",
@@ -867,6 +876,13 @@
"win32"
]
},
+ "node_modules/@standard-schema/spec": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@sveltejs/acorn-typescript": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz",
@@ -877,6 +893,56 @@
"acorn": "^8.9.0"
}
},
+ "node_modules/@sveltejs/adapter-static": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz",
+ "integrity": "sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@sveltejs/kit": "^2.0.0"
+ }
+ },
+ "node_modules/@sveltejs/kit": {
+ "version": "2.49.2",
+ "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.49.2.tgz",
+ "integrity": "sha512-Vp3zX/qlwerQmHMP6x0Ry1oY7eKKRcOWGc2P59srOp4zcqyn+etJyQpELgOi4+ZSUgteX8Y387NuwruLgGXLUQ==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@standard-schema/spec": "^1.0.0",
+ "@sveltejs/acorn-typescript": "^1.0.5",
+ "@types/cookie": "^0.6.0",
+ "acorn": "^8.14.1",
+ "cookie": "^0.6.0",
+ "devalue": "^5.3.2",
+ "esm-env": "^1.2.2",
+ "kleur": "^4.1.5",
+ "magic-string": "^0.30.5",
+ "mrmime": "^2.0.0",
+ "sade": "^1.8.1",
+ "set-cookie-parser": "^2.6.0",
+ "sirv": "^3.0.0"
+ },
+ "bin": {
+ "svelte-kit": "svelte-kit.js"
+ },
+ "engines": {
+ "node": ">=18.13"
+ },
+ "peerDependencies": {
+ "@opentelemetry/api": "^1.0.0",
+ "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0",
+ "svelte": "^4.0.0 || ^5.0.0-next.0",
+ "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0"
+ },
+ "peerDependenciesMeta": {
+ "@opentelemetry/api": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@sveltejs/vite-plugin-svelte": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.1.tgz",
@@ -917,6 +983,13 @@
"vite": "^6.3.0 || ^7.0.0"
}
},
+ "node_modules/@types/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/estree": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
@@ -1183,6 +1256,16 @@
"node": ">= 6"
}
},
+ "node_modules/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/cssesc": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -1522,6 +1605,16 @@
"jiti": "bin/jiti.js"
}
},
+ "node_modules/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/lilconfig": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
@@ -1583,6 +1676,26 @@
"node": ">=8.6"
}
},
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mrmime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
+ "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -2011,6 +2124,41 @@
"queue-microtask": "^1.2.2"
}
},
+ "node_modules/sade": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
+ "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mri": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/set-cookie-parser": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
+ "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sirv": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz",
+ "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -2208,6 +2356,16 @@
"node": ">=8.0"
}
},
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 73f5ee7..7945d57 100755
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -9,11 +9,13 @@
"preview": "vite preview"
},
"devDependencies": {
- "@sveltejs/vite-plugin-svelte": "^6.2.1",
- "svelte": "^5.43.8",
- "vite": "^7.2.4",
- "tailwindcss": "^3.0.0",
- "autoprefixer": "^10.4.0",
- "postcss": "^8.4.0"
+ "@sveltejs/adapter-static": "^3.0.10",
+ "@sveltejs/kit": "^2.49.2",
+ "@sveltejs/vite-plugin-svelte": "^6.2.1",
+ "autoprefixer": "^10.4.0",
+ "postcss": "^8.4.0",
+ "svelte": "^5.43.8",
+ "tailwindcss": "^3.0.0",
+ "vite": "^7.2.4"
}
}
diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index 7f657aa..f14c465 100755
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -1,5 +1,5 @@
+
+
@@ -101,4 +108,6 @@
{/if}
+
+
diff --git a/frontend/src/app.html b/frontend/src/app.html
new file mode 100644
index 0000000..6769ed5
--- /dev/null
+++ b/frontend/src/app.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ %sveltekit.head%
+
+
+
%sveltekit.body%
+
+
diff --git a/frontend/src/components/DynamicForm.svelte b/frontend/src/components/DynamicForm.svelte
index fa13921..95fb885 100755
--- a/frontend/src/components/DynamicForm.svelte
+++ b/frontend/src/components/DynamicForm.svelte
@@ -1,5 +1,5 @@
+
+
-
\ No newline at end of file
+
+
+
diff --git a/frontend/src/components/Footer.svelte b/frontend/src/components/Footer.svelte
new file mode 100644
index 0000000..e1d9076
--- /dev/null
+++ b/frontend/src/components/Footer.svelte
@@ -0,0 +1,3 @@
+
diff --git a/frontend/src/components/Navbar.svelte b/frontend/src/components/Navbar.svelte
new file mode 100644
index 0000000..64fde12
--- /dev/null
+++ b/frontend/src/components/Navbar.svelte
@@ -0,0 +1,26 @@
+
+
+
+
+ Superset Tools
+
+
+
diff --git a/frontend/src/components/TaskRunner.svelte b/frontend/src/components/TaskRunner.svelte
index 2c2dfef..105f32f 100755
--- a/frontend/src/components/TaskRunner.svelte
+++ b/frontend/src/components/TaskRunner.svelte
@@ -1,5 +1,5 @@
+
+
{#if $selectedTask}
Task: {$selectedTask.plugin_id}
@@ -71,4 +80,6 @@
No task selected.
{/if}
-
\ No newline at end of file
+
+
+
diff --git a/frontend/src/components/Toast.svelte b/frontend/src/components/Toast.svelte
index 76fe42d..47fb11d 100755
--- a/frontend/src/components/Toast.svelte
+++ b/frontend/src/components/Toast.svelte
@@ -1,5 +1,5 @@
+
+
No Superset environments configured. You must add at least one environment to perform backups or migrations.
+
+ {/if}
+
+
+
+
+
+
Name
+
URL
+
Username
+
Default
+
Actions
+
+
+
+ {#each settings.environments as env}
+
+
{env.name}
+
{env.url}
+
{env.username}
+
{env.is_default ? 'Yes' : 'No'}
+
+
+
+
+
+
+ {/each}
+
+
+
+
+
+
{editingEnvId ? 'Edit' : 'Add'} Environment
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if editingEnvId}
+
+ {/if}
+
+
+
+
diff --git a/frontend/src/routes/settings/+page.ts b/frontend/src/routes/settings/+page.ts
new file mode 100644
index 0000000..91f7849
--- /dev/null
+++ b/frontend/src/routes/settings/+page.ts
@@ -0,0 +1,23 @@
+import { api } from '../../lib/api';
+
+/** @type {import('./$types').PageLoad} */
+export async function load() {
+ try {
+ const settings = await api.getSettings();
+ return {
+ settings
+ };
+ } catch (error) {
+ console.error('Failed to load settings:', error);
+ return {
+ settings: {
+ environments: [],
+ settings: {
+ backup_path: '',
+ default_environment_id: null
+ }
+ },
+ error: 'Failed to load settings'
+ };
+ }
+}
diff --git a/frontend/svelte.config.js b/frontend/svelte.config.js
index 47822f2..46769d8 100755
--- a/frontend/svelte.config.js
+++ b/frontend/svelte.config.js
@@ -1,13 +1,19 @@
-import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'
+import adapter from '@sveltejs/adapter-static';
+import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
-/** @type {import("@sveltejs/vite-plugin-svelte").SvelteConfig} */
-export default {
- // Consult https://svelte.dev/docs#compile-time-svelte-preprocess
- // for more information about preprocessors
- preprocess: vitePreprocess(),
- compilerOptions: {
- compatibility: {
- componentApi: 4,
- },
- },
-}
+/** @type {import('@sveltejs/kit').Config} */
+const config = {
+ preprocess: vitePreprocess(),
+
+ kit: {
+ adapter: adapter({
+ pages: 'build',
+ assets: 'build',
+ fallback: 'index.html',
+ precompress: false,
+ strict: true
+ })
+ }
+};
+
+export default config;
diff --git a/frontend/vite.config.js b/frontend/vite.config.js
index 2d8284e..1b5964e 100755
--- a/frontend/vite.config.js
+++ b/frontend/vite.config.js
@@ -1,32 +1,19 @@
-import { defineConfig } from 'vite'
-import { svelte } from '@sveltejs/vite-plugin-svelte'
+import { sveltekit } from '@sveltejs/kit/vite';
+import { defineConfig } from 'vite';
-// https://vite.dev/config/
export default defineConfig({
- plugins: [svelte()],
- server: {
- proxy: {
- '/plugins': {
- target: 'http://localhost:8000',
- changeOrigin: true,
- },
- '/tasks': {
- target: 'http://localhost:8000',
- changeOrigin: true,
- },
- '/settings': {
- target: 'http://localhost:8000',
- changeOrigin: true,
- },
- '/api': {
- target: 'http://localhost:8000',
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/api/, ''),
- },
- '/ws': {
- target: 'ws://localhost:8000',
- ws: true,
- },
- },
- },
-})
+ plugins: [sveltekit()],
+ server: {
+ proxy: {
+ '/api': {
+ target: 'http://localhost:8000',
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api/, '')
+ },
+ '/ws': {
+ target: 'ws://localhost:8000',
+ ws: true
+ }
+ }
+ }
+});
diff --git a/specs/004-integrate-svelte-kit/checklists/requirements.md b/specs/004-integrate-svelte-kit/checklists/requirements.md
new file mode 100644
index 0000000..f14c468
--- /dev/null
+++ b/specs/004-integrate-svelte-kit/checklists/requirements.md
@@ -0,0 +1,34 @@
+# Specification Quality Checklist: Integrate SvelteKit
+
+**Purpose**: Validate specification completeness and quality before proceeding to planning
+**Created**: 2025-12-20
+**Feature**: [Link to spec.md](../spec.md)
+
+## Content Quality
+
+- [x] No implementation details (languages, frameworks, APIs)
+- [x] Focused on user value and business needs
+- [x] Written for non-technical stakeholders
+- [x] All mandatory sections completed
+
+## Requirement Completeness
+
+- [x] No [NEEDS CLARIFICATION] markers remain
+- [x] Requirements are testable and unambiguous
+- [x] Success criteria are measurable
+- [x] Success criteria are technology-agnostic (no implementation details)
+- [x] All acceptance scenarios are defined
+- [x] Edge cases are identified
+- [x] Scope is clearly bounded
+- [x] Dependencies and assumptions identified
+
+## Feature Readiness
+
+- [x] All functional requirements have clear acceptance criteria
+- [x] User scenarios cover primary flows
+- [x] Feature meets measurable outcomes defined in Success Criteria
+- [x] No implementation details leak into specification
+
+## Notes
+
+- Spec updated to assume SPA mode and standard fetch, removing clarification needs.
diff --git a/specs/004-integrate-svelte-kit/contracts/api.md b/specs/004-integrate-svelte-kit/contracts/api.md
new file mode 100644
index 0000000..fdbc49a
--- /dev/null
+++ b/specs/004-integrate-svelte-kit/contracts/api.md
@@ -0,0 +1,61 @@
+# API Contracts: SvelteKit Frontend
+
+The SvelteKit frontend will interact with the following existing backend API endpoints.
+
+## Settings API (`/api/settings`)
+
+### Get All Settings
+- **Endpoint**: `GET /api/settings/`
+- **Response**: `AppConfig` (JSON)
+- **Usage**: Load initial configuration for the application.
+
+### Update Global Settings
+- **Endpoint**: `PATCH /api/settings/global`
+- **Request Body**: `GlobalSettings` (JSON)
+- **Response**: `GlobalSettings` (JSON)
+- **Usage**: Save changes to global settings.
+
+### List Environments
+- **Endpoint**: `GET /api/settings/environments`
+- **Response**: `List[Environment]` (JSON)
+- **Usage**: Display configured Superset environments.
+
+### Add Environment
+- **Endpoint**: `POST /api/settings/environments`
+- **Request Body**: `Environment` (JSON)
+- **Response**: `Environment` (JSON)
+- **Usage**: Create a new environment configuration.
+
+### Update Environment
+- **Endpoint**: `PUT /api/settings/environments/{id}`
+- **Request Body**: `Environment` (JSON)
+- **Response**: `Environment` (JSON)
+- **Usage**: Modify an existing environment.
+
+### Delete Environment
+- **Endpoint**: `DELETE /api/settings/environments/{id}`
+- **Response**: `{"message": "..."}`
+- **Usage**: Remove an environment.
+
+### Test Connection
+- **Endpoint**: `POST /api/settings/environments/{id}/test`
+- **Response**: `{"status": "success/error", "message": "..."}`
+- **Usage**: Verify connectivity to a Superset instance.
+
+## Plugins API (`/api/plugins`)
+
+### List Plugins
+- **Endpoint**: `GET /api/plugins/`
+- **Response**: `List[PluginConfig]` (JSON)
+- **Usage**: Display available plugins on the Dashboard.
+
+## Tasks API (`/api/tasks`)
+*(Inferred from file list, used for running plugin tasks)*
+
+### List Tasks
+- **Endpoint**: `GET /api/tasks/`
+- **Usage**: Show active or historical tasks.
+
+### Run Task
+- **Endpoint**: `POST /api/tasks/{plugin_id}`
+- **Usage**: Execute a plugin-specific task.
diff --git a/specs/004-integrate-svelte-kit/data-model.md b/specs/004-integrate-svelte-kit/data-model.md
new file mode 100644
index 0000000..4d5d791
--- /dev/null
+++ b/specs/004-integrate-svelte-kit/data-model.md
@@ -0,0 +1,40 @@
+# Data Model: SvelteKit Integration
+
+## Entities
+
+### Route
+Represents a navigable URL in the application.
+
+| Field | Type | Description |
+|-------|------|-------------|
+| `path` | String | The URL path (e.g., `/`, `/settings`) |
+| `component` | Svelte Component | The page component to render |
+| `data_requirements` | List | Backend data needed for this route |
+| `layout` | Layout | The layout wrapping this route |
+
+**Validation Rules**:
+- `path` must be unique.
+- `path` must follow SvelteKit file-based routing conventions.
+
+### Layout
+Represents a shared UI structure.
+
+| Field | Type | Description |
+|-------|------|-------------|
+| `name` | String | Identifier for the layout (e.g., `default`) |
+| `components` | List | Shared components (Header, Footer, Sidebar) |
+| `slot` | Placeholder | Where the route content is injected |
+
+## State Transitions
+
+### Navigation
+1. **Trigger**: User clicks link or `goto(path)` is called.
+2. **Action**: SvelteKit router intercepts the request.
+3. **Data Fetching**: `load` function in `+page.ts` or `+layout.ts` is executed.
+4. **Rendering**: The new page component is rendered within the layout.
+5. **URL Update**: Browser history is updated.
+
+### Error Handling
+1. **Trigger**: Navigation to non-existent path or API failure.
+2. **Action**: SvelteKit renders `+error.svelte`.
+3. **Display**: User-friendly error message with recovery options.
diff --git a/specs/004-integrate-svelte-kit/plan.md b/specs/004-integrate-svelte-kit/plan.md
new file mode 100644
index 0000000..cb1b1f9
--- /dev/null
+++ b/specs/004-integrate-svelte-kit/plan.md
@@ -0,0 +1,70 @@
+# Implementation Plan: Integrate SvelteKit
+
+**Branch**: `004-integrate-svelte-kit` | **Date**: 2025-12-20 | **Spec**: [specs/004-integrate-svelte-kit/spec.md](specs/004-integrate-svelte-kit/spec.md)
+**Input**: Feature specification from `/specs/004-integrate-svelte-kit/spec.md`
+
+## Summary
+
+Integrate SvelteKit as the primary frontend framework to provide seamless navigation, improved data loading, and a unified layout. The application will be configured as a Static Single Page Application (SPA) to be served by the existing Python backend, preserving all existing functionality while leveraging modern framework features like file-based routing and shared layouts.
+
+## Technical Context
+
+**Language/Version**: Python 3.9+, Node.js 18+
+**Primary Dependencies**: SvelteKit, FastAPI, Tailwind CSS (inferred from existing frontend)
+**Storage**: N/A (Frontend integration)
+**Testing**: pytest (Backend), Vitest/Playwright (Frontend - SvelteKit defaults)
+**Target Platform**: Linux server (SPA served by backend)
+**Project Type**: Web application (frontend + backend)
+**Performance Goals**: Page transition time < 200ms (SC-001)
+**Constraints**: Must be deployable as a Static SPA (FR-003), no Node.js server in production (Assumptions)
+**Scale/Scope**: Migration of existing Dashboard and Settings pages
+
+## Constitution Check
+
+*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
+
+- **Principle Compliance**: The project constitution is currently in a template state. No specific violations identified.
+- **Architecture Alignment**: The move to SvelteKit aligns with the goal of using modern frontend patterns while maintaining the "SPA served by backend" constraint.
+
+## Project Structure
+
+### Documentation (this feature)
+
+```text
+specs/004-integrate-svelte-kit/
+├── plan.md # This file (/speckit.plan command output)
+├── research.md # Phase 0 output (/speckit.plan command)
+├── data-model.md # Phase 1 output (/speckit.plan command)
+├── quickstart.md # Phase 1 output (/speckit.plan command)
+├── contracts/ # Phase 1 output (/speckit.plan command)
+└── tasks.md # Phase 2 output (/speckit.tasks command - NOT created by /speckit.plan)
+```
+
+### Source Code (repository root)
+
+```text
+backend/
+├── src/
+│ ├── models/
+│ ├── services/
+│ └── api/
+└── tests/
+
+frontend/
+├── src/
+│ ├── lib/
+│ ├── routes/ # SvelteKit file-based routing
+│ └── app.html
+├── static/
+└── tests/
+```
+
+**Structure Decision**: Option 2: Web application. The project already has `backend/` and `frontend/` directories. SvelteKit will be integrated into the `frontend/` directory, replacing the current Svelte setup.
+
+## Complexity Tracking
+
+> **Fill ONLY if Constitution Check has violations that must be justified**
+
+| Violation | Why Needed | Simpler Alternative Rejected Because |
+|-----------|------------|-------------------------------------|
+| None | N/A | N/A |
diff --git a/specs/004-integrate-svelte-kit/quickstart.md b/specs/004-integrate-svelte-kit/quickstart.md
new file mode 100644
index 0000000..444c563
--- /dev/null
+++ b/specs/004-integrate-svelte-kit/quickstart.md
@@ -0,0 +1,51 @@
+# Quickstart: SvelteKit Integration
+
+This guide provides instructions for setting up and running the SvelteKit frontend integrated with the FastAPI backend.
+
+## Prerequisites
+- Node.js 18+
+- Python 3.9+
+- `npm`
+
+## Frontend Setup
+
+1. **Initialize SvelteKit**:
+ ```bash
+ cd frontend
+ # (Assuming migration to SvelteKit structure)
+ npm install
+ ```
+
+2. **Development Mode**:
+ Run the SvelteKit development server:
+ ```bash
+ npm run dev
+ ```
+ The frontend will be available at `http://localhost:5173`.
+
+3. **Build for Production**:
+ Generate the static SPA files:
+ ```bash
+ npm run build
+ ```
+ The output will be in the `frontend/build` directory.
+
+## Backend Setup
+
+1. **Install Dependencies**:
+ ```bash
+ cd backend
+ pip install -r requirements.txt
+ ```
+
+2. **Run Backend**:
+ ```bash
+ python src/app.py
+ ```
+ The backend will serve the static frontend files from `frontend/build`.
+
+## Verification Steps
+
+1. **Navigation**: Open `http://localhost:8000` (backend URL). Click on "Settings" and verify the URL changes to `/settings` without a page reload.
+2. **Deep Linking**: Refresh the page at `http://localhost:8000/settings`. Verify the Settings page loads correctly.
+3. **Data Loading**: Verify that the Dashboard correctly lists available plugins and Settings shows the current configuration.
diff --git a/specs/004-integrate-svelte-kit/research.md b/specs/004-integrate-svelte-kit/research.md
new file mode 100644
index 0000000..c6db7b0
--- /dev/null
+++ b/specs/004-integrate-svelte-kit/research.md
@@ -0,0 +1,45 @@
+# Research: SvelteKit Integration
+
+## Decision: SvelteKit SPA with FastAPI Backend
+
+### Rationale
+SvelteKit provides a robust file-based routing system and shared layout mechanism that fulfills the requirements (FR-001, FR-002, FR-004, FR-005). By using `adapter-static` in SPA mode, we can generate a set of static files that can be served by the existing FastAPI backend, satisfying the constraint of no Node.js server in production (FR-003, Assumptions).
+
+### Alternatives Considered
+- **Vanilla Svelte (Current)**: Lacks built-in routing and layout management, leading to manual implementation overhead.
+- **SvelteKit with Node.js Server**: Rejected because the project requires the Python backend to be the primary server.
+- **Inertia.js**: Requires more tight coupling between backend and frontend than desired for this project.
+
+## Technical Implementation Details
+
+### SvelteKit Configuration (SPA Mode)
+1. **Adapter**: Use `@sveltejs/adapter-static`.
+2. **Fallback**: Configure `fallback: 'index.html'` in `svelte.config.js`.
+3. **Client-Side Rendering**: Create `src/routes/+layout.ts` with:
+ ```typescript
+ export const ssr = false;
+ export const prerender = false;
+ ```
+ This ensures the entire app is treated as a SPA.
+
+### FastAPI Backend Integration
+1. **Static Files**: Mount the `frontend/build` (or `dist`) directory using `StaticFiles`.
+2. **SPA Routing**: Implement a catch-all route to serve `index.html` for any non-API request. This allows SvelteKit's client-side router to handle deep links like `/settings`.
+ ```python
+ @app.get("/{full_path:path}")
+ async def serve_spa(full_path: str):
+ # Check if path exists in static files, else serve index.html
+ ...
+ ```
+
+### Migration Strategy
+1. **Layout**: Move shared UI (header, footer) from `App.svelte` to `src/routes/+layout.svelte`.
+2. **Routes**:
+ - `Dashboard.svelte` -> `src/routes/+page.svelte` (or `src/routes/dashboard/+page.svelte`)
+ - `Settings.svelte` -> `src/routes/settings/+page.svelte`
+3. **API Client**: Reuse existing `frontend/src/lib/api.js` but ensure it works within SvelteKit's load functions if needed (though for pure SPA, standard `onMount` or reactive statements also work).
+
+## Best Practices
+- Use SvelteKit's `$lib` alias for shared components and utilities.
+- Leverage `+page.ts` `load` functions for data fetching to ensure data is ready before component mount (User Story 2).
+- Use SvelteKit's `goto` for programmatic navigation.
diff --git a/specs/004-integrate-svelte-kit/spec.md b/specs/004-integrate-svelte-kit/spec.md
new file mode 100644
index 0000000..b6b8603
--- /dev/null
+++ b/specs/004-integrate-svelte-kit/spec.md
@@ -0,0 +1,87 @@
+# Feature Specification: Integrate SvelteKit
+
+**Feature Branch**: `004-integrate-svelte-kit`
+**Created**: 2025-12-20
+**Status**: Draft
+**Input**: User description: "Integrate SvelteKit into the project"
+
+## User Scenarios & Testing *(mandatory)*
+
+### User Story 1 - Seamless Navigation (Priority: P1)
+
+As a user, I want to navigate between different parts of the application (Dashboard, Settings) using standard URL paths so that I can bookmark pages and use the browser's back/forward buttons reliably.
+
+**Why this priority**: Core application usability and standard web behavior.
+
+**Independent Test**: Can be tested by clicking navigation links and verifying the URL changes and the correct content renders without a full page reload.
+
+**Acceptance Scenarios**:
+
+1. **Given** I am on the Dashboard, **When** I click the "Settings" link, **Then** the URL changes to `/settings` and the Settings page is displayed.
+2. **Given** I am on `/settings`, **When** I refresh the page, **Then** the Settings page is still displayed (not redirected to home).
+
+---
+
+### User Story 2 - Improved Data Loading (Priority: P2)
+
+As a developer, I want to use modern data loading patterns so that data is fetched efficiently before the page renders, reducing layout shifts and loading spinners.
+
+**Why this priority**: Improves user experience and developer productivity.
+
+**Independent Test**: Can be tested by observing the page load sequence and verifying that data is available to the component immediately upon mount.
+
+**Acceptance Scenarios**:
+
+1. **Given** a page requires data from the backend, **When** the page is navigated to, **Then** the data is fetched and ready before the content is fully visible.
+
+---
+
+### User Story 3 - Unified Layout (Priority: P3)
+
+As a user, I want a consistent look and feel across all pages with a shared navigation bar and footer.
+
+**Why this priority**: Visual consistency and ease of use.
+
+**Independent Test**: Can be tested by navigating between pages and verifying that the header/footer remain static and do not re-render or flicker.
+
+**Acceptance Scenarios**:
+
+1. **Given** I am navigating between Dashboard and Settings, **When** the page changes, **Then** the top navigation bar remains visible and unchanged.
+
+---
+
+### Edge Cases
+
+- **Invalid Routes**: When a user navigates to a non-existent URL, the system should display a user-friendly 404 error page with a link back to the dashboard.
+- **API Failures during Load**: If the backend API is unavailable during a data load operation, the system should display a graceful error message or redirect to a dedicated error page.
+
+## Requirements *(mandatory)*
+
+### Functional Requirements
+
+- **FR-001**: System MUST use SvelteKit as the primary frontend framework.
+- **FR-002**: System MUST implement file-based routing for all existing pages (Dashboard, Settings).
+- **FR-003**: System MUST be deployable as a Static Single Page Application (SPA) to be served by the existing backend.
+- **FR-004**: System MUST provide a shared layout mechanism for common UI elements (header, footer).
+- **FR-005**: System MUST handle client-side navigation between routes without full page refreshes.
+- **FR-006**: System MUST integrate with the existing backend API for data retrieval.
+- **FR-007**: System MUST support data submission via existing API endpoints using standard asynchronous requests.
+
+### Key Entities *(include if feature involves data)*
+
+- **Route**: Represents a URL path and its associated page content and data requirements.
+- **Layout**: Represents a shared UI structure that wraps multiple routes.
+
+## Success Criteria *(mandatory)*
+
+### Measurable Outcomes
+
+- **SC-001**: Page transition time between Dashboard and Settings is under 200ms.
+- **SC-002**: 100% of existing frontend functionality is preserved after migration.
+- **SC-003**: Application is accessible via direct URLs (e.g., `/settings`) without manual configuration of the web server for SPA routing.
+- **SC-004**: Developer setup time for the frontend is reduced by using standard framework tooling.
+
+## Assumptions
+
+- The application will be deployed as a static site served by the Python backend (no Node.js server in production).
+- Existing API endpoints are sufficient for the frontend needs.
diff --git a/specs/004-integrate-svelte-kit/tasks.md b/specs/004-integrate-svelte-kit/tasks.md
new file mode 100644
index 0000000..51172b5
--- /dev/null
+++ b/specs/004-integrate-svelte-kit/tasks.md
@@ -0,0 +1,166 @@
+# Tasks: Integrate SvelteKit
+
+**Input**: Design documents from `/specs/004-integrate-svelte-kit/`
+**Prerequisites**: plan.md (required), spec.md (required for user stories), research.md, data-model.md, contracts/
+
+**Tests**: Tests are NOT explicitly requested in the feature specification, so no test-specific tasks are included. Verification will be done via the "Independent Test" criteria for each story.
+
+**Organization**: Tasks are grouped by user story to enable independent implementation and testing of each story.
+
+## Format: `[ID] [P?] [Story] Description`
+
+- **[P]**: Can run in parallel (different files, no dependencies)
+- **[Story]**: Which user story this task belongs to (e.g., US1, US2, US3)
+- Include exact file paths in descriptions
+
+## Path Conventions
+
+- **Web app**: `backend/src/`, `frontend/src/`
+
+---
+
+## Phase 1: Setup (Shared Infrastructure)
+
+**Purpose**: Project initialization and basic structure
+
+- [ ] T001 Initialize SvelteKit in `frontend/` directory (replacing current setup)
+- [ ] T002 Install `@sveltejs/adapter-static` in `frontend/package.json`
+- [ ] T003 [P] Configure `frontend/svelte.config.js` for static adapter and SPA fallback
+
+---
+
+## Phase 2: Foundational (Blocking Prerequisites)
+
+**Purpose**: Core infrastructure that MUST be complete before ANY user story can be implemented
+
+**⚠️ CRITICAL**: No user story work can begin until this phase is complete
+
+- [ ] T004 Create `frontend/src/routes/+layout.ts` to disable SSR and prerendering (`ssr = false`, `prerender = false`)
+- [ ] T005 Implement catch-all route in `backend/src/app.py` to serve `index.html` for SPA routing
+- [ ] T006 [P] Update `backend/src/app.py` to mount `frontend/build` directory using `StaticFiles`
+- [ ] T007 [P] Update `frontend/src/lib/api.js` to ensure compatibility with SvelteKit environment
+
+**Checkpoint**: Foundation ready - user story implementation can now begin in parallel
+
+---
+
+## Phase 3: User Story 1 - Seamless Navigation (Priority: P1) 🎯 MVP
+
+**Goal**: Navigate between Dashboard and Settings using standard URL paths so that users can bookmark pages and use browser navigation.
+
+**Independent Test**: Click navigation links and verify the URL changes and the correct content renders without a full page reload. Verify deep linking by refreshing at `/settings`.
+
+### Implementation for User Story 1
+
+- [ ] T008 [P] [US1] Create Dashboard route in `frontend/src/routes/+page.svelte` (migrating from `App.svelte`/`Dashboard.svelte`)
+- [ ] T009 [P] [US1] Create Settings route in `frontend/src/routes/settings/+page.svelte` (migrating from `Settings.svelte`)
+- [ ] T010 [US1] Implement navigation links between Dashboard and Settings in `frontend/src/routes/+page.svelte` and `frontend/src/routes/settings/+page.svelte`
+
+**Checkpoint**: At this point, User Story 1 should be fully functional and testable independently.
+
+---
+
+## Phase 4: User Story 2 - Improved Data Loading (Priority: P2)
+
+**Goal**: Use modern data loading patterns so that data is fetched efficiently before the page renders.
+
+**Independent Test**: Observe the page load sequence and verify that data is available to the component immediately upon mount via the `data` prop.
+
+### Implementation for User Story 2
+
+- [ ] T011 [P] [US2] Implement `load` function for Dashboard in `frontend/src/routes/+page.ts` to fetch plugins from `/api/plugins/`
+- [ ] T012 [P] [US2] Implement `load` function for Settings in `frontend/src/routes/settings/+page.ts` to fetch config and environments from `/api/settings/`
+- [ ] T013 [US2] Update `frontend/src/routes/+page.svelte` to use data from `load` function via `export let data;`
+- [ ] T014 [US2] Update `frontend/src/routes/settings/+page.svelte` to use data from `load` function via `export let data;`
+
+**Checkpoint**: At this point, User Stories 1 AND 2 should both work independently.
+
+---
+
+## Phase 5: User Story 3 - Unified Layout (Priority: P3)
+
+**Goal**: Consistent look and feel across all pages with a shared navigation bar and footer.
+
+**Independent Test**: Navigate between Dashboard and Settings and verify that the header/footer remain static and do not re-render or flicker.
+
+### Implementation for User Story 3
+
+- [ ] T015 [US3] Create shared layout in `frontend/src/routes/+layout.svelte` with ``
+- [ ] T016 [P] [US3] Move navigation bar component to `frontend/src/components/Navbar.svelte` and include in `+layout.svelte`
+- [ ] T017 [P] [US3] Create footer component in `frontend/src/components/Footer.svelte` and include in `+layout.svelte`
+
+**Checkpoint**: All user stories should now be independently functional.
+
+---
+
+## Phase 6: Polish & Cross-Cutting Concerns
+
+**Purpose**: Improvements that affect multiple user stories
+
+- [ ] T018 [P] Implement custom 404 error page in `frontend/src/routes/+error.svelte`
+- [ ] T019 Add graceful error handling for API failures in `load` functions (T011, T012)
+- [ ] T020 [P] Update `frontend/README.md` with new SvelteKit-based development and build instructions
+- [ ] T021 Run `specs/004-integrate-svelte-kit/quickstart.md` validation
+
+---
+
+## Dependencies & Execution Order
+
+### Phase Dependencies
+
+- **Setup (Phase 1)**: No dependencies - can start immediately
+- **Foundational (Phase 2)**: Depends on Setup completion - BLOCKS all user stories
+- **User Stories (Phase 3+)**: All depend on Foundational phase completion
+ - User stories can then proceed in parallel (if staffed)
+ - Or sequentially in priority order (P1 → P2 → P3)
+- **Polish (Final Phase)**: Depends on all desired user stories being complete
+
+### User Story Dependencies
+
+- **User Story 1 (P1)**: Can start after Foundational (Phase 2) - No dependencies on other stories
+- **User Story 2 (P2)**: Can start after Foundational (Phase 2) - Depends on US1 routes existing
+- **User Story 3 (P3)**: Can start after Foundational (Phase 2) - Can be implemented independently of US1/US2 content
+
+### Within Each User Story
+
+- Models/Data fetching before UI implementation
+- Core implementation before integration
+- Story complete before moving to next priority
+
+### Parallel Opportunities
+
+- T003 (Svelte config) can run in parallel with other setup
+- T006 (Backend mount) and T007 (API client) can run in parallel
+- T008 (Dashboard route) and T009 (Settings route) can run in parallel
+- T011 and T012 (Load functions) can run in parallel
+- T016 and T017 (Navbar/Footer components) can run in parallel
+
+---
+
+## Parallel Example: User Story 2
+
+```bash
+# Launch all load function implementations for User Story 2 together:
+Task: "Implement load function for Dashboard in frontend/src/routes/+page.ts"
+Task: "Implement load function for Settings in frontend/src/routes/settings/+page.ts"
+```
+
+---
+
+## Implementation Strategy
+
+### MVP First (User Story 1 Only)
+
+1. Complete Phase 1: Setup
+2. Complete Phase 2: Foundational (CRITICAL - blocks all stories)
+3. Complete Phase 3: User Story 1
+4. **STOP and VALIDATE**: Test User Story 1 independently (Navigation and Deep Linking)
+5. Deploy/demo if ready
+
+### Incremental Delivery
+
+1. Complete Setup + Foundational → Foundation ready
+2. Add User Story 1 → Test independently → Deploy/Demo (MVP!)
+3. Add User Story 2 → Test independently → Deploy/Demo
+4. Add User Story 3 → Test independently → Deploy/Demo
+5. Each story adds value without breaking previous stories