aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-01-22 22:09:45 -0800
committerFuwn <[email protected]>2026-01-22 22:09:45 -0800
commit3dc247717122628793ee88f0cd855c3d8c5afbd7 (patch)
tree8dd332ca02d417975a6098ad0e1adb6bdd0c74a8 /src
parentfix(deps): Pin SvelteKit and adapter versions for sveltekit-graphql compatibi... (diff)
downloaddue.moe-3dc247717122628793ee88f0cd855c3d8c5afbd7.tar.xz
due.moe-3dc247717122628793ee88f0cd855c3d8c5afbd7.zip
format: Apply Prettier formatting
Diffstat (limited to 'src')
-rw-r--r--src/app.html2
-rw-r--r--src/lib/Data/AniList/activity.ts4
-rw-r--r--src/lib/Data/AniList/wrapped.ts11
-rw-r--r--src/lib/Landing.svelte6
-rw-r--r--src/lib/Layout/Dropdown.svelte5
-rw-r--r--src/lib/Layout/NumberTicker.svelte4
-rw-r--r--src/lib/List/Anime/CleanAnimeList.svelte8
-rw-r--r--src/lib/List/Anime/DueAnimeList.svelte19
-rw-r--r--src/lib/List/Manga/MangaListTemplate.svelte17
-rw-r--r--src/lib/List/covers.css8
-rw-r--r--src/lib/Media/Cover/HoverCover.svelte5
-rw-r--r--src/lib/Media/links.ts8
-rw-r--r--src/lib/Notification/Notification.svelte4
-rw-r--r--src/lib/Schedule/Days.svelte5
-rw-r--r--src/lib/Settings/Categories/Calculation.svelte4
-rw-r--r--src/lib/Settings/SettingToggle.svelte4
-rw-r--r--src/lib/Tools/Likes.svelte4
-rw-r--r--src/lib/Tools/SequelCatcher/List.svelte4
-rw-r--r--src/lib/Tools/Wrapped/Tool.svelte8
-rw-r--r--src/lib/Tools/Wrapped/wrapped.css28
-rw-r--r--src/routes/+layout.svelte28
-rw-r--r--src/styles/card.css8
-rw-r--r--src/styles/colours.css7
-rw-r--r--src/styles/input.css12
-rw-r--r--src/styles/typography.css15
-rw-r--r--src/trigger/notifications.ts8
26 files changed, 155 insertions, 81 deletions
diff --git a/src/app.html b/src/app.html
index a926f09f..9f318135 100644
--- a/src/app.html
+++ b/src/app.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
<head>
<!-- HTML -->
diff --git a/src/lib/Data/AniList/activity.ts b/src/lib/Data/AniList/activity.ts
index d594557e..afe3cef3 100644
--- a/src/lib/Data/AniList/activity.ts
+++ b/src/lib/Data/AniList/activity.ts
@@ -169,8 +169,8 @@ const activitiesPage = async (
Page(page: ${page}) {
pageInfo { hasNextPage }
activities(userId: ${userIdentity.id}, createdAt_greater: ${Math.floor(
- new Date(year, 0, 1).getTime() / 1000
- )}, createdAt_lesser: ${Math.floor(new Date(year, 7, 1).getTime() / 1000)}) {
+ new Date(year, 0, 1).getTime() / 1000
+ )}, createdAt_lesser: ${Math.floor(new Date(year, 7, 1).getTime() / 1000)}) {
... on TextActivity { createdAt }
... on ListActivity { createdAt }
... on MessageActivity { createdAt }
diff --git a/src/lib/Data/AniList/wrapped.ts b/src/lib/Data/AniList/wrapped.ts
index 5b47820a..4ca9f772 100644
--- a/src/lib/Data/AniList/wrapped.ts
+++ b/src/lib/Data/AniList/wrapped.ts
@@ -65,10 +65,8 @@ const profileActivities = async (
query: `{
Page(page: ${page}) {
activities(userId: ${identity.id}, type_in: [ TEXT, MESSAGE ], createdAt_greater: ${Math.floor(
- new Date(date.getFullYear(), 0, 1).getTime() / 1000
- )}, createdAt_lesser: ${Math.floor(
- new Date(date.getFullYear(), 7, 1).getTime() / 1000
- )}) {
+ new Date(date.getFullYear(), 0, 1).getTime() / 1000
+ )}, createdAt_lesser: ${Math.floor(new Date(date.getFullYear(), 7, 1).getTime() / 1000)}) {
... on TextActivity {
type
createdAt
@@ -135,9 +133,8 @@ export const wrapped = async (
};
if (anilistAuthorisation) {
- headers[
- 'Authorization'
- ] = `${anilistAuthorisation.tokenType} ${anilistAuthorisation.accessToken}`;
+ headers['Authorization'] =
+ `${anilistAuthorisation.tokenType} ${anilistAuthorisation.accessToken}`;
}
const wrappedResponse = await (
diff --git a/src/lib/Landing.svelte b/src/lib/Landing.svelte
index 00c110b7..644d1d41 100644
--- a/src/lib/Landing.svelte
+++ b/src/lib/Landing.svelte
@@ -19,9 +19,9 @@
<p>
<a href={root('/')}>due.moe</a> automatically keeps your manga and light novel lists up to date—checking
- for new chapters, notifying you of new releases, and reminding you to update your volume count
- if you fall behind. Completed and ongoing series stay neatly organized so you can instantly see
- what needs your attention. Staying on top of your reading has never been easier.
+ for new chapters, notifying you of new releases, and reminding you to update your volume count if
+ you fall behind. Completed and ongoing series stay neatly organized so you can instantly see what
+ needs your attention. Staying on top of your reading has never been easier.
</p>
<small class="bottom">
diff --git a/src/lib/Layout/Dropdown.svelte b/src/lib/Layout/Dropdown.svelte
index fb270dfe..0cbf2f6f 100644
--- a/src/lib/Layout/Dropdown.svelte
+++ b/src/lib/Layout/Dropdown.svelte
@@ -89,7 +89,10 @@
transform: translateY(-20px);
visibility: hidden;
$delay: 0.25s;
- transition: opacity $delay ease, transform $delay ease, visibility 0s linear $delay;
+ transition:
+ opacity $delay ease,
+ transform $delay ease,
+ visibility 0s linear $delay;
left: var(--dropdown-left);
transform: var(--dropdown-transform);
z-index: 1;
diff --git a/src/lib/Layout/NumberTicker.svelte b/src/lib/Layout/NumberTicker.svelte
index b5e2f49c..226e89c9 100644
--- a/src/lib/Layout/NumberTicker.svelte
+++ b/src/lib/Layout/NumberTicker.svelte
@@ -27,7 +27,9 @@
$duration: 0.2s;
opacity: 0;
- transition: opacity $duration ease-out, transform $duration ease-out;
+ transition:
+ opacity $duration ease-out,
+ transform $duration ease-out;
}
.counter.visible {
diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte
index 3a2c84b2..1d57997b 100644
--- a/src/lib/List/Anime/CleanAnimeList.svelte
+++ b/src/lib/List/Anime/CleanAnimeList.svelte
@@ -63,10 +63,10 @@
let filterKind = upcoming
? 'Upcoming'
: notYetReleased
- ? 'NotYetReleased'
- : completed
- ? 'Completed'
- : 'Due';
+ ? 'NotYetReleased'
+ : completed
+ ? 'Completed'
+ : 'Due';
const filterKey = `${filterKind}AnimeListFilter`;
$: selectedList = disableFilter ? 'All' : ($stateBin[filterKey] as string) || 'All';
diff --git a/src/lib/List/Anime/DueAnimeList.svelte b/src/lib/List/Anime/DueAnimeList.svelte
index 8650590b..95be3b6c 100644
--- a/src/lib/List/Anime/DueAnimeList.svelte
+++ b/src/lib/List/Anime/DueAnimeList.svelte
@@ -19,14 +19,17 @@
let startTime: number;
let endTime: number;
- const keyCacher = setInterval(() => {
- startTime = performance.now();
- endTime = -1;
- animeLists = mediaListCollection(user, $identity, Type.Anime, $anime, $lastPruneTimes.anime, {
- forcePrune: true,
- addNotification
- });
- }, $settings.cacheMinutes * 1000 * 60);
+ const keyCacher = setInterval(
+ () => {
+ startTime = performance.now();
+ endTime = -1;
+ animeLists = mediaListCollection(user, $identity, Type.Anime, $anime, $lastPruneTimes.anime, {
+ forcePrune: true,
+ addNotification
+ });
+ },
+ $settings.cacheMinutes * 1000 * 60
+ );
onMount(async () => {
startTime = performance.now();
diff --git a/src/lib/List/Manga/MangaListTemplate.svelte b/src/lib/List/Manga/MangaListTemplate.svelte
index a330f0d4..b2d95dc5 100644
--- a/src/lib/List/Manga/MangaListTemplate.svelte
+++ b/src/lib/List/Manga/MangaListTemplate.svelte
@@ -46,13 +46,16 @@
let forceFlag = false;
let lastListSize = 5;
- const keyCacher = setInterval(() => {
- startTime = performance.now();
- endTime = -1;
- mangaLists = mediaListCollection(user, $identity, Type.Manga, $manga, $lastPruneTimes.manga, {
- addNotification
- });
- }, $settings.cacheMinutes * 1000 * 60);
+ const keyCacher = setInterval(
+ () => {
+ startTime = performance.now();
+ endTime = -1;
+ mangaLists = mediaListCollection(user, $identity, Type.Manga, $manga, $lastPruneTimes.manga, {
+ addNotification
+ });
+ },
+ $settings.cacheMinutes * 1000 * 60
+ );
onMount(async () => {
if (browser) {
diff --git a/src/lib/List/covers.css b/src/lib/List/covers.css
index e0b69c78..c83b984e 100644
--- a/src/lib/List/covers.css
+++ b/src/lib/List/covers.css
@@ -22,14 +22,18 @@
.cover-card-image {
border-radius: 8px;
- transition: transform 0.45s ease, box-shadow 0.45s ease;
+ transition:
+ transform 0.45s ease,
+ box-shadow 0.45s ease;
margin-bottom: 0.5em;
}
.cover-card-image:hover {
transform: scale(1.1);
position: relative;
- transition: transform 0.45s ease, box-shadow 0.45s ease;
+ transition:
+ transform 0.45s ease,
+ box-shadow 0.45s ease;
}
.entry::after {
diff --git a/src/lib/Media/Cover/HoverCover.svelte b/src/lib/Media/Cover/HoverCover.svelte
index 51cbf5d2..81d6d3fc 100644
--- a/src/lib/Media/Cover/HoverCover.svelte
+++ b/src/lib/Media/Cover/HoverCover.svelte
@@ -28,7 +28,10 @@
height: auto;
display: none;
border-radius: 8px;
- transition: opacity $coverTransitionTime ease-in-out, top 0.3s ease, left 0.3s ease;
+ transition:
+ opacity $coverTransitionTime ease-in-out,
+ top 0.3s ease,
+ left 0.3s ease;
}
.show {
diff --git a/src/lib/Media/links.ts b/src/lib/Media/links.ts
index 626e892a..209afb28 100644
--- a/src/lib/Media/links.ts
+++ b/src/lib/Media/links.ts
@@ -42,10 +42,10 @@ export const outboundLink = (
return search
? `https://myanimelist.net/anime.php?q=${title}&cat=anime`
: media.idMal
- ? `https://myanimelist.net/anime/${media.idMal}`
- : `https://myanimelist.net/anime.php?q=${encodeURIComponent(
- media.title.native || media.title.english || media.title.romaji
- )}&cat=anime`;
+ ? `https://myanimelist.net/anime/${media.idMal}`
+ : `https://myanimelist.net/anime.php?q=${encodeURIComponent(
+ media.title.native || media.title.english || media.title.romaji
+ )}&cat=anime`;
}
}
};
diff --git a/src/lib/Notification/Notification.svelte b/src/lib/Notification/Notification.svelte
index 6764f46e..c4232ced 100644
--- a/src/lib/Notification/Notification.svelte
+++ b/src/lib/Notification/Notification.svelte
@@ -59,7 +59,9 @@
#notification {
background-color: var(--base001);
- box-shadow: rgba(0, 0, 11, 0.2) 0px 7px 29px 0px, 0 0 0 4px var(--base0E);
+ box-shadow:
+ rgba(0, 0, 11, 0.2) 0px 7px 29px 0px,
+ 0 0 0 4px var(--base0E);
widows: 100%;
}
diff --git a/src/lib/Schedule/Days.svelte b/src/lib/Schedule/Days.svelte
index f7a49029..99955897 100644
--- a/src/lib/Schedule/Days.svelte
+++ b/src/lib/Schedule/Days.svelte
@@ -207,7 +207,10 @@
}
.today {
- box-shadow: 0 2.5px 10px var(--base01), 0 0 0 5px var(--base0E), 0 4px 30px var(--base01);
+ box-shadow:
+ 0 2.5px 10px var(--base01),
+ 0 0 0 5px var(--base0E),
+ 0 4px 30px var(--base01);
}
.list {
diff --git a/src/lib/Settings/Categories/Calculation.svelte b/src/lib/Settings/Categories/Calculation.svelte
index 4a202fff..f01cc1ff 100644
--- a/src/lib/Settings/Categories/Calculation.svelte
+++ b/src/lib/Settings/Categories/Calculation.svelte
@@ -48,8 +48,8 @@
Out-of-date volume warnings display an alert when there is a mismatch between the chapter
progress and number of volumes you have logged for a given title.
<br />
- For example, an alert would be shown if you have tracked a manga up to Ch. 50 (Vol. 5), but have
- less than 4 volumes logged.
+ For example, an alert would be shown if you have tracked a manga up to Ch. 50 (Vol. 5), but have less
+ than 4 volumes logged.
<br />
diff --git a/src/lib/Settings/SettingToggle.svelte b/src/lib/Settings/SettingToggle.svelte
index 0d177b50..bacb43c3 100644
--- a/src/lib/Settings/SettingToggle.svelte
+++ b/src/lib/Settings/SettingToggle.svelte
@@ -14,8 +14,8 @@
disabled
? {}
: $settings[setting]
- ? settings.setKey(setting, false)
- : settings.setKey(setting, true)}
+ ? settings.setKey(setting, false)
+ : settings.setKey(setting, true)}
>
{#if disabled}
<strike>
diff --git a/src/lib/Tools/Likes.svelte b/src/lib/Tools/Likes.svelte
index 7b626c94..46d1edaf 100644
--- a/src/lib/Tools/Likes.svelte
+++ b/src/lib/Tools/Likes.svelte
@@ -15,8 +15,8 @@
submissionType === 'activity'
? activityLikes(Number(normalisedSubmission))
: submissionType === 'thread'
- ? threadLikes(Number(normalisedSubmission))
- : Promise.resolve(null);
+ ? threadLikes(Number(normalisedSubmission))
+ : Promise.resolve(null);
</script>
<InputTemplate
diff --git a/src/lib/Tools/SequelCatcher/List.svelte b/src/lib/Tools/SequelCatcher/List.svelte
index 009df219..0bf087ea 100644
--- a/src/lib/Tools/SequelCatcher/List.svelte
+++ b/src/lib/Tools/SequelCatcher/List.svelte
@@ -20,8 +20,8 @@
? undefined
: media
: swap
- ? media
- : undefined;
+ ? media
+ : undefined;
</script>
<input type="checkbox" bind:checked={includeCurrent} /> Include current (watching, rewatching,
diff --git a/src/lib/Tools/Wrapped/Tool.svelte b/src/lib/Tools/Wrapped/Tool.svelte
index ee21f76c..0d2d6292 100644
--- a/src/lib/Tools/Wrapped/Tool.svelte
+++ b/src/lib/Tools/Wrapped/Tool.svelte
@@ -443,8 +443,8 @@
(includeRepeats
? true
: item.startDate.year === selectedYear || item.endDate.year === selectedYear
- ? true
- : item.mediaListEntry?.repeat === 0) &&
+ ? true
+ : item.mediaListEntry?.repeat === 0) &&
(item.mediaListEntry?.startedAt.year === selectedYear ||
item.mediaListEntry?.completedAt.year === selectedYear ||
((item.mediaListEntry?.createdAt
@@ -498,8 +498,8 @@
(includeRepeats
? true
: item.startDate.year === selectedYear || item.endDate.year === selectedYear
- ? true
- : item.mediaListEntry?.repeat === 0) &&
+ ? true
+ : item.mediaListEntry?.repeat === 0) &&
(item.mediaListEntry?.startedAt.year === selectedYear ||
item.mediaListEntry?.completedAt.year === selectedYear ||
((item.mediaListEntry?.createdAt
diff --git a/src/lib/Tools/Wrapped/wrapped.css b/src/lib/Tools/Wrapped/wrapped.css
index 84e00d37..c73d34c3 100644
--- a/src/lib/Tools/Wrapped/wrapped.css
+++ b/src/lib/Tools/Wrapped/wrapped.css
@@ -8,14 +8,34 @@
column-gap: 1.5em;
padding: 2%;
justify-content: center;
- font-family: Roboto, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell,
- Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
+ font-family:
+ Roboto,
+ -apple-system,
+ BlinkMacSystemFont,
+ Segoe UI,
+ Oxygen,
+ Ubuntu,
+ Cantarell,
+ Fira Sans,
+ Droid Sans,
+ Helvetica Neue,
+ sans-serif;
background-color: #0b1622;
}
.categories-grid b {
- font-family: Overpass, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, Ubuntu, Cantarell,
- Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
+ font-family:
+ Overpass,
+ -apple-system,
+ BlinkMacSystemFont,
+ Segoe UI,
+ Oxygen,
+ Ubuntu,
+ Cantarell,
+ Fira Sans,
+ Droid Sans,
+ Helvetica Neue,
+ sans-serif;
font-weight: 600;
}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 90f804ac..d9caca74 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -61,10 +61,10 @@
$: way = data.url.includes('/user')
? 200
: $previousPage && $previousPage.includes('/user')
- ? -200
- : navigationOrder.indexOf(data.url) > navigationOrder.indexOf($previousPage ?? '/')
- ? 200
- : -200;
+ ? -200
+ : navigationOrder.indexOf(data.url) > navigationOrder.indexOf($previousPage ?? '/')
+ ? 200
+ : -200;
const handleScroll = () => {
const currentScrollPosition = window.scrollY;
@@ -273,8 +273,19 @@
<style lang="scss">
.header {
- font-family: 'DM Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
- Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ font-family:
+ 'DM Sans',
+ system-ui,
+ -apple-system,
+ BlinkMacSystemFont,
+ 'Segoe UI',
+ Roboto,
+ Oxygen,
+ Ubuntu,
+ Cantarell,
+ 'Open Sans',
+ 'Helvetica Neue',
+ sans-serif;
font-size: 1.05em;
font-weight: 600;
padding: 0.8rem 0.4rem;
@@ -330,7 +341,10 @@
display: inline-block;
vertical-align: middle;
border-radius: 8px;
- box-shadow: 0 1.5px 9px var(--base01), 0 0 0 4px var(--base0E), 0 4px 30px var(--base01);
+ box-shadow:
+ 0 1.5px 9px var(--base01),
+ 0 0 0 4px var(--base0E),
+ 0 4px 30px var(--base01);
}
.separator {
diff --git a/src/styles/card.css b/src/styles/card.css
index 218f00df..aca9e4e4 100644
--- a/src/styles/card.css
+++ b/src/styles/card.css
@@ -13,12 +13,16 @@ details,
}
.header {
- box-shadow: rgba(0, 0, 11, 0.2) 0px 7px 29px 0px, 0 0 0 5px var(--base02);
+ box-shadow:
+ rgba(0, 0, 11, 0.2) 0px 7px 29px 0px,
+ 0 0 0 5px var(--base02);
}
@media (prefers-color-scheme: light) {
.header {
- box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px, 0 0 0 5px var(--base02);
+ box-shadow:
+ rgba(100, 100, 111, 0.2) 0px 7px 29px 0px,
+ 0 0 0 5px var(--base02);
}
}
diff --git a/src/styles/colours.css b/src/styles/colours.css
index b7fc885d..2c55aa81 100644
--- a/src/styles/colours.css
+++ b/src/styles/colours.css
@@ -43,6 +43,9 @@
}
* {
- transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,
- border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
+ transition:
+ color 0.15s ease-in-out,
+ background-color 0.15s ease-in-out,
+ border-color 0.15s ease-in-out,
+ box-shadow 0.15s ease-in-out;
}
diff --git a/src/styles/input.css b/src/styles/input.css
index 125f214f..b8ae7574 100644
--- a/src/styles/input.css
+++ b/src/styles/input.css
@@ -11,7 +11,9 @@ textarea {
border: none;
border-radius: 4px;
place-content: center;
- transition: background-color 0.15s ease-in-out, transform 0.15s ease-in-out;
+ transition:
+ background-color 0.15s ease-in-out,
+ transform 0.15s ease-in-out;
/* box-shadow: 0 4px 30px var(--base01); */
box-shadow: rgba(0, 0, 11, 0.1) 0px 7px 29px 0px;
}
@@ -73,7 +75,9 @@ input[type='checkbox'] {
margin: 0;
width: 1.15em;
height: 1.15em;
- transition: background-color 0.15s ease-in-out, transform 0.15s ease-in-out;
+ transition:
+ background-color 0.15s ease-in-out,
+ transform 0.15s ease-in-out;
}
input[type='checkbox']:checked {
@@ -103,7 +107,9 @@ button {
color: var(--base00);
border: none;
border-radius: 4px;
- transition: background-color 0.15s ease-in-out, transform 0.15s ease-in-out;
+ transition:
+ background-color 0.15s ease-in-out,
+ transform 0.15s ease-in-out;
/* box-shadow: 0 4px 30px var(--base01); */
box-shadow: rgba(0, 0, 11, 0.1) 0px 7px 29px 0px;
}
diff --git a/src/styles/typography.css b/src/styles/typography.css
index 70ee377b..f33fdc92 100644
--- a/src/styles/typography.css
+++ b/src/styles/typography.css
@@ -3,8 +3,19 @@
@import url('https://proxy.due.moe/?q=https://fonts.googleapis.com/css?family=DM+Sans:400,500,600,700&display=swap');
body {
- font-family: 'DM Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
- Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ font-family:
+ 'DM Sans',
+ system-ui,
+ -apple-system,
+ BlinkMacSystemFont,
+ 'Segoe UI',
+ Roboto,
+ Oxygen,
+ Ubuntu,
+ Cantarell,
+ 'Open Sans',
+ 'Helvetica Neue',
+ sans-serif;
font-size: 1em;
line-height: 1.5;
/* font-weight: 300; */
diff --git a/src/trigger/notifications.ts b/src/trigger/notifications.ts
index ba0e6a27..e801e07d 100644
--- a/src/trigger/notifications.ts
+++ b/src/trigger/notifications.ts
@@ -9,12 +9,8 @@ export const notificationsTask = schedules.task({
const triggerProjectReference = ctx.project.ref;
const getUserSubscriptions = async () => {
const { data, error } = await createClient(
- (
- await envvars.retrieve(triggerProjectReference, environment, 'SUPABASE_URL')
- ).value,
- (
- await envvars.retrieve(triggerProjectReference, environment, 'SUPABASE_ANON_KEY')
- ).value
+ (await envvars.retrieve(triggerProjectReference, environment, 'SUPABASE_URL')).value,
+ (await envvars.retrieve(triggerProjectReference, environment, 'SUPABASE_ANON_KEY')).value
)
.from('user_notifications')
.select('*');