diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2022-12-15 20:19:42 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-15 20:19:42 -0600 |
| commit | ed5eedab8f9fc90dadf5c442cf559572d1b35f0c (patch) | |
| tree | 01a763fd11810e9970f14f7dae180e95b279de9a /src | |
| parent | 89bf3d31e36ad3bdfd45461ee6fb69a4c791f848 (diff) | |
| parent | 103689520f51991a1e9a4ca5829fe2f46d1a32c2 (diff) | |
| download | skyblock-stats-ed5eedab8f9fc90dadf5c442cf559572d1b35f0c.tar.gz skyblock-stats-ed5eedab8f9fc90dadf5c442cf559572d1b35f0c.tar.bz2 skyblock-stats-ed5eedab8f9fc90dadf5c442cf559572d1b35f0c.zip | |
Merge pull request #6 from skyblockstats/sveltekit-v1
Sveltekit v1
Diffstat (limited to 'src')
71 files changed, 455 insertions, 598 deletions
diff --git a/src/app.d.ts b/src/app.d.ts index b41fa6f..9f4467d 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -3,10 +3,13 @@ // // See https://kit.svelte.dev/docs/typescript // // for information about these interfaces declare namespace App { + // interface Error { } + interface Locals { sid: string | undefined } + // interface PageData { } interface Platform { env: { @@ -18,9 +21,4 @@ declare namespace App { } } - interface Session { - sid: string | undefined - } - - // interface Stuff {} } diff --git a/src/app.html b/src/app.html index e0a73a9..b9273a6 100644 --- a/src/app.html +++ b/src/app.html @@ -1,14 +1,17 @@ <!DOCTYPE html> <html lang="en"> - <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> - <meta name="theme-color" content="#010101"> - <meta property="og:site_name" content="Hypixel SkyBlock Stats"> - <meta property="og:type" content="website"/> - %svelte.head% - </head> - <body> - %svelte.body% - </body> -</html> + +<head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> + <meta name="theme-color" content="#010101"> + <meta property="og:site_name" content="Hypixel SkyBlock Stats"> + <meta property="og:type" content="website" /> + %sveltekit.head% +</head> + +<body> + %sveltekit.body% +</body> + +</html>
\ No newline at end of file diff --git a/src/hooks.server.ts b/src/hooks.server.ts new file mode 100644 index 0000000..0d2087b --- /dev/null +++ b/src/hooks.server.ts @@ -0,0 +1,7 @@ +import type { Handle } from '@sveltejs/kit' + +export const handle = (async ({ event, resolve }) => { + event.locals.sid = event.cookies.get('sid') + const response = await resolve(event) + return response +}) satisfies Handle
\ No newline at end of file diff --git a/src/hooks.ts b/src/hooks.ts deleted file mode 100644 index 3fa9299..0000000 --- a/src/hooks.ts +++ /dev/null @@ -1,25 +0,0 @@ -import cookie from 'cookie' -import type { ExternalFetch, GetSession, Handle } from '@sveltejs/kit' - - -export const handle: Handle = async ({ event, resolve }) => { - const cookies = cookie.parse(event.request.headers.get('cookie') || '') - - event.locals.sid = cookies.sid - - const response = await resolve(event) - - return response -} - -export const getSession: GetSession = async ({ locals }) => { - return { - sid: locals.sid - } -} - -// export const externalFetch: ExternalFetch = async (request) => { -// const response = await fetch(request) - -// return response -// }
\ No newline at end of file diff --git a/src/lib/AuctionPriceScatterplot.svelte b/src/lib/AuctionPriceScatterplot.svelte index da1aed2..17a09f1 100644 --- a/src/lib/AuctionPriceScatterplot.svelte +++ b/src/lib/AuctionPriceScatterplot.svelte @@ -1,5 +1,5 @@ <script lang="ts"> - import { browser } from '$app/env' + import { browser } from '$app/environment' import type { ItemAuctionsSchema, SimpleAuctionSchema } from './APITypes' import type { PreviewedAuctionData } from './utils' diff --git a/src/lib/BackgroundImage.svelte b/src/lib/BackgroundImage.svelte index 0b2f043..17d8705 100644 --- a/src/lib/BackgroundImage.svelte +++ b/src/lib/BackgroundImage.svelte @@ -1,6 +1,6 @@ <script lang="ts"> import { onDestroy, onMount } from 'svelte' - import { browser } from '$app/env' + import { browser } from '$app/environment' export let url: string let styleHtml = `<style class="background-image-style">:root{--background:url(${url})}</style>` diff --git a/src/lib/Collapsible.svelte b/src/lib/Collapsible.svelte index a7b6105..68fee79 100644 --- a/src/lib/Collapsible.svelte +++ b/src/lib/Collapsible.svelte @@ -4,7 +4,7 @@ Collapsible content that works without JS but is enhanced by it. --> <script lang="ts"> - import { browser } from '$app/env' + import { browser } from '$app/environment' import { onMount } from 'svelte' import { cleanId } from './utils' diff --git a/src/lib/LoginButton.svelte b/src/lib/LoginButton.svelte index bba078e..7ebf5d7 100644 --- a/src/lib/LoginButton.svelte +++ b/src/lib/LoginButton.svelte @@ -6,7 +6,7 @@ {#if loggedIn} <a href="/profile"><button class="login-button">Edit profile</button></a> {:else} - <a href="/login"> + <a href="/login" rel="external"> <button class="login-button" ><img src="/discord-mark-light.svg" alt="Discord logo" />Log in with Discord</button > diff --git a/src/lib/MayorSkin.svelte b/src/lib/MayorSkin.svelte index ad0a9a8..193a3d5 100644 --- a/src/lib/MayorSkin.svelte +++ b/src/lib/MayorSkin.svelte @@ -16,6 +16,7 @@ // special mayors derpy: 'be0f89466528ad5eca5a6506adddd896ff78c4fd21facaa74a8c4a809c89207', scorpius: '8f26fa0c47536e78e337257d898af8b1ebc87c0894503375234035ff2c7ef8f0', + finnegan: 'e7747fbee9fb39be39b00d3d483eb2f88b4bae82417ab5cb1b1aa930dd7b6689', // unique mayors technoblade: '786c039d969d1839155255e38e7b06a626ea9f8baf9cb55e0a77311efe18a3e', @@ -23,14 +24,21 @@ faith: '64b39d0756b92b8b7599d1f971580088954e21c5f60c673d0d4f63693fb002b5', } - let url: string + let url: string | undefined $: { - if (name.toLowerCase() === 'derpy') url = '/villager.png' - else url = `https://mc-heads.net/body/${skinIds[name.toLowerCase()]}` + if (name.toLowerCase() === 'jerry') url = '/villager.png' + else { + const skinId = skinIds[name.toLowerCase()] + url = skinId ? `https://mc-heads.net/body/${skinId}` : undefined + } } </script> -<img src={url} alt="Mayor {toTitleCase(name)}" /> +{#if url} + <img src={url} alt="Mayor {toTitleCase(name)}" /> +{:else} + <div class="no-skin-found">Unknown mayor</div> +{/if} <style> img { @@ -39,4 +47,12 @@ height: 12em; margin: 0 auto; } + + .no-skin-found { + display: flex; + align-items: center; + justify-content: center; + height: 12em; + margin: 0 auto; + } </style> diff --git a/src/lib/layout/Loader.svelte b/src/lib/layout/Loader.svelte index 3884e55..dd04924 100644 --- a/src/lib/layout/Loader.svelte +++ b/src/lib/layout/Loader.svelte @@ -1,5 +1,5 @@ <script lang="ts"> - import { browser } from '$app/env' + import { browser } from '$app/environment' import { navigating } from '$app/stores' let progress = 0 diff --git a/src/lib/minecraft/inventory.ts b/src/lib/minecraft/inventory.ts index 227ed0c..5bd79c2 100644 --- a/src/lib/minecraft/inventory.ts +++ b/src/lib/minecraft/inventory.ts @@ -1,6 +1,6 @@ import * as skyblockAssets from 'skyblock-assets' import { vanilla } from '$lib/packs' -import { browser } from '$app/env' +import { browser } from '$app/environment' export interface Item { id?: string diff --git a/src/params/username.ts b/src/params/username.ts new file mode 100644 index 0000000..855481a --- /dev/null +++ b/src/params/username.ts @@ -0,0 +1,5 @@ +import type { ParamMatcher } from '@sveltejs/kit' + +export const match = ((param) => { + return /^\w{2,16}$/.test(param) +}) satisfies ParamMatcher
\ No newline at end of file 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() |
