From 4e3018e506ce2d4d1b5f3dbe43b4ba3d32bb3e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sof=C3=ADa=20Aritz?= Date: Mon, 15 Jun 2026 21:14:34 +0200 Subject: [PATCH] Add license headers --- .yarn/releases/yarn-4.16.0.cjs | 18 ++++++++++++++++++ .yarnrc.yml | 16 ++++++++++++++++ Dockerfile | 16 ++++++++++++++++ LICENSE-HEADER | 15 +++++++++++++++ compose.dev.yml | 16 ++++++++++++++++ compose.yml | 16 ++++++++++++++++ eslint.config.mjs | 18 ++++++++++++++++++ flake.nix | 16 ++++++++++++++++ next.config.ts | 18 ++++++++++++++++++ package.json | 5 +++-- postcss.config.mjs | 18 ++++++++++++++++++ scripts/gen-key.ts | 18 ++++++++++++++++++ scripts/migrate.ts | 18 ++++++++++++++++++ src/app/.well-known/jwks.json/route.ts | 18 ++++++++++++++++++ src/app/actions.ts | 18 ++++++++++++++++++ src/app/api/tap/webhook/route.ts | 18 ++++++++++++++++++ src/app/atproto/oauth/callback/route.ts | 18 ++++++++++++++++++ src/app/atproto/oauth/login/route.ts | 18 ++++++++++++++++++ src/app/atproto/oauth/logout/route.ts | 18 ++++++++++++++++++ src/app/auth/login/page.tsx | 18 ++++++++++++++++++ src/app/globals.css | 18 ++++++++++++++++++ src/app/layout.tsx | 18 ++++++++++++++++++ src/app/oauth-client-metadata.json/index.ts | 18 ++++++++++++++++++ src/app/page.tsx | 18 ++++++++++++++++++ src/app/profile/[did]/page.tsx | 18 ++++++++++++++++++ src/components/AnnouncementCard.tsx | 18 ++++++++++++++++++ src/components/ContentPageLayout.tsx | 18 ++++++++++++++++++ src/components/EmptyActivity.tsx | 18 ++++++++++++++++++ src/components/EmptyProfile.tsx | 18 ++++++++++++++++++ src/components/EntryCard.tsx | 18 ++++++++++++++++++ src/components/EntryDialog.tsx | 18 ++++++++++++++++++ src/components/FollowButton.tsx | 18 ++++++++++++++++++ src/components/LoginForm.tsx | 18 ++++++++++++++++++ src/components/MainFeed.tsx | 18 ++++++++++++++++++ src/components/ProfileDropdown.tsx | 18 ++++++++++++++++++ src/components/ui/avatar.tsx | 18 ++++++++++++++++++ src/components/ui/badge.tsx | 18 ++++++++++++++++++ src/components/ui/button.tsx | 18 ++++++++++++++++++ src/components/ui/card.tsx | 18 ++++++++++++++++++ src/components/ui/dialog.tsx | 18 ++++++++++++++++++ src/components/ui/dropdown-menu.tsx | 18 ++++++++++++++++++ src/components/ui/empty.tsx | 18 ++++++++++++++++++ src/components/ui/input.tsx | 18 ++++++++++++++++++ src/components/ui/label.tsx | 18 ++++++++++++++++++ src/components/ui/separator.tsx | 18 ++++++++++++++++++ src/components/ui/tabs.tsx | 18 ++++++++++++++++++ src/lib/announcements.tsx | 18 ++++++++++++++++++ src/lib/auth/client.ts | 18 ++++++++++++++++++ src/lib/auth/session.ts | 18 ++++++++++++++++++ src/lib/db/index.ts | 18 ++++++++++++++++++ src/lib/db/migrations.ts | 18 ++++++++++++++++++ src/lib/db/queries.ts | 18 ++++++++++++++++++ src/lib/session/index.ts | 18 ++++++++++++++++++ src/lib/tap/index.ts | 18 ++++++++++++++++++ src/lib/utils.ts | 18 ++++++++++++++++++ 55 files changed, 962 insertions(+), 2 deletions(-) create mode 100644 LICENSE-HEADER diff --git a/.yarn/releases/yarn-4.16.0.cjs b/.yarn/releases/yarn-4.16.0.cjs index bb4846f..90a6843 100755 --- a/.yarn/releases/yarn-4.16.0.cjs +++ b/.yarn/releases/yarn-4.16.0.cjs @@ -1,4 +1,22 @@ #!/usr/bin/env node +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + /* eslint-disable */ //prettier-ignore (()=>{var Cje=Object.create;var sU=Object.defineProperty;var wje=Object.getOwnPropertyDescriptor;var Bje=Object.getOwnPropertyNames;var vje=Object.getPrototypeOf,Sje=Object.prototype.hasOwnProperty;var Ie=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Xe=(e,t)=>()=>(e&&(t=e(e=0)),t);var G=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Vt=(e,t)=>{for(var r in t)sU(e,r,{get:t[r],enumerable:!0})},bje=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Bje(t))!Sje.call(e,a)&&a!==r&&sU(e,a,{get:()=>t[a],enumerable:!(s=wje(t,a))||s.enumerable});return e};var et=(e,t,r)=>(r=e!=null?Cje(vje(e)):{},bje(t||!e||!e.__esModule?sU(r,"default",{value:e,enumerable:!0}):r,e));var pi={};Vt(pi,{SAFE_TIME:()=>gZ,S_IFDIR:()=>ZP,S_IFLNK:()=>$P,S_IFMT:()=>Hf,S_IFREG:()=>R2});var Hf,ZP,R2,$P,gZ,mZ=Xe(()=>{Hf=61440,ZP=16384,R2=32768,$P=40960,gZ=456789e3});var or={};Vt(or,{EBADF:()=>Yo,EBUSY:()=>Dje,EEXIST:()=>Tje,EINVAL:()=>xje,EISDIR:()=>Rje,ENOENT:()=>kje,ENOSYS:()=>Pje,ENOTDIR:()=>Qje,ENOTEMPTY:()=>Nje,EOPNOTSUPP:()=>Oje,EROFS:()=>Fje,ERR_DIR_CLOSED:()=>oU});function vc(e,t){return Object.assign(new Error(`${e}: ${t}`),{code:e})}function Dje(e){return vc("EBUSY",e)}function Pje(e,t){return vc("ENOSYS",`${e}, ${t}`)}function xje(e){return vc("EINVAL",`invalid argument, ${e}`)}function Yo(e){return vc("EBADF",`bad file descriptor, ${e}`)}function kje(e){return vc("ENOENT",`no such file or directory, ${e}`)}function Qje(e){return vc("ENOTDIR",`not a directory, ${e}`)}function Rje(e){return vc("EISDIR",`illegal operation on a directory, ${e}`)}function Tje(e){return vc("EEXIST",`file already exists, ${e}`)}function Fje(e){return vc("EROFS",`read-only filesystem, ${e}`)}function Nje(e){return vc("ENOTEMPTY",`directory not empty, ${e}`)}function Oje(e){return vc("EOPNOTSUPP",`operation not supported, ${e}`)}function oU(){return vc("ERR_DIR_CLOSED","Directory handle was closed")}var ex=Xe(()=>{});var ll={};Vt(ll,{BigIntStatsEntry:()=>uE,DEFAULT_MODE:()=>cU,DirEntry:()=>aU,StatEntry:()=>cE,areStatsEqual:()=>uU,clearStats:()=>tx,convertToBigIntStats:()=>Mje,makeDefaultStats:()=>yZ,makeEmptyStats:()=>Lje});function yZ(){return new cE}function Lje(){return tx(yZ())}function tx(e){for(let t in e)if(Object.hasOwn(e,t)){let r=e[t];typeof r=="number"?e[t]=0:typeof r=="bigint"?e[t]=BigInt(0):lU.types.isDate(r)&&(e[t]=new Date(0))}return e}function Mje(e){let t=new uE;for(let r in e)if(Object.hasOwn(e,r)){let s=e[r];typeof s=="number"?t[r]=BigInt(Math.floor(s)):lU.types.isDate(s)&&(t[r]=new Date(s))}return t.atimeNs=t.atimeMs*BigInt(1e6)+BigInt(Math.floor(e.atimeMs%1*1e3))*BigInt(1e3),t.mtimeNs=t.mtimeMs*BigInt(1e6)+BigInt(Math.floor(e.mtimeMs%1*1e3))*BigInt(1e3),t.ctimeNs=t.ctimeMs*BigInt(1e6)+BigInt(Math.floor(e.ctimeMs%1*1e3))*BigInt(1e3),t.birthtimeNs=t.birthtimeMs*BigInt(1e6)+BigInt(Math.floor(e.birthtimeMs%1*1e3))*BigInt(1e3),t}function uU(e,t){if(e.atimeMs!==t.atimeMs||e.birthtimeMs!==t.birthtimeMs||e.blksize!==t.blksize||e.blocks!==t.blocks||e.ctimeMs!==t.ctimeMs||e.dev!==t.dev||e.gid!==t.gid||e.ino!==t.ino||e.isBlockDevice()!==t.isBlockDevice()||e.isCharacterDevice()!==t.isCharacterDevice()||e.isDirectory()!==t.isDirectory()||e.isFIFO()!==t.isFIFO()||e.isFile()!==t.isFile()||e.isSocket()!==t.isSocket()||e.isSymbolicLink()!==t.isSymbolicLink()||e.mode!==t.mode||e.mtimeMs!==t.mtimeMs||e.nlink!==t.nlink||e.rdev!==t.rdev||e.size!==t.size||e.uid!==t.uid)return!1;let r=e,s=t;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var lU,cU,aU,cE,uE,fU=Xe(()=>{lU=et(Ie("util")),cU=33188,aU=class{constructor(){this.name="";this.path="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},cE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=cU;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},uE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(cU);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function Gje(e){let t,r;if(t=e.match(Hje))e=t[1];else if(r=e.match(jje))e=`\\\\${r[1]?".\\":""}${r[2]}`;else return e;return e.replace(/\//g,"\\")}function qje(e){e=e.replace(/\\/g,"/");let t,r;return(t=e.match(Uje))?e=`/${t[1]}`:(r=e.match(_je))&&(e=`/unc/${r[1]?".dot/":""}${r[2]}`),e}function rx(e,t){return e===Ae?IZ(t):AU(t)}var T2,vt,Ir,Ae,K,EZ,Uje,_je,Hje,jje,AU,IZ,cl=Xe(()=>{T2=et(Ie("path")),vt={root:"/",dot:".",parent:".."},Ir={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml",env:".env"},Ae=Object.create(T2.default),K=Object.create(T2.default.posix);Ae.cwd=()=>process.cwd();K.cwd=process.platform==="win32"?()=>AU(process.cwd()):process.cwd;process.platform==="win32"&&(K.resolve=(...e)=>e.length>0&&K.isAbsolute(e[0])?T2.default.posix.resolve(...e):T2.default.posix.resolve(K.cwd(),...e));EZ=function(e,t,r){return t=e.normalize(t),r=e.normalize(r),t===r?".":(t.endsWith(e.sep)||(t=t+e.sep),r.startsWith(t)?r.slice(t.length):null)};Ae.contains=(e,t)=>EZ(Ae,e,t);K.contains=(e,t)=>EZ(K,e,t);Uje=/^([a-zA-Z]:.*)$/,_je=/^\/\/(\.\/)?(.*)$/,Hje=/^\/([a-zA-Z]:.*)$/,jje=/^\/unc\/(\.dot\/)?(.*)$/;AU=process.platform==="win32"?qje:e=>e,IZ=process.platform==="win32"?Gje:e=>e;Ae.fromPortablePath=IZ;Ae.toPortablePath=AU});async function nx(e,t){let r="0123456789abcdef";await e.mkdirPromise(t.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(e.mkdirPromise(e.pathUtils.join(t.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),t.indexPath}async function CZ(e,t,r,s,a){let n=e.pathUtils.normalize(t),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:mg,mtime:mg}:await r.lstatPromise(c);await e.mkdirpPromise(e.pathUtils.dirname(t),{utimes:[h,E]}),await pU(f,p,e,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function pU(e,t,r,s,a,n,c){let f=c.didParentExist?await wZ(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:mg,mtime:mg}:p,C;switch(!0){case p.isDirectory():C=await Wje(e,t,r,s,f,a,n,p,c);break;case p.isFile():C=await Jje(e,t,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await zje(e,t,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!=="HardlinkFromIndex"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(t.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(t.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function wZ(e,t){try{return await e.lstatPromise(t)}catch{return null}}async function Wje(e,t,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(e.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!=="EEXIST")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await pU(e,t,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async x=>{await pU(e,t,r,r.pathUtils.join(s,x),n,n.pathUtils.join(c,x),C)}))).some(x=>x)&&(h=!0);return h}async function Vje(e,t,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:"sha1"}),C=420,S=f.mode&511,x=`${E}${S!==C?S.toString(8):""}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${x}.dat`),T;(ae=>(ae[ae.Lock=0]="Lock",ae[ae.Rename=1]="Rename"))(T||={});let O=1,U=await wZ(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,fe=U?.mtimeMs!==Yje;if(ie&&fe&&h.autoRepair&&(O=0,U=null),!ie)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1}let V=!U&&O===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,$=!1;return e.push(async()=>{if(!U&&(O===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),O===1&&V)){let ie=await n.readFilePromise(c);await r.writeFilePromise(V,ie);try{await r.linkPromise(V,I)}catch(fe){if(fe.code==="EEXIST")$=!0,await r.unlinkPromise(V);else throw fe}}a||await r.linkPromise(I,s)}),t.push(async()=>{U||(await r.lutimesPromise(I,mg,mg),S!==C&&await r.chmodPromise(I,S)),V&&!$&&await r.unlinkPromise(V)}),!1}async function Kje(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function Jje(e,t,r,s,a,n,c,f,p){return p.linkStrategy?.type==="HardlinkFromIndex"?Vje(e,t,r,s,a,n,c,f,p,p.linkStrategy):Kje(e,t,r,s,a,n,c,f,p)}async function zje(e,t,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)e.push(async()=>r.removePromise(s)),a=null;else return!1;return e.push(async()=>{await r.symlinkPromise(rx(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var mg,Yje,hU=Xe(()=>{cl();mg=new Date(456789e3*1e3),Yje=mg.getTime()});function ix(e,t,r,s){let a=()=>{let n=r.shift();if(typeof n>"u")return null;let c=e.pathUtils.join(t,n);return Object.assign(e.statSync(c),{name:n,path:void 0})};return new F2(t,a,s)}var F2,BZ=Xe(()=>{ex();F2=class{constructor(t,r,s={}){this.path=t;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw oU()}async*[Symbol.asyncIterator](){try{let t;for(;(t=await this.read())!==null;)yield t}finally{await this.close()}}read(t){let r=this.readSync();return typeof t<"u"?t(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(t){return this.closeSync(),typeof t<"u"?t(null):Promise.resolve()}closeSync(){this.throwIfClosed(),this.opts.onClose?.(),this.closed=!0}}});function vZ(e,t){if(e!==t)throw new Error(`Invalid StatWatcher status: expected '${t}', got '${e}'`)}var SZ,sx,bZ=Xe(()=>{SZ=Ie("events");fU();sx=class e extends SZ.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new e(r,s,a);return n.start(),n}start(){vZ(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){vZ(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new uE:new cE;return tx(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;uU(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener("change",r);let s=this.changeListeners.get(r);typeof s<"u"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function fE(e,t,r,s){let a,n,c,f;switch(typeof r){case"function":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=ox.get(e);typeof p>"u"&&ox.set(e,p=new Map);let h=p.get(t);return typeof h>"u"&&(h=sx.create(e,t,{bigint:a}),p.set(t,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function yg(e,t,r){let s=ox.get(e);if(typeof s>"u")return;let a=s.get(t);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(t)))}function Eg(e){let t=ox.get(e);if(!(typeof t>"u"))for(let r of t.keys())yg(e,r)}var ox,dU=Xe(()=>{bZ();ox=new WeakMap});function Xje(e){let t=e.match(/\r?\n/g);if(t===null)return PZ.EOL;let r=t.filter(a=>a===`\r diff --git a/.yarnrc.yml b/.yarnrc.yml index fec60c2..690796a 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,3 +1,19 @@ +# Copyright (C) 2026 Sofía Aritz and contributors +# +# This file is part of Everest. +# +# Everest is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Everest is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Everest. If not, see . + approvedGitRepositories: - "**" diff --git a/Dockerfile b/Dockerfile index 042442d..616ac88 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,19 @@ +# Copyright (C) 2026 Sofía Aritz and contributors +# +# This file is part of Everest. +# +# Everest is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Everest is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Everest. If not, see . + # Stage 1: Dependency installation FROM node:24-alpine AS dependencies diff --git a/LICENSE-HEADER b/LICENSE-HEADER new file mode 100644 index 0000000..e8c6d11 --- /dev/null +++ b/LICENSE-HEADER @@ -0,0 +1,15 @@ +Copyright (C) {{.Year}} {{.Holder}} + +This file is part of Everest. + +Everest is free software: you can redistribute it and/or modify it under the +terms of the GNU General Public License as published by the Free Software +Foundation, either version 3 of the License, or (at your option) any later +version. + +Everest is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +Everest. If not, see . \ No newline at end of file diff --git a/compose.dev.yml b/compose.dev.yml index e21290e..3136457 100644 --- a/compose.dev.yml +++ b/compose.dev.yml @@ -1,3 +1,19 @@ +# Copyright (C) 2026 Sofía Aritz and contributors +# +# This file is part of Everest. +# +# Everest is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Everest is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Everest. If not, see . + services: # NOTE(sofiaritz.com): As per Next.js recommendations, the Next.js # dev server should run in the host machine rather than a Docker container. diff --git a/compose.yml b/compose.yml index 1092204..e7c3e51 100644 --- a/compose.yml +++ b/compose.yml @@ -1,3 +1,19 @@ +# Copyright (C) 2026 Sofía Aritz and contributors +# +# This file is part of Everest. +# +# Everest is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Everest is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Everest. If not, see . + services: everest-nextjs: build: diff --git a/eslint.config.mjs b/eslint.config.mjs index 7164c78..da4040e 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { defineConfig, globalIgnores } from "eslint/config"; import nextVitals from "eslint-config-next/core-web-vitals"; import nextTs from "eslint-config-next/typescript"; diff --git a/flake.nix b/flake.nix index d196045..4bfa705 100644 --- a/flake.nix +++ b/flake.nix @@ -1,3 +1,19 @@ +# Copyright (C) 2026 Sofía Aritz and contributors +# +# This file is part of Everest. +# +# Everest is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Everest is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Everest. If not, see . + { inputs = { # Node.js 24.13.0 due to https://github.com/vercel/next.js/issues/90826 diff --git a/next.config.ts b/next.config.ts index b9592d4..5a05439 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import type { NextConfig } from "next"; const nextConfig: NextConfig = { diff --git a/package.json b/package.json index bba7f44..c708f2e 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,11 @@ "build": "yarn build:lexicons && next build", "start": "yarn build:lexicons && yarn migrate && next start", "lint": "eslint", - + "migrate": "tsx scripts/migrate.ts", "gen-key": "TSX_TSCONFIG_PATH=./tsconfig.json node --import tsx/esm scripts/gen-key.ts", - "tap": "dotenv -e .env -- sh -c './tap/bin/tap run --webhook-url=http://localhost:3000/api/tap/webhook --collection-filters=com.sofiaritz.everest.entry --collection-filters=com.sofiaritz.everest.graph.follow --signal-collection=com.sofiaritz.everest.entry --signal-collection com.sofiaritz.everest.graph.follow --admin-password=$TAP_ADMIN_PASSWORD'" + "tap": "dotenv -e .env -- sh -c './tap/bin/tap run --webhook-url=http://localhost:3000/api/tap/webhook --collection-filters=com.sofiaritz.everest.entry --collection-filters=com.sofiaritz.everest.graph.follow --signal-collection=com.sofiaritz.everest.entry --signal-collection com.sofiaritz.everest.graph.follow --admin-password=$TAP_ADMIN_PASSWORD'", + "license-headers": "./addlicense/bin/addlicense -c \"Sofía Aritz and contributors\" -f LICENSE-HEADER ." }, "dependencies": { "@atproto/api": "^0.20.15", diff --git a/postcss.config.mjs b/postcss.config.mjs index 61e3684..3fc7ae3 100644 --- a/postcss.config.mjs +++ b/postcss.config.mjs @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + const config = { plugins: { "@tailwindcss/postcss": {}, diff --git a/scripts/gen-key.ts b/scripts/gen-key.ts index 539a7b2..23af36c 100644 --- a/scripts/gen-key.ts +++ b/scripts/gen-key.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { JoseKey } from "@atproto/oauth-client-node"; async function main() { diff --git a/scripts/migrate.ts b/scripts/migrate.ts index 8207e91..ece3b1f 100644 --- a/scripts/migrate.ts +++ b/scripts/migrate.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { getMigrator } from "@/lib/db/migrations"; import { loadEnvConfig } from "@next/env"; diff --git a/src/app/.well-known/jwks.json/route.ts b/src/app/.well-known/jwks.json/route.ts index 5d17f7e..6130c46 100644 --- a/src/app/.well-known/jwks.json/route.ts +++ b/src/app/.well-known/jwks.json/route.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { NextResponse } from "next/server"; import { JoseKey } from "@atproto/oauth-client-node"; diff --git a/src/app/actions.ts b/src/app/actions.ts index 7f478c7..10a07bf 100644 --- a/src/app/actions.ts +++ b/src/app/actions.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use server"; import { getOAuthClient } from "@/lib/auth/client"; diff --git a/src/app/api/tap/webhook/route.ts b/src/app/api/tap/webhook/route.ts index 87d898f..5edf976 100644 --- a/src/app/api/tap/webhook/route.ts +++ b/src/app/api/tap/webhook/route.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { deleteAccount, deleteEntry, deleteFollow, upsertAccount, upsertEntry, upsertFollow } from "@/lib/db/queries"; import { AtUri } from "@atproto/syntax"; import { assureAdminAuth, parseTapEvent } from "@atproto/tap"; diff --git a/src/app/atproto/oauth/callback/route.ts b/src/app/atproto/oauth/callback/route.ts index b20cda1..f63cb36 100644 --- a/src/app/atproto/oauth/callback/route.ts +++ b/src/app/atproto/oauth/callback/route.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { getOAuthClient } from "@/lib/auth/client"; import { setStoredSession } from "@/lib/session"; import { getTap } from "@/lib/tap"; diff --git a/src/app/atproto/oauth/login/route.ts b/src/app/atproto/oauth/login/route.ts index 262e122..95eba00 100644 --- a/src/app/atproto/oauth/login/route.ts +++ b/src/app/atproto/oauth/login/route.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { getOAuthClient, SCOPE } from "@/lib/auth/client"; import { NextRequest, NextResponse } from "next/server"; diff --git a/src/app/atproto/oauth/logout/route.ts b/src/app/atproto/oauth/logout/route.ts index 8d61c1e..7863e2f 100644 --- a/src/app/atproto/oauth/logout/route.ts +++ b/src/app/atproto/oauth/logout/route.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { getOAuthClient } from "@/lib/auth/client"; import { deleteSession, getStoredSession } from "@/lib/session"; import { cookies } from "next/headers"; diff --git a/src/app/auth/login/page.tsx b/src/app/auth/login/page.tsx index 251a17e..4c80cb1 100644 --- a/src/app/auth/login/page.tsx +++ b/src/app/auth/login/page.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { LoginForm } from "@/components/LoginForm"; import { getSession } from "@/lib/auth/session" import { redirect } from "next/navigation"; diff --git a/src/app/globals.css b/src/app/globals.css index fc50f0e..f5a2804 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + @import "tailwindcss"; @import "tw-animate-css"; @import "shadcn/tailwind.css"; diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 444e1c9..4b95788 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import type { Metadata } from "next"; import { Geist, Geist_Mono, Inter, Noto_Sans } from "next/font/google"; import "./globals.css"; diff --git a/src/app/oauth-client-metadata.json/index.ts b/src/app/oauth-client-metadata.json/index.ts index 426f705..d5e5f88 100644 --- a/src/app/oauth-client-metadata.json/index.ts +++ b/src/app/oauth-client-metadata.json/index.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { getOAuthClient } from "@/lib/auth/client"; import { NextResponse } from "next/server"; diff --git a/src/app/page.tsx b/src/app/page.tsx index 957b424..30abfad 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { getSession } from "@/lib/auth/session"; import { getAccountAvatar, getAccountHandle, getNetworkEntries, getRecentEntries } from "@/lib/db/queries"; import { MainFeed } from "@/components/MainFeed"; diff --git a/src/app/profile/[did]/page.tsx b/src/app/profile/[did]/page.tsx index edd524b..6e5f3ee 100644 --- a/src/app/profile/[did]/page.tsx +++ b/src/app/profile/[did]/page.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { EntryCard } from "@/components/EntryCard"; import { EntryDialog } from "@/components/EntryDialog"; import { ProfileDropdown } from "@/components/ProfileDropdown"; diff --git a/src/components/AnnouncementCard.tsx b/src/components/AnnouncementCard.tsx index b81772b..257f9db 100644 --- a/src/components/AnnouncementCard.tsx +++ b/src/components/AnnouncementCard.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { Caveat } from "next/font/google"; import { ReactNode } from "react"; diff --git a/src/components/ContentPageLayout.tsx b/src/components/ContentPageLayout.tsx index aafa130..90ea100 100644 --- a/src/components/ContentPageLayout.tsx +++ b/src/components/ContentPageLayout.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { ReactNode } from "react"; import { MountainSnow, Astroid } from "lucide-react"; import { EntryDialog } from "@/components/EntryDialog"; diff --git a/src/components/EmptyActivity.tsx b/src/components/EmptyActivity.tsx index 2983a50..14ffd44 100644 --- a/src/components/EmptyActivity.tsx +++ b/src/components/EmptyActivity.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import { Button } from "@/components/ui/button" diff --git a/src/components/EmptyProfile.tsx b/src/components/EmptyProfile.tsx index e69de29..01b53df 100644 --- a/src/components/EmptyProfile.tsx +++ b/src/components/EmptyProfile.tsx @@ -0,0 +1,18 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + diff --git a/src/components/EntryCard.tsx b/src/components/EntryCard.tsx index 920ae9e..2c5eb15 100644 --- a/src/components/EntryCard.tsx +++ b/src/components/EntryCard.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { EntryTable } from "@/lib/db"; import { Card, CardContent, CardFooter, CardHeader } from "@/components/ui/card"; import { getSession } from "@/lib/auth/session"; diff --git a/src/components/EntryDialog.tsx b/src/components/EntryDialog.tsx index 24392ef..95a92d8 100644 --- a/src/components/EntryDialog.tsx +++ b/src/components/EntryDialog.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import { useRouter } from "next/navigation" diff --git a/src/components/FollowButton.tsx b/src/components/FollowButton.tsx index 1e74e70..3993d80 100644 --- a/src/components/FollowButton.tsx +++ b/src/components/FollowButton.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client"; import { useEffect, useState, useTransition } from "react"; diff --git a/src/components/LoginForm.tsx b/src/components/LoginForm.tsx index fb2c3d7..a6ff9a8 100644 --- a/src/components/LoginForm.tsx +++ b/src/components/LoginForm.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import { useState } from "react" diff --git a/src/components/MainFeed.tsx b/src/components/MainFeed.tsx index afb6d6d..598da75 100644 --- a/src/components/MainFeed.tsx +++ b/src/components/MainFeed.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Astroid, Telescope } from "lucide-react"; import { EntryCard } from "@/components/EntryCard"; diff --git a/src/components/ProfileDropdown.tsx b/src/components/ProfileDropdown.tsx index 6195eaf..1d17f3a 100644 --- a/src/components/ProfileDropdown.tsx +++ b/src/components/ProfileDropdown.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; diff --git a/src/components/ui/avatar.tsx b/src/components/ui/avatar.tsx index 47ff2e2..97967aa 100644 --- a/src/components/ui/avatar.tsx +++ b/src/components/ui/avatar.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import * as React from "react" diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx index cacff11..2b45428 100644 --- a/src/components/ui/badge.tsx +++ b/src/components/ui/badge.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import * as React from "react" import { cva, type VariantProps } from "class-variance-authority" import { Slot } from "radix-ui" diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx index 75b8c3d..a281ddd 100644 --- a/src/components/ui/button.tsx +++ b/src/components/ui/button.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import * as React from "react" import { cva, type VariantProps } from "class-variance-authority" import { Slot } from "radix-ui" diff --git a/src/components/ui/card.tsx b/src/components/ui/card.tsx index 4458dae..871db77 100644 --- a/src/components/ui/card.tsx +++ b/src/components/ui/card.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import * as React from "react" import { cn } from "@/lib/utils" diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx index d9aecca..9378999 100644 --- a/src/components/ui/dialog.tsx +++ b/src/components/ui/dialog.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import * as React from "react" diff --git a/src/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx index c263ad5..5b29775 100644 --- a/src/components/ui/dropdown-menu.tsx +++ b/src/components/ui/dropdown-menu.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import * as React from "react" diff --git a/src/components/ui/empty.tsx b/src/components/ui/empty.tsx index b23187b..4bf9e4e 100644 --- a/src/components/ui/empty.tsx +++ b/src/components/ui/empty.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { cva, type VariantProps } from "class-variance-authority" import { cn } from "@/lib/utils" diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx index d763cd9..5e70a0f 100644 --- a/src/components/ui/input.tsx +++ b/src/components/ui/input.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import * as React from "react" import { cn } from "@/lib/utils" diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx index 1ac80f7..f64a046 100644 --- a/src/components/ui/label.tsx +++ b/src/components/ui/label.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import * as React from "react" diff --git a/src/components/ui/separator.tsx b/src/components/ui/separator.tsx index d457090..53a90bc 100644 --- a/src/components/ui/separator.tsx +++ b/src/components/ui/separator.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import * as React from "react" diff --git a/src/components/ui/tabs.tsx b/src/components/ui/tabs.tsx index 05f469f..3b0d514 100644 --- a/src/components/ui/tabs.tsx +++ b/src/components/ui/tabs.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + "use client" import * as React from "react" diff --git a/src/lib/announcements.tsx b/src/lib/announcements.tsx index 88f53b2..ffa0b34 100644 --- a/src/lib/announcements.tsx +++ b/src/lib/announcements.tsx @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { ReactNode } from "react"; export const ANNOUNCEMENTS: { uid: number; title: string; message: ReactNode; author: string; }[] = [ diff --git a/src/lib/auth/client.ts b/src/lib/auth/client.ts index bd95a8e..658ee0a 100644 --- a/src/lib/auth/client.ts +++ b/src/lib/auth/client.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { buildAtprotoLoopbackClientMetadata, JoseKey, Keyset, NodeOAuthClient, NodeSavedSession, NodeSavedState, OAuthClientMetadata, OAuthClientMetadataInput } from "@atproto/oauth-client-node"; import { getDb } from "../db"; diff --git a/src/lib/auth/session.ts b/src/lib/auth/session.ts index aa8c904..ab8c8d0 100644 --- a/src/lib/auth/session.ts +++ b/src/lib/auth/session.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { cookies } from "next/headers"; import { getOAuthClient } from "./client"; import { getStoredSession } from "../session"; diff --git a/src/lib/db/index.ts b/src/lib/db/index.ts index 4edc9f8..023236e 100644 --- a/src/lib/db/index.ts +++ b/src/lib/db/index.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { Generated, Kysely, PostgresDialect } from "kysely"; import { Pool } from "pg"; diff --git a/src/lib/db/migrations.ts b/src/lib/db/migrations.ts index 4f19de1..441827f 100644 --- a/src/lib/db/migrations.ts +++ b/src/lib/db/migrations.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { Kysely, sql } from "kysely"; import { Migration, Migrator } from "kysely/migration"; import { getDb } from "."; diff --git a/src/lib/db/queries.ts b/src/lib/db/queries.ts index 36848aa..d0230c5 100644 --- a/src/lib/db/queries.ts +++ b/src/lib/db/queries.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { AccountTable, EntryTable, FollowTable, getDb } from "@/lib/db"; import { AtIdentifierString, AtUri } from "@atproto/syntax"; import { Client } from "@atproto/lex"; diff --git a/src/lib/session/index.ts b/src/lib/session/index.ts index 6068599..e13683f 100644 --- a/src/lib/session/index.ts +++ b/src/lib/session/index.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { jwtVerify, SignJWT } from "jose"; import { type SerializeOptions } from "cookie"; diff --git a/src/lib/tap/index.ts b/src/lib/tap/index.ts index 64cb1d6..21f2f06 100644 --- a/src/lib/tap/index.ts +++ b/src/lib/tap/index.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { Tap } from "@atproto/tap"; import { listAccountDids } from "../db/queries"; diff --git a/src/lib/utils.ts b/src/lib/utils.ts index bd0c391..7c84b8a 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,3 +1,21 @@ +/** + * Copyright (C) 2026 Sofía Aritz and contributors + * + * This file is part of Everest. + * + * Everest is free software: you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * Everest is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * Everest. If not, see . + */ + import { clsx, type ClassValue } from "clsx" import { twMerge } from "tailwind-merge" -- 2.51.2