aboutsummaryrefslogtreecommitdiff
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/+error.svelte (renamed from src/routes/__error.svelte)22
-rw-r--r--src/routes/+layout.svelte (renamed from src/routes/__layout.svelte)0
-rw-r--r--src/routes/+page.server.ts7
-rw-r--r--src/routes/+page.svelte (renamed from src/routes/index.svelte)16
-rw-r--r--src/routes/[player=username]/+page.ts6
-rw-r--r--src/routes/[player].ts14
-rw-r--r--src/routes/auctionprices/+page.svelte (renamed from src/routes/auctionprices.svelte)27
-rw-r--r--src/routes/auctionprices/+page.ts13
-rw-r--r--src/routes/chat/+page.svelte (renamed from src/routes/chat.svelte)0
-rw-r--r--src/routes/election/+page.svelte (renamed from src/routes/election.svelte)30
-rw-r--r--src/routes/election/+page.ts8
-rw-r--r--src/routes/items/+page.svelte (renamed from src/routes/items.svelte)15
-rw-r--r--src/routes/items/+page.ts6
-rw-r--r--src/routes/leaderboard/+page.ts6
-rw-r--r--src/routes/leaderboard/[name].ts12
-rw-r--r--src/routes/leaderboard/[name]/+server.ts7
-rw-r--r--src/routes/leaderboard/index.ts11
-rw-r--r--src/routes/leaderboards/+page.svelte (renamed from src/routes/leaderboards/index.svelte)15
-rw-r--r--src/routes/leaderboards/+page.ts6
-rw-r--r--src/routes/leaderboards/[name]/+page.svelte (renamed from src/routes/leaderboards/[name].svelte)19
-rw-r--r--src/routes/leaderboards/[name]/+page.ts13
-rw-r--r--src/routes/loggedin/+server.ts (renamed from src/routes/loggedin.ts)25
-rw-r--r--src/routes/login.ts36
-rw-r--r--src/routes/login/+server.ts18
-rw-r--r--src/routes/logout/+server.ts (renamed from src/routes/logout.ts)15
-rw-r--r--src/routes/player/+page.server.ts12
-rw-r--r--src/routes/player/[player]/+page.svelte (renamed from src/routes/player/[player]/index.svelte)37
-rw-r--r--src/routes/player/[player]/+page.ts19
-rw-r--r--src/routes/player/[player]/[profile]/+page.svelte (renamed from src/routes/player/[player]/[profile].svelte)97
-rw-r--r--src/routes/player/[player]/[profile]/+page.ts40
-rw-r--r--src/routes/player/[player]/[profile]/sections/AccessoryBagUpgrades.svelte100
-rw-r--r--src/routes/player/[player]/[profile]/sections/Achievements.svelte87
-rw-r--r--src/routes/player/[player]/[profile]/sections/Armor.svelte14
-rw-r--r--src/routes/player/[player]/[profile]/sections/Auctions.svelte109
-rw-r--r--src/routes/player/[player]/[profile]/sections/Bank.svelte89
-rw-r--r--src/routes/player/[player]/[profile]/sections/Claimed.svelte33
-rw-r--r--src/routes/player/[player]/[profile]/sections/Collections.svelte62
-rw-r--r--src/routes/player/[player]/[profile]/sections/Coop.svelte79
-rw-r--r--src/routes/player/[player]/[profile]/sections/Essence.svelte27
-rw-r--r--src/routes/player/[player]/[profile]/sections/FarmingContests.svelte62
-rw-r--r--src/routes/player/[player]/[profile]/sections/Harp.svelte72
-rw-r--r--src/routes/player/[player]/[profile]/sections/Infobox.svelte83
-rw-r--r--src/routes/player/[player]/[profile]/sections/Inventories.svelte105
-rw-r--r--src/routes/player/[player]/[profile]/sections/Leaderboards.svelte46
-rw-r--r--src/routes/player/[player]/[profile]/sections/Minions.svelte40
-rw-r--r--src/routes/player/[player]/[profile]/sections/Pets.svelte79
-rw-r--r--src/routes/player/[player]/[profile]/sections/Skills.svelte87
-rw-r--r--src/routes/player/[player]/[profile]/sections/Slayers.svelte74
-rw-r--r--src/routes/player/[player]/[profile]/sections/StatList.svelte48
-rw-r--r--src/routes/player/[player]/[profile]/sections/Zones.svelte42
-rw-r--r--src/routes/player/index.ts14
-rw-r--r--src/routes/profile/+page.server.ts7
-rw-r--r--src/routes/profile/+page.svelte (renamed from src/routes/profile/index.svelte)71
-rw-r--r--src/routes/profile/+page.ts44
-rw-r--r--src/routes/profile/update/+server.ts (renamed from src/routes/profile/update.ts)69
-rw-r--r--src/routes/verify.ts75
-rw-r--r--src/routes/verify/+page.server.ts75
-rw-r--r--src/routes/verify/+page.svelte (renamed from src/routes/verify.svelte)25
-rw-r--r--src/routes/verify/+page.ts13
59 files changed, 1737 insertions, 546 deletions
diff --git a/src/routes/__error.svelte b/src/routes/+error.svelte
index 3057f19..83b4407 100644
--- a/src/routes/__error.svelte
+++ b/src/routes/+error.svelte
@@ -1,22 +1,12 @@
-<script lang="ts" context="module">
- import type { Load } from '@sveltejs/kit'
-
- export const load: Load = async ({ error, status }) => {
- return {
- props: {
- error,
- status,
- },
- }
- }
-</script>
-
<script lang="ts">
import Header from '$lib/Header.svelte'
import Head from '$lib/Head.svelte'
- export let status: number
- export let error: Error
+ import { page } from '$app/stores'
+
+ // sveltekit bug: types of error and status say they can be null but they can't
+ let error = $page.error!
+ let status = $page.status!
</script>
<Head title={error.message} />
@@ -26,7 +16,7 @@
<div>
<h1>{status}</h1>
<p>{error.message}</p>
- <a href="/" sveltekit:prefetch>Home</a>
+ <a href="/" data-sveltekit-preload-data="hover">Home</a>
</div>
</main>
diff --git a/src/routes/__layout.svelte b/src/routes/+layout.svelte
index 74e29b9..74e29b9 100644
--- a/src/routes/__layout.svelte
+++ b/src/routes/+layout.svelte
diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts
new file mode 100644
index 0000000..4596c1b
--- /dev/null
+++ b/src/routes/+page.server.ts
@@ -0,0 +1,7 @@
+import type { ServerLoad } from '@sveltejs/kit'
+
+export const load = (({ locals }) => {
+ return {
+ loggedIn: locals.sid !== undefined,
+ }
+}) satisfies ServerLoad
diff --git a/src/routes/index.svelte b/src/routes/+page.svelte
index 851f70e..3c518fb 100644
--- a/src/routes/index.svelte
+++ b/src/routes/+page.svelte
@@ -1,15 +1,3 @@
-<script lang="ts" context="module">
- import type { Load } from '@sveltejs/kit'
-
- export const load: Load = async ({ params, fetch, session }) => {
- return {
- props: {
- loggedIn: session.sid !== undefined,
- },
- }
- }
-</script>
-
<script lang="ts">
import Username from '$lib/minecraft/Username.svelte'
import SearchUser from '$lib/SearchUser.svelte'
@@ -17,10 +5,12 @@
import Head from '$lib/Head.svelte'
import Emoji from '$lib/Emoji.svelte'
import LoginButton from '$lib/LoginButton.svelte'
+ import type { PageData } from './$types'
export const hydrate = false
- export let loggedIn: boolean
+ export let data: PageData
+ export let loggedIn: boolean = data.loggedIn
</script>
<svelte:head>
diff --git a/src/routes/[player=username]/+page.ts b/src/routes/[player=username]/+page.ts
new file mode 100644
index 0000000..289cd48
--- /dev/null
+++ b/src/routes/[player=username]/+page.ts
@@ -0,0 +1,6 @@
+import { redirect } from '@sveltejs/kit'
+import type { PageLoad } from './$types'
+
+export const load = (({ params }) => {
+ throw redirect(303, `/player/${params.player}`)
+}) satisfies PageLoad \ No newline at end of file
diff --git a/src/routes/[player].ts b/src/routes/[player].ts
deleted file mode 100644
index 3f79368..0000000
--- a/src/routes/[player].ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import type { ParamMatcher, RequestHandler } from '@sveltejs/kit'
-
-export const match: ParamMatcher = (param) => {
- return /^\w{2,16}$/.test(param)
-}
-
-export const get: RequestHandler = async ({ params }) => {
- return {
- status: 303,
- headers: {
- location: `/player/${params.player}`
- }
- }
-} \ No newline at end of file
diff --git a/src/routes/auctionprices.svelte b/src/routes/auctionprices/+page.svelte
index ac75c86..844af04 100644
--- a/src/routes/auctionprices.svelte
+++ b/src/routes/auctionprices/+page.svelte
@@ -1,21 +1,3 @@
-<script lang="ts" context="module">
- import type { Load } from '@sveltejs/kit'
- import { fetchApi } from '$lib/api'
-
- export const load: Load = async ({ params, fetch }) => {
- const auctionItemsPromise = fetchApi(`auctionitems`, fetch).then(r => r.json())
- const data = await fetchApi(`auctionprices`, fetch).then(r => r.json())
- const auctionItems = await auctionItemsPromise
-
- return {
- props: {
- data,
- auctionItems,
- },
- }
- }
-</script>
-
<script lang="ts">
import Header from '$lib/Header.svelte'
import Head from '$lib/Head.svelte'
@@ -23,12 +5,15 @@
import type { ItemAuctionsSchema } from '$lib/APITypes'
import AuctionPriceScatterplot from '$lib/AuctionPriceScatterplot.svelte'
import AuctionPreviewTooltip from '$lib/AuctionPreviewTooltip.svelte'
- import { browser } from '$app/env'
+ import { browser } from '$app/environment'
import Item from '$lib/minecraft/Item.svelte'
import furfskyReborn from 'skyblock-assets/matchers/furfsky_reborn.json'
+ import type { PageData } from './$types'
+ import { fetchApi } from '$lib/api'
- export let data: ItemAuctionsSchema[]
- export let auctionItems: Record<string, { display: { name: string }; vanillaId?: string }>
+ export let data: PageData
+ let auctionPrices: ItemAuctionsSchema[] = data.prices
+ let auctionItems: Record<string, { display: { name: string }; vanillaId?: string }> = data.items
let currentlyPreviewedAuction: PreviewedAuctionData | null = null
diff --git a/src/routes/auctionprices/+page.ts b/src/routes/auctionprices/+page.ts
new file mode 100644
index 0000000..31af8e3
--- /dev/null
+++ b/src/routes/auctionprices/+page.ts
@@ -0,0 +1,13 @@
+import type { PageLoad } from './$types'
+import { fetchApi } from '$lib/api'
+
+export const load = (async ({ fetch }) => {
+ const auctionItemsPromise = fetchApi(`auctionitems`, fetch).then(r => r.json())
+ const prices = await fetchApi(`auctionprices`, fetch).then(r => r.json())
+ const items = await auctionItemsPromise
+
+ return {
+ prices,
+ items,
+ }
+}) satisfies PageLoad
diff --git a/src/routes/chat.svelte b/src/routes/chat/+page.svelte
index df7aeee..df7aeee 100644
--- a/src/routes/chat.svelte
+++ b/src/routes/chat/+page.svelte
diff --git a/src/routes/election.svelte b/src/routes/election/+page.svelte
index ad869a1..d270425 100644
--- a/src/routes/election.svelte
+++ b/src/routes/election/+page.svelte
@@ -1,29 +1,12 @@
-<script lang="ts" context="module">
- import type { Load } from '@sveltejs/kit'
- import { fetchApi } from '$lib/api'
-
- export const load: Load = async ({ params, fetch }) => {
- const data = await fetchApi(`election?t=${Math.floor(Date.now() / 1000)}`, fetch).then(r =>
- r.json()
- )
-
- return {
- props: {
- data,
- },
- }
- }
-</script>
-
<script lang="ts">
import Header from '$lib/Header.svelte'
import Head from '$lib/Head.svelte'
import { colorCodes, formattingCodeToHtml, millisecondsToTime, skyblockTime } from '$lib/utils'
import type { ElectionData } from '$lib/APITypes'
import { onDestroy, onMount } from 'svelte'
- import MayorSkin from '$lib/MayorSkin.svelte'
+ import MayorSkin from '../../lib/MayorSkin.svelte'
import { invalidate } from '$app/navigation'
- import { browser } from '$app/env'
+ import { browser } from '$app/environment'
export let data: ElectionData
@@ -73,16 +56,9 @@
<b>Last API update:</b>
{millisecondsToTime(currentTime - data.lastUpdated, {
smallestUnit: 1,
- parts: 1,
+ parts: 3,
})} ago
</p>
- <p>
- <b>Next API update:</b>
- {millisecondsToTime(10 * 60 * 1000 - (currentTime - data.lastUpdated), {
- smallestUnit: 1,
- parts: 1,
- })}
- </p>
</div>
{/if}
<h1>SkyBlock Mayor Election Status</h1>
diff --git a/src/routes/election/+page.ts b/src/routes/election/+page.ts
new file mode 100644
index 0000000..e41087d
--- /dev/null
+++ b/src/routes/election/+page.ts
@@ -0,0 +1,8 @@
+import { fetchApi } from '$lib/api'
+import type { PageLoad } from './$types'
+
+export const load = (async ({ fetch }) => {
+ return await fetchApi(`election?t=${Math.floor(Date.now() / 1000)}`, fetch).then(r =>
+ r.json()
+ )
+}) satisfies PageLoad
diff --git a/src/routes/items.svelte b/src/routes/items/+page.svelte
index 82b3ee3..e378bdf 100644
--- a/src/routes/items.svelte
+++ b/src/routes/items/+page.svelte
@@ -1,18 +1,3 @@
-<script lang="ts" context="module">
- import type { Load } from '@sveltejs/kit'
- import { fetchApi } from '$lib/api'
-
- export const load: Load = async ({ params, fetch }) => {
- const data = await fetchApi(`items`, fetch).then(r => r.json())
-
- return {
- props: {
- data,
- },
- }
- }
-</script>
-
<script lang="ts">
import Header from '$lib/Header.svelte'
import Head from '$lib/Head.svelte'
diff --git a/src/routes/items/+page.ts b/src/routes/items/+page.ts
new file mode 100644
index 0000000..e5bb249
--- /dev/null
+++ b/src/routes/items/+page.ts
@@ -0,0 +1,6 @@
+import { fetchApi } from '$lib/api'
+import type { PageLoad } from './$types'
+
+export const load = (async ({ fetch }) => {
+ return await fetchApi(`items`, fetch).then(r => r.json())
+}) satisfies PageLoad
diff --git a/src/routes/leaderboard/+page.ts b/src/routes/leaderboard/+page.ts
new file mode 100644
index 0000000..68f69ac
--- /dev/null
+++ b/src/routes/leaderboard/+page.ts
@@ -0,0 +1,6 @@
+import { redirect } from '@sveltejs/kit'
+import type { PageLoad } from './$types'
+
+export const load = (() => {
+ throw redirect(303, '/leaderboards')
+}) satisfies PageLoad
diff --git a/src/routes/leaderboard/[name].ts b/src/routes/leaderboard/[name].ts
deleted file mode 100644
index 11f3468..0000000
--- a/src/routes/leaderboard/[name].ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import type { RequestHandler } from '@sveltejs/kit'
-
-// The route /leaderboard/<name> was moved to /leaderboards/<name> for
-// consistency.
-export const get: RequestHandler = ({ params }) => {
- return {
- status: 303,
- headers: {
- location: `/leaderboards/${params.name}`
- }
- }
-}
diff --git a/src/routes/leaderboard/[name]/+server.ts b/src/routes/leaderboard/[name]/+server.ts
new file mode 100644
index 0000000..2a1dd38
--- /dev/null
+++ b/src/routes/leaderboard/[name]/+server.ts
@@ -0,0 +1,7 @@
+import { redirect, type RequestHandler } from '@sveltejs/kit'
+
+// The route /leaderboard/<name> was moved to /leaderboards/<name> for
+// consistency.
+export const GET = (({ params }) => {
+ throw redirect(303, `/leaderboards/${params.name}`)
+}) satisfies RequestHandler
diff --git a/src/routes/leaderboard/index.ts b/src/routes/leaderboard/index.ts
deleted file mode 100644
index e904469..0000000
--- a/src/routes/leaderboard/index.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import type { RequestHandler } from '@sveltejs/kit'
-
-
-export const get: RequestHandler = () => {
- return {
- status: 303,
- headers: {
- location: '/leaderboards'
- }
- }
-}
diff --git a/src/routes/leaderboards/index.svelte b/src/routes/leaderboards/+page.svelte
index 50687c8..1d66ef5 100644
--- a/src/routes/leaderboards/index.svelte
+++ b/src/routes/leaderboards/+page.svelte
@@ -1,18 +1,3 @@
-<script lang="ts" context="module">
- import type { Load } from '@sveltejs/kit'
- import { fetchApi } from '$lib/api'
-
- export const load: Load = async ({ fetch }) => {
- const data = await fetchApi(`leaderboards`, fetch).then(r => r.json())
-
- return {
- props: {
- data,
- },
- }
- }
-</script>
-
<script lang="ts">
import Header from '$lib/Header.svelte'
import Head from '$lib/Head.svelte'
diff --git a/src/routes/leaderboards/+page.ts b/src/routes/leaderboards/+page.ts
new file mode 100644
index 0000000..f28ac79
--- /dev/null
+++ b/src/routes/leaderboards/+page.ts
@@ -0,0 +1,6 @@
+import type { PageLoad } from './$types'
+import { fetchApi } from '$lib/api'
+
+export const load = (async ({ fetch }) => {
+ return await fetchApi(`leaderboards`, fetch).then(r => r.json())
+}) satisfies PageLoad
diff --git a/src/routes/leaderboards/[name].svelte b/src/routes/leaderboards/[name]/+page.svelte
index 75000a9..cfb7311 100644
--- a/src/routes/leaderboards/[name].svelte
+++ b/src/routes/leaderboards/[name]/+page.svelte
@@ -1,22 +1,3 @@
-<script lang="ts" context="module">
- import type { Load } from '@sveltejs/kit'
- import { fetchApi } from '$lib/api'
-
- export const load: Load = async ({ params, fetch }) => {
- const dataText = await fetchApi(`leaderboards/${params.name}`, fetch).then(r => r.text())
-
- const data = JSON.parse(dataText)
-
- if (data.list.length === 0) return { status: 404, error: 'Unknown leaderboard' }
-
- return {
- props: {
- data,
- },
- } as any
- }
-</script>
-
<script lang="ts">
import Header from '$lib/Header.svelte'
import Head from '$lib/Head.svelte'
diff --git a/src/routes/leaderboards/[name]/+page.ts b/src/routes/leaderboards/[name]/+page.ts
new file mode 100644
index 0000000..735be61
--- /dev/null
+++ b/src/routes/leaderboards/[name]/+page.ts
@@ -0,0 +1,13 @@
+import type { PageLoad } from './$types'
+import { fetchApi } from '$lib/api'
+import { error } from '@sveltejs/kit'
+
+export const load = (async ({ params, fetch }) => {
+ const dataText = await fetchApi(`leaderboards/${params.name}`, fetch).then(r => r.text())
+
+ const data = JSON.parse(dataText)
+
+ if (data.list.length === 0) throw error(404, 'Unknown leaderboard')
+
+ return data
+}) satisfies PageLoad
diff --git a/src/routes/loggedin.ts b/src/routes/loggedin/+server.ts
index 9ae28ef..4772cf6 100644
--- a/src/routes/loggedin.ts
+++ b/src/routes/loggedin/+server.ts
@@ -1,7 +1,7 @@
import { fetchApi } from '$lib/api'
-import type { RequestHandler } from '@sveltejs/kit'
+import { redirect, type RequestHandler, } from '@sveltejs/kit'
-export const get: RequestHandler = async ({ url }) => {
+export const GET = (async ({ url, cookies }) => {
const code = url.searchParams.get('code')
const redirectUri = `${url.protocol}//${url.host}/loggedin`
const response = await fetchApi(`accounts/createsession`, fetch, {
@@ -20,18 +20,11 @@ export const get: RequestHandler = async ({ url }) => {
})
if (response.ok) {
- return {
- status: 303,
- headers: {
- location: '/verify',
- 'Set-Cookie': `sid=${response.session_id}; Max-Age=31536000000; Path=/; HttpOnly`
- }
- }
+ cookies.set('sid', response.session_id, {
+ maxAge: 31536000000,
+ httpOnly: true,
+ })
+ throw redirect(303, '/verify')
}
- return {
- status: 303,
- headers: {
- location: '/login',
- }
- }
-}
+ throw redirect(303, '/login')
+}) satisfies RequestHandler
diff --git a/src/routes/login.ts b/src/routes/login.ts
deleted file mode 100644
index 1cd9b23..0000000
--- a/src/routes/login.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import type { RequestHandler } from '@sveltejs/kit'
-import env from '$lib/env'
-
-
-export const get: RequestHandler = async ({ request, platform }) => {
- const host = request.headers.get('host')
-
- const clientId = env(platform).DISCORD_CLIENT_ID
-
- if (!clientId)
- return {
- status: 500,
- headers: {
- 'content-type': 'text/plain',
- },
- body: 'DISCORD_CLIENT_ID is not set as an environment variable. Please contact the owner of the website if this was expected to work.',
- }
-
- if (!host)
- return {
- status: 400,
- headers: {
- 'content-type': 'text/plain',
- },
- body: 'Host header is required.',
- }
-
- const protocol = request.url.startsWith('https') ? 'https' : 'http'
-
- return {
- status: 303,
- headers: {
- location: `https://discord.com/oauth2/authorize?client_id=${clientId}&redirect_uri=${protocol}://${host}%2Floggedin&response_type=code&scope=identify`
- }
- }
-}
diff --git a/src/routes/login/+server.ts b/src/routes/login/+server.ts
new file mode 100644
index 0000000..684f11e
--- /dev/null
+++ b/src/routes/login/+server.ts
@@ -0,0 +1,18 @@
+import env from '$lib/env'
+import { error, redirect, type RequestHandler } from '@sveltejs/kit'
+
+export const GET = (async ({ request, platform }) => {
+ const host = request.headers.get('host')
+
+ const clientId = env(platform).DISCORD_CLIENT_ID
+
+ if (!clientId)
+ throw error(500, 'DISCORD_CLIENT_ID is not set as an environment variable. Please contact the owner of the website if this was expected to work.')
+
+ if (!host)
+ throw error(400, 'Host header is required.')
+
+ const protocol = request.url.startsWith('https') ? 'https' : 'http'
+
+ throw redirect(303, `https://discord.com/oauth2/authorize?client_id=${clientId}&redirect_uri=${protocol}://${host}%2Floggedin&response_type=code&scope=identify`)
+}) satisfies RequestHandler
diff --git a/src/routes/logout.ts b/src/routes/logout/+server.ts
index 25be86c..2e0f40d 100644
--- a/src/routes/logout.ts
+++ b/src/routes/logout/+server.ts
@@ -1,7 +1,7 @@
import { fetchApi } from '$lib/api'
-import type { RequestHandler } from '@sveltejs/kit'
+import { redirect, type RequestHandler } from '@sveltejs/kit'
-export const get: RequestHandler = async ({ locals, url }) => {
+export const GET = (async ({ url, cookies, locals }) => {
// if the sid is wrong, nothing to do
if (url.searchParams.has('sid') && url.searchParams.get('sid') === locals.sid) {
await fetchApi(`accounts/session`, fetch, {
@@ -17,12 +17,7 @@ export const get: RequestHandler = async ({ locals, url }) => {
throw new Error(res.statusText)
})
}
- return {
- status: 303,
- headers: {
- location: '/',
- 'Set-Cookie': 'sid=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;'
- }
- }
-}