@edge-base/server 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/admin-build/_app/immutable/chunks/{zfauFM8P.js → BF8I5XXQ.js} +1 -1
- package/admin-build/_app/immutable/chunks/{BdrwyZv8.js → BK8YUsyH.js} +1 -1
- package/admin-build/_app/immutable/chunks/{CCKNu7m7.js → BMMOfNi6.js} +1 -1
- package/admin-build/_app/immutable/chunks/{CxCPv_Ut.js → BOjkBtym.js} +1 -1
- package/admin-build/_app/immutable/chunks/{cOYbrQxx.js → BhjcOf7X.js} +1 -1
- package/admin-build/_app/immutable/chunks/{BsokvhWC.js → Br0qug7_.js} +1 -1
- package/admin-build/_app/immutable/chunks/{B-h2afW5.js → C0LrJucL.js} +1 -1
- package/admin-build/_app/immutable/chunks/{BY92tFS2.js → CB8xN3_t.js} +1 -1
- package/admin-build/_app/immutable/chunks/{DttM2zNO.js → CLHXYVje.js} +1 -1
- package/admin-build/_app/immutable/chunks/{8wJeQ7LN.js → CY1F93Wv.js} +1 -1
- package/admin-build/_app/immutable/chunks/{BkrCkgYp.js → DOxNYcs9.js} +1 -1
- package/admin-build/_app/immutable/chunks/{w89G9Xpi.js → DYDZ2Kma.js} +1 -1
- package/admin-build/_app/immutable/chunks/{DuXuUBWN.js → Ga6XaOJm.js} +1 -1
- package/admin-build/_app/immutable/chunks/{BcR-Rdj9.js → p-WBlAu3.js} +1 -1
- package/admin-build/_app/immutable/entry/{app.CcO-Uos3.js → app.BcgNsUX3.js} +2 -2
- package/admin-build/_app/immutable/entry/start.otAJzcqZ.js +1 -0
- package/admin-build/_app/immutable/nodes/{0.CjtHKU-6.js → 0.B13aXl3s.js} +1 -1
- package/admin-build/_app/immutable/nodes/{1.DEisjlM0.js → 1.we4dgVtx.js} +1 -1
- package/admin-build/_app/immutable/nodes/{10.CvhdyWVB.js → 10.hrAvOhgI.js} +1 -1
- package/admin-build/_app/immutable/nodes/{11.DjHqcOvy.js → 11.BZM_Cbjk.js} +1 -1
- package/admin-build/_app/immutable/nodes/{12.mQLz4Mj_.js → 12.pfrTdfHj.js} +1 -1
- package/admin-build/_app/immutable/nodes/{13.CBonZZyP.js → 13.BvR9UoZX.js} +1 -1
- package/admin-build/_app/immutable/nodes/{14.d-oiZL0j.js → 14.BCE_g1DT.js} +1 -1
- package/admin-build/_app/immutable/nodes/{15.CKPQsUYF.js → 15.DZrUjo5V.js} +1 -1
- package/admin-build/_app/immutable/nodes/{16.wPzAPQGx.js → 16.B_K_CGU4.js} +1 -1
- package/admin-build/_app/immutable/nodes/{17.DayhKyEZ.js → 17.D7RlNUbd.js} +1 -1
- package/admin-build/_app/immutable/nodes/{18.DKwS0Ir0.js → 18.dw9OGxA1.js} +1 -1
- package/admin-build/_app/immutable/nodes/{19.wPzAPQGx.js → 19.B_K_CGU4.js} +1 -1
- package/admin-build/_app/immutable/nodes/{20.BvIkkkrW.js → 20.Bij6g6xR.js} +1 -1
- package/admin-build/_app/immutable/nodes/{21.DMaFhdHk.js → 21.DyYxtUDl.js} +1 -1
- package/admin-build/_app/immutable/nodes/{22.3xdgwuK1.js → 22.wLPyRbDg.js} +1 -1
- package/admin-build/_app/immutable/nodes/{23.8Bvgjbsl.js → 23.DnjIdPPl.js} +1 -1
- package/admin-build/_app/immutable/nodes/{24.DzSSzRhG.js → 24.PhJEmwPf.js} +1 -1
- package/admin-build/_app/immutable/nodes/{25.9KKYBnAE.js → 25.HUYuEeiI.js} +1 -1
- package/admin-build/_app/immutable/nodes/{26.Bhn9dfhY.js → 26.CtrQ3jI5.js} +1 -1
- package/admin-build/_app/immutable/nodes/{27.kRLiC24G.js → 27.CMM8T90I.js} +1 -1
- package/admin-build/_app/immutable/nodes/{28.BVIN1-7N.js → 28.CH6XAnHt.js} +1 -1
- package/admin-build/_app/immutable/nodes/{29.3yabZWj4.js → 29.Bos0u5_B.js} +1 -1
- package/admin-build/_app/immutable/nodes/{3.BFtSOkX7.js → 3.BPnU2jxx.js} +1 -1
- package/admin-build/_app/immutable/nodes/{30.CyCQlwaP.js → 30.ScIH1W0H.js} +1 -1
- package/admin-build/_app/immutable/nodes/{31.C4LDXjES.js → 31.CXHVAiwb.js} +1 -1
- package/admin-build/_app/immutable/nodes/{4.CvbiMlCa.js → 4.BY6Ri1gh.js} +1 -1
- package/admin-build/_app/immutable/nodes/{5.C6BLv2eM.js → 5.D0tPp_Kt.js} +1 -1
- package/admin-build/_app/immutable/nodes/{6.BcXvfl2P.js → 6.BuWVNVH1.js} +1 -1
- package/admin-build/_app/immutable/nodes/{7.CIuqhPiK.js → 7.B26-qam0.js} +1 -1
- package/admin-build/_app/immutable/nodes/{8.BQOR_JfO.js → 8.CdDKHsMK.js} +1 -1
- package/admin-build/_app/immutable/nodes/{9.NZqXQxPy.js → 9.BSo7a28L.js} +1 -1
- package/admin-build/_app/version.json +1 -1
- package/admin-build/index.html +7 -7
- package/package.json +64 -65
- package/admin-build/_app/immutable/entry/start.COebYq3I.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as Ae,g as U}from"../chunks/DoPXzH7F.js";import{p as Me,d as c,M as G,t as y,g as a,a as Ne,c as o,b as r,s as i,r as l,ae as H,u as p}from"../chunks/glwixJlP.js";import{s as E}from"../chunks/D5h5A1cc.js";import{i as k}from"../chunks/UUazaC_N.js";import{e as we,i as Ie,t as J,a as Ee,b as ke}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as Ae,g as U}from"../chunks/DoPXzH7F.js";import{p as Me,d as c,M as G,t as y,g as a,a as Ne,c as o,b as r,s as i,r as l,ae as H,u as p}from"../chunks/glwixJlP.js";import{s as E}from"../chunks/D5h5A1cc.js";import{i as k}from"../chunks/UUazaC_N.js";import{e as we,i as Ie,t as J,a as Ee,b as ke}from"../chunks/BMMOfNi6.js";import{a as m,f,t as Q}from"../chunks/BR_fL5Yv.js";import{b as Fe,a as F}from"../chunks/C6puvcoR.js";import{s as De,a as V}from"../chunks/B8vJP3wz.js";import{g as Le}from"../chunks/CB8xN3_t.js";import{b as W}from"../chunks/BOjkBtym.js";import{p as qe}from"../chunks/p-WBlAu3.js";import{s as Y,n as ee}from"../chunks/C0LrJucL.js";import{d as Be}from"../chunks/Ga6XaOJm.js";import{C as Ke,S as Pe,L as ae}from"../chunks/BhjcOf7X.js";import{B as te}from"../chunks/Cs0GwzJA.js";import{I as re}from"../chunks/DrQSgw-f.js";var Oe=f('<div class="create-error svelte-10791bh"> </div>'),ze=f('<div class="readonly-banner svelte-10791bh">Creating tables requires dev mode. Start <code class="svelte-10791bh">pnpm dev</code> to enable schema edits.</div>'),Re=f("<option> </option>"),Xe=f("<option> </option>"),Ze=f('<div class="create-page svelte-10791bh"><h2 class="create-title svelte-10791bh">Create Table</h2> <p class="create-desc svelte-10791bh">Define a new database table</p> <div class="create-form svelte-10791bh"><!> <!> <div class="create-section svelte-10791bh"><div class="create-row svelte-10791bh"><div class="create-field svelte-10791bh"><label class="create-label svelte-10791bh">Database</label> <div class="ns-select svelte-10791bh"><select class="ns-dropdown svelte-10791bh"><!><!></select> <!></div></div> <div class="create-field svelte-10791bh"><!></div></div></div> <div class="create-section svelte-10791bh"><div class="auto-fields-info svelte-10791bh">Auto-managed fields (id, createdAt, updatedAt) are automatically included.</div> <!></div> <div class="create-actions svelte-10791bh"><a><!></a> <!></div></div> <!></div>');function na(se,oe){Me(oe,!0);const le=()=>V(Be,"$devInfoStore",D),ie=()=>V(ee,"$namespaceNames",D),[D,ne]=De();let n=c(""),h=c(""),v=c(G({})),x=c(!1),d=c(""),_=p(()=>le().devMode),g=c(!1),S=c("create"),T=c(""),C=c(G({type:"string"}));const L=`create-table-namespace-${Math.random().toString(36).slice(2,9)}`;let q=p(ie);Ae(async()=>{var s;await Y.loadSchema();const e=(s=U(qe).url.searchParams.get("dbKey"))==null?void 0:s.trim(),t=U(ee);r(n,e||(t.includes("shared")?"shared":t[0]??"shared"),!0)});function de(){r(S,"create"),r(T,""),r(C,{type:"string"},!0),r(g,!0)}function ce(e,t){r(S,"edit"),r(T,e,!0),r(C,{...t},!0),r(g,!0)}function ve(e,t){r(v,{...a(v),[e]:t},!0)}function me(e){const{[e]:t,...s}=a(v);r(v,s,!0)}function ue(){const e=a(h).trim();return e?e.length>ae.TABLE_NAME_MAX?(r(d,`Table name must be ${ae.TABLE_NAME_MAX} chars or less.`),!1):/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?!0:(r(d,"Table name must start with a letter or underscore."),!1):(r(d,"Table name is required."),!1)}async function pe(){if(!a(_)){r(d,"Creating tables requires dev mode with the schema sidecar. Start `pnpm dev` and try again."),J(a(d));return}if(!ue())return;r(x,!0),r(d,"");const e=a(n).trim()||"shared",t=a(h).trim();try{await Ee.schemaMutation("schema/tables",{method:"POST",body:{dbKey:e,name:t,schema:a(v)}}),ke(`Table "${t}" created`),await Y.waitForTableReady(t,{namespace:e}),Le(`${W}/database/tables/${encodeURIComponent(t)}`)}catch(s){r(d,s instanceof Error?s.message:"Failed to create table.",!0),J(a(d))}finally{r(x,!1)}}var A=Ze(),M=i(o(A),4),B=o(M);{var be=e=>{var t=Oe(),s=o(t,!0);l(t),y(()=>E(s,a(d))),m(e,t)};k(B,e=>{a(d)&&e(be)})}var K=i(B,2);{var fe=e=>{var t=ze();m(e,t)};k(K,e=>{a(_)||e(fe)})}var N=i(K,2),P=o(N),w=o(P),O=o(w),z=i(O,2),b=o(z),R=o(b);we(R,17,()=>a(q),Ie,(e,t)=>{var s=Re(),u=o(s,!0);l(s);var j={};y(()=>{E(u,a(t)),j!==(j=a(t))&&(s.value=(s.__value=a(t))??"")}),m(e,s)});var he=i(R);{var _e=e=>{var t=Xe(),s=o(t);l(t);var u={};y(()=>{E(s,`${a(n)??""} (new)`),u!==(u=a(n))&&(t.value=(t.__value=a(n))??"")}),m(e,t)},ge=p(()=>!a(q).includes(a(n))&&a(n)!=="default");k(he,e=>{a(ge)&&e(_e)})}l(b);var $e=i(b,2);re($e,{label:"Choose or create a database",placeholder:"Type a new database name...",get value(){return a(n)},set value(e){r(n,e,!0)}}),l(z),l(w);var X=i(w,2),ye=o(X);re(ye,{label:"Table Name",placeholder:"my_table",get value(){return a(h)},set value(e){r(h,e,!0)}}),l(X),l(P),l(N);var I=i(N,2),xe=i(o(I),2);{let e=p(()=>!a(_));Ke(xe,{get fields(){return a(v)},get readonly(){return a(e)},onaddclick:de,oneditclick:ce,ondeleteclick:me})}l(I);var Z=i(I,2),$=o(Z),Se=o($);te(Se,{variant:"secondary",children:(e,t)=>{H();var s=Q("Cancel");m(e,s)},$$slots:{default:!0}}),l($);var Te=i($,2);{let e=p(()=>!a(_));te(Te,{variant:"primary",get loading(){return a(x)},get disabled(){return a(e)},onclick:pe,children:(t,s)=>{H();var u=Q("Create Table");m(t,u)},$$slots:{default:!0}})}l(Z),l(M);var Ce=i(M,2);{let e=p(()=>Object.keys(a(v)));Pe(Ce,{get mode(){return a(S)},get columnName(){return a(T)},get field(){return a(C)},get existingColumns(){return a(e)},onsave:ve,get open(){return a(g)},set open(t){r(g,t,!0)}})}l(A),y(()=>{F(O,"for",L),F(b,"id",L),F($,"href",`${W??""}/database/tables`)}),Fe(b,()=>a(n),e=>r(n,e)),m(se,A),Ne(),ne()}export{na as component};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as y}from"../chunks/DoPXzH7F.js";import{p as b,a as O,b as d,c as g,g as o,s as T,r as v,t as I,d as A}from"../chunks/glwixJlP.js";import{s as P}from"../chunks/D5h5A1cc.js";import{i as _}from"../chunks/UUazaC_N.js";import{a as l,f as h}from"../chunks/BR_fL5Yv.js";import{a as q}from"../chunks/C6puvcoR.js";import{P as x}from"../chunks/CwROoZK0.js";import{g as N}from"../chunks/Q2nPFxS6.js";import{b as D,A as G}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as y}from"../chunks/DoPXzH7F.js";import{p as b,a as O,b as d,c as g,g as o,s as T,r as v,t as I,d as A}from"../chunks/glwixJlP.js";import{s as P}from"../chunks/D5h5A1cc.js";import{i as _}from"../chunks/UUazaC_N.js";import{a as l,f as h}from"../chunks/BR_fL5Yv.js";import{a as q}from"../chunks/C6puvcoR.js";import{P as x}from"../chunks/CwROoZK0.js";import{g as N}from"../chunks/Q2nPFxS6.js";import{b as D,A as G}from"../chunks/Br0qug7_.js";function H(s){return s.replace(/<\/script/gi,"<\\/script")}function U(s,f,a){const n=H(s);return`<!DOCTYPE html>
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as He}from"../chunks/DoPXzH7F.js";import{p as Oe,d as y,M as he,a as De,b as n,c as s,s as r,r as t,g as e,t as w,f as ge,ae as Fe,ag as xe}from"../chunks/glwixJlP.js";import{d as Ie,s as d,a as Ne}from"../chunks/D5h5A1cc.js";import{i as z}from"../chunks/UUazaC_N.js";import{a as Pe,t as ve,e as te,i as se}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as He}from"../chunks/DoPXzH7F.js";import{p as Oe,d as y,M as he,a as De,b as n,c as s,s as r,r as t,g as e,t as w,f as ge,ae as Fe,ag as xe}from"../chunks/glwixJlP.js";import{d as Ie,s as d,a as Ne}from"../chunks/D5h5A1cc.js";import{i as z}from"../chunks/UUazaC_N.js";import{a as Pe,t as ve,e as te,i as se}from"../chunks/BMMOfNi6.js";import{a as f,c as Be,t as je,f as _}from"../chunks/BR_fL5Yv.js";import{a as ae,b as Ce,s as ce}from"../chunks/C6puvcoR.js";import{b as ye}from"../chunks/NuUjtcO2.js";import{P as Je}from"../chunks/CwROoZK0.js";import{f as Me}from"../chunks/Q2nPFxS6.js";import{B as Ae}from"../chunks/Cs0GwzJA.js";import{E as Ge}from"../chunks/DnyL7Zq-.js";var Re=_('<div class="fn-empty svelte-1gs6rhm">Loading...</div>'),Ke=_('<div class="fn-empty svelte-1gs6rhm">No functions registered</div>'),Ve=_('<span class="fn-method-badge svelte-1gs6rhm"> </span>'),ze=_('<button><span class="fn-item__path svelte-1gs6rhm"> </span> <div class="fn-item__meta svelte-1gs6rhm"><!> <span class="fn-type-badge svelte-1gs6rhm"> </span></div></button>'),Le=_("<option> </option>"),Ue=_('<div class="fn-field svelte-1gs6rhm"><label class="fn-label svelte-1gs6rhm">Request Body (JSON)</label> <textarea class="fn-textarea svelte-1gs6rhm" rows="6" spellcheck="false"></textarea></div>'),Xe=_('<div class="fn-response svelte-1gs6rhm"><div class="fn-response__header svelte-1gs6rhm"><span> </span> <span class="fn-time svelte-1gs6rhm"> </span></div> <pre class="fn-response__body svelte-1gs6rhm"> </pre></div>'),Qe=_('<div class="fn-history__item svelte-1gs6rhm"><span class="fn-history__method svelte-1gs6rhm"> </span> <span class="fn-history__path svelte-1gs6rhm"> </span> <span> </span> <span class="fn-history__time svelte-1gs6rhm"> </span></div>'),We=_('<div class="fn-history svelte-1gs6rhm"><span class="fn-history__title svelte-1gs6rhm">Recent Executions</span> <!></div>'),Ye=_('<div class="fn-exec svelte-1gs6rhm"><div class="fn-exec__header svelte-1gs6rhm"><code class="fn-path svelte-1gs6rhm"> </code></div> <div class="fn-exec__controls svelte-1gs6rhm"><select class="fn-select svelte-1gs6rhm"></select> <!></div> <!> <div class="fn-field svelte-1gs6rhm"><label class="fn-label svelte-1gs6rhm">Custom Headers (one per line: Key: Value)</label> <textarea class="fn-textarea fn-textarea--sm svelte-1gs6rhm" rows="3" spellcheck="false" placeholder="X-Custom: value"></textarea></div></div> <!> <!>',1),Ze=_('<div class="fn-layout svelte-1gs6rhm"><div class="fn-sidebar svelte-1gs6rhm"><div class="fn-sidebar__header svelte-1gs6rhm"><span class="fn-sidebar__title svelte-1gs6rhm">Functions</span> <span class="fn-sidebar__count svelte-1gs6rhm"> </span></div> <!></div> <div class="fn-main svelte-1gs6rhm"><!></div></div>');function mt(be,Ee){Oe(Ee,!0);let P=y(he([])),de=y(!0),b=y(null),h=y("POST"),H=y("{}"),L=y(""),B=y(!1);const fe=`function-request-body-${Math.random().toString(36).slice(2,9)}`,me=`function-request-headers-${Math.random().toString(36).slice(2,9)}`;let c=y(null),U=y(he([]));He(async()=>{try{const m=await Pe.fetch("data/functions");n(P,m.functions??[],!0)}catch(m){ve(m instanceof Error?m.message:"Failed to load functions"),n(P,[],!0)}finally{n(de,!1)}});function Se(m){n(b,m,!0),n(h,m.methods[0]||"POST",!0),n(H,e(h)==="GET"?"":"{}",!0),n(c,null)}async function $e(){if(!e(b))return;n(B,!0),n(c,null);const m=Date.now();try{const j=`/api/functions/${e(b).path}`,E={"Content-Type":"application/json"};if(e(L).trim())for(const T of e(L).split(`
|
|
2
2
|
`)){const g=T.trim();if(!g)continue;const D=g.indexOf(":");if(D===-1){ve(`Invalid header format: "${g}". Use "Key: Value" format.`),n(B,!1);return}const Q=g.slice(0,D).trim(),re=g.slice(D+1).trim();Q&&(E[Q]=re)}const O={method:e(h),headers:E};if(e(h)!=="GET"&&e(h)!=="HEAD"&&e(H).trim()){try{JSON.parse(e(H))}catch{ve('Invalid JSON in request body. Example: {"key": "value"}'),n(B,!1);return}O.body=e(H)}const p=await fetch(j,O),C=Date.now()-m;let J;if((p.headers.get("content-type")||"").includes("json")){const T=await p.json();J=JSON.stringify(T,null,2)}else J=await p.text();const X={};p.headers.forEach((T,g)=>{X[g]=T}),n(c,{status:p.status,statusText:p.statusText,body:J,time:C,headers:X},!0),n(U,[{fn:e(b).path,method:e(h),status:p.status,time:C,timestamp:new Date().toISOString()},...e(U).slice(0,19)],!0)}catch(j){const E=Date.now()-m;n(c,{status:0,statusText:"Network Error",body:j instanceof Error?j.message:"Request failed",time:E,headers:{}},!0)}finally{n(B,!1)}}Je(be,{title:"Functions",description:"Execute and test your App Functions",get docsHref(){return Me},children:(m,j)=>{var E=Ze(),O=s(E),p=s(O),C=r(s(p),2),J=s(C,!0);t(C),t(p);var ue=r(p,2);{var X=o=>{var x=Re();f(o,x)},T=o=>{var x=Ke();f(o,x)},g=o=>{var x=Be(),M=ge(x);te(M,17,()=>e(P),se,(A,S)=>{var q=ze();let F;var $=s(q),ne=s($);t($);var G=r($,2),W=s(G);te(W,17,()=>e(S).methods,se,(k,Z)=>{var K=Ve(),oe=s(K,!0);t(K),w(()=>d(oe,e(Z))),f(k,K)});var R=r(W,2),Y=s(R,!0);t(R),t(G),t(q),w(()=>{var k;F=ce(q,1,"fn-item svelte-1gs6rhm",null,F,{"fn-item--active":((k=e(b))==null?void 0:k.path)===e(S).path}),d(ne,`/${e(S).path??""}`),d(Y,e(S).type)}),Ne("click",q,()=>Se(e(S))),f(A,q)}),f(o,x)};z(ue,o=>{e(de)?o(X):e(P).length===0?o(T,1):o(g,!1)})}t(O);var D=r(O,2),Q=s(D);{var re=o=>{Ge(o,{title:"Select a function",description:"Choose a function from the list to execute it."})},ke=o=>{var x=Ye(),M=ge(x),A=s(M),S=s(A),q=s(S);t(S),t(A);var F=r(A,2),$=s(F);te($,21,()=>e(b).methods,se,(a,l)=>{var i=Le(),u=s(i,!0);t(i);var v={};w(()=>{d(u,e(l)),v!==(v=e(l))&&(i.value=(i.__value=e(l))??"")}),f(a,i)}),t($);var ne=r($,2);Ae(ne,{variant:"primary",size:"sm",onclick:$e,get loading(){return e(B)},children:(a,l)=>{Fe();var i=je("Execute");f(a,i)},$$slots:{default:!0}}),t(F);var G=r(F,2);{var W=a=>{var l=Ue(),i=s(l),u=r(i,2);xe(u),t(l),w(()=>{ae(i,"for",fe),ae(u,"id",fe)}),ye(u,()=>e(H),v=>n(H,v)),f(a,l)};z(G,a=>{e(h)!=="GET"&&e(h)!=="HEAD"&&a(W)})}var R=r(G,2),Y=s(R),k=r(Y,2);xe(k),t(R),t(M);var Z=r(M,2);{var K=a=>{var l=Xe(),i=s(l),u=s(i);let v;var V=s(u);t(u);var I=r(u,2),le=s(I);t(I),t(i);var N=r(i,2),ie=s(N,!0);t(N),t(l),w(()=>{v=ce(u,1,"fn-status svelte-1gs6rhm",null,v,{"fn-status--ok":e(c).status>=200&&e(c).status<300,"fn-status--err":e(c).status>=400||e(c).status===0}),d(V,`${e(c).status??""} ${e(c).statusText??""}`),d(le,`${e(c).time??""}ms`),d(ie,e(c).body)}),f(a,l)};z(Z,a=>{e(c)&&a(K)})}var oe=r(Z,2);{var we=a=>{var l=We(),i=r(s(l),2);te(i,17,()=>e(U),se,(u,v)=>{var V=Qe(),I=s(V),le=s(I,!0);t(I);var N=r(I,2),ie=s(N);t(N);var ee=r(N,2);let pe;var Te=s(ee,!0);t(ee);var _e=r(ee,2),qe=s(_e);t(_e),t(V),w(()=>{d(le,e(v).method),d(ie,`/${e(v).fn??""}`),pe=ce(ee,1,"fn-history__status svelte-1gs6rhm",null,pe,{"fn-status--ok":e(v).status>=200&&e(v).status<300,"fn-status--err":e(v).status>=400}),d(Te,e(v).status),d(qe,`${e(v).time??""}ms`)}),f(u,V)}),t(l),f(a,l)};z(oe,a=>{e(U).length>0&&a(we)})}w(()=>{d(q,`/api/functions/${e(b).path??""}`),ae(Y,"for",me),ae(k,"id",me)}),Ce($,()=>e(h),a=>n(h,a)),ye(k,()=>e(L),a=>n(L,a)),f(o,x)};z(Q,o=>{e(b)?o(ke,!1):o(re)})}t(D),t(E),w(()=>d(J,e(P).length)),f(m,E)}}),De()}Ie(["click"]);export{mt as component};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{p as Ee,w as Z,g as e,b as d,t as f,a as Le,d as b,u as z,c as s,s as v,r as o,f as ee,ae as H}from"../chunks/glwixJlP.js";import{s as g,e as Ie}from"../chunks/D5h5A1cc.js";import{a as i,f as m,t as _}from"../chunks/BR_fL5Yv.js";import{i as p}from"../chunks/UUazaC_N.js";import{a as Pe}from"../chunks/C6puvcoR.js";import{a as te,s as Ae}from"../chunks/B8vJP3wz.js";import{g as ke}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{p as Ee,w as Z,g as e,b as d,t as f,a as Le,d as b,u as z,c as s,s as v,r as o,f as ee,ae as H}from"../chunks/glwixJlP.js";import{s as g,e as Ie}from"../chunks/D5h5A1cc.js";import{a as i,f as m,t as _}from"../chunks/BR_fL5Yv.js";import{i as p}from"../chunks/UUazaC_N.js";import{a as Pe}from"../chunks/C6puvcoR.js";import{a as te,s as Ae}from"../chunks/B8vJP3wz.js";import{g as ke}from"../chunks/CB8xN3_t.js";import{p as Be}from"../chunks/p-WBlAu3.js";import{b as De}from"../chunks/BOjkBtym.js";import{a as K}from"../chunks/Br0qug7_.js";import{f as Re,g as Te}from"../chunks/DOxNYcs9.js";import{B as ae}from"../chunks/Cs0GwzJA.js";import{I as re}from"../chunks/DrQSgw-f.js";var je=m('<div class="login-error svelte-1x05zx6"><p class="login-error__msg svelte-1x05zx6"> </p> <p class="login-error__hint svelte-1x05zx6">If this should be a fresh setup, the UI is not currently connected to the new server instance.</p></div> <!>',1),Me=m(`<div class="setup-notice svelte-1x05zx6"><div class="setup-notice__icon svelte-1x05zx6">🚀</div> <div class="setup-notice__text svelte-1x05zx6"><strong class="svelte-1x05zx6">Welcome!</strong> This is your first time setting up EdgeBase.
|
|
2
2
|
Enter your email and a password below to create the admin account.</div></div>`),Ue=m('<p class="login-error__hint svelte-1x05zx6">Admin password recovery is handled through the CLI. Use the recovery command shown below instead of email reset.</p>'),qe=m('<div class="login-error svelte-1x05zx6"><p class="login-error__msg svelte-1x05zx6"> </p> <!></div>'),Fe=m('<span class="login-hint svelte-1x05zx6">This will be your admin login password.</span>'),He=m('<div class="login-recovery svelte-1x05zx6"><p class="login-recovery__title svelte-1x05zx6">Forgot password?</p> <code class="login-recovery__code svelte-1x05zx6"> </code> <p class="login-recovery__hint svelte-1x05zx6"><!></p></div>'),Ke=m('<!> <form class="login-form svelte-1x05zx6"><!> <div class="login-field svelte-1x05zx6"><label class="login-label svelte-1x05zx6" for="email"> </label> <!></div> <div class="login-field svelte-1x05zx6"><label class="login-label svelte-1x05zx6" for="password"> </label> <!> <!></div> <!> <!></form>',1),Oe=m('<div class="login-page svelte-1x05zx6"><div class="login-card svelte-1x05zx6"><div class="login-header svelte-1x05zx6"><img class="login-logo svelte-1x05zx6" alt="EdgeBase logo"/> <h1 class="login-title svelte-1x05zx6">EdgeBase</h1> <p class="login-subtitle svelte-1x05zx6"><!></p></div> <!></div></div>');function ot(se,oe){Ee(oe,!0);const O=()=>te(Be,"$page",W),le=()=>te(K,"$authStore",W),[W,ie]=Ae();let S=b(""),x=b(""),u=b(""),k=b(!1),r=b(null),h=b("");function ne(t){return t.hostname==="localhost"||t.hostname==="127.0.0.1"}const ve=z(()=>Te(O().url)),G=z(()=>ne(O().url)),de=z(()=>e(G)?"npx edgebase admin reset-password --local":"npx edgebase admin reset-password"),ce=z(()=>(e(u).toLowerCase().includes("invalid")||e(u).toLowerCase().includes("credentials"))&&e(r)===!1);Z(()=>{le().accessToken&&ke(e(ve),{replaceState:!0})}),Z(()=>{J()});async function J(){d(h,""),d(r,null);try{const t=await Re();d(r,t.needsSetup,!0)}catch{d(h,"Could not reach the admin server. Make sure the fresh dev server is still running, then retry.")}}async function ue(t){if(t.preventDefault(),e(r)===null){d(u,e(h)||"Setup status is still loading.",!0);return}if(!e(S)||!e(x)){d(u,"Email and password are required.");return}if(e(r)&&e(x).length<8){d(u,"Password must be at least 8 characters.");return}d(u,""),d(k,!0);try{e(r)?await K.setup(e(S),e(x)):await K.login(e(S),e(x))}catch(l){d(u,l instanceof Error?l.message:"Authentication failed.",!0)}finally{d(k,!1)}}var B=Oe(),N=s(B),D=s(N),Q=s(D),V=v(Q,4),pe=s(V);{var me=t=>{var l=_();f(()=>g(l,e(h)?"Admin server unavailable":"Loading...")),i(t,l)},fe=t=>{var l=_("Create your admin account");i(t,l)},ge=t=>{var l=_("Sign in to Admin Dashboard");i(t,l)};p(pe,t=>{e(r)===null?t(me):e(r)?t(fe,1):t(ge,!1)})}o(V),o(D);var _e=v(D,2);{var xe=t=>{var l=je(),w=ee(l),L=s(w),C=s(L,!0);o(L),H(2),o(w);var I=v(w,2);ae(I,{type:"button",variant:"secondary",onclick:()=>void J(),children:(R,P)=>{H();var $=_("Retry Connection");i(R,$)},$$slots:{default:!0}}),f(()=>g(C,e(h))),i(t,l)},he=t=>{var l=Ke(),w=ee(l);{var L=a=>{var n=Me();i(a,n)};p(w,a=>{e(r)&&a(L)})}var C=v(w,2),I=s(C);{var R=a=>{var n=qe(),c=s(n),M=s(c,!0);o(c);var A=v(c,2);{var U=E=>{var q=Ue();i(E,q)};p(A,E=>{e(ce)&&E(U)})}o(n),f(()=>g(M,e(u))),i(a,n)};p(I,a=>{e(u)&&a(R)})}var P=v(I,2),$=s(P),we=s($,!0);o($);var ye=v($,2);re(ye,{id:"email",type:"email",placeholder:"admin@example.com",autocomplete:"email",get value(){return e(S)},set value(a){d(S,a,!0)}}),o(P);var T=v(P,2),j=s(T),be=s(j,!0);o(j);var X=v(j,2);{let a=z(()=>e(r)?"Min 8 characters":"Enter your password"),n=z(()=>e(r)?"new-password":"current-password");re(X,{id:"password",type:"password",get placeholder(){return e(a)},get autocomplete(){return e(n)},get value(){return e(x)},set value(c){d(x,c,!0)}})}var ze=v(X,2);{var Se=a=>{var n=Fe();i(a,n)};p(ze,a=>{e(r)&&a(Se)})}o(T);var Y=v(T,2);ae(Y,{type:"submit",variant:"primary",get loading(){return e(k)},children:(a,n)=>{H();var c=_();f(()=>g(c,e(r)?"Create Admin Account":"Sign In")),i(a,c)},$$slots:{default:!0}});var Ce=v(Y,2);{var $e=a=>{var n=He(),c=v(s(n),2),M=s(c,!0);o(c);var A=v(c,2),U=s(A);{var E=y=>{var F=_("Run this in your project folder. `--local` updates the local D1 admin account used by the dev server.");i(y,F)},q=y=>{var F=_("Run this in your project folder. The CLI will use your configured Service Key or Cloudflare access for recovery.");i(y,F)};p(U,y=>{e(G)?y(E):y(q,!1)})}o(A),o(n),f(()=>g(M,e(de))),i(a,n)};p(Ce,a=>{e(r)||a($e)})}o(C),f(()=>{g(we,e(r)?"Admin Email":"Email"),g(be,e(r)?"Choose Password":"Password")}),Ie("submit",C,ue),i(t,l)};p(_e,t=>{e(h)?t(xe):e(r)!==null&&t(he,1)})}o(N),o(B),f(()=>Pe(Q,"src",`${De}/favicon.svg`)),i(se,B),Le(),ie()}export{ot as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as Ye}from"../chunks/DoPXzH7F.js";import{p as Ze,d as f,M as ye,a as et,g as e,f as ce,c as u,b as l,s as o,r as n,ae as G,t as O,u as X}from"../chunks/glwixJlP.js";import{d as tt,s as C,a as Le}from"../chunks/D5h5A1cc.js";import{i as y}from"../chunks/UUazaC_N.js";import{e as ke,i as Ce,a as rt,t as at,b as Ie}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as Ye}from"../chunks/DoPXzH7F.js";import{p as Ze,d as f,M as ye,a as et,g as e,f as ce,c as u,b as l,s as o,r as n,ae as G,t as O,u as X}from"../chunks/glwixJlP.js";import{d as tt,s as C,a as Le}from"../chunks/D5h5A1cc.js";import{i as y}from"../chunks/UUazaC_N.js";import{e as ke,i as Ce,a as rt,t as at,b as Ie}from"../chunks/BMMOfNi6.js";import{t as Y,a as i,f as d}from"../chunks/BR_fL5Yv.js";import{s as Z}from"../chunks/C6puvcoR.js";import{d as Ne}from"../chunks/wJsUhbfZ.js";import{g as st}from"../chunks/Ce-ngf4p.js";import{P as lt}from"../chunks/CwROoZK0.js";import{a as ot}from"../chunks/Q2nPFxS6.js";import{B as ee}from"../chunks/Cs0GwzJA.js";import{I as Oe}from"../chunks/DrQSgw-f.js";import{S as pe}from"../chunks/BF8I5XXQ.js";import{E as nt}from"../chunks/DnyL7Zq-.js";import{S as fe}from"../chunks/BK8YUsyH.js";var it=d('<span class="log-counter log-counter--error svelte-1lsf4ps"> </span>'),vt=d("<!> <!>",1),ut=d('<span class="live-dot svelte-1lsf4ps"></span>'),ct=d('<div class="log-actions svelte-1lsf4ps"><div class="log-counters svelte-1lsf4ps"><span class="log-counter svelte-1lsf4ps"> </span> <!></div> <!> <button><!> </button></div>'),pt=d('<div class="log-skeleton__row svelte-1lsf4ps"><!> <!> <!></div>'),ft=d('<div class="log-skeleton svelte-1lsf4ps"></div>'),dt=d("<span> </span>"),gt=d('<span class="log-entry__service svelte-1lsf4ps"> </span>'),mt=d('<span class="log-entry__time svelte-1lsf4ps"> </span>'),_t=d('<pre class="log-entry__detail svelte-1lsf4ps"> </pre>'),ht=d('<button type="button"><div class="log-entry__header svelte-1lsf4ps"><span><svg width="12" height="12" viewBox="0 0 12 12" fill="none" class="svelte-1lsf4ps"><path d="M4.5 3L7.5 6L4.5 9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-1lsf4ps"></path></svg></span> <!> <!> <!> <span class="log-entry__summary svelte-1lsf4ps"> </span></div> <!></button>'),bt=d('<div class="pagination svelte-1lsf4ps"><!></div>'),St=d('<div class="log-list svelte-1lsf4ps"></div> <!>',1),xt=d('<div class="controls svelte-1lsf4ps"><div class="controls__fields svelte-1lsf4ps"><!> <!> <!> <!> <!></div> <div class="controls__actions svelte-1lsf4ps"><!></div></div> <!>',1);function jt(Pe,De){Ze(De,!0);let te=f(!0),g=f(ye([])),E=f(null),re=f(!1),B=f("log:"),ae=f("50"),F=f("all"),J=f("all"),z=f(""),q=f(ye(new Set)),I=f(!1),P=f(null),de=f(0),se=f(0);const Ue=[{value:"20",label:"20"},{value:"50",label:"50"},{value:"100",label:"100"}],Ee=[{value:"all",label:"All Levels"},{value:"info",label:"Info"},{value:"warn",label:"Warning (3xx/4xx)"},{value:"error",label:"Error (5xx)"},{value:"debug",label:"Debug"}],Ve=[{value:"all",label:"All Services"},{value:"auth",label:"Auth"},{value:"db",label:"Database"},{value:"storage",label:"Storage"},{value:"databaseLive",label:"Live"},{value:"push",label:"Push"},{value:"room",label:"Rooms"},{value:"function",label:"Functions"},{value:"kv",label:"KV"},{value:"sql",label:"SQL"},{value:"d1",label:"D1"},{value:"vectorize",label:"Vectorize"},{value:"users",label:"Users API"},{value:"admin",label:"Admin"},{value:"health",label:"Health"}];async function V(t=!1){t?l(re,!0):(l(te,!0),l(q,new Set,!0));try{let r=`data/logs?limit=${encodeURIComponent(e(ae))}`;e(B).trim()&&(r+=`&prefix=${encodeURIComponent(e(B).trim())}`),e(F)!=="all"&&(r+=`&level=${encodeURIComponent(e(F))}`),e(J)!=="all"&&(r+=`&category=${encodeURIComponent(e(J))}`),e(z).trim()&&(r+=`&path=${encodeURIComponent(e(z).trim())}`),t&&e(E)&&(r+=`&cursor=${encodeURIComponent(e(E))}`);const s=await rt.fetch(r);t?l(g,[...e(g),...s.logs],!0):l(g,s.logs,!0),l(E,s.cursor,!0),l(de,e(g).length,!0),l(se,e(g).filter(h=>{const p=ge(h);return p==="error"||p==="fatal"||p==="critical"}).length,!0)}catch(r){at(r instanceof Error?r.message:"Failed to load logs")}finally{l(te,!1),l(re,!1)}}function Ae(){l(E,null),V()}function Me(t){const r=new Set(e(q));r.has(t)?r.delete(t):r.add(t),l(q,r,!0)}function Re(){l(I,!e(I)),e(I)?(V(),l(P,setInterval(()=>{V()},2e3),!0)):e(P)&&(clearInterval(e(P)),l(P,null))}function je(t){const r=String(t.method??""),s=String(t.path??t.url??""),h=me(t),p=typeof t.duration=="number"?t.duration:Number(t.duration??0);if(r&&s){const L=[`${r.toUpperCase()} ${s}`];return h>0&&L.push(String(h)),p>0&&L.push(`${Math.round(p)}ms`),L.join(" · ")}if(typeof t.message=="string")return t.message;if(typeof t.msg=="string")return t.msg;if(typeof t.level=="string"&&typeof t.timestamp=="string")return`[${t.level}] ${t.timestamp}`;const x=Object.keys(t);return x.length===0?"(empty)":x.slice(0,3).join(", ")+(x.length>3?"...":"")}function ge(t){const r=t.level??t.severity??"";if(r)return String(r).toLowerCase();const s=me(t);return s>=500?"error":s>=400||s>=300?"warn":s>=200?"info":s>0?"debug":""}function me(t){if(typeof t.status=="number")return t.status;if(typeof t.status=="string"){const r=Number.parseInt(t.status,10);return Number.isFinite(r)?r:0}return 0}function Be(t){const r=t.timestamp??t.time??t.ts??t.date??"";if(!r)return"";try{const s=typeof r=="number"?new Date(r):/^\d+$/.test(String(r))?new Date(Number(r)):new Date(String(r));return Number.isNaN(s.getTime())?"":s.toLocaleString()}catch{return String(r)}}function Fe(t){try{return JSON.stringify(t,null,2)}catch{return String(t)}}function Je(t){switch(t){case"error":case"fatal":case"critical":return"level--error";case"warn":case"warning":return"level--warn";case"info":return"level--info";case"debug":case"trace":return"level--debug";default:return""}}function ze(){if(e(g).length===0)return;const t=Object.keys(e(g)[0]),r=st(t,e(g)),s=new Blob([r],{type:"text/csv"});Ne(s,`logs-${new Date().toISOString().slice(0,10)}.csv`),Ie("Logs exported as CSV")}function qe(){if(e(g).length===0)return;const t=new Blob([JSON.stringify(e(g),null,2)],{type:"application/json"});Ne(t,`logs-${new Date().toISOString().slice(0,10)}.json`),Ie("Logs exported as JSON")}Ye(()=>(V(),()=>{e(P)&&clearInterval(e(P))})),lt(Pe,{title:"Logs",description:"View request logs and analytics",get docsHref(){return ot},actions:r=>{var s=ct(),h=u(s),p=u(h),x=u(p);n(p);var L=o(p,2);{var H=m=>{var S=it(),a=u(S);n(S),O(()=>C(a,`${e(se)??""} server errors`)),i(m,S)};y(L,m=>{e(se)>0&&m(H)})}n(h);var A=o(h,2);{var T=m=>{var S=vt(),a=ce(S);ee(a,{variant:"secondary",size:"sm",onclick:ze,children:(b,Q)=>{G();var w=Y("Export CSV");i(b,w)},$$slots:{default:!0}});var $=o(a,2);ee($,{variant:"secondary",size:"sm",onclick:qe,children:(b,Q)=>{G();var w=Y("Export JSON");i(b,w)},$$slots:{default:!0}}),i(m,S)};y(A,m=>{e(g).length>0&&m(T)})}var D=o(A,2);let M;var K=u(D);{var le=m=>{var S=ut();i(m,S)};y(K,m=>{e(I)&&m(le)})}var oe=o(K);n(D),n(s),O(()=>{C(x,`${e(de)??""} total`),M=Z(D,1,"live-btn svelte-1lsf4ps",null,M,{"live-btn--active":e(I)}),C(oe,` ${e(I)?"Live":"Paused"}`)}),Le("click",D,Re),i(r,s)},children:(r,s)=>{var h=xt(),p=ce(h),x=u(p),L=u(x);Oe(L,{label:"Prefix filter",placeholder:"log:",get value(){return e(B)},set value(a){l(B,a,!0)}});var H=o(L,2);pe(H,{label:"Level",get options(){return Ee},get value(){return e(F)},set value(a){l(F,a,!0)}});var A=o(H,2);pe(A,{label:"Service",get options(){return Ve},get value(){return e(J)},set value(a){l(J,a,!0)}});var T=o(A,2);Oe(T,{label:"Search logs",placeholder:"/api/...",get value(){return e(z)},set value(a){l(z,a,!0)}});var D=o(T,2);pe(D,{label:"Limit",get options(){return Ue},get value(){return e(ae)},set value(a){l(ae,a,!0)}}),n(x);var M=o(x,2),K=u(M);ee(K,{variant:"primary",onclick:Ae,children:(a,$)=>{G();var b=Y("Search");i(a,b)},$$slots:{default:!0}}),n(M),n(p);var le=o(p,2);{var oe=a=>{var $=ft();ke($,20,()=>Array(10),Ce,(b,Q)=>{var w=pt(),k=u(w);fe(k,{width:"60px",height:"20px"});var _=o(k,2);fe(_,{width:"120px",height:"14px"});var U=o(_,2);fe(U,{height:"14px"}),n(w),i(b,w)}),n($),i(a,$)},m=a=>{nt(a,{title:"No logs found",description:"No log entries match the current filter."})},S=a=>{var $=St(),b=ce($);ke(b,21,()=>e(g),Ce,(k,_,U)=>{const R=X(()=>ge(e(_))),ne=X(()=>Be(e(_))),W=X(()=>String(e(_).category??"")),ie=X(()=>e(q).has(U));var j=ht();let _e;var ve=u(j),he=u(ve);let be;var Se=o(he,2);{var He=v=>{var c=dt(),N=u(c,!0);n(c),O((ue,Xe)=>{Z(c,1,`log-entry__level ${ue??""}`,"svelte-1lsf4ps"),C(N,Xe)},[()=>Je(e(R)),()=>e(R).toUpperCase()]),i(v,c)};y(Se,v=>{e(R)&&v(He)})}var xe=o(Se,2);{var Te=v=>{var c=gt(),N=u(c,!0);n(c),O(()=>C(N,e(W))),i(v,c)};y(xe,v=>{e(W)&&v(Te)})}var $e=o(xe,2);{var Ke=v=>{var c=mt(),N=u(c,!0);n(c),O(()=>C(N,e(ne))),i(v,c)};y($e,v=>{e(ne)&&v(Ke)})}var we=o($e,2),Qe=u(we,!0);n(we),n(ve);var We=o(ve,2);{var Ge=v=>{var c=_t(),N=u(c,!0);n(c),O(ue=>C(N,ue),[()=>Fe(e(_))]),i(v,c)};y(We,v=>{e(ie)&&v(Ge)})}n(j),O(v=>{_e=Z(j,1,"log-entry svelte-1lsf4ps",null,_e,{"log-entry--expanded":e(ie)}),be=Z(he,1,"log-entry__chevron svelte-1lsf4ps",null,be,{"log-entry__chevron--open":e(ie)}),C(Qe,v)},[()=>je(e(_))]),Le("click",j,()=>Me(U)),i(k,j)}),n(b);var Q=o(b,2);{var w=k=>{var _=bt(),U=u(_);ee(U,{variant:"secondary",get loading(){return e(re)},onclick:()=>V(!0),children:(R,ne)=>{G();var W=Y("Load More");i(R,W)},$$slots:{default:!0}}),n(_),i(k,_)};y(Q,k=>{e(E)&&!e(I)&&k(w)})}i(a,$)};y(le,a=>{e(te)?a(oe):e(g).length===0?a(m,1):a(S,!1)})}i(r,h)}}),et()}tt(["click"]);export{jt as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as Z}from"../chunks/DoPXzH7F.js";import{p as $,a as ee,g as e,f as z,r as t,s as c,b as j,d as B,c as a,t as R,u as te}from"../chunks/glwixJlP.js";import{d as ae,s as g,a as se}from"../chunks/D5h5A1cc.js";import{i as E}from"../chunks/UUazaC_N.js";import{e as G,a as le,t as re}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as Z}from"../chunks/DoPXzH7F.js";import{p as $,a as ee,g as e,f as z,r as t,s as c,b as j,d as B,c as a,t as R,u as te}from"../chunks/glwixJlP.js";import{d as ae,s as g,a as se}from"../chunks/D5h5A1cc.js";import{i as E}from"../chunks/UUazaC_N.js";import{e as G,a as le,t as re}from"../chunks/BMMOfNi6.js";import{c as oe,a as r,f as v,d as T}from"../chunks/BR_fL5Yv.js";import{s as ne,a as ie}from"../chunks/C6puvcoR.js";import{P as ve}from"../chunks/CwROoZK0.js";import{a as ce}from"../chunks/Q2nPFxS6.js";/* empty css */var pe=v('<span class="last-updated svelte-l9pwpf"> </span>'),de=v('<div class="refresh-controls svelte-l9pwpf"><!> <button type="button"><span class="auto-refresh-dot svelte-l9pwpf"></span> </button></div>'),he=v('<div class="loading-state svelte-l9pwpf">Loading monitoring data...</div>'),fe=T('<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-l9pwpf"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" class="svelte-l9pwpf"></path><circle cx="9" cy="7" r="4" class="svelte-l9pwpf"></circle><path d="M23 21v-2a4 4 0 0 0-3-3.87" class="svelte-l9pwpf"></path><path d="M16 3.13a4 4 0 0 1 0 7.75" class="svelte-l9pwpf"></path></svg>'),ue=T('<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-l9pwpf"><rect x="3" y="11" width="18" height="11" rx="2" ry="2" class="svelte-l9pwpf"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4" class="svelte-l9pwpf"></path></svg>'),we=T('<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="svelte-l9pwpf"><path d="M4 11a9 9 0 0 1 9 9" class="svelte-l9pwpf"></path><path d="M4 4a16 16 0 0 1 16 16" class="svelte-l9pwpf"></path><circle cx="5" cy="19" r="1" class="svelte-l9pwpf"></circle></svg>'),_e=v('<div class="stat-card svelte-l9pwpf"><div class="stat-card__icon svelte-l9pwpf" aria-hidden="true"><!></div> <div class="stat-card__value svelte-l9pwpf"> </div> <div class="stat-card__label svelte-l9pwpf"> </div></div>'),ge=v('<tr class="channel-row svelte-l9pwpf"><td class="channel-td svelte-l9pwpf"><code class="channel-name svelte-l9pwpf"> </code></td><td class="channel-td channel-td--right svelte-l9pwpf"><span class="subscriber-count svelte-l9pwpf"> </span></td></tr>'),me=v('<div class="channel-section svelte-l9pwpf"><h3 class="section-title svelte-l9pwpf">Active Channels</h3> <div class="channel-table-wrap svelte-l9pwpf"><table class="channel-table svelte-l9pwpf"><thead class="svelte-l9pwpf"><tr class="svelte-l9pwpf"><th class="channel-th svelte-l9pwpf">Channel</th><th class="channel-th channel-th--right svelte-l9pwpf">Subscribers</th></tr></thead><tbody class="svelte-l9pwpf"></tbody></table></div></div>'),be=v('<div class="channel-empty svelte-l9pwpf">No active channel subscriptions.</div>'),ke=v('<div class="stat-grid svelte-l9pwpf"></div> <!>',1),ye=v('<div class="loading-state svelte-l9pwpf">No monitoring data available.</div>');function Ee(J,K){$(K,!0);let V=B(!0),h=B(null),H=B(""),f=B(!0);async function q(){try{const p=await le.fetch("data/monitoring");j(h,p,!0),j(H,new Date().toLocaleTimeString(),!0)}catch(p){re(p instanceof Error?p.message:"Failed to load monitoring data")}finally{j(V,!1)}}function O(){j(f,!e(f))}const Q=[{key:"activeConnections",label:"Active Connections",icon:"connections"},{key:"authenticatedConnections",label:"Authenticated",icon:"auth"},{key:"channels",label:"Active Channels",icon:"channels"}];Z(()=>{q();const p=setInterval(()=>{e(f)&&q()},5e3);return()=>{clearInterval(p)}}),ve(J,{title:"Live Monitoring",description:"Active connections and channels",get docsHref(){return ce},actions:I=>{var D=de(),m=a(D);{var N=s=>{var n=pe(),b=a(n);t(n),R(()=>g(b,`Updated ${e(H)??""}`)),r(s,n)};E(m,s=>{e(H)&&s(N)})}var d=c(m,2);let L;var U=c(a(d));t(d),t(D),R(()=>{L=ne(d,1,"auto-refresh-toggle svelte-l9pwpf",null,L,{"auto-refresh-toggle--active":e(f)}),ie(d,"title",e(f)?"Pause auto-refresh":"Resume auto-refresh"),g(U,` ${e(f)?"Live":"Paused"}`)}),se("click",d,O),r(I,D)},children:(I,D)=>{var m=oe(),N=z(m);{var d=s=>{var n=he();r(s,n)},L=s=>{var n=ke(),b=z(n);G(b,21,()=>Q,i=>i.key,(i,o)=>{const k=te(()=>e(h)[e(o).key]);var u=_e(),w=a(u),y=a(w);{var P=l=>{var A=fe();r(l,A)},x=l=>{var A=ue();r(l,A)},C=l=>{var A=we();r(l,A)};E(y,l=>{e(o).icon==="connections"?l(P):e(o).icon==="auth"?l(x,1):e(o).icon==="channels"&&l(C,2)})}t(w);var _=c(w,2),F=a(_,!0);t(_);var M=c(_,2),S=a(M,!0);t(M),t(u),R(l=>{g(F,l),g(S,e(o).label)},[()=>typeof e(k)=="number"?e(k).toLocaleString():"--"]),r(i,u)}),t(b);var W=c(b,2);{var X=i=>{var o=me(),k=c(a(o),2),u=a(k),w=c(a(u));G(w,21,()=>e(h).channelDetails,y=>y.channel,(y,P)=>{var x=ge(),C=a(x),_=a(C),F=a(_,!0);t(_),t(C);var M=c(C),S=a(M),l=a(S,!0);t(S),t(M),t(x),R(()=>{g(F,e(P).channel),g(l,e(P).subscribers)}),r(y,x)}),t(w),t(u),t(k),t(o),r(i,o)},Y=i=>{var o=be();r(i,o)};E(W,i=>{e(h).channelDetails&&e(h).channelDetails.length>0?i(X):i(Y,!1)})}r(s,n)},U=s=>{var n=ye();r(s,n)};E(N,s=>{e(V)?s(d):e(h)?s(L,1):s(U,!1)})}r(I,m)}}),ee()}ae(["click"]);export{Ee as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as we}from"../chunks/DoPXzH7F.js";import{p as Pe,d as v,M as pe,a as Ee,f as re,b as l,g as e,s as o,c as r,r as s,ae as le,ag as Ue,t as z,u as G}from"../chunks/glwixJlP.js";import{s as I}from"../chunks/D5h5A1cc.js";import{i as K}from"../chunks/UUazaC_N.js";import{a as oe,t as Q,b as Fe,e as he}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as we}from"../chunks/DoPXzH7F.js";import{p as Pe,d as v,M as pe,a as Ee,f as re,b as l,g as e,s as o,c as r,r as s,ae as le,ag as Ue,t as z,u as G}from"../chunks/glwixJlP.js";import{s as I}from"../chunks/D5h5A1cc.js";import{i as K}from"../chunks/UUazaC_N.js";import{a as oe,t as Q,b as Fe,e as he}from"../chunks/BMMOfNi6.js";import{a as c,t as ne,f as b}from"../chunks/BR_fL5Yv.js";import{a as V}from"../chunks/C6puvcoR.js";import{b as Be}from"../chunks/NuUjtcO2.js";import{P as Me}from"../chunks/CwROoZK0.js";import{p as Le}from"../chunks/Q2nPFxS6.js";import{T as Oe}from"../chunks/CY1F93Wv.js";import{I as R}from"../chunks/DrQSgw-f.js";import{B as ie}from"../chunks/Cs0GwzJA.js";import{B as de}from"../chunks/eFQHTGwA.js";import{E as _e}from"../chunks/DnyL7Zq-.js";var Re=b('<tr class="svelte-8uesg1"><td class="mono svelte-8uesg1"> </td><td class="svelte-8uesg1"><!></td><td class="mono svelte-8uesg1"> </td><td class="secondary svelte-8uesg1"> </td></tr>'),Je=b('<div class="table-wrapper svelte-8uesg1"><table class="data-table svelte-8uesg1"><thead class="svelte-8uesg1"><tr><th class="svelte-8uesg1">Device ID</th><th class="svelte-8uesg1">Platform</th><th class="svelte-8uesg1">Token</th><th class="svelte-8uesg1">Registered</th></tr></thead><tbody class="svelte-8uesg1"></tbody></table></div>'),Ae=b('<div class="search-bar svelte-8uesg1"><!> <!></div> <!>',1),Ce=b('<div class="send-result svelte-8uesg1"><!> <span> </span></div>'),qe=b('<div class="send-form svelte-8uesg1"><!> <!> <!> <div class="form-field svelte-8uesg1"><label class="form-label svelte-8uesg1">Custom Data (JSON)</label> <textarea class="form-textarea svelte-8uesg1" rows="3"></textarea></div> <!> <!></div>'),He=b('<tr class="svelte-8uesg1"><td class="secondary svelte-8uesg1"> </td><td class="mono svelte-8uesg1"> </td><td class="svelte-8uesg1"><!></td><td class="svelte-8uesg1"> </td><td class="secondary svelte-8uesg1"> </td></tr>'),je=b('<div class="table-wrapper svelte-8uesg1"><table class="data-table svelte-8uesg1"><thead class="svelte-8uesg1"><tr><th class="svelte-8uesg1">Time</th><th class="svelte-8uesg1">User</th><th class="svelte-8uesg1">Status</th><th class="svelte-8uesg1">Sent/Failed</th><th class="svelte-8uesg1">Payload</th></tr></thead><tbody class="svelte-8uesg1"></tbody></table></div>'),ze=b('<div class="search-bar svelte-8uesg1"><!> <!></div> <!>',1),Ge=b('<!> <div class="tab-content svelte-8uesg1"><!></div>',1);function dt(be,ye){Pe(ye,!0);let U=v("tokens");const Se=[{id:"tokens",label:"Tokens"},{id:"send",label:"Test Send"},{id:"logs",label:"Logs"}];let J=v(""),F=v(pe([])),W=v(!1);async function ke(){if(!e(J).trim()){l(F,[],!0);return}l(W,!0);try{const t=await oe.fetch(`data/push/tokens?userId=${encodeURIComponent(e(J).trim())}`);l(F,t.items,!0)}catch(t){Q(t instanceof Error?t.message:"Failed to load tokens"),l(F,[],!0)}finally{l(W,!1)}}let B=v(""),M=v(""),X=v(""),A=v(""),C=v(!1),D=v(null);const ve=`push-send-data-${Math.random().toString(36).slice(2,9)}`;async function xe(){if(!(!e(B).trim()||!e(M).trim())){l(C,!0),l(D,null);try{const t={userId:e(B).trim(),title:e(M).trim(),body:e(X).trim()};if(e(A).trim())try{t.data=JSON.parse(e(A).trim())}catch{Q('Invalid JSON in data field. Example: {"key": "value"}'),l(C,!1);return}const y=await oe.fetch("data/push/test-send",{method:"POST",body:t});l(D,y,!0),Fe(`Sent to ${y.sent??0} device(s)`)}catch(t){Q(t instanceof Error?t.message:"Failed to send")}finally{l(C,!1)}}}let q=v(""),H=v(pe([])),Y=v(!1);async function ue(){l(Y,!0);try{let t="data/push/logs?limit=50";e(q).trim()&&(t+=`&userId=${encodeURIComponent(e(q).trim())}`);const y=await oe.fetch(t);l(H,y.items,!0)}catch(t){Q(t instanceof Error?t.message:"Failed to load logs"),l(H,[],!0)}finally{l(Y,!1)}}we(()=>{ue()});function ce(t){if(!t)return"-";try{return new Date(t).toLocaleString()}catch{return String(t)}}function j(t,y=24){return t.length>y?t.slice(0,y)+"...":t}Me(be,{title:"Push Notifications",description:"Manage push tokens, test sends, and view logs",get docsHref(){return Le},children:(t,y)=>{var ge=Ge(),fe=re(ge);Oe(fe,{get tabs(){return Se},get activeTab(){return e(U)},set activeTab(g){l(U,g,!0)}});var me=o(fe,2),Ie=r(me);{var $e=g=>{var h=Ae(),p=re(h),S=r(p);R(S,{placeholder:"Enter User ID...",get value(){return e(J)},set value(a){l(J,a,!0)}});var N=o(S,2);ie(N,{variant:"primary",onclick:ke,get loading(){return e(W)},children:(a,f)=>{le();var m=ne("Search");c(a,m)},$$slots:{default:!0}}),s(p);var $=o(p,2);{var w=a=>{_e(a,{title:"No tokens",description:"Enter a user ID to search for registered push tokens."})},k=a=>{var f=Je(),m=r(f),n=o(r(m));he(n,21,()=>e(F),d=>d.deviceId??Math.random(),(d,i)=>{var u=Re(),_=r(u),Z=r(_,!0);s(_);var T=o(_),ee=r(T);{let E=G(()=>String(e(i).platform??"unknown"));de(ee,{variant:"primary",get text(){return e(E)}})}s(T);var x=o(T),te=r(x,!0);s(x);var P=o(x),ae=r(P,!0);s(P),s(u),z((E,se,L,O)=>{I(Z,E),V(x,"title",se),I(te,L),I(ae,O)},[()=>j(String(e(i).deviceId??""),16),()=>String(e(i).token??""),()=>j(String(e(i).token??""),30),()=>ce(e(i).registeredAt)]),c(d,u)}),s(n),s(m),s(f),c(a,f)};K($,a=>{e(F).length===0?a(w):a(k,!1)})}c(g,h)},Te=g=>{var h=qe(),p=r(h);R(p,{label:"User ID",placeholder:"Target user ID",required:!0,get value(){return e(B)},set value(n){l(B,n,!0)}});var S=o(p,2);R(S,{label:"Title",placeholder:"Notification title",required:!0,get value(){return e(M)},set value(n){l(M,n,!0)}});var N=o(S,2);R(N,{label:"Body",placeholder:"Notification body (optional)",get value(){return e(X)},set value(n){l(X,n,!0)}});var $=o(N,2),w=r($),k=o(w,2);Ue(k),V(k,"placeholder",'{"key": "value"}'),s($);var a=o($,2);{let n=G(()=>!e(B).trim()||!e(M).trim());ie(a,{variant:"primary",onclick:xe,get loading(){return e(C)},get disabled(){return e(n)},children:(d,i)=>{le();var u=ne("Send Test Notification");c(d,u)},$$slots:{default:!0}})}var f=o(a,2);{var m=n=>{var d=Ce(),i=r(d);de(i,{variant:"success",text:"Sent"});var u=o(i,2),_=r(u);s(u),s(d),z(()=>I(_,`Sent: ${e(D).sent??""}, Failed: ${e(D).failed??""}, Total: ${e(D).total??""}`)),c(n,d)};K(f,n=>{e(D)&&n(m)})}s(h),z(()=>{V(w,"for",ve),V(k,"id",ve)}),Be(k,()=>e(A),n=>l(A,n)),c(g,h)},De=g=>{var h=ze(),p=re(h),S=r(p);R(S,{placeholder:"Filter by User ID (optional)...",get value(){return e(q)},set value(a){l(q,a,!0)}});var N=o(S,2);ie(N,{variant:"primary",onclick:ue,get loading(){return e(Y)},children:(a,f)=>{le();var m=ne("Refresh");c(a,m)},$$slots:{default:!0}}),s(p);var $=o(p,2);{var w=a=>{_e(a,{title:"No logs",description:"No push notification logs found."})},k=a=>{var f=je(),m=r(f),n=o(r(m));he(n,21,()=>e(H),d=>d.sentAt??Math.random(),(d,i)=>{var u=He(),_=r(u),Z=r(_,!0);s(_);var T=o(_),ee=r(T,!0);s(T);var x=o(T),te=r(x);{let L=G(()=>e(i).status==="success"?"success":e(i).status==="partial"?"warning":"danger"),O=G(()=>String(e(i).status??"-"));de(te,{get variant(){return e(L)},get text(){return e(O)}})}s(x);var P=o(x),ae=r(P);s(P);var E=o(P),se=r(E,!0);s(E),s(u),z((L,O,Ne)=>{I(Z,L),I(ee,O),I(ae,`${e(i).tokensSent??0??""} / ${e(i).tokensFailed??0??""}`),I(se,Ne)},[()=>ce(e(i).sentAt),()=>j(String(e(i).userId??""),16),()=>j(JSON.stringify(e(i).payload??{}),40)]),c(d,u)}),s(n),s(m),s(f),c(a,f)};K($,a=>{e(H).length===0?a(w):a(k,!1)})}c(g,h)};K(Ie,g=>{e(U)==="tokens"?g($e):e(U)==="send"?g(Te,1):e(U)==="logs"&&g(De,2)})}s(me),c(t,ge)}}),Ee()}export{dt as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as gs}from"../chunks/DoPXzH7F.js";import{p as _s,d as A,M as ps,f as te,a as fs,b as o,g as e,r as t,c as s,s as a,ae as D,t as C,u as Y}from"../chunks/glwixJlP.js";import{d as ms,s as g,a as hs,e as yt}from"../chunks/D5h5A1cc.js";import{i as P}from"../chunks/UUazaC_N.js";import{a as se,e as U,i as Z,b as ve,t as ae}from"../chunks/CCKNu7m7.js";import{a as n,f as p,c as ge,t as w}from"../chunks/BR_fL5Yv.js";import{s as ys}from"../chunks/C6puvcoR.js";import{d as ws}from"../chunks/wJsUhbfZ.js";import"../chunks/DuXuUBWN.js";import{P as $s}from"../chunks/CwROoZK0.js";import{b as xs}from"../chunks/Q2nPFxS6.js";import{B as _e}from"../chunks/eFQHTGwA.js";import{B as V}from"../chunks/Cs0GwzJA.js";import{M as Ie}from"../chunks/7B47DvSx.js";import{I as $e}from"../chunks/DrQSgw-f.js";import{C as wt}from"../chunks/Bh56EfQ_.js";import{S as pe}from"../chunks/BdrwyZv8.js";var bs=p('<div class="settings-row svelte-1i19ct2"><!> <!></div>'),ks=p('<div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2"><!></h3> <div class="settings-rows svelte-1i19ct2"></div></div>'),As=p('<div class="settings-grid svelte-1i19ct2"></div>'),Ds=p('<div class="settings-error svelte-1i19ct2">Failed to load configuration.</div>'),Ps=p('<div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2"></span> <span class="settings-value settings-value--key svelte-1i19ct2"><code class="key-preview svelte-1i19ct2"> </code> <button class="copy-btn svelte-1i19ct2" title="Copy masked key"><svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="5" y="5" width="8" height="8" rx="1"></rect><path d="M3 11V3h8" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></span></div>'),Es=p('<div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2"> </span> <span class="settings-value svelte-1i19ct2"> <!></span></div>'),Cs=p('<div class="settings-empty svelte-1i19ct2">No databases configured</div>'),Ss=p('<div class="settings-row settings-row--top svelte-1i19ct2"><span class="settings-key settings-key--stack svelte-1i19ct2"><code class="settings-code svelte-1i19ct2"> </code> <!></span> <span class="settings-value settings-value--stack settings-value--rate svelte-1i19ct2"><span><span class="settings-inline-label svelte-1i19ct2">Soft</span> </span> <span class="settings-subvalue svelte-1i19ct2"> </span></span></div>'),zs=p('<div class="settings-empty svelte-1i19ct2">No rate limit settings found</div>'),Ls=p('<div class="settings-row svelte-1i19ct2"><!> <!></div>'),Bs=p('<div class="settings-empty svelte-1i19ct2">No admin accounts found</div>'),Ts=p('<div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2"> </span> <span class="settings-value settings-value--actions svelte-1i19ct2"><span class="settings-date svelte-1i19ct2"> </span> <!> <!></span></div>'),Ns=p('<li class="svelte-1i19ct2"> </li>'),Rs=p('<div class="danger-zone__result-section svelte-1i19ct2"><strong>Deleted:</strong> <ul class="svelte-1i19ct2"></ul></div>'),Ks=p('<li class="svelte-1i19ct2"> </li>'),js=p('<div class="danger-zone__result-section danger-zone__result-section--error svelte-1i19ct2"><strong>Failed:</strong> <ul class="svelte-1i19ct2"></ul></div>'),Vs=p('<div class="danger-zone__result svelte-1i19ct2"><p> </p> <!> <!></div>'),Ms=p('<div class="danger-zone__content svelte-1i19ct2"><div class="danger-zone__item svelte-1i19ct2"><div><p class="danger-zone__item-title svelte-1i19ct2">Delete this app</p> <p class="danger-zone__item-desc svelte-1i19ct2">Permanently delete all Cloudflare resources including databases, storage, KV namespaces, and the Worker itself. This action cannot be undone.</p></div> <!></div></div>'),Os=p('<div class="danger-zone svelte-1i19ct2"><div class="danger-zone__header svelte-1i19ct2"><h3 class="danger-zone__title svelte-1i19ct2">Danger Zone</h3></div> <!></div>'),Fs=p('<div class="settings-grid svelte-1i19ct2"><div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Environment</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Mode</span> <!></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Release</span> <!></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Service Keys</span> <span class="settings-value svelte-1i19ct2"> </span></div> <!></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Databases</h3> <div class="settings-rows svelte-1i19ct2"><!> <!></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Bindings</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">KV Namespaces</span> <span class="settings-value svelte-1i19ct2"> </span></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">D1 Databases</span> <span class="settings-value svelte-1i19ct2"> </span></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Vectorize Indexes</span> <span class="settings-value svelte-1i19ct2"> </span></div></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Auth</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Anonymous Auth</span> <!></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">OAuth Providers</span> <span class="settings-value svelte-1i19ct2"><!></span></div></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Storage</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Buckets</span> <span class="settings-value svelte-1i19ct2"><!></span></div></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Rate Limiting</h3> <div class="settings-rows svelte-1i19ct2"><!></div> <div class="settings-note svelte-1i19ct2">Defined in <code>edgebase.config.ts</code> or <code>config/rate-limits.ts</code>.</div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Native Resources</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">KV Namespaces</span> <span class="settings-value svelte-1i19ct2"> </span></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">D1 Databases</span> <span class="settings-value svelte-1i19ct2"> </span></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Vectorize Indexes</span> <span class="settings-value svelte-1i19ct2"> </span></div></div></div></div> <div class="settings-card settings-card--full svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Admin Accounts <!></h3> <div class="settings-rows svelte-1i19ct2"><!></div></div> <!>',1),Is=p('<div class="delete-confirm svelte-1i19ct2"><p class="delete-confirm__warning svelte-1i19ct2">This is your final confirmation. All data will be permanently lost.</p> <p class="delete-confirm__instruction svelte-1i19ct2">Type <strong>DELETE_ALL_RESOURCES</strong> to confirm:</p> <!> <div class="modal-actions svelte-1i19ct2"><!> <!></div></div>'),Us=p('<form><div class="modal-fields svelte-1i19ct2"><!> <!></div> <div class="modal-actions svelte-1i19ct2"><!> <!></div></form>'),qs=p('<form><p class="modal-info svelte-1i19ct2">Changing password for <strong> </strong></p> <div class="modal-fields svelte-1i19ct2"><!></div> <div class="modal-actions svelte-1i19ct2"><!> <!></div></form>'),Ws=p("<!> <!> <!> <!> <!> <!>",1);function ca($t,xt){_s(xt,!0);let Ue=A(!0),v=A(null);function bt(r,$){return`${r.toLocaleString()} / ${$}`}function kt(r){if(!r)return"No binding";if(!r.enabled)return"Binding disabled";if(r.limit==null||r.period==null)return"Binding configured";const $=`${r.limit.toLocaleString()} / ${r.period}s`;return r.source==="override"||r.source==="custom"?`Binding ${$}`:`Binding ${$} (default)`}function xe(r){return r.length>0?r.join(", "):"None configured"}function At(r){return r?r.enabled?r.source==="override"?"primary":r.source==="custom"?"warning":"default":"danger":"default"}function Dt(r){return r?r.enabled?r.source==="override"?"Binding override":r.source==="custom"?"Custom group":"Default binding":"Binding off":"Soft only"}async function Pt(r){try{await navigator.clipboard.writeText(r),ve("Copied to clipboard (masked)")}catch{ae("Failed to copy")}}gs(async()=>{try{o(v,await se.fetch("data/config-info"),!0)}catch{o(v,null)}finally{o(Ue,!1)}Ae()});let de=A(ps([])),qe=A(!0),ce=A(!1),re=A(""),ie=A(""),be=A(!1),G=A(null),q=A(null),Q=A(""),ke=A(!1);async function Ae(){try{const r=await se.fetch("data/admins");o(de,r.admins,!0)}catch{o(de,[],!0)}finally{o(qe,!1)}}async function Et(){if(!(!e(re).trim()||!e(ie).trim())){o(be,!0);try{await se.fetch("data/admins",{method:"POST",body:{email:e(re),password:e(ie)}}),ve("Admin account created"),o(ce,!1),o(re,""),o(ie,""),await Ae()}catch(r){ae(r instanceof Error?r.message:"Failed to create admin")}finally{o(be,!1)}}}async function Ct(){if(!e(G))return;const r=e(G);o(G,null);try{await se.fetch(`data/admins/${r.id}`,{method:"DELETE"}),ve("Admin account deleted"),await Ae()}catch($){ae($ instanceof Error?$.message:"Failed to delete admin")}}async function St(){if(!(!e(q)||!e(Q).trim())){o(ke,!0);try{await se.fetch(`data/admins/${e(q).id}/password`,{method:"PUT",body:{password:e(Q)}}),ve("Password updated"),o(q,null),o(Q,"")}catch(r){ae(r instanceof Error?r.message:"Failed to change password")}finally{o(ke,!1)}}}async function zt(){try{const r=await se.fetch("data/backup/config"),$=new Blob([JSON.stringify(r,null,2)],{type:"application/json"});ws($,`edgebase-config-snapshot-${new Date().toISOString().slice(0,10)}.json`),ve("Config snapshot downloaded")}catch(r){ae(r instanceof Error?r.message:"Failed to download config")}}let fe=A(!1),me=A(!1),ne=A(""),De=A(!1),W=A(null);function Lt(){o(fe,!0)}function Bt(){o(fe,!1),o(me,!0),o(ne,"")}function Pe(){o(fe,!1),o(me,!1),o(ne,"")}async function Tt(){o(De,!0);try{const r=await se.fetch("data/destroy-app",{method:"POST",body:{confirm:"DELETE_ALL_RESOURCES"}});o(W,r,!0),o(me,!1),r.success?ve("All resources destroyed. This app has been deleted."):ae(`Partial destruction: ${r.failed.length} resource(s) failed to delete.`)}catch(r){ae(r instanceof Error?r.message:"Failed to destroy app")}finally{o(De,!1),o(ne,"")}}var We=Ws(),He=te(We);$s(He,{title:"Project Info",description:"Environment and resource overview with admin account controls",get docsHref(){return xs},actions:$=>{V($,{variant:"secondary",size:"sm",onclick:zt,children:(ue,x)=>{D();var S=w("Download Config Snapshot");n(ue,S)},$$slots:{default:!0}})},children:($,ue)=>{var x=ge(),S=te(x);{var M=h=>{var E=As();U(E,20,()=>Array(5),Z,(f,K)=>{var b=ks(),T=s(b),le=s(T);pe(le,{width:"120px",height:"13px"}),t(T);var J=a(T,2);U(J,20,()=>Array(3),Z,(Ee,he)=>{var oe=bs(),ye=s(oe);pe(ye,{width:"80px",height:"12px"});var Ce=a(ye,2);pe(Ce,{width:"100px",height:"12px"}),t(oe),n(Ee,oe)}),t(J),t(b),n(f,b)}),t(E),n(h,E)},H=h=>{var E=Ds();n(h,E)},O=h=>{var E=Fs(),f=te(E),K=s(f),b=a(s(K),2),T=s(b),le=a(s(T),2);{let i=Y(()=>e(v).devMode?"warning":"success");_e(le,{get variant(){return e(i)},children:(l,_)=>{D();var d=w();C(()=>g(d,e(v).devMode?"Development":"Production")),n(l,d)},$$slots:{default:!0}})}t(T);var J=a(T,2),Ee=a(s(J),2);{let i=Y(()=>e(v).release?"success":"default");_e(Ee,{get variant(){return e(i)},children:(l,_)=>{D();var d=w();C(()=>g(d,e(v).release?"Enabled (deny-by-default)":"Disabled (dev permissive)")),n(l,d)},$$slots:{default:!0}})}t(J);var he=a(J,2),oe=a(s(he),2),ye=s(oe);t(oe),t(he);var Ce=a(he,2);{var Ot=i=>{var l=ge(),_=te(l);U(_,17,()=>e(v).serviceKeys,Z,(d,m,c)=>{var u=Ps(),y=s(u);y.textContent=`Key ${c+1}`;var z=a(y,2),k=s(z),N=s(k,!0);t(k);var B=a(k,2);t(z),t(u),C(()=>g(N,e(m))),hs("click",B,()=>Pt(e(m))),n(d,u)}),n(i,l)};P(Ce,i=>{e(v).serviceKeys&&e(v).serviceKeys.length>0&&i(Ot)})}t(b),t(K);var Se=a(K,2),Qe=a(s(Se),2),Xe=s(Qe);U(Xe,17,()=>e(v).databases,Z,(i,l)=>{var _=Es(),d=s(_),m=s(d,!0);t(d);var c=a(d,2),u=s(c),y=a(u);{var z=k=>{_e(k,{variant:"primary",children:(N,B)=>{D();var X=w("access rule");n(N,X)},$$slots:{default:!0}})};P(y,k=>{e(l).hasAccess&&k(z)})}t(c),t(_),C(()=>{g(m,e(l).name),g(u,`${e(l).tableCount??""} table${e(l).tableCount!==1?"s":""} `)}),n(i,_)});var Ft=a(Xe,2);{var It=i=>{var l=Cs();n(i,l)};P(Ft,i=>{e(v).databases.length===0&&i(It)})}t(Qe),t(Se);var ze=a(Se,2),et=a(s(ze),2),Le=s(et),tt=a(s(Le),2),Ut=s(tt,!0);t(tt),t(Le);var Be=a(Le,2),st=a(s(Be),2),qt=s(st,!0);t(st),t(Be);var at=a(Be,2),rt=a(s(at),2),Wt=s(rt,!0);t(rt),t(at),t(et),t(ze);var Te=a(ze,2),it=a(s(Te),2),Ne=s(it),Ht=a(s(Ne),2);{let i=Y(()=>e(v).auth.anonymousAuth?"success":"default");_e(Ht,{get variant(){return e(i)},children:(l,_)=>{D();var d=w();C(()=>g(d,e(v).auth.anonymousAuth?"Enabled":"Disabled")),n(l,d)},$$slots:{default:!0}})}t(Ne);var nt=a(Ne,2),lt=a(s(nt),2),Jt=s(lt);{var Yt=i=>{var l=w();C(_=>g(l,_),[()=>e(v).auth.providers.join(", ")]),n(i,l)},Zt=i=>{var l=w("None configured");n(i,l)};P(Jt,i=>{e(v).auth.providers.length>0?i(Yt):i(Zt,!1)})}t(lt),t(nt),t(it),t(Te);var Re=a(Te,2),ot=a(s(Re),2),vt=s(ot),dt=a(s(vt),2),Gt=s(dt);{var Qt=i=>{var l=w();C(_=>g(l,_),[()=>e(v).storageBuckets.join(", ")]),n(i,l)},Xt=i=>{var l=w("None configured");n(i,l)};P(Gt,i=>{e(v).storageBuckets.length>0?i(Qt):i(Xt,!1)})}t(dt),t(vt),t(ot),t(Re);var Ke=a(Re,2),ct=a(s(Ke),2),es=s(ct);{var ts=i=>{var l=ge(),_=te(l);U(_,17,()=>e(v).rateLimiting,Z,(d,m)=>{var c=Ss(),u=s(c),y=s(u),z=s(y,!0);t(y);var k=a(y,2);{let L=Y(()=>At(e(m).binding));_e(k,{get variant(){return e(L)},children:(j,we)=>{D();var ee=w();C(I=>g(ee,I),[()=>Dt(e(m).binding)]),n(j,ee)},$$slots:{default:!0}})}t(u);var N=a(u,2),B=s(N),X=a(s(B),1,!0);t(B);var F=a(B,2),R=s(F,!0);t(F),t(N),t(c),C((L,j)=>{g(z,e(m).group),g(X,L),g(R,j)},[()=>bt(e(m).requests,e(m).window),()=>kt(e(m).binding)]),n(d,c)}),n(i,l)},ss=i=>{var l=zs();n(i,l)};P(es,i=>{e(v).rateLimiting.length>0?i(ts):i(ss,!1)})}t(ct),D(2),t(Ke);var ut=a(Ke,2),gt=a(s(ut),2),je=s(gt),_t=a(s(je),2),as=s(_t,!0);t(_t),t(je);var Ve=a(je,2),pt=a(s(Ve),2),rs=s(pt,!0);t(pt),t(Ve);var ft=a(Ve,2),mt=a(s(ft),2),is=s(mt,!0);t(mt),t(ft),t(gt),t(ut),t(f);var Me=a(f,2),Oe=s(Me),ns=a(s(Oe));V(ns,{variant:"primary",size:"sm",onclick:()=>o(ce,!0),children:(i,l)=>{D();var _=w("+ Add Admin");n(i,_)},$$slots:{default:!0}}),t(Oe);var ht=a(Oe,2),ls=s(ht);{var os=i=>{var l=ge(),_=te(l);U(_,16,()=>Array(2),Z,(d,m)=>{var c=Ls(),u=s(c);pe(u,{width:"150px",height:"12px"});var y=a(u,2);pe(y,{width:"80px",height:"12px"}),t(c),n(d,c)}),n(i,l)},vs=i=>{var l=Bs();n(i,l)},ds=i=>{var l=ge(),_=te(l);U(_,17,()=>e(de),d=>d.id,(d,m)=>{var c=Ts(),u=s(c),y=s(u,!0);t(u);var z=a(u,2),k=s(z),N=s(k,!0);t(k);var B=a(k,2);V(B,{variant:"secondary",size:"sm",onclick:()=>{o(q,e(m),!0),o(Q,"")},children:(F,R)=>{D();var L=w("Change Password");n(F,L)},$$slots:{default:!0}});var X=a(B,2);{let F=Y(()=>e(de).length<=1);V(X,{variant:"danger",size:"sm",onclick:()=>o(G,e(m),!0),get disabled(){return e(F)},children:(R,L)=>{D();var j=w("Delete");n(R,j)},$$slots:{default:!0}})}t(z),t(c),C(F=>{g(y,e(m).email),g(N,F)},[()=>new Date(e(m).createdAt).toLocaleDateString()]),n(d,c)}),n(i,l)};P(ls,i=>{e(qe)?i(os):e(de).length===0?i(vs,1):i(ds,!1)})}t(ht),t(Me);var cs=a(Me,2);{var us=i=>{var l=Os(),_=a(s(l),2);{var d=c=>{var u=Vs(),y=s(u);let z;var k=s(y,!0);t(y);var N=a(y,2);{var B=R=>{var L=Rs(),j=a(s(L),2);U(j,21,()=>e(W).deleted,Z,(we,ee)=>{var I=Ns(),Fe=s(I,!0);t(I),C(()=>g(Fe,e(ee))),n(we,I)}),t(j),t(L),n(R,L)};P(N,R=>{e(W).deleted.length>0&&R(B)})}var X=a(N,2);{var F=R=>{var L=js(),j=a(s(L),2);U(j,21,()=>e(W).failed,Z,(we,ee)=>{var I=Ks(),Fe=s(I);t(I),C(()=>g(Fe,`${e(ee).resource??""}: ${e(ee).error??""}`)),n(we,I)}),t(j),t(L),n(R,L)};P(X,R=>{e(W).failed.length>0&&R(F)})}t(u),C(()=>{z=ys(y,1,"danger-zone__result-message svelte-1i19ct2",null,z,{"danger-zone__result-message--success":e(W).success}),g(k,e(W).message)}),n(c,u)},m=c=>{var u=Ms(),y=s(u),z=a(s(y),2);V(z,{variant:"danger",size:"sm",onclick:Lt,children:(k,N)=>{D();var B=w("Delete App");n(k,B)},$$slots:{default:!0}}),t(y),t(u),n(c,u)};P(_,c=>{e(W)?c(d):c(m,!1)})}t(l),n(i,l)};P(cs,i=>{e(v).devMode||i(us)})}C((i,l,_,d,m,c)=>{g(ye,`${e(v).serviceKeyCount??""} configured`),g(Ut,i),g(qt,l),g(Wt,_),g(as,d),g(rs,m),g(is,c)},[()=>xe(e(v).bindings.kv),()=>xe(e(v).bindings.d1),()=>xe(e(v).bindings.vectorize),()=>e(v).bindings.kv.length>0?e(v).bindings.kv.join(", "):"None",()=>e(v).bindings.d1.length>0?e(v).bindings.d1.join(", "):"None",()=>e(v).bindings.vectorize.length>0?e(v).bindings.vectorize.join(", "):"None"]),n(h,E)};P(S,h=>{e(Ue)?h(M):e(v)?h(O,!1):h(H,1)})}n($,x)}});var Je=a(He,2);{var Nt=r=>{wt(r,{open:!0,title:"Delete App",message:"This will permanently delete ALL Cloudflare resources (databases, storage, KV, vectorize indexes, and the Worker). This action cannot be undone. Do you want to proceed?",confirmLabel:"Yes, delete everything",confirmVariant:"danger",onconfirm:Bt,oncancel:Pe})};P(Je,r=>{e(fe)&&r(Nt)})}var Ye=a(Je,2);{var Rt=r=>{Ie(r,{open:!0,title:"Confirm App Deletion",onclose:Pe,children:($,ue)=>{var x=Is(),S=a(s(x),4);$e(S,{placeholder:"DELETE_ALL_RESOURCES",get value(){return e(ne)},set value(h){o(ne,h,!0)}});var M=a(S,2),H=s(M);V(H,{variant:"secondary",onclick:Pe,children:(h,E)=>{D();var f=w("Cancel");n(h,f)},$$slots:{default:!0}});var O=a(H,2);{let h=Y(()=>e(ne)!=="DELETE_ALL_RESOURCES");V(O,{variant:"danger",get loading(){return e(De)},get disabled(){return e(h)},onclick:Tt,children:(E,f)=>{D();var K=w("Permanently Delete App");n(E,K)},$$slots:{default:!0}})}t(M),t(x),n($,x)},$$slots:{default:!0}})};P(Ye,r=>{e(me)&&r(Rt)})}var Ze=a(Ye,2);{var Kt=r=>{Ie(r,{open:!0,title:"Add Admin Account",onclose:()=>o(ce,!1),children:($,ue)=>{var x=Us(),S=s(x),M=s(S);$e(M,{label:"Email",type:"email",get value(){return e(re)},set value(f){o(re,f,!0)}});var H=a(M,2);$e(H,{label:"Password",type:"password",get value(){return e(ie)},set value(f){o(ie,f,!0)}}),t(S);var O=a(S,2),h=s(O);V(h,{variant:"secondary",onclick:()=>o(ce,!1),children:(f,K)=>{D();var b=w("Cancel");n(f,b)},$$slots:{default:!0}});var E=a(h,2);{let f=Y(()=>!e(re).trim()||e(ie).length<8);V(E,{variant:"primary",type:"submit",get loading(){return e(be)},get disabled(){return e(f)},children:(K,b)=>{D();var T=w("Create Admin");n(K,T)},$$slots:{default:!0}})}t(O),t(x),yt("submit",x,f=>{f.preventDefault(),Et()}),n($,x)},$$slots:{default:!0}})};P(Ze,r=>{e(ce)&&r(Kt)})}var Ge=a(Ze,2);{var jt=r=>{Ie(r,{open:!0,title:"Change Password",onclose:()=>o(q,null),children:($,ue)=>{var x=qs(),S=s(x),M=a(s(S)),H=s(M,!0);t(M),t(S);var O=a(S,2),h=s(O);$e(h,{label:"New Password",type:"password",get value(){return e(Q)},set value(b){o(Q,b,!0)}}),t(O);var E=a(O,2),f=s(E);V(f,{variant:"secondary",onclick:()=>o(q,null),children:(b,T)=>{D();var le=w("Cancel");n(b,le)},$$slots:{default:!0}});var K=a(f,2);{let b=Y(()=>e(Q).length<8);V(K,{variant:"primary",type:"submit",get loading(){return e(ke)},get disabled(){return e(b)},children:(T,le)=>{D();var J=w("Update Password");n(T,J)},$$slots:{default:!0}})}t(E),t(x),C(()=>g(H,e(q).email)),yt("submit",x,b=>{b.preventDefault(),St()}),n($,x)},$$slots:{default:!0}})};P(Ge,r=>{e(q)&&r(jt)})}var Vt=a(Ge,2);{var Mt=r=>{wt(r,{open:!0,title:"Delete Admin Account",get message(){return`Are you sure you want to delete the admin account ${e(G).email??""}? This cannot be undone.`},confirmLabel:"Delete",confirmVariant:"danger",onconfirm:Ct,oncancel:()=>o(G,null)})};P(Vt,r=>{e(G)&&r(Mt)})}n($t,We),fs()}ms(["click"]);export{ca as component};
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as gs}from"../chunks/DoPXzH7F.js";import{p as _s,d as A,M as ps,f as te,a as fs,b as o,g as e,r as t,c as s,s as a,ae as D,t as C,u as Y}from"../chunks/glwixJlP.js";import{d as ms,s as g,a as hs,e as yt}from"../chunks/D5h5A1cc.js";import{i as P}from"../chunks/UUazaC_N.js";import{a as se,e as U,i as Z,b as ve,t as ae}from"../chunks/BMMOfNi6.js";import{a as n,f as p,c as ge,t as w}from"../chunks/BR_fL5Yv.js";import{s as ys}from"../chunks/C6puvcoR.js";import{d as ws}from"../chunks/wJsUhbfZ.js";import"../chunks/Ga6XaOJm.js";import{P as $s}from"../chunks/CwROoZK0.js";import{b as xs}from"../chunks/Q2nPFxS6.js";import{B as _e}from"../chunks/eFQHTGwA.js";import{B as V}from"../chunks/Cs0GwzJA.js";import{M as Ie}from"../chunks/7B47DvSx.js";import{I as $e}from"../chunks/DrQSgw-f.js";import{C as wt}from"../chunks/Bh56EfQ_.js";import{S as pe}from"../chunks/BK8YUsyH.js";var bs=p('<div class="settings-row svelte-1i19ct2"><!> <!></div>'),ks=p('<div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2"><!></h3> <div class="settings-rows svelte-1i19ct2"></div></div>'),As=p('<div class="settings-grid svelte-1i19ct2"></div>'),Ds=p('<div class="settings-error svelte-1i19ct2">Failed to load configuration.</div>'),Ps=p('<div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2"></span> <span class="settings-value settings-value--key svelte-1i19ct2"><code class="key-preview svelte-1i19ct2"> </code> <button class="copy-btn svelte-1i19ct2" title="Copy masked key"><svg width="12" height="12" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="5" y="5" width="8" height="8" rx="1"></rect><path d="M3 11V3h8" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></span></div>'),Es=p('<div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2"> </span> <span class="settings-value svelte-1i19ct2"> <!></span></div>'),Cs=p('<div class="settings-empty svelte-1i19ct2">No databases configured</div>'),Ss=p('<div class="settings-row settings-row--top svelte-1i19ct2"><span class="settings-key settings-key--stack svelte-1i19ct2"><code class="settings-code svelte-1i19ct2"> </code> <!></span> <span class="settings-value settings-value--stack settings-value--rate svelte-1i19ct2"><span><span class="settings-inline-label svelte-1i19ct2">Soft</span> </span> <span class="settings-subvalue svelte-1i19ct2"> </span></span></div>'),zs=p('<div class="settings-empty svelte-1i19ct2">No rate limit settings found</div>'),Ls=p('<div class="settings-row svelte-1i19ct2"><!> <!></div>'),Bs=p('<div class="settings-empty svelte-1i19ct2">No admin accounts found</div>'),Ts=p('<div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2"> </span> <span class="settings-value settings-value--actions svelte-1i19ct2"><span class="settings-date svelte-1i19ct2"> </span> <!> <!></span></div>'),Ns=p('<li class="svelte-1i19ct2"> </li>'),Rs=p('<div class="danger-zone__result-section svelte-1i19ct2"><strong>Deleted:</strong> <ul class="svelte-1i19ct2"></ul></div>'),Ks=p('<li class="svelte-1i19ct2"> </li>'),js=p('<div class="danger-zone__result-section danger-zone__result-section--error svelte-1i19ct2"><strong>Failed:</strong> <ul class="svelte-1i19ct2"></ul></div>'),Vs=p('<div class="danger-zone__result svelte-1i19ct2"><p> </p> <!> <!></div>'),Ms=p('<div class="danger-zone__content svelte-1i19ct2"><div class="danger-zone__item svelte-1i19ct2"><div><p class="danger-zone__item-title svelte-1i19ct2">Delete this app</p> <p class="danger-zone__item-desc svelte-1i19ct2">Permanently delete all Cloudflare resources including databases, storage, KV namespaces, and the Worker itself. This action cannot be undone.</p></div> <!></div></div>'),Os=p('<div class="danger-zone svelte-1i19ct2"><div class="danger-zone__header svelte-1i19ct2"><h3 class="danger-zone__title svelte-1i19ct2">Danger Zone</h3></div> <!></div>'),Fs=p('<div class="settings-grid svelte-1i19ct2"><div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Environment</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Mode</span> <!></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Release</span> <!></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Service Keys</span> <span class="settings-value svelte-1i19ct2"> </span></div> <!></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Databases</h3> <div class="settings-rows svelte-1i19ct2"><!> <!></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Bindings</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">KV Namespaces</span> <span class="settings-value svelte-1i19ct2"> </span></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">D1 Databases</span> <span class="settings-value svelte-1i19ct2"> </span></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Vectorize Indexes</span> <span class="settings-value svelte-1i19ct2"> </span></div></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Auth</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Anonymous Auth</span> <!></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">OAuth Providers</span> <span class="settings-value svelte-1i19ct2"><!></span></div></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Storage</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Buckets</span> <span class="settings-value svelte-1i19ct2"><!></span></div></div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Rate Limiting</h3> <div class="settings-rows svelte-1i19ct2"><!></div> <div class="settings-note svelte-1i19ct2">Defined in <code>edgebase.config.ts</code> or <code>config/rate-limits.ts</code>.</div></div> <div class="settings-card svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Native Resources</h3> <div class="settings-rows svelte-1i19ct2"><div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">KV Namespaces</span> <span class="settings-value svelte-1i19ct2"> </span></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">D1 Databases</span> <span class="settings-value svelte-1i19ct2"> </span></div> <div class="settings-row svelte-1i19ct2"><span class="settings-key svelte-1i19ct2">Vectorize Indexes</span> <span class="settings-value svelte-1i19ct2"> </span></div></div></div></div> <div class="settings-card settings-card--full svelte-1i19ct2"><h3 class="settings-card__title svelte-1i19ct2">Admin Accounts <!></h3> <div class="settings-rows svelte-1i19ct2"><!></div></div> <!>',1),Is=p('<div class="delete-confirm svelte-1i19ct2"><p class="delete-confirm__warning svelte-1i19ct2">This is your final confirmation. All data will be permanently lost.</p> <p class="delete-confirm__instruction svelte-1i19ct2">Type <strong>DELETE_ALL_RESOURCES</strong> to confirm:</p> <!> <div class="modal-actions svelte-1i19ct2"><!> <!></div></div>'),Us=p('<form><div class="modal-fields svelte-1i19ct2"><!> <!></div> <div class="modal-actions svelte-1i19ct2"><!> <!></div></form>'),qs=p('<form><p class="modal-info svelte-1i19ct2">Changing password for <strong> </strong></p> <div class="modal-fields svelte-1i19ct2"><!></div> <div class="modal-actions svelte-1i19ct2"><!> <!></div></form>'),Ws=p("<!> <!> <!> <!> <!> <!>",1);function ca($t,xt){_s(xt,!0);let Ue=A(!0),v=A(null);function bt(r,$){return`${r.toLocaleString()} / ${$}`}function kt(r){if(!r)return"No binding";if(!r.enabled)return"Binding disabled";if(r.limit==null||r.period==null)return"Binding configured";const $=`${r.limit.toLocaleString()} / ${r.period}s`;return r.source==="override"||r.source==="custom"?`Binding ${$}`:`Binding ${$} (default)`}function xe(r){return r.length>0?r.join(", "):"None configured"}function At(r){return r?r.enabled?r.source==="override"?"primary":r.source==="custom"?"warning":"default":"danger":"default"}function Dt(r){return r?r.enabled?r.source==="override"?"Binding override":r.source==="custom"?"Custom group":"Default binding":"Binding off":"Soft only"}async function Pt(r){try{await navigator.clipboard.writeText(r),ve("Copied to clipboard (masked)")}catch{ae("Failed to copy")}}gs(async()=>{try{o(v,await se.fetch("data/config-info"),!0)}catch{o(v,null)}finally{o(Ue,!1)}Ae()});let de=A(ps([])),qe=A(!0),ce=A(!1),re=A(""),ie=A(""),be=A(!1),G=A(null),q=A(null),Q=A(""),ke=A(!1);async function Ae(){try{const r=await se.fetch("data/admins");o(de,r.admins,!0)}catch{o(de,[],!0)}finally{o(qe,!1)}}async function Et(){if(!(!e(re).trim()||!e(ie).trim())){o(be,!0);try{await se.fetch("data/admins",{method:"POST",body:{email:e(re),password:e(ie)}}),ve("Admin account created"),o(ce,!1),o(re,""),o(ie,""),await Ae()}catch(r){ae(r instanceof Error?r.message:"Failed to create admin")}finally{o(be,!1)}}}async function Ct(){if(!e(G))return;const r=e(G);o(G,null);try{await se.fetch(`data/admins/${r.id}`,{method:"DELETE"}),ve("Admin account deleted"),await Ae()}catch($){ae($ instanceof Error?$.message:"Failed to delete admin")}}async function St(){if(!(!e(q)||!e(Q).trim())){o(ke,!0);try{await se.fetch(`data/admins/${e(q).id}/password`,{method:"PUT",body:{password:e(Q)}}),ve("Password updated"),o(q,null),o(Q,"")}catch(r){ae(r instanceof Error?r.message:"Failed to change password")}finally{o(ke,!1)}}}async function zt(){try{const r=await se.fetch("data/backup/config"),$=new Blob([JSON.stringify(r,null,2)],{type:"application/json"});ws($,`edgebase-config-snapshot-${new Date().toISOString().slice(0,10)}.json`),ve("Config snapshot downloaded")}catch(r){ae(r instanceof Error?r.message:"Failed to download config")}}let fe=A(!1),me=A(!1),ne=A(""),De=A(!1),W=A(null);function Lt(){o(fe,!0)}function Bt(){o(fe,!1),o(me,!0),o(ne,"")}function Pe(){o(fe,!1),o(me,!1),o(ne,"")}async function Tt(){o(De,!0);try{const r=await se.fetch("data/destroy-app",{method:"POST",body:{confirm:"DELETE_ALL_RESOURCES"}});o(W,r,!0),o(me,!1),r.success?ve("All resources destroyed. This app has been deleted."):ae(`Partial destruction: ${r.failed.length} resource(s) failed to delete.`)}catch(r){ae(r instanceof Error?r.message:"Failed to destroy app")}finally{o(De,!1),o(ne,"")}}var We=Ws(),He=te(We);$s(He,{title:"Project Info",description:"Environment and resource overview with admin account controls",get docsHref(){return xs},actions:$=>{V($,{variant:"secondary",size:"sm",onclick:zt,children:(ue,x)=>{D();var S=w("Download Config Snapshot");n(ue,S)},$$slots:{default:!0}})},children:($,ue)=>{var x=ge(),S=te(x);{var M=h=>{var E=As();U(E,20,()=>Array(5),Z,(f,K)=>{var b=ks(),T=s(b),le=s(T);pe(le,{width:"120px",height:"13px"}),t(T);var J=a(T,2);U(J,20,()=>Array(3),Z,(Ee,he)=>{var oe=bs(),ye=s(oe);pe(ye,{width:"80px",height:"12px"});var Ce=a(ye,2);pe(Ce,{width:"100px",height:"12px"}),t(oe),n(Ee,oe)}),t(J),t(b),n(f,b)}),t(E),n(h,E)},H=h=>{var E=Ds();n(h,E)},O=h=>{var E=Fs(),f=te(E),K=s(f),b=a(s(K),2),T=s(b),le=a(s(T),2);{let i=Y(()=>e(v).devMode?"warning":"success");_e(le,{get variant(){return e(i)},children:(l,_)=>{D();var d=w();C(()=>g(d,e(v).devMode?"Development":"Production")),n(l,d)},$$slots:{default:!0}})}t(T);var J=a(T,2),Ee=a(s(J),2);{let i=Y(()=>e(v).release?"success":"default");_e(Ee,{get variant(){return e(i)},children:(l,_)=>{D();var d=w();C(()=>g(d,e(v).release?"Enabled (deny-by-default)":"Disabled (dev permissive)")),n(l,d)},$$slots:{default:!0}})}t(J);var he=a(J,2),oe=a(s(he),2),ye=s(oe);t(oe),t(he);var Ce=a(he,2);{var Ot=i=>{var l=ge(),_=te(l);U(_,17,()=>e(v).serviceKeys,Z,(d,m,c)=>{var u=Ps(),y=s(u);y.textContent=`Key ${c+1}`;var z=a(y,2),k=s(z),N=s(k,!0);t(k);var B=a(k,2);t(z),t(u),C(()=>g(N,e(m))),hs("click",B,()=>Pt(e(m))),n(d,u)}),n(i,l)};P(Ce,i=>{e(v).serviceKeys&&e(v).serviceKeys.length>0&&i(Ot)})}t(b),t(K);var Se=a(K,2),Qe=a(s(Se),2),Xe=s(Qe);U(Xe,17,()=>e(v).databases,Z,(i,l)=>{var _=Es(),d=s(_),m=s(d,!0);t(d);var c=a(d,2),u=s(c),y=a(u);{var z=k=>{_e(k,{variant:"primary",children:(N,B)=>{D();var X=w("access rule");n(N,X)},$$slots:{default:!0}})};P(y,k=>{e(l).hasAccess&&k(z)})}t(c),t(_),C(()=>{g(m,e(l).name),g(u,`${e(l).tableCount??""} table${e(l).tableCount!==1?"s":""} `)}),n(i,_)});var Ft=a(Xe,2);{var It=i=>{var l=Cs();n(i,l)};P(Ft,i=>{e(v).databases.length===0&&i(It)})}t(Qe),t(Se);var ze=a(Se,2),et=a(s(ze),2),Le=s(et),tt=a(s(Le),2),Ut=s(tt,!0);t(tt),t(Le);var Be=a(Le,2),st=a(s(Be),2),qt=s(st,!0);t(st),t(Be);var at=a(Be,2),rt=a(s(at),2),Wt=s(rt,!0);t(rt),t(at),t(et),t(ze);var Te=a(ze,2),it=a(s(Te),2),Ne=s(it),Ht=a(s(Ne),2);{let i=Y(()=>e(v).auth.anonymousAuth?"success":"default");_e(Ht,{get variant(){return e(i)},children:(l,_)=>{D();var d=w();C(()=>g(d,e(v).auth.anonymousAuth?"Enabled":"Disabled")),n(l,d)},$$slots:{default:!0}})}t(Ne);var nt=a(Ne,2),lt=a(s(nt),2),Jt=s(lt);{var Yt=i=>{var l=w();C(_=>g(l,_),[()=>e(v).auth.providers.join(", ")]),n(i,l)},Zt=i=>{var l=w("None configured");n(i,l)};P(Jt,i=>{e(v).auth.providers.length>0?i(Yt):i(Zt,!1)})}t(lt),t(nt),t(it),t(Te);var Re=a(Te,2),ot=a(s(Re),2),vt=s(ot),dt=a(s(vt),2),Gt=s(dt);{var Qt=i=>{var l=w();C(_=>g(l,_),[()=>e(v).storageBuckets.join(", ")]),n(i,l)},Xt=i=>{var l=w("None configured");n(i,l)};P(Gt,i=>{e(v).storageBuckets.length>0?i(Qt):i(Xt,!1)})}t(dt),t(vt),t(ot),t(Re);var Ke=a(Re,2),ct=a(s(Ke),2),es=s(ct);{var ts=i=>{var l=ge(),_=te(l);U(_,17,()=>e(v).rateLimiting,Z,(d,m)=>{var c=Ss(),u=s(c),y=s(u),z=s(y,!0);t(y);var k=a(y,2);{let L=Y(()=>At(e(m).binding));_e(k,{get variant(){return e(L)},children:(j,we)=>{D();var ee=w();C(I=>g(ee,I),[()=>Dt(e(m).binding)]),n(j,ee)},$$slots:{default:!0}})}t(u);var N=a(u,2),B=s(N),X=a(s(B),1,!0);t(B);var F=a(B,2),R=s(F,!0);t(F),t(N),t(c),C((L,j)=>{g(z,e(m).group),g(X,L),g(R,j)},[()=>bt(e(m).requests,e(m).window),()=>kt(e(m).binding)]),n(d,c)}),n(i,l)},ss=i=>{var l=zs();n(i,l)};P(es,i=>{e(v).rateLimiting.length>0?i(ts):i(ss,!1)})}t(ct),D(2),t(Ke);var ut=a(Ke,2),gt=a(s(ut),2),je=s(gt),_t=a(s(je),2),as=s(_t,!0);t(_t),t(je);var Ve=a(je,2),pt=a(s(Ve),2),rs=s(pt,!0);t(pt),t(Ve);var ft=a(Ve,2),mt=a(s(ft),2),is=s(mt,!0);t(mt),t(ft),t(gt),t(ut),t(f);var Me=a(f,2),Oe=s(Me),ns=a(s(Oe));V(ns,{variant:"primary",size:"sm",onclick:()=>o(ce,!0),children:(i,l)=>{D();var _=w("+ Add Admin");n(i,_)},$$slots:{default:!0}}),t(Oe);var ht=a(Oe,2),ls=s(ht);{var os=i=>{var l=ge(),_=te(l);U(_,16,()=>Array(2),Z,(d,m)=>{var c=Ls(),u=s(c);pe(u,{width:"150px",height:"12px"});var y=a(u,2);pe(y,{width:"80px",height:"12px"}),t(c),n(d,c)}),n(i,l)},vs=i=>{var l=Bs();n(i,l)},ds=i=>{var l=ge(),_=te(l);U(_,17,()=>e(de),d=>d.id,(d,m)=>{var c=Ts(),u=s(c),y=s(u,!0);t(u);var z=a(u,2),k=s(z),N=s(k,!0);t(k);var B=a(k,2);V(B,{variant:"secondary",size:"sm",onclick:()=>{o(q,e(m),!0),o(Q,"")},children:(F,R)=>{D();var L=w("Change Password");n(F,L)},$$slots:{default:!0}});var X=a(B,2);{let F=Y(()=>e(de).length<=1);V(X,{variant:"danger",size:"sm",onclick:()=>o(G,e(m),!0),get disabled(){return e(F)},children:(R,L)=>{D();var j=w("Delete");n(R,j)},$$slots:{default:!0}})}t(z),t(c),C(F=>{g(y,e(m).email),g(N,F)},[()=>new Date(e(m).createdAt).toLocaleDateString()]),n(d,c)}),n(i,l)};P(ls,i=>{e(qe)?i(os):e(de).length===0?i(vs,1):i(ds,!1)})}t(ht),t(Me);var cs=a(Me,2);{var us=i=>{var l=Os(),_=a(s(l),2);{var d=c=>{var u=Vs(),y=s(u);let z;var k=s(y,!0);t(y);var N=a(y,2);{var B=R=>{var L=Rs(),j=a(s(L),2);U(j,21,()=>e(W).deleted,Z,(we,ee)=>{var I=Ns(),Fe=s(I,!0);t(I),C(()=>g(Fe,e(ee))),n(we,I)}),t(j),t(L),n(R,L)};P(N,R=>{e(W).deleted.length>0&&R(B)})}var X=a(N,2);{var F=R=>{var L=js(),j=a(s(L),2);U(j,21,()=>e(W).failed,Z,(we,ee)=>{var I=Ks(),Fe=s(I);t(I),C(()=>g(Fe,`${e(ee).resource??""}: ${e(ee).error??""}`)),n(we,I)}),t(j),t(L),n(R,L)};P(X,R=>{e(W).failed.length>0&&R(F)})}t(u),C(()=>{z=ys(y,1,"danger-zone__result-message svelte-1i19ct2",null,z,{"danger-zone__result-message--success":e(W).success}),g(k,e(W).message)}),n(c,u)},m=c=>{var u=Ms(),y=s(u),z=a(s(y),2);V(z,{variant:"danger",size:"sm",onclick:Lt,children:(k,N)=>{D();var B=w("Delete App");n(k,B)},$$slots:{default:!0}}),t(y),t(u),n(c,u)};P(_,c=>{e(W)?c(d):c(m,!1)})}t(l),n(i,l)};P(cs,i=>{e(v).devMode||i(us)})}C((i,l,_,d,m,c)=>{g(ye,`${e(v).serviceKeyCount??""} configured`),g(Ut,i),g(qt,l),g(Wt,_),g(as,d),g(rs,m),g(is,c)},[()=>xe(e(v).bindings.kv),()=>xe(e(v).bindings.d1),()=>xe(e(v).bindings.vectorize),()=>e(v).bindings.kv.length>0?e(v).bindings.kv.join(", "):"None",()=>e(v).bindings.d1.length>0?e(v).bindings.d1.join(", "):"None",()=>e(v).bindings.vectorize.length>0?e(v).bindings.vectorize.join(", "):"None"]),n(h,E)};P(S,h=>{e(Ue)?h(M):e(v)?h(O,!1):h(H,1)})}n($,x)}});var Je=a(He,2);{var Nt=r=>{wt(r,{open:!0,title:"Delete App",message:"This will permanently delete ALL Cloudflare resources (databases, storage, KV, vectorize indexes, and the Worker). This action cannot be undone. Do you want to proceed?",confirmLabel:"Yes, delete everything",confirmVariant:"danger",onconfirm:Bt,oncancel:Pe})};P(Je,r=>{e(fe)&&r(Nt)})}var Ye=a(Je,2);{var Rt=r=>{Ie(r,{open:!0,title:"Confirm App Deletion",onclose:Pe,children:($,ue)=>{var x=Is(),S=a(s(x),4);$e(S,{placeholder:"DELETE_ALL_RESOURCES",get value(){return e(ne)},set value(h){o(ne,h,!0)}});var M=a(S,2),H=s(M);V(H,{variant:"secondary",onclick:Pe,children:(h,E)=>{D();var f=w("Cancel");n(h,f)},$$slots:{default:!0}});var O=a(H,2);{let h=Y(()=>e(ne)!=="DELETE_ALL_RESOURCES");V(O,{variant:"danger",get loading(){return e(De)},get disabled(){return e(h)},onclick:Tt,children:(E,f)=>{D();var K=w("Permanently Delete App");n(E,K)},$$slots:{default:!0}})}t(M),t(x),n($,x)},$$slots:{default:!0}})};P(Ye,r=>{e(me)&&r(Rt)})}var Ze=a(Ye,2);{var Kt=r=>{Ie(r,{open:!0,title:"Add Admin Account",onclose:()=>o(ce,!1),children:($,ue)=>{var x=Us(),S=s(x),M=s(S);$e(M,{label:"Email",type:"email",get value(){return e(re)},set value(f){o(re,f,!0)}});var H=a(M,2);$e(H,{label:"Password",type:"password",get value(){return e(ie)},set value(f){o(ie,f,!0)}}),t(S);var O=a(S,2),h=s(O);V(h,{variant:"secondary",onclick:()=>o(ce,!1),children:(f,K)=>{D();var b=w("Cancel");n(f,b)},$$slots:{default:!0}});var E=a(h,2);{let f=Y(()=>!e(re).trim()||e(ie).length<8);V(E,{variant:"primary",type:"submit",get loading(){return e(be)},get disabled(){return e(f)},children:(K,b)=>{D();var T=w("Create Admin");n(K,T)},$$slots:{default:!0}})}t(O),t(x),yt("submit",x,f=>{f.preventDefault(),Et()}),n($,x)},$$slots:{default:!0}})};P(Ze,r=>{e(ce)&&r(Kt)})}var Ge=a(Ze,2);{var jt=r=>{Ie(r,{open:!0,title:"Change Password",onclose:()=>o(q,null),children:($,ue)=>{var x=qs(),S=s(x),M=a(s(S)),H=s(M,!0);t(M),t(S);var O=a(S,2),h=s(O);$e(h,{label:"New Password",type:"password",get value(){return e(Q)},set value(b){o(Q,b,!0)}}),t(O);var E=a(O,2),f=s(E);V(f,{variant:"secondary",onclick:()=>o(q,null),children:(b,T)=>{D();var le=w("Cancel");n(b,le)},$$slots:{default:!0}});var K=a(f,2);{let b=Y(()=>e(Q).length<8);V(K,{variant:"primary",type:"submit",get loading(){return e(ke)},get disabled(){return e(b)},children:(T,le)=>{D();var J=w("Update Password");n(T,J)},$$slots:{default:!0}})}t(E),t(x),C(()=>g(H,e(q).email)),yt("submit",x,b=>{b.preventDefault(),St()}),n($,x)},$$slots:{default:!0}})};P(Ge,r=>{e(q)&&r(jt)})}var Vt=a(Ge,2);{var Mt=r=>{wt(r,{open:!0,title:"Delete Admin Account",get message(){return`Are you sure you want to delete the admin account ${e(G).email??""}? This cannot be undone.`},confirmLabel:"Delete",confirmVariant:"danger",onconfirm:Ct,oncancel:()=>o(G,null)})};P(Vt,r=>{e(G)&&r(Mt)})}n($t,We),fs()}ms(["click"]);export{ca as component};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as Ne}from"../chunks/DoPXzH7F.js";import{p as Te,t as f,g as t,a as Ee,d as g,c as o,b,s as d,r as i,u as w,ae as S,f as Re}from"../chunks/glwixJlP.js";import{d as We,s as B,a as X,e as ke}from"../chunks/D5h5A1cc.js";import{i as M}from"../chunks/UUazaC_N.js";import{e as oe,i as ie}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as Ne}from"../chunks/DoPXzH7F.js";import{p as Te,t as f,g as t,a as Ee,d as g,c as o,b,s as d,r as i,u as w,ae as S,f as Re}from"../chunks/glwixJlP.js";import{d as We,s as B,a as X,e as ke}from"../chunks/D5h5A1cc.js";import{i as M}from"../chunks/UUazaC_N.js";import{e as oe,i as ie}from"../chunks/BMMOfNi6.js";import{a as l,f as p,t as N}from"../chunks/BR_fL5Yv.js";import{s as Ae}from"../chunks/CxbRue-5.js";import{b as Pe,c as Ce,a as T,s as F}from"../chunks/C6puvcoR.js";import{b as He}from"../chunks/CyqB6g-D.js";import{s as Le,a as E}from"../chunks/B8vJP3wz.js";import{p as Xe}from"../chunks/p-WBlAu3.js";import{b as U}from"../chunks/BOjkBtym.js";import{s as Fe,n as Ue,t as je}from"../chunks/C0LrJucL.js";import{d as qe}from"../chunks/Ga6XaOJm.js";import{B as R}from"../chunks/Cs0GwzJA.js";var Ge=p("<option> </option>"),Ke=p('<div class="tables-create-actions svelte-scy45p"><a class="tables-create-link svelte-scy45p"><!></a> <a class="tables-create-link svelte-scy45p"><!></a></div>'),Oe=p(`<div class="tables-create-actions svelte-scy45p" aria-label="Schema editing unavailable outside dev mode"><!> <!></div> <p class="tables-dev-note svelte-scy45p">Schema changes require dev mode. Start <code class="svelte-scy45p">pnpm dev</code> to create DB blocks, add tables,
|
|
2
2
|
edit schema, or run upgrades.</p>`,1),Ve=p('<span class="tables-sidebar__provider-badge svelte-scy45p"> </span>'),Ye=p('<a><span class="tables-sidebar__icon svelte-scy45p"><svg width="14" height="14" viewBox="0 0 16 16" fill="none"><rect x="2" y="2" width="12" height="12" rx="1.5" stroke="currentColor" stroke-width="1.5"></rect><path d="M2 6H14M2 10H14M6 6V14" stroke="currentColor" stroke-width="1.5"></path></svg></span> <span class="tables-sidebar__name svelte-scy45p"> </span> <!> <span> </span></a>'),Je=p('<div class="tables-sidebar__empty svelte-scy45p">No tables</div>'),Qe=p('<button type="button" aria-label="Resize tables sidebar"></button>'),Ze=p('<div class="tables-layout svelte-scy45p"><aside class="tables-sidebar svelte-scy45p"><div class="tables-sidebar__header svelte-scy45p"><select class="tables-ns-filter svelte-scy45p" aria-label="Database filter"><option>All databases</option><!></select> <!></div> <nav class="tables-sidebar__list svelte-scy45p"><!> <!></nav></aside> <!> <div class="tables-main svelte-scy45p"><!></div></div>');function ua(ne,j){Te(j,!0);const le=()=>E(Xe,"$page",x),de=()=>E(qe,"$devInfoStore",x),ce=()=>E(Ue,"$namespaceNames",x),pe=()=>E(je,"$tablesByNamespace",x),[x,ve]=Le();let me=w(()=>le().params.table??""),_e=w(()=>de().devMode);const q="edgebase_tables_sidebar_width",G=180,K=360,O=200;let u=g(O),y=g(!1),W=g(!1),k=g(null),V=0,Y=O,D=g("all"),be=w(ce),J=w(()=>{const a=[];for(const[e,s]of Object.entries(pe()))for(const r of s)a.push({name:r.name,namespace:e,provider:r.def.provider,dynamic:r.def.dynamic});return a.sort((e,s)=>e.name.localeCompare(s.name)),a}),Q=w(()=>t(D)==="all"?t(J):t(J).filter(a=>a.namespace===t(D)));function Z(a){return a?"Per-tenant DB":"Single DB"}Ne(()=>{if(Fe.loadSchema(),typeof window>"u")return;try{const e=Number.parseInt(localStorage.getItem(q)??"",10);Number.isFinite(e)&&b(u,Math.min(K,Math.max(G,e)),!0)}catch{}const a=()=>{b(W,window.innerWidth<=768)};return a(),window.addEventListener("resize",a),()=>{A(),window.removeEventListener("resize",a)}});function ue(a){return Math.min(K,Math.max(G,a))}function fe(a){if(!(typeof window>"u"))try{localStorage.setItem(q,String(a))}catch{}}function A(){t(y)&&(b(y,!1),document.body.style.cursor="",document.body.style.userSelect="",fe(t(u)))}function ye(a){t(y)&&(a.preventDefault(),b(u,ue(Y+a.clientX-V),!0))}function he(a){var e;t(W)||(a.preventDefault(),b(y,!0),V=a.clientX,Y=t(u),document.body.style.cursor="col-resize",document.body.style.userSelect="none",(e=t(k))==null||e.setPointerCapture(a.pointerId))}var P=Ze(),z=o(P),C=o(z),I=o(C),H=o(I);H.value=H.__value="all";var $e=d(H);oe($e,17,()=>t(be),ie,(a,e)=>{var s=Ge(),r=o(s,!0);i(s);var n={};f(()=>{B(r,t(e)),n!==(n=t(e))&&(s.value=(s.__value=t(e))??"")}),l(a,s)}),i(I);var ge=d(I,2);{var we=a=>{var e=Ke(),s=o(e),r=o(s);R(r,{variant:"secondary",size:"sm",children:(c,m)=>{S();var _=N("+ DB");l(c,_)},$$slots:{default:!0}}),i(s);var n=d(s,2),v=o(n);R(v,{variant:"primary",size:"sm",children:(c,m)=>{S();var _=N("+ Table");l(c,_)},$$slots:{default:!0}}),i(n),i(e),f(()=>{T(s,"href",`${U??""}/database/new`),T(n,"href",`${U??""}/database/tables/new`)}),l(a,e)},Se=a=>{var e=Oe(),s=Re(e),r=o(s);R(r,{variant:"secondary",size:"sm",disabled:!0,children:(v,c)=>{S();var m=N("+ DB");l(v,m)},$$slots:{default:!0}});var n=d(r,2);R(n,{variant:"primary",size:"sm",disabled:!0,children:(v,c)=>{S();var m=N("+ Table");l(v,m)},$$slots:{default:!0}}),i(s),S(2),l(a,e)};M(ge,a=>{t(_e)?a(we):a(Se,!1)})}i(C);var ee=d(C,2),ae=o(ee);oe(ae,17,()=>t(Q),ie,(a,e)=>{var s=Ye();let r;var n=d(o(s),2),v=o(n,!0);i(n);var c=d(n,2);{var m=h=>{var $=Ve(),L=o($,!0);i($),f(Me=>B(L,Me),[()=>t(e).provider==="postgres"?"PG":t(e).provider.toUpperCase()]),l(h,$)};M(c,h=>{t(e).provider&&h(m)})}var _=d(c,2);let re;var Be=o(_,!0);i(_),i(s),f((h,$,L)=>{T(s,"href",`${U??""}/database/tables/${h??""}`),r=F(s,1,"tables-sidebar__item svelte-scy45p",null,r,{"tables-sidebar__item--active":t(me)===t(e).name}),T(s,"title",`${t(e).name??""} (${t(e).namespace??""}${t(e).provider?` · ${t(e).provider}`:""} · ${$??""})`),B(v,t(e).name),re=F(_,1,"tables-sidebar__topology-badge svelte-scy45p",null,re,{"tables-sidebar__topology-badge--tenant":t(e).dynamic}),B(Be,L)},[()=>encodeURIComponent(t(e).name),()=>Z(t(e).dynamic),()=>Z(t(e).dynamic)]),l(a,s)});var xe=d(ae,2);{var De=a=>{var e=Je();l(a,e)};M(xe,a=>{t(Q).length===0&&a(De)})}i(ee),i(z);var te=d(z,2);{var ze=a=>{var e=Qe();let s;He(e,r=>b(k,r),()=>t(k)),f(()=>s=F(e,1,"tables-sidebar__resizer svelte-scy45p",null,s,{"tables-sidebar__resizer--active":t(y)})),X("pointerdown",e,he),X("pointermove",e,ye),X("pointerup",e,A),ke("pointercancel",e,A),l(a,e)};M(te,a=>{t(W)||a(ze)})}var se=d(te,2),Ie=o(se);Ae(Ie,()=>j.children),i(se),i(P),f(()=>Ce(z,`width:${t(u)}px; min-width:${t(u)}px;`)),Pe(I,()=>t(D),a=>b(D,a)),l(ne,P),Ee(),ve()}We(["pointerdown","pointermove","pointerup"]);export{ua as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{o as vt}from"../chunks/DoPXzH7F.js";import{p as pt,d as f,M as K,f as S,a as mt,b as a,g as r,s as B,u as L,c as b,r as v,ae as q,t as U}from"../chunks/glwixJlP.js";import{s as j}from"../chunks/D5h5A1cc.js";import{i as z}from"../chunks/UUazaC_N.js";import{a as F,b as _t,t as W,e as bt}from"../chunks/
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{o as vt}from"../chunks/DoPXzH7F.js";import{p as pt,d as f,M as K,f as S,a as mt,b as a,g as r,s as B,u as L,c as b,r as v,ae as q,t as U}from"../chunks/glwixJlP.js";import{s as j}from"../chunks/D5h5A1cc.js";import{i as z}from"../chunks/UUazaC_N.js";import{a as F,b as _t,t as W,e as bt}from"../chunks/BMMOfNi6.js";import{a as n,f as u,t as N,c as A}from"../chunks/BR_fL5Yv.js";import{a as gt}from"../chunks/C6puvcoR.js";import{s as ht,a as kt}from"../chunks/B8vJP3wz.js";import{b as $t}from"../chunks/BOjkBtym.js";import{d as Bt}from"../chunks/Ga6XaOJm.js";import{P as yt}from"../chunks/CwROoZK0.js";import{s as wt}from"../chunks/Q2nPFxS6.js";import{E as xt}from"../chunks/DnyL7Zq-.js";import{B as T}from"../chunks/Cs0GwzJA.js";import{I as Mt}from"../chunks/DrQSgw-f.js";import{M as St}from"../chunks/7B47DvSx.js";var qt=u('<div class="loading-state svelte-b46l0q"><div class="loading-spinner svelte-b46l0q"></div> <span>Loading storage buckets...</span></div>'),Ct=u('<div class="bucket-card__stats svelte-b46l0q"><span> </span> <span class="bucket-card__dot svelte-b46l0q">·</span> <span> </span></div>'),Pt=u('<div class="bucket-card__hint svelte-b46l0q">Browse files</div>'),Et=u('<a class="bucket-card svelte-b46l0q"><div class="bucket-card__icon svelte-b46l0q" aria-hidden="true"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19C3 20.66 7.03 22 12 22C16.97 22 21 20.66 21 19V5"></path><path d="M3 12C3 13.66 7.03 15 12 15C16.97 15 21 13.66 21 12"></path></svg></div> <div class="bucket-card__name svelte-b46l0q"> </div> <!></a>'),It=u('<div class="bucket-grid svelte-b46l0q"></div>'),Ot=u('<div class="create-modal svelte-b46l0q"><!> <p class="create-modal__hint svelte-b46l0q">This adds a new bucket entry to <code>edgebase.config.ts</code> for local development.</p></div>'),jt=u("<!> <!>",1),zt=u("<!> <!>",1);function Zt(J,Q){pt(Q,!0);const X=()=>kt(Bt,"$devInfoStore",Y),[Y,Z]=ht();let V=f(!0),p=f(K([])),g=f(K({})),h=f(!1),y=f(""),m=f(""),C=f(!1);function tt(t){return new Promise(s=>setTimeout(s,t))}async function R(){const t=await F.fetch("data/storage/buckets");return a(p,t.buckets,!0),t.buckets.length>0?await rt(t.buckets):a(g,{},!0),t.buckets}async function et(t,s=20,o=300){for(let e=0;e<s;e+=1){try{if((await R()).includes(t))return!0}catch{}e<s-1&&await tt(o)}return!1}function at(t){if(t===0)return"0 B";const s=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(t)/Math.log(1024)),e=t/Math.pow(1024,o);return`${e<10?e.toFixed(1):Math.round(e)} ${s[o]}`}async function rt(t){const s=await Promise.allSettled(t.map(async e=>{const l=await F.fetch(`data/storage/buckets/${encodeURIComponent(e)}/stats`);return{bucket:e,stats:l}})),o={};for(const e of s)e.status==="fulfilled"&&(o[e.value.bucket]=e.value.stats);a(g,o,!0)}vt(async()=>{try{await R()}catch(t){W(t instanceof Error?t.message:"Failed to load storage buckets. Check your connection and configuration.")}finally{a(V,!1)}});async function st(){const t=r(y).trim();if(!t){a(m,"Bucket name is required.");return}a(C,!0),a(m,"");try{await F.schemaMutation("schema/storage/buckets",{method:"POST",body:{name:t}}),!await et(t)&&!r(p).includes(t)&&(a(p,[...r(p),t],!0),a(g,{...r(g),[t]:{totalObjects:0,totalSize:0}},!0)),a(h,!1),a(y,""),_t(`Bucket "${t}" created`)}catch(s){a(m,s instanceof Error?s.message:"Failed to create bucket.",!0),W(r(m))}finally{a(C,!1)}}var D=zt(),G=S(D);yt(G,{title:"Storage",description:"Manage file storage buckets",get docsHref(){return wt},actions:s=>{var o=A(),e=S(o);{var l=c=>{T(c,{variant:"primary",size:"sm",onclick:()=>{a(m,""),a(h,!0)},children:(d,w)=>{q();var i=N("+ Create Bucket");n(d,i)},$$slots:{default:!0}})};z(e,c=>{X().devMode&&c(l)})}n(s,o)},children:(s,o)=>{var e=A(),l=S(e);{var c=i=>{var k=qt();n(i,k)},d=i=>{xt(i,{title:"No buckets",description:"No storage buckets found. Buckets are defined in your EdgeBase configuration."})},w=i=>{var k=It();bt(k,20,()=>r(p),P=>P,(P,E)=>{const x=L(()=>r(g)[E]);var M=Et(),I=B(b(M),2),it=b(I,!0);v(I);var nt=B(I,2);{var lt=_=>{var $=Ct(),O=b($),dt=b(O);v(O);var H=B(O,4),ut=b(H,!0);v(H),v($),U(ft=>{j(dt,`${r(x).totalObjects??""} ${r(x).totalObjects===1?"file":"files"}`),j(ut,ft)},[()=>at(r(x).totalSize)]),n(_,$)},ct=_=>{var $=Pt();n(_,$)};z(nt,_=>{r(x)?_(lt):_(ct,!1)})}v(M),U(()=>{gt(M,"href",`${$t??""}/storage/${E??""}`),j(it,E)}),n(P,M)}),v(k),n(i,k)};z(l,i=>{r(V)?i(c):r(p).length===0?i(d,1):i(w,!1)})}n(s,e)}});var ot=B(G,2);St(ot,{title:"Create Bucket",maxWidth:"420px",get open(){return r(h)},set open(o){a(h,o,!0)},children:o=>{var e=Ot(),l=b(e);{let c=L(()=>r(m)||void 0);Mt(l,{label:"Bucket Name",placeholder:"uploads",get error(){return r(c)},get value(){return r(y)},set value(d){a(y,d,!0)}})}q(2),v(e),n(o,e)},footer:o=>{var e=jt(),l=S(e);T(l,{variant:"secondary",onclick:()=>a(h,!1),children:(d,w)=>{q();var i=N("Cancel");n(d,i)},$$slots:{default:!0}});var c=B(l,2);T(c,{variant:"primary",get loading(){return r(C)},onclick:st,children:(d,w)=>{q();var i=N("Create Bucket");n(d,i)},$$slots:{default:!0}}),n(o,e)},$$slots:{default:!0,footer:!0}}),n(J,D),mt(),Z()}export{Zt as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunks/CWj6FrbW.js";import{g as jt,o as Nt}from"../chunks/DoPXzH7F.js";import{p as tt,d as u,M as Je,a as at,f as me,t as k,s,g as e,b as t,c as l,u as x,ae as j,r,w as St}from"../chunks/glwixJlP.js";import{d as ut,e as vt,a as W,s as M}from"../chunks/D5h5A1cc.js";import{i as ie}from"../chunks/UUazaC_N.js";import{t as Pe,b as Ye,e as Qe,i as Pt,a as Xe}from"../chunks/CCKNu7m7.js";import{a as n,t as ne,f as h,c as Mt}from"../chunks/BR_fL5Yv.js";import{s as Me,a as q,f as Gt,r as et,g as $t,e as xt}from"../chunks/C6puvcoR.js";import{s as Tt,a as dt}from"../chunks/B8vJP3wz.js";import{p as Zt}from"../chunks/BcR-Rdj9.js";import{g as Bt,a as ft,c as qt,d as Jt}from"../chunks/BsokvhWC.js";import{d as Qt}from"../chunks/wJsUhbfZ.js";import{P as Xt}from"../chunks/CwROoZK0.js";import{s as Yt}from"../chunks/Q2nPFxS6.js";import{B as ce}from"../chunks/Cs0GwzJA.js";import{E as ea}from"../chunks/DnyL7Zq-.js";import{C as zt}from"../chunks/Bh56EfQ_.js";import{p as Oe}from"../chunks/C4D51vTW.js";import{M as pt}from"../chunks/7B47DvSx.js";import{I as ta}from"../chunks/DrQSgw-f.js";import{S as aa}from"../chunks/zfauFM8P.js";var ra=h("<!> <!>",1),la=h('<div class="key-input svelte-1myht9e"><!></div>'),sa=h('<img class="file-item__thumb svelte-1myht9e"/>'),oa=h('<div class="file-item__icon svelte-1myht9e"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline></svg></div>'),ia=h('<div class="file-item svelte-1myht9e"><!> <div class="file-item__info svelte-1myht9e"><span class="file-item__name svelte-1myht9e"> </span> <span class="file-item__meta svelte-1myht9e"> </span></div> <button class="file-item__remove svelte-1myht9e" aria-label="Remove"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div>'),na=h('<div class="file-list svelte-1myht9e"></div>'),ca=h('<label><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line></svg> <p class="dropzone__text svelte-1myht9e">Drag & drop files here</p> <p class="dropzone__hint svelte-1myht9e">or click to browse</p> <input type="file" multiple="" class="dropzone__input svelte-1myht9e"/></label> <!> <!>',1);function va(ke,m){tt(m,!0);const J=()=>dt(ft,"$authStore",Q),[Q,B]=Tt();let L=Oe(m,"open",15,!1),D=Oe(m,"onUploaded",3,()=>{}),_=u(Je([])),A=u(""),ve=u(!1),z=u(!1);const w=`file-upload-${Math.random().toString(36).slice(2,9)}`;let o=x(()=>e(_).map(v=>({name:v.name,size:K(v.size),type:v.type,isImage:v.type.startsWith("image/"),url:v.type.startsWith("image/")?URL.createObjectURL(v):""})));function F(){t(_,[],!0),t(A,""),t(z,!1)}function I(v){var f;v.preventDefault(),t(z,!1),(f=v.dataTransfer)!=null&&f.files&&t(_,[...e(_),...Array.from(v.dataTransfer.files)],!0)}function R(v){const f=v.target;f.files&&t(_,[...e(_),...Array.from(f.files)],!0),f.value=""}function y(v){t(_,e(_).filter((f,d)=>d!==v),!0)}async function de(){if(e(_).length===0)return;t(ve,!0);let v=0;for(const f of e(_))try{const d=new FormData;d.append("file",f),e(_).length===1&&e(A).trim()&&d.append("key",e(A).trim());const c=await fetch(Bt(`data/storage/buckets/${m.bucket}/upload`),{method:"POST",headers:{Authorization:`Bearer ${J().accessToken}`},body:d});if(!c.ok){const b=await c.json().catch(()=>({message:"Upload failed"}));throw new Error(b.message||"Upload failed")}v++}catch(d){Pe(`Failed to upload ${f.name}: ${d instanceof Error?d.message:"Unknown error"}`)}t(ve,!1),v>0&&(Ye(`Uploaded ${v} file${v>1?"s":""}`),L(!1),F(),D()())}function K(v){if(v===0)return"0 B";const f=["B","KB","MB","GB"],d=Math.floor(Math.log(v)/Math.log(1024));return`${(v/Math.pow(1024,d)).toFixed(d===0?0:1)} ${f[d]}`}pt(ke,{title:"Upload Files",onclose:F,get open(){return L()},set open(f){L(f)},footer:f=>{var d=ra(),c=me(d);ce(c,{variant:"secondary",onclick:()=>{L(!1),F()},children:(N,ue)=>{j();var fe=ne("Cancel");n(N,fe)},$$slots:{default:!0}});var b=s(c,2);{let N=x(()=>e(_).length===0);ce(b,{variant:"primary",onclick:de,get loading(){return e(ve)},get disabled(){return e(N)},children:(ue,fe)=>{j();var U=ne();k(()=>M(U,`Upload ${e(_).length>0?`(${e(_).length})`:""}`)),n(ue,U)},$$slots:{default:!0}})}n(f,d)},children:(f,d)=>{var c=ca(),b=me(c);let N;var ue=s(l(b),6);r(b);var fe=s(b,2);{var U=T=>{var O=la(),Y=l(O);ta(Y,{label:"Custom key (optional)",get placeholder(){return e(_)[0].name},get value(){return e(A)},set value(H){t(A,H,!0)}}),r(O),n(T,O)};ie(fe,T=>{e(_).length===1&&T(U)})}var re=s(fe,2);{var X=T=>{var O=na();Qe(O,21,()=>e(o),Pt,(Y,H,Te)=>{var De=ia(),He=l(De);{var rt=pe=>{var ge=sa();k(()=>{q(ge,"src",e(H).url),q(ge,"alt",e(H).name)}),n(pe,ge)},Ce=pe=>{var ge=oa();n(pe,ge)};ie(He,pe=>{e(H).isImage?pe(rt):pe(Ce,!1)})}var Le=s(He,2),Be=l(Le),Ve=l(Be,!0);r(Be);var ee=s(Be,2),We=l(ee);r(ee),r(Le);var je=s(Le,2);r(De),k(()=>{M(Ve,e(H).name),M(We,`${e(H).size??""} · ${(e(H).type||"unknown")??""}`)}),W("click",je,()=>y(Te)),n(Y,De)}),r(O),n(T,O)};ie(re,T=>{e(o).length>0&&T(X)})}k(()=>{N=Me(b,1,"dropzone svelte-1myht9e",null,N,{"dropzone--active":e(z)}),q(b,"for",w),q(ue,"id",w)}),vt("dragover",b,T=>{T.preventDefault(),t(z,!0)}),vt("dragleave",b,()=>{t(z,!1)}),vt("drop",b,I),W("change",ue,R),n(f,c)},$$slots:{footer:!0,default:!0}}),at(),B()}ut(["change","click"]);var da=h("<img/>"),ua=h('<span><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" class="svelte-zoylhi"><rect x="2" y="2" width="12" height="12" rx="1.5" class="svelte-zoylhi"></rect><circle cx="5.5" cy="5.5" r="1" class="svelte-zoylhi"></circle><path d="M2 11l3-3 2 2 3-3 4 4" class="svelte-zoylhi"></path></svg></span>'),fa=h("<span></span>");function Ut(ke,m){tt(m,!0);let J=Oe(m,"alt",3,""),Q=Oe(m,"class",3,""),B=u(null),L=u(!1);St(()=>{const w=m.src;let o=!1,F=null;t(B,null),t(L,!1);const I=jt(ft);return fetch(w,{headers:I.accessToken?{Authorization:`Bearer ${I.accessToken}`}:{}}).then(R=>o||!R.ok?(o||t(L,!0),null):R.blob()).then(R=>{o||!R||(F=URL.createObjectURL(R),t(B,F,!0))}).catch(()=>{o||t(L,!0)}),()=>{o=!0,F&&URL.revokeObjectURL(F)}});var D=Mt(),_=me(D);{var A=w=>{var o=da();k(()=>{q(o,"src",e(B)),q(o,"alt",J()),Me(o,1,Gt(Q()),"svelte-zoylhi")}),n(w,o)},ve=w=>{var o=ua();k(()=>{Me(o,1,`auth-img-fallback ${Q()??""}`,"svelte-zoylhi"),q(o,"aria-label",J())}),n(w,o)},z=w=>{var o=fa();k(()=>Me(o,1,`auth-img-loading ${Q()??""}`,"svelte-zoylhi")),n(w,o)};ie(_,w=>{e(B)?w(A):e(L)?w(ve,1):w(z,!1)})}n(ke,D),at()}var pa=h('<div class="share__url-row svelte-vlp39"><input class="share__url-input svelte-vlp39" type="text" readonly=""/> <!></div>'),ha=h('<div class="share svelte-vlp39"><p class="share__filename svelte-vlp39"> </p> <div class="share__section svelte-vlp39"><div class="share__label svelte-vlp39"><span class="share__label-text svelte-vlp39">Public URL</span> <span class="share__hint svelte-vlp39">Works if bucket read rule allows public access</span></div> <div class="share__url-row svelte-vlp39"><input class="share__url-input svelte-vlp39" type="text" readonly=""/> <!></div></div> <div class="share__section svelte-vlp39"><div class="share__label svelte-vlp39"><span class="share__label-text svelte-vlp39">Signed URL</span> <span class="share__hint svelte-vlp39">Time-limited access, no auth required</span></div> <div class="share__signed-row svelte-vlp39"><!> <!></div> <!></div> <div class="share__usage svelte-vlp39"><p class="share__usage-title svelte-vlp39">Usage in HTML</p> <code class="share__code svelte-vlp39"><img src="<span class="share__code-url svelte-vlp39">…copied URL…</span>" /></code></div></div>');function _a(ke,m){tt(m,!0);let J=Oe(m,"open",15,!1),Q=u("1h"),B=u(""),L=u(!1),D=u(null);const _=[{value:"1h",label:"1 hour"},{value:"1d",label:"1 day"},{value:"7d",label:"7 days"},{value:"30d",label:"30 days"}];let A=x(()=>qt(`/api/storage/${m.bucket}/${m.fileKey}`)),ve=x(()=>m.fileKey.includes("/")?m.fileKey.split("/").pop()??m.fileKey:m.fileKey);async function z(){t(L,!0),t(B,"");try{const o=await Xe.fetch(`data/storage/buckets/${m.bucket}/signed-url`,{method:"POST",body:{key:m.fileKey,expiresIn:e(Q)}});t(B,o.url,!0)}catch(o){Pe(o instanceof Error?o.message:"Failed to create signed URL")}finally{t(L,!1)}}async function w(o,F){try{await navigator.clipboard.writeText(o),t(D,F,!0),Ye("URL copied to clipboard"),setTimeout(()=>{t(D,null)},2e3)}catch{Pe("Failed to copy URL")}}St(()=>{J()&&(t(B,""),t(D,null))}),pt(ke,{title:"Share File",get open(){return J()},set open(o){J(o)},children:(o,F)=>{var I=ha(),R=l(I),y=l(R,!0);r(R);var de=s(R,2),K=s(l(de),2),v=l(K);et(v);var f=s(v,2);{let U=x(()=>e(D)==="public"?"primary":"secondary");ce(f,{get variant(){return e(U)},size:"sm",onclick:()=>w(e(A),"public"),children:(re,X)=>{j();var T=ne();k(()=>M(T,e(D)==="public"?"Copied!":"Copy")),n(re,T)},$$slots:{default:!0}})}r(K),r(de);var d=s(de,2),c=s(l(d),2),b=l(c);aa(b,{get options(){return _},get value(){return e(Q)},set value(U){t(Q,U,!0)}});var N=s(b,2);ce(N,{variant:"primary",size:"sm",get loading(){return e(L)},onclick:z,children:(U,re)=>{j();var X=ne("Generate");n(U,X)},$$slots:{default:!0}}),r(c);var ue=s(c,2);{var fe=U=>{var re=pa(),X=l(re);et(X);var T=s(X,2);{let O=x(()=>e(D)==="signed"?"primary":"secondary");ce(T,{get variant(){return e(O)},size:"sm",onclick:()=>w(e(B),"signed"),children:(Y,H)=>{j();var Te=ne();k(()=>M(Te,e(D)==="signed"?"Copied!":"Copy")),n(Y,Te)},$$slots:{default:!0}})}r(re),k(()=>$t(X,e(B))),W("click",X,O=>O.currentTarget.select()),n(U,re)};ie(ue,U=>{e(B)&&U(fe)})}r(d),j(2),r(I),k(()=>{M(y,e(ve)),$t(v,e(A))}),W("click",v,U=>U.currentTarget.select()),n(o,I)},$$slots:{default:!0}}),at()}ut(["click"]);var ma=h("<!> <a><!></a>",1),ga=h('<span class="breadcrumb__sep svelte-f2o7w5">/</span> <button> </button>',1),wa=h('<div class="bulk-bar svelte-f2o7w5"><span class="bulk-bar__count svelte-f2o7w5"> </span> <div class="bulk-bar__actions svelte-f2o7w5"><!></div> <button class="bulk-bar__clear svelte-f2o7w5">Clear</button></div>'),ya=h('<div class="loading-state svelte-f2o7w5">Loading files...</div>'),ba=h('<tr class="folder-row svelte-f2o7w5"><td class="col-checkbox svelte-f2o7w5"></td><td class="col-preview svelte-f2o7w5"><span class="folder-icon svelte-f2o7w5"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 4V13H14V5H8L6.5 3H2V4Z" stroke-linejoin="round"></path></svg></span></td><td class="col-key svelte-f2o7w5" colspan="4"><button class="folder-btn svelte-f2o7w5"> </button></td><td class="col-actions svelte-f2o7w5"></td></tr>'),ka=h('<button type="button" class="thumb-button svelte-f2o7w5"><!></button>'),$a=h('<span class="file-icon svelte-f2o7w5"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 2H10L13 5V14H4V2Z" stroke-linejoin="round"></path><path d="M10 2V5H13"></path></svg></span>'),xa=h('<tr><td class="col-checkbox svelte-f2o7w5"><input type="checkbox" class="svelte-f2o7w5"/></td><td class="col-preview svelte-f2o7w5"><!></td><td class="col-key svelte-f2o7w5"><span class="file-key svelte-f2o7w5"> </span></td><td class="col-size svelte-f2o7w5"> </td><td class="col-type svelte-f2o7w5"><span class="mime-type svelte-f2o7w5"> </span></td><td class="col-date svelte-f2o7w5"> </td><td class="col-actions svelte-f2o7w5"><div class="action-btns svelte-f2o7w5"><button class="icon-btn svelte-f2o7w5" title="Download"><svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 2v9M4 8l4 4 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M2 13h12" stroke-linecap="round"></path></svg></button> <button class="icon-btn svelte-f2o7w5" title="Share"><svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="4" cy="8" r="2"></circle><circle cx="12" cy="4" r="2"></circle><circle cx="12" cy="12" r="2"></circle><path d="M5.7 7l4.6-2M5.7 9l4.6 2"></path></svg></button> <!></div></td></tr>'),za=h('<div class="pagination svelte-f2o7w5"><!></div>'),Ua=h('<div class="table-wrapper svelte-f2o7w5"><table class="file-table svelte-f2o7w5"><thead class="svelte-f2o7w5"><tr><th class="col-checkbox svelte-f2o7w5"><input type="checkbox" aria-label="Select all files" class="svelte-f2o7w5"/></th><th class="col-preview svelte-f2o7w5"></th><th class="col-key svelte-f2o7w5">Name</th><th class="col-size svelte-f2o7w5">Size</th><th class="col-type svelte-f2o7w5">Type</th><th class="col-date svelte-f2o7w5">Uploaded</th><th class="col-actions svelte-f2o7w5"></th></tr></thead><tbody class="svelte-f2o7w5"><!><!></tbody></table></div> <!>',1),Sa=h('<nav class="breadcrumb svelte-f2o7w5"><button> </button> <!></nav> <!> <!>',1),Pa=h('<div class="image-preview svelte-f2o7w5"><div class="image-preview__frame svelte-f2o7w5"><!></div> <dl class="image-preview__meta svelte-f2o7w5"><div class="image-preview__meta-row svelte-f2o7w5"><dt class="svelte-f2o7w5">Path</dt> <dd class="svelte-f2o7w5"> </dd></div> <div class="image-preview__meta-row svelte-f2o7w5"><dt class="svelte-f2o7w5">Type</dt> <dd class="svelte-f2o7w5"> </dd></div> <div class="image-preview__meta-row svelte-f2o7w5"><dt class="svelte-f2o7w5">Size</dt> <dd class="svelte-f2o7w5"> </dd></div> <div class="image-preview__meta-row svelte-f2o7w5"><dt class="svelte-f2o7w5">Uploaded</dt> <dd class="svelte-f2o7w5"> </dd></div></dl></div>'),Ma=h("<!> <!> <!> <!> <!> <!>",1);function Qa(ke,m){tt(m,!0);const J=()=>dt(Zt,"$page",B),Q=()=>dt(ft,"$authStore",B),[B,L]=Tt();let D=u(!1),_=u(!1),A=u("");function ve(a){return!!a&&a.startsWith("image/")}let z=x(()=>J().params.bucket??""),w=u(!0),o=u(Je([])),F=u(Je([])),I=u(null),R=u(!1),y=u(""),de=u(!1),K=u(null),v=u(!1),f=u(!1),d=u(null),c=u(Je(new Set)),b=u(!1),N=u(!1);function ue(a){const i=new Set(e(c));i.has(a)?i.delete(a):i.add(a),t(c,i,!0)}function fe(){e(c).size===e(o).length?t(c,new Set,!0):t(c,new Set(e(o).map(a=>a.key)),!0)}function U(){t(c,new Set,!0)}async function re(){t(b,!1),t(N,!0);const a=[...e(c)],i=await Promise.allSettled(a.map(async S=>{await Xe.fetch(`data/storage/buckets/${e(z)}/objects/${encodeURIComponent(S)}`,{method:"DELETE"})})),g=i.filter(S=>S.status==="fulfilled").length,$=i.filter(S=>S.status==="rejected").length;$===0?Ye(`Deleted ${g} file${g!==1?"s":""}`):Pe(`${g} succeeded, ${$} failed`),t(c,new Set,!0),t(N,!1),Y()}let X=x(()=>(()=>{if(!e(y))return[];const a=e(y).replace(/\/$/,"").split("/");return a.map((i,g)=>({label:i,prefix:a.slice(0,g+1).join("/")+"/"}))})());function T(a){return a?a.endsWith("/")?a:`${a}/`:""}function O(a){const i=new URL(window.location.href);a?i.searchParams.set("prefix",a):i.searchParams.delete("prefix"),history.replaceState(history.state,"",i.toString())}async function Y(a=!1){a?t(R,!0):t(w,!0);try{let i=`data/storage/buckets/${e(z)}/objects?limit=50&delimiter=/`;e(y)&&(i+=`&prefix=${encodeURIComponent(e(y))}`),a&&e(I)&&(i+=`&cursor=${encodeURIComponent(e(I))}`);const g=await Xe.fetch(i),$=(g.objects||[]).filter(S=>(e(y)?S.key.replace(e(y),""):S.key).length>0);a?t(o,[...e(o),...$],!0):(t(o,$,!0),t(F,g.folders||[],!0)),t(I,g.cursor,!0)}catch(i){Pe(i instanceof Error?i.message:"Failed to load objects")}finally{t(w,!1),t(R,!1)}}function H(a){t(y,T(a),!0),O(e(y)),t(I,null),t(c,new Set,!0),Y()}function Te(a){t(K,a,!0),t(de,!0)}function De(a){t(d,a,!0),t(f,!0)}function He(){t(f,!1),t(d,null)}async function rt(){if(e(K)){t(v,!0);try{await Xe.fetch(`data/storage/buckets/${e(z)}/objects/${encodeURIComponent(e(K))}`,{method:"DELETE"}),t(o,e(o).filter(a=>a.key!==e(K)),!0),e(c).delete(e(K)),t(c,new Set(e(c)),!0),Ye(`Deleted ${e(K)}`)}catch(a){Pe(a instanceof Error?a.message:"Failed to delete object")}finally{t(v,!1),t(K,null)}}}function Ce(a){return Bt(`data/storage/buckets/${e(z)}/objects/${encodeURIComponent(a)}`)}async function Le(a){try{const i=await fetch(Ce(a),{headers:{Authorization:`Bearer ${Q().accessToken}`}});if(!i.ok){const $=await i.json().catch(()=>({message:"Download failed"}));throw new Error($.message||"Download failed")}const g=await i.blob();Qt(g,ee(a))}catch(i){Pe(i instanceof Error?i.message:"Failed to download file")}}function Be(a){if(a===0)return"0 B";const i=["B","KB","MB","GB","TB"],g=Math.floor(Math.log(a)/Math.log(1024));return`${(a/Math.pow(1024,g)).toFixed(g===0?0:1)} ${i[g]}`}function Ve(a){try{return new Date(a).toLocaleString()}catch{return a}}function ee(a){return e(y)&&a.startsWith(e(y))?a.slice(e(y).length):a}Nt(()=>{t(y,T(J().url.searchParams.get("prefix")??""),!0),Y()});var We=Ma(),je=me(We);Xt(je,{get title(){return e(z)},description:"Browse files in this bucket",get docsHref(){return Yt},actions:i=>{var g=ma(),$=me(g);ce($,{variant:"primary",size:"sm",onclick:()=>t(D,!0),children:(se,$e)=>{j();var he=ne("Upload Files");n(se,he)},$$slots:{default:!0}});var S=s($,2),le=l(S);ce(le,{variant:"secondary",size:"sm",children:(se,$e)=>{j();var he=ne("Back to Buckets");n(se,he)},$$slots:{default:!0}}),r(S),k(()=>q(S,"href",`${Jt}/storage`)),n(i,g)},children:(i,g)=>{var $=Sa(),S=me($),le=l(S);let se;var $e=l(le,!0);r(le);var he=s(le,2);Qe(he,17,()=>e(X),Pt,(P,C)=>{var E=ga(),G=s(me(E),2);let Z;var _e=l(G,!0);r(G),k(()=>{Z=Me(G,1,"breadcrumb__item svelte-f2o7w5",null,Z,{"breadcrumb__item--active":e(C).prefix===e(y)}),M(_e,e(C).label)}),W("click",G,()=>H(e(C).prefix)),n(P,E)}),r(S);var Ne=s(S,2);{var Ge=P=>{var C=wa(),E=l(C),G=l(E);r(E);var Z=s(E,2),_e=l(Z);ce(_e,{variant:"danger",size:"sm",onclick:()=>t(b,!0),get disabled(){return e(N)},children:(ze,Ue)=>{j();var we=ne("Delete Selected");n(ze,we)},$$slots:{default:!0}}),r(Z);var xe=s(Z,2);r(C),k(()=>M(G,`${e(c).size??""} selected`)),W("click",xe,U),n(P,C)};ie(Ne,P=>{e(c).size>0&&P(Ge)})}var Fe=s(Ne,2);{var Ze=P=>{var C=ya();n(P,C)},lt=P=>{{let C=x(()=>e(y)?"This folder is empty.":"This bucket is empty.");ea(P,{title:"No files",get description(){return e(C)}})}},Re=P=>{var C=Ua(),E=me(C),G=l(E),Z=l(G),_e=l(Z),xe=l(_e),ze=l(xe);et(ze),r(xe),j(6),r(_e),r(Z);var Ue=s(Z),we=l(Ue);Qe(we,16,()=>e(F),te=>te,(te,p)=>{var oe=ba(),Se=s(l(oe),2),ye=l(Se),be=l(ye);r(ye),r(Se),j(),r(oe),k(Ie=>M(be,`${Ie??""}/`),[()=>p.replace(e(y),"").replace(/\/$/,"")]),W("click",ye,()=>H(p)),n(te,oe)});var qe=s(we);Qe(qe,17,()=>e(o),te=>te.key,(te,p)=>{var oe=xa();let Se;var ye=l(oe),be=l(ye);et(be),r(ye);var Ie=s(ye),Ft=l(Ie);{var Rt=V=>{var ae=ka(),Ee=l(ae);{let Ae=x(()=>Ce(e(p).key)),Ke=x(()=>ee(e(p).key));Ut(Ee,{class:"file-thumb",get src(){return e(Ae)},get alt(){return e(Ke)}})}r(ae),k((Ae,Ke)=>{q(ae,"aria-label",Ae),q(ae,"title",Ke)},[()=>`Preview ${ee(e(p).key)}`,()=>`Preview ${ee(e(p).key)}`]),W("click",ae,()=>De(e(p))),n(V,ae)},It=x(()=>{var V;return ve((V=e(p).httpMetadata)==null?void 0:V.contentType)}),Et=V=>{var ae=$a();n(V,ae)};ie(Ft,V=>{e(It)?V(Rt):V(Et,!1)})}r(Ie);var st=s(Ie),ot=l(st),At=l(ot,!0);r(ot),r(st);var it=s(st),Kt=l(it,!0);r(it);var nt=s(it),mt=l(nt),Ot=l(mt,!0);r(mt),r(nt);var ct=s(nt),Ht=l(ct,!0);r(ct);var gt=s(ct),wt=l(gt),yt=l(wt),bt=s(yt,2),Vt=s(bt,2);ce(Vt,{variant:"danger",size:"sm",onclick:()=>Te(e(p).key),children:(V,ae)=>{j();var Ee=ne("Delete");n(V,Ee)},$$slots:{default:!0}}),r(wt),r(gt),r(oe),k((V,ae,Ee,Ae,Ke,Wt)=>{var kt;Se=Me(oe,1,"svelte-f2o7w5",null,Se,V),xt(be,ae),q(be,"aria-label",`Select ${Ee??""}`),q(ot,"title",e(p).key),M(At,Ae),M(Kt,Ke),M(Ot,((kt=e(p).httpMetadata)==null?void 0:kt.contentType)??"--"),M(Ht,Wt)},[()=>({"row--selected":e(c).has(e(p).key)}),()=>e(c).has(e(p).key),()=>ee(e(p).key),()=>ee(e(p).key),()=>Be(e(p).size),()=>Ve(e(p).uploaded)]),W("change",be,()=>ue(e(p).key)),W("click",yt,()=>Le(e(p).key)),W("click",bt,()=>{t(A,e(p).key,!0),t(_,!0)}),n(te,oe)}),r(Ue),r(G),r(E);var Ct=s(E,2);{var Lt=te=>{var p=za(),oe=l(p);ce(oe,{variant:"secondary",get loading(){return e(R)},onclick:()=>Y(!0),children:(Se,ye)=>{j();var be=ne("Load More");n(Se,be)},$$slots:{default:!0}}),r(p),n(te,p)};ie(Ct,te=>{e(I)&&te(Lt)})}k(()=>xt(ze,e(o).length>0&&e(c).size===e(o).length)),W("change",ze,fe),n(P,C)};ie(Fe,P=>{e(w)?P(Ze):e(o).length===0&&e(F).length===0?P(lt,1):P(Re,!1)})}k(()=>{se=Me(le,1,"breadcrumb__item svelte-f2o7w5",null,se,{"breadcrumb__item--active":!e(y)}),M($e,e(z))}),W("click",le,()=>H("")),n(i,$)}});var pe=s(je,2);{let a=x(()=>`Are you sure you want to delete "${e(K)??""}"? This action cannot be undone.`);zt(pe,{title:"Delete File",get message(){return e(a)},confirmLabel:"Delete",confirmVariant:"danger",onconfirm:rt,get open(){return e(de)},set open(i){t(de,i,!0)}})}var ge=s(pe,2);{let a=x(()=>e(c).size),i=x(()=>e(c).size!==1?"s":""),g=x(()=>`Are you sure you want to delete ${e(c).size} selected file${e(c).size!==1?"s":""}? This action cannot be undone.`);zt(ge,{get title(){return`Delete ${e(a)??""} File${e(i)??""}`},get message(){return e(g)},confirmLabel:"Delete All",confirmVariant:"danger",onconfirm:re,get open(){return e(b)},set open($){t(b,$,!0)}})}var ht=s(ge,2);va(ht,{get bucket(){return e(z)},onUploaded:()=>Y(),get open(){return e(D)},set open(a){t(D,a,!0)}});var _t=s(ht,2);{let a=x(()=>e(d)?ee(e(d).key):"Image Preview");pt(_t,{get title(){return e(a)},maxWidth:"min(92vw, 960px)",onclose:He,get open(){return e(f)},set open(i){t(f,i,!0)},children:(i,g)=>{var $=Mt(),S=me($);{var le=se=>{var $e=Pa(),he=l($e),Ne=l(he);{let Ue=x(()=>Ce(e(d).key)),we=x(()=>`Preview of ${ee(e(d).key)}`);Ut(Ne,{class:"image-preview__image",get src(){return e(Ue)},get alt(){return e(we)}})}r(he);var Ge=s(he,2),Fe=l(Ge),Ze=s(l(Fe),2),lt=l(Ze,!0);r(Ze),r(Fe);var Re=s(Fe,2),P=s(l(Re),2),C=l(P,!0);r(P),r(Re);var E=s(Re,2),G=s(l(E),2),Z=l(G,!0);r(G),r(E);var _e=s(E,2),xe=s(l(_e),2),ze=l(xe,!0);r(xe),r(_e),r(Ge),r($e),k((Ue,we)=>{var qe;M(lt,e(d).key),M(C,((qe=e(d).httpMetadata)==null?void 0:qe.contentType)??"--"),M(Z,Ue),M(ze,we)},[()=>Be(e(d).size),()=>Ve(e(d).uploaded)]),n(se,$e)};ie(S,se=>{e(d)&&se(le)})}n(i,$)},$$slots:{default:!0}})}var Dt=s(_t,2);_a(Dt,{get bucket(){return e(z)},get fileKey(){return e(A)},get open(){return e(_)},set open(a){t(_,a,!0)}}),n(ke,We),at(),L()}ut(["click","change"]);export{Qa as component};
|
|
1
|
+
import"../chunks/CWj6FrbW.js";import{g as jt,o as Nt}from"../chunks/DoPXzH7F.js";import{p as tt,d as u,M as Je,a as at,f as me,t as k,s,g as e,b as t,c as l,u as x,ae as j,r,w as St}from"../chunks/glwixJlP.js";import{d as ut,e as vt,a as W,s as M}from"../chunks/D5h5A1cc.js";import{i as ie}from"../chunks/UUazaC_N.js";import{t as Pe,b as Ye,e as Qe,i as Pt,a as Xe}from"../chunks/BMMOfNi6.js";import{a as n,t as ne,f as h,c as Mt}from"../chunks/BR_fL5Yv.js";import{s as Me,a as q,f as Gt,r as et,g as $t,e as xt}from"../chunks/C6puvcoR.js";import{s as Tt,a as dt}from"../chunks/B8vJP3wz.js";import{p as Zt}from"../chunks/p-WBlAu3.js";import{g as Bt,a as ft,c as qt,d as Jt}from"../chunks/Br0qug7_.js";import{d as Qt}from"../chunks/wJsUhbfZ.js";import{P as Xt}from"../chunks/CwROoZK0.js";import{s as Yt}from"../chunks/Q2nPFxS6.js";import{B as ce}from"../chunks/Cs0GwzJA.js";import{E as ea}from"../chunks/DnyL7Zq-.js";import{C as zt}from"../chunks/Bh56EfQ_.js";import{p as Oe}from"../chunks/C4D51vTW.js";import{M as pt}from"../chunks/7B47DvSx.js";import{I as ta}from"../chunks/DrQSgw-f.js";import{S as aa}from"../chunks/BF8I5XXQ.js";var ra=h("<!> <!>",1),la=h('<div class="key-input svelte-1myht9e"><!></div>'),sa=h('<img class="file-item__thumb svelte-1myht9e"/>'),oa=h('<div class="file-item__icon svelte-1myht9e"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline></svg></div>'),ia=h('<div class="file-item svelte-1myht9e"><!> <div class="file-item__info svelte-1myht9e"><span class="file-item__name svelte-1myht9e"> </span> <span class="file-item__meta svelte-1myht9e"> </span></div> <button class="file-item__remove svelte-1myht9e" aria-label="Remove"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div>'),na=h('<div class="file-list svelte-1myht9e"></div>'),ca=h('<label><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line></svg> <p class="dropzone__text svelte-1myht9e">Drag & drop files here</p> <p class="dropzone__hint svelte-1myht9e">or click to browse</p> <input type="file" multiple="" class="dropzone__input svelte-1myht9e"/></label> <!> <!>',1);function va(ke,m){tt(m,!0);const J=()=>dt(ft,"$authStore",Q),[Q,B]=Tt();let L=Oe(m,"open",15,!1),D=Oe(m,"onUploaded",3,()=>{}),_=u(Je([])),A=u(""),ve=u(!1),z=u(!1);const w=`file-upload-${Math.random().toString(36).slice(2,9)}`;let o=x(()=>e(_).map(v=>({name:v.name,size:K(v.size),type:v.type,isImage:v.type.startsWith("image/"),url:v.type.startsWith("image/")?URL.createObjectURL(v):""})));function F(){t(_,[],!0),t(A,""),t(z,!1)}function I(v){var f;v.preventDefault(),t(z,!1),(f=v.dataTransfer)!=null&&f.files&&t(_,[...e(_),...Array.from(v.dataTransfer.files)],!0)}function R(v){const f=v.target;f.files&&t(_,[...e(_),...Array.from(f.files)],!0),f.value=""}function y(v){t(_,e(_).filter((f,d)=>d!==v),!0)}async function de(){if(e(_).length===0)return;t(ve,!0);let v=0;for(const f of e(_))try{const d=new FormData;d.append("file",f),e(_).length===1&&e(A).trim()&&d.append("key",e(A).trim());const c=await fetch(Bt(`data/storage/buckets/${m.bucket}/upload`),{method:"POST",headers:{Authorization:`Bearer ${J().accessToken}`},body:d});if(!c.ok){const b=await c.json().catch(()=>({message:"Upload failed"}));throw new Error(b.message||"Upload failed")}v++}catch(d){Pe(`Failed to upload ${f.name}: ${d instanceof Error?d.message:"Unknown error"}`)}t(ve,!1),v>0&&(Ye(`Uploaded ${v} file${v>1?"s":""}`),L(!1),F(),D()())}function K(v){if(v===0)return"0 B";const f=["B","KB","MB","GB"],d=Math.floor(Math.log(v)/Math.log(1024));return`${(v/Math.pow(1024,d)).toFixed(d===0?0:1)} ${f[d]}`}pt(ke,{title:"Upload Files",onclose:F,get open(){return L()},set open(f){L(f)},footer:f=>{var d=ra(),c=me(d);ce(c,{variant:"secondary",onclick:()=>{L(!1),F()},children:(N,ue)=>{j();var fe=ne("Cancel");n(N,fe)},$$slots:{default:!0}});var b=s(c,2);{let N=x(()=>e(_).length===0);ce(b,{variant:"primary",onclick:de,get loading(){return e(ve)},get disabled(){return e(N)},children:(ue,fe)=>{j();var U=ne();k(()=>M(U,`Upload ${e(_).length>0?`(${e(_).length})`:""}`)),n(ue,U)},$$slots:{default:!0}})}n(f,d)},children:(f,d)=>{var c=ca(),b=me(c);let N;var ue=s(l(b),6);r(b);var fe=s(b,2);{var U=T=>{var O=la(),Y=l(O);ta(Y,{label:"Custom key (optional)",get placeholder(){return e(_)[0].name},get value(){return e(A)},set value(H){t(A,H,!0)}}),r(O),n(T,O)};ie(fe,T=>{e(_).length===1&&T(U)})}var re=s(fe,2);{var X=T=>{var O=na();Qe(O,21,()=>e(o),Pt,(Y,H,Te)=>{var De=ia(),He=l(De);{var rt=pe=>{var ge=sa();k(()=>{q(ge,"src",e(H).url),q(ge,"alt",e(H).name)}),n(pe,ge)},Ce=pe=>{var ge=oa();n(pe,ge)};ie(He,pe=>{e(H).isImage?pe(rt):pe(Ce,!1)})}var Le=s(He,2),Be=l(Le),Ve=l(Be,!0);r(Be);var ee=s(Be,2),We=l(ee);r(ee),r(Le);var je=s(Le,2);r(De),k(()=>{M(Ve,e(H).name),M(We,`${e(H).size??""} · ${(e(H).type||"unknown")??""}`)}),W("click",je,()=>y(Te)),n(Y,De)}),r(O),n(T,O)};ie(re,T=>{e(o).length>0&&T(X)})}k(()=>{N=Me(b,1,"dropzone svelte-1myht9e",null,N,{"dropzone--active":e(z)}),q(b,"for",w),q(ue,"id",w)}),vt("dragover",b,T=>{T.preventDefault(),t(z,!0)}),vt("dragleave",b,()=>{t(z,!1)}),vt("drop",b,I),W("change",ue,R),n(f,c)},$$slots:{footer:!0,default:!0}}),at(),B()}ut(["change","click"]);var da=h("<img/>"),ua=h('<span><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" class="svelte-zoylhi"><rect x="2" y="2" width="12" height="12" rx="1.5" class="svelte-zoylhi"></rect><circle cx="5.5" cy="5.5" r="1" class="svelte-zoylhi"></circle><path d="M2 11l3-3 2 2 3-3 4 4" class="svelte-zoylhi"></path></svg></span>'),fa=h("<span></span>");function Ut(ke,m){tt(m,!0);let J=Oe(m,"alt",3,""),Q=Oe(m,"class",3,""),B=u(null),L=u(!1);St(()=>{const w=m.src;let o=!1,F=null;t(B,null),t(L,!1);const I=jt(ft);return fetch(w,{headers:I.accessToken?{Authorization:`Bearer ${I.accessToken}`}:{}}).then(R=>o||!R.ok?(o||t(L,!0),null):R.blob()).then(R=>{o||!R||(F=URL.createObjectURL(R),t(B,F,!0))}).catch(()=>{o||t(L,!0)}),()=>{o=!0,F&&URL.revokeObjectURL(F)}});var D=Mt(),_=me(D);{var A=w=>{var o=da();k(()=>{q(o,"src",e(B)),q(o,"alt",J()),Me(o,1,Gt(Q()),"svelte-zoylhi")}),n(w,o)},ve=w=>{var o=ua();k(()=>{Me(o,1,`auth-img-fallback ${Q()??""}`,"svelte-zoylhi"),q(o,"aria-label",J())}),n(w,o)},z=w=>{var o=fa();k(()=>Me(o,1,`auth-img-loading ${Q()??""}`,"svelte-zoylhi")),n(w,o)};ie(_,w=>{e(B)?w(A):e(L)?w(ve,1):w(z,!1)})}n(ke,D),at()}var pa=h('<div class="share__url-row svelte-vlp39"><input class="share__url-input svelte-vlp39" type="text" readonly=""/> <!></div>'),ha=h('<div class="share svelte-vlp39"><p class="share__filename svelte-vlp39"> </p> <div class="share__section svelte-vlp39"><div class="share__label svelte-vlp39"><span class="share__label-text svelte-vlp39">Public URL</span> <span class="share__hint svelte-vlp39">Works if bucket read rule allows public access</span></div> <div class="share__url-row svelte-vlp39"><input class="share__url-input svelte-vlp39" type="text" readonly=""/> <!></div></div> <div class="share__section svelte-vlp39"><div class="share__label svelte-vlp39"><span class="share__label-text svelte-vlp39">Signed URL</span> <span class="share__hint svelte-vlp39">Time-limited access, no auth required</span></div> <div class="share__signed-row svelte-vlp39"><!> <!></div> <!></div> <div class="share__usage svelte-vlp39"><p class="share__usage-title svelte-vlp39">Usage in HTML</p> <code class="share__code svelte-vlp39"><img src="<span class="share__code-url svelte-vlp39">…copied URL…</span>" /></code></div></div>');function _a(ke,m){tt(m,!0);let J=Oe(m,"open",15,!1),Q=u("1h"),B=u(""),L=u(!1),D=u(null);const _=[{value:"1h",label:"1 hour"},{value:"1d",label:"1 day"},{value:"7d",label:"7 days"},{value:"30d",label:"30 days"}];let A=x(()=>qt(`/api/storage/${m.bucket}/${m.fileKey}`)),ve=x(()=>m.fileKey.includes("/")?m.fileKey.split("/").pop()??m.fileKey:m.fileKey);async function z(){t(L,!0),t(B,"");try{const o=await Xe.fetch(`data/storage/buckets/${m.bucket}/signed-url`,{method:"POST",body:{key:m.fileKey,expiresIn:e(Q)}});t(B,o.url,!0)}catch(o){Pe(o instanceof Error?o.message:"Failed to create signed URL")}finally{t(L,!1)}}async function w(o,F){try{await navigator.clipboard.writeText(o),t(D,F,!0),Ye("URL copied to clipboard"),setTimeout(()=>{t(D,null)},2e3)}catch{Pe("Failed to copy URL")}}St(()=>{J()&&(t(B,""),t(D,null))}),pt(ke,{title:"Share File",get open(){return J()},set open(o){J(o)},children:(o,F)=>{var I=ha(),R=l(I),y=l(R,!0);r(R);var de=s(R,2),K=s(l(de),2),v=l(K);et(v);var f=s(v,2);{let U=x(()=>e(D)==="public"?"primary":"secondary");ce(f,{get variant(){return e(U)},size:"sm",onclick:()=>w(e(A),"public"),children:(re,X)=>{j();var T=ne();k(()=>M(T,e(D)==="public"?"Copied!":"Copy")),n(re,T)},$$slots:{default:!0}})}r(K),r(de);var d=s(de,2),c=s(l(d),2),b=l(c);aa(b,{get options(){return _},get value(){return e(Q)},set value(U){t(Q,U,!0)}});var N=s(b,2);ce(N,{variant:"primary",size:"sm",get loading(){return e(L)},onclick:z,children:(U,re)=>{j();var X=ne("Generate");n(U,X)},$$slots:{default:!0}}),r(c);var ue=s(c,2);{var fe=U=>{var re=pa(),X=l(re);et(X);var T=s(X,2);{let O=x(()=>e(D)==="signed"?"primary":"secondary");ce(T,{get variant(){return e(O)},size:"sm",onclick:()=>w(e(B),"signed"),children:(Y,H)=>{j();var Te=ne();k(()=>M(Te,e(D)==="signed"?"Copied!":"Copy")),n(Y,Te)},$$slots:{default:!0}})}r(re),k(()=>$t(X,e(B))),W("click",X,O=>O.currentTarget.select()),n(U,re)};ie(ue,U=>{e(B)&&U(fe)})}r(d),j(2),r(I),k(()=>{M(y,e(ve)),$t(v,e(A))}),W("click",v,U=>U.currentTarget.select()),n(o,I)},$$slots:{default:!0}}),at()}ut(["click"]);var ma=h("<!> <a><!></a>",1),ga=h('<span class="breadcrumb__sep svelte-f2o7w5">/</span> <button> </button>',1),wa=h('<div class="bulk-bar svelte-f2o7w5"><span class="bulk-bar__count svelte-f2o7w5"> </span> <div class="bulk-bar__actions svelte-f2o7w5"><!></div> <button class="bulk-bar__clear svelte-f2o7w5">Clear</button></div>'),ya=h('<div class="loading-state svelte-f2o7w5">Loading files...</div>'),ba=h('<tr class="folder-row svelte-f2o7w5"><td class="col-checkbox svelte-f2o7w5"></td><td class="col-preview svelte-f2o7w5"><span class="folder-icon svelte-f2o7w5"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 4V13H14V5H8L6.5 3H2V4Z" stroke-linejoin="round"></path></svg></span></td><td class="col-key svelte-f2o7w5" colspan="4"><button class="folder-btn svelte-f2o7w5"> </button></td><td class="col-actions svelte-f2o7w5"></td></tr>'),ka=h('<button type="button" class="thumb-button svelte-f2o7w5"><!></button>'),$a=h('<span class="file-icon svelte-f2o7w5"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 2H10L13 5V14H4V2Z" stroke-linejoin="round"></path><path d="M10 2V5H13"></path></svg></span>'),xa=h('<tr><td class="col-checkbox svelte-f2o7w5"><input type="checkbox" class="svelte-f2o7w5"/></td><td class="col-preview svelte-f2o7w5"><!></td><td class="col-key svelte-f2o7w5"><span class="file-key svelte-f2o7w5"> </span></td><td class="col-size svelte-f2o7w5"> </td><td class="col-type svelte-f2o7w5"><span class="mime-type svelte-f2o7w5"> </span></td><td class="col-date svelte-f2o7w5"> </td><td class="col-actions svelte-f2o7w5"><div class="action-btns svelte-f2o7w5"><button class="icon-btn svelte-f2o7w5" title="Download"><svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M8 2v9M4 8l4 4 4-4" stroke-linecap="round" stroke-linejoin="round"></path><path d="M2 13h12" stroke-linecap="round"></path></svg></button> <button class="icon-btn svelte-f2o7w5" title="Share"><svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="4" cy="8" r="2"></circle><circle cx="12" cy="4" r="2"></circle><circle cx="12" cy="12" r="2"></circle><path d="M5.7 7l4.6-2M5.7 9l4.6 2"></path></svg></button> <!></div></td></tr>'),za=h('<div class="pagination svelte-f2o7w5"><!></div>'),Ua=h('<div class="table-wrapper svelte-f2o7w5"><table class="file-table svelte-f2o7w5"><thead class="svelte-f2o7w5"><tr><th class="col-checkbox svelte-f2o7w5"><input type="checkbox" aria-label="Select all files" class="svelte-f2o7w5"/></th><th class="col-preview svelte-f2o7w5"></th><th class="col-key svelte-f2o7w5">Name</th><th class="col-size svelte-f2o7w5">Size</th><th class="col-type svelte-f2o7w5">Type</th><th class="col-date svelte-f2o7w5">Uploaded</th><th class="col-actions svelte-f2o7w5"></th></tr></thead><tbody class="svelte-f2o7w5"><!><!></tbody></table></div> <!>',1),Sa=h('<nav class="breadcrumb svelte-f2o7w5"><button> </button> <!></nav> <!> <!>',1),Pa=h('<div class="image-preview svelte-f2o7w5"><div class="image-preview__frame svelte-f2o7w5"><!></div> <dl class="image-preview__meta svelte-f2o7w5"><div class="image-preview__meta-row svelte-f2o7w5"><dt class="svelte-f2o7w5">Path</dt> <dd class="svelte-f2o7w5"> </dd></div> <div class="image-preview__meta-row svelte-f2o7w5"><dt class="svelte-f2o7w5">Type</dt> <dd class="svelte-f2o7w5"> </dd></div> <div class="image-preview__meta-row svelte-f2o7w5"><dt class="svelte-f2o7w5">Size</dt> <dd class="svelte-f2o7w5"> </dd></div> <div class="image-preview__meta-row svelte-f2o7w5"><dt class="svelte-f2o7w5">Uploaded</dt> <dd class="svelte-f2o7w5"> </dd></div></dl></div>'),Ma=h("<!> <!> <!> <!> <!> <!>",1);function Qa(ke,m){tt(m,!0);const J=()=>dt(Zt,"$page",B),Q=()=>dt(ft,"$authStore",B),[B,L]=Tt();let D=u(!1),_=u(!1),A=u("");function ve(a){return!!a&&a.startsWith("image/")}let z=x(()=>J().params.bucket??""),w=u(!0),o=u(Je([])),F=u(Je([])),I=u(null),R=u(!1),y=u(""),de=u(!1),K=u(null),v=u(!1),f=u(!1),d=u(null),c=u(Je(new Set)),b=u(!1),N=u(!1);function ue(a){const i=new Set(e(c));i.has(a)?i.delete(a):i.add(a),t(c,i,!0)}function fe(){e(c).size===e(o).length?t(c,new Set,!0):t(c,new Set(e(o).map(a=>a.key)),!0)}function U(){t(c,new Set,!0)}async function re(){t(b,!1),t(N,!0);const a=[...e(c)],i=await Promise.allSettled(a.map(async S=>{await Xe.fetch(`data/storage/buckets/${e(z)}/objects/${encodeURIComponent(S)}`,{method:"DELETE"})})),g=i.filter(S=>S.status==="fulfilled").length,$=i.filter(S=>S.status==="rejected").length;$===0?Ye(`Deleted ${g} file${g!==1?"s":""}`):Pe(`${g} succeeded, ${$} failed`),t(c,new Set,!0),t(N,!1),Y()}let X=x(()=>(()=>{if(!e(y))return[];const a=e(y).replace(/\/$/,"").split("/");return a.map((i,g)=>({label:i,prefix:a.slice(0,g+1).join("/")+"/"}))})());function T(a){return a?a.endsWith("/")?a:`${a}/`:""}function O(a){const i=new URL(window.location.href);a?i.searchParams.set("prefix",a):i.searchParams.delete("prefix"),history.replaceState(history.state,"",i.toString())}async function Y(a=!1){a?t(R,!0):t(w,!0);try{let i=`data/storage/buckets/${e(z)}/objects?limit=50&delimiter=/`;e(y)&&(i+=`&prefix=${encodeURIComponent(e(y))}`),a&&e(I)&&(i+=`&cursor=${encodeURIComponent(e(I))}`);const g=await Xe.fetch(i),$=(g.objects||[]).filter(S=>(e(y)?S.key.replace(e(y),""):S.key).length>0);a?t(o,[...e(o),...$],!0):(t(o,$,!0),t(F,g.folders||[],!0)),t(I,g.cursor,!0)}catch(i){Pe(i instanceof Error?i.message:"Failed to load objects")}finally{t(w,!1),t(R,!1)}}function H(a){t(y,T(a),!0),O(e(y)),t(I,null),t(c,new Set,!0),Y()}function Te(a){t(K,a,!0),t(de,!0)}function De(a){t(d,a,!0),t(f,!0)}function He(){t(f,!1),t(d,null)}async function rt(){if(e(K)){t(v,!0);try{await Xe.fetch(`data/storage/buckets/${e(z)}/objects/${encodeURIComponent(e(K))}`,{method:"DELETE"}),t(o,e(o).filter(a=>a.key!==e(K)),!0),e(c).delete(e(K)),t(c,new Set(e(c)),!0),Ye(`Deleted ${e(K)}`)}catch(a){Pe(a instanceof Error?a.message:"Failed to delete object")}finally{t(v,!1),t(K,null)}}}function Ce(a){return Bt(`data/storage/buckets/${e(z)}/objects/${encodeURIComponent(a)}`)}async function Le(a){try{const i=await fetch(Ce(a),{headers:{Authorization:`Bearer ${Q().accessToken}`}});if(!i.ok){const $=await i.json().catch(()=>({message:"Download failed"}));throw new Error($.message||"Download failed")}const g=await i.blob();Qt(g,ee(a))}catch(i){Pe(i instanceof Error?i.message:"Failed to download file")}}function Be(a){if(a===0)return"0 B";const i=["B","KB","MB","GB","TB"],g=Math.floor(Math.log(a)/Math.log(1024));return`${(a/Math.pow(1024,g)).toFixed(g===0?0:1)} ${i[g]}`}function Ve(a){try{return new Date(a).toLocaleString()}catch{return a}}function ee(a){return e(y)&&a.startsWith(e(y))?a.slice(e(y).length):a}Nt(()=>{t(y,T(J().url.searchParams.get("prefix")??""),!0),Y()});var We=Ma(),je=me(We);Xt(je,{get title(){return e(z)},description:"Browse files in this bucket",get docsHref(){return Yt},actions:i=>{var g=ma(),$=me(g);ce($,{variant:"primary",size:"sm",onclick:()=>t(D,!0),children:(se,$e)=>{j();var he=ne("Upload Files");n(se,he)},$$slots:{default:!0}});var S=s($,2),le=l(S);ce(le,{variant:"secondary",size:"sm",children:(se,$e)=>{j();var he=ne("Back to Buckets");n(se,he)},$$slots:{default:!0}}),r(S),k(()=>q(S,"href",`${Jt}/storage`)),n(i,g)},children:(i,g)=>{var $=Sa(),S=me($),le=l(S);let se;var $e=l(le,!0);r(le);var he=s(le,2);Qe(he,17,()=>e(X),Pt,(P,C)=>{var E=ga(),G=s(me(E),2);let Z;var _e=l(G,!0);r(G),k(()=>{Z=Me(G,1,"breadcrumb__item svelte-f2o7w5",null,Z,{"breadcrumb__item--active":e(C).prefix===e(y)}),M(_e,e(C).label)}),W("click",G,()=>H(e(C).prefix)),n(P,E)}),r(S);var Ne=s(S,2);{var Ge=P=>{var C=wa(),E=l(C),G=l(E);r(E);var Z=s(E,2),_e=l(Z);ce(_e,{variant:"danger",size:"sm",onclick:()=>t(b,!0),get disabled(){return e(N)},children:(ze,Ue)=>{j();var we=ne("Delete Selected");n(ze,we)},$$slots:{default:!0}}),r(Z);var xe=s(Z,2);r(C),k(()=>M(G,`${e(c).size??""} selected`)),W("click",xe,U),n(P,C)};ie(Ne,P=>{e(c).size>0&&P(Ge)})}var Fe=s(Ne,2);{var Ze=P=>{var C=ya();n(P,C)},lt=P=>{{let C=x(()=>e(y)?"This folder is empty.":"This bucket is empty.");ea(P,{title:"No files",get description(){return e(C)}})}},Re=P=>{var C=Ua(),E=me(C),G=l(E),Z=l(G),_e=l(Z),xe=l(_e),ze=l(xe);et(ze),r(xe),j(6),r(_e),r(Z);var Ue=s(Z),we=l(Ue);Qe(we,16,()=>e(F),te=>te,(te,p)=>{var oe=ba(),Se=s(l(oe),2),ye=l(Se),be=l(ye);r(ye),r(Se),j(),r(oe),k(Ie=>M(be,`${Ie??""}/`),[()=>p.replace(e(y),"").replace(/\/$/,"")]),W("click",ye,()=>H(p)),n(te,oe)});var qe=s(we);Qe(qe,17,()=>e(o),te=>te.key,(te,p)=>{var oe=xa();let Se;var ye=l(oe),be=l(ye);et(be),r(ye);var Ie=s(ye),Ft=l(Ie);{var Rt=V=>{var ae=ka(),Ee=l(ae);{let Ae=x(()=>Ce(e(p).key)),Ke=x(()=>ee(e(p).key));Ut(Ee,{class:"file-thumb",get src(){return e(Ae)},get alt(){return e(Ke)}})}r(ae),k((Ae,Ke)=>{q(ae,"aria-label",Ae),q(ae,"title",Ke)},[()=>`Preview ${ee(e(p).key)}`,()=>`Preview ${ee(e(p).key)}`]),W("click",ae,()=>De(e(p))),n(V,ae)},It=x(()=>{var V;return ve((V=e(p).httpMetadata)==null?void 0:V.contentType)}),Et=V=>{var ae=$a();n(V,ae)};ie(Ft,V=>{e(It)?V(Rt):V(Et,!1)})}r(Ie);var st=s(Ie),ot=l(st),At=l(ot,!0);r(ot),r(st);var it=s(st),Kt=l(it,!0);r(it);var nt=s(it),mt=l(nt),Ot=l(mt,!0);r(mt),r(nt);var ct=s(nt),Ht=l(ct,!0);r(ct);var gt=s(ct),wt=l(gt),yt=l(wt),bt=s(yt,2),Vt=s(bt,2);ce(Vt,{variant:"danger",size:"sm",onclick:()=>Te(e(p).key),children:(V,ae)=>{j();var Ee=ne("Delete");n(V,Ee)},$$slots:{default:!0}}),r(wt),r(gt),r(oe),k((V,ae,Ee,Ae,Ke,Wt)=>{var kt;Se=Me(oe,1,"svelte-f2o7w5",null,Se,V),xt(be,ae),q(be,"aria-label",`Select ${Ee??""}`),q(ot,"title",e(p).key),M(At,Ae),M(Kt,Ke),M(Ot,((kt=e(p).httpMetadata)==null?void 0:kt.contentType)??"--"),M(Ht,Wt)},[()=>({"row--selected":e(c).has(e(p).key)}),()=>e(c).has(e(p).key),()=>ee(e(p).key),()=>ee(e(p).key),()=>Be(e(p).size),()=>Ve(e(p).uploaded)]),W("change",be,()=>ue(e(p).key)),W("click",yt,()=>Le(e(p).key)),W("click",bt,()=>{t(A,e(p).key,!0),t(_,!0)}),n(te,oe)}),r(Ue),r(G),r(E);var Ct=s(E,2);{var Lt=te=>{var p=za(),oe=l(p);ce(oe,{variant:"secondary",get loading(){return e(R)},onclick:()=>Y(!0),children:(Se,ye)=>{j();var be=ne("Load More");n(Se,be)},$$slots:{default:!0}}),r(p),n(te,p)};ie(Ct,te=>{e(I)&&te(Lt)})}k(()=>xt(ze,e(o).length>0&&e(c).size===e(o).length)),W("change",ze,fe),n(P,C)};ie(Fe,P=>{e(w)?P(Ze):e(o).length===0&&e(F).length===0?P(lt,1):P(Re,!1)})}k(()=>{se=Me(le,1,"breadcrumb__item svelte-f2o7w5",null,se,{"breadcrumb__item--active":!e(y)}),M($e,e(z))}),W("click",le,()=>H("")),n(i,$)}});var pe=s(je,2);{let a=x(()=>`Are you sure you want to delete "${e(K)??""}"? This action cannot be undone.`);zt(pe,{title:"Delete File",get message(){return e(a)},confirmLabel:"Delete",confirmVariant:"danger",onconfirm:rt,get open(){return e(de)},set open(i){t(de,i,!0)}})}var ge=s(pe,2);{let a=x(()=>e(c).size),i=x(()=>e(c).size!==1?"s":""),g=x(()=>`Are you sure you want to delete ${e(c).size} selected file${e(c).size!==1?"s":""}? This action cannot be undone.`);zt(ge,{get title(){return`Delete ${e(a)??""} File${e(i)??""}`},get message(){return e(g)},confirmLabel:"Delete All",confirmVariant:"danger",onconfirm:re,get open(){return e(b)},set open($){t(b,$,!0)}})}var ht=s(ge,2);va(ht,{get bucket(){return e(z)},onUploaded:()=>Y(),get open(){return e(D)},set open(a){t(D,a,!0)}});var _t=s(ht,2);{let a=x(()=>e(d)?ee(e(d).key):"Image Preview");pt(_t,{get title(){return e(a)},maxWidth:"min(92vw, 960px)",onclose:He,get open(){return e(f)},set open(i){t(f,i,!0)},children:(i,g)=>{var $=Mt(),S=me($);{var le=se=>{var $e=Pa(),he=l($e),Ne=l(he);{let Ue=x(()=>Ce(e(d).key)),we=x(()=>`Preview of ${ee(e(d).key)}`);Ut(Ne,{class:"image-preview__image",get src(){return e(Ue)},get alt(){return e(we)}})}r(he);var Ge=s(he,2),Fe=l(Ge),Ze=s(l(Fe),2),lt=l(Ze,!0);r(Ze),r(Fe);var Re=s(Fe,2),P=s(l(Re),2),C=l(P,!0);r(P),r(Re);var E=s(Re,2),G=s(l(E),2),Z=l(G,!0);r(G),r(E);var _e=s(E,2),xe=s(l(_e),2),ze=l(xe,!0);r(xe),r(_e),r(Ge),r($e),k((Ue,we)=>{var qe;M(lt,e(d).key),M(C,((qe=e(d).httpMetadata)==null?void 0:qe.contentType)??"--"),M(Z,Ue),M(ze,we)},[()=>Be(e(d).size),()=>Ve(e(d).uploaded)]),n(se,$e)};ie(S,se=>{e(d)&&se(le)})}n(i,$)},$$slots:{default:!0}})}var Dt=s(_t,2);_a(Dt,{get bucket(){return e(z)},get fileKey(){return e(A)},get open(){return e(_)},set open(a){t(_,a,!0)}}),n(ke,We),at(),L()}ut(["click","change"]);export{Qa as component};
|