data endpoint for entity 90008 (aka. a website)

refactor: fix a bunch of lint errors / warnings

ptr.pet 3fd42bea 0e0ceb63

verified
+1 -1
.forgejo/workflows/build.yaml
···
- run: nix build . -L --show-trace
deploy:
runs-on: lixpine
-
depends-on: build
steps:
- name: trigger deploy
env:
···
- run: nix build . -L --show-trace
deploy:
runs-on: lixpine
+
needs: build
steps:
- name: trigger deploy
env:
+1 -1
src/lib/activity.ts
···
if (description === null) continue;
results.push({
source,
-
description: description.split('</a>').pop(),
link: item.url,
date: item.published
});
···
if (description === null) continue;
results.push({
source,
+
description: description.split('</a>').pop() || '',
link: item.url,
date: item.published
});
+2
src/routes/+page.server.ts
···
import { noteFromBskyPost } from '../components/note.svelte';
import { pushNotification } from '$lib/pushnotif';
import { getLastActivity } from '$lib/activity.js';
export const load = async () => {
const lastTrack = getNowPlaying();
···
default: async ({ request }: RequestEvent) => {
const form = await request.formData();
const content = form.get('content')?.toString().substring(0, 100);
pushNotification(content);
}
};
···
import { noteFromBskyPost } from '../components/note.svelte';
import { pushNotification } from '$lib/pushnotif';
import { getLastActivity } from '$lib/activity.js';
+
import type { RequestEvent } from '@sveltejs/kit';
export const load = async () => {
const lastTrack = getNowPlaying();
···
default: async ({ request }: RequestEvent) => {
const form = await request.formData();
const content = form.get('content')?.toString().substring(0, 100);
+
if (content === undefined) return;
pushNotification(content);
}
};
+3 -1
src/routes/about/_layout.svelte
···
<script lang="ts">
import Window from '../../components/window.svelte';
import Stuff from './stuff.md';
import Media from './media.md';
import '../../styles/app.css';
interface Props {
-
title: any;
children?: import('svelte').Snippet;
}
···
<script lang="ts">
import Window from '../../components/window.svelte';
+
// @ts-expect-error "mdsvex include is broken"
import Stuff from './stuff.md';
+
// @ts-expect-error "mdsvex include is broken"
import Media from './media.md';
import '../../styles/app.css';
interface Props {
+
title: string;
children?: import('svelte').Snippet;
}
+1
src/routes/entries/+layout.server.ts
···
metadata: Record<string, string>;
}
const allPostFiles: Record<string, any> = import.meta.glob('./*/+page.md', { eager: true });
const allPosts: PostData[] = Object.entries(allPostFiles)
.map(([path, post]) => {
···
metadata: Record<string, string>;
}
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const allPostFiles: Record<string, any> = import.meta.glob('./*/+page.md', { eager: true });
const allPosts: PostData[] = Object.entries(allPostFiles)
.map(([path, post]) => {
+8 -6
src/routes/entries/+page.svelte
···
<script lang="ts">
import Window from '../../components/window.svelte';
-
import type { PostData } from './+layout.server.js';
import LogPage from '../log/+page.svelte';
interface Props {
-
data: any;
}
let { data }: Props = $props();
-
-
let posts: PostData[] = data.posts as PostData[];
</script>
<div class="mx-auto md:max-w-fit flex flex-col-reverse md:flex-row gap-y-4 gap-x-16">
<div class="flex flex-col gap-y-4">
-
{#each posts as post}
<Window title={post.metadata.title} iconUri="/icons/entry.webp">
<a
href="/entries/{post.path}"
···
</Window>
{/each}
</div>
-
<LogPage {data} />
</div>
···
<script lang="ts">
import Window from '../../components/window.svelte';
+
import type { PostData } from './+layout.server.ts';
import LogPage from '../log/+page.svelte';
+
import type { NoteData } from '../../components/note.svelte';
interface Props {
+
data: {
+
posts: PostData[];
+
feedPosts: NoteData[];
+
};
}
let { data }: Props = $props();
</script>
<div class="mx-auto md:max-w-fit flex flex-col-reverse md:flex-row gap-y-4 gap-x-16">
<div class="flex flex-col gap-y-4">
+
{#each data.posts as post}
<Window title={post.metadata.title} iconUri="/icons/entry.webp">
<a
href="/entries/{post.path}"
···
</Window>
{/each}
</div>
+
<LogPage data={{ feedPosts: data.feedPosts }} />
</div>
+4 -9
src/routes/entries/_layout.svelte
···
import { page } from '$app/state';
interface Props {
-
title: any;
-
date: any;
-
excerpt: any;
children?: import('svelte').Snippet;
}
-
let {
-
title,
-
date,
-
excerpt,
-
children
-
}: Props = $props();
let showMetadata = $derived(excerpt !== undefined && excerpt !== null);
</script>
···
import { page } from '$app/state';
interface Props {
+
title: string;
+
date: Date;
+
excerpt: string;
children?: import('svelte').Snippet;
}
+
let { title, date, excerpt, children }: Props = $props();
let showMetadata = $derived(excerpt !== undefined && excerpt !== null);
</script>
+4 -2
src/routes/guestbook/+page.server.ts
···
}
};
-
export async function load({ url, cookies }) {
const scopedCookies = scopeCookies(cookies);
-
let data = {
entries: [] as NoteData[],
sendError: scopedCookies.get('sendError') || '',
getError: '',
···
await (
await getBskyClient()
).post({ text: content, threadgate: { allowMentioned: false, allowFollowing: false } });
} catch (err: any) {
scopedCookies.set('sendError', err.toString());
redirect(303, callbackUrl);
···
try {
const { posts } = await getUserPosts('did:web:guestbook.gaze.systems', 16);
data.entries = posts.map(noteFromBskyPost);
} catch (err: any) {
data.getError = err.toString();
}
···
}
};
+
export async function load({ cookies }) {
const scopedCookies = scopeCookies(cookies);
+
const data = {
entries: [] as NoteData[],
sendError: scopedCookies.get('sendError') || '',
getError: '',
···
await (
await getBskyClient()
).post({ text: content, threadgate: { allowMentioned: false, allowFollowing: false } });
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} catch (err: any) {
scopedCookies.set('sendError', err.toString());
redirect(303, callbackUrl);
···
try {
const { posts } = await getUserPosts('did:web:guestbook.gaze.systems', 16);
data.entries = posts.map(noteFromBskyPost);
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} catch (err: any) {
data.getError = err.toString();
}
+9 -2
src/routes/guestbook/+page.svelte
···
<script lang="ts">
-
import Note from '../../components/note.svelte';
import Token from '../../components/token.svelte';
import Window from '../../components/window.svelte';
interface Props {
-
data: any;
}
let { data }: Props = $props();
···
<script lang="ts">
+
import Note, { type NoteData } from '../../components/note.svelte';
import Token from '../../components/token.svelte';
import Window from '../../components/window.svelte';
interface Props {
+
data: {
+
entries: NoteData[];
+
sendError: string;
+
getError: string;
+
sendRatelimited: string;
+
getRatelimited: boolean;
+
fillText: string;
+
};
}
let { data }: Props = $props();
+4 -4
src/routes/robots.txt/+server.ts
···
-
import { getRobotsTxt } from "$lib/robots"
-
export const GET = async ({ }) => {
-
return new Response(await getRobotsTxt())
-
}
···
+
import { getRobotsTxt } from '$lib/robots';
+
export const GET = async () => {
+
return new Response(await getRobotsTxt());
+
};
+3 -3
tailwind.config.js
···
-
const colors = require('tailwindcss/colors');
-
const plugin = require('tailwindcss/plugin');
/** @type {import('tailwindcss').Config} */
export default {
···
monospace: ['"Fusion Pixel 10px Monospaced zh_hans", monospace']
}
},
-
plugins: [require('@tailwindcss/typography'), require('@tailwindcss/forms')]
};
···
+
import typography from '@tailwindcss/typography';
+
import forms from '@tailwindcss/forms';
/** @type {import('tailwindcss').Config} */
export default {
···
monospace: ['"Fusion Pixel 10px Monospaced zh_hans", monospace']
}
},
+
plugins: [typography, forms]
};