@axium/server 0.19.5 → 0.19.6
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/build/client/_app/immutable/chunks/kt8q6VLI.js +3 -0
- package/build/client/_app/immutable/chunks/kt8q6VLI.js.br +0 -0
- package/build/client/_app/immutable/chunks/kt8q6VLI.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.cZVcmOlZ.js → app.hl-GLTkf.js} +2 -2
- package/build/client/_app/immutable/entry/app.hl-GLTkf.js.br +0 -0
- package/build/client/_app/immutable/entry/app.hl-GLTkf.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Bi6NhTqw.js +1 -0
- package/build/client/_app/immutable/entry/start.Bi6NhTqw.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Bi6NhTqw.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.4qQ7EzGg.js → 1.B7g6TVJE.js} +1 -1
- package/build/client/_app/immutable/nodes/1.B7g6TVJE.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B7g6TVJE.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{1-CazqKMIm.js → 1-CqK3g6va.js} +2 -2
- package/build/server/chunks/{1-CazqKMIm.js.map → 1-CqK3g6va.js.map} +1 -1
- package/build/server/chunks/{hooks.server-BJMVwsfF.js → hooks.server-C9qpwVTB.js} +2 -2
- package/build/server/chunks/hooks.server-C9qpwVTB.js.map +1 -0
- package/build/server/index.js +2 -2
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +2 -2
- package/build/server/manifest.js.map +1 -1
- package/dist/database.js +4 -2
- package/package.json +1 -1
- package/build/client/_app/immutable/chunks/BCr8Une6.js +0 -3
- package/build/client/_app/immutable/chunks/BCr8Une6.js.br +0 -0
- package/build/client/_app/immutable/chunks/BCr8Une6.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.cZVcmOlZ.js.br +0 -0
- package/build/client/_app/immutable/entry/app.cZVcmOlZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.D8eBR-dC.js +0 -1
- package/build/client/_app/immutable/entry/start.D8eBR-dC.js.br +0 -0
- package/build/client/_app/immutable/entry/start.D8eBR-dC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.4qQ7EzGg.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.4qQ7EzGg.js.gz +0 -0
- package/build/server/chunks/hooks.server-BJMVwsfF.js.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{o as De,s as yt}from"./IgiyYk6u.js";import{D as me,aZ as wt,ax as T,a3 as x,a5 as P}from"./DCUM25og.js";const B=[];function Re(e,t=me){let n=null;const r=new Set;function a(o){if(wt(e,o)&&(e=o,n)){const c=!B.length;for(const l of r)l[1](),B.push(l,e);if(c){for(let l=0;l<B.length;l+=2)B[l][0](B[l+1]);B.length=0}}}function s(o){a(o(e))}function i(o,c=me){const l=[o,c];return r.add(l),r.size===1&&(n=t(a,s)||me),o(e),()=>{r.delete(l),r.size===0&&n&&(n(),n=null)}}return{set:a,update:s,subscribe:i}}class le{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Ie{constructor(t,n){this.status=t,this.location=n}}class Ue extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function vt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function bt(e){return e.split("%25").map(decodeURI).join("%25")}function At(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ye({href:e}){return e.split("#")[0]}function St(e,t,n,r=!1){const a=new URL(e);Object.defineProperty(a,"searchParams",{value:new Proxy(a.searchParams,{get(i,o){if(o==="get"||o==="getAll"||o==="has")return l=>(n(l),i[o](l));t();const c=Reflect.get(i,o);return typeof c=="function"?c.bind(i):c}}),enumerable:!0,configurable:!0});const s=["href","pathname","search","toString","toJSON"];r&&s.push("hash");for(const i of s)Object.defineProperty(a,i,{get(){return t(),e[i]},enumerable:!0,configurable:!0});return a}function kt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}function Et(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n.buffer}const Rt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&H.delete(Le(e)),Rt(e,t));const H=new Map;function It(e,t){const n=Le(e,t),r=document.querySelector(n);if(r?.textContent){let{body:a,...s}=JSON.parse(r.textContent);const i=r.getAttribute("data-ttl");return i&&H.set(n,{body:a,init:s,ttl:1e3*Number(i)}),r.getAttribute("data-b64")!==null&&(a=Et(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function Ut(e,t,n){if(H.size>0){const r=Le(e,n),a=H.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);H.delete(r)}}return window.fetch(t,n)}function Le(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${kt(...a)}"]`}return r}const Lt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Tt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${Pt(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const i=r.split(/\[(.+?)\](?!\])/);return"/"+i.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return we(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return we(String.fromCharCode(...c.slice(2).split("-").map(m=>parseInt(m,16))));const d=Lt.exec(c),[,h,u,f,p]=d;return t.push({name:f,matcher:p,optional:!!h,rest:!!u,chained:u?l===1&&i[0]==="":!1}),u?"(.*?)":h?"([^/]*)?":"([^/]+?)"}return we(c)}).join("")}).join("")}/?$`),params:t}}function xt(e){return!/^\([^)]+\)$/.test(e)}function Pt(e){return e.slice(1).split("/").filter(xt)}function Ct(e,t,n){const r={},a=e.slice(1),s=a.filter(o=>o!==void 0);let i=0;for(let o=0;o<t.length;o+=1){const c=t[o];let l=a[o-i];if(c.chained&&c.rest&&i&&(l=a.slice(o-i,o+1).filter(d=>d).join("/"),i=0),l===void 0){c.rest&&(r[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){r[c.name]=l;const d=t[o+1],h=a[o+1];d&&!d.rest&&d.optional&&h&&c.chained&&(i=0),!d&&!h&&Object.keys(r).length===s.length&&(i=0);continue}if(c.optional&&c.chained){i++;continue}return}if(!i)return r}function we(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ot({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([o,[c,l,d]])=>{const{pattern:h,params:u}=Tt(o),f={id:o,exec:p=>{const m=h.exec(p);if(m)return Ct(m,u,r)},errors:[1,...d||[]].map(p=>e[p]),layouts:[0,...l||[]].map(i),leaf:s(c)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function s(o){const c=o<0;return c&&(o=~o),[c,e[o]]}function i(o){return o===void 0?o:[a.has(o),e[o]]}}function Ye(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Be(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const U=globalThis.__sveltekit_d4wwr4?.base??"",Nt=globalThis.__sveltekit_d4wwr4?.assets??U,jt="1753824845277",ze="sveltekit:snapshot",Je="sveltekit:scroll",Xe="sveltekit:states",$t="sveltekit:pageurl",V="sveltekit:history",z="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},fe=location.origin;function Ze(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function ue(){return{x:pageXOffset,y:pageYOffset}}function F(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Fe={...j,"":j.hover};function Qe(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function et(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Qe(e)}}function Ae(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const o=location.hash.split("#")[1]||"/";r.hash=`#${o}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||de(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),i=r?.origin===fe&&e.hasAttribute("download");return{url:r,external:s,target:a,download:i}}function te(e){let t=null,n=null,r=null,a=null,s=null,i=null,o=e;for(;o&&o!==document.documentElement;)r===null&&(r=F(o,"preload-code")),a===null&&(a=F(o,"preload-data")),t===null&&(t=F(o,"keepfocus")),n===null&&(n=F(o,"noscroll")),s===null&&(s=F(o,"reload")),i===null&&(i=F(o,"replacestate")),o=Qe(o);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Fe[r??"off"],preload_data:Fe[a??"off"],keepfocus:c(t),noscroll:c(n),reload:c(s),replace_state:c(i)}}function Ve(e){const t=Re(e);let n=!0;function r(){n=!0,t.update(i=>i)}function a(i){n=!1,t.set(i)}function s(i){let o;return t.subscribe(c=>{(o===void 0||n&&c!==o)&&i(o=c)})}return{notify:r,set:a,subscribe:s}}const tt={v:()=>{}};function Dt(){const{set:e,subscribe:t}=Re(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Nt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const i=(await a.json()).version!==jt;return i&&(e(!0),tt.v(),clearTimeout(n)),i}catch{return!1}}return{subscribe:t,check:r}}function de(e,t,n){return e.origin!==fe||!e.pathname.startsWith(t)?!0:n?!(e.pathname===t+"/"||e.pathname===t+"/index.html"||e.protocol==="file:"&&e.pathname.replace(/\/[^/]+\.html?$/,"")===t):!1}function Sn(e){}function qe(e){const t=Ft(e),n=new ArrayBuffer(t.length),r=new DataView(n);for(let a=0;a<n.byteLength;a++)r.setUint8(a,t.charCodeAt(a));return n}const Bt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Ft(e){e.length%4===0&&(e=e.replace(/==?$/,""));let t="",n=0,r=0;for(let a=0;a<e.length;a++)n<<=6,n|=Bt.indexOf(e[a]),r+=6,r===24&&(t+=String.fromCharCode((n&16711680)>>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,t+=String.fromCharCode(n)):r===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}const Vt=-1,qt=-2,Mt=-3,Gt=-4,Ht=-5,Kt=-6;function Wt(e,t){if(typeof e=="number")return a(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function a(s,i=!1){if(s===Vt)return;if(s===Mt)return NaN;if(s===Gt)return 1/0;if(s===Ht)return-1/0;if(s===Kt)return-0;if(i)throw new Error("Invalid input");if(s in r)return r[s];const o=n[s];if(!o||typeof o!="object")r[s]=o;else if(Array.isArray(o))if(typeof o[0]=="string"){const c=o[0],l=t?.[c];if(l)return r[s]=l(a(o[1]));switch(c){case"Date":r[s]=new Date(o[1]);break;case"Set":const d=new Set;r[s]=d;for(let f=1;f<o.length;f+=1)d.add(a(o[f]));break;case"Map":const h=new Map;r[s]=h;for(let f=1;f<o.length;f+=2)h.set(a(o[f]),a(o[f+1]));break;case"RegExp":r[s]=new RegExp(o[1],o[2]);break;case"Object":r[s]=Object(o[1]);break;case"BigInt":r[s]=BigInt(o[1]);break;case"null":const u=Object.create(null);r[s]=u;for(let f=1;f<o.length;f+=2)u[o[f]]=a(o[f+1]);break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":{const f=globalThis[c],p=o[1],m=qe(p),_=new f(m);r[s]=_;break}case"ArrayBuffer":{const f=o[1],p=qe(f);r[s]=p;break}default:throw new Error(`Unknown type ${c}`)}}else{const c=new Array(o.length);r[s]=c;for(let l=0;l<o.length;l+=1){const d=o[l];d!==qt&&(c[l]=a(d))}}else{const c={};r[s]=c;for(const l in o){const d=o[l];c[l]=a(d)}}return r[s]}return a(0)}const nt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...nt];const Yt=new Set([...nt]);[...Yt];function zt(e){return e.filter(t=>t!=null)}const Jt="x-sveltekit-invalidated",Xt="x-sveltekit-trailing-slash";function ne(e){return e instanceof le||e instanceof Ue?e.status:500}function Zt(e){return e instanceof Ue?e.text:"Internal Error"}let k,J,ve;const Qt=De.toString().includes("$$")||/function \w+\(\) \{\}/.test(De.toString());Qt?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},J={current:null},ve={current:!1}):(k=new class{#e=T({});get data(){return x(this.#e)}set data(t){P(this.#e,t)}#t=T(null);get form(){return x(this.#t)}set form(t){P(this.#t,t)}#n=T(null);get error(){return x(this.#n)}set error(t){P(this.#n,t)}#r=T({});get params(){return x(this.#r)}set params(t){P(this.#r,t)}#a=T({id:null});get route(){return x(this.#a)}set route(t){P(this.#a,t)}#o=T({});get state(){return x(this.#o)}set state(t){P(this.#o,t)}#s=T(-1);get status(){return x(this.#s)}set status(t){P(this.#s,t)}#i=T(new URL("https://example.com"));get url(){return x(this.#i)}set url(t){P(this.#i,t)}},J=new class{#e=T(null);get current(){return x(this.#e)}set current(t){P(this.#e,t)}},ve=new class{#e=T(!1);get current(){return x(this.#e)}set current(t){P(this.#e,t)}},tt.v=()=>ve.current=!0);function en(e){Object.assign(k,e)}const tn="/__data.json",nn=".html__data.json";function rn(e){return e.endsWith(".html")?e.replace(/\.html$/,nn):e.replace(/\/$/,"")+tn}const{tick:an}=yt,on=new Set(["icon","shortcut icon","apple-touch-icon"]),D=Ye(Je)??{},X=Ye(ze)??{},N={url:Ve({}),page:Ve({}),navigating:Re(null),updated:Dt()};function Te(e){D[e]=ue()}function sn(e,t){let n=e+1;for(;D[n];)delete D[n],n+=1;for(n=t+1;X[n];)delete X[n],n+=1}function M(e){return location.href=e.href,new Promise(()=>{})}async function rt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}function Me(){}let xe,Se,re,C,ke,v;const ae=[],oe=[];let O=null;const ee=new Map,at=new Set,cn=new Set,K=new Set;let w={branch:[],error:null,url:null},Pe=!1,se=!1,Ge=!0,Z=!1,G=!1,ot=!1,Ce=!1,st,A,I,$;const W=new Set;async function In(e,t,n){document.URL!==location.href&&(location.href=location.href),v=e,await e.hooks.init?.(),xe=Ot(e),C=document.documentElement,ke=t,Se=e.nodes[0],re=e.nodes[1],Se(),re(),A=history.state?.[V],I=history.state?.[z],A||(A=I=Date.now(),history.replaceState({...history.state,[V]:A,[z]:I},""));const r=D[A];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await yn(ke,n)):(await Y({type:"enter",url:Ze(v.hash?vn(new URL(location.href)):location.href),replace_state:!0}),a()),mn()}function ln(){ae.length=0,Ce=!1}function it(e){oe.some(t=>t?.snapshot)&&(X[e]=oe.map(t=>t?.snapshot?.capture()))}function ct(e){X[e]?.forEach((t,n)=>{oe[n]?.snapshot?.restore(t)})}function He(){Te(A),Be(Je,D),it(I),Be(ze,X)}async function lt(e,t,n,r){return Y({type:"goto",url:Ze(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Ce=!0),t.invalidate&&t.invalidate.forEach(_n)}})}async function fn(e){if(e.id!==O?.id){const t={};W.add(t),O={id:e.id,token:t,promise:dt({...e,preload:t}).then(n=>(W.delete(t),n.type==="loaded"&&n.state.error&&(O=null),n))}}return O.promise}async function be(e){const t=(await pe(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].map(n=>n?.[1]()))}function ft(e,t,n){w=e.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(k,e.props.page),st=new v.root({target:t,props:{...e.props,stores:N,components:oe},hydrate:n,sync:!1}),ct(I),n){const a={from:null,to:{params:w.params,route:{id:w.route?.id??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};K.forEach(s=>s(a))}se=!0}function ie({url:e,params:t,branch:n,status:r,error:a,route:s,form:i}){let o="never";if(U&&(e.pathname===U||e.pathname===U+"/"))o="always";else for(const f of n)f?.slash!==void 0&&(o=f.slash);e.pathname=vt(e.pathname,o),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:a,route:s},props:{constructors:zt(n).map(f=>f.node.component),page:$e(k)}};i!==void 0&&(c.props.form=i);let l={},d=!k,h=0;for(let f=0;f<Math.max(n.length,w.branch.length);f+=1){const p=n[f],m=w.branch[f];p?.data!==m?.data&&(d=!0),p&&(l={...l,...p.data},d&&(c.props[`data_${h}`]=l),h+=1)}return(!w.url||e.href!==w.url.href||w.error!==a||i!==void 0&&i!==k.form||d)&&(c.props.page={error:a,params:t,route:{id:s?.id??null},state:{},status:r,url:new URL(e),form:i??null,data:d?l:k.data}),c}async function Oe({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let i=null,o=!0;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();if(l.universal?.load){let d=function(...u){for(const f of u){const{href:p}=new URL(f,n);c.dependencies.add(p)}};const h={route:new Proxy(a,{get:(u,f)=>(o&&(c.route=!0),u[f])}),params:new Proxy(r,{get:(u,f)=>(o&&c.params.add(f),u[f])}),data:s?.data??null,url:St(n,()=>{o&&(c.url=!0)},u=>{o&&c.search_params.add(u)},v.hash),async fetch(u,f){u instanceof Request&&(f={body:u.method==="GET"||u.method==="HEAD"?void 0:await u.blob(),cache:u.cache,credentials:u.credentials,headers:[...u.headers].length>0?u?.headers:void 0,integrity:u.integrity,keepalive:u.keepalive,method:u.method,mode:u.mode,redirect:u.redirect,referrer:u.referrer,referrerPolicy:u.referrerPolicy,signal:u.signal,...f});const{resolved:p,promise:m}=ut(u,f,n);return o&&d(p.href),m},setHeaders:()=>{},depends:d,parent(){return o&&(c.parent=!0),t()},untrack(u){o=!1;try{return u()}finally{o=!0}}};i=await l.universal.load.call(null,h)??null}return{node:l,loader:e,server:s,universal:l.universal?.load?{type:"data",data:i,uses:c}:null,data:i??s?.data??null,slash:l.universal?.trailingSlash??s?.slash}}function ut(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=se?Ut(r,a.href,t):It(r,t);return{resolved:a,promise:s}}function Ke(e,t,n,r,a,s){if(Ce)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const i of a.search_params)if(r.has(i))return!0;for(const i of a.params)if(s[i]!==w.params[i])return!0;for(const i of a.dependencies)if(ae.some(o=>o(new URL(i))))return!0;return!1}function Ne(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function un(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(i=>s.includes(i))&&s.every(i=>a.includes(i))&&n.delete(r)}return n}function We({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:$e(k),constructors:[]}}}async function dt({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(O?.id===e)return W.delete(O.token),O.promise;const{errors:i,layouts:o,leaf:c}=a,l=[...o,c];i.forEach(g=>g?.().catch(()=>{})),l.forEach(g=>g?.[1]().catch(()=>{}));let d=null;const h=w.url?e!==ce(w.url):!1,u=w.route?a.id!==w.route.id:!1,f=un(w.url,n);let p=!1;const m=l.map((g,y)=>{const b=w.branch[y],S=!!g?.[0]&&(b?.loader!==g[1]||Ke(p,u,h,f,b.server?.uses,r));return S&&(p=!0),S});if(m.some(Boolean)){try{d=await gt(n,m)}catch(g){const y=await q(g,{url:n,params:r,route:{id:e}});return W.has(s)?We({error:y,url:n,params:r,route:a}):he({status:ne(g),error:y,url:n,route:a})}if(d.type==="redirect")return d}const _=d?.nodes;let R=!1;const E=l.map(async(g,y)=>{if(!g)return;const b=w.branch[y],S=_?.[y];if((!S||S.type==="skip")&&g[1]===b?.loader&&!Ke(R,u,h,f,b.universal?.uses,r))return b;if(R=!0,S?.type==="error")throw S;return Oe({loader:g[1],url:n,params:r,route:a,parent:async()=>{const ge={};for(let _e=0;_e<y;_e+=1)Object.assign(ge,(await E[_e])?.data);return ge},server_data_node:Ne(S===void 0&&g[0]?{type:"skip"}:S??null,g[0]?b?.server:void 0)})});for(const g of E)g.catch(()=>{});const L=[];for(let g=0;g<l.length;g+=1)if(l[g])try{L.push(await E[g])}catch(y){if(y instanceof Ie)return{type:"redirect",location:y.location};if(W.has(s))return We({error:await q(y,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let b=ne(y),S;if(_?.includes(y))b=y.status??b,S=y.error;else if(y instanceof le)S=y.body;else{if(await N.updated.check())return await rt(),await M(n);S=await q(y,{params:r,url:n,route:{id:a.id}})}const Q=await dn(g,L,i);return Q?ie({url:n,params:r,branch:L.slice(0,Q.idx).concat(Q.node),status:b,error:S,route:a}):await pt(n,{id:a.id},S,b)}else L.push(void 0);return ie({url:n,params:r,branch:L,status:200,error:null,route:a,form:t?void 0:null})}async function dn(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function he({status:e,error:t,url:n,route:r}){const a={};let s=null;if(v.server_loads[0]===0)try{const o=await gt(n,[!0]);if(o.type!=="data"||o.nodes[0]&&o.nodes[0].type!=="data")throw 0;s=o.nodes[0]??null}catch{(n.origin!==fe||n.pathname!==location.pathname||Pe)&&await M(n)}try{const o=await Oe({loader:Se,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:Ne(s)}),c={node:await re(),loader:re,universal:null,server:null,data:null};return ie({url:n,params:a,branch:[o,c],status:e,error:t,route:null})}catch(o){if(o instanceof Ie)return lt(new URL(o.location,location.href),{},0);throw o}}async function hn(e){const t=e.href;if(ee.has(t))return ee.get(t);let n;try{const r=(async()=>{let a=await v.hooks.reroute({url:new URL(e),fetch:async(s,i)=>ut(s,i,e).promise})??e;if(typeof a=="string"){const s=new URL(e);v.hash?s.hash=a:s.pathname=a,a=s}return a})();ee.set(t,r),n=await r}catch{ee.delete(t);return}return n}async function pe(e,t){if(e&&!de(e,U,v.hash)){const n=await hn(e);if(!n)return;const r=pn(n);for(const a of xe){const s=a.exec(r);if(s)return{id:ce(e),invalidating:t,route:a,params:At(s),url:e}}}}function pn(e){return bt(v.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function ce(e){return(v.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function ht({url:e,type:t,intent:n,delta:r}){let a=!1;const s=je(w,n,e,t);r!==void 0&&(s.navigation.delta=r);const i={...s.navigation,cancel:()=>{a=!0,s.reject(new Error("navigation cancelled"))}};return Z||at.forEach(o=>o(i)),a?null:s}async function Y({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:i={},redirect_count:o=0,nav_token:c={},accept:l=Me,block:d=Me}){const h=$;$=c;const u=await pe(t,!1),f=e==="enter"?je(w,u,t,e):ht({url:t,type:e,delta:n?.delta,intent:u});if(!f){d(),$===c&&($=h);return}const p=A,m=I;l(),Z=!0,se&&f.navigation.type!=="enter"&&N.navigating.set(J.current=f.navigation);let _=u&&await dt(u);if(!_){if(de(t,U,v.hash))return await M(t);_=await pt(t,{id:null},await q(new Ue(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404)}if(t=u?.url||t,$!==c)return f.reject(new Error("navigation aborted")),!1;if(_.type==="redirect")if(o>=20)_=await he({status:500,error:await q(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}});else return await lt(new URL(_.location,t).href,{},o+1,c),!1;else _.props.page.status>=400&&await N.updated.check()&&(await rt(),await M(t));if(ln(),Te(p),it(m),_.props.page.url.pathname!==t.pathname&&(t.pathname=_.props.page.url.pathname),i=n?n.state:i,!n){const g=s?0:1,y={[V]:A+=g,[z]:I+=g,[Xe]:i};(s?history.replaceState:history.pushState).call(history,y,"",t),s||sn(A,I)}if(O=null,_.props.page.state=i,se){w=_.state,_.props.page&&(_.props.page.url=t);const g=(await Promise.all(Array.from(cn,y=>y(f.navigation)))).filter(y=>typeof y=="function");if(g.length>0){let y=function(){g.forEach(b=>{K.delete(b)})};g.push(y),g.forEach(b=>{K.add(b)})}st.$set(_.props),en(_.props.page),ot=!0}else ft(_,ke,!1);const{activeElement:R}=document;await an();const E=n?n.scroll:a?ue():null;if(Ge){const g=t.hash&&document.getElementById(mt(t));E?scrollTo(E.x,E.y):g?g.scrollIntoView():scrollTo(0,0)}const L=document.activeElement!==R&&document.activeElement!==document.body;!r&&!L&&wn(t),Ge=!0,_.props.page&&Object.assign(k,_.props.page),Z=!1,e==="popstate"&&ct(I),f.fulfil(void 0),K.forEach(g=>g(f.navigation)),N.navigating.set(J.current=null)}async function pt(e,t,n,r){return e.origin===fe&&e.pathname===location.pathname&&!Pe?await he({status:r,error:n,url:e,route:t}):await M(e)}function gn(){let e,t,n;C.addEventListener("mousemove",o=>{const c=o.target;clearTimeout(e),e=setTimeout(()=>{s(c,j.hover)},20)});function r(o){o.defaultPrevented||s(o.composedPath()[0],j.tap)}C.addEventListener("mousedown",r),C.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(o=>{for(const c of o)c.isIntersecting&&(be(new URL(c.target.href)),a.unobserve(c.target))},{threshold:0});async function s(o,c){const l=et(o,C),d=l===t&&c>=n;if(!l||d)return;const{url:h,external:u,download:f}=Ae(l,U,v.hash);if(u||f)return;const p=te(l),m=h&&ce(w.url)===ce(h);if(!(p.reload||m))if(c<=p.preload_data){t=l,n=j.tap;const _=await pe(h,!1);if(!_)return;fn(_)}else c<=p.preload_code&&(t=l,n=c,be(h))}function i(){a.disconnect();for(const o of C.querySelectorAll("a")){const{url:c,external:l,download:d}=Ae(o,U,v.hash);if(l||d)continue;const h=te(o);h.reload||(h.preload_code===j.viewport&&a.observe(o),h.preload_code===j.eager&&be(c))}}K.add(i),i()}function q(e,t){if(e instanceof le)return e.body;const n=ne(e),r=Zt(e);return v.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function _n(e){if(typeof e=="function")ae.push(e);else{const{href:t}=new URL(e,location.href);ae.push(n=>n.href===t)}}function mn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(He(),!Z){const r=je(w,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};at.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&He()}),navigator.connection?.saveData||gn(),C.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=et(t.composedPath()[0],C);if(!n)return;const{url:r,external:a,target:s,download:i}=Ae(n,U,v.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const o=te(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||i)return;const[l,d]=(v.hash?r.hash.replace(/^#/,""):r.href).split("#"),h=l===ye(location);if(a||o.reload&&(!h||!d)){ht({url:r,type:"link"})?Z=!0:t.preventDefault();return}if(d!==void 0&&h){const[,u]=w.url.href.split("#");if(u===d){if(t.preventDefault(),d===""||d==="top"&&n.ownerDocument.getElementById("top")===null)window.scrollTo({top:0});else{const f=n.ownerDocument.getElementById(decodeURIComponent(d));f&&(f.scrollIntoView(),f.focus())}return}if(G=!0,Te(A),e(r),!o.replace_state)return;G=!1}t.preventDefault(),await new Promise(u=>{requestAnimationFrame(()=>{setTimeout(u,0)}),setTimeout(u,100)}),await Y({type:"link",url:r,keepfocus:o.keepfocus,noscroll:o.noscroll,replace_state:o.replace_state??r.href===location.href})}),C.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const i=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(de(i,U,!1))return;const o=t.target,c=te(o);if(c.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(o),d=r?.getAttribute("name");d&&l.append(d,r?.getAttribute("value")??""),i.search=new URLSearchParams(l).toString(),Y({type:"form",url:i,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??i.href===location.href})}),addEventListener("popstate",async t=>{if(!Ee){if(t.state?.[V]){const n=t.state[V];if($={},n===A)return;const r=D[n],a=t.state[Xe]??{},s=new URL(t.state[$t]??location.href),i=t.state[z],o=w.url?ye(location)===ye(w.url):!1;if(i===I&&(ot||o)){a!==k.state&&(k.state=a),e(s),D[A]=ue(),r&&scrollTo(r.x,r.y),A=n;return}const l=n-A;await Y({type:"popstate",url:s,popped:{state:a,scroll:r,delta:l},accept:()=>{A=n,I=i},block:()=>{history.go(-l)},nav_token:$})}else if(!G){const n=new URL(location.href);e(n),v.hash&&location.reload()}}}),addEventListener("hashchange",()=>{G&&(G=!1,history.replaceState({...history.state,[V]:++A,[z]:I},"",location.href))});for(const t of document.querySelectorAll("link"))on.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&N.navigating.set(J.current=null)});function e(t){w.url=k.url=t,N.page.set($e(k)),N.page.notify()}}async function yn(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:i,data:o,form:c}){Pe=!0;const l=new URL(location.href);let d;({params:a={},route:s={id:null}}=await pe(l,!1)||{}),d=xe.find(({id:f})=>f===s.id);let h,u=!0;try{const f=r.map(async(m,_)=>{const R=o[_];return R?.uses&&(R.uses=_t(R.uses)),Oe({loader:v.nodes[m],url:l,params:a,route:s,parent:async()=>{const E={};for(let L=0;L<_;L+=1)Object.assign(E,(await f[L]).data);return E},server_data_node:Ne(R)})}),p=await Promise.all(f);if(d){const m=d.layouts;for(let _=0;_<m.length;_++)m[_]||p.splice(_,0,void 0)}h=ie({url:l,params:a,branch:p,status:t,error:n,form:c,route:d??null})}catch(f){if(f instanceof Ie){await M(new URL(f.location,location.href));return}h=await he({status:ne(f),error:await q(f,{url:l,params:a,route:s}),url:l,route:s}),e.textContent="",u=!1}h.props.page&&(h.props.page.state={}),ft(h,e,u)}async function gt(e,t){const n=new URL(e);n.pathname=rn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(Xt,"1"),n.searchParams.append(Jt,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new le(a.status,s)}return new Promise(async s=>{const i=new Map,o=a.body.getReader(),c=new TextDecoder;function l(h){return Wt(h,{...v.decoders,Promise:u=>new Promise((f,p)=>{i.set(u,{fulfil:f,reject:p})})})}let d="";for(;;){const{done:h,value:u}=await o.read();if(h&&!d)break;for(d+=!u&&d?`
|
|
2
|
+
`:c.decode(u,{stream:!0});;){const f=d.indexOf(`
|
|
3
|
+
`);if(f===-1)break;const p=JSON.parse(d.slice(0,f));if(d=d.slice(f+1),p.type==="redirect")return s(p);if(p.type==="data")p.nodes?.forEach(m=>{m?.type==="data"&&(m.uses=_t(m.uses),m.data=l(m.data))}),s(p);else if(p.type==="chunk"){const{id:m,data:_,error:R}=p,E=i.get(m);i.delete(m),R?E.reject(l(R)):E.fulfil(l(_))}}}})}function _t(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let Ee=!1;function wn(e){const t=document.querySelector("[autofocus]");if(t)t.focus();else{const n=mt(e);if(n&&document.getElementById(n)){const{x:a,y:s}=ue();setTimeout(()=>{const i=history.state;Ee=!0,location.replace(`#${n}`),v.hash&&location.replace(e.hash),history.replaceState(i,"",e.hash),scrollTo(a,s),Ee=!1})}else{const a=document.body,s=a.getAttribute("tabindex");a.tabIndex=-1,a.focus({preventScroll:!0,focusVisible:!1}),s!==null?a.setAttribute("tabindex",s):a.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const a=[];for(let s=0;s<r.rangeCount;s+=1)a.push(r.getRangeAt(s));setTimeout(()=>{if(r.rangeCount===a.length){for(let s=0;s<r.rangeCount;s+=1){const i=a[s],o=r.getRangeAt(s);if(i.commonAncestorContainer!==o.commonAncestorContainer||i.startContainer!==o.startContainer||i.endContainer!==o.endContainer||i.startOffset!==o.startOffset||i.endOffset!==o.endOffset)return}r.removeAllRanges()}})}}}function je(e,t,n,r){let a,s;const i=new Promise((c,l)=>{a=c,s=l});return i.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n},willUnload:!t,type:r,complete:i},fulfil:a,reject:s}}function $e(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function vn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function mt(e){let t;if(v.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{In as a,Sn as l,k as p,N as s};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.fU2Fkia3.js","../chunks/DsnmJJEf.js","../chunks/DCUM25og.js","../chunks/p-F-zYzk.js","../nodes/1.
|
|
2
|
-
import{x as I,y as G,w as U,E as W,R as z,C as J,S as K,T as Y,G as H,W as Q,a5 as x,ad as X,a3 as m,j as Z,ai as $,av as ee,q as te,aw as re,u as ae,ax as k,t as se,p as N,f as w,v as ne,a as b,r as oe,c as L,K as ie,L as ce,ay as O,az as le,J as ue}from"../chunks/DCUM25og.js";import{h as fe,m as de,u as me,s as _e}from"../chunks/BYEtX5Az.js";import"../chunks/DsnmJJEf.js";import{o as he}from"../chunks/IgiyYk6u.js";import{p as A,i as T,b as S}from"../chunks/FWeOBoAM.js";function C(l,e,s){I&&G();var i=l,n,r,t=null,a=null;function _(){r&&(Q(r),r=null),t&&(t.lastChild.remove(),i.before(t),t=null),r=a,a=null}U(()=>{if(n!==(n=e())){var h=Y();if(n){var c=i;h&&(t=document.createDocumentFragment(),t.append(c=z())),a=J(()=>s(c,n))}h?K.add_callback(_):_()}},W),I&&(i=H)}function ve(l){return class extends ge{constructor(e){super({component:l,...e})}}}class ge{#t;#e;constructor(e){var s=new Map,i=(r,t)=>{var a=ee(t,!1,!1);return s.set(r,a),a};const n=new Proxy({...e.props||{},$$events:{}},{get(r,t){return m(s.get(t)??i(t,Reflect.get(r,t)))},has(r,t){return t===X?!0:(m(s.get(t)??i(t,Reflect.get(r,t))),Reflect.has(r,t))},set(r,t,a){return x(s.get(t)??i(t,a),a),Reflect.set(r,t,a)}});this.#e=(e.hydrate?fe:de)(e.component,{target:e.target,anchor:e.anchor,props:n,context:e.context,intro:e.intro??!1,recover:e.recover}),(!e?.props?.$$host||e.sync===!1)&&Z(),this.#t=n.$$events;for(const r of Object.keys(this.#e))r==="$set"||r==="$destroy"||r==="$on"||$(this,r,{get(){return this.#e[r]},set(t){this.#e[r]=t},enumerable:!0});this.#e.$set=r=>{Object.assign(n,r)},this.#e.$destroy=()=>{me(this.#e)}}$set(e){this.#e.$set(e)}$on(e,s){this.#t[e]=this.#t[e]||[];const i=(...n)=>s.call(this,...n);return this.#t[e].push(i),()=>{this.#t[e]=this.#t[e].filter(n=>n!==i)}}$destroy(){this.#e.$destroy()}}const ye="modulepreload",Ee=function(l,e){return new URL(l,e).href},V={},y=function(e,s,i){let n=Promise.resolve();if(s&&s.length>0){let h=function(c){return Promise.all(c.map(d=>Promise.resolve(d).then(v=>({status:"fulfilled",value:v}),v=>({status:"rejected",reason:v}))))};const t=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),_=a?.nonce||a?.getAttribute("nonce");n=h(s.map(c=>{if(c=Ee(c,i),c in V)return;V[c]=!0;const d=c.endsWith(".css"),v=d?'[rel="stylesheet"]':"";if(!!i)for(let o=t.length-1;o>=0;o--){const u=t[o];if(u.href===c&&(!d||u.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${v}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":ye,d||(f.as="script"),f.crossOrigin="",f.href=c,_&&f.setAttribute("nonce",_),document.head.appendChild(f),d)return new Promise((o,u)=>{f.addEventListener("load",o),f.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${c}`)))})}))}function r(t){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=t,window.dispatchEvent(a),!a.defaultPrevented)throw t}return n.then(t=>{for(const a of t||[])a.status==="rejected"&&r(a.reason);return e().catch(r)})},Se={};var be=N('<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>'),pe=N("<!> <!>",1);function Pe(l,e){te(e,!0);let s=A(e,"components",23,()=>[]),i=A(e,"data_0",3,null),n=A(e,"data_1",3,null);re(()=>e.stores.page.set(e.page)),ae(()=>{e.stores,e.page,e.constructors,s(),e.form,i(),n(),e.stores.page.notify()});let r=k(!1),t=k(!1),a=k(null);he(()=>{const o=e.stores.page.subscribe(()=>{m(r)&&(x(t,!0),se().then(()=>{x(a,document.title||"untitled page",!0)}))});return x(r,!0),o});const _=O(()=>e.constructors[1]);var h=pe(),c=w(h);{var d=o=>{var u=L();const p=O(()=>e.constructors[0]);var P=w(u);C(P,()=>m(p),(g,E)=>{S(E(g,{get data(){return i()},get form(){return e.form},get params(){return e.page.params},children:(R,xe)=>{var j=L(),q=w(j);C(q,()=>m(_),(B,F)=>{S(F(B,{get data(){return n()},get form(){return e.form},get params(){return e.page.params}}),M=>s()[1]=M,()=>s()?.[1])}),b(R,j)},$$slots:{default:!0}}),R=>s()[0]=R,()=>s()?.[0])}),b(o,u)},v=o=>{var u=L();const p=O(()=>e.constructors[0]);var P=w(u);C(P,()=>m(p),(g,E)=>{S(E(g,{get data(){return i()},get form(){return e.form},get params(){return e.page.params}}),R=>s()[0]=R,()=>s()?.[0])}),b(o,u)};T(c,o=>{e.constructors[1]?o(d):o(v,!1)})}var D=ne(c,2);{var f=o=>{var u=be(),p=ie(u);{var P=g=>{var E=le();ue(()=>_e(E,m(a))),b(g,E)};T(p,g=>{m(t)&&g(P)})}ce(u),b(o,u)};T(D,o=>{m(r)&&o(f)})}b(l,h),oe()}const Ce=ve(Pe),De=[()=>y(()=>import("../nodes/0.fU2Fkia3.js"),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>y(()=>import("../nodes/1.
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.fU2Fkia3.js","../chunks/DsnmJJEf.js","../chunks/DCUM25og.js","../chunks/p-F-zYzk.js","../nodes/1.B7g6TVJE.js","../chunks/BYEtX5Az.js","../chunks/kt8q6VLI.js","../chunks/IgiyYk6u.js","../nodes/2.Cczp5_pl.js","../nodes/3.BwwptDiR.js","../chunks/FWeOBoAM.js","../chunks/DYZBB-Ix.js","../assets/user.Cbakz6hh.css","../chunks/DY1x3fBx.js","../assets/3.C2J9FN5q.css","../assets/Login.C58W2qGZ.css","../nodes/4.DFZa97F0.js","../nodes/5.CObFvODa.js","../nodes/6.ezb4muQm.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{x as I,y as G,w as U,E as W,R as z,C as J,S as K,T as Y,G as H,W as Q,a5 as x,ad as X,a3 as m,j as Z,ai as $,av as ee,q as te,aw as re,u as ae,ax as k,t as se,p as N,f as w,v as ne,a as b,r as oe,c as L,K as ie,L as ce,ay as O,az as le,J as ue}from"../chunks/DCUM25og.js";import{h as fe,m as de,u as me,s as _e}from"../chunks/BYEtX5Az.js";import"../chunks/DsnmJJEf.js";import{o as he}from"../chunks/IgiyYk6u.js";import{p as A,i as T,b as S}from"../chunks/FWeOBoAM.js";function C(l,e,s){I&&G();var i=l,n,r,t=null,a=null;function _(){r&&(Q(r),r=null),t&&(t.lastChild.remove(),i.before(t),t=null),r=a,a=null}U(()=>{if(n!==(n=e())){var h=Y();if(n){var c=i;h&&(t=document.createDocumentFragment(),t.append(c=z())),a=J(()=>s(c,n))}h?K.add_callback(_):_()}},W),I&&(i=H)}function ve(l){return class extends ge{constructor(e){super({component:l,...e})}}}class ge{#t;#e;constructor(e){var s=new Map,i=(r,t)=>{var a=ee(t,!1,!1);return s.set(r,a),a};const n=new Proxy({...e.props||{},$$events:{}},{get(r,t){return m(s.get(t)??i(t,Reflect.get(r,t)))},has(r,t){return t===X?!0:(m(s.get(t)??i(t,Reflect.get(r,t))),Reflect.has(r,t))},set(r,t,a){return x(s.get(t)??i(t,a),a),Reflect.set(r,t,a)}});this.#e=(e.hydrate?fe:de)(e.component,{target:e.target,anchor:e.anchor,props:n,context:e.context,intro:e.intro??!1,recover:e.recover}),(!e?.props?.$$host||e.sync===!1)&&Z(),this.#t=n.$$events;for(const r of Object.keys(this.#e))r==="$set"||r==="$destroy"||r==="$on"||$(this,r,{get(){return this.#e[r]},set(t){this.#e[r]=t},enumerable:!0});this.#e.$set=r=>{Object.assign(n,r)},this.#e.$destroy=()=>{me(this.#e)}}$set(e){this.#e.$set(e)}$on(e,s){this.#t[e]=this.#t[e]||[];const i=(...n)=>s.call(this,...n);return this.#t[e].push(i),()=>{this.#t[e]=this.#t[e].filter(n=>n!==i)}}$destroy(){this.#e.$destroy()}}const ye="modulepreload",Ee=function(l,e){return new URL(l,e).href},V={},y=function(e,s,i){let n=Promise.resolve();if(s&&s.length>0){let h=function(c){return Promise.all(c.map(d=>Promise.resolve(d).then(v=>({status:"fulfilled",value:v}),v=>({status:"rejected",reason:v}))))};const t=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),_=a?.nonce||a?.getAttribute("nonce");n=h(s.map(c=>{if(c=Ee(c,i),c in V)return;V[c]=!0;const d=c.endsWith(".css"),v=d?'[rel="stylesheet"]':"";if(!!i)for(let o=t.length-1;o>=0;o--){const u=t[o];if(u.href===c&&(!d||u.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${v}`))return;const f=document.createElement("link");if(f.rel=d?"stylesheet":ye,d||(f.as="script"),f.crossOrigin="",f.href=c,_&&f.setAttribute("nonce",_),document.head.appendChild(f),d)return new Promise((o,u)=>{f.addEventListener("load",o),f.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${c}`)))})}))}function r(t){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=t,window.dispatchEvent(a),!a.defaultPrevented)throw t}return n.then(t=>{for(const a of t||[])a.status==="rejected"&&r(a.reason);return e().catch(r)})},Se={};var be=N('<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>'),pe=N("<!> <!>",1);function Pe(l,e){te(e,!0);let s=A(e,"components",23,()=>[]),i=A(e,"data_0",3,null),n=A(e,"data_1",3,null);re(()=>e.stores.page.set(e.page)),ae(()=>{e.stores,e.page,e.constructors,s(),e.form,i(),n(),e.stores.page.notify()});let r=k(!1),t=k(!1),a=k(null);he(()=>{const o=e.stores.page.subscribe(()=>{m(r)&&(x(t,!0),se().then(()=>{x(a,document.title||"untitled page",!0)}))});return x(r,!0),o});const _=O(()=>e.constructors[1]);var h=pe(),c=w(h);{var d=o=>{var u=L();const p=O(()=>e.constructors[0]);var P=w(u);C(P,()=>m(p),(g,E)=>{S(E(g,{get data(){return i()},get form(){return e.form},get params(){return e.page.params},children:(R,xe)=>{var j=L(),q=w(j);C(q,()=>m(_),(B,F)=>{S(F(B,{get data(){return n()},get form(){return e.form},get params(){return e.page.params}}),M=>s()[1]=M,()=>s()?.[1])}),b(R,j)},$$slots:{default:!0}}),R=>s()[0]=R,()=>s()?.[0])}),b(o,u)},v=o=>{var u=L();const p=O(()=>e.constructors[0]);var P=w(u);C(P,()=>m(p),(g,E)=>{S(E(g,{get data(){return i()},get form(){return e.form},get params(){return e.page.params}}),R=>s()[0]=R,()=>s()?.[0])}),b(o,u)};T(c,o=>{e.constructors[1]?o(d):o(v,!1)})}var D=ne(c,2);{var f=o=>{var u=be(),p=ie(u);{var P=g=>{var E=le();ue(()=>_e(E,m(a))),b(g,E)};T(p,g=>{m(t)&&g(P)})}ce(u),b(o,u)};T(D,o=>{m(r)&&o(f)})}b(l,h),oe()}const Ce=ve(Pe),De=[()=>y(()=>import("../nodes/0.fU2Fkia3.js"),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>y(()=>import("../nodes/1.B7g6TVJE.js"),__vite__mapDeps([4,1,2,5,6,7,3]),import.meta.url),()=>y(()=>import("../nodes/2.Cczp5_pl.js"),__vite__mapDeps([8,1,2]),import.meta.url),()=>y(()=>import("../nodes/3.BwwptDiR.js"),__vite__mapDeps([9,1,2,5,10,11,3,12,13,14,15]),import.meta.url),()=>y(()=>import("../nodes/4.DFZa97F0.js"),__vite__mapDeps([16,1,2,5,10,11,3,12,15]),import.meta.url),()=>y(()=>import("../nodes/5.CObFvODa.js"),__vite__mapDeps([17,1,13,2,5,10,11,3,12]),import.meta.url),()=>y(()=>import("../nodes/6.ezb4muQm.js"),__vite__mapDeps([18,1,2,5,10,11,3,12,15]),import.meta.url)],je=[],Ie={"/_axium/default":[2],"/account":[3],"/login":[4],"/logout":[5],"/register":[6]},Re={handleError:({error:l})=>{console.error(l)},reroute:()=>{},transport:{}},we=Object.fromEntries(Object.entries(Re.transport).map(([l,e])=>[l,e.decode])),Ve=!1,Ne=(l,e)=>we[l](e);export{Ne as decode,we as decoders,Ie as dictionary,Ve as hash,Re as hooks,Se as matchers,De as nodes,Ce as root,je as server_loads};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as o,a as r}from"../chunks/kt8q6VLI.js";export{o as load_css,r as start};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../chunks/DsnmJJEf.js";import{q as i,p as h,f as g,J as v,a as d,r as l,K as s,L as a,v as _}from"../chunks/DCUM25og.js";import{s as o}from"../chunks/BYEtX5Az.js";import{s as x,p}from"../chunks/
|
|
1
|
+
import"../chunks/DsnmJJEf.js";import{q as i,p as h,f as g,J as v,a as d,r as l,K as s,L as a,v as _}from"../chunks/DCUM25og.js";import{s as o}from"../chunks/BYEtX5Az.js";import{s as x,p}from"../chunks/kt8q6VLI.js";const $={get error(){return p.error},get status(){return p.status}};x.updated.check;const m=$;var k=h("<h1> </h1> <p> </p>",1);function K(c,n){i(n,!0);var t=k(),r=g(t),u=s(r,!0);a(r);var e=_(r,2),f=s(e,!0);a(e),v(()=>{o(u,m.status),o(f,m.error?.message)}),d(c,t),l()}export{K as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"
|
|
1
|
+
{"version":"1753824845277"}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const index = 1;
|
|
2
2
|
let component_cache;
|
|
3
3
|
const component = async () => component_cache ??= (await import('./error.svelte-DkJRpKga.js')).default;
|
|
4
|
-
const imports = ["_app/immutable/nodes/1.
|
|
4
|
+
const imports = ["_app/immutable/nodes/1.B7g6TVJE.js","_app/immutable/chunks/DsnmJJEf.js","_app/immutable/chunks/DCUM25og.js","_app/immutable/chunks/BYEtX5Az.js","_app/immutable/chunks/kt8q6VLI.js","_app/immutable/chunks/IgiyYk6u.js","_app/immutable/chunks/p-F-zYzk.js"];
|
|
5
5
|
const stylesheets = [];
|
|
6
6
|
const fonts = [];
|
|
7
7
|
|
|
8
8
|
export { component, fonts, imports, index, stylesheets };
|
|
9
|
-
//# sourceMappingURL=1-
|
|
9
|
+
//# sourceMappingURL=1-CqK3g6va.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1-
|
|
1
|
+
{"version":3,"file":"1-CqK3g6va.js","sources":["../../../.svelte-kit/adapter-node/nodes/1.js"],"sourcesContent":["\n\nexport const index = 1;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/fallbacks/error.svelte.js')).default;\nexport const imports = [\"_app/immutable/nodes/1.B7g6TVJE.js\",\"_app/immutable/chunks/DsnmJJEf.js\",\"_app/immutable/chunks/DCUM25og.js\",\"_app/immutable/chunks/BYEtX5Az.js\",\"_app/immutable/chunks/kt8q6VLI.js\",\"_app/immutable/chunks/IgiyYk6u.js\",\"_app/immutable/chunks/p-F-zYzk.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"AAEY,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAAsC,CAAC,EAAE;AACpG,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AACxQ,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
|
|
@@ -564,7 +564,7 @@ if (process.env.AXIUM_CONFIG)
|
|
|
564
564
|
|
|
565
565
|
const requestMethods = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'HEAD', 'PATCH'];
|
|
566
566
|
|
|
567
|
-
var version = "0.19.
|
|
567
|
+
var version = "0.19.6";
|
|
568
568
|
var pkg = {
|
|
569
569
|
version: version};
|
|
570
570
|
|
|
@@ -1373,4 +1373,4 @@ async function handleSvelteKit({ event, resolve, }) {
|
|
|
1373
1373
|
await init();
|
|
1374
1374
|
|
|
1375
1375
|
export { handleSvelteKit as handle };
|
|
1376
|
-
//# sourceMappingURL=hooks.server-
|
|
1376
|
+
//# sourceMappingURL=hooks.server-C9qpwVTB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.server-C9qpwVTB.js","sources":["../../../../node_modules/utilium/dist/objects.js","../../../../node_modules/zod/v4/core/function.js","../../../dist/state.js","../../../dist/io.js","../../../../core/dist/schemas.js","../../../dist/plugins.js","../../../dist/config.js","../../../../core/dist/requests.js","../../../../core/dist/user.js","../../../dist/database.js","../../../dist/auth.js","../../../dist/requests.js","../../../dist/apps.js","../../../dist/routes.js","../../../dist/api/metadata.js","../../../dist/api/passkeys.js","../../../dist/api/register.js","../../../dist/api/session.js","../../../dist/api/users.js","../../../dist/serve.js","../../../dist/sveltekit.js","../../../.svelte-kit/adapter-node/chunks/hooks.server.js"],"sourcesContent":["export function filterObject(object, predicate) {\n const entries = Object.entries(object);\n return Object.fromEntries(entries.filter(([key, value]) => predicate(key, value)));\n}\nexport function pick(object, ...keys) {\n const picked = {};\n for (const key of keys.flat()) {\n picked[key] = object[key];\n }\n return picked;\n}\nexport function omit(object, ...keys) {\n return filterObject(object, key => !keys.flat().includes(key));\n}\nexport function assignWithDefaults(to, from, defaults = to) {\n const keys = new Set([...Object.keys(to), ...Object.keys(from)]);\n for (const key of keys) {\n try {\n to[key] = from[key] ?? defaults[key] ?? to[key];\n }\n catch {\n // Do nothing\n }\n }\n}\n/**\n * Returns whether `value` is not a primitive.\n *\n * This function is only useful for the type check,\n * you can do `Object(v) === v` otherwise.\n */\nexport function isObject(value) {\n return Object(value) === value;\n}\nexport function deepAssign(to, from) {\n const keys = new Set([\n ...Object.keys(to),\n ...Object.keys(from),\n ]);\n for (const key of keys) {\n if (!(key in from))\n continue;\n const value = from[key];\n if (!(key in to)) {\n to[key] = value;\n continue;\n }\n if (!isObject(to[key]) && Object(value) !== value) {\n to[key] = value;\n continue;\n }\n if (isObject(to[key]) && Object(value) === value) {\n deepAssign(to[key], value);\n continue;\n }\n throw new TypeError(!isObject(to[key])\n ? 'Can not deeply assign an object to a primitive'\n : 'Can not deeply assign a primitive to an object');\n }\n return to;\n}\nexport function isJSON(str) {\n try {\n JSON.parse(str);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function resolveConstructors(object) {\n const constructors = [];\n for (let prototype = object; prototype && !['Function', 'Object'].includes(prototype.constructor.name); prototype = Object.getPrototypeOf(prototype)) {\n constructors.push(prototype.constructor.name);\n }\n return constructors;\n}\nexport function* getAllPrototypes(object) {\n for (let prototype = object; prototype; prototype = Object.getPrototypeOf(prototype)) {\n yield prototype;\n }\n}\nexport function map(items) {\n return new Map(Object.entries(items));\n}\nexport function getByString(object, path, separator = /[.[\\]'\"]/) {\n return path\n .split(separator)\n .filter(p => p)\n .reduce((o, p) => o?.[p], object);\n}\nexport function setByString(object, path, value, separator = /[.[\\]'\"]/) {\n return path\n .split(separator)\n .filter(p => p)\n .reduce((o, p, i) => (o[p] = path.split(separator).filter(p => p).length === ++i ? value : o[p] || {}), object);\n}\n/**\n * Binds a this value for all of the functions in an object (not recursive)\n */\nexport function bindFunctions(fns, thisValue) {\n return Object.fromEntries(Object.entries(fns).map(([k, v]) => [k, typeof v == 'function' ? v.bind(thisValue) : v]));\n}\n","import { _array, _tuple, _unknown } from \"./api.js\";\nimport { parse, parseAsync } from \"./parse.js\";\nimport * as schemas from \"./schemas.js\";\nimport { $ZodTuple } from \"./schemas.js\";\nexport class $ZodFunction {\n constructor(def) {\n this._def = def;\n this.def = def;\n }\n implement(func) {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n const impl = ((...args) => {\n const parsedArgs = this._def.input ? parse(this._def.input, args, undefined, { callee: impl }) : args;\n if (!Array.isArray(parsedArgs)) {\n throw new Error(\"Invalid arguments schema: not an array or tuple schema.\");\n }\n const output = func(...parsedArgs);\n return this._def.output ? parse(this._def.output, output, undefined, { callee: impl }) : output;\n });\n return impl;\n }\n implementAsync(func) {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n const impl = (async (...args) => {\n const parsedArgs = this._def.input ? await parseAsync(this._def.input, args, undefined, { callee: impl }) : args;\n if (!Array.isArray(parsedArgs)) {\n throw new Error(\"Invalid arguments schema: not an array or tuple schema.\");\n }\n const output = await func(...parsedArgs);\n return this._def.output ? parseAsync(this._def.output, output, undefined, { callee: impl }) : output;\n });\n return impl;\n }\n input(...args) {\n const F = this.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: this._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: this._def.output,\n });\n }\n output(output) {\n const F = this.constructor;\n return new F({\n type: \"function\",\n input: this._def.input,\n output,\n });\n }\n}\nfunction _function(params) {\n return new $ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input)\n ? _tuple(schemas.$ZodTuple, params?.input)\n : (params?.input ?? _array(schemas.$ZodArray, _unknown(schemas.$ZodUnknown))),\n output: params?.output ?? _unknown(schemas.$ZodUnknown),\n });\n}\nexport { _function as function };\n","import { styleText } from 'node:util';\nconst sym = Symbol.for('Axium:state');\nglobalThis[sym] ||= Object.create({ _errored: false });\nlet _doWarnings = false;\nexport function _duplicateStateWarnings(value) {\n _doWarnings = value;\n}\n/**\n * Prevent duplicate shared state.\n */\nexport function _unique(id, value) {\n const state = globalThis[sym];\n const _err = new Error();\n Error.captureStackTrace(_err, _unique);\n const stack = _err.stack.slice(6);\n if (!(id in state)) {\n state[id] = { value, stack };\n return value;\n }\n if (!state._errored) {\n console.error(styleText('red', 'Duplicate Axium server state! You might have multiple instances of the same module loaded.'));\n state._errored = true;\n }\n _doWarnings && console.warn(styleText('yellow', `Mitigating duplicate state! (${id})\\n${stack}\\nFrom original\\n${state[id].stack}`));\n return state[id].value;\n}\n","import { Logger } from 'logzen';\nimport { exec } from 'node:child_process';\nimport * as fs from 'node:fs';\nimport { homedir } from 'node:os';\nimport { dirname, join, resolve } from 'node:path/posix';\nimport { styleText } from 'node:util';\nimport { _unique } from './state.js';\nexport const systemDir = '/etc/axium';\nexport const userDir = join(homedir(), '.axium');\nexport const dirs = _unique('dirs', [systemDir, userDir]);\nfor (let dir = resolve(process.cwd()); dir !== '/'; dir = dirname(dir)) {\n if (fs.existsSync(join(dir, '.axium')))\n dirs.push(join(dir, '.axium'));\n}\nif (process.env.AXIUM_DIR)\n dirs.push(process.env.AXIUM_DIR);\ntry {\n fs.mkdirSync(systemDir, { recursive: true });\n}\ncatch {\n // Missing permissions\n}\nfs.mkdirSync(userDir, { recursive: true });\nexport const logger = new Logger({\n hideWarningStack: true,\n noGlobalConsole: true,\n});\n/**\n * @internal\n */\nexport const output = {\n constructor: { name: 'Console' },\n error(message) {\n console.error(message.startsWith('\\x1b') ? message : styleText('red', message));\n },\n warn(message) {\n console.warn(message.startsWith('\\x1b') ? message : styleText('yellow', message));\n },\n info(message) {\n console.info(message.startsWith('\\x1b') ? message : styleText('blue', message));\n },\n log(message) {\n console.log(message);\n },\n debug(message) {\n _debugOutput && console.debug(message.startsWith('\\x1b') ? message : styleText('gray', message));\n },\n};\nlogger.attach(output);\nlet timeout = 1000;\nexport function setCommandTimeout(value) {\n timeout = value;\n}\n/**\n * Run a system command with the fancy \"Example... done.\"\n * @internal\n */\nexport async function run(message, command) {\n let stderr;\n try {\n start(message);\n const { promise, resolve, reject } = Promise.withResolvers();\n exec(command, { timeout }, (err, stdout, _stderr) => {\n stderr = _stderr.startsWith('ERROR:') ? _stderr.slice(6).trim() : _stderr;\n if (err)\n reject('[command]');\n else\n resolve(stdout);\n });\n const value = await promise;\n done();\n return value;\n }\n catch (error) {\n throw error == '[command]'\n ? stderr?.slice(0, 100) || 'failed.'\n : typeof error == 'object' && 'message' in error\n ? error.message\n : error;\n }\n}\n/** Yet another convenience function */\nexport function exit(message, code = 1) {\n if (message instanceof Error)\n message = message.message;\n output.error(message);\n process.exit(code);\n}\nexport function handleError(e) {\n if (typeof e == 'number')\n process.exit(e);\n else\n exit(e);\n}\nlet _debugOutput = false;\n/**\n * Enable or disable debug output.\n */\nexport function _setDebugOutput(enabled) {\n _debugOutput = enabled;\n}\nfunction defaultOutput(tag, message = '') {\n switch (tag) {\n case 'debug':\n _debugOutput && output.debug(message);\n break;\n case 'info':\n console.log(message);\n break;\n case 'warn':\n console.warn(styleText('yellow', message));\n break;\n case 'error':\n console.error(styleText('red', message));\n break;\n case 'start':\n process.stdout.write(message + '... ');\n break;\n case 'done':\n console.log('done.');\n break;\n case 'plugin':\n console.log(styleText('whiteBright', 'Running plugin: ' + message));\n }\n}\nlet _taggedOutput = defaultOutput;\nexport function useTaggedOutput(output) {\n _taggedOutput = output;\n}\n// Shortcuts for tagged output\nexport function done() {\n _taggedOutput?.('done');\n}\nexport function start(message) {\n _taggedOutput?.('start', message);\n}\nexport function plugin(name) {\n _taggedOutput?.('plugin', name);\n}\nexport function debug(message) {\n _taggedOutput?.('debug', message);\n}\nexport function info(message) {\n _taggedOutput?.('info', message);\n}\nexport function warn(message) {\n _taggedOutput?.('warn', message);\n}\nexport function error(message) {\n _taggedOutput?.('error', message);\n}\n/** @internal */\nexport const _portMethods = ['node-cap'];\n/** @internal */\nexport const _portActions = ['enable', 'disable'];\n/**\n * This changes if Axium can use restricted ports (like 80 and 443) without root privileges.\n * Use of these ports is needed so the origin doesn't have a port.\n * If the origin has a port, passkeys do not work correctly with some password managers.\n */\nexport async function restrictedPorts(opt) {\n start('Checking for root privileges');\n if (process.getuid?.() != 0)\n throw 'root privileges are needed to change restricted ports.';\n done();\n start('Checking ports method');\n if (!_portMethods.includes(opt.method))\n throw 'invalid';\n done();\n start('Checking ports action');\n if (!_portActions.includes(opt.action))\n throw 'invalid';\n done();\n switch (opt.method) {\n case 'node-cap': {\n const setcap = await run('Finding setcap', 'command -v setcap')\n .then(e => e.trim())\n .catch(() => {\n warn('not in path.');\n start('Checking for /usr/sbin/setcap');\n fs.accessSync('/usr/sbin/setcap', fs.constants.X_OK);\n done();\n return '/usr/sbin/setcap';\n });\n debug('Using setcap at ' + setcap);\n let { node } = opt;\n node ||= await run('Finding node', 'command -v node')\n .then(e => e.trim())\n .catch(() => {\n warn('not in path.');\n start('Checking for /usr/bin/node');\n fs.accessSync('/usr/bin/node', fs.constants.X_OK);\n done();\n return '/usr/bin/node';\n });\n start('Resolving real path for node');\n node = fs.realpathSync(node);\n done();\n debug('Using node at ' + node);\n await run('Setting ports capability', `${setcap} cap_net_bind_service=${opt.action == 'enable' ? '+' : '-'}ep ${node}`);\n break;\n }\n }\n}\n/**\n * This is a factory for handling errors when performing operations.\n * The handler will allow the parent scope to continue if a relation already exists,\n * rather than fatally exiting.\n */\nexport function someWarnings(...allowList) {\n return (error) => {\n error = typeof error == 'object' && 'message' in error ? error.message : error;\n for (const [pattern, message = error] of allowList) {\n if (!pattern.test(error))\n continue;\n warn(message);\n return;\n }\n throw error;\n };\n}\n","import * as z from 'zod';\nexport function zFunction(schema) {\n return z.custom((fn) => schema.implement(fn));\n}\nexport function zAsyncFunction(schema) {\n return z.custom((fn) => schema.implementAsync(fn));\n}\nconst transports = ['ble', 'cable', 'hybrid', 'internal', 'nfc', 'smart-card', 'usb'];\nexport const authenticatorAttachment = z.literal(['platform', 'cross-platform']).optional();\nexport const PasskeyRegistration = z.object({\n id: z.string(),\n rawId: z.string(),\n response: z.object({\n clientDataJSON: z.string(),\n attestationObject: z.string(),\n authenticatorData: z.string().optional(),\n transports: z.array(z.enum(transports)).optional(),\n publicKeyAlgorithm: z.number().optional(),\n publicKey: z.string().optional(),\n }),\n authenticatorAttachment,\n clientExtensionResults: z.record(z.any(), z.any()),\n type: z.literal('public-key'),\n});\n/**\n * POSTed to the `/users/:id/login` endpoint.\n */\nexport const PasskeyAuthenticationResponse = z.object({\n id: z.string(),\n rawId: z.string(),\n response: z.object({\n clientDataJSON: z.string(),\n authenticatorData: z.string(),\n signature: z.string(),\n userHandle: z.string().optional(),\n }),\n authenticatorAttachment,\n clientExtensionResults: z.record(z.any(), z.any()),\n type: z.literal('public-key'),\n});\nexport const APIUserRegistration = z.object({\n name: z.string().min(1).max(100),\n email: z.email(),\n userId: z.uuid(),\n response: PasskeyRegistration,\n});\nexport const PasskeyChangeable = z.object({ name: z.string() }).partial();\nexport const UserAuthOptions = z.object({ type: z.literal(['login', 'action']) });\nexport const LogoutSessions = z.object({\n id: z.array(z.uuid()).optional(),\n confirm_all: z.boolean().optional(),\n});\n","import { zAsyncFunction } from '@axium/core/schemas';\nimport * as fs from 'node:fs';\nimport { resolve } from 'node:path/posix';\nimport { styleText } from 'node:util';\nimport * as z from 'zod';\nimport { output } from './io.js';\nimport { _unique } from './state.js';\nexport const PluginMetadata = z.looseObject({\n name: z.string(),\n version: z.string(),\n description: z.string().optional(),\n routes: z.string().optional(),\n});\nconst hookNames = ['db_init', 'remove', 'db_wipe', 'clean'];\nconst fn = z.custom(data => typeof data === 'function');\nexport const Plugin = PluginMetadata.extend({\n statusText: zAsyncFunction(z.function({ input: [], output: z.string() })),\n hooks: z.partialRecord(z.literal(hookNames), fn).optional(),\n});\nconst kSpecifier = Symbol('specifier');\nexport const plugins = _unique('plugins', new Set());\nexport function resolvePlugin(search) {\n for (const plugin of plugins) {\n if (plugin.name === search)\n return plugin;\n }\n}\nexport function pluginText(plugin) {\n return [\n styleText('whiteBright', plugin.name),\n `Version: ${plugin.version}`,\n `Description: ${plugin.description ?? styleText('dim', '(none)')}`,\n `Hooks: ${Object.keys(plugin.hooks).join(', ') || styleText('dim', '(none)')}`,\n // @todo list the routes when debug output is enabled\n `Routes: ${plugin.routes || styleText('dim', '(none)')}`,\n ].join('\\n');\n}\nexport async function loadPlugin(specifier) {\n try {\n const imported = await import(/* @vite-ignore */ specifier);\n const maybePlugin = 'default' in imported ? imported.default : imported;\n const plugin = Object.assign({ hooks: {}, [kSpecifier]: specifier }, await Plugin.parseAsync(maybePlugin).catch(e => {\n throw z.prettifyError(e);\n }));\n if (plugin.name.startsWith('#') || plugin.name.includes(' ')) {\n throw 'Invalid plugin name. Plugin names can not start with a hash or contain spaces.';\n }\n plugins.add(plugin);\n output.debug(`Loaded plugin: ${plugin.name} ${plugin.version}`);\n }\n catch (e) {\n output.debug(`Failed to load plugin from ${specifier}: ${e ? (e instanceof Error ? e.message : e.toString()) : e}`);\n }\n}\nexport function getSpecifier(plugin) {\n return plugin[kSpecifier];\n}\nexport async function loadPlugins(dir) {\n fs.mkdirSync(dir, { recursive: true });\n const files = fs.readdirSync(dir);\n for (const file of files) {\n const path = resolve(dir, file);\n const stats = fs.statSync(path);\n if (stats.isDirectory() || !['.js', '.mjs'].some(ext => path.endsWith(ext)))\n return;\n await loadPlugin(path);\n }\n}\n","import { levelText } from 'logzen';\nimport { existsSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path/posix';\nimport { deepAssign, omit } from 'utilium';\nimport * as z from 'zod';\nimport { _setDebugOutput, dirs, logger, output } from './io.js';\nimport { loadPlugin } from './plugins.js';\nimport { _duplicateStateWarnings, _unique } from './state.js';\nexport const ConfigSchema = z\n .looseObject({\n allow_new_users: z.boolean(),\n api: z\n .looseObject({\n disable_metadata: z.boolean(),\n cookie_auth: z.boolean(),\n })\n .partial(),\n apps: z\n .looseObject({\n disabled: z.array(z.string()),\n })\n .partial(),\n auth: z\n .looseObject({\n origin: z.string(),\n /** In minutes */\n passkey_probation: z.number(),\n rp_id: z.string(),\n rp_name: z.string(),\n secure_cookies: z.boolean(),\n /** In minutes */\n verification_timeout: z.number(),\n /** Whether users can verify emails */\n email_verification: z.boolean(),\n })\n .partial(),\n db: z\n .looseObject({\n host: z.string(),\n port: z.number(),\n password: z.string(),\n user: z.string(),\n database: z.string(),\n })\n .partial(),\n debug: z.boolean(),\n log: z\n .looseObject({\n level: z.enum(levelText),\n console: z.boolean(),\n })\n .partial(),\n show_duplicate_state: z.boolean(),\n web: z\n .looseObject({\n assets: z.string(),\n build: z.string(),\n disable_cache: z.boolean(),\n port: z.number().min(1).max(65535),\n prefix: z.string(),\n routes: z.string(),\n secure: z.boolean(),\n ssl_key: z.string(),\n ssl_cert: z.string(),\n template: z.string(),\n })\n .partial(),\n})\n .partial();\nexport const configFiles = _unique('configFiles', new Map());\nexport function plainConfig() {\n return omit(config, Object.keys(configShortcuts));\n}\nconst configShortcuts = {\n findPath: findConfigPaths,\n load: loadConfig,\n loadDefaults: loadDefaultConfigs,\n plain: plainConfig,\n save: saveConfig,\n saveTo: saveConfigTo,\n set: setConfig,\n files: configFiles,\n};\nexport const config = _unique('config', {\n ...configShortcuts,\n allow_new_users: true,\n api: {\n disable_metadata: false,\n cookie_auth: true,\n },\n apps: {\n disabled: [],\n },\n auth: {\n origin: 'https://test.localhost',\n passkey_probation: 60,\n rp_id: 'test.localhost',\n rp_name: 'Axium',\n secure_cookies: true,\n verification_timeout: 60,\n email_verification: false,\n },\n db: {\n database: process.env.PGDATABASE || 'axium',\n host: process.env.PGHOST || 'localhost',\n password: process.env.PGPASSWORD || '',\n port: process.env.PGPORT && Number.isSafeInteger(parseInt(process.env.PGPORT)) ? parseInt(process.env.PGPORT) : 5432,\n user: process.env.PGUSER || 'axium',\n },\n debug: false,\n log: {\n console: true,\n level: 'info',\n },\n show_duplicate_state: false,\n web: {\n assets: '',\n build: '../build/handler.js',\n disable_cache: false,\n port: 443,\n prefix: '',\n routes: 'routes',\n secure: true,\n ssl_key: resolve(dirs[0], 'ssl_key.pem'),\n ssl_cert: resolve(dirs[0], 'ssl_cert.pem'),\n template: join(import.meta.dirname, '../web/template.html'),\n },\n});\nexport default config;\n// config from file\nexport const FileSchema = z\n .looseObject({\n ...ConfigSchema.shape,\n include: z.array(z.string()),\n plugins: z.array(z.string()),\n})\n .partial();\nexport function addConfigDefaults(other, _target = config) {\n for (const [key, value] of Object.entries(other)) {\n if (!(key in _target) || _target[key] === null || _target[key] === undefined || Number.isNaN(_target[key])) {\n _target[key] = value;\n continue;\n }\n if (typeof value == 'object' && value != null && typeof _target[key] == 'object') {\n addConfigDefaults(value, _target[key]);\n }\n }\n}\n/**\n * Update the current config\n */\nexport function setConfig(other) {\n deepAssign(config, other);\n logger.detach(output);\n if (config.log.console)\n logger.attach(output, { output: config.log.level });\n _setDebugOutput(config.debug);\n _duplicateStateWarnings(config.show_duplicate_state);\n}\n/**\n * Load the config from the provided path\n */\nexport async function loadConfig(path, options = {}) {\n if (configFiles.has(path))\n return;\n let json;\n try {\n json = JSON.parse(readFileSync(path, 'utf8'));\n }\n catch (e) {\n if (!options.optional)\n throw e;\n output.debug(`Skipping config at ${path} (${e.message})`);\n return;\n }\n let file;\n try {\n file = FileSchema.parse(json);\n }\n catch (e) {\n if (!options.loose)\n throw e;\n output.debug(`Loading invalid config from ${path} (${e.message})`);\n file = json;\n }\n configFiles.set(path, file);\n setConfig(file);\n output.debug('Loaded config: ' + path);\n for (const include of file.include ?? [])\n await loadConfig(join(dirname(path), include), { optional: true });\n for (const plugin of file.plugins ?? [])\n await loadPlugin(plugin.startsWith('.') ? resolve(dirname(path), plugin) : plugin);\n}\nexport async function loadDefaultConfigs() {\n for (const path of findConfigPaths()) {\n if (!existsSync(path)) {\n try {\n writeFileSync(path, '{}');\n }\n catch {\n continue;\n }\n }\n await loadConfig(path, { optional: true });\n }\n}\n/**\n * Update the current config and write the updated config to the appropriate file\n */\nexport function saveConfig(changed, global = false) {\n saveConfigTo(findConfigPaths().at(global ? 0 : -1), changed);\n}\n/**\n * Update the current config and write the updated config to the provided path\n */\nexport function saveConfigTo(path, changed) {\n setConfig(changed);\n const config = configFiles.get(path) ?? {};\n Object.assign(config, { ...changed, db: { ...config.db, ...changed.db } });\n output.debug(`Wrote config to ${path}`);\n writeFileSync(path, JSON.stringify(config));\n}\n/**\n * Find the path to the config file(s)\n * This array should roughly be in the order of most global to most local.\n */\nexport function findConfigPaths() {\n const paths = dirs.map(dir => join(dir, 'config.json'));\n if (process.env.AXIUM_CONFIG)\n paths.push(process.env.AXIUM_CONFIG);\n return paths;\n}\nif (process.env.AXIUM_CONFIG)\n await loadConfig(process.env.AXIUM_CONFIG);\n","export const requestMethods = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'HEAD', 'PATCH'];\n","import * as z from 'zod';\nexport const User = z.object({\n id: z.uuid(),\n name: z.string().min(1, 'Name is required').max(255, 'Name is too long'),\n email: z.email(),\n emailVerified: z.date().nullable().optional(),\n image: z.url().nullable().optional(),\n preferences: z.record(z.string(), z.any()),\n roles: z.array(z.string()),\n registeredAt: z.date(),\n});\nexport const userPublicFields = ['id', 'image', 'name', 'registeredAt', 'roles'];\nexport const userProtectedFields = ['email', 'emailVerified', 'preferences'];\nexport const UserChangeable = User.pick({\n name: true,\n email: true,\n image: true,\n preferences: true,\n}).partial();\nexport function getUserImage(user) {\n if (user.image)\n return user.image;\n user.name ??= '\\0';\n let color = user.name.charCodeAt(0);\n for (let i = 1; i < user.name.length; i++) {\n color *= user.name.charCodeAt(i);\n }\n color &= 0xbfbfbf;\n const r = (color >> 16) & 0xff;\n const g = (color >> 8) & 0xff;\n const b = color & 0xff;\n return `data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 50 50\" style=\"background-color:rgb(${r},${g},${b});display:flex;align-items:center;justify-content:center;\">\n\t\t<text x=\"23\" y=\"28\" style=\"font-family:sans-serif;font-weight:bold;\" fill=\"white\">${user.name.replaceAll(/\\W/g, '')[0]}</text>\n\t</svg>`.replaceAll(/[\\t\\n]/g, '');\n}\n","var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n};\nvar __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {\n return function (env) {\n function fail(e) {\n env.error = env.hasError ? new SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n };\n})(typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n});\nimport { Kysely, PostgresDialect, sql } from 'kysely';\nimport { jsonObjectFrom } from 'kysely/helpers/postgres';\nimport { randomBytes } from 'node:crypto';\nimport { readFileSync, writeFileSync } from 'node:fs';\nimport pg from 'pg';\nimport config from './config.js';\nimport * as io from './io.js';\nimport { plugins } from './plugins.js';\nconst sym = Symbol.for('Axium:database');\nexport let database;\nexport function connect() {\n if (database)\n return database;\n if (globalThis[sym])\n return (database = globalThis[sym]);\n database = new Kysely({\n dialect: new PostgresDialect({ pool: new pg.Pool(config.db) }),\n });\n globalThis[sym] = database;\n io.debug('Connected to database!');\n return database;\n}\n// Helpers\nexport async function count(...tables) {\n return await database\n .selectNoFrom(eb => tables.map(t => eb\n .selectFrom(t)\n .select(database.fn.countAll())\n .as(t)))\n .$castTo()\n .executeTakeFirstOrThrow();\n}\n/**\n * Select the user with the id from the userId column of a table, placing it in the `user` property.\n */\nexport function userFromId(builder) {\n const eb = builder;\n return jsonObjectFrom(eb.selectFrom('users').selectAll().whereRef('id', '=', 'userId'))\n .$notNull()\n .$castTo()\n .as('user');\n}\nexport async function statText() {\n try {\n const stats = await count('users', 'passkeys', 'sessions');\n return `${stats.users} users, ${stats.passkeys} passkeys, ${stats.sessions} sessions`;\n }\n catch (error) {\n throw typeof error == 'object' && 'message' in error ? error.message : error;\n }\n}\nexport function shouldRecreate(opt) {\n if (opt.skip) {\n io.warn('already exists. (skipped)');\n return true;\n }\n if (opt.force) {\n io.warn('already exists. (re-creating)');\n return false;\n }\n io.warn('already exists. Use --skip to skip or --force to re-create.');\n throw 2;\n}\nexport async function getHBA(opt) {\n const hbaShowResult = await io.run('Finding pg_hba.conf', `sudo -u postgres psql -c \"SHOW hba_file\"`);\n io.start('Resolving pg_hba.conf path');\n const hbaPath = hbaShowResult.match(/^\\s*(.+\\.conf)\\s*$/m)?.[1]?.trim();\n if (!hbaPath) {\n throw 'failed. You will need to add password-based auth for the axium user manually.';\n }\n io.done();\n io.debug(`Found pg_hba.conf at ${hbaPath}`);\n io.start('Reading HBA configuration');\n const content = readFileSync(hbaPath, 'utf-8');\n io.done();\n const writeBack = (newContent) => {\n io.start('Writing HBA configuration');\n writeFileSync(hbaPath, newContent);\n io.done();\n };\n return [content, writeBack];\n}\nconst pgHba = `\nlocal axium axium md5\nhost axium axium 127.0.0.1/32 md5\nhost axium axium ::1/128 md5\n`;\nconst _sql = (command, message) => io.run(message, `sudo -u postgres psql -c \"${command}\"`);\n/** Shortcut to output a warning if an error is thrown because relation already exists */\nexport const warnExists = io.someWarnings([/\\w+ \"[\\w.]+\" already exists/, 'already exists.']);\nconst throwUnlessRows = (text) => {\n if (text.includes('(0 rows)'))\n throw 'missing.';\n return text;\n};\nexport async function createIndex(table, column, mod) {\n io.start(`Creating index for ${table}.${column}`);\n let query = database.schema.createIndex(`${table}_${column}_index`).on(table).column(column);\n if (mod)\n query = mod(query);\n await query.execute().then(io.done).catch(warnExists);\n}\nexport async function init(opt) {\n const env_1 = { stack: [], error: void 0, hasError: false };\n try {\n if (!config.db.password) {\n config.save({ db: { password: randomBytes(32).toString('base64') } }, true);\n io.debug('Generated password and wrote to global config');\n }\n await io.run('Checking for sudo', 'which sudo');\n await io.run('Checking for psql', 'which psql');\n await _sql('CREATE DATABASE axium', 'Creating database').catch(async (error) => {\n if (error != 'database \"axium\" already exists')\n throw error;\n if (shouldRecreate(opt))\n return;\n await _sql('DROP DATABASE axium', 'Dropping database');\n await _sql('CREATE DATABASE axium', 'Re-creating database');\n });\n const createQuery = `CREATE USER axium WITH ENCRYPTED PASSWORD '${config.db.password}' LOGIN`;\n await _sql(createQuery, 'Creating user').catch(async (error) => {\n if (error != 'role \"axium\" already exists')\n throw error;\n if (shouldRecreate(opt))\n return;\n await _sql('REVOKE ALL PRIVILEGES ON SCHEMA public FROM axium', 'Revoking schema privileges');\n await _sql('DROP USER axium', 'Dropping user');\n await _sql(createQuery, 'Re-creating user');\n });\n await _sql('GRANT ALL PRIVILEGES ON DATABASE axium TO axium', 'Granting database privileges');\n await _sql('GRANT ALL PRIVILEGES ON SCHEMA public TO axium', 'Granting schema privileges');\n await _sql('ALTER DATABASE axium OWNER TO axium', 'Setting database owner');\n await getHBA(opt)\n .then(([content, writeBack]) => {\n io.start('Checking for Axium HBA configuration');\n if (content.includes(pgHba))\n throw 'already exists.';\n io.done();\n io.start('Adding Axium HBA configuration');\n const newContent = content.replace(/^local\\s+all\\s+all.*$/m, `$&\\n${pgHba}`);\n io.done();\n writeBack(newContent);\n })\n .catch(io.warn);\n await _sql('SELECT pg_reload_conf()', 'Reloading configuration');\n io.start('Connecting to database');\n const _ = __addDisposableResource(env_1, connect(), true);\n io.done();\n function maybeCheck(table) {\n return (e) => {\n warnExists(e);\n if (opt.check)\n return checkTableTypes(table, expectedTypes[table], opt);\n };\n }\n io.start('Creating table users');\n await database.schema\n .createTable('users')\n .addColumn('id', 'uuid', col => col.primaryKey().defaultTo(sql `gen_random_uuid()`))\n .addColumn('name', 'text')\n .addColumn('email', 'text', col => col.unique().notNull())\n .addColumn('emailVerified', 'timestamptz')\n .addColumn('image', 'text')\n .addColumn('isAdmin', 'boolean', col => col.notNull().defaultTo(false))\n .addColumn('roles', sql `text[]`, col => col.notNull().defaultTo(sql `'{}'::text[]`))\n .addColumn('tags', sql `text[]`, col => col.notNull().defaultTo(sql `'{}'::text[]`))\n .addColumn('preferences', 'jsonb', col => col.notNull().defaultTo('{}'))\n .addColumn('registeredAt', 'timestamptz', col => col.notNull().defaultTo(sql `now()`))\n .execute()\n .then(io.done)\n .catch(maybeCheck('users'));\n io.start('Creating table sessions');\n await database.schema\n .createTable('sessions')\n .addColumn('id', 'uuid', col => col.primaryKey().defaultTo(sql `gen_random_uuid()`))\n .addColumn('userId', 'uuid', col => col.references('users.id').onDelete('cascade').notNull())\n .addColumn('token', 'text', col => col.notNull().unique())\n .addColumn('created', 'timestamptz', col => col.notNull())\n .addColumn('expires', 'timestamptz', col => col.notNull())\n .addColumn('elevated', 'boolean', col => col.notNull())\n .execute()\n .then(io.done)\n .catch(maybeCheck('sessions'));\n await createIndex('sessions', 'id');\n io.start('Creating table verifications');\n await database.schema\n .createTable('verifications')\n .addColumn('userId', 'uuid', col => col.references('users.id').onDelete('cascade').notNull())\n .addColumn('token', 'text', col => col.notNull().unique())\n .addColumn('expires', 'timestamptz', col => col.notNull())\n .addColumn('role', 'text', col => col.notNull())\n .execute()\n .then(io.done)\n .catch(maybeCheck('verifications'));\n io.start('Creating table passkeys');\n await database.schema\n .createTable('passkeys')\n .addColumn('id', 'text', col => col.primaryKey().notNull())\n .addColumn('name', 'text')\n .addColumn('createdAt', 'timestamptz', col => col.notNull().defaultTo(sql `now()`))\n .addColumn('userId', 'uuid', col => col.notNull().references('users.id').onDelete('cascade').notNull())\n .addColumn('publicKey', 'bytea', col => col.notNull())\n .addColumn('counter', 'integer', col => col.notNull())\n .addColumn('deviceType', 'text', col => col.notNull())\n .addColumn('backedUp', 'boolean', col => col.notNull())\n .addColumn('transports', sql `text[]`)\n .execute()\n .then(io.done)\n .catch(maybeCheck('passkeys'));\n await createIndex('passkeys', 'userId');\n io.start('Creating schema acl');\n await database.schema.createSchema('acl').execute().then(io.done).catch(warnExists);\n for (const plugin of plugins) {\n if (!plugin.hooks.db_init)\n continue;\n io.plugin(plugin.name);\n await plugin.hooks.db_init(opt);\n }\n }\n catch (e_1) {\n env_1.error = e_1;\n env_1.hasError = true;\n }\n finally {\n const result_1 = __disposeResources(env_1);\n if (result_1)\n await result_1;\n }\n}\nexport const expectedTypes = {\n users: {\n email: { type: 'text', required: true },\n emailVerified: { type: 'timestamptz' },\n id: { type: 'uuid', required: true, hasDefault: true },\n image: { type: 'text' },\n isAdmin: { type: 'bool', required: true, hasDefault: true },\n name: { type: 'text' },\n preferences: { type: 'jsonb', required: true, hasDefault: true },\n registeredAt: { type: 'timestamptz', required: true, hasDefault: true },\n roles: { type: '_text', required: true, hasDefault: true },\n tags: { type: '_text', required: true, hasDefault: true },\n },\n verifications: {\n userId: { type: 'uuid', required: true },\n token: { type: 'text', required: true },\n expires: { type: 'timestamptz', required: true },\n role: { type: 'text', required: true },\n },\n passkeys: {\n id: { type: 'text', required: true },\n name: { type: 'text' },\n createdAt: { type: 'timestamptz', required: true, hasDefault: true },\n userId: { type: 'uuid', required: true },\n publicKey: { type: 'bytea', required: true },\n counter: { type: 'int4', required: true },\n deviceType: { type: 'text', required: true },\n backedUp: { type: 'bool', required: true },\n transports: { type: '_text' },\n },\n sessions: {\n id: { type: 'uuid', required: true, hasDefault: true },\n userId: { type: 'uuid', required: true },\n created: { type: 'timestamptz', required: true },\n token: { type: 'text', required: true },\n expires: { type: 'timestamptz', required: true },\n elevated: { type: 'bool', required: true },\n },\n};\n/**\n * Checks that a table has the expected column types, nullability, and default values.\n */\nexport async function checkTableTypes(tableName, types, opt) {\n io.start(`Checking for table ${tableName}`);\n const dbTables = opt._metadata || (await database.introspection.getTables());\n const table = dbTables.find(t => (t.schema == 'public' ? t.name : `${t.schema}.${t.name}`) === tableName);\n if (!table)\n throw 'missing.';\n io.done();\n const columns = Object.fromEntries(table.columns.map(c => [c.name, c]));\n for (const [key, { type, required = false, hasDefault = false }] of Object.entries(types)) {\n io.start(`Checking column ${tableName}.${key}`);\n const col = columns[key];\n if (!col)\n throw 'missing.';\n try {\n if (col.dataType != type)\n throw `incorrect type \"${col.dataType}\", expected ${type}`;\n if (col.isNullable != !required)\n throw required ? 'nullable' : 'not nullable';\n if (col.hasDefaultValue != hasDefault)\n throw hasDefault ? 'missing default' : 'has default';\n io.done();\n }\n catch (e) {\n if (opt.strict)\n throw e;\n io.warn(e);\n }\n delete columns[key];\n }\n if (!opt.extra)\n return;\n io.start('Checking for extra columns in ' + tableName);\n const unchecked = Object.keys(columns)\n .map(c => `${tableName}.${c}`)\n .join(', ');\n if (!unchecked.length)\n io.done();\n else if (opt.strict)\n throw unchecked;\n else\n io.warn(unchecked);\n}\nexport async function check(opt) {\n const env_2 = { stack: [], error: void 0, hasError: false };\n try {\n await io.run('Checking for sudo', 'which sudo');\n await io.run('Checking for psql', 'which psql');\n await _sql(`SELECT 1 FROM pg_database WHERE datname = 'axium'`, 'Checking for database').then(throwUnlessRows);\n await _sql(`SELECT 1 FROM pg_roles WHERE rolname = 'axium'`, 'Checking for user').then(throwUnlessRows);\n io.start('Connecting to database');\n const _ = __addDisposableResource(env_2, connect(), true);\n io.done();\n io.start('Getting table metadata');\n opt._metadata = await database.introspection.getTables();\n const tables = Object.fromEntries(opt._metadata.map(t => [t.name, t]));\n io.done();\n for (const table of Object.keys(expectedTypes)) {\n await checkTableTypes(table, expectedTypes[table], opt);\n delete tables[table];\n }\n io.start('Checking for extra tables');\n const unchecked = Object.keys(tables).join(', ');\n if (!unchecked.length)\n io.done();\n else if (opt.strict)\n throw unchecked;\n else\n io.warn(unchecked);\n }\n catch (e_2) {\n env_2.error = e_2;\n env_2.hasError = true;\n }\n finally {\n const result_2 = __disposeResources(env_2);\n if (result_2)\n await result_2;\n }\n}\nexport async function clean(opt) {\n const now = new Date();\n io.start('Removing expired sessions');\n await database.deleteFrom('sessions').where('sessions.expires', '<', now).execute().then(io.done);\n io.start('Removing expired verifications');\n await database.deleteFrom('verifications').where('verifications.expires', '<', now).execute().then(io.done);\n for (const plugin of plugins) {\n if (!plugin.hooks.clean)\n continue;\n io.plugin(plugin.name);\n await plugin.hooks.clean(opt);\n }\n}\n/**\n * Completely remove Axium from the database.\n */\nexport async function uninstall(opt) {\n for (const plugin of plugins) {\n if (!plugin.hooks.remove)\n continue;\n io.plugin(plugin.name);\n await plugin.hooks.remove(opt);\n }\n await _sql('DROP DATABASE axium', 'Dropping database');\n await _sql('REVOKE ALL PRIVILEGES ON SCHEMA public FROM axium', 'Revoking schema privileges');\n await _sql('DROP USER axium', 'Dropping user');\n await getHBA(opt)\n .then(([content, writeBack]) => {\n io.start('Checking for Axium HBA configuration');\n if (!content.includes(pgHba))\n throw 'missing.';\n io.done();\n io.start('Removing Axium HBA configuration');\n const newContent = content.replace(pgHba, '');\n io.done();\n writeBack(newContent);\n })\n .catch(io.warn);\n}\n/**\n * Removes all data from tables.\n */\nexport async function wipe(opt) {\n for (const plugin of plugins) {\n if (!plugin.hooks.db_wipe)\n continue;\n io.plugin(plugin.name);\n await plugin.hooks.db_wipe(opt);\n }\n for (const table of ['users', 'passkeys', 'sessions', 'verifications']) {\n io.start(`Wiping ${table}`);\n await database.deleteFrom(table).execute();\n io.done();\n }\n for (const table of await database.introspection.getTables()) {\n if (!table.name.startsWith('acl.'))\n continue;\n const name = table.name;\n io.debug(`Wiping ${name}`);\n await database.deleteFrom(name).execute();\n }\n}\nexport async function rotatePassword() {\n io.start('Generating new password');\n const password = randomBytes(32).toString('base64');\n io.done();\n io.start('Updating global config');\n config.save({ db: { password } }, true);\n io.done();\n await _sql(`ALTER USER axium WITH ENCRYPTED PASSWORD '${password}'`, 'Updating database user password');\n}\n","import { randomBytes, randomUUID } from 'node:crypto';\nimport { omit } from 'utilium';\nimport * as acl from './acl.js';\nimport { database as db, userFromId } from './database.js';\nimport { error, getToken, withError } from './requests.js';\nexport async function getUser(id) {\n return await db.selectFrom('users').selectAll().where('id', '=', id).executeTakeFirstOrThrow();\n}\nexport async function updateUser({ id, ...user }) {\n const query = db.updateTable('users').set(user).where('id', '=', id);\n return await query.returningAll().executeTakeFirstOrThrow();\n}\nconst in30days = () => new Date(Date.now() + 2592000000);\nconst in10minutes = () => new Date(Date.now() + 600000);\nexport async function createSession(userId, elevated = false) {\n const session = {\n id: randomUUID(),\n userId,\n token: randomBytes(64).toString('base64'),\n expires: elevated ? in10minutes() : in30days(),\n elevated,\n created: new Date(),\n };\n await db.insertInto('sessions').values(session).execute();\n return session;\n}\nexport async function getSessionAndUser(token) {\n const result = await db\n .selectFrom('sessions')\n .selectAll()\n .select(userFromId)\n .where('sessions.token', '=', token)\n .where('sessions.expires', '>', new Date())\n .executeTakeFirstOrThrow();\n if (!result.user)\n throw new Error('Session references non-existing user');\n return result;\n}\nexport async function getSession(sessionId) {\n return await db\n .selectFrom('sessions')\n .selectAll()\n .where('id', '=', sessionId)\n .where('sessions.expires', '>', new Date())\n .executeTakeFirstOrThrow();\n}\nexport async function getSessions(userId) {\n return await db.selectFrom('sessions').selectAll().where('userId', '=', userId).where('sessions.expires', '>', new Date()).execute();\n}\n/**\n * Create a verification\n * @param expires How long the token should be valid for in seconds\n */\nexport async function createVerification(role, userId, expires) {\n const token = randomBytes(64).toString('base64url');\n const verification = { userId, token, expires: new Date(Date.now() + expires * 1000), role };\n await db.insertInto('verifications').values(verification).executeTakeFirstOrThrow();\n setTimeout(() => {\n void db.deleteFrom('verifications').where('verifications.token', '=', verification.token).execute();\n }, expires * 1000);\n return verification;\n}\nexport async function useVerification(role, userId, token) {\n const query = db\n .deleteFrom('verifications')\n .where('verifications.token', '=', token)\n .where('verifications.userId', '=', userId)\n .where('verifications.role', '=', role);\n return await query.returningAll().executeTakeFirst();\n}\nexport async function getPasskey(id) {\n return await db.selectFrom('passkeys').selectAll().where('id', '=', id).executeTakeFirstOrThrow();\n}\nexport async function createPasskey(passkey) {\n const result = await db.insertInto('passkeys').values(passkey).returningAll().executeTakeFirstOrThrow();\n return result;\n}\nexport async function getPasskeysByUserId(userId) {\n return await db.selectFrom('passkeys').selectAll().where('userId', '=', userId).execute();\n}\nexport async function updatePasskeyCounter(id, newCounter) {\n await db.updateTable('passkeys').set({ counter: newCounter }).where('id', '=', id).executeTakeFirstOrThrow();\n const passkey = await getPasskey(id);\n if (!passkey)\n throw new Error('Passkey not found');\n return passkey;\n}\nexport async function checkAuthForUser(event, userId, sensitive = false) {\n const token = getToken(event, sensitive);\n if (!token)\n throw error(401, 'Missing token');\n const session = await getSessionAndUser(token).catch(withError('Invalid or expired session', 401));\n if (session.userId !== userId) {\n if (!session.user?.isAdmin)\n error(403, 'User ID mismatch');\n // Admins are allowed to manage other users.\n const accessor = session.user;\n session.user = await getUser(userId).catch(withError('Target user not found', 404));\n return Object.assign(session, { accessor });\n }\n if (!session.elevated && sensitive)\n error(403, 'This token can not be used for sensitive actions');\n return Object.assign(session, { accessor: session.user });\n}\nexport async function checkAuthForItem(event, itemType, itemId, permission) {\n const token = getToken(event, false);\n if (!token)\n error(401, 'Missing token');\n const session = await getSessionAndUser(token).catch(() => null);\n const item = await db\n .selectFrom(itemType)\n .selectAll()\n .where('id', '=', itemId)\n .$if(!!session, eb => eb.select(acl.from(itemType, { onlyId: session.userId })))\n .$castTo()\n .executeTakeFirstOrThrow()\n .catch(withError('Item not found', 404));\n const result = {\n session: session ? omit(session, 'user') : undefined,\n item: omit(item, 'acl'),\n user: session?.user,\n fromACL: false,\n };\n if (item.publicPermission >= permission)\n return result;\n if (!session)\n error(403, 'Access denied');\n if (session.userId == item.userId)\n return result;\n result.fromACL = true;\n if (!item.acl || !item.acl.length)\n error(403, 'Access denied');\n const [control] = item.acl;\n if (control.userId !== session.userId)\n error(500, 'Access control entry does not match session user'); // @todo: audit log\n if (control.permission >= permission)\n return result;\n error(403, 'Access denied');\n}\n","import { userProtectedFields, userPublicFields } from '@axium/core/user';\nimport { serialize as serializeCookie } from 'cookie';\nimport { pick } from 'utilium';\nimport * as z from 'zod';\nimport { createSession } from './auth.js';\nimport { config } from './config.js';\nexport function isResponseError(e) {\n return e instanceof Error && e.name === 'ResponseError' && typeof e.status === 'number';\n}\nexport function error(status, message) {\n const error = Object.assign(new Error(message), { status });\n error.name = 'ResponseError';\n throw error;\n}\nexport function isRedirect(e) {\n return typeof e === 'object' && e !== null && 'location' in e && 'status' in e;\n}\n/**\n * Use `Response.redirect` if you can.\n * This should only when `return`ing a `Response` is not possible.\n */\nexport function redirect(location, status = 302) {\n throw { location, status };\n}\nexport function json(data, init) {\n const response = Response.json(data, init);\n if (!response.headers.has('content-length')) {\n response.headers.set('content-length', JSON.stringify(data).length.toString());\n }\n return response;\n}\nexport async function parseBody(event, schema) {\n const contentType = event.request.headers.get('content-type');\n if (!contentType || !contentType.includes('application/json'))\n error(415, 'Invalid content type');\n const body = await event.request.json().catch(() => error(415, 'Invalid JSON'));\n try {\n return schema.parse(body);\n }\n catch (e) {\n error(400, z.prettifyError(e));\n }\n}\nexport function getToken(event, sensitive = false) {\n const header_token = event.request.headers.get('Authorization')?.replace('Bearer ', '');\n if (header_token)\n return header_token;\n if (config.debug || config.api.cookie_auth) {\n return event.cookies.get(sensitive ? 'elevated_token' : 'session_token');\n }\n}\nexport async function createSessionData(userId, elevated = false) {\n const { token, expires } = await createSession(userId, elevated);\n const response = json({ userId, token: elevated ? '[[redacted:elevated]]' : token }, { status: 201 });\n const cookies = serializeCookie(elevated ? 'elevated_token' : 'session_token', token, {\n httpOnly: true,\n path: '/',\n expires,\n secure: config.auth.secure_cookies,\n sameSite: 'lax',\n });\n response.headers.set('Set-Cookie', cookies);\n return response;\n}\nexport function stripUser(user, includeProtected = false) {\n return pick(user, ...userPublicFields, ...(includeProtected ? userProtectedFields : []));\n}\nexport function withError(text, code = 500) {\n return function (e) {\n if (e.name == 'ResponseError')\n throw e;\n error(code, text + (config.debug && e.message ? `: ${e.message}` : ''));\n };\n}\nexport async function handleAPIRequest(event, route) {\n const method = event.request.method;\n const _warnings = [];\n if (route.api && !event.request.headers.get('Accept')?.includes('application/json')) {\n _warnings.push('Only application/json is supported');\n event.request.headers.set('Accept', 'application/json');\n }\n for (const [key, type] of Object.entries(route.params || {})) {\n if (!type)\n continue;\n try {\n event.params[key] = type.parse(event.params[key]);\n }\n catch (e) {\n error(400, `Invalid parameter: ${z.prettifyError(e)}`);\n }\n }\n if (typeof route[method] != 'function')\n error(405, `Method ${method} not allowed for ${route.path}`);\n const result = await route[method](event);\n if (result instanceof Response)\n return result;\n result._warnings ||= [];\n result._warnings.push(..._warnings);\n return json(result);\n}\nexport function handleResponseError(e) {\n if (isResponseError(e))\n return json({ message: e.message }, { status: e.status });\n if (isRedirect(e))\n return Response.redirect(e.location, e.status);\n console.error(e);\n return json({ message: 'Internal Error' + (config.debug ? ': ' + e.message : '') }, { status: 500 });\n}\n","import { pick } from 'utilium';\nimport { _unique } from './state.js';\nexport const apps = _unique('apps', new Map());\nexport class App {\n id;\n name;\n constructor(opt) {\n if (apps.has(opt.id))\n throw new ReferenceError(`App with ID \"${opt.id}\" already exists.`);\n Object.assign(this, pick(opt, 'id', 'name'));\n apps.set(this.id, this);\n }\n}\n","import { apps } from './apps.js';\nimport config from './config.js';\nimport { output } from './io.js';\nimport { _unique } from './state.js';\n/**\n * @internal\n */\nexport const routes = _unique('routes', new Map());\n/**\n * @category Plugin API\n */\nexport function addRoute(opt) {\n const route = { ...opt, server: !('page' in opt) };\n if (!route.path.startsWith('/')) {\n throw new Error(`Route path must start with a slash: ${route.path}`);\n }\n if (route.path.startsWith('/api/'))\n route.api = true;\n if (route.api && !route.server)\n throw new Error(`API routes cannot have a client page: ${route.path}`);\n routes.set(route.path, route);\n output.debug('Added route: ' + route.path);\n}\n/**\n * Resolve a request URL into a route.\n * This handles parsing of parameters in the URL.\n */\nexport function resolveRoute(event) {\n const { pathname } = event.url;\n if (routes.has(pathname) && !pathname.split('/').some(p => p.startsWith(':')))\n return routes.get(pathname);\n // Otherwise we must have a parameterized route\n _routes: for (const route of routes.values()) {\n const params = {};\n // Split the path and route into parts, zipped together\n const pathParts = pathname.split('/').filter(Boolean);\n // Skips routes in disabled apps\n if (apps.has(pathParts[0]) && config.apps.disabled.includes(pathParts[0]))\n continue;\n for (const routePart of route.path.split('/').filter(Boolean)) {\n const pathPart = pathParts.shift();\n if (!pathPart)\n continue _routes;\n if (pathPart == routePart)\n continue;\n if (!routePart.startsWith(':'))\n continue _routes;\n params[routePart.slice(1)] = pathPart;\n }\n // we didn't find a match, since an exact match would have been found already\n if (pathParts.length || !Object.keys(params).length)\n continue;\n event.params = params;\n return route;\n }\n}\n","import { requestMethods } from '@axium/core/requests';\nimport pkg from '../../package.json' with { type: 'json' };\nimport { config } from '../config.js';\nimport { plugins } from '../plugins.js';\nimport { error } from '../requests.js';\nimport { addRoute, routes } from '../routes.js';\naddRoute({\n path: '/api/metadata',\n async GET() {\n if (config.api.disable_metadata)\n error(401, 'API metadata is disabled');\n return {\n version: pkg.version,\n routes: Object.fromEntries(routes\n .entries()\n .filter(([path]) => path.startsWith('/api/'))\n .map(([path, route]) => [\n path,\n {\n params: Object.fromEntries(Object.entries(route.params || {}).map(([key, type]) => [key, type ? type.def.type : null])),\n methods: requestMethods.filter(m => m in route),\n },\n ])),\n plugins: Object.fromEntries(plugins.values().map(plugin => [plugin.name, plugin.version])),\n };\n },\n});\n","import { PasskeyChangeable } from '@axium/core/schemas';\nimport { omit } from 'utilium';\nimport * as z from 'zod';\nimport { checkAuthForUser, getPasskey } from '../auth.js';\nimport { database as db } from '../database.js';\nimport { error, parseBody, withError } from '../requests.js';\nimport { addRoute } from '../routes.js';\naddRoute({\n path: '/api/passkeys/:id',\n params: {\n id: z.string(),\n },\n async GET(event) {\n const passkey = await getPasskey(event.params.id);\n await checkAuthForUser(event, passkey.userId);\n return omit(passkey, 'counter', 'publicKey');\n },\n async PATCH(event) {\n const body = await parseBody(event, PasskeyChangeable);\n const passkey = await getPasskey(event.params.id);\n await checkAuthForUser(event, passkey.userId);\n const result = await db\n .updateTable('passkeys')\n .set(body)\n .where('id', '=', passkey.id)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch(withError('Could not update passkey'));\n return omit(result, 'counter', 'publicKey');\n },\n async DELETE(event) {\n const passkey = await getPasskey(event.params.id);\n await checkAuthForUser(event, passkey.userId);\n const { count } = await db\n .selectFrom('passkeys')\n .select(db.fn.countAll().as('count'))\n .where('userId', '=', passkey.userId)\n .executeTakeFirstOrThrow();\n if (Number(count) <= 1)\n error(409, 'At least one passkey is required');\n const result = await db\n .deleteFrom('passkeys')\n .where('id', '=', passkey.id)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch(withError('Could not delete passkey'));\n return omit(result, 'counter', 'publicKey');\n },\n});\n","import { APIUserRegistration } from '@axium/core/schemas';\nimport { generateRegistrationOptions, verifyRegistrationResponse } from '@simplewebauthn/server';\nimport { randomUUID } from 'node:crypto';\nimport * as z from 'zod';\nimport { createPasskey, getUser } from '../auth.js';\nimport config from '../config.js';\nimport { database as db } from '../database.js';\nimport { createSessionData, error, parseBody, withError } from '../requests.js';\nimport { addRoute } from '../routes.js';\n// Map of user ID => challenge\nconst registrations = new Map();\nasync function OPTIONS(event) {\n if (!config.allow_new_users)\n error(409, 'New user registration is disabled');\n const { name, email } = await parseBody(event, z.object({ name: z.string().optional(), email: z.email().optional() }));\n const userId = randomUUID();\n const user = await getUser(userId).catch(() => null);\n if (user)\n error(409, 'Generated UUID is already in use, please retry.');\n const options = await generateRegistrationOptions({\n rpName: config.auth.rp_name,\n rpID: config.auth.rp_id,\n userName: email ?? userId,\n userDisplayName: name,\n attestationType: 'none',\n excludeCredentials: [],\n authenticatorSelection: {\n residentKey: 'preferred',\n userVerification: 'preferred',\n authenticatorAttachment: 'platform',\n },\n });\n registrations.set(userId, options.challenge);\n return { userId, options };\n}\nasync function POST(event) {\n if (!config.allow_new_users)\n error(409, 'New user registration is disabled');\n const { userId, email, name, response } = await parseBody(event, APIUserRegistration);\n const existing = await db.selectFrom('users').selectAll().where('email', '=', email.toLowerCase()).executeTakeFirst();\n if (existing)\n error(409, 'Email already in use');\n const expectedChallenge = registrations.get(userId);\n if (!expectedChallenge)\n error(404, 'No registration challenge found for this user');\n registrations.delete(userId);\n const { verified, registrationInfo } = await verifyRegistrationResponse({\n response,\n expectedChallenge,\n expectedOrigin: config.auth.origin,\n }).catch(() => error(400, 'Verification failed'));\n if (!verified || !registrationInfo)\n error(401, 'Verification failed');\n await db\n .insertInto('users')\n .values({ id: userId, name, email: email.toLowerCase() })\n .executeTakeFirstOrThrow()\n .catch(withError('Failed to create user'));\n await createPasskey({\n transports: [],\n ...registrationInfo.credential,\n userId,\n deviceType: registrationInfo.credentialDeviceType,\n backedUp: registrationInfo.credentialBackedUp,\n }).catch(withError('Failed to create passkey', 500));\n return await createSessionData(userId);\n}\naddRoute({\n path: '/api/register',\n params: {},\n OPTIONS,\n POST,\n});\n","import { omit } from 'utilium';\nimport { getSessionAndUser } from '../auth.js';\nimport { database as db } from '../database.js';\nimport { error, getToken, stripUser, withError } from '../requests.js';\nimport { addRoute } from '../routes.js';\naddRoute({\n path: '/api/session',\n async GET(event) {\n const token = getToken(event);\n if (!token)\n error(401, 'Missing token');\n const result = await getSessionAndUser(token).catch(withError('Invalid session', 400));\n return {\n ...omit(result, 'token'),\n user: stripUser(result.user, true),\n };\n },\n async DELETE(event) {\n const token = getToken(event);\n if (!token)\n error(401, 'Missing token');\n const result = await db\n .deleteFrom('sessions')\n .where('sessions.token', '=', token)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch((e) => (e.message == 'no result' ? error(404, 'Session does not exist') : error(400, 'Invalid session')));\n return omit(result, 'token');\n },\n});\n","import { LogoutSessions, PasskeyAuthenticationResponse, PasskeyRegistration, UserAuthOptions } from '@axium/core/schemas';\nimport { UserChangeable } from '@axium/core/user';\nimport * as webauthn from '@simplewebauthn/server';\nimport { omit, pick } from 'utilium';\nimport * as z from 'zod';\nimport { checkAuthForUser, createPasskey, createVerification, getPasskey, getPasskeysByUserId, getSessions, getUser, useVerification, } from '../auth.js';\nimport { config } from '../config.js';\nimport { database as db } from '../database.js';\nimport { createSessionData, error, parseBody, stripUser, withError } from '../requests.js';\nimport { addRoute } from '../routes.js';\nconst challenges = new Map();\nconst params = { id: z.uuid() };\n/**\n * Resolve a user's UUID using their email (in the future this might also include handles)\n */\naddRoute({\n path: '/api/user_id',\n async POST(event) {\n const { value } = await parseBody(event, z.object({ using: z.literal('email'), value: z.email() }));\n const { id } = await db\n .selectFrom('users')\n .select('id')\n .where('email', '=', value)\n .executeTakeFirstOrThrow()\n .catch(withError('User not found', 404));\n return { id };\n },\n});\naddRoute({\n path: '/api/users/:id',\n params,\n async GET(event) {\n const userId = event.params.id;\n const auth = await checkAuthForUser(event, userId).catch(() => null);\n const user = auth?.user || (await getUser(userId).catch(withError('User does not exist', 404)));\n return stripUser(user, !!auth);\n },\n async PATCH(event) {\n const userId = event.params.id;\n const body = await parseBody(event, UserChangeable);\n await checkAuthForUser(event, userId);\n if ('email' in body)\n body.emailVerified = null;\n const result = await db\n .updateTable('users')\n .set(body)\n .where('id', '=', userId)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch(withError('Failed to update user'));\n return stripUser(result, true);\n },\n async DELETE(event) {\n const userId = event.params.id;\n await checkAuthForUser(event, userId, true);\n const result = await db\n .deleteFrom('users')\n .where('id', '=', userId)\n .returningAll()\n .executeTakeFirstOrThrow()\n .catch(withError('Failed to delete user'));\n return result;\n },\n});\naddRoute({\n path: '/api/users/:id/full',\n params,\n async GET(event) {\n const userId = event.params.id;\n const { user } = await checkAuthForUser(event, userId);\n const sessions = await getSessions(userId);\n return {\n ...stripUser(user, true),\n sessions: sessions.map(s => omit(s, 'token')),\n };\n },\n});\naddRoute({\n path: '/api/users/:id/auth',\n params,\n async OPTIONS(event) {\n const userId = event.params.id;\n const { type } = await parseBody(event, UserAuthOptions);\n await getUser(userId).catch(withError('User does not exist', 404));\n const passkeys = await getPasskeysByUserId(userId);\n if (!passkeys)\n error(409, 'No passkeys exists for this user');\n const options = await webauthn.generateAuthenticationOptions({\n rpID: config.auth.rp_id,\n allowCredentials: passkeys.map(passkey => pick(passkey, 'id', 'transports')),\n });\n challenges.set(userId, { data: options.challenge, type });\n return options;\n },\n async POST(event) {\n const userId = event.params.id;\n const response = await parseBody(event, PasskeyAuthenticationResponse);\n const auth = challenges.get(userId);\n if (!auth)\n error(404, 'No challenge');\n const { data: expectedChallenge, type } = auth;\n challenges.delete(userId);\n const passkey = await getPasskey(response.id).catch(withError('Passkey does not exist', 404));\n if (passkey.userId !== userId)\n error(403, 'Passkey does not belong to this user');\n const { verified } = await webauthn\n .verifyAuthenticationResponse({\n response,\n credential: passkey,\n expectedChallenge,\n expectedOrigin: config.auth.origin,\n expectedRPID: config.auth.rp_id,\n })\n .catch(withError('Verification failed', 400));\n if (!verified)\n error(401, 'Verification failed');\n switch (type) {\n case 'login':\n return await createSessionData(userId);\n case 'action':\n if ((Date.now() - passkey.createdAt.getTime()) / 60_000 < config.auth.passkey_probation)\n error(403, 'You can not authorize sensitive actions with a newly created passkey');\n return await createSessionData(userId, true);\n }\n },\n});\n// Map of user ID => challenge\nconst registrations = new Map();\naddRoute({\n path: '/api/users/:id/passkeys',\n params,\n /**\n * Get passkey registration options for a user.\n */\n async OPTIONS(event) {\n const userId = event.params.id;\n const existing = await getPasskeysByUserId(userId);\n const { user } = await checkAuthForUser(event, userId);\n const options = await webauthn.generateRegistrationOptions({\n rpName: config.auth.rp_name,\n rpID: config.auth.rp_id,\n userName: userId,\n userDisplayName: user.email,\n attestationType: 'none',\n excludeCredentials: existing.map(passkey => pick(passkey, 'id', 'transports')),\n authenticatorSelection: {\n residentKey: 'preferred',\n userVerification: 'preferred',\n authenticatorAttachment: 'platform',\n },\n });\n registrations.set(userId, options.challenge);\n return options;\n },\n /**\n * Get passkeys for a user.\n */\n async GET(event) {\n const userId = event.params.id;\n await checkAuthForUser(event, userId);\n const passkeys = await getPasskeysByUserId(userId);\n return passkeys.map(p => omit(p, 'publicKey', 'counter'));\n },\n /**\n * Register a new passkey for an existing user.\n */\n async PUT(event) {\n const userId = event.params.id;\n const response = await parseBody(event, PasskeyRegistration);\n await checkAuthForUser(event, userId);\n const expectedChallenge = registrations.get(userId);\n if (!expectedChallenge)\n error(404, 'No registration challenge found for this user');\n registrations.delete(userId);\n const { verified, registrationInfo } = await webauthn\n .verifyRegistrationResponse({\n response,\n expectedChallenge,\n expectedOrigin: config.auth.origin,\n })\n .catch(withError('Verification failed', 400));\n if (!verified || !registrationInfo)\n error(401, 'Verification failed');\n const passkey = await createPasskey({\n transports: [],\n ...registrationInfo.credential,\n userId,\n deviceType: registrationInfo.credentialDeviceType,\n backedUp: registrationInfo.credentialBackedUp,\n }).catch(withError('Failed to create passkey'));\n return omit(passkey, 'publicKey', 'counter');\n },\n});\naddRoute({\n path: '/api/users/:id/sessions',\n params,\n async GET(event) {\n const userId = event.params.id;\n await checkAuthForUser(event, userId);\n return (await getSessions(userId).catch(e => error(503, 'Failed to get sessions' + (config.debug ? ': ' + e : '')))).map(s => omit(s, 'token'));\n },\n async DELETE(event) {\n const userId = event.params.id;\n const body = await parseBody(event, LogoutSessions);\n await checkAuthForUser(event, userId, body.confirm_all);\n if (!body.confirm_all && !Array.isArray(body.id))\n error(400, 'Invalid request body');\n const query = body.confirm_all ? db.deleteFrom('sessions') : db.deleteFrom('sessions').where('sessions.id', 'in', body.id);\n const result = await query\n .where('sessions.userId', '=', userId)\n .returningAll()\n .execute()\n .catch(withError('Failed to delete one or more sessions'));\n return result.map(s => omit(s, 'token'));\n },\n});\naddRoute({\n path: '/api/users/:id/verify_email',\n params,\n async OPTIONS(event) {\n const userId = event.params.id;\n if (!config.auth.email_verification)\n return { enabled: false };\n await checkAuthForUser(event, userId);\n if (!config.auth.email_verification)\n return { enabled: false };\n return { enabled: true };\n },\n async GET(event) {\n const userId = event.params.id;\n const { user } = await checkAuthForUser(event, userId);\n if (user.emailVerified)\n error(409, 'Email already verified');\n const verification = await createVerification('verify_email', userId, config.auth.verification_timeout * 60);\n return omit(verification, 'token', 'role');\n },\n async POST(event) {\n const userId = event.params.id;\n const { token } = await parseBody(event, z.object({ token: z.string() }));\n const { user } = await checkAuthForUser(event, userId);\n if (user.emailVerified)\n error(409, 'Email already verified');\n await useVerification('verify_email', userId, token).catch(withError('Invalid or expired verification token', 400));\n return {};\n },\n});\n","import { readFileSync } from 'node:fs';\nimport { createServer } from 'node:http';\nimport { createServer as createSecureServer } from 'node:https';\nimport config from './config.js';\nimport '@axium/server/api/index';\nimport { loadDefaultConfigs } from '@axium/server/config';\nimport { clean, connect, database } from '@axium/server/database';\nimport { dirs, logger } from '@axium/server/io';\nimport { allLogLevels } from 'logzen';\nimport { createWriteStream } from 'node:fs';\nimport { join } from 'node:path/posix';\nexport async function serveSvelteKit(opt) {\n const { handler } = await import(opt.build || config.web.build);\n if (!opt.secure && !config.web.secure)\n return createServer(handler);\n return createSecureServer({ key: readFileSync(opt.ssl_key || config.web.ssl_key), cert: readFileSync(opt.ssl_cert || config.web.ssl_cert) }, handler);\n}\n/**\n * Perform initial setup for when the server is serving web pages.\n */\nexport async function init() {\n logger.attach(createWriteStream(join(dirs.at(-1), 'server.log')), { output: allLogLevels });\n await loadDefaultConfigs();\n connect();\n await clean({});\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n process.on('beforeExit', () => database.destroy());\n}\n","import { readFileSync } from 'node:fs';\nimport { styleText } from 'node:util';\nimport { render } from 'svelte/server';\nimport { config } from './config.js';\nimport { error, handleAPIRequest, handleResponseError, json } from './requests.js';\nimport { resolveRoute } from './routes.js';\nlet template = null;\nfunction fillSvelteKitTemplate({ head, body }, env = {}, nonce = '') {\n template ||= readFileSync(config.web.template, 'utf-8');\n return (template\n .replaceAll('%sveltekit.head%', head)\n .replaceAll('%sveltekit.body%', body)\n .replaceAll('%sveltekit.assets%', config.web.assets)\n // Unused for now.\n .replaceAll('%sveltekit.nonce%', nonce)\n .replace(/%sveltekit\\.env\\.([^%]+)%/g, (_match, key) => env[key] ?? ''));\n}\n/**\n * @internal\n */\nexport async function handleSvelteKit({ event, resolve, }) {\n const route = resolveRoute(event);\n if (!route && event.url.pathname === '/' && config.debug)\n return new Response(null, { status: 303, headers: { Location: '/_axium/default' } });\n if (config.debug)\n console.log(styleText('blueBright', event.request.method.padEnd(7)), route ? route.path : event.url.pathname);\n if (!route)\n return await resolve(event).catch(handleResponseError);\n if (route.server == true) {\n if (route.api)\n return await handleAPIRequest(event, route).catch(handleResponseError);\n const run = route[event.request.method];\n if (typeof run !== 'function') {\n error(405, `Method ${event.request.method} not allowed for ${route.path}`);\n }\n try {\n const result = await run(event);\n if (result instanceof Response)\n return result;\n return json(result);\n }\n catch (e) {\n return handleResponseError(e);\n }\n }\n const data = await route.load?.(event);\n const body = fillSvelteKitTemplate(render(route.page));\n return new Response(body, {\n headers: config.web.disable_cache\n ? {\n 'Content-Type': 'text/html; charset=utf-8',\n 'Cache-Control': 'no-cache, no-store, must-revalidate',\n Pragma: 'no-cache',\n Expires: '0',\n }\n : {},\n status: 200,\n });\n}\n","import { init } from \"@axium/server/serve\";\nimport { handleSvelteKit } from \"@axium/server/sveltekit\";\nawait init();\nexport {\n handleSvelteKit as handle\n};\n"],"names":["schemas.$ZodTuple","schemas.$ZodArray","schemas.$ZodUnknown","sym","z.custom","z.literal","z.object","z.string","z.array","z.enum","z.number","z.record","z.any","z.email","z.uuid","z.boolean","z.looseObject","z.function","z.partialRecord","z.prettifyError","z\n .looseObject","z\n .looseObject","z.date","z.url","this","io.debug","io.someWarnings","io.start","io.done","plugin","io.plugin","db","serializeCookie","registrations","email"],"mappings":"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","x_google_ignoreList":[0,1]}
|
package/build/server/index.js
CHANGED
|
@@ -2010,14 +2010,14 @@ const options = {
|
|
|
2010
2010
|
<div class="error">
|
|
2011
2011
|
<span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
|
|
2012
2012
|
},
|
|
2013
|
-
version_hash: "
|
|
2013
|
+
version_hash: "d4wwr4"
|
|
2014
2014
|
};
|
|
2015
2015
|
async function get_hooks() {
|
|
2016
2016
|
let handle;
|
|
2017
2017
|
let handleFetch;
|
|
2018
2018
|
let handleError;
|
|
2019
2019
|
let init;
|
|
2020
|
-
({ handle, handleFetch, handleError, init } = await import('./chunks/hooks.server-
|
|
2020
|
+
({ handle, handleFetch, handleError, init } = await import('./chunks/hooks.server-C9qpwVTB.js'));
|
|
2021
2021
|
let reroute;
|
|
2022
2022
|
let transport;
|
|
2023
2023
|
return {
|