@edge-base/server 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/admin-build/_app/immutable/assets/21.x9OgMBdi.css +1 -0
  2. package/admin-build/_app/immutable/assets/TableSqlTab.BHquaMBM.css +1 -0
  3. package/admin-build/_app/immutable/chunks/{Br0qug7_.js → 6a5nHrK1.js} +1 -1
  4. package/admin-build/_app/immutable/chunks/{DYDZ2Kma.js → B-bKFoyc.js} +1 -1
  5. package/admin-build/_app/immutable/chunks/{eFQHTGwA.js → B0HRJ657.js} +1 -1
  6. package/admin-build/_app/immutable/chunks/B2bEC_Hm.js +1 -0
  7. package/admin-build/_app/immutable/chunks/{CwROoZK0.js → B8s_s9QY.js} +1 -1
  8. package/admin-build/_app/immutable/chunks/{ehbppgYb.js → Bb0e0sAP.js} +1 -1
  9. package/admin-build/_app/immutable/chunks/{glwixJlP.js → BdTBlfLy.js} +1 -1
  10. package/admin-build/_app/immutable/chunks/{p-WBlAu3.js → BebaNaL1.js} +1 -1
  11. package/admin-build/_app/immutable/chunks/{CLHXYVje.js → Bed8WcZp.js} +1 -1
  12. package/admin-build/_app/immutable/chunks/{DoPXzH7F.js → Bn2NtlTj.js} +1 -1
  13. package/admin-build/_app/immutable/chunks/{Ga6XaOJm.js → Bwq290TU.js} +1 -1
  14. package/admin-build/_app/immutable/chunks/{Cs0GwzJA.js → C72lTcG0.js} +1 -1
  15. package/admin-build/_app/immutable/chunks/{BmRjiP5k.js → C8s55wKu.js} +1 -1
  16. package/admin-build/_app/immutable/chunks/CGgVJi7f.js +1 -0
  17. package/admin-build/_app/immutable/chunks/{NuUjtcO2.js → CYatlt7w.js} +1 -1
  18. package/admin-build/_app/immutable/chunks/{C0LrJucL.js → CfT4rpr6.js} +1 -1
  19. package/admin-build/_app/immutable/chunks/ChX-qyfY.js +2 -0
  20. package/admin-build/_app/immutable/chunks/{C6puvcoR.js → CoI6jjbg.js} +2 -2
  21. package/admin-build/_app/immutable/chunks/{B8vJP3wz.js → Cp8V0Xy2.js} +1 -1
  22. package/admin-build/_app/immutable/chunks/{BR_fL5Yv.js → DEELgv7K.js} +1 -1
  23. package/admin-build/_app/immutable/chunks/{7f08Id8e.js → DHWOQ9Ui.js} +1 -1
  24. package/admin-build/_app/immutable/chunks/{Bh56EfQ_.js → DILS_-VJ.js} +1 -1
  25. package/admin-build/_app/immutable/chunks/{BhjcOf7X.js → DMIs26Al.js} +1 -1
  26. package/admin-build/_app/immutable/chunks/{BOjkBtym.js → DSsNi9zA.js} +1 -1
  27. package/admin-build/_app/immutable/chunks/{BMMOfNi6.js → DYRfe1lC.js} +1 -1
  28. package/admin-build/_app/immutable/chunks/{7B47DvSx.js → Dt4vL4Df.js} +1 -1
  29. package/admin-build/_app/immutable/chunks/{D5h5A1cc.js → DtZk82gG.js} +2 -2
  30. package/admin-build/_app/immutable/chunks/{BF8I5XXQ.js → DuldBlfT.js} +1 -1
  31. package/admin-build/_app/immutable/chunks/{C4D51vTW.js → F9_4wRrd.js} +1 -1
  32. package/admin-build/_app/immutable/chunks/{CY1F93Wv.js → FA-xxanK.js} +1 -1
  33. package/admin-build/_app/immutable/chunks/{DOxNYcs9.js → Fw9oK_yh.js} +1 -1
  34. package/admin-build/_app/immutable/chunks/XmteHKH_.js +1 -0
  35. package/admin-build/_app/immutable/chunks/{UUazaC_N.js → Y22E1hJM.js} +1 -1
  36. package/admin-build/_app/immutable/chunks/{vApWTCBs.js → Z41NK6i6.js} +1 -1
  37. package/admin-build/_app/immutable/chunks/{DrQSgw-f.js → _teD5ji5.js} +1 -1
  38. package/admin-build/_app/immutable/chunks/{CB8xN3_t.js → eLBKp9m8.js} +1 -1
  39. package/admin-build/_app/immutable/chunks/{MdeqaOQx.js → gtu8uwJD.js} +1 -1
  40. package/admin-build/_app/immutable/chunks/{DnyL7Zq-.js → m9eWh0Cd.js} +1 -1
  41. package/admin-build/_app/immutable/chunks/mVKEd0n6.js +128 -0
  42. package/admin-build/_app/immutable/chunks/{BK8YUsyH.js → mmI0365x.js} +1 -1
  43. package/admin-build/_app/immutable/entry/app.B0Wfop7v.js +2 -0
  44. package/admin-build/_app/immutable/entry/start.C1a0bzUm.js +1 -0
  45. package/admin-build/_app/immutable/nodes/{0.B13aXl3s.js → 0.DXd3Dmjw.js} +1 -1
  46. package/admin-build/_app/immutable/nodes/{1.we4dgVtx.js → 1.DYs0DOEf.js} +1 -1
  47. package/admin-build/_app/immutable/nodes/{10.hrAvOhgI.js → 10.C5zdvzz2.js} +1 -1
  48. package/admin-build/_app/immutable/nodes/{11.BZM_Cbjk.js → 11.CZn94rTD.js} +1 -1
  49. package/admin-build/_app/immutable/nodes/{12.pfrTdfHj.js → 12.zeHwsLsn.js} +1 -1
  50. package/admin-build/_app/immutable/nodes/{13.BvR9UoZX.js → 13.nkWGiViq.js} +1 -1
  51. package/admin-build/_app/immutable/nodes/{14.BCE_g1DT.js → 14.C0cOviHd.js} +1 -1
  52. package/admin-build/_app/immutable/nodes/{15.DZrUjo5V.js → 15.q5eTZ0ns.js} +1 -1
  53. package/admin-build/_app/immutable/nodes/{16.B_K_CGU4.js → 16.BrpfTEYF.js} +1 -1
  54. package/admin-build/_app/immutable/nodes/{17.D7RlNUbd.js → 17.3p6MQums.js} +1 -1
  55. package/admin-build/_app/immutable/nodes/{18.dw9OGxA1.js → 18.aj9cF39Y.js} +1 -1
  56. package/admin-build/_app/immutable/nodes/{19.B_K_CGU4.js → 19.BrpfTEYF.js} +1 -1
  57. package/admin-build/_app/immutable/nodes/2.Bn3R2oDm.js +1 -0
  58. package/admin-build/_app/immutable/nodes/{20.Bij6g6xR.js → 20.BUEsrK6V.js} +1 -1
  59. package/admin-build/_app/immutable/nodes/21.Bch9bUk6.js +1 -0
  60. package/admin-build/_app/immutable/nodes/{22.wLPyRbDg.js → 22.V2clGNAS.js} +1 -1
  61. package/admin-build/_app/immutable/nodes/{23.DnjIdPPl.js → 23.3XSLKKOr.js} +1 -1
  62. package/admin-build/_app/immutable/nodes/{24.PhJEmwPf.js → 24.F-qrYmNi.js} +1 -1
  63. package/admin-build/_app/immutable/nodes/{25.HUYuEeiI.js → 25.BdrY4DyK.js} +1 -1
  64. package/admin-build/_app/immutable/nodes/{26.CtrQ3jI5.js → 26.D0WXHf08.js} +1 -1
  65. package/admin-build/_app/immutable/nodes/{27.CMM8T90I.js → 27.DvWhuH9-.js} +1 -1
  66. package/admin-build/_app/immutable/nodes/{28.CH6XAnHt.js → 28.5Oz_jlro.js} +1 -1
  67. package/admin-build/_app/immutable/nodes/{29.Bos0u5_B.js → 29.dDyAUaup.js} +1 -1
  68. package/admin-build/_app/immutable/nodes/{3.BPnU2jxx.js → 3.BcXkDIYV.js} +1 -1
  69. package/admin-build/_app/immutable/nodes/{30.ScIH1W0H.js → 30.2JCWdjTn.js} +1 -1
  70. package/admin-build/_app/immutable/nodes/{31.CXHVAiwb.js → 31.qG9kkJ9Q.js} +1 -1
  71. package/admin-build/_app/immutable/nodes/{4.BY6Ri1gh.js → 4.Cl5grO75.js} +1 -1
  72. package/admin-build/_app/immutable/nodes/{5.D0tPp_Kt.js → 5.Bel35v4W.js} +1 -1
  73. package/admin-build/_app/immutable/nodes/{6.BuWVNVH1.js → 6.CjpfkMIg.js} +1 -1
  74. package/admin-build/_app/immutable/nodes/{7.B26-qam0.js → 7.CA1OBWip.js} +1 -1
  75. package/admin-build/_app/immutable/nodes/{8.CdDKHsMK.js → 8.DS5xal_X.js} +1 -1
  76. package/admin-build/_app/immutable/nodes/{9.BSo7a28L.js → 9.OYw1MaR9.js} +1 -1
  77. package/admin-build/_app/version.json +1 -1
  78. package/admin-build/favicon.svg +3 -2
  79. package/admin-build/index.html +17 -16
  80. package/package.json +3 -3
  81. package/src/__tests__/rate-limit.test.ts +4 -3
  82. package/src/__tests__/websocket-pending.test.ts +4 -4
  83. package/src/durable-objects/database-do.ts +8 -3
  84. package/src/lib/do-router.ts +8 -0
  85. package/src/lib/functions.ts +23 -1
  86. package/src/middleware/auth.ts +9 -0
  87. package/src/middleware/rate-limit.ts +25 -3
  88. package/src/routes/database-live.ts +1 -1
  89. package/src/routes/functions.ts +9 -1
  90. package/src/routes/vectorize.ts +4 -4
  91. package/admin-build/_app/immutable/assets/21.Dz2RJ56c.css +0 -1
  92. package/admin-build/_app/immutable/chunks/CxbRue-5.js +0 -1
  93. package/admin-build/_app/immutable/chunks/CyqB6g-D.js +0 -1
  94. package/admin-build/_app/immutable/entry/app.BcgNsUX3.js +0 -2
  95. package/admin-build/_app/immutable/entry/start.otAJzcqZ.js +0 -1
  96. package/admin-build/_app/immutable/nodes/2.BKoKrw1i.js +0 -1
  97. package/admin-build/_app/immutable/nodes/21.DyYxtUDl.js +0 -128
@@ -1 +1 @@
1
- import"../chunks/CWj6FrbW.js";import{o as U}from"../chunks/DoPXzH7F.js";import{p as j,a as z,f as G,c as b,g as t,s as m,r as g,u as n,b as y,d as D,t as J}from"../chunks/glwixJlP.js";import{d as K,s as N,a as O}from"../chunks/D5h5A1cc.js";import{a as Q,t as V,e as W,i as X}from"../chunks/BMMOfNi6.js";import{a as F,f as I}from"../chunks/BR_fL5Yv.js";import{s as Y}from"../chunks/C6puvcoR.js";import{P as Z}from"../chunks/CwROoZK0.js";import{a as tt}from"../chunks/Q2nPFxS6.js";import{M as _,T as et}from"../chunks/CLHXYVje.js";import{D as at,T as rt}from"../chunks/DYDZ2Kma.js";var nt=I("<button> </button>"),st=I('<div class="range-selector"></div>'),ot=I('<div class="analytics-grid"><!> <!> <!> <!></div> <div class="analytics-chart"><!></div> <div class="analytics-bottom"><!> <!></div>',1);function bt(w,M){j(M,!0);let s=D(!0),o=D(null),p=D("24h");const T=[{value:"1h",label:"1H"},{value:"6h",label:"6H"},{value:"24h",label:"24H"},{value:"7d",label:"7D"},{value:"30d",label:"30D"}],k=n(()=>()=>{switch(t(p)){case"1h":return"minute";case"6h":case"24h":return"hour";default:return"day"}});async function $(){try{const e=await Q.fetch(`data/analytics?range=${t(p)}&category=function&metric=overview&groupBy=${t(k)()}`);y(o,e,!0)}catch(e){V(e instanceof Error?e.message:"Failed to load functions analytics")}finally{y(s,!1)}}function A(e){y(p,e,!0),y(s,!0),$()}U(()=>{$();const e=setInterval($,3e4);return()=>clearInterval(e)});const H=n(()=>()=>{var c;if(!((c=t(o))!=null&&c.summary))return 0;const{totalRequests:e,totalErrors:a}=t(o).summary;return e>0?a/e*100:0}),B=n(()=>()=>{var e;return(((e=t(o))==null?void 0:e.timeSeries)||[]).map(a=>({timestamp:a.timestamp,value:a.requests??a.value??0}))}),C=n(()=>()=>{var e;return(((e=t(o))==null?void 0:e.breakdown)||[]).map(a=>({label:a.label||"other",value:a.count}))}),E=n(()=>()=>{var e;return(((e=t(o))==null?void 0:e.topItems)||[]).map(a=>({label:a.label,count:a.count,secondary:`${Math.round(a.avgLatency)}ms · ${a.errorRate.toFixed(1)}% 5xx`}))});Z(w,{title:"Functions Analytics",description:"Serverless function execution and performance metrics",get docsHref(){return tt},actions:a=>{var c=st();W(c,21,()=>T,X,(f,d)=>{var l=nt();let v;var h=b(l,!0);g(l),J(()=>{v=Y(l,1,"range-btn",null,v,{"range-btn--active":t(p)===t(d).value}),N(h,t(d).label)}),O("click",l,()=>A(t(d).value)),F(f,l)}),g(c),F(a,c)},children:(a,c)=>{var f=ot(),d=G(f),l=b(d);{let r=n(()=>{var i,u;return((u=(i=t(o))==null?void 0:i.summary)==null?void 0:u.totalRequests)??0});_(l,{label:"Invocations",get value(){return t(r)},get loading(){return t(s)}})}var v=m(l,2);{let r=n(()=>{var i,u;return((u=(i=t(o))==null?void 0:i.summary)==null?void 0:u.uniqueUsers)??0});_(v,{label:"Unique Users",get value(){return t(r)},get loading(){return t(s)}})}var h=m(v,2);{let r=n(()=>t(H)().toFixed(1));_(h,{label:"5xx Rate",get value(){return t(r)},unit:"%",get loading(){return t(s)}})}var L=m(h,2);{let r=n(()=>{var i,u;return Math.round(((u=(i=t(o))==null?void 0:i.summary)==null?void 0:u.avgLatency)??0)});_(L,{label:"Avg Duration",get value(){return t(r)},unit:"ms",get loading(){return t(s)}})}g(d);var x=m(d,2),P=b(x);{let r=n(()=>t(B)());et(P,{get data(){return t(r)},type:"bar",height:240,label:"Function invocations over time",get loading(){return t(s)},color:"#dc2626"})}g(x);var R=m(x,2),q=b(R);{let r=n(()=>t(C)());at(q,{get items(){return t(r)},title:"Functions by invocation count",get loading(){return t(s)}})}var S=m(q,2);{let r=n(()=>t(E)());rt(S,{get items(){return t(r)},title:"Top Functions",get loading(){return t(s)}})}g(R),F(a,f)}}),z()}K(["click"]);export{bt as component};
1
+ import"../chunks/CWj6FrbW.js";import{o as U}from"../chunks/Bn2NtlTj.js";import{p as j,a as z,f as G,c as b,g as t,s as m,r as g,u as n,b as y,d as D,t as J}from"../chunks/BdTBlfLy.js";import{d as K,s as N,a as O}from"../chunks/DtZk82gG.js";import{a as Q,t as V,e as W,i as X}from"../chunks/DYRfe1lC.js";import{a as F,f as I}from"../chunks/DEELgv7K.js";import{s as Y}from"../chunks/CoI6jjbg.js";import{P as Z}from"../chunks/B8s_s9QY.js";import{a as tt}from"../chunks/Q2nPFxS6.js";import{M as _,T as et}from"../chunks/Bed8WcZp.js";import{D as at,T as rt}from"../chunks/B-bKFoyc.js";var nt=I("<button> </button>"),st=I('<div class="range-selector"></div>'),ot=I('<div class="analytics-grid"><!> <!> <!> <!></div> <div class="analytics-chart"><!></div> <div class="analytics-bottom"><!> <!></div>',1);function bt(w,M){j(M,!0);let s=D(!0),o=D(null),p=D("24h");const T=[{value:"1h",label:"1H"},{value:"6h",label:"6H"},{value:"24h",label:"24H"},{value:"7d",label:"7D"},{value:"30d",label:"30D"}],k=n(()=>()=>{switch(t(p)){case"1h":return"minute";case"6h":case"24h":return"hour";default:return"day"}});async function $(){try{const e=await Q.fetch(`data/analytics?range=${t(p)}&category=function&metric=overview&groupBy=${t(k)()}`);y(o,e,!0)}catch(e){V(e instanceof Error?e.message:"Failed to load functions analytics")}finally{y(s,!1)}}function A(e){y(p,e,!0),y(s,!0),$()}U(()=>{$();const e=setInterval($,3e4);return()=>clearInterval(e)});const H=n(()=>()=>{var c;if(!((c=t(o))!=null&&c.summary))return 0;const{totalRequests:e,totalErrors:a}=t(o).summary;return e>0?a/e*100:0}),B=n(()=>()=>{var e;return(((e=t(o))==null?void 0:e.timeSeries)||[]).map(a=>({timestamp:a.timestamp,value:a.requests??a.value??0}))}),C=n(()=>()=>{var e;return(((e=t(o))==null?void 0:e.breakdown)||[]).map(a=>({label:a.label||"other",value:a.count}))}),E=n(()=>()=>{var e;return(((e=t(o))==null?void 0:e.topItems)||[]).map(a=>({label:a.label,count:a.count,secondary:`${Math.round(a.avgLatency)}ms · ${a.errorRate.toFixed(1)}% 5xx`}))});Z(w,{title:"Functions Analytics",description:"Serverless function execution and performance metrics",get docsHref(){return tt},actions:a=>{var c=st();W(c,21,()=>T,X,(f,d)=>{var l=nt();let v;var h=b(l,!0);g(l),J(()=>{v=Y(l,1,"range-btn",null,v,{"range-btn--active":t(p)===t(d).value}),N(h,t(d).label)}),O("click",l,()=>A(t(d).value)),F(f,l)}),g(c),F(a,c)},children:(a,c)=>{var f=ot(),d=G(f),l=b(d);{let r=n(()=>{var i,u;return((u=(i=t(o))==null?void 0:i.summary)==null?void 0:u.totalRequests)??0});_(l,{label:"Invocations",get value(){return t(r)},get loading(){return t(s)}})}var v=m(l,2);{let r=n(()=>{var i,u;return((u=(i=t(o))==null?void 0:i.summary)==null?void 0:u.uniqueUsers)??0});_(v,{label:"Unique Users",get value(){return t(r)},get loading(){return t(s)}})}var h=m(v,2);{let r=n(()=>t(H)().toFixed(1));_(h,{label:"5xx Rate",get value(){return t(r)},unit:"%",get loading(){return t(s)}})}var L=m(h,2);{let r=n(()=>{var i,u;return Math.round(((u=(i=t(o))==null?void 0:i.summary)==null?void 0:u.avgLatency)??0)});_(L,{label:"Avg Duration",get value(){return t(r)},unit:"ms",get loading(){return t(s)}})}g(d);var x=m(d,2),P=b(x);{let r=n(()=>t(B)());et(P,{get data(){return t(r)},type:"bar",height:240,label:"Function invocations over time",get loading(){return t(s)},color:"#dc2626"})}g(x);var R=m(x,2),q=b(R);{let r=n(()=>t(C)());at(q,{get items(){return t(r)},title:"Functions by invocation count",get loading(){return t(s)}})}var S=m(q,2);{let r=n(()=>t(E)());rt(S,{get items(){return t(r)},title:"Top Functions",get loading(){return t(s)}})}g(R),F(a,f)}}),z()}K(["click"]);export{bt as component};
@@ -1 +1 @@
1
- {"version":"1773832965293"}
1
+ {"version":"1773964688040"}
@@ -1,4 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="EdgeBase Icon">
2
2
  <defs>
3
3
  <linearGradient id="fTopL" x1="0%" y1="0%" x2="100%" y2="100%">
4
4
  <stop offset="0%" stop-color="#60a5fa" />
@@ -17,10 +17,11 @@
17
17
  <stop offset="100%" stop-color="#db2777" />
18
18
  </linearGradient>
19
19
  </defs>
20
- <rect x="4" y="4" width="120" height="120" rx="28" fill="#0f172a" />
21
20
  <polygon points="64,24 104,44 64,64" fill="url(#fTopR)" />
22
21
  <polygon points="64,24 24,44 64,64" fill="url(#fTopL)" />
23
22
  <polygon points="24,44 64,64 64,104 24,84" fill="url(#fLeft)" />
24
23
  <polygon points="104,44 64,64 64,104 104,84" fill="url(#fRight)" />
25
24
  <polygon points="64,24 84,34 64,38" fill="white" opacity="0.2" />
25
+ <polyline points="24,44 64,24 104,44" fill="none" stroke="#93c5fd" stroke-width="0.8" opacity="0.3" />
26
+ <line x1="64" y1="24" x2="64" y2="64" stroke="white" stroke-width="0.6" opacity="0.15" />
26
27
  </svg>
@@ -5,27 +5,28 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>EdgeBase Admin</title>
7
7
  <link rel="icon" href="/admin/favicon.svg" type="image/svg+xml" />
8
- <link href="/admin/_app/immutable/entry/start.otAJzcqZ.js" rel="modulepreload">
9
- <link href="/admin/_app/immutable/chunks/CB8xN3_t.js" rel="modulepreload">
10
- <link href="/admin/_app/immutable/chunks/glwixJlP.js" rel="modulepreload">
11
- <link href="/admin/_app/immutable/chunks/DoPXzH7F.js" rel="modulepreload">
12
- <link href="/admin/_app/immutable/chunks/BOjkBtym.js" rel="modulepreload">
13
- <link href="/admin/_app/immutable/entry/app.BcgNsUX3.js" rel="modulepreload">
14
- <link href="/admin/_app/immutable/chunks/D5h5A1cc.js" rel="modulepreload">
15
- <link href="/admin/_app/immutable/chunks/BR_fL5Yv.js" rel="modulepreload">
8
+ <link href="/admin/_app/immutable/entry/start.C1a0bzUm.js" rel="modulepreload">
9
+ <link href="/admin/_app/immutable/chunks/eLBKp9m8.js" rel="modulepreload">
10
+ <link href="/admin/_app/immutable/chunks/BdTBlfLy.js" rel="modulepreload">
11
+ <link href="/admin/_app/immutable/chunks/Bn2NtlTj.js" rel="modulepreload">
12
+ <link href="/admin/_app/immutable/chunks/DSsNi9zA.js" rel="modulepreload">
13
+ <link href="/admin/_app/immutable/entry/app.B0Wfop7v.js" rel="modulepreload">
14
+ <link href="/admin/_app/immutable/chunks/B2bEC_Hm.js" rel="modulepreload">
15
+ <link href="/admin/_app/immutable/chunks/Bb0e0sAP.js" rel="modulepreload">
16
+ <link href="/admin/_app/immutable/chunks/DtZk82gG.js" rel="modulepreload">
17
+ <link href="/admin/_app/immutable/chunks/DEELgv7K.js" rel="modulepreload">
16
18
  <link href="/admin/_app/immutable/chunks/CWj6FrbW.js" rel="modulepreload">
17
- <link href="/admin/_app/immutable/chunks/UUazaC_N.js" rel="modulepreload">
18
- <link href="/admin/_app/immutable/chunks/ehbppgYb.js" rel="modulepreload">
19
- <link href="/admin/_app/immutable/chunks/CyqB6g-D.js" rel="modulepreload">
20
- <link href="/admin/_app/immutable/chunks/C4D51vTW.js" rel="modulepreload">
21
- <link href="/admin/_app/immutable/chunks/B8vJP3wz.js" rel="modulepreload">
19
+ <link href="/admin/_app/immutable/chunks/Y22E1hJM.js" rel="modulepreload">
20
+ <link href="/admin/_app/immutable/chunks/CGgVJi7f.js" rel="modulepreload">
21
+ <link href="/admin/_app/immutable/chunks/F9_4wRrd.js" rel="modulepreload">
22
+ <link href="/admin/_app/immutable/chunks/Cp8V0Xy2.js" rel="modulepreload">
22
23
 
23
24
  </head>
24
25
  <body data-sveltekit-preload-data="hover">
25
26
  <div style="display: contents">
26
27
  <script>
27
28
  {
28
- __sveltekit_ur3bto = {
29
+ __sveltekit_v590bi = {
29
30
  base: "/admin",
30
31
  assets: "/admin"
31
32
  };
@@ -33,8 +34,8 @@
33
34
  const element = document.currentScript.parentElement;
34
35
 
35
36
  Promise.all([
36
- import("/admin/_app/immutable/entry/start.otAJzcqZ.js"),
37
- import("/admin/_app/immutable/entry/app.BcgNsUX3.js")
37
+ import("/admin/_app/immutable/entry/start.C1a0bzUm.js"),
38
+ import("/admin/_app/immutable/entry/app.B0Wfop7v.js")
38
39
  ]).then(([kit, app]) => {
39
40
  kit.start(app, element);
40
41
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edge-base/server",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "EdgeBase runtime assets consumed by the EdgeBase CLI",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -8,7 +8,7 @@
8
8
  "url": "https://github.com/edge-base/edgebase.git",
9
9
  "directory": "packages/server"
10
10
  },
11
- "homepage": "https://edgebase.fun",
11
+ "homepage": "https://github.com/edge-base/edgebase/tree/main/packages/server",
12
12
  "bugs": "https://github.com/edge-base/edgebase/issues",
13
13
  "keywords": [
14
14
  "edgebase",
@@ -34,7 +34,7 @@
34
34
  "jose": "^6.0.0",
35
35
  "pg": "^8.16.3",
36
36
  "zod": "^4.3.6",
37
- "@edge-base/shared": "0.1.2"
37
+ "@edge-base/shared": "0.1.4"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@cloudflare/vitest-pool-workers": "^0.8.71",
@@ -12,6 +12,7 @@ import {
12
12
  parseWindow,
13
13
  FixedWindowCounter,
14
14
  RATE_LIMIT_DEFAULTS,
15
+ RATE_LIMIT_DEV_DEFAULTS,
15
16
  rateLimitMiddleware,
16
17
  } from '../middleware/rate-limit.js';
17
18
  import type { EdgeBaseConfig } from '@edge-base/shared';
@@ -44,13 +45,13 @@ describe('parseWindow', () => {
44
45
  describe('getLimit', () => {
45
46
  it('returns defaults when config is undefined', () => {
46
47
  const result = getLimit(undefined, 'db');
47
- expect(result).toEqual(RATE_LIMIT_DEFAULTS['db']);
48
+ expect(result).toEqual(RATE_LIMIT_DEV_DEFAULTS['db']);
48
49
  });
49
50
 
50
51
  it('returns defaults when rateLimiting is not set', () => {
51
52
  const config = {} as EdgeBaseConfig;
52
53
  const result = getLimit(config, 'db');
53
- expect(result).toEqual(RATE_LIMIT_DEFAULTS['db']);
54
+ expect(result).toEqual(RATE_LIMIT_DEV_DEFAULTS['db']);
54
55
  });
55
56
 
56
57
  it('returns defaults for unknown group', () => {
@@ -84,7 +85,7 @@ describe('getLimit', () => {
84
85
  db: undefined,
85
86
  },
86
87
  } as EdgeBaseConfig;
87
- expect(getLimit(config, 'db')).toEqual(RATE_LIMIT_DEFAULTS['db']);
88
+ expect(getLimit(config, 'db')).toEqual(RATE_LIMIT_DEV_DEFAULTS['db']);
88
89
  });
89
90
  });
90
91
 
@@ -146,9 +146,9 @@ describe('websocket pending helper functions', () => {
146
146
  it('acquires slots until the max pending threshold is reached', async () => {
147
147
  const kv = createMockKV();
148
148
 
149
- await expect(acquirePendingWebSocketSlot(kv, 'ws:pending:127.0.0.1', 2, 30)).resolves.toBe(true);
150
- await expect(acquirePendingWebSocketSlot(kv, 'ws:pending:127.0.0.1', 2, 30)).resolves.toBe(true);
151
- await expect(acquirePendingWebSocketSlot(kv, 'ws:pending:127.0.0.1', 2, 30)).resolves.toBe(false);
149
+ await expect(acquirePendingWebSocketSlot(kv, 'ws:pending:127.0.0.1', 2, 60)).resolves.toBe(true);
150
+ await expect(acquirePendingWebSocketSlot(kv, 'ws:pending:127.0.0.1', 2, 60)).resolves.toBe(true);
151
+ await expect(acquirePendingWebSocketSlot(kv, 'ws:pending:127.0.0.1', 2, 60)).resolves.toBe(false);
152
152
  expect(kv._store.data['ws:pending:127.0.0.1']?.value).toBe('2');
153
153
  });
154
154
 
@@ -156,7 +156,7 @@ describe('websocket pending helper functions', () => {
156
156
  const kv = createMockKV();
157
157
  kv._store.data['ws:pending:127.0.0.1'] = { value: '1' };
158
158
 
159
- await releasePendingWebSocketSlot(kv, 'ws:pending:127.0.0.1', 30);
159
+ await releasePendingWebSocketSlot(kv, 'ws:pending:127.0.0.1', 60);
160
160
 
161
161
  expect(kv._store.data['ws:pending:127.0.0.1']).toBeUndefined();
162
162
  });
@@ -2136,14 +2136,19 @@ export class DatabaseDO extends DurableObject<DOEnv> {
2136
2136
  return null;
2137
2137
  }
2138
2138
 
2139
- /** Ensure a table exists in this DO (throw if not). */
2139
+ /** Ensure a table exists in this DO, lazily creating it from config if needed. */
2140
2140
  private ensureTableExists(name: string): void {
2141
- // We rely on the schema init having already created the table
2142
2141
  const tables = [
2143
2142
  ...this.sql(`SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?`, name),
2144
2143
  ];
2145
2144
  if (tables.length === 0) {
2146
- throw notFoundError(`Table "${name}" not found in this DO.`);
2145
+ // Table doesn't exist yet try to create it lazily from config
2146
+ const config = this.getTableConfig(name);
2147
+ if (config) {
2148
+ this.initTable(name, config);
2149
+ } else {
2150
+ throw notFoundError(`Table "${name}" not found in this DO.`);
2151
+ }
2147
2152
  }
2148
2153
  }
2149
2154
 
@@ -9,6 +9,7 @@
9
9
  * Constraint: `id` must NOT contain `:` character.
10
10
  */
11
11
  import { materializeConfig, type EdgeBaseConfig } from '@edge-base/shared';
12
+ import { counter } from '../middleware/rate-limit.js';
12
13
 
13
14
  const RUNTIME_CONFIG_GLOBAL_KEY = '__EDGEBASE_RUNTIME_CONFIG__';
14
15
 
@@ -145,11 +146,18 @@ function readGlobalRuntimeConfig(): EdgeBaseConfig | null {
145
146
  */
146
147
  export function setConfig(config: EdgeBaseConfig): void {
147
148
  const normalized = materializeConfig(config);
149
+ const configChanged = _runtimeConfig !== null;
148
150
  _runtimeConfig = normalized;
149
151
 
150
152
  if (typeof globalThis === 'object' && globalThis !== null) {
151
153
  (globalThis as Record<string, unknown>)[RUNTIME_CONFIG_GLOBAL_KEY] = normalized;
152
154
  }
155
+
156
+ // Reset rate limit counters when config changes (e.g. hot-reload in dev)
157
+ // to avoid stale counters blocking requests under new limits.
158
+ if (configChanged) {
159
+ counter.reset();
160
+ }
153
161
  }
154
162
 
155
163
  /**
@@ -285,6 +285,17 @@ export interface FunctionVectorizeProxy {
285
285
  export interface FunctionContext {
286
286
  request: Request;
287
287
  auth: AuthContext | null;
288
+ /**
289
+ * Convenience shortcut to `admin.db()`.
290
+ * Access database tables directly without going through `admin`.
291
+ *
292
+ * @example
293
+ * // Static DB
294
+ * await context.db('shared').table('posts').list()
295
+ * // Dynamic DB
296
+ * await context.db('workspace', 'ws-456').table('documents').list()
297
+ */
298
+ db: FunctionAdminContext['db'];
288
299
  /**
289
300
  * Server-side EdgeBase admin client (§5,).
290
301
  * Use context.admin.db(namespace, id?).table(name) for all DB access.
@@ -353,6 +364,16 @@ function getRegistryName(key: string, def: FunctionDefinition): string {
353
364
  }
354
365
 
355
366
  export function registerFunction(name: string, def: FunctionDefinition): void {
367
+ if (!def || typeof def !== 'object' || !def.trigger) {
368
+ const received = typeof def === 'function'
369
+ ? 'a plain function'
370
+ : `${typeof def} (${JSON.stringify(def)?.slice(0, 100)})`;
371
+ throw new Error(
372
+ `registerFunction('${name}'): expected a FunctionDefinition with a 'trigger' property, but received ${received}. ` +
373
+ `Functions must use defineFunction() from '@edge-base/shared' and be exported as named HTTP method exports ` +
374
+ `(e.g. export const GET = defineFunction(...)). See https://docs.edgebase.dev/functions for details.`,
375
+ );
376
+ }
356
377
  functionRegistry.set(buildRegistryKey(name, def), def);
357
378
  }
358
379
 
@@ -655,7 +676,7 @@ export function wrapMethodExport(
655
676
  if (typeof handler === 'function') {
656
677
  fn = handler;
657
678
  } else if (handler && typeof handler === 'object') {
658
- fn = handler.handler ?? (handler as unknown as (ctx: unknown) => Promise<unknown>);
679
+ fn = (handler.handler ?? handler) as unknown as (ctx: unknown) => Promise<unknown>;
659
680
  captcha = handler.captcha;
660
681
  if ('trigger' in handler && handler.trigger && typeof handler.trigger === 'object' && 'path' in handler.trigger) {
661
682
  const triggerPath = handler.trigger.path;
@@ -1409,6 +1430,7 @@ export function buildFunctionContext(options: BuildFunctionContextOptions): Func
1409
1430
  const ctx: FunctionContext = {
1410
1431
  request: options.request,
1411
1432
  auth: options.auth,
1433
+ db: admin.db,
1412
1434
  admin,
1413
1435
  params: options.params ?? {},
1414
1436
  };
@@ -149,6 +149,15 @@ export async function authMiddleware(c: Context<{ Bindings: Env }>, next: Next):
149
149
  c.set('auth', auth);
150
150
  return next();
151
151
  } catch (err) {
152
+ // In non-release (dev) mode, treat invalid/expired tokens as anonymous
153
+ // instead of hard-rejecting. This prevents stale tokens from blocking
154
+ // the demo/dev experience while still validating in production.
155
+ const config = parseConfig(c.env);
156
+ if (!config.release) {
157
+ c.set('auth', null);
158
+ return next();
159
+ }
160
+
152
161
  if (err instanceof TokenExpiredError) {
153
162
  return c.json(
154
163
  { code: 401, message: 'Token expired.', error: 'TOKEN_EXPIRED' },
@@ -41,7 +41,7 @@ type HonoEnv = { Bindings: Env };
41
41
 
42
42
  export const RATE_LIMIT_DEFAULTS: Record<string, { requests: number; windowSec: number }> = {
43
43
  global: { requests: 10_000_000, windowSec: 60 },
44
- db: { requests: 100, windowSec: 60 },
44
+ db: { requests: 100, windowSec: 60 },
45
45
  storage: { requests: 50, windowSec: 60 },
46
46
  functions: { requests: 50, windowSec: 60 },
47
47
  auth: { requests: 30, windowSec: 60 },
@@ -50,6 +50,19 @@ export const RATE_LIMIT_DEFAULTS: Record<string, { requests: number; windowSec:
50
50
  events: { requests: 100, windowSec: 60 },
51
51
  };
52
52
 
53
+ // Dev mode defaults: 10x higher to accommodate React strict mode double-rendering,
54
+ // hot-reload page refreshes, and onSnapshot polling during development.
55
+ export const RATE_LIMIT_DEV_DEFAULTS: Record<string, { requests: number; windowSec: number }> = {
56
+ global: { requests: 10_000_000, windowSec: 60 },
57
+ db: { requests: 1000, windowSec: 60 },
58
+ storage: { requests: 500, windowSec: 60 },
59
+ functions: { requests: 500, windowSec: 60 },
60
+ auth: { requests: 300, windowSec: 60 },
61
+ authSignin: { requests: 100, windowSec: 60 },
62
+ authSignup: { requests: 100, windowSec: 60 },
63
+ events: { requests: 1000, windowSec: 60 },
64
+ };
65
+
53
66
  // ─── Window parser ───
54
67
 
55
68
  /** Parse window string ('60s', '5m', '1h') or number (seconds) to seconds */
@@ -124,6 +137,11 @@ export class FixedWindowCounter {
124
137
  return Math.max(1, Math.ceil((bucket.resetAt - Date.now()) / 1000));
125
138
  }
126
139
 
140
+ /** Clear all buckets. Called when config changes to avoid stale limits blocking requests. */
141
+ reset(): void {
142
+ this.buckets.clear();
143
+ }
144
+
127
145
  private maybeCleanup(now: number): void {
128
146
  if (now - this.lastCleanup < FixedWindowCounter.CLEANUP_INTERVAL) return;
129
147
  this.lastCleanup = now;
@@ -139,7 +157,9 @@ export const counter = new FixedWindowCounter();
139
157
 
140
158
  // ─── Helpers ───
141
159
 
142
- /** Get config-based limit for a group, with fallback to defaults */
160
+ /** Get config-based limit for a group, with fallback to defaults.
161
+ * In dev mode (release !== true), uses relaxed defaults to avoid
162
+ * rate limiting during development with hot-reload and strict mode. */
143
163
  export function getLimit(
144
164
  config: EdgeBaseConfig | undefined,
145
165
  group: string,
@@ -154,7 +174,9 @@ export function getLimit(
154
174
  };
155
175
  }
156
176
  }
157
- return RATE_LIMIT_DEFAULTS[group] ?? { requests: 10_000_000, windowSec: 60 };
177
+ const isDevMode = config?.release !== true;
178
+ const defaults = isDevMode ? RATE_LIMIT_DEV_DEFAULTS : RATE_LIMIT_DEFAULTS;
179
+ return defaults[group] ?? { requests: 10_000_000, windowSec: 60 };
158
180
  }
159
181
 
160
182
  /** Map group name to the corresponding env binding */
@@ -22,7 +22,7 @@ import {
22
22
  export const databaseLiveRoute = new OpenAPIHono<HonoEnv>({ defaultHook: zodDefaultHook });
23
23
 
24
24
  const MAX_PENDING_PER_IP = 5;
25
- const PENDING_TTL_SECONDS = 10;
25
+ const PENDING_TTL_SECONDS = 60;
26
26
  const dbLiveQuerySchema = z.object({
27
27
  channel: z.string().optional().openapi({ description: 'Legacy DB subscription channel name' }),
28
28
  namespace: z.string().optional().openapi({ description: 'Database namespace', example: 'shared' }),
@@ -150,6 +150,14 @@ functionsRoute.all('/:functionName{.+}', async (c) => {
150
150
  }
151
151
 
152
152
  console.error(`[EdgeBase] HTTP function '${matched.route.name}' error:`, err);
153
- return c.json({ code: 500, message: 'Function execution failed.' }, 500);
153
+ const release = parseConfig(c.env)?.release ?? false;
154
+ return c.json({
155
+ code: 500,
156
+ message: 'Function execution failed.',
157
+ ...(!release && {
158
+ error: err instanceof Error ? err.message : String(err),
159
+ stack: err instanceof Error ? err.stack : undefined,
160
+ }),
161
+ }, 500);
154
162
  }
155
163
  });
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Supported actions:
8
8
  * upsert — Insert or replace vectors (write)
9
- * insert — Insert vectors, error on duplicate ID (write)
9
+ * insert — Insert new vectors without replacing existing IDs (write)
10
10
  * search — Similarity search by vector values (query)
11
11
  * queryById — Similarity search using an existing vector's ID (query, Vectorize v2 only)
12
12
  * getByIds — Retrieve vectors by ID (query)
@@ -17,8 +17,8 @@
17
17
  * - Config Allowlist: index must be declared in config.vectorize
18
18
  * - Service Key required with scoped validation
19
19
  *
20
- * Note: Vectorize is Cloudflare Edge-only. In local/Docker (Miniflare), the binding
21
- * will not exist the route returns a stub response with a warning.
20
+ * Note: Cloudflare does not provide a local Vectorize simulation. When the binding
21
+ * is unavailable in EdgeBase local or Docker environments, the route returns a stub response with a warning.
22
22
  *
23
23
  * Flow: Server SDK → POST /api/vectorize/:index → Worker → Vectorize binding → JSON
24
24
  */
@@ -161,7 +161,7 @@ vectorizeRoute.openapi(vectorizeOperation, async (c) => {
161
161
  // ─── Binding access ───────────────────────────────────────────────────
162
162
 
163
163
  // §1 Env type — dynamic binding access via type assertion
164
- // §7: Vectorize is Edge-only, Miniflare doesn't support it
164
+ // §7: Vectorize has no local simulation in Cloudflare. EdgeBase falls back to stubs.
165
165
  const bindingName = vectorConfig.binding ?? `VECTORIZE_${nameParam.toUpperCase()}`;
166
166
  const binding = (c.env as unknown as Record<string, unknown>)[bindingName] as VectorizeIndex | undefined;
167
167
  if (!binding) {
@@ -1 +0,0 @@
1
- .crp-overlay.svelte-sxc7i5{position:fixed;top:0;right:0;bottom:0;left:0;border:none;padding:0;background:#00000059;z-index:40;cursor:pointer}.crp.svelte-sxc7i5{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:min(92vw,420px);display:flex;flex-direction:column;background:var(--color-bg);border-left:1px solid var(--color-border);box-shadow:-8px 0 24px #0000002e;z-index:41;animation:svelte-sxc7i5-crp-slide .2s ease-out}@keyframes svelte-sxc7i5-crp-slide{0%{transform:translate(100%)}to{transform:translate(0)}}.crp-header.svelte-sxc7i5{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--color-border)}.crp-title.svelte-sxc7i5{margin:0;font-size:16px;font-weight:600}.crp-subtitle.svelte-sxc7i5{margin:6px 0 0;font-size:12px;color:var(--color-text-secondary)}.crp-close.svelte-sxc7i5{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:18px;cursor:pointer}.crp-close.svelte-sxc7i5:hover:not(:disabled){background:var(--color-bg-secondary);color:var(--color-text)}.crp-body.svelte-sxc7i5{flex:1;overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.crp-field.svelte-sxc7i5{display:flex;flex-direction:column;gap:var(--space-2)}.crp-note.svelte-sxc7i5{padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);font-size:12px;color:var(--color-text-secondary);line-height:1.55}.crp-field__header.svelte-sxc7i5{display:flex;align-items:center;gap:var(--space-2)}.crp-field__name.svelte-sxc7i5{font-size:12px;font-weight:600;color:var(--color-text-secondary)}.crp-field__type.svelte-sxc7i5{font-size:10px;padding:1px 6px;border-radius:9999px;background:var(--color-bg-secondary);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.crp-input.svelte-sxc7i5{width:100%;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text);font:inherit}.crp-input.svelte-sxc7i5:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 22%,transparent)}.crp-input--error.svelte-sxc7i5{border-color:var(--color-danger);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-danger) 18%,transparent)}.crp-input--textarea.svelte-sxc7i5{resize:vertical;min-height:120px;font-family:var(--font-mono)}.crp-helper.svelte-sxc7i5,.crp-error.svelte-sxc7i5{margin:0;font-size:12px;line-height:1.5}.crp-helper.svelte-sxc7i5{color:var(--color-text-secondary)}.crp-error.svelte-sxc7i5{color:var(--color-danger)}.crp-footer.svelte-sxc7i5{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:auto;padding-top:var(--space-2);border-top:1px solid var(--color-border)}.crp-btn.svelte-sxc7i5{display:inline-flex;align-items:center;justify-content:center;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font:inherit;cursor:pointer}.crp-btn.svelte-sxc7i5:disabled,.crp-close.svelte-sxc7i5:disabled{opacity:.6;cursor:not-allowed}.crp-btn--primary.svelte-sxc7i5{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.crp-spinner.svelte-sxc7i5{width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:9999px;animation:svelte-sxc7i5-crp-spin .7s linear infinite}@keyframes svelte-sxc7i5-crp-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dg.svelte-45rfpz{display:flex;flex-direction:column;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);outline:none;font-size:13px}.dg.svelte-45rfpz:focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 20%,transparent)}.dg-toolbar.svelte-45rfpz{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary);gap:var(--space-2);min-height:36px;flex-wrap:wrap}.dg-toolbar__left.svelte-45rfpz,.dg-toolbar__right.svelte-45rfpz{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.dg-toolbar__left.svelte-45rfpz{flex:1 1 240px;min-width:0}.dg-toolbar__right.svelte-45rfpz{justify-content:flex-end;margin-left:auto}.dg-btn.svelte-45rfpz{display:inline-flex;align-items:center;padding:4px 10px;font-size:12px;font-family:inherit;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);cursor:pointer;white-space:nowrap}.dg-btn.svelte-45rfpz:hover{background:var(--color-bg-tertiary)}.dg-btn.svelte-45rfpz:disabled{opacity:.5;cursor:not-allowed}.dg-btn--sm.svelte-45rfpz{padding:2px 8px}.dg-btn--primary.svelte-45rfpz{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.dg-btn--primary.svelte-45rfpz:hover{filter:brightness(1.1)}.dg-btn--danger.svelte-45rfpz{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.dg-btn--danger.svelte-45rfpz:hover{filter:brightness(1.1)}.dg-table-wrap.svelte-45rfpz{position:relative;overflow-x:auto;overflow-y:auto;max-height:70vh}.dg-table.svelte-45rfpz{width:100%;border-collapse:collapse;table-layout:fixed}.dg-th.svelte-45rfpz{position:sticky;top:0;z-index:2;padding:0;text-align:left;font-weight:600;font-size:12px;color:var(--color-text-secondary);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none}.dg-th--checkbox.svelte-45rfpz{width:36px!important;min-width:36px!important;text-align:center;padding:var(--space-2)}.dg-th--actions.svelte-45rfpz{position:sticky;right:0;z-index:4;width:80px!important;min-width:80px!important;text-align:right;padding:var(--space-2) var(--space-3);background:var(--color-bg-secondary);box-shadow:-12px 0 16px -16px color-mix(in srgb,var(--color-text) 55%,transparent)}.dg-th__inner.svelte-45rfpz{display:flex;align-items:center;position:relative}.dg-sort-btn.svelte-45rfpz{flex:1;display:flex;align-items:center;gap:4px;padding:var(--space-2) var(--space-3);border:none;background:none;color:inherit;font:inherit;font-weight:600;font-size:12px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;letter-spacing:.03em}.dg-sort-btn.svelte-45rfpz:hover{color:var(--color-text)}.dg-sort-icon.svelte-45rfpz{font-size:9px;opacity:.6}.dg-resize-handle.svelte-45rfpz{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}.dg-resize-handle.svelte-45rfpz:hover,.dg-resize-handle.svelte-45rfpz:active{background:var(--color-primary);opacity:.5}.dg-td.svelte-45rfpz{padding:var(--space-1) var(--space-3);border-bottom:1px solid var(--color-border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:default;height:32px;vertical-align:middle}.dg-td--checkbox.svelte-45rfpz{text-align:center;width:36px}.dg-td--actions.svelte-45rfpz{position:sticky;right:0;z-index:1;text-align:right;white-space:nowrap;background:var(--dg-row-bg, var(--color-bg));box-shadow:-12px 0 16px -16px color-mix(in srgb,var(--color-text) 55%,transparent)}.dg-td--empty.svelte-45rfpz{padding:var(--space-7);text-align:center;color:var(--color-text-secondary)}.dg-td--focused.svelte-45rfpz{outline:2px solid var(--color-primary);outline-offset:-2px}.dg-td--dirty.svelte-45rfpz{background:color-mix(in srgb,var(--color-warning) 10%,transparent)}.dg-td--editing.svelte-45rfpz{padding:0;overflow:visible}.dg-cell-value.svelte-45rfpz{font-family:var(--font-mono);font-size:12px}.dg-cell-trigger.svelte-45rfpz{display:flex;align-items:center;width:100%;height:100%;padding:0;border:none;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.dg-cell-trigger.svelte-45rfpz:focus{outline:none}.dg-cell-value--null.svelte-45rfpz{color:var(--color-text-tertiary);font-style:italic}.dg-cell-link.svelte-45rfpz{font-family:var(--font-mono);font-size:12px;color:var(--color-primary);text-decoration:none;cursor:pointer}.dg-cell-link.svelte-45rfpz:hover{text-decoration:underline}.dg-bool.svelte-45rfpz{font-size:14px}.dg-cell-editor.svelte-45rfpz{width:100%;height:100%;min-height:30px;padding:2px var(--space-2);border:2px solid var(--color-primary);border-radius:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-mono);font-size:12px;outline:none;box-sizing:border-box}.dg-cell-editor--json.svelte-45rfpz{min-height:80px;resize:vertical;position:absolute;z-index:10;width:300px;box-shadow:var(--shadow-md)}select.dg-cell-editor.svelte-45rfpz{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.dg-row.svelte-45rfpz{--dg-row-bg: var(--color-bg);transition:background .1s}.dg-row.svelte-45rfpz:hover{--dg-row-bg: var(--color-bg-secondary);background:var(--dg-row-bg)}.dg-row--selected.svelte-45rfpz{--dg-row-bg: color-mix(in srgb, var(--color-primary) 8%, var(--color-bg));background:var(--dg-row-bg)}.dg-row--dirty.svelte-45rfpz{--dg-row-bg: color-mix(in srgb, var(--color-warning) 6%, var(--color-bg));background:var(--dg-row-bg)}.dg-row.svelte-45rfpz:last-child .dg-td:where(.svelte-45rfpz){border-bottom:none}.dg-act-btn.svelte-45rfpz{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer;font-size:14px}.dg-act-btn.svelte-45rfpz:hover{background:var(--color-bg-tertiary);color:var(--color-text)}.dg-act-btn--save.svelte-45rfpz{color:var(--color-success)}.dg-act-btn--save.svelte-45rfpz:hover{background:color-mix(in srgb,var(--color-success) 15%,transparent)}.dg-act-btn.svelte-45rfpz:disabled{opacity:.5;cursor:not-allowed}.dg-footer.svelte-45rfpz{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border);background:var(--color-bg-secondary);font-size:12px}.dg-footer__left.svelte-45rfpz,.dg-footer__right.svelte-45rfpz{display:flex;align-items:center;gap:var(--space-2)}.dg-count.svelte-45rfpz{color:var(--color-text-tertiary)}.dg-page-size.svelte-45rfpz{padding:2px 6px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-size:11px;cursor:pointer}.dg-page-info.svelte-45rfpz{color:var(--color-text-secondary)}.dg-col-picker-wrap.svelte-45rfpz{position:relative}.dg-col-picker-backdrop.svelte-45rfpz{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9;border:none;background:transparent}.dg-col-picker.svelte-45rfpz{position:absolute;right:0;top:100%;margin-top:4px;z-index:10;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--space-2);min-width:180px;max-height:300px;overflow-y:auto}.dg-col-picker__item.svelte-45rfpz{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);font-size:12px;cursor:pointer;border-radius:var(--radius-sm);white-space:nowrap}.dg-col-picker__item.svelte-45rfpz:hover{background:var(--color-bg-secondary)}.dg-col-picker__item.svelte-45rfpz input[type=checkbox]:where(.svelte-45rfpz){margin:0}.dg-col-picker__item.svelte-45rfpz input:where(.svelte-45rfpz):disabled+span:where(.svelte-45rfpz){opacity:.5}.dg-loading.svelte-45rfpz{display:flex;align-items:center;justify-content:center;gap:var(--space-2);color:var(--color-text-secondary)}.dg-spinner.svelte-45rfpz{display:inline-block;width:14px;height:14px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:svelte-45rfpz-dg-spin .6s linear infinite}.dg-spinner-sm.svelte-45rfpz{display:inline-block;width:10px;height:10px;border:1.5px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:svelte-45rfpz-dg-spin .6s linear infinite}@keyframes svelte-45rfpz-dg-spin{to{transform:rotate(360deg)}}.rdp-overlay.svelte-yphh8m{position:fixed;top:0;right:0;bottom:0;left:0;border:none;padding:0;background:#0000004d;z-index:40;cursor:pointer}.rdp.svelte-yphh8m{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:90vw;background:var(--color-bg);border-left:1px solid var(--color-border);box-shadow:-4px 0 20px #0000001a;z-index:41;display:flex;flex-direction:column;animation:svelte-yphh8m-rdp-slide .2s ease-out}@keyframes svelte-yphh8m-rdp-slide{0%{transform:translate(100%)}to{transform:translate(0)}}.rdp-header.svelte-yphh8m{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--color-border)}.rdp-title.svelte-yphh8m{margin:0;font-size:15px;font-weight:600}.rdp-subtitle.svelte-yphh8m{margin:6px 0 0;font-size:12px;color:var(--color-text-secondary)}.rdp-close.svelte-yphh8m{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:18px;cursor:pointer}.rdp-close.svelte-yphh8m:hover:not(:disabled){background:var(--color-bg-secondary);color:var(--color-text)}.rdp-body.svelte-yphh8m{flex:1;overflow-y:auto;padding:var(--space-3)}.rdp-field.svelte-yphh8m{padding:var(--space-3);border-bottom:1px solid var(--color-border)}.rdp-field.svelte-yphh8m:last-child{border-bottom:none}.rdp-field__header.svelte-yphh8m{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.rdp-field__name.svelte-yphh8m{font-size:12px;font-weight:600;color:var(--color-text-secondary);font-family:var(--font-mono)}.rdp-field__type.svelte-yphh8m{font-size:10px;color:var(--color-text-tertiary);padding:1px 6px;background:var(--color-bg-secondary);border-radius:9999px;text-transform:uppercase;letter-spacing:.04em}.rdp-field__value.svelte-yphh8m{font-size:13px;font-family:var(--font-mono);color:var(--color-text);word-break:break-all}.rdp-field__value--null.svelte-yphh8m{color:var(--color-text-tertiary);font-style:italic}.rdp-input.svelte-yphh8m{width:100%;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text);font:inherit}.rdp-input.svelte-yphh8m:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 22%,transparent)}.rdp-input--textarea.svelte-yphh8m{resize:vertical;min-height:120px;font-family:var(--font-mono)}.rdp-bool.svelte-yphh8m{font-size:13px}.rdp-json.svelte-yphh8m{margin:0;padding:var(--space-2);background:var(--color-bg-secondary);border-radius:var(--radius-sm);font-size:12px;overflow-x:auto;white-space:pre-wrap}.rdp-link.svelte-yphh8m{color:var(--color-primary);text-decoration:none}.rdp-link.svelte-yphh8m:hover{text-decoration:underline}.rdp-footer.svelte-yphh8m{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4);border-top:1px solid var(--color-border)}.rdp-btn.svelte-yphh8m{display:inline-flex;align-items:center;justify-content:center;min-width:96px;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font:inherit;cursor:pointer}.rdp-btn.svelte-yphh8m:disabled,.rdp-close.svelte-yphh8m:disabled{opacity:.55;cursor:not-allowed}.rdp-btn--primary.svelte-yphh8m{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.rdp-spinner.svelte-yphh8m{width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fffffff2;border-radius:9999px;animation:svelte-yphh8m-rdp-spin .8s linear infinite}@keyframes svelte-yphh8m-rdp-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.records-tab.svelte-198lwhz{display:flex;flex-direction:column;gap:var(--space-4)}.toolbar.svelte-198lwhz{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.search-bar.svelte-198lwhz{display:flex;align-items:center;gap:var(--space-2)}.search-input.svelte-198lwhz{padding:var(--space-2) var(--space-3);font-size:13px;font-family:inherit;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);outline:none;min-width:200px}.search-input.svelte-198lwhz:focus{border-color:var(--color-primary)}.toolbar__right.svelte-198lwhz{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.toolbar__meta.svelte-198lwhz{font-size:12px;color:var(--color-text-tertiary)}.csv-import.svelte-198lwhz{display:flex;flex-direction:column;gap:var(--space-4)}.csv-error.svelte-198lwhz{padding:var(--space-3);background:#fee2e2;color:#991b1b;font-size:13px;border-radius:var(--radius-md)}.csv-upload.svelte-198lwhz{display:flex;align-items:center;gap:var(--space-3)}.csv-upload-label.svelte-198lwhz{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-3);font-size:13px;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;background:var(--color-bg-secondary);color:var(--color-text)}.csv-upload-label.svelte-198lwhz:hover{background:var(--color-bg-tertiary)}.csv-file-input.svelte-198lwhz{display:none}.csv-filename.svelte-198lwhz{font-size:12px;color:var(--color-text-secondary);font-family:var(--font-mono)}.csv-section.svelte-198lwhz{display:flex;flex-direction:column;gap:var(--space-2)}.csv-section-title.svelte-198lwhz{margin:0;font-size:13px;font-weight:600}.csv-mappings.svelte-198lwhz{display:flex;flex-direction:column;gap:var(--space-2)}.csv-map-row.svelte-198lwhz{display:flex;align-items:center;gap:var(--space-2)}.csv-map-from.svelte-198lwhz{min-width:120px;font-size:12px;font-family:var(--font-mono);color:var(--color-text-secondary)}.csv-map-arrow.svelte-198lwhz{font-size:12px;color:var(--color-text-tertiary)}.csv-map-select.svelte-198lwhz{padding:var(--space-1) var(--space-2);font-size:12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);min-width:140px}.csv-preview-wrap.svelte-198lwhz{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md)}.csv-preview-table.svelte-198lwhz{width:100%;border-collapse:collapse;font-size:12px}.csv-preview-th.svelte-198lwhz{padding:var(--space-1) var(--space-2);text-align:left;font-weight:600;font-family:var(--font-mono);font-size:11px;background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);white-space:nowrap}.csv-preview-td.svelte-198lwhz{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--color-border);font-family:var(--font-mono);font-size:11px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sql-editor-wrap.svelte-392xt8{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.sql-editor-wrap.svelte-392xt8 .cm-editor{min-height:120px}.sql-editor-wrap.svelte-392xt8 .cm-editor.cm-focused{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 20%,transparent)}.table-sql.svelte-1syrthj{display:flex;flex-direction:column;gap:var(--space-4)}.table-sql__toolbar.svelte-1syrthj{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.table-sql__target.svelte-1syrthj{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);font-size:12px}.table-sql__target-label.svelte-1syrthj{color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.table-sql__target.svelte-1syrthj code:where(.svelte-1syrthj){font-family:var(--font-mono);color:var(--color-text)}.table-sql__shortcut.svelte-1syrthj{font-size:12px;color:var(--color-text-tertiary);margin-left:auto}.table-sql__result-tabs.svelte-1syrthj{display:flex;flex-wrap:wrap;gap:var(--space-2)}.table-sql__result-tab.svelte-1syrthj{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer}.table-sql__result-tab--active.svelte-1syrthj{border-color:var(--color-primary);color:var(--color-primary)}.table-sql__result-open.svelte-1syrthj{border:none;background:transparent;color:inherit;cursor:pointer;padding:0;font:inherit}.table-sql__result-close.svelte-1syrthj{border:none;background:transparent;color:inherit;cursor:pointer;padding:0;line-height:1}.table-sql__result-panel.svelte-1syrthj{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);background:var(--color-bg)}.table-sql__result-meta.svelte-1syrthj{margin-bottom:var(--space-3);font-size:12px;color:var(--color-text-secondary)}.table-sql__result-error.svelte-1syrthj{color:var(--color-danger, #ef4444)}.table-sql__error-block.svelte-1syrthj,.table-sql__empty.svelte-1syrthj{margin:0;padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-bg-secondary);color:var(--color-text-secondary);font-size:13px}.index-editor.svelte-v6rf4z{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.index-editor__header.svelte-v6rf4z{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary)}.index-editor__title.svelte-v6rf4z{font-size:13px;font-weight:600;color:var(--color-text)}.index-form.svelte-v6rf4z{padding:var(--space-4);border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-3)}.index-form__actions.svelte-v6rf4z{display:flex;justify-content:flex-end}.index-error.svelte-v6rf4z{padding:var(--space-2) var(--space-3);background:#fee2e2;color:#991b1b;font-size:12px;border-radius:var(--radius-sm)}.index-row.svelte-v6rf4z{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border)}.index-row.svelte-v6rf4z:last-child{border-bottom:none}.index-fields.svelte-v6rf4z{font-family:var(--font-mono);font-size:13px;flex:1}.index-unique.svelte-v6rf4z{padding:1px 6px;background:#dbeafe;color:#1e40af;font-size:11px;font-weight:500;border-radius:var(--radius-sm)}.index-empty.svelte-v6rf4z{padding:var(--space-4);text-align:center;font-size:13px;color:var(--color-text-secondary)}.index-delete.svelte-v6rf4z{display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer}.index-delete.svelte-v6rf4z:hover{background:#fee2e2;color:var(--color-danger)}.fts-editor.svelte-974m0i{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.fts-editor__header.svelte-974m0i{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary)}.fts-editor__title.svelte-974m0i{font-size:13px;font-weight:600;color:var(--color-text)}.fts-list.svelte-974m0i{display:flex;flex-direction:column}.fts-item.svelte-974m0i{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border);font-size:13px;cursor:pointer}.fts-item.svelte-974m0i:last-child{border-bottom:none}.fts-item.svelte-974m0i:hover{background:var(--color-bg-secondary)}.fts-item.svelte-974m0i code:where(.svelte-974m0i){font-family:var(--font-mono);font-size:13px}.fts-active.svelte-974m0i{margin-left:auto;padding:1px 6px;background:#dcfce7;color:#166534;font-size:11px;font-weight:500;border-radius:var(--radius-sm)}.fts-empty.svelte-974m0i{padding:var(--space-4);text-align:center;font-size:13px;color:var(--color-text-secondary)}.schema-tab.svelte-aw0zhs{display:flex;flex-direction:column;gap:var(--space-4)}.schema-empty.svelte-aw0zhs{padding:var(--space-7);text-align:center;color:var(--color-danger)}.readonly-banner.svelte-aw0zhs{padding:var(--space-3) var(--space-4);background:#fef3c7;color:#92400e;font-size:13px;border-radius:var(--radius-md)}.schema-actions.svelte-aw0zhs{display:flex;align-items:center;gap:var(--space-2)}.schema-note.svelte-aw0zhs,.schema-namespace.svelte-aw0zhs{font-size:12px;color:var(--color-text-secondary)}.schema-namespace.svelte-aw0zhs code:where(.svelte-aw0zhs){font-family:var(--font-mono);padding:1px 6px;background:var(--color-bg-secondary);border-radius:var(--radius-sm)}.rename-inline.svelte-aw0zhs{display:flex;align-items:center;gap:var(--space-2)}.rename-input.svelte-aw0zhs{padding:var(--space-1) var(--space-3);font-size:13px;font-family:var(--font-mono);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;width:180px}.rename-input.svelte-aw0zhs:focus{border-color:var(--color-primary)}.rt-layout.svelte-wqn9yg{display:flex;flex-direction:column;gap:var(--space-5)}.rt-form.svelte-wqn9yg{display:flex;flex-direction:column;gap:var(--space-4);max-width:600px}.rt-field.svelte-wqn9yg{display:flex;flex-direction:column;gap:var(--space-1);border:none;padding:0;margin:0;min-width:0}.rt-label.svelte-wqn9yg{font-size:12px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em}.rt-select.svelte-wqn9yg,.rt-textarea.svelte-wqn9yg{padding:var(--space-2) var(--space-3);font-size:13px;font-family:inherit;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);outline:none}.rt-select.svelte-wqn9yg:focus,.rt-textarea.svelte-wqn9yg:focus{border-color:var(--color-primary)}.rt-textarea.svelte-wqn9yg{font-family:var(--font-mono);resize:vertical}.rt-radio-group.svelte-wqn9yg{display:flex;gap:var(--space-4)}.rt-radio.svelte-wqn9yg{display:flex;align-items:center;gap:var(--space-1);font-size:13px;cursor:pointer}.rt-results-title.svelte-wqn9yg{font-size:14px;font-weight:600;margin:0 0 var(--space-3)}.rt-results-grid.svelte-wqn9yg{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-3)}.rt-result-card.svelte-wqn9yg{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);border-left:3px solid var(--color-border)}.rt-result-card--allowed.svelte-wqn9yg{border-left-color:var(--color-success)}.rt-result-card--denied.svelte-wqn9yg{border-left-color:var(--color-danger)}.rt-result-header.svelte-wqn9yg{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.rt-result-op.svelte-wqn9yg{font-weight:600;font-size:13px;text-transform:uppercase}.rt-result-badge.svelte-wqn9yg{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px}.rt-badge--allowed.svelte-wqn9yg{background:color-mix(in srgb,var(--color-success) 15%,transparent);color:var(--color-success)}.rt-badge--denied.svelte-wqn9yg{background:color-mix(in srgb,var(--color-danger) 15%,transparent);color:var(--color-danger)}.rt-result-rule.svelte-wqn9yg{font-size:11px;color:var(--color-text-tertiary);display:block}.rt-result-error.svelte-wqn9yg{font-size:11px;color:var(--color-danger);margin-top:var(--space-1)}.sdk-snippets.svelte-hdcl64{display:flex;flex-direction:column;gap:var(--space-3)}.lang-tabs.svelte-hdcl64{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--color-border)}.lang-tab.svelte-hdcl64{padding:var(--space-2) var(--space-4);font-size:13px;font-weight:500;color:var(--color-text-secondary);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-1px}.lang-tab.svelte-hdcl64:hover{color:var(--color-text)}.lang-tab--active.svelte-hdcl64{color:var(--color-primary);border-bottom-color:var(--color-primary)}.op-tabs.svelte-hdcl64{display:flex;flex-wrap:wrap;gap:var(--space-2)}.op-tab.svelte-hdcl64{padding:var(--space-1) var(--space-3);font-size:12px;font-weight:500;color:var(--color-text-secondary);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:9999px;cursor:pointer}.op-tab.svelte-hdcl64:hover{background:var(--color-bg-tertiary)}.op-tab--active.svelte-hdcl64{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.code-block.svelte-hdcl64{position:relative;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);overflow:hidden}.copy-btn.svelte-hdcl64{position:absolute;top:var(--space-2);right:var(--space-2);display:inline-flex;align-items:center;gap:4px;padding:var(--space-1) var(--space-2);font-size:11px;color:var(--color-text-secondary);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;z-index:1}.copy-btn.svelte-hdcl64:hover{background:var(--color-bg-tertiary);color:var(--color-text)}.code-pre.svelte-hdcl64{margin:0;padding:var(--space-4);padding-right:80px;font-family:var(--font-mono);font-size:13px;line-height:1.5;color:var(--color-text);overflow-x:auto;white-space:pre;-moz-tab-size:2;tab-size:2}.table-detail.svelte-11vdap9{display:flex;flex-direction:column;gap:0}.table-header.svelte-11vdap9{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.table-header__meta.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-2)}.table-header__actions.svelte-11vdap9{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end}.table-header__hint.svelte-11vdap9{width:100%;font-size:12px;line-height:1.5;color:var(--color-text-secondary);text-align:right}.table-header__hint.svelte-11vdap9 code:where(.svelte-11vdap9){font-family:var(--font-mono);padding:1px 6px;background:var(--color-bg-secondary);border-radius:var(--radius-sm)}.table-title.svelte-11vdap9{margin:0;font-size:20px;font-weight:600;font-family:var(--font-mono);color:var(--color-text)}.table-badges.svelte-11vdap9{display:flex;flex-wrap:wrap;gap:var(--space-2)}.table-badge.svelte-11vdap9{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:var(--color-bg-secondary);border:1px solid var(--color-border);font-size:11px;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em}.table-badge--dynamic.svelte-11vdap9{color:var(--color-primary);border-color:color-mix(in srgb,var(--color-primary) 35%,var(--color-border))}.erd-link.svelte-11vdap9{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);font-size:12px;color:var(--color-text-secondary);text-decoration:none;border:1px solid var(--color-border);border-radius:var(--radius-md);transition:background-color .1s,color .1s}.erd-link.svelte-11vdap9:hover{background:var(--color-bg-secondary);color:var(--color-text)}.upgrade-modal.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-4)}.upgrade-modal__text.svelte-11vdap9{margin:0;font-size:13px;line-height:1.6;color:var(--color-text-secondary)}.upgrade-modal__field.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-2)}.upgrade-modal__choices.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-3)}.upgrade-modal__choices-copy.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-1)}.upgrade-modal__choice-grid.svelte-11vdap9{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-3)}.upgrade-modal__choice-card.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-3);height:100%;padding:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg)}.upgrade-modal__choice-eyebrow.svelte-11vdap9{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-tertiary)}.upgrade-modal__choice-header.svelte-11vdap9{display:flex;flex-direction:column;gap:4px}.upgrade-modal__choice-title.svelte-11vdap9{margin:0;font-size:14px;font-weight:600;color:var(--color-text)}.upgrade-modal__notice.svelte-11vdap9,.upgrade-modal__status.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-secondary)}.upgrade-modal__notice-title.svelte-11vdap9,.upgrade-modal__status-title.svelte-11vdap9{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text)}.upgrade-modal__status.svelte-11vdap9{border-color:color-mix(in srgb,var(--color-primary) 35%,var(--color-border));background:color-mix(in srgb,var(--color-primary) 8%,var(--color-bg-secondary))}.upgrade-modal__status-copy.svelte-11vdap9{margin:0;font-size:12px;line-height:1.6;color:var(--color-text-secondary)}.upgrade-modal__status-current.svelte-11vdap9{font-size:12px;font-weight:600;color:var(--color-text)}.upgrade-modal__steps.svelte-11vdap9{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:12px;line-height:1.5;color:var(--color-text-secondary)}.upgrade-modal__step--active.svelte-11vdap9{color:var(--color-text);font-weight:600}.upgrade-modal__step--done.svelte-11vdap9{color:var(--color-success)}.upgrade-modal__label.svelte-11vdap9{font-size:12px;font-weight:600;color:var(--color-text)}.upgrade-modal__input.svelte-11vdap9{width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);font-family:var(--font-mono);box-sizing:border-box}.upgrade-modal__static.svelte-11vdap9{width:100%;padding:var(--space-2) var(--space-3);font-size:.875rem;line-height:1.25rem;color:var(--color-text);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);box-sizing:border-box}.upgrade-modal__static.svelte-11vdap9 code:where(.svelte-11vdap9){font-family:var(--font-mono, "SFMono-Regular", monospace);font-size:.8125rem}.upgrade-modal__select.svelte-11vdap9{width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);box-sizing:border-box}.upgrade-modal__actions-row.svelte-11vdap9{display:flex;justify-content:flex-start}.upgrade-modal__choice-actions.svelte-11vdap9{margin-top:auto}.upgrade-modal__hint.svelte-11vdap9{margin:0;font-size:12px;color:var(--color-text-tertiary)}.upgrade-modal__hint--error.svelte-11vdap9{color:var(--color-danger)}.target-bar.svelte-11vdap9{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--space-4);padding:var(--space-4);margin-bottom:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:linear-gradient(180deg,var(--color-bg-secondary),var(--color-bg))}.target-bar__copy.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-1)}.target-bar__title.svelte-11vdap9{font-size:13px;font-weight:600;color:var(--color-text)}.target-bar__description.svelte-11vdap9{font-size:12px;color:var(--color-text-secondary);max-width:520px}.target-bar__controls.svelte-11vdap9{display:flex;align-items:flex-end;gap:var(--space-2);flex-wrap:wrap}.target-bar__field.svelte-11vdap9{display:flex;flex-direction:column;gap:6px;min-width:min(280px,100%)}.target-bar__field-label.svelte-11vdap9{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-tertiary)}.target-bar__input.svelte-11vdap9{width:min(280px,100%);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);font-family:var(--font-mono)}.target-bar__button.svelte-11vdap9{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer}.target-bar__button--primary.svelte-11vdap9{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.target-bar__suggestions.svelte-11vdap9{flex:1 0 100%;display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-2);border-top:1px solid color-mix(in srgb,var(--color-border) 75%,transparent)}.target-bar__section.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-2)}.target-bar__section-label.svelte-11vdap9{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-tertiary)}.target-bar__chip-row.svelte-11vdap9{display:flex;flex-wrap:wrap;gap:var(--space-2)}.target-chip.svelte-11vdap9{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;text-align:left}.target-chip.svelte-11vdap9:hover{border-color:color-mix(in srgb,var(--color-primary) 35%,var(--color-border));background:var(--color-bg-secondary)}.target-chip__label.svelte-11vdap9{font-size:13px;font-weight:600}.target-chip__meta.svelte-11vdap9{font-size:11px;color:var(--color-text-secondary)}.target-bar__status.svelte-11vdap9{font-size:12px;color:var(--color-text-secondary)}.target-bar__status--error.svelte-11vdap9{color:var(--color-danger)}.tab-bar.svelte-11vdap9{display:flex;gap:0;border-bottom:1px solid var(--color-border);margin-bottom:var(--space-4);overflow-x:auto;overflow-y:hidden}.tab-btn.svelte-11vdap9{padding:var(--space-2) var(--space-4);font-size:13px;font-weight:500;color:var(--color-text-secondary);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .1s,border-color .1s;margin-bottom:-1px;white-space:nowrap}.tab-btn.svelte-11vdap9:hover{color:var(--color-text)}.tab-btn.tab-btn--active.svelte-11vdap9{color:var(--color-primary);border-bottom-color:var(--color-primary)}.tab-content.svelte-11vdap9{flex:1}.target-empty.svelte-11vdap9{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5);border:1px dashed var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-secondary)}.target-empty.svelte-11vdap9 h3:where(.svelte-11vdap9){margin:0;font-size:16px;color:var(--color-text)}.target-empty.svelte-11vdap9 p:where(.svelte-11vdap9){margin:0;font-size:13px;color:var(--color-text-secondary)}@media (max-width: 900px){.table-header.svelte-11vdap9,.target-bar.svelte-11vdap9{flex-direction:column;align-items:stretch}.target-bar__controls.svelte-11vdap9{width:100%;align-items:stretch}.target-bar__field.svelte-11vdap9,.target-bar__input.svelte-11vdap9{flex:1;width:100%}}
@@ -1 +0,0 @@
1
- import{x as p,E as t}from"./glwixJlP.js";import{B as c}from"./ehbppgYb.js";function E(r,s,...a){var e=new c(r);p(()=>{const n=s()??null;e.ensure(n,n&&(o=>n(o,...a)))},t)}export{E as s};
@@ -1 +0,0 @@
1
- import{F as S,G as h,I as k,J as T,S as c}from"./glwixJlP.js";function t(r,i){return r===i||(r==null?void 0:r[c])===i}function A(r={},i,a,q){return S(()=>{var f,s;return h(()=>{f=s,s=[],k(()=>{r!==a(...s)&&(i(r,...s),f&&t(a(...f),r)&&i(null,...f))})}),()=>{T(()=>{s&&t(a(...s),r)&&i(null,...s)})}}),r}export{A as b};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.B13aXl3s.js","../chunks/CWj6FrbW.js","../chunks/glwixJlP.js","../chunks/D5h5A1cc.js","../chunks/BR_fL5Yv.js","../chunks/CxbRue-5.js","../chunks/ehbppgYb.js","../chunks/UUazaC_N.js","../chunks/C6puvcoR.js","../chunks/B8vJP3wz.js","../chunks/DoPXzH7F.js","../chunks/p-WBlAu3.js","../chunks/CB8xN3_t.js","../chunks/BOjkBtym.js","../chunks/Br0qug7_.js","../chunks/DOxNYcs9.js","../chunks/Ga6XaOJm.js","../chunks/BMMOfNi6.js","../chunks/7f08Id8e.js","../chunks/C4D51vTW.js","../chunks/CyqB6g-D.js","../chunks/BmRjiP5k.js","../chunks/NuUjtcO2.js","../chunks/C0LrJucL.js","../assets/0.Bm6cF078.css","../nodes/1.we4dgVtx.js","../assets/1.BfW3pUNa.css","../nodes/2.BKoKrw1i.js","../nodes/3.BPnU2jxx.js","../chunks/Cs0GwzJA.js","../assets/Button.DpzMRTjK.css","../assets/3.Dg81Pgmd.css","../nodes/4.BY6Ri1gh.js","../chunks/R6arueIl.js","../chunks/CwROoZK0.js","../assets/PageShell.CmU-Xh-b.css","../chunks/CLHXYVje.js","../assets/TimeChart.BTCDAvmT.css","../chunks/Q2nPFxS6.js","../assets/4.CyawCCux.css","../nodes/5.D0tPp_Kt.js","../chunks/DYDZ2Kma.js","../assets/TopList.ClFzmPlA.css","../assets/5.C0YO2HTk.css","../nodes/6.BuWVNVH1.js","../nodes/7.B26-qam0.js","../nodes/8.CdDKHsMK.js","../chunks/BF8I5XXQ.js","../assets/Select.BW4Keufm.css","../chunks/DrQSgw-f.js","../assets/Input.BDUSenmU.css","../chunks/DnyL7Zq-.js","../assets/EmptyState.CwKsu57Y.css","../chunks/eFQHTGwA.js","../assets/Badge.EMYLHBxE.css","../assets/8.Br5jd6kD.css","../nodes/9.BSo7a28L.js","../nodes/10.hrAvOhgI.js","../nodes/11.BZM_Cbjk.js","../chunks/Bh56EfQ_.js","../assets/ConfirmDialog.DAnaWRRk.css","../chunks/7B47DvSx.js","../assets/Modal.Dm5B0Xie.css","../chunks/BK8YUsyH.js","../assets/Skeleton.KWUulTKJ.css","../assets/11.CVmQOewb.css","../nodes/12.pfrTdfHj.js","../assets/12.B1EhbRZT.css","../nodes/13.BvR9UoZX.js","../chunks/CY1F93Wv.js","../assets/Tabs.CniGYb67.css","../chunks/MdeqaOQx.js","../assets/13.BvwYeuwE.css","../nodes/14.BCE_g1DT.js","../chunks/vApWTCBs.js","../assets/Toggle.Cy_K12OM.css","../assets/14.CdVfcO0R.css","../nodes/15.DZrUjo5V.js","../chunks/wJsUhbfZ.js","../assets/15.2yeZ66b-.css","../nodes/16.B_K_CGU4.js","../nodes/17.D7RlNUbd.js","../assets/17.BVg0JEVu.css","../nodes/18.dw9OGxA1.js","../assets/18.Rwnl3x_i.css","../nodes/19.B_K_CGU4.js","../nodes/20.Bij6g6xR.js","../assets/20.DsPWA9AV.css","../nodes/21.DyYxtUDl.js","../chunks/BhjcOf7X.js","../assets/SchemaFieldEditor.g4NsCdno.css","../chunks/Ce-ngf4p.js","../assets/21.Dz2RJ56c.css","../nodes/22.wLPyRbDg.js","../assets/22.DwNLk5Ai.css","../nodes/23.DnjIdPPl.js","../assets/23.CFpu0gOO.css","../nodes/24.PhJEmwPf.js","../assets/24.Cy5LBeoJ.css","../nodes/25.HUYuEeiI.js","../assets/25.pUyLVf-h.css","../nodes/26.CtrQ3jI5.js","../assets/26.DBcGrlXa.css","../nodes/27.CMM8T90I.js","../assets/27.BswYyAJD.css","../nodes/28.CH6XAnHt.js","../assets/28.B4ueB1Kf.css","../nodes/29.Bos0u5_B.js","../assets/29.B-qU6PdF.css","../nodes/30.ScIH1W0H.js","../assets/30.CsdWum94.css","../nodes/31.CXHVAiwb.js","../assets/31.U6OwIp50.css"])))=>i.map(i=>d[i]);
2
- var st=r=>{throw TypeError(r)};var nt=(r,t,e)=>t.has(r)||st("Cannot "+e);var l=(r,t,e)=>(nt(r,t,"read from private field"),e?e.call(r):t.get(r)),X=(r,t,e)=>t.has(r)?st("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,e),$=(r,t,e,n)=>(nt(r,t,"write to private field"),n?n.call(r,e):t.set(r,e),e);import{h as it,e as Rt,x as yt,E as bt,y as Ot,B as At,n as Tt,D as _t,z as Lt,k as Dt,b as z,Z as It,g as c,b4 as Vt,a9 as wt,a7 as kt,p as xt,ai as St,w as jt,ab as Ct,f as R,s as Bt,a as qt,d as tt,c as Ft,r as Nt,u as V,t as Ut}from"../chunks/glwixJlP.js";import{h as Yt,m as zt,u as Gt,s as Ht}from"../chunks/D5h5A1cc.js";import"../chunks/CWj6FrbW.js";import{o as Wt}from"../chunks/DoPXzH7F.js";import{i as N}from"../chunks/UUazaC_N.js";import{a as f,c as y,f as ut,t as Zt}from"../chunks/BR_fL5Yv.js";import{B as Jt}from"../chunks/ehbppgYb.js";import{b as w}from"../chunks/CyqB6g-D.js";import{p as U}from"../chunks/C4D51vTW.js";function k(r,t,e){var n;it&&(n=Dt,Rt());var i=new Jt(r);yt(()=>{var m=t()??null;if(it){var s=Ot(n),a=s===Lt,_=m!==null;if(a!==_){var O=At();Tt(O),i.anchor=O,_t(!1),i.ensure(m,m&&(u=>e(u,m))),_t(!0);return}}i.ensure(m,m&&(u=>e(u,m)))},bt)}function Kt(r){return class extends Mt{constructor(t){super({component:r,...t})}}}var b,v;class Mt{constructor(t){X(this,b);X(this,v);var m;var e=new Map,n=(s,a)=>{var _=kt(a,!1,!1);return e.set(s,_),_};const i=new Proxy({...t.props||{},$$events:{}},{get(s,a){return c(e.get(a)??n(a,Reflect.get(s,a)))},has(s,a){return a===It?!0:(c(e.get(a)??n(a,Reflect.get(s,a))),Reflect.has(s,a))},set(s,a,_){return z(e.get(a)??n(a,_),_),Reflect.set(s,a,_)}});$(this,v,(t.hydrate?Yt:zt)(t.component,{target:t.target,anchor:t.anchor,props:i,context:t.context,intro:t.intro??!1,recover:t.recover})),(!((m=t==null?void 0:t.props)!=null&&m.$$host)||t.sync===!1)&&Vt(),$(this,b,i.$$events);for(const s of Object.keys(l(this,v)))s==="$set"||s==="$destroy"||s==="$on"||wt(this,s,{get(){return l(this,v)[s]},set(a){l(this,v)[s]=a},enumerable:!0});l(this,v).$set=s=>{Object.assign(i,s)},l(this,v).$destroy=()=>{Gt(l(this,v))}}$set(t){l(this,v).$set(t)}$on(t,e){l(this,b)[t]=l(this,b)[t]||[];const n=(...i)=>e.call(this,...i);return l(this,b)[t].push(n),()=>{l(this,b)[t]=l(this,b)[t].filter(i=>i!==n)}}$destroy(){l(this,v).$destroy()}}b=new WeakMap,v=new WeakMap;const Qt="modulepreload",Xt=function(r,t){return new URL(r,t).href},mt={},o=function(t,e,n){let i=Promise.resolve();if(e&&e.length>0){let s=function(u){return Promise.all(u.map(P=>Promise.resolve(P).then(A=>({status:"fulfilled",value:A}),A=>({status:"rejected",reason:A}))))};const a=document.getElementsByTagName("link"),_=document.querySelector("meta[property=csp-nonce]"),O=(_==null?void 0:_.nonce)||(_==null?void 0:_.getAttribute("nonce"));i=s(e.map(u=>{if(u=Xt(u,n),u in mt)return;mt[u]=!0;const P=u.endsWith(".css"),A=P?'[rel="stylesheet"]':"";if(!!n)for(let T=a.length-1;T>=0;T--){const x=a[T];if(x.href===u&&(!P||x.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${u}"]${A}`))return;const p=document.createElement("link");if(p.rel=P?"stylesheet":Qt,P||(p.as="script"),p.crossOrigin="",p.href=u,O&&p.setAttribute("nonce",O),document.head.appendChild(p),P)return new Promise((T,x)=>{p.addEventListener("load",T),p.addEventListener("error",()=>x(new Error(`Unable to preload CSS for ${u}`)))})}))}function m(s){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=s,window.dispatchEvent(a),!a.defaultPrevented)throw s}return i.then(s=>{for(const a of s||[])a.status==="rejected"&&m(a.reason);return t().catch(m)})},he={};var $t=ut('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),te=ut("<!> <!>",1);function ee(r,t){xt(t,!0);let e=U(t,"components",23,()=>[]),n=U(t,"data_0",3,null),i=U(t,"data_1",3,null),m=U(t,"data_2",3,null),s=U(t,"data_3",3,null);St(()=>t.stores.page.set(t.page)),jt(()=>{t.stores,t.page,t.constructors,e(),t.form,n(),i(),m(),s(),t.stores.page.notify()});let a=tt(!1),_=tt(!1),O=tt(null);Wt(()=>{const d=t.stores.page.subscribe(()=>{c(a)&&(z(_,!0),Ct().then(()=>{z(O,document.title||"untitled page",!0)}))});return z(a,!0),d});const u=V(()=>t.constructors[3]);var P=te(),A=R(P);{var et=d=>{const L=V(()=>t.constructors[0]);var D=y(),B=R(D);k(B,()=>c(L),(I,S)=>{w(S(I,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(h,ae)=>{var rt=y(),ct=R(rt);{var dt=j=>{const G=V(()=>t.constructors[1]);var q=y(),H=R(q);k(H,()=>c(G),(W,Z)=>{w(Z(W,{get data(){return i()},get form(){return t.form},get params(){return t.page.params},children:(E,oe)=>{var at=y(),vt=R(at);{var ht=C=>{const J=V(()=>t.constructors[2]);var F=y(),K=R(F);k(K,()=>c(J),(M,Q)=>{w(Q(M,{get data(){return m()},get form(){return t.form},get params(){return t.page.params},children:(g,se)=>{var ot=y(),gt=R(ot);k(gt,()=>c(u),(Pt,pt)=>{w(pt(Pt,{get data(){return s()},get form(){return t.form},get params(){return t.page.params}}),Y=>e()[3]=Y,()=>{var Y;return(Y=e())==null?void 0:Y[3]})}),f(g,ot)},$$slots:{default:!0}}),g=>e()[2]=g,()=>{var g;return(g=e())==null?void 0:g[2]})}),f(C,F)},Et=C=>{const J=V(()=>t.constructors[2]);var F=y(),K=R(F);k(K,()=>c(J),(M,Q)=>{w(Q(M,{get data(){return m()},get form(){return t.form},get params(){return t.page.params}}),g=>e()[2]=g,()=>{var g;return(g=e())==null?void 0:g[2]})}),f(C,F)};N(vt,C=>{t.constructors[3]?C(ht):C(Et,!1)})}f(E,at)},$$slots:{default:!0}}),E=>e()[1]=E,()=>{var E;return(E=e())==null?void 0:E[1]})}),f(j,q)},ft=j=>{const G=V(()=>t.constructors[1]);var q=y(),H=R(q);k(H,()=>c(G),(W,Z)=>{w(Z(W,{get data(){return i()},get form(){return t.form},get params(){return t.page.params}}),E=>e()[1]=E,()=>{var E;return(E=e())==null?void 0:E[1]})}),f(j,q)};N(ct,j=>{t.constructors[2]?j(dt):j(ft,!1)})}f(h,rt)},$$slots:{default:!0}}),h=>e()[0]=h,()=>{var h;return(h=e())==null?void 0:h[0]})}),f(d,D)},p=d=>{const L=V(()=>t.constructors[0]);var D=y(),B=R(D);k(B,()=>c(L),(I,S)=>{w(S(I,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),h=>e()[0]=h,()=>{var h;return(h=e())==null?void 0:h[0]})}),f(d,D)};N(A,d=>{t.constructors[1]?d(et):d(p,!1)})}var T=Bt(A,2);{var x=d=>{var L=$t(),D=Ft(L);{var B=I=>{var S=Zt();Ut(()=>Ht(S,c(O))),f(I,S)};N(D,I=>{c(_)&&I(B)})}Nt(L),f(d,L)};N(T,d=>{c(a)&&d(x)})}f(r,P),qt()}const Ee=Kt(ee),ge=[()=>o(()=>import("../nodes/0.B13aXl3s.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]),import.meta.url),()=>o(()=>import("../nodes/1.we4dgVtx.js"),__vite__mapDeps([25,1,2,3,4,8,9,10,11,12,13,26]),import.meta.url),()=>o(()=>import("../nodes/2.BKoKrw1i.js"),__vite__mapDeps([27,1,2,4,5,6]),import.meta.url),()=>o(()=>import("../nodes/3.BPnU2jxx.js"),__vite__mapDeps([28,1,10,2,3,4,7,6,17,14,13,16,5,8,20,9,11,12,23,29,19,30,31]),import.meta.url),()=>o(()=>import("../nodes/4.BY6Ri1gh.js"),__vite__mapDeps([32,1,10,2,3,4,7,6,17,14,13,16,18,8,9,33,34,5,35,36,19,20,37,38,39]),import.meta.url),()=>o(()=>import("../nodes/5.D0tPp_Kt.js"),__vite__mapDeps([40,1,10,2,3,4,7,6,17,14,13,16,8,22,33,34,5,35,38,36,18,19,9,20,37,41,42,43]),import.meta.url),()=>o(()=>import("../nodes/6.BuWVNVH1.js"),__vite__mapDeps([44,1,10,2,3,4,17,14,13,16,8,33,34,5,6,7,35,38,36,18,19,9,20,37,41,42]),import.meta.url),()=>o(()=>import("../nodes/7.B26-qam0.js"),__vite__mapDeps([45,1,10,2,3,4,17,14,13,16,8,33,34,5,6,7,35,38,36,18,19,9,20,37,41,42]),import.meta.url),()=>o(()=>import("../nodes/8.CdDKHsMK.js"),__vite__mapDeps([46,1,10,2,3,4,7,6,17,14,13,16,8,34,5,35,38,29,19,9,30,47,48,49,22,50,51,52,53,54,55]),import.meta.url),()=>o(()=>import("../nodes/9.BSo7a28L.js"),__vite__mapDeps([56,1,10,2,3,4,17,14,13,16,8,34,5,6,7,35,38,36,18,19,9,20,37,41,42]),import.meta.url),()=>o(()=>import("../nodes/10.hrAvOhgI.js"),__vite__mapDeps([57,1,10,2,3,4,17,14,13,16,8,33,34,5,6,7,35,38,36,18,19,9,20,37,41,42]),import.meta.url),()=>o(()=>import("../nodes/11.BZM_Cbjk.js"),__vite__mapDeps([58,1,10,2,3,4,7,6,17,14,13,16,8,12,34,5,35,38,29,19,9,30,49,22,50,53,54,59,20,60,51,52,61,62,47,48,63,64,65]),import.meta.url),()=>o(()=>import("../nodes/12.pfrTdfHj.js"),__vite__mapDeps([66,1,10,2,3,4,7,6,17,14,13,16,8,9,11,12,34,5,35,38,29,19,30,53,54,47,48,59,20,60,67]),import.meta.url),()=>o(()=>import("../nodes/13.BvR9UoZX.js"),__vite__mapDeps([68,1,10,2,3,4,7,6,17,14,13,16,8,9,34,5,35,38,29,19,30,69,70,49,22,50,20,71,72]),import.meta.url),()=>o(()=>import("../nodes/14.BCE_g1DT.js"),__vite__mapDeps([73,1,10,2,3,4,7,6,17,14,13,16,8,22,34,5,35,38,29,19,9,30,53,54,49,50,74,75,76]),import.meta.url),()=>o(()=>import("../nodes/15.DZrUjo5V.js"),__vite__mapDeps([77,1,10,2,3,4,7,6,17,14,13,16,78,34,5,8,35,38,29,19,9,30,53,54,59,20,60,79]),import.meta.url),()=>o(()=>import("../nodes/16.B_K_CGU4.js"),__vite__mapDeps([80,1,2,12,10,13]),import.meta.url),()=>o(()=>import("../nodes/17.D7RlNUbd.js"),__vite__mapDeps([81,1,10,2,3,4,7,6,17,14,13,16,8,20,23,34,5,35,38,51,19,9,52,82]),import.meta.url),()=>o(()=>import("../nodes/18.dw9OGxA1.js"),__vite__mapDeps([83,1,2,3,4,7,6,17,10,14,13,16,8,9,12,34,5,35,38,29,19,30,49,22,50,23,84]),import.meta.url),()=>o(()=>import("../nodes/19.B_K_CGU4.js"),__vite__mapDeps([85,1,2,12,10,13]),import.meta.url),()=>o(()=>import("../nodes/20.Bij6g6xR.js"),__vite__mapDeps([86,1,21,2,4,7,6,8,3,9,10,13,16,14,51,5,19,52,38,87]),import.meta.url),()=>o(()=>import("../nodes/21.DyYxtUDl.js"),__vite__mapDeps([88,1,2,3,4,7,6,17,10,14,13,16,8,22,9,12,11,61,5,20,19,62,29,30,23,78,89,53,54,49,50,74,75,90,91,71,69,70,59,60,38,92]),import.meta.url),()=>o(()=>import("../nodes/22.wLPyRbDg.js"),__vite__mapDeps([93,1,10,2,3,4,7,6,17,14,13,16,8,9,12,11,23,89,19,29,5,30,53,54,61,20,62,49,22,50,74,75,90,94]),import.meta.url),()=>o(()=>import("../nodes/23.DnjIdPPl.js"),__vite__mapDeps([95,1,10,2,3,4,7,6,8,34,5,35,38,14,13,96]),import.meta.url),()=>o(()=>import("../nodes/24.PhJEmwPf.js"),__vite__mapDeps([97,1,10,2,3,4,7,6,17,14,13,16,8,22,34,5,35,38,29,19,9,30,51,52,98]),import.meta.url),()=>o(()=>import("../nodes/25.HUYuEeiI.js"),__vite__mapDeps([99,1,2,3,4,7,6,8,9,10,12,13,11,14,15,29,5,19,30,49,22,50,100]),import.meta.url),()=>o(()=>import("../nodes/26.CtrQ3jI5.js"),__vite__mapDeps([101,1,10,2,3,4,7,6,17,14,13,16,8,78,91,34,5,35,38,29,19,9,30,49,22,50,47,48,51,52,63,64,102]),import.meta.url),()=>o(()=>import("../nodes/27.CMM8T90I.js"),__vite__mapDeps([103,1,10,2,3,4,7,6,17,14,13,16,8,34,5,35,38,104,54]),import.meta.url),()=>o(()=>import("../nodes/28.CH6XAnHt.js"),__vite__mapDeps([105,1,10,2,3,4,7,6,17,14,13,16,8,22,34,5,35,38,69,19,9,70,49,50,29,30,53,54,51,52,106]),import.meta.url),()=>o(()=>import("../nodes/29.Bos0u5_B.js"),__vite__mapDeps([107,1,10,2,3,4,7,6,17,14,13,16,8,78,34,5,35,38,53,19,9,54,29,30,61,20,62,49,22,50,59,60,63,64,108]),import.meta.url),()=>o(()=>import("../nodes/30.ScIH1W0H.js"),__vite__mapDeps([109,1,10,2,3,4,7,6,17,14,13,16,8,9,34,5,35,38,51,19,52,29,30,49,22,50,61,20,62,110]),import.meta.url),()=>o(()=>import("../nodes/31.CXHVAiwb.js"),__vite__mapDeps([111,1,10,2,3,4,7,6,17,14,13,16,8,9,11,12,78,34,5,35,38,29,19,30,51,52,59,20,60,61,62,49,22,50,47,48,112]),import.meta.url)],Pe=[],pe={"/":[4],"/analytics":[5],"/analytics/auth":[6],"/analytics/database":[7],"/analytics/events":[8],"/analytics/functions":[9],"/analytics/storage":[10],"/auth":[11],"/auth/email-templates":[13],"/auth/settings":[14],"/auth/[userId]":[12],"/backup":[15],"/database":[16,[2]],"/database/erd":[17,[2]],"/database/new":[18,[2]],"/database/sql":[19,[2]],"/database/tables":[20,[2,3]],"/database/tables/new":[22,[2,3]],"/database/tables/[table]":[21,[2,3]],"/docs":[23],"/functions":[24],"/login":[25],"/logs":[26],"/monitoring":[27],"/push":[28],"/settings":[29],"/storage":[30],"/storage/[bucket]":[31]},lt={handleError:({error:r})=>{console.error(r)},reroute:()=>{},transport:{}},re=Object.fromEntries(Object.entries(lt.transport).map(([r,t])=>[r,t.decode])),Re=Object.fromEntries(Object.entries(lt.transport).map(([r,t])=>[r,t.encode])),ye=!1,be=(r,t)=>re[r](t);export{be as decode,re as decoders,pe as dictionary,Re as encoders,ye as hash,lt as hooks,he as matchers,ge as nodes,Ee as root,Pe as server_loads};
@@ -1 +0,0 @@
1
- import{a as r}from"../chunks/CB8xN3_t.js";import{w as t}from"../chunks/BOjkBtym.js";export{t as load_css,r as start};
@@ -1 +0,0 @@
1
- import"../chunks/CWj6FrbW.js";import{f as m}from"../chunks/glwixJlP.js";import{c as n,a as p}from"../chunks/BR_fL5Yv.js";import{s as i}from"../chunks/CxbRue-5.js";function d(r,t){var o=n(),a=m(o);i(a,()=>t.children),p(r,o)}export{d as component};