@coffer-org/web 2.2.3 → 2.2.5

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.
@@ -0,0 +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){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 i=new Map;function a(e){let t=i.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(()=>{i.delete(e)});return i.set(e,n),n}function o(e,t,n){return a(`/api/${e}/${t}${n&&Object.keys(n).length?`?`+new URLSearchParams(n).toString():``}`)}async function s(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 c(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 l(e,t,n){return(await fetch(`/api/${e}/${t}/${n}`,{method:`DELETE`})).status===204}async function u(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 d(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 f(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 p(){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 m(){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 h(e={}){let t=await fetch(`/api/runtime${e.refresh?`?refresh=1`:``}`);return t.ok?await t.json():{installedVersion:null,latestVersion:null}}async function g(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 _(){return a(`/api/auth/status`)}function v(e,t,n){return g(`/api/auth/setup`,{method:`POST`,body:JSON.stringify({login:e,password:t,displayName:n})})}function y(e,t){return g(`/api/auth/login`,{method:`POST`,body:JSON.stringify({login:e,password:t})})}async function b(){await fetch(`/api/auth/logout`,{method:`POST`})}async function x(){let e=await fetch(`/api/auth/me`);return e.ok?e.json():null}function S(e){return g(`/api/auth/me`,{method:`PATCH`,body:JSON.stringify(e)})}function C(e){return g(`/api/auth/users${e?`?q=${encodeURIComponent(e)}`:``}`)}function w(e){return g(`/api/auth/users`,{method:`POST`,body:JSON.stringify(e)})}function T(e,t){return g(`/api/auth/users/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function E(e){return g(`/api/auth/users/${e}`,{method:`DELETE`})}function D(){return g(`/api/auth/tokens`)}function O(e,t){return g(`/api/auth/tokens`,{method:`POST`,body:JSON.stringify({name:e,token:t})})}function k(e){return g(`/api/auth/tokens/${e}`,{method:`DELETE`})}function A(){return g(`/api/oauth/grants`)}function j(e){return g(`/api/oauth/grants/${encodeURIComponent(e)}`,{method:`DELETE`})}export{d as C,m as D,c as E,T as O,k as S,f as T,D as _,_ as a,r as b,O as c,E as d,a as f,o as g,u as h,v as i,t as k,w as l,A as m,b as n,S as o,h as p,x as r,s,y as t,l as u,C as v,p as w,j as x,n as y};
@@ -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,c as i,t as a}from"./react-vendor-BskHO5hY.js";import{r as o}from"./x-BFRg18Fi.js";import{t as s}from"./button-D-Q6I5Ob.js";import{a as c,r as l}from"./api-C2Azkedd.js";import{a as u,i as d,n as f,r as p,t as m}from"./dialog-DqWXrq6M.js";var h=e(t(),1),g=a(),_=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/confirm.tsx`,v=null;function y(e){let t=typeof e==`string`?{title:e}:e;return v?new Promise(e=>v({...t,resolve:e})):Promise.resolve(!1)}function b(){let{t:e}=n(),t=h.useRef(null),[r,i]=h.useState(null);h.useEffect(()=>(v=e=>{t.current?.resolve(!1),t.current=e,i(e)},()=>{v=null}),[]);function a(e){let n=t.current;t.current=null,i(null),n?.resolve(e)}return(0,g.jsxDEV)(m,{open:r!==null,onOpenChange:e=>{e||a(!1)},children:r&&(0,g.jsxDEV)(f,{className:`md:max-w-md`,hideClose:!0,children:[(0,g.jsxDEV)(d,{children:[(0,g.jsxDEV)(u,{children:r.title},void 0,!1,{fileName:_,lineNumber:69,columnNumber:13},this),r.description&&(0,g.jsxDEV)(p,{className:`whitespace-pre-line`,children:r.description},void 0,!1,{fileName:_,lineNumber:71,columnNumber:15},this)]},void 0,!0,{fileName:_,lineNumber:68,columnNumber:11},this),(0,g.jsxDEV)(`div`,{className:`flex justify-end gap-2 px-5 pb-5 pt-2`,children:[(0,g.jsxDEV)(s,{variant:`outline`,onClick:()=>a(!1),children:r.cancelLabel??e(`actions.cancel`)},void 0,!1,{fileName:_,lineNumber:75,columnNumber:13},this),(0,g.jsxDEV)(s,{autoFocus:!0,variant:r.variant??`default`,onClick:()=>a(!0),children:r.confirmLabel??e(`actions.confirm`)},void 0,!1,{fileName:_,lineNumber:78,columnNumber:13},this)]},void 0,!0,{fileName:_,lineNumber:74,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:67,columnNumber:9},this)},void 0,!1,{fileName:_,lineNumber:60,columnNumber:5},this)}var x=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/card.tsx`,S=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`rounded-xl border border-border bg-card text-card-foreground`,e),...t},void 0,!1,{fileName:x,lineNumber:5,columnNumber:3},void 0));S.displayName=`Card`;var C=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`flex flex-col gap-1.5 p-5`,e),...t},void 0,!1,{fileName:x,lineNumber:10,columnNumber:37},void 0));C.displayName=`CardHeader`;var w=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`font-semibold leading-none text-text`,e),...t},void 0,!1,{fileName:x,lineNumber:16,columnNumber:5},void 0));w.displayName=`CardTitle`;var T=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`text-sm text-muted-foreground`,e),...t},void 0,!1,{fileName:x,lineNumber:23,columnNumber:5},void 0));T.displayName=`CardDescription`;var E=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`p-5 pt-0`,e),...t},void 0,!1,{fileName:x,lineNumber:29,columnNumber:37},void 0));E.displayName=`CardContent`;var D=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`flex items-center p-5 pt-0`,e),...t},void 0,!1,{fileName:x,lineNumber:35,columnNumber:5},void 0));D.displayName=`CardFooter`;var O=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/auth-context.tsx`,k=(0,h.createContext)(null);function A(){let e=(0,h.useContext)(k);if(!e)throw Error(`useAuth() called outside <AuthGate>`);return e}function j({children:e}){let[t,n]=(0,h.useState)({kind:`loading`});return(0,h.useEffect)(()=>{if(t.kind===`ready`)return;let e=!1;return(async()=>{try{let t=await c();if(e)return;if(t.needsSetup)return n({kind:`needsSetup`});let r=await l();if(e)return;n(r?{kind:`ready`,user:r}:{kind:`needsLogin`})}catch{e||n({kind:`error`})}})(),()=>{e=!0}},[i().pathname,t.kind]),(0,h.useEffect)(()=>{if(t.kind!==`ready`)return;let e=()=>{document.visibilityState===`visible`&&l().then(e=>{e||n({kind:`needsLogin`})}).catch(()=>{})};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[t.kind]),t.kind===`loading`?null:t.kind===`needsSetup`?(0,g.jsxDEV)(r,{to:`/setup`,replace:!0},void 0,!1,{fileName:O,lineNumber:61,columnNumber:44},this):t.kind===`needsLogin`?(0,g.jsxDEV)(r,{to:`/login`,replace:!0},void 0,!1,{fileName:O,lineNumber:62,columnNumber:44},this):t.kind===`error`?(0,g.jsxDEV)(`div`,{style:{display:`flex`,minHeight:`100dvh`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:`1rem`},children:[(0,g.jsxDEV)(`p`,{children:`Could not check your session.`},void 0,!1,{fileName:O,lineNumber:66,columnNumber:9},this),(0,g.jsxDEV)(`button`,{onClick:()=>window.location.reload(),children:`Reload`},void 0,!1,{fileName:O,lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:O,lineNumber:65,columnNumber:7},this):(0,g.jsxDEV)(k.Provider,{value:t.user,children:e},void 0,!1,{fileName:O,lineNumber:71,columnNumber:10},this)}export{y as a,b as i,A as n,S as r,j as t};
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,c as i,t as a}from"./react-vendor-BskHO5hY.js";import{r as o}from"./x-BFRg18Fi.js";import{t as s}from"./button-D-Q6I5Ob.js";import{a as c,r as l}from"./api-kzoAEkkj.js";import{a as u,i as d,n as f,r as p,t as m}from"./dialog-DqWXrq6M.js";var h=e(t(),1),g=a(),_=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/confirm.tsx`,v=null;function y(e){let t=typeof e==`string`?{title:e}:e;return v?new Promise(e=>v({...t,resolve:e})):Promise.resolve(!1)}function b(){let{t:e}=n(),t=h.useRef(null),[r,i]=h.useState(null);h.useEffect(()=>(v=e=>{t.current?.resolve(!1),t.current=e,i(e)},()=>{v=null}),[]);function a(e){let n=t.current;t.current=null,i(null),n?.resolve(e)}return(0,g.jsxDEV)(m,{open:r!==null,onOpenChange:e=>{e||a(!1)},children:r&&(0,g.jsxDEV)(f,{className:`md:max-w-md`,hideClose:!0,children:[(0,g.jsxDEV)(d,{children:[(0,g.jsxDEV)(u,{children:r.title},void 0,!1,{fileName:_,lineNumber:69,columnNumber:13},this),r.description&&(0,g.jsxDEV)(p,{className:`whitespace-pre-line`,children:r.description},void 0,!1,{fileName:_,lineNumber:71,columnNumber:15},this)]},void 0,!0,{fileName:_,lineNumber:68,columnNumber:11},this),(0,g.jsxDEV)(`div`,{className:`flex justify-end gap-2 px-5 pb-5 pt-2`,children:[(0,g.jsxDEV)(s,{variant:`outline`,onClick:()=>a(!1),children:r.cancelLabel??e(`actions.cancel`)},void 0,!1,{fileName:_,lineNumber:75,columnNumber:13},this),(0,g.jsxDEV)(s,{autoFocus:!0,variant:r.variant??`default`,onClick:()=>a(!0),children:r.confirmLabel??e(`actions.confirm`)},void 0,!1,{fileName:_,lineNumber:78,columnNumber:13},this)]},void 0,!0,{fileName:_,lineNumber:74,columnNumber:11},this)]},void 0,!0,{fileName:_,lineNumber:67,columnNumber:9},this)},void 0,!1,{fileName:_,lineNumber:60,columnNumber:5},this)}var x=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/components/ui/card.tsx`,S=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`rounded-xl border border-border bg-card text-card-foreground`,e),...t},void 0,!1,{fileName:x,lineNumber:5,columnNumber:3},void 0));S.displayName=`Card`;var C=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`flex flex-col gap-1.5 p-5`,e),...t},void 0,!1,{fileName:x,lineNumber:10,columnNumber:37},void 0));C.displayName=`CardHeader`;var w=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`font-semibold leading-none text-text`,e),...t},void 0,!1,{fileName:x,lineNumber:16,columnNumber:5},void 0));w.displayName=`CardTitle`;var T=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`text-sm text-muted-foreground`,e),...t},void 0,!1,{fileName:x,lineNumber:23,columnNumber:5},void 0));T.displayName=`CardDescription`;var E=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`p-5 pt-0`,e),...t},void 0,!1,{fileName:x,lineNumber:29,columnNumber:37},void 0));E.displayName=`CardContent`;var D=h.forwardRef(({className:e,...t},n)=>(0,g.jsxDEV)(`div`,{ref:n,className:o(`flex items-center p-5 pt-0`,e),...t},void 0,!1,{fileName:x,lineNumber:35,columnNumber:5},void 0));D.displayName=`CardFooter`;var O=`/home/grigorii/Projects/GitHub/grigorii-horos/coffer/packages/web/auth-context.tsx`,k=(0,h.createContext)(null);function A(){let e=(0,h.useContext)(k);if(!e)throw Error(`useAuth() called outside <AuthGate>`);return e}function j({children:e}){let[t,n]=(0,h.useState)({kind:`loading`});return(0,h.useEffect)(()=>{if(t.kind===`ready`)return;let e=!1;return(async()=>{try{let t=await c();if(e)return;if(t.needsSetup)return n({kind:`needsSetup`});let r=await l();if(e)return;n(r?{kind:`ready`,user:r}:{kind:`needsLogin`})}catch{e||n({kind:`error`})}})(),()=>{e=!0}},[i().pathname,t.kind]),(0,h.useEffect)(()=>{if(t.kind!==`ready`)return;let e=()=>{document.visibilityState===`visible`&&l().then(e=>{e||n({kind:`needsLogin`})}).catch(()=>{})};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[t.kind]),t.kind===`loading`?null:t.kind===`needsSetup`?(0,g.jsxDEV)(r,{to:`/setup`,replace:!0},void 0,!1,{fileName:O,lineNumber:61,columnNumber:44},this):t.kind===`needsLogin`?(0,g.jsxDEV)(r,{to:`/login`,replace:!0},void 0,!1,{fileName:O,lineNumber:62,columnNumber:44},this):t.kind===`error`?(0,g.jsxDEV)(`div`,{style:{display:`flex`,minHeight:`100dvh`,alignItems:`center`,justifyContent:`center`,flexDirection:`column`,gap:`1rem`},children:[(0,g.jsxDEV)(`p`,{children:`Could not check your session.`},void 0,!1,{fileName:O,lineNumber:66,columnNumber:9},this),(0,g.jsxDEV)(`button`,{onClick:()=>window.location.reload(),children:`Reload`},void 0,!1,{fileName:O,lineNumber:67,columnNumber:9},this)]},void 0,!0,{fileName:O,lineNumber:65,columnNumber:7},this):(0,g.jsxDEV)(k.Provider,{value:t.user,children:e},void 0,!1,{fileName:O,lineNumber:71,columnNumber:10},this)}export{y as a,b as i,A as n,S as r,j as t};