@coffer-org/web 7.2.0 → 7.2.1
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/dist/assets/{DiagnosticsPage-tAFkmCz8.js → DiagnosticsPage-lKgGju82.js} +1 -1
- package/dist/assets/{NewRecordView-CTSqFBfe.js → NewRecordView-DJrRPNxT.js} +1 -1
- package/dist/assets/{SettingsPage-Cqp1tUyi.js → SettingsPage-CaPzeX50.js} +1 -1
- package/dist/assets/{api-DD1tY5Dq.js → api-COuWgOWV.js} +1 -1
- package/dist/assets/{auth-context-BCos5wiL.js → auth-context-L2NSpevo.js} +1 -1
- package/dist/assets/{index-DpBBejzP.js → index-CdXz_Li2.js} +3 -3
- package/dist/index.html +3 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-CzSUaSLk.js";import{Wn as a,_r as o,cr as s,en as c,or as l,vr as u}from"./src-Cp4yFztL.js";import{l as d}from"./phone-input-CZF7hU3E.js";import{m as f,p,v as m}from"./api-DD1tY5Dq.js";import{n as h}from"./auth-context-BCos5wiL.js";import{t as g}from"./version-CtfLXkhy.js";var _=e(t(),1),v=i(),y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/DiagnosticsPage.tsx`;function b(){let{t:e}=n(),{role:t}=h(),[i,b]=(0,_.useState)(null),[S,C]=(0,_.useState)([]),[w,T]=(0,_.useState)(null),[E,D]=(0,_.useState)(`loading`),[O,k]=(0,_.useState)(!0),[A,j]=(0,_.useState)(!1),M=(0,_.useCallback)(async()=>{k(!0),j(!1),D(`loading`);let e=fetch(`/health`).then(e=>D(e.ok?`ok`:`error`)).catch(()=>D(`error`));try{let[e,t,n]=await Promise.all([p(),m(),f()]);b(e),C(t),T(n)}catch{j(!0)}finally{await e,k(!1)}},[]);if((0,_.useEffect)(()=>{t===`admin`&&M()},[M,t]),t!==`admin`)return(0,v.jsxDEV)(o,{children:[(0,v.jsxDEV)(r,{to:`/settings`,className:`text-sm text-accent hover:underline`,children:e(`settings.title`)},void 0,!1,{fileName:y,lineNumber:63,columnNumber:9},this),(0,v.jsxDEV)(`h1`,{className:`mt-4 ${c}`,children:e(`diagnostics.title`)},void 0,!1,{fileName:y,lineNumber:66,columnNumber:9},this),(0,v.jsxDEV)(`p`,{className:`mt-3 text-sm text-danger`,children:e(`diagnostics.adminOnly`)},void 0,!1,{fileName:y,lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:62,columnNumber:7},this);let N=S.filter(e=>e.latestVersion&&g(e.latestVersion,e.installedVersion));return(0,v.jsxDEV)(o,{children:[(0,v.jsxDEV)(`div`,{className:`mb-6 flex items-start justify-between gap-4`,children:[(0,v.jsxDEV)(`div`,{children:[(0,v.jsxDEV)(r,{to:`/settings`,className:`text-sm text-accent hover:underline`,children:e(`settings.title`)},void 0,!1,{fileName:y,lineNumber:78,columnNumber:11},this),(0,v.jsxDEV)(`h1`,{className:`mt-2 ${c}`,children:e(`diagnostics.title`)},void 0,!1,{fileName:y,lineNumber:81,columnNumber:11},this),(0,v.jsxDEV)(`p`,{className:`mt-1 text-sm text-muted`,children:e(`diagnostics.description`)},void 0,!1,{fileName:y,lineNumber:82,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:77,columnNumber:9},this),(0,v.jsxDEV)(d,{type:`button`,variant:`ghost`,size:`sm`,className:`shrink-0 border border-border`,disabled:O,onClick:()=>void M(),children:[(0,v.jsxDEV)(u,{name:`lucide:refresh-cw`,size:15,className:O?`animate-spin`:void 0},void 0,!1,{fileName:y,lineNumber:92,columnNumber:11},this),e(O?`diagnostics.refreshing`:`diagnostics.refresh`)]},void 0,!0,{fileName:y,lineNumber:84,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:76,columnNumber:7},this),A&&(0,v.jsxDEV)(a,{tone:`danger`,className:`mb-5`,children:e(`diagnostics.loadFailed`)},void 0,!1,{fileName:y,lineNumber:98,columnNumber:9},this),(0,v.jsxDEV)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.server`)},void 0,!1,{fileName:y,lineNumber:105,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex items-center gap-2 font-semibold text-text`,children:[(0,v.jsxDEV)(`span`,{className:`h-2.5 w-2.5 rounded-full ${E===`ok`?`bg-success`:E===`error`?`bg-danger`:`bg-muted`}`},void 0,!1,{fileName:y,lineNumber:107,columnNumber:13},this),e(E===`ok`?`diagnostics.healthy`:E===`error`?`diagnostics.unavailable`:`common.loading`)]},void 0,!0,{fileName:y,lineNumber:106,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:104,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.agents`)},void 0,!1,{fileName:y,lineNumber:118,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:i?.agents.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:121,columnNumber:15},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted`,children:`—`},void 0,!1,{fileName:y,lineNumber:124,columnNumber:19},this)},void 0,!1,{fileName:y,lineNumber:119,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:117,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.connectors`)},void 0,!1,{fileName:y,lineNumber:128,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:i?.connectors.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:131,columnNumber:15},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted`,children:`—`},void 0,!1,{fileName:y,lineNumber:134,columnNumber:19},this)},void 0,!1,{fileName:y,lineNumber:129,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:127,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:103,columnNumber:7},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.versions`)},void 0,!1,{fileName:y,lineNumber:140,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`overflow-hidden`,children:[(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2 text-xs font-medium text-muted`,children:[(0,v.jsxDEV)(`span`,{children:e(`diagnostics.component`)},void 0,!1,{fileName:y,lineNumber:143,columnNumber:13},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.installed`)},void 0,!1,{fileName:y,lineNumber:144,columnNumber:13},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.latest`)},void 0,!1,{fileName:y,lineNumber:145,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:142,columnNumber:11},this),w?.installedVersion&&(0,v.jsxDEV)(x,{name:e(`plugins.runtimeLabel`),installed:w.installedVersion,latest:w.latestVersion},void 0,!1,{fileName:y,lineNumber:148,columnNumber:13},this),S.filter(e=>e.id!==`core`).map(e=>(0,v.jsxDEV)(x,{name:e.id,installed:e.installedVersion,latest:e.latestVersion},e.id,!1,{fileName:y,lineNumber:157,columnNumber:15},this)),!w?.installedVersion&&S.length===0&&(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noData`)},void 0,!1,{fileName:y,lineNumber:160,columnNumber:13},this),N.length>0&&(0,v.jsxDEV)(`div`,{className:`border-t border-border px-4 py-2 text-xs text-accent`,children:e(`diagnostics.outdated`,{count:N.length})},void 0,!1,{fileName:y,lineNumber:163,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:141,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:139,columnNumber:7},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.recentMessages`)},void 0,!1,{fileName:y,lineNumber:171,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`overflow-x-auto`,children:i?.recentMessages.length?(0,v.jsxDEV)(`table`,{className:`w-full min-w-[34rem] text-left text-xs`,children:[(0,v.jsxDEV)(`thead`,{className:`border-b border-border text-muted`,children:(0,v.jsxDEV)(`tr`,{children:[(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.time`)},void 0,!1,{fileName:y,lineNumber:177,columnNumber:19},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.connector`)},void 0,!1,{fileName:y,lineNumber:178,columnNumber:19},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.role`)},void 0,!1,{fileName:y,lineNumber:179,columnNumber:19},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.duration`)},void 0,!1,{fileName:y,lineNumber:180,columnNumber:19},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.tokens`)},void 0,!1,{fileName:y,lineNumber:181,columnNumber:19},this)]},void 0,!0,{fileName:y,lineNumber:176,columnNumber:17},this)},void 0,!1,{fileName:y,lineNumber:175,columnNumber:15},this),(0,v.jsxDEV)(`tbody`,{children:i.recentMessages.map(e=>(0,v.jsxDEV)(`tr`,{className:`border-b border-border last:border-0`,children:[(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-muted`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:187,columnNumber:21},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-text`,children:e.connector},void 0,!1,{fileName:y,lineNumber:188,columnNumber:21},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-text`,children:e.role},void 0,!1,{fileName:y,lineNumber:189,columnNumber:21},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted`,children:e.ms==null?`—`:`${e.ms} ms`},void 0,!1,{fileName:y,lineNumber:190,columnNumber:21},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted`,children:e.tokensIn==null&&e.tokensOut==null?`—`:`${e.tokensIn??0} / ${e.tokensOut??0}`},void 0,!1,{fileName:y,lineNumber:191,columnNumber:21},this)]},e.id,!0,{fileName:y,lineNumber:186,columnNumber:19},this))},void 0,!1,{fileName:y,lineNumber:184,columnNumber:15},this)]},void 0,!0,{fileName:y,lineNumber:174,columnNumber:13},this):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noMessages`)},void 0,!1,{fileName:y,lineNumber:201,columnNumber:13},this)},void 0,!1,{fileName:y,lineNumber:172,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:170,columnNumber:7},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.recentErrors`)},void 0,!1,{fileName:y,lineNumber:207,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`overflow-hidden`,children:i?.recentErrors.length?i.recentErrors.map((e,t)=>(0,v.jsxDEV)(`div`,{className:`border-b border-border px-4 py-3 last:border-0`,children:[(0,v.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,v.jsxDEV)(s,{variant:`destructive`,children:e.level},void 0,!1,{fileName:y,lineNumber:213,columnNumber:19},this),(0,v.jsxDEV)(`span`,{className:`font-medium text-text`,children:e.source},void 0,!1,{fileName:y,lineNumber:214,columnNumber:19},this),(0,v.jsxDEV)(`span`,{className:`text-muted`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:215,columnNumber:19},this)]},void 0,!0,{fileName:y,lineNumber:212,columnNumber:17},this),(0,v.jsxDEV)(`div`,{className:`mt-1 break-words text-sm text-danger`,children:e.message},void 0,!1,{fileName:y,lineNumber:217,columnNumber:17},this)]},`${e.ts}-${t}`,!0,{fileName:y,lineNumber:211,columnNumber:15},this)):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noErrors`)},void 0,!1,{fileName:y,lineNumber:221,columnNumber:13},this)},void 0,!1,{fileName:y,lineNumber:208,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:206,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:75,columnNumber:5},this)}function x({name:e,installed:t,latest:n}){return(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2.5 text-sm last:border-0`,children:[(0,v.jsxDEV)(`span`,{className:`min-w-0 truncate text-text`,children:e},void 0,!1,{fileName:y,lineNumber:232,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:`text-muted`,children:[`v`,t]},void 0,!0,{fileName:y,lineNumber:233,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:n&&g(n,t)?`text-accent`:`text-muted`,children:n?`v${n}`:`—`},void 0,!1,{fileName:y,lineNumber:234,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:231,columnNumber:5},this)}export{b as DiagnosticsPage};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-CzSUaSLk.js";import{Wn as a,_r as o,cr as s,en as c,or as l,vr as u}from"./src-Cp4yFztL.js";import{l as d}from"./phone-input-CZF7hU3E.js";import{m as f,p,v as m}from"./api-COuWgOWV.js";import{n as h}from"./auth-context-L2NSpevo.js";import{t as g}from"./version-CtfLXkhy.js";var _=e(t(),1),v=i(),y=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/DiagnosticsPage.tsx`;function b(){let{t:e}=n(),{role:t}=h(),[i,b]=(0,_.useState)(null),[S,C]=(0,_.useState)([]),[w,T]=(0,_.useState)(null),[E,D]=(0,_.useState)(`loading`),[O,k]=(0,_.useState)(!0),[A,j]=(0,_.useState)(!1),M=(0,_.useCallback)(async()=>{k(!0),j(!1),D(`loading`);let e=fetch(`/health`).then(e=>D(e.ok?`ok`:`error`)).catch(()=>D(`error`));try{let[e,t,n]=await Promise.all([p(),m(),f()]);b(e),C(t),T(n)}catch{j(!0)}finally{await e,k(!1)}},[]);if((0,_.useEffect)(()=>{t===`admin`&&M()},[M,t]),t!==`admin`)return(0,v.jsxDEV)(o,{children:[(0,v.jsxDEV)(r,{to:`/settings`,className:`text-sm text-accent hover:underline`,children:e(`settings.title`)},void 0,!1,{fileName:y,lineNumber:63,columnNumber:9},this),(0,v.jsxDEV)(`h1`,{className:`mt-4 ${c}`,children:e(`diagnostics.title`)},void 0,!1,{fileName:y,lineNumber:66,columnNumber:9},this),(0,v.jsxDEV)(`p`,{className:`mt-3 text-sm text-danger`,children:e(`diagnostics.adminOnly`)},void 0,!1,{fileName:y,lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:62,columnNumber:7},this);let N=S.filter(e=>e.latestVersion&&g(e.latestVersion,e.installedVersion));return(0,v.jsxDEV)(o,{children:[(0,v.jsxDEV)(`div`,{className:`mb-6 flex items-start justify-between gap-4`,children:[(0,v.jsxDEV)(`div`,{children:[(0,v.jsxDEV)(r,{to:`/settings`,className:`text-sm text-accent hover:underline`,children:e(`settings.title`)},void 0,!1,{fileName:y,lineNumber:78,columnNumber:11},this),(0,v.jsxDEV)(`h1`,{className:`mt-2 ${c}`,children:e(`diagnostics.title`)},void 0,!1,{fileName:y,lineNumber:81,columnNumber:11},this),(0,v.jsxDEV)(`p`,{className:`mt-1 text-sm text-muted`,children:e(`diagnostics.description`)},void 0,!1,{fileName:y,lineNumber:82,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:77,columnNumber:9},this),(0,v.jsxDEV)(d,{type:`button`,variant:`ghost`,size:`sm`,className:`shrink-0 border border-border`,disabled:O,onClick:()=>void M(),children:[(0,v.jsxDEV)(u,{name:`lucide:refresh-cw`,size:15,className:O?`animate-spin`:void 0},void 0,!1,{fileName:y,lineNumber:92,columnNumber:11},this),e(O?`diagnostics.refreshing`:`diagnostics.refresh`)]},void 0,!0,{fileName:y,lineNumber:84,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:76,columnNumber:7},this),A&&(0,v.jsxDEV)(a,{tone:`danger`,className:`mb-5`,children:e(`diagnostics.loadFailed`)},void 0,!1,{fileName:y,lineNumber:98,columnNumber:9},this),(0,v.jsxDEV)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.server`)},void 0,!1,{fileName:y,lineNumber:105,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex items-center gap-2 font-semibold text-text`,children:[(0,v.jsxDEV)(`span`,{className:`h-2.5 w-2.5 rounded-full ${E===`ok`?`bg-success`:E===`error`?`bg-danger`:`bg-muted`}`},void 0,!1,{fileName:y,lineNumber:107,columnNumber:13},this),e(E===`ok`?`diagnostics.healthy`:E===`error`?`diagnostics.unavailable`:`common.loading`)]},void 0,!0,{fileName:y,lineNumber:106,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:104,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.agents`)},void 0,!1,{fileName:y,lineNumber:118,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:i?.agents.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:121,columnNumber:15},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted`,children:`—`},void 0,!1,{fileName:y,lineNumber:124,columnNumber:19},this)},void 0,!1,{fileName:y,lineNumber:119,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:117,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`px-4 py-3`,children:[(0,v.jsxDEV)(`div`,{className:`text-xs text-muted`,children:e(`diagnostics.connectors`)},void 0,!1,{fileName:y,lineNumber:128,columnNumber:11},this),(0,v.jsxDEV)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:i?.connectors.map(e=>(0,v.jsxDEV)(s,{variant:`secondary`,children:e},e,!1,{fileName:y,lineNumber:131,columnNumber:15},this))??(0,v.jsxDEV)(`span`,{className:`text-sm text-muted`,children:`—`},void 0,!1,{fileName:y,lineNumber:134,columnNumber:19},this)},void 0,!1,{fileName:y,lineNumber:129,columnNumber:11},this)]},void 0,!0,{fileName:y,lineNumber:127,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:103,columnNumber:7},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.versions`)},void 0,!1,{fileName:y,lineNumber:140,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`overflow-hidden`,children:[(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2 text-xs font-medium text-muted`,children:[(0,v.jsxDEV)(`span`,{children:e(`diagnostics.component`)},void 0,!1,{fileName:y,lineNumber:143,columnNumber:13},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.installed`)},void 0,!1,{fileName:y,lineNumber:144,columnNumber:13},this),(0,v.jsxDEV)(`span`,{children:e(`diagnostics.latest`)},void 0,!1,{fileName:y,lineNumber:145,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:142,columnNumber:11},this),w?.installedVersion&&(0,v.jsxDEV)(x,{name:e(`plugins.runtimeLabel`),installed:w.installedVersion,latest:w.latestVersion},void 0,!1,{fileName:y,lineNumber:148,columnNumber:13},this),S.filter(e=>e.id!==`core`).map(e=>(0,v.jsxDEV)(x,{name:e.id,installed:e.installedVersion,latest:e.latestVersion},e.id,!1,{fileName:y,lineNumber:157,columnNumber:15},this)),!w?.installedVersion&&S.length===0&&(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noData`)},void 0,!1,{fileName:y,lineNumber:160,columnNumber:13},this),N.length>0&&(0,v.jsxDEV)(`div`,{className:`border-t border-border px-4 py-2 text-xs text-accent`,children:e(`diagnostics.outdated`,{count:N.length})},void 0,!1,{fileName:y,lineNumber:163,columnNumber:13},this)]},void 0,!0,{fileName:y,lineNumber:141,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:139,columnNumber:7},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.recentMessages`)},void 0,!1,{fileName:y,lineNumber:171,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`overflow-x-auto`,children:i?.recentMessages.length?(0,v.jsxDEV)(`table`,{className:`w-full min-w-[34rem] text-left text-xs`,children:[(0,v.jsxDEV)(`thead`,{className:`border-b border-border text-muted`,children:(0,v.jsxDEV)(`tr`,{children:[(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.time`)},void 0,!1,{fileName:y,lineNumber:177,columnNumber:19},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.connector`)},void 0,!1,{fileName:y,lineNumber:178,columnNumber:19},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 font-medium`,children:e(`diagnostics.role`)},void 0,!1,{fileName:y,lineNumber:179,columnNumber:19},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.duration`)},void 0,!1,{fileName:y,lineNumber:180,columnNumber:19},this),(0,v.jsxDEV)(`th`,{className:`px-4 py-2 text-right font-medium`,children:e(`diagnostics.tokens`)},void 0,!1,{fileName:y,lineNumber:181,columnNumber:19},this)]},void 0,!0,{fileName:y,lineNumber:176,columnNumber:17},this)},void 0,!1,{fileName:y,lineNumber:175,columnNumber:15},this),(0,v.jsxDEV)(`tbody`,{children:i.recentMessages.map(e=>(0,v.jsxDEV)(`tr`,{className:`border-b border-border last:border-0`,children:[(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-muted`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:187,columnNumber:21},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-text`,children:e.connector},void 0,!1,{fileName:y,lineNumber:188,columnNumber:21},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-text`,children:e.role},void 0,!1,{fileName:y,lineNumber:189,columnNumber:21},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted`,children:e.ms==null?`—`:`${e.ms} ms`},void 0,!1,{fileName:y,lineNumber:190,columnNumber:21},this),(0,v.jsxDEV)(`td`,{className:`px-4 py-2 text-right text-muted`,children:e.tokensIn==null&&e.tokensOut==null?`—`:`${e.tokensIn??0} / ${e.tokensOut??0}`},void 0,!1,{fileName:y,lineNumber:191,columnNumber:21},this)]},e.id,!0,{fileName:y,lineNumber:186,columnNumber:19},this))},void 0,!1,{fileName:y,lineNumber:184,columnNumber:15},this)]},void 0,!0,{fileName:y,lineNumber:174,columnNumber:13},this):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noMessages`)},void 0,!1,{fileName:y,lineNumber:201,columnNumber:13},this)},void 0,!1,{fileName:y,lineNumber:172,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:170,columnNumber:7},this),(0,v.jsxDEV)(`section`,{className:`mt-6`,children:[(0,v.jsxDEV)(`h2`,{className:`mb-2 text-sm font-semibold text-text`,children:e(`diagnostics.recentErrors`)},void 0,!1,{fileName:y,lineNumber:207,columnNumber:9},this),(0,v.jsxDEV)(l,{className:`overflow-hidden`,children:i?.recentErrors.length?i.recentErrors.map((e,t)=>(0,v.jsxDEV)(`div`,{className:`border-b border-border px-4 py-3 last:border-0`,children:[(0,v.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2 text-xs`,children:[(0,v.jsxDEV)(s,{variant:`destructive`,children:e.level},void 0,!1,{fileName:y,lineNumber:213,columnNumber:19},this),(0,v.jsxDEV)(`span`,{className:`font-medium text-text`,children:e.source},void 0,!1,{fileName:y,lineNumber:214,columnNumber:19},this),(0,v.jsxDEV)(`span`,{className:`text-muted`,children:new Date(e.ts).toLocaleString()},void 0,!1,{fileName:y,lineNumber:215,columnNumber:19},this)]},void 0,!0,{fileName:y,lineNumber:212,columnNumber:17},this),(0,v.jsxDEV)(`div`,{className:`mt-1 break-words text-sm text-danger`,children:e.message},void 0,!1,{fileName:y,lineNumber:217,columnNumber:17},this)]},`${e.ts}-${t}`,!0,{fileName:y,lineNumber:211,columnNumber:15},this)):(0,v.jsxDEV)(`div`,{className:`px-4 py-4 text-sm text-muted`,children:e(`diagnostics.noErrors`)},void 0,!1,{fileName:y,lineNumber:221,columnNumber:13},this)},void 0,!1,{fileName:y,lineNumber:208,columnNumber:9},this)]},void 0,!0,{fileName:y,lineNumber:206,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:75,columnNumber:5},this)}function x({name:e,installed:t,latest:n}){return(0,v.jsxDEV)(`div`,{className:`grid grid-cols-[1fr_auto_auto] gap-x-4 border-b border-border px-4 py-2.5 text-sm last:border-0`,children:[(0,v.jsxDEV)(`span`,{className:`min-w-0 truncate text-text`,children:e},void 0,!1,{fileName:y,lineNumber:232,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:`text-muted`,children:[`v`,t]},void 0,!0,{fileName:y,lineNumber:233,columnNumber:7},this),(0,v.jsxDEV)(`span`,{className:n&&g(n,t)?`text-accent`:`text-muted`,children:n?`v${n}`:`—`},void 0,!1,{fileName:y,lineNumber:234,columnNumber:7},this)]},void 0,!0,{fileName:y,lineNumber:231,columnNumber:5},this)}export{b as DiagnosticsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{a as r,d as i,t as a,u as o}from"./react-vendor-CzSUaSLk.js";import{At as s,L as c,M as l,Mt as u,Nt as d,Wn as f,dr as p,g as m,pr as h,un as g,vr as _}from"./src-Cp4yFztL.js";import{A as v,i as y,p as b,u as x}from"./fields-GPyF03tK.js";import{A as S,c as C,k as w,l as T,n as E,t as D}from"./shelf-CpE68_8d.js";import{t as O}from"./arrow-left-DDsxjRCq.js";import{l as k}from"./phone-input-CZF7hU3E.js";import{a as A,s as j,t as M}from"./list-cache-B4i_A9fj.js";import{F as N,s as P}from"./api-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{a as r,d as i,t as a,u as o}from"./react-vendor-CzSUaSLk.js";import{At as s,L as c,M as l,Mt as u,Nt as d,Wn as f,dr as p,g as m,pr as h,un as g,vr as _}from"./src-Cp4yFztL.js";import{A as v,i as y,p as b,u as x}from"./fields-GPyF03tK.js";import{A as S,c as C,k as w,l as T,n as E,t as D}from"./shelf-CpE68_8d.js";import{t as O}from"./arrow-left-DDsxjRCq.js";import{l as k}from"./phone-input-CZF7hU3E.js";import{a as A,s as j,t as M}from"./list-cache-B4i_A9fj.js";import{F as N,s as P}from"./api-COuWgOWV.js";var F=e(t(),1),I=a(),L=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/fields-form.tsx`;function R({shelf:e,record:t,onSubmit:r,onCancel:i,submitLabel:a,busy:o,children:l,hiddenFields:d,onValuesChange:f,errorSink:p,extraValidate:h}){let{t:g}=n(),_=u(g),y=!!t,b=(0,F.useMemo)(()=>T(e.fields),[e]),{values:x,errors:S,setErrors:C,setTouched:w,bridge:O}=m({fm:b,mode:y?`edit`:`create`,recordCtx:{library:e.library,shelf:e.shelf,recordId:t?String(t.id):null},initial:()=>B(e,t),hiddenFields:d}),[A,j]=(0,F.useState)(),[M,N]=(0,F.useState)(!1);(0,F.useEffect)(()=>{f?.(x)},[x,f]),(0,F.useEffect)(()=>{p?.({setErrors:C,setTouched:w})},[p,C,w]);async function P(t){t.preventDefault(),j(void 0);let n=Object.keys(b),i={};for(let e of n)e in x&&(i[e]=x[e]);let a=V(i),o=(y?E(e):D(e)).safeParse(a),s={};if(!o.success)for(let e of o.error.issues){let t=String(e.path[0]??``);if(!n.includes(t)||s[t])continue;let{code:r,params:i}=v(e.message);s[t]=_(r,i)}if(Object.assign(s,h?.(x)??{}),Object.keys(s).length){C(s),w(new Set(Object.keys(s)));return}N(!0);let c=await r(a);N(!1),c&&j(c)}return(0,I.jsxDEV)(`form`,{onSubmit:P,noValidate:!0,className:`flex flex-col gap-5 min-w-0`,children:[(0,I.jsxDEV)(s.Provider,{value:e=>S[e.join(`.`)],children:(0,I.jsxDEV)(c,{items:e.fields,ctx:{bridge:O}},void 0,!1,{fileName:L,lineNumber:117,columnNumber:9},this)},void 0,!1,{fileName:L,lineNumber:116,columnNumber:7},this),l,A&&(0,I.jsxDEV)(`p`,{className:`text-sm text-danger`,children:A},void 0,!1,{fileName:L,lineNumber:120,columnNumber:21},this),(0,I.jsxDEV)(`div`,{className:`flex gap-3 pt-2 border-t border-border`,children:[(0,I.jsxDEV)(k,{type:`submit`,disabled:o||M,size:`lg`,className:`flex-1`,children:a??g(`actions.save`)},void 0,!1,{fileName:L,lineNumber:122,columnNumber:9},this),i&&(0,I.jsxDEV)(k,{type:`button`,variant:`secondary`,size:`lg`,onClick:i,className:`flex-1`,children:g(`actions.cancel`)},void 0,!1,{fileName:L,lineNumber:126,columnNumber:11},this)]},void 0,!0,{fileName:L,lineNumber:121,columnNumber:7},this)]},void 0,!0,{fileName:L,lineNumber:115,columnNumber:5},this)}var z=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/form.tsx`;function B(e,t){let n={};n.name=t?.name==null?``:String(t.name);for(let[r,i]of C(e.fields))if(t){let e=t[r];e==null?n[r]=i.prim!==`checkbox`&&``:i.prim===`checkbox`?n[r]=e===1||e===!0||e===`1`:x(i)?n[r]=e===``?``:g(e,i.hints.multiple===!0?[]:{}):n[r]=e}else n[r]=i.prim===`checkbox`?!1:x(i)&&i.hints.multiple===!0?[]:``;for(let r of e.fields){if(!y(r)||!b(r))continue;let e=r.key;t?n[e]=t[e]??(r.multiple?[]:{}):n[e]=r.multiple?[]:{}}return n}function V(e){let t={};for(let[n,r]of Object.entries(e))r===``||r===void 0||Array.isArray(r)&&r.length===0||typeof r==`object`&&r&&!Array.isArray(r)&&Object.keys(r).length===0||(t[n]=r);return t}function H({ext:e,values:t,onChange:r,recordId:i,fieldLabel:a}){let{t:o}=n(),s=(0,F.useMemo)(()=>T(e.fields),[e]),u={renderField:(n,a)=>S(a.hidden,t)?null:(0,I.jsxDEV)(l,{mode:`create`,field:a,label:a.label?o(a.label):void 0,required:S(a.required,t),value:t[n]??``,recordCtx:{library:``,shelf:e.id,recordId:i},onChange:t=>r(e.id,n,t)},void 0,!1,{fileName:z,lineNumber:102,columnNumber:9},this),values:t,setValue:(t,n)=>r(e.id,t,n),isHidden:e=>S(s[e]?.hidden,t),mode:`create`};return(0,I.jsxDEV)(`fieldset`,{className:`border border-border rounded-xl p-4 pt-2 flex flex-col min-w-0 gap-4`,children:[(0,I.jsxDEV)(`legend`,{className:`px-2 inline-flex items-center gap-1.5 text-sm font-semibold text-accent`,children:[(0,I.jsxDEV)(_,{name:e.icon,size:14,className:`shrink-0`},void 0,!1,{fileName:z,lineNumber:125,columnNumber:9},this),` `,o(e.label),(0,I.jsxDEV)(p,{ext:e,fieldLabel:a},void 0,!1,{fileName:z,lineNumber:126,columnNumber:9},this)]},void 0,!0,{fileName:z,lineNumber:124,columnNumber:7},this),(0,I.jsxDEV)(c,{items:e.fields,ctx:u},void 0,!1,{fileName:z,lineNumber:128,columnNumber:7},this)]},void 0,!0,{fileName:z,lineNumber:123,columnNumber:5},this)}function U(e,t,n){let[r]=(0,F.useState)(()=>{let n={};for(let r of e){let e=t?._extends?.[r.id];n[r.id]={};for(let[t,i]of C(r.fields)){let a=e?.[t];a==null?n[r.id][t]=i.prim===`checkbox`?!1:x(i)&&i.hints.multiple===!0?[]:``:i.prim===`checkbox`?n[r.id][t]=a===1||a===!0||a===`1`:x(i)?n[r.id][t]=a===``?``:g(a,i.hints.multiple===!0?[]:{}):n[r.id][t]=a}}return n}),[i,a]=(0,F.useState)(r),o=(0,F.useMemo)(()=>e.filter(e=>w(e.showWhen,n)),[e,n]);function s(e,t,n){a(r=>({...r,[e]:{...r[e],[t]:n}}))}function c(e){let t={};for(let n of o){let a=i[n.id]??{};if(e){let e=r[n.id]??{},i=Object.fromEntries(Object.entries(a).filter(([t,n])=>n!==e[t]));Object.keys(i).length>0&&(t[`_extend_${n.id}`]=i)}else{let e=Object.fromEntries(Object.entries(a).filter(([,e])=>e!==``&&e!==!1));t[`_extend_${n.id}`]=e}}return t}return{extValues:i,setExtValue:s,activeExts:o,buildExtendPatch:c}}function W({shelf:e,record:t,defaults:r,hiddenFields:i,onSuccess:a,onCancel:o}){let{t:s}=n(),c=u(s),l=!!t,p=(0,F.useMemo)(()=>T(e.fields),[e]),[m,h]=(0,F.useState)([]),[g,_]=(0,F.useState)(!1),[v,y]=(0,F.useState)(()=>B(e,t)),b=(0,F.useRef)(null),{extValues:x,setExtValue:S,activeExts:C,buildExtendPatch:w}=U((0,F.useMemo)(()=>A().filter(t=>t.attachTo.some(t=>t.library===e.library&&(!t.shelf||t.shelf===e.shelf))),[e]),t,v);function E(e){return l||String(e.name??``).trim()?{}:{name:s(`validation.required`)}}async function D(n){h([]),_(!0);let r={...n,...w()},i=String(t?.id??``),o=l?await N(e.library,e.shelf,i,r):await P(e.library,e.shelf,r);if(_(!1),o.ok){a(o.row);return}let s=o.issues??[],u={},f=[];for(let e of s)e.field&&p[e.field]?u[e.field]=c(e.code,e.params):f.push(e);let m=d(s,c);(Object.keys(u).length||Object.keys(m).length)&&(b.current?.setErrors(e=>({...e,...u,...m})),b.current?.setTouched(e=>new Set([...e,...Object.keys(u)]))),h(f)}return(0,I.jsxDEV)(`div`,{children:(0,I.jsxDEV)(R,{shelf:e,record:t,onSubmit:D,onCancel:o,submitLabel:s(g?`common.saving`:l?`actions.save`:`actions.create`),busy:g,hiddenFields:i,onValuesChange:y,errorSink:e=>{b.current=e},extraValidate:E,children:[C.map(e=>(0,I.jsxDEV)(H,{ext:e,values:x[e.id]??{},onChange:S,recordId:t?String(t.id):null,fieldLabel:e=>p[e]?.label?s(p[e].label):e},e.id,!1,{fileName:z,lineNumber:329,columnNumber:11},this)),m.length>0&&(0,I.jsxDEV)(f,{tone:`danger`,children:[(0,I.jsxDEV)(`p`,{className:`mb-2 font-semibold`,children:s(`form.serverRejected`)},void 0,!1,{fileName:z,lineNumber:341,columnNumber:13},this),(0,I.jsxDEV)(`ul`,{className:`space-y-1 text-text`,children:m.map((e,t)=>{let n=p[e.field],r=n?s(n.label):e.field,i=e.code===`pattern`&&e.params?.messageKey?s(String(e.params.messageKey)):s(`validation.${e.code}`,e.params);return(0,I.jsxDEV)(`li`,{className:`flex gap-1.5`,children:[r&&(0,I.jsxDEV)(`span`,{className:`text-muted font-medium`,children:[r,`:`]},void 0,!0,{fileName:z,lineNumber:352,columnNumber:31},this),i]},t,!0,{fileName:z,lineNumber:351,columnNumber:19},this)})},void 0,!1,{fileName:z,lineNumber:342,columnNumber:13},this)]},void 0,!0,{fileName:z,lineNumber:340,columnNumber:11},this)]},`${e.library}/${e.shelf}/${t?t.id:`new`}`,!0,{fileName:z,lineNumber:312,columnNumber:7},this)},void 0,!1,{fileName:z,lineNumber:304,columnNumber:5},this)}var G=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/record/NewRecordView.tsx`;function K(){let{t:e}=n(),{library:t,shelf:a}=i(),s=o(),c=j().flatMap(e=>e.shelves).find(e=>e.library===t&&e.shelf===a);return!c||c.standalone===!1?(0,I.jsxDEV)(`div`,{className:`p-6 text-muted`,children:e(`common.notFound`)},void 0,!1,{fileName:G,lineNumber:19,columnNumber:44},this):c.single?(0,I.jsxDEV)(r,{to:`/${t}/${a}`,replace:!0},void 0,!1,{fileName:G,lineNumber:24,columnNumber:24},this):(0,I.jsxDEV)(`div`,{className:`flex flex-col`,children:[(0,I.jsxDEV)(h,{children:(0,I.jsxDEV)(k,{variant:`ghost`,size:`sm`,className:`px-2`,onClick:()=>s(`/${t}/${a}`),children:[(0,I.jsxDEV)(O,{size:18},void 0,!1,{fileName:G,lineNumber:30,columnNumber:11},this),(0,I.jsxDEV)(`span`,{className:`text-sm`,children:e(c.label)},void 0,!1,{fileName:G,lineNumber:31,columnNumber:11},this)]},void 0,!0,{fileName:G,lineNumber:29,columnNumber:9},this)},void 0,!1,{fileName:G,lineNumber:28,columnNumber:7},this),(0,I.jsxDEV)(`div`,{className:`flex-1 min-w-0`,children:(0,I.jsxDEV)(`div`,{className:`max-w-2xl mx-auto px-6 py-6`,children:(0,I.jsxDEV)(W,{shelf:c,onSuccess:e=>{M(`${c.library}/${c.shelf}`),e?.id?s(`/${t}/${a}/${e.id}`):s(`/${t}/${a}`)},onCancel:()=>s(`/${t}/${a}`)},void 0,!1,{fileName:G,lineNumber:36,columnNumber:11},this)},void 0,!1,{fileName:G,lineNumber:35,columnNumber:9},this)},void 0,!1,{fileName:G,lineNumber:34,columnNumber:7},this)]},void 0,!0,{fileName:G,lineNumber:27,columnNumber:5},this)}export{K as NewRecordView};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-CzSUaSLk.js";import{On as a,Qn as o,Wn as s,Wt as c,_r as l,cr as u,en as d,or as f,vr as p}from"./src-Cp4yFztL.js";import{t as m}from"./ThemeSwitcher-BPuCvU1U.js";import{l as h}from"./phone-input-CZF7hU3E.js";import{A as g,I as _,N as ee,P as v,m as y,v as b}from"./api-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t,t as n}from"./i18n-vendor-T6EnJ_TL.js";import{r,t as i}from"./react-vendor-CzSUaSLk.js";import{On as a,Qn as o,Wn as s,Wt as c,_r as l,cr as u,en as d,or as f,vr as p}from"./src-Cp4yFztL.js";import{t as m}from"./ThemeSwitcher-BPuCvU1U.js";import{l as h}from"./phone-input-CZF7hU3E.js";import{A as g,I as _,N as ee,P as v,m as y,v as b}from"./api-COuWgOWV.js";import{n as x}from"./auth-context-L2NSpevo.js";import{t as S}from"./version-CtfLXkhy.js";var C=e(t(),1),w=i(),T=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/app/SettingsPage.tsx`,E=null,D=null;function O(){E=null}function te(e=!1){if(!e&&E)return Promise.resolve(E);if(!e&&D)return D;let t=Promise.all([b(e?{refresh:!0}:void 0),y(e?{refresh:!0}:void 0)]).then(([e,t])=>{let n={plugins:e,runtime:t,checkedAt:Date.now()};return E=n,n});return e||(D=t,t.then(()=>{D===t&&(D=null)},()=>{D===t&&(D=null)})),t}async function k(){let e=Date.now();for(;Date.now()-e<6e4;){await new Promise(e=>setTimeout(e,1e3));try{if((await fetch(`/health`)).ok)return!0}catch{}}return!1}function A(){let{t:e}=n(),{role:t}=x(),i=t===`admin`,[y,b]=(0,C.useState)(()=>E?.plugins??[]),[D,A]=(0,C.useState)(()=>E===null),[M,N]=(0,C.useState)(()=>E?.checkedAt??null),[P,F]=(0,C.useState)(null),[I,L]=(0,C.useState)(!1),R=e=>P===e||P===`*`,[z,B]=(0,C.useState)(()=>E?.runtime??null),V=y.filter(e=>e.latestVersion&&S(e.latestVersion,e.installedVersion)),H=!!(z?.latestVersion&&z.installedVersion&&S(z.latestVersion,z.installedVersion)),U=V.length+ +!!H,[W,G]=(0,C.useState)(null),[K,q]=(0,C.useState)(!1),J=t=>e(`${t}.plugin.label`,{defaultValue:t}),Y=t=>e(`${t}.plugin.description`,{defaultValue:``}),X=t=>e(`${t}.library.label`,{defaultValue:t}),Z=(t,n)=>e(`${t}.${n}.label`,{defaultValue:n}),Q={has_dependents:t=>e(`plugins.errors.has_dependents`,{list:t.dependents.join(`, `)}),missing_deps:t=>e(`plugins.errors.missing_deps`,{list:t.deps.join(`, `)}),unknown_plugin:()=>e(`plugins.errors.unknown_plugin`)},$=(e=!1)=>te(e).then(({plugins:e,runtime:t,checkedAt:n})=>{b(e),B(t),N(n),A(!1)});(0,C.useEffect)(()=>{$()},[]);async function ne(){L(!0),G(null);try{await $(!0)}catch{G(e(`plugins.updateCheckError`))}finally{L(!1)}}async function re(t){if(!await o({title:e(`plugins.purgeTitle`),description:e(`plugins.confirmPurge`,{id:t.id}),confirmLabel:e(`plugins.purgeButton`),variant:`destructive`}))return;F(t.id),G(null);let n=await fetch(`/api/plugins/${t.id}/data`,{method:`DELETE`}),r=await n.json().catch(()=>({}));if(F(null),!n.ok){G(Q[r.error]?.(r)??e(`plugins.genericError`,{code:r.error??n.status}));return}q(!0),await $()}async function ie(t){F(t.id),G(null);let n=await g(t.id,!t.enabled);if(!n.ok){F(null),G(Q[n.error]?.(n.data??{})??e(`plugins.genericError`,{code:n.error}));return}window.location.reload()}async function ae(t){if(!t.latestVersion||!await o({title:e(`plugins.updateTitle`,{from:t.installedVersion,to:t.latestVersion}),description:e(`plugins.confirmUpdate`,{id:t.id,from:t.installedVersion,to:t.latestVersion}),confirmLabel:e(`plugins.updateButton`)}))return;F(t.id),G(null);let n=await v(t.id);if(!n.ok){F(null),G(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}q(!0),await k()?(O(),window.location.reload()):(F(null),G(e(`plugins.restartTimeout`)))}async function oe(){if(U===0)return;let t=V.map(e=>`${J(e.id)}: v${e.installedVersion} → v${e.latestVersion}`);H&&t.push(`${e(`plugins.runtimeLabel`)}: v${z.installedVersion} → v${z.latestVersion}`);let n=t.join(`
|
|
2
2
|
`);if(!await o({title:e(`plugins.updateAllButton`,{count:U}),description:e(`plugins.confirmUpdateAll`,{count:U,list:n}),confirmLabel:e(`plugins.updateButton`)}))return;F(`*`),G(null);let r=await ee();if(!r.ok){F(null),G(r.stderr?`${e(`plugins.updateError`)}: ${r.stderr}`:e(`plugins.genericError`,{code:r.error}));return}q(!0),await k()?(O(),window.location.reload()):(F(null),G(e(`plugins.restartTimeout`)))}let se=H;async function ce(){let t=[];if(H&&t.push(`${e(`plugins.runtimeLabel`)}: v${z.installedVersion} → v${z.latestVersion}`),t.length===0||!await o({title:e(`plugins.updateAllButton`,{count:t.length}),description:e(`plugins.confirmUpdateAll`,{count:t.length,list:t.join(`
|
|
3
3
|
`)}),confirmLabel:e(`plugins.updateButton`)}))return;F(`*`),G(null);let n=await _();if(!n.ok){F(null),G(n.stderr?`${e(`plugins.updateError`)}: ${n.stderr}`:e(`plugins.genericError`,{code:n.error}));return}q(!0),await k()?(O(),window.location.reload()):(F(null),G(e(`plugins.restartTimeout`)))}return(0,w.jsxDEV)(l,{children:[(0,w.jsxDEV)(`h1`,{className:`mb-6 ${d}`,children:e(`settings.title`)},void 0,!1,{fileName:T,lineNumber:290,columnNumber:7},this),(0,w.jsxDEV)(`section`,{className:`mb-6`,children:[(0,w.jsxDEV)(`h2`,{className:`mb-1 ${c}`,children:e(`settings.appearance`)},void 0,!1,{fileName:T,lineNumber:293,columnNumber:9},this),(0,w.jsxDEV)(f,{className:`flex items-center gap-4 px-4 py-2`,children:(0,w.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,w.jsxDEV)(m,{},void 0,!1,{fileName:T,lineNumber:298,columnNumber:13},this)},void 0,!1,{fileName:T,lineNumber:297,columnNumber:11},this)},void 0,!1,{fileName:T,lineNumber:296,columnNumber:9},this)]},void 0,!0,{fileName:T,lineNumber:292,columnNumber:7},this),(0,w.jsxDEV)(`section`,{className:`mb-6`,children:[(0,w.jsxDEV)(`h2`,{className:`mb-1 ${c}`,children:e(`settings.personalTitle`)},void 0,!1,{fileName:T,lineNumber:305,columnNumber:9},this),(0,w.jsxDEV)(f,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,w.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,w.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`auth.accountTitle`)},void 0,!1,{fileName:T,lineNumber:308,columnNumber:13},this)},void 0,!1,{fileName:T,lineNumber:307,columnNumber:11},this),(0,w.jsxDEV)(h,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,w.jsxDEV)(r,{to:`/settings/account`,title:e(`auth.accountTitle`),"aria-label":e(`auth.accountTitle`),children:(0,w.jsxDEV)(p,{name:`lucide:settings`,size:16},void 0,!1,{fileName:T,lineNumber:312,columnNumber:15},this)},void 0,!1,{fileName:T,lineNumber:311,columnNumber:13},this)},void 0,!1,{fileName:T,lineNumber:310,columnNumber:11},this)]},void 0,!0,{fileName:T,lineNumber:306,columnNumber:9},this)]},void 0,!0,{fileName:T,lineNumber:304,columnNumber:7},this),i&&(0,w.jsxDEV)(w.Fragment,{children:[(0,w.jsxDEV)(`section`,{className:`mb-6`,children:[(0,w.jsxDEV)(`h2`,{className:`mb-1 min-w-0 font-sans text-[11px] font-medium tracking-wide text-muted`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:T,lineNumber:322,columnNumber:13},this),(0,w.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.usersDescription`)},void 0,!1,{fileName:T,lineNumber:323,columnNumber:13},this),(0,w.jsxDEV)(f,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,w.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,w.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`settings.usersTitle`)},void 0,!1,{fileName:T,lineNumber:326,columnNumber:17},this)},void 0,!1,{fileName:T,lineNumber:325,columnNumber:15},this),(0,w.jsxDEV)(h,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,w.jsxDEV)(r,{to:`/settings/users`,title:e(`settings.usersTitle`),"aria-label":e(`settings.usersTitle`),children:(0,w.jsxDEV)(p,{name:`lucide:settings`,size:16},void 0,!1,{fileName:T,lineNumber:330,columnNumber:19},this)},void 0,!1,{fileName:T,lineNumber:329,columnNumber:17},this)},void 0,!1,{fileName:T,lineNumber:328,columnNumber:15},this)]},void 0,!0,{fileName:T,lineNumber:324,columnNumber:13},this)]},void 0,!0,{fileName:T,lineNumber:321,columnNumber:11},this),(0,w.jsxDEV)(`section`,{className:`mb-6`,children:[(0,w.jsxDEV)(`h2`,{className:`mb-1 min-w-0 font-sans text-[11px] font-medium tracking-wide text-muted`,children:e(`settings.diagnosticsTitle`)},void 0,!1,{fileName:T,lineNumber:337,columnNumber:13},this),(0,w.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.diagnosticsDescription`)},void 0,!1,{fileName:T,lineNumber:338,columnNumber:13},this),(0,w.jsxDEV)(f,{className:`flex items-center gap-4 px-4 py-3`,children:[(0,w.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:(0,w.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`diagnostics.title`)},void 0,!1,{fileName:T,lineNumber:341,columnNumber:17},this)},void 0,!1,{fileName:T,lineNumber:340,columnNumber:15},this),(0,w.jsxDEV)(h,{variant:`ghost`,size:`sm`,type:`button`,className:`shrink-0 border border-border`,asChild:!0,children:(0,w.jsxDEV)(r,{to:`/settings/diagnostics`,title:e(`diagnostics.title`),"aria-label":e(`diagnostics.title`),children:(0,w.jsxDEV)(p,{name:`lucide:activity`,size:16},void 0,!1,{fileName:T,lineNumber:345,columnNumber:19},this)},void 0,!1,{fileName:T,lineNumber:344,columnNumber:17},this)},void 0,!1,{fileName:T,lineNumber:343,columnNumber:15},this)]},void 0,!0,{fileName:T,lineNumber:339,columnNumber:13},this)]},void 0,!0,{fileName:T,lineNumber:336,columnNumber:11},this),(0,w.jsxDEV)(`section`,{children:[(0,w.jsxDEV)(`div`,{className:`mb-1 flex items-center gap-3`,children:[(0,w.jsxDEV)(`h2`,{className:`min-w-0 font-sans text-[11px] font-medium tracking-wide text-muted`,children:e(`settings.componentsTitle`)},void 0,!1,{fileName:T,lineNumber:354,columnNumber:15},this),(0,w.jsxDEV)(h,{variant:`ghost`,size:`sm`,type:`button`,disabled:P!==null||I,onClick:ne,title:e(`plugins.checkUpdates`),className:`shrink-0 border border-border`,children:[(0,w.jsxDEV)(p,{name:`lucide:refresh-cw`,size:14,className:I?`animate-spin`:void 0},void 0,!1,{fileName:T,lineNumber:364,columnNumber:17},this),e(I?`plugins.checkingUpdates`:`plugins.checkUpdates`)]},void 0,!0,{fileName:T,lineNumber:355,columnNumber:15},this),U>0&&(0,w.jsxDEV)(h,{size:`sm`,type:`button`,disabled:P!==null,onClick:oe,variant:`accentOutline`,className:`shrink-0`,children:e(`plugins.updateAllButton`,{count:U})},void 0,!1,{fileName:T,lineNumber:368,columnNumber:17},this)]},void 0,!0,{fileName:T,lineNumber:353,columnNumber:13},this),(0,w.jsxDEV)(`p`,{className:`mb-3 text-sm text-muted`,children:e(`settings.componentsDescription`)},void 0,!1,{fileName:T,lineNumber:380,columnNumber:13},this),!D&&M!==null&&(0,w.jsxDEV)(`p`,{className:`mb-3 text-xs text-muted`,"aria-live":`polite`,children:[U>0?e(`plugins.updatesAvailable`,{count:U}):e(`plugins.noUpdates`),` `,e(`plugins.lastChecked`,{time:new Intl.DateTimeFormat(void 0,{hour:`2-digit`,minute:`2-digit`}).format(M)})]},void 0,!0,{fileName:T,lineNumber:382,columnNumber:15},this),D?(0,w.jsxDEV)(`p`,{className:`text-muted`,children:e(`plugins.loading`)},void 0,!1,{fileName:T,lineNumber:393,columnNumber:15},this):(0,w.jsxDEV)(w.Fragment,{children:[K&&(0,w.jsxDEV)(s,{tone:`info`,className:`mb-5`,children:[e(`plugins.restartBannerBefore`),(0,w.jsxDEV)(`b`,{children:e(`plugins.restartBannerBold`)},void 0,!1,{fileName:T,lineNumber:399,columnNumber:21},this),e(`plugins.restartBannerAfter`)]},void 0,!0,{fileName:T,lineNumber:397,columnNumber:19},this),W&&(0,w.jsxDEV)(s,{tone:`danger`,className:`mb-5`,children:W},void 0,!1,{fileName:T,lineNumber:404,columnNumber:19},this),(0,w.jsxDEV)(`div`,{className:`overflow-hidden rounded-lg border border-border bg-surface`,children:[(0,w.jsxDEV)(`div`,{className:`flex flex-col gap-3 border-b border-border px-4 py-3 sm:flex-row sm:items-center sm:gap-4`,children:[(0,w.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,w.jsxDEV)(`div`,{className:`flex items-center gap-2`,children:[(0,w.jsxDEV)(`span`,{className:`font-semibold text-text`,children:e(`core.settings.label`)},void 0,!1,{fileName:T,lineNumber:414,columnNumber:25},this),z?.installedVersion&&(0,w.jsxDEV)(u,{variant:`secondary`,className:`text-[10px] font-medium`,children:[`v`,z.installedVersion]},void 0,!0,{fileName:T,lineNumber:416,columnNumber:27},this),se&&(0,w.jsxDEV)(h,{size:`sm`,type:`button`,disabled:P!==null,onClick:ce,title:e(`settings.systemUpdateTitle`),variant:`accentOutline`,className:`shrink-0`,children:e(`plugins.updateButton`)},void 0,!1,{fileName:T,lineNumber:421,columnNumber:27},this)]},void 0,!0,{fileName:T,lineNumber:413,columnNumber:23},this),(0,w.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:e(`settings.systemDescription`)},void 0,!1,{fileName:T,lineNumber:434,columnNumber:23},this)]},void 0,!0,{fileName:T,lineNumber:412,columnNumber:21},this),(0,w.jsxDEV)(`div`,{className:`flex w-full shrink-0 justify-end border-t border-border pt-3 sm:w-auto sm:border-t-0 sm:pt-0`,children:(0,w.jsxDEV)(h,{variant:`ghost`,size:`sm`,type:`button`,className:`border border-border`,asChild:!0,children:(0,w.jsxDEV)(r,{to:`/settings/system`,title:e(`core.settings.label`),"aria-label":e(`core.settings.label`),children:(0,w.jsxDEV)(p,{name:`lucide:settings`,size:16},void 0,!1,{fileName:T,lineNumber:443,columnNumber:27},this)},void 0,!1,{fileName:T,lineNumber:438,columnNumber:25},this)},void 0,!1,{fileName:T,lineNumber:437,columnNumber:23},this)},void 0,!1,{fileName:T,lineNumber:436,columnNumber:21},this)]},void 0,!0,{fileName:T,lineNumber:411,columnNumber:19},this),y.map(t=>{let n=Y(t.id),i=t.enabled?y.filter(e=>e.enabled&&e.id!==t.id&&e.dependsOn.includes(t.id)):[],o=i.length>0,s=o?e(`plugins.blockedByDependents`,{list:i.map(e=>J(e.id)).join(`, `)}):t.enabled?e(`plugins.switchDisable`):e(`plugins.switchEnable`),c=[t.dependsOn.length>0&&`${e(`plugins.metaDepends`)} ${t.dependsOn.map(J).join(`, `)}`,t.libraries.length>0&&`${e(`plugins.metaLibraries`)} ${t.libraries.map(X).join(`, `)}`,t.extends.length>0&&`${e(`plugins.metaExtends`)} ${t.extends.map(e=>Z(t.id,e)).join(`, `)}`].filter(Boolean).join(` · `)||`—`;return(0,w.jsxDEV)(`div`,{className:`flex flex-col gap-3 border-b border-border px-4 py-3 last:border-b-0 sm:flex-row sm:items-center sm:gap-4`,children:[(0,w.jsxDEV)(`div`,{className:`min-w-0 flex-1`,children:[(0,w.jsxDEV)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,w.jsxDEV)(`span`,{className:`font-semibold text-text`,children:J(t.id)},void 0,!1,{fileName:T,lineNumber:480,columnNumber:29},this),(0,w.jsxDEV)(j,{plugin:t,busy:R(t.id),onUpdate:()=>ae(t)},void 0,!1,{fileName:T,lineNumber:481,columnNumber:29},this)]},void 0,!0,{fileName:T,lineNumber:479,columnNumber:27},this),n&&(0,w.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:n},void 0,!1,{fileName:T,lineNumber:483,columnNumber:43},this),(0,w.jsxDEV)(`div`,{className:`text-xs text-muted mt-0.5 truncate`,children:c},void 0,!1,{fileName:T,lineNumber:484,columnNumber:27},this)]},void 0,!0,{fileName:T,lineNumber:478,columnNumber:25},this),(0,w.jsxDEV)(`div`,{className:`flex w-full shrink-0 items-center justify-end gap-2 border-t border-border pt-3 sm:w-auto sm:border-t-0 sm:pt-0`,children:[t.hasSettings&&(0,w.jsxDEV)(h,{variant:`ghost`,size:`sm`,type:`button`,className:`border border-border`,asChild:!0,children:(0,w.jsxDEV)(r,{to:`/settings/${t.id}`,title:e(`plugins.settingsTitle`,{defaultValue:`Settings`}),"aria-label":e(`plugins.settingsTitle`,{defaultValue:`Settings`}),children:(0,w.jsxDEV)(p,{name:`lucide:settings`,size:16},void 0,!1,{fileName:T,lineNumber:494,columnNumber:33},this)},void 0,!1,{fileName:T,lineNumber:489,columnNumber:31},this)},void 0,!1,{fileName:T,lineNumber:488,columnNumber:29},this),(0,w.jsxDEV)(h,{size:`iconSm`,type:`button`,disabled:R(t.id),onClick:()=>re(t),title:e(`plugins.purgeTitle`),"aria-label":e(`plugins.purgeTitle`),variant:`destructiveOutline`,children:(0,w.jsxDEV)(p,{name:`lucide:trash-2`,size:16},void 0,!1,{fileName:T,lineNumber:507,columnNumber:29},this)},void 0,!1,{fileName:T,lineNumber:498,columnNumber:27},this),(0,w.jsxDEV)(`span`,{title:s,children:(0,w.jsxDEV)(a,{checked:t.enabled,disabled:R(t.id)||o,onCheckedChange:()=>ie(t),title:s},void 0,!1,{fileName:T,lineNumber:512,columnNumber:29},this)},void 0,!1,{fileName:T,lineNumber:511,columnNumber:27},this)]},void 0,!0,{fileName:T,lineNumber:486,columnNumber:25},this)]},t.id,!0,{fileName:T,lineNumber:474,columnNumber:23},this)})]},void 0,!0,{fileName:T,lineNumber:409,columnNumber:17},this)]},void 0,!0,{fileName:T,lineNumber:395,columnNumber:15},this)]},void 0,!0,{fileName:T,lineNumber:352,columnNumber:11},this)]},void 0,!0,{fileName:T,lineNumber:319,columnNumber:9},this)]},void 0,!0,{fileName:T,lineNumber:289,columnNumber:5},this)}function j({plugin:e,busy:t,onUpdate:r}){let{t:i}=n(),a=!!(e.latestVersion&&S(e.latestVersion,e.installedVersion));return(0,w.jsxDEV)(w.Fragment,{children:[(0,w.jsxDEV)(u,{variant:`secondary`,className:`text-[11px] font-medium`,children:[`v`,e.installedVersion]},void 0,!0,{fileName:T,lineNumber:538,columnNumber:7},this),a&&(0,w.jsxDEV)(h,{size:`sm`,type:`button`,disabled:t,onClick:r,title:i(`plugins.updateTitle`,{from:e.installedVersion,to:e.latestVersion}),variant:`accentOutline`,className:`shrink-0`,children:i(`plugins.updateButton`)},void 0,!1,{fileName:T,lineNumber:542,columnNumber:9},this)]},void 0,!0,{fileName:T,lineNumber:537,columnNumber:5},this)}export{A as SettingsPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,t){return new Promise(n=>{let r=new XMLHttpRequest;r.open(`POST`,`/api/upload`),r.upload.addEventListener(`progress`,e=>{e.lengthComputable&&t(Math.min(100,Math.round(e.loaded/e.total*100)))}),r.addEventListener(`load`,()=>{if(r.status<200||r.status>=300){n(null);return}try{let e=JSON.parse(r.responseText),i=e.name??e.filename;if(!i){n(null);return}t(100),n({name:i,...e.mime?{mime:e.mime}:{},...e.size==null?{}:{size:e.size}})}catch{n(null)}}),r.addEventListener(`error`,()=>n(null)),r.addEventListener(`abort`,()=>n(null));let i=new FormData;i.append(`file`,e),r.send(i)})}async function t(t,n){if(n)return e(t,n);let r=new FormData;r.append(`file`,t);let i=await fetch(`/api/upload`,{method:`POST`,body:r});if(!i.ok)return null;let a=await i.json(),o=a.name??a.filename;return o?{name:o,...a.mime?{mime:a.mime}:{},...a.size==null?{}:{size:a.size}}:null}function n(e){return`/uploads/${e}`}async function r(e,t){let n=new URLSearchParams({path:e});t?.length&&n.set(`exts`,t.join(`,`));let r=await fetch(`/api/fs/list?${n.toString()}`);if(!r.ok)throw Error(`fs_list_${r.status}`);return(await r.json()).entries??[]}async function i(e){let t=await fetch(`/api/embed`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({url:e})});return t.ok?await t.json():null}var a=new Map;function o(e){let t=a.get(e);if(t)return t;let n=fetch(e).then(t=>{if(!t.ok)throw Error(`GET ${e} → ${t.status}`);return t.json()}).finally(()=>{a.delete(e)});return a.set(e,n),n}function s(e,t,n){return o(`/api/${e}/${t}${n&&Object.keys(n).length?`?`+new URLSearchParams(n).toString():``}`)}async function c(e,t,n){let r=await fetch(`/api/${e}/${t}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});return r.status===201?{ok:!0,row:await r.json()}:r.status===422?{ok:!1,issues:(await r.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function l(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});return i.ok?{ok:!0,row:await i.json()}:i.status===422?{ok:!1,issues:(await i.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function u(e,t,n){return(await fetch(`/api/${e}/${t}/${n}`,{method:`DELETE`})).status===204}async function d(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}/activity`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({favorite:r})});return i.ok?(await i.json()).activity??null:null}function f(){return o(`/api/trash`)}async function p(e,t,n){return(await fetch(`/api/trash/${e}/${t}/${n}/restore`,{method:`POST`})).ok}async function m(e,t,n){return(await fetch(`/api/trash/${e}/${t}/${n}`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({confirmed:!0})})).status===204}async function h(e={}){let t=e.refresh?`updates=1&refresh=1`:`updates=1`,n=await fetch(`/api/plugins?${t}`);if(!n.ok)throw Error(`plugins`);return n.json()}async function g(e,t){let n=await fetch(`/api/plugins/${e}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:t})}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0}:{ok:!1,error:r.error??String(n.status),data:r}}async function _(e){let t=await fetch(`/api/plugins/${e}/update`,{method:`POST`}),n=await t.json().catch(()=>({}));return t.ok?{ok:!0}:{ok:!1,error:n.error??String(t.status),stderr:n.stderr}}async function v(){let e=await fetch(`/api/plugins/update-all`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function y(){let e=await fetch(`/api/system/update`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function b(e={}){let t=await fetch(`/api/runtime${e.refresh?`?refresh=1`:``}`);return t.ok?await t.json():{installedVersion:null,latestVersion:null}}async function x(){let e=await fetch(`/api/system/orchestrator-diagnostics`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`});if(!e.ok)throw Error(`diagnostics`);return await e.json()}async function S(e,t){let n=await fetch(e,{headers:{"content-type":`application/json`},...t}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0,data:r}:{ok:!1,status:n.status,data:r}}function C(){return o(`/api/auth/status`)}function w(e,t,n){return S(`/api/auth/setup`,{method:`POST`,body:JSON.stringify({login:e,password:t,displayName:n})})}function T(e,t){return S(`/api/auth/login`,{method:`POST`,body:JSON.stringify({login:e,password:t})})}async function E(){await fetch(`/api/auth/logout`,{method:`POST`})}async function D(){let e=await fetch(`/api/auth/me`);return e.ok?e.json():null}function O(e){return S(`/api/auth/me`,{method:`PATCH`,body:JSON.stringify(e)})}function k(e){return S(`/api/auth/users${e?`?q=${encodeURIComponent(e)}`:``}`)}function A(e){return S(`/api/auth/users`,{method:`POST`,body:JSON.stringify(e)})}function j(e,t){return S(`/api/auth/users/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function M(e){return S(`/api/auth/users/${e}`,{method:`DELETE`})}function N(){return S(`/api/auth/tokens`)}function P(e,t){return S(`/api/auth/tokens`,{method:`POST`,body:JSON.stringify({name:e,token:t})})}function F(e){return S(`/api/auth/tokens/${e}`,{method:`DELETE`})}function I(){return S(`/api/auth/links`)}function L(){return S(`/api/auth/links`,{method:`POST`})}function R(e,t){return S(`/api/auth/links/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:`DELETE`})}function z(){return S(`/api/oauth/grants`)}function B(e){return S(`/api/oauth/grants/${encodeURIComponent(e)}`,{method:`DELETE`})}export{g as A,n as C,p as D,i as E,l as F,y as I,j as L,R as M,v as N,B as O,_ as P,t as R,k as S,m as T,I as _,C as a,N as b,P as c,M as d,o as f,z as g,r as h,w as i,d as j,F as k,A as l,b as m,E as n,O as o,x as p,D as r,c as s,T as t,u,h as v,L as w,f as x,s as y};
|
|
1
|
+
function e(e,t){return new Promise(n=>{let r=new XMLHttpRequest;r.open(`POST`,`/api/upload`),r.upload.addEventListener(`progress`,e=>{e.lengthComputable&&t(Math.min(100,Math.round(e.loaded/e.total*100)))}),r.addEventListener(`load`,()=>{if(r.status<200||r.status>=300){n(null);return}try{let e=JSON.parse(r.responseText),i=e.name??e.filename;if(!i){n(null);return}t(100),n({name:i,...e.mime?{mime:e.mime}:{},...e.size==null?{}:{size:e.size}})}catch{n(null)}}),r.addEventListener(`error`,()=>n(null)),r.addEventListener(`abort`,()=>n(null));let i=new FormData;i.append(`file`,e),r.send(i)})}async function t(t,n){if(n)return e(t,n);let r=new FormData;r.append(`file`,t);let i=await fetch(`/api/upload`,{method:`POST`,body:r});if(!i.ok)return null;let a=await i.json(),o=a.name??a.filename;return o?{name:o,...a.mime?{mime:a.mime}:{},...a.size==null?{}:{size:a.size}}:null}function n(e){return`/uploads/${e}`}async function r(e,t){let n=new URLSearchParams({path:e});t?.length&&n.set(`exts`,t.join(`,`));let r=await fetch(`/api/fs/list?${n.toString()}`);if(!r.ok)throw Error(`fs_list_${r.status}`);return(await r.json()).entries??[]}async function i(e){let t=await fetch(`/api/embed`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({url:e})});return t.ok?await t.json():null}var a=new Map;function o(e){let t=a.get(e);if(t)return t;let n=fetch(e).then(t=>{if(!t.ok)throw Error(`GET ${e} → ${t.status}`);return t.json()}).finally(()=>{a.delete(e)});return a.set(e,n),n}function s(e,t,n){return o(`/api/${e}/${t}${n&&Object.keys(n).length?`?`+new URLSearchParams(n).toString():``}`)}async function c(e,t,n){let r=await fetch(`/api/${e}/${t}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n)});return r.status===201?{ok:!0,row:await r.json()}:r.status===422?{ok:!1,issues:(await r.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function l(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(r)});return i.ok?{ok:!0,row:await i.json()}:i.status===422?{ok:!1,issues:(await i.json()).issues}:{ok:!1,issues:[{field:``,code:`server`,path:[]}]}}async function u(e,t,n){return(await fetch(`/api/${e}/${t}/${n}`,{method:`DELETE`})).status===204}async function d(e,t,n,r){let i=await fetch(`/api/${e}/${t}/${n}/activity`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({favorite:r})});return i.ok?(await i.json()).activity??null:null}function f(){return o(`/api/trash`)}async function p(e,t,n){return(await fetch(`/api/trash/${e}/${t}/${n}/restore`,{method:`POST`})).ok}async function m(e,t,n){return(await fetch(`/api/trash/${e}/${t}/${n}`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({confirmed:!0})})).status===204}async function h(e={}){let t=e.refresh?`updates=1&refresh=1`:`updates=1`,n=await fetch(`/api/plugins?${t}`);if(!n.ok)throw Error(`plugins`);return n.json()}async function g(e,t){let n=await fetch(`/api/plugins/${e}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({enabled:t})}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0}:{ok:!1,error:r.error??String(n.status),data:r}}async function _(e){let t=await fetch(`/api/plugins/${e}/update`,{method:`POST`}),n=await t.json().catch(()=>({}));return t.ok?{ok:!0}:{ok:!1,error:n.error??String(t.status),stderr:n.stderr}}async function v(){let e=await fetch(`/api/plugins/update-all`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function y(){let e=await fetch(`/api/system/update`,{method:`POST`}),t=await e.json().catch(()=>({}));return e.ok?{ok:!0,updated:t.updated}:{ok:!1,error:t.error??String(e.status),stderr:t.stderr}}async function b(e={}){let t=await fetch(`/api/runtime${e.refresh?`?refresh=1`:``}`);return t.ok?await t.json():{installedVersion:null,latestVersion:null}}async function x(){let e=await fetch(`/api/system/orchestrator-diagnostics`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`});if(!e.ok)throw Error(`diagnostics`);return await e.json()}async function S(e,t){let n=await fetch(e,{...t,headers:{...t?.body===void 0?{}:{"content-type":`application/json`},...t?.headers}}),r=await n.json().catch(()=>({}));return n.ok?{ok:!0,data:r}:{ok:!1,status:n.status,data:r}}function C(){return o(`/api/auth/status`)}function w(e,t,n){return S(`/api/auth/setup`,{method:`POST`,body:JSON.stringify({login:e,password:t,displayName:n})})}function T(e,t){return S(`/api/auth/login`,{method:`POST`,body:JSON.stringify({login:e,password:t})})}async function E(){await fetch(`/api/auth/logout`,{method:`POST`})}async function D(){let e=await fetch(`/api/auth/me`);return e.ok?e.json():null}function O(e){return S(`/api/auth/me`,{method:`PATCH`,body:JSON.stringify(e)})}function k(e){return S(`/api/auth/users${e?`?q=${encodeURIComponent(e)}`:``}`)}function A(e){return S(`/api/auth/users`,{method:`POST`,body:JSON.stringify(e)})}function j(e,t){return S(`/api/auth/users/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function M(e){return S(`/api/auth/users/${e}`,{method:`DELETE`})}function N(){return S(`/api/auth/tokens`)}function P(e,t){return S(`/api/auth/tokens`,{method:`POST`,body:JSON.stringify({name:e,token:t})})}function F(e){return S(`/api/auth/tokens/${e}`,{method:`DELETE`})}function I(){return S(`/api/auth/links`)}function L(){return S(`/api/auth/links`,{method:`POST`})}function R(e,t){return S(`/api/auth/links/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{method:`DELETE`})}function z(){return S(`/api/oauth/grants`)}function B(e){return S(`/api/oauth/grants/${encodeURIComponent(e)}`,{method:`DELETE`})}export{g as A,n as C,p as D,i as E,l as F,y as I,j as L,R as M,v as N,B as O,_ as P,t as R,k as S,m as T,I as _,C as a,N as b,P as c,M as d,o as f,z as g,r as h,w as i,d as j,F as k,A as l,b as m,E as n,O as o,x as p,D as r,c as s,T as t,u,h as v,L as w,f as x,s as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t}from"./i18n-vendor-T6EnJ_TL.js";import{a as n,l as r,t as i}from"./react-vendor-CzSUaSLk.js";import{a,r as o}from"./api-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{a as t}from"./i18n-vendor-T6EnJ_TL.js";import{a as n,l as r,t as i}from"./react-vendor-CzSUaSLk.js";import{a,r as o}from"./api-COuWgOWV.js";var s=e(t(),1),c=i(),l=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/auth-context.tsx`,u=(0,s.createContext)(null);function d(){let e=(0,s.useContext)(u);if(!e)throw Error(`useAuth() called outside <AuthGate>`);return e}function f({children:e}){let[t,i]=(0,s.useState)({kind:`loading`});return(0,s.useEffect)(()=>{if(t.kind===`ready`)return;let e=!1;return(async()=>{try{let t=await a();if(e)return;if(t.needsSetup)return i({kind:`needsSetup`});let n=await o();if(e)return;i(n?{kind:`ready`,user:n}:{kind:`needsLogin`})}catch{e||i({kind:`error`})}})(),()=>{e=!0}},[r().pathname,t.kind]),(0,s.useEffect)(()=>{if(t.kind!==`ready`)return;let e=()=>{document.visibilityState===`visible`&&o().then(e=>{e||i({kind:`needsLogin`})}).catch(()=>{})};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[t.kind]),t.kind===`loading`?null:t.kind===`needsSetup`?(0,c.jsxDEV)(n,{to:`/setup`,replace:!0},void 0,!1,{fileName:l,lineNumber:66,columnNumber:44},this):t.kind===`needsLogin`?(0,c.jsxDEV)(n,{to:`/login`,replace:!0},void 0,!1,{fileName:l,lineNumber:67,columnNumber:44},this):t.kind===`error`?(0,c.jsxDEV)(`div`,{style:{display:`flex`,minHeight:`100dvh`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:`1rem`},children:[(0,c.jsxDEV)(`p`,{children:`Could not check your session.`},void 0,!1,{fileName:l,lineNumber:80,columnNumber:9},this),(0,c.jsxDEV)(`button`,{onClick:()=>window.location.reload(),children:`Reload`},void 0,!1,{fileName:l,lineNumber:81,columnNumber:9},this)]},void 0,!0,{fileName:l,lineNumber:70,columnNumber:7},this):(0,c.jsxDEV)(u.Provider,{value:t.user,children:e},void 0,!1,{fileName:l,lineNumber:85,columnNumber:10},this)}export{d as n,f as t};
|