refactor: format stuffs fix warnings
This commit is contained in:
parent
25ee5d47e3
commit
081e709ba5
src/routes
entries
log
@ -1,34 +1,37 @@
|
|||||||
import convertDate from "$lib/convertDate";
|
import convertDate from '$lib/convertDate';
|
||||||
|
|
||||||
export interface PostData {
|
export interface PostData {
|
||||||
path: string,
|
path: string;
|
||||||
published: string,
|
published: string;
|
||||||
metadata: Record<string, string>,
|
metadata: Record<string, string>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const allPostFiles: Record<string, any> = import.meta.glob('./*/+page.md', { eager: true });
|
const allPostFiles: Record<string, any> = import.meta.glob('./*/+page.md', { eager: true });
|
||||||
const allPosts: PostData[] = Object.entries(allPostFiles).map(([path, post]) => {
|
const allPosts: PostData[] = Object.entries(allPostFiles)
|
||||||
const postPath = path.slice(2, -8);
|
.map(([path, post]) => {
|
||||||
return {
|
const postPath = path.slice(2, -8);
|
||||||
metadata: post.metadata,
|
return {
|
||||||
path: postPath,
|
metadata: post.metadata,
|
||||||
published: convertDate(post.metadata.date)
|
path: postPath,
|
||||||
};
|
published: convertDate(post.metadata.date)
|
||||||
}).map((post) => {
|
};
|
||||||
if (!("excerpt" in post.metadata)) {
|
})
|
||||||
post.metadata.excerpt = ""
|
.map((post) => {
|
||||||
}
|
if (!('excerpt' in post.metadata)) {
|
||||||
return post;
|
post.metadata.excerpt = '';
|
||||||
}).toSorted((post, opost) => {
|
}
|
||||||
const date = new Date(post.metadata.date);
|
return post;
|
||||||
const odate = new Date(opost.metadata.date);
|
})
|
||||||
return odate.getTime() - date.getTime()
|
.toSorted((post, opost) => {
|
||||||
});
|
const date = new Date(post.metadata.date);
|
||||||
|
const odate = new Date(opost.metadata.date);
|
||||||
|
return odate.getTime() - date.getTime();
|
||||||
|
});
|
||||||
export const _allPosts = allPosts;
|
export const _allPosts = allPosts;
|
||||||
|
|
||||||
export async function load({}) {
|
export async function load() {
|
||||||
if (!allPosts.length) {
|
if (!allPosts.length) {
|
||||||
return { status: 404 };
|
return { status: 404 };
|
||||||
}
|
}
|
||||||
return { posts: allPosts };
|
return { posts: allPosts };
|
||||||
}
|
}
|
||||||
|
@ -15,22 +15,24 @@
|
|||||||
<div class="mx-auto md:max-w-fit flex flex-col-reverse md:flex-row gap-y-4 gap-x-16">
|
<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">
|
<div class="flex flex-col gap-y-4">
|
||||||
{#each posts as post}
|
{#each posts as post}
|
||||||
<Window title={post.metadata.title} iconUri='/icons/entry.webp'>
|
<Window title={post.metadata.title} iconUri="/icons/entry.webp">
|
||||||
<a
|
<a
|
||||||
href="/entries/{post.path}"
|
href="/entries/{post.path}"
|
||||||
title="cd /entries/{post.path}"
|
title="cd /entries/{post.path}"
|
||||||
data-sveltekit-preload-data="off"
|
data-sveltekit-preload-data="off"
|
||||||
>
|
>
|
||||||
<div class="flex flex-col prose prose-ralsei leading-5">
|
<div class="flex flex-col prose prose-ralsei leading-5">
|
||||||
<ul>
|
<ul>
|
||||||
<li>published on: <time datetime="{post.metadata.date} 00:00:00">{post.published}</time></li>
|
<li>
|
||||||
<li class="max-w-[34ch] text-wrap">excerpt: {post.metadata.excerpt}</li>
|
published on: <time datetime="{post.metadata.date} 00:00:00">{post.published}</time>
|
||||||
</ul>
|
</li>
|
||||||
<strong class="place-self-end text-ralsei-green-light"> read more... </strong>
|
<li class="max-w-[34ch] text-wrap">excerpt: {post.metadata.excerpt}</li>
|
||||||
</div>
|
</ul>
|
||||||
</a>
|
<strong class="place-self-end text-ralsei-green-light"> read more... </strong>
|
||||||
</Window>
|
</div>
|
||||||
|
</a>
|
||||||
|
</Window>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
<LogPage {data}/>
|
<LogPage {data} />
|
||||||
</div>
|
</div>
|
||||||
|
@ -3,15 +3,13 @@ import { _allPosts, type PostData } from '../+layout.server.ts';
|
|||||||
|
|
||||||
const entriesUrl = `${PUBLIC_BASE_URL}/entries`;
|
const entriesUrl = `${PUBLIC_BASE_URL}/entries`;
|
||||||
|
|
||||||
export const GET = async ({ }) => {
|
export const GET = async () => {
|
||||||
return new Response(
|
return new Response(render(_allPosts), {
|
||||||
render(_allPosts),
|
headers: {
|
||||||
{
|
'content-type': 'application/xml',
|
||||||
headers: {
|
'cache-control': 'no-store'
|
||||||
'content-type': 'application/xml',
|
}
|
||||||
'cache-control': 'no-store',
|
});
|
||||||
}
|
|
||||||
})
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const render = (posts: PostData[]) => `<?xml version="1.0" encoding="UTF-8" ?>
|
const render = (posts: PostData[]) => `<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
@ -21,13 +19,17 @@ const render = (posts: PostData[]) => `<?xml version="1.0" encoding="UTF-8" ?>
|
|||||||
<title>dusk's posts (@gaze.systems)</title>
|
<title>dusk's posts (@gaze.systems)</title>
|
||||||
<link>${entriesUrl}</link>
|
<link>${entriesUrl}</link>
|
||||||
<description>posts from my website</description>
|
<description>posts from my website</description>
|
||||||
${posts.map((post) => `<item>
|
${posts
|
||||||
|
.map(
|
||||||
|
(post) => `<item>
|
||||||
<guid>${entriesUrl}/${post.path}</guid>
|
<guid>${entriesUrl}/${post.path}</guid>
|
||||||
<title>${post.metadata.title}</title>
|
<title>${post.metadata.title}</title>
|
||||||
<link>${entriesUrl}/${post.path}</link>
|
<link>${entriesUrl}/${post.path}</link>
|
||||||
<description>${post.metadata.excerpt}</description>
|
<description>${post.metadata.excerpt}</description>
|
||||||
<pubDate>${new Date(post.metadata.date).toUTCString()}</pubDate>
|
<pubDate>${new Date(post.metadata.date).toUTCString()}</pubDate>
|
||||||
</item>`).join('')}
|
</item>`
|
||||||
|
)
|
||||||
|
.join('')}
|
||||||
</channel>
|
</channel>
|
||||||
</rss>
|
</rss>
|
||||||
`;
|
`;
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import images from './images.json'
|
import images from './images.json';
|
||||||
|
|
||||||
export async function load({}) {
|
export async function load() {
|
||||||
return {
|
return {
|
||||||
images: images.map((id) => {
|
images: images.map((id) => {
|
||||||
return {
|
return {
|
||||||
og: `https://res.cloudinary.com/dgtwf7mar/image/upload/v1/${id}`,
|
og: `https://res.cloudinary.com/dgtwf7mar/image/upload/v1/${id}`,
|
||||||
thumb: `https://res.cloudinary.com/dgtwf7mar/image/upload/c_fill,w_480,h_480,g_center/c_limit,w_480/f_auto/q_auto/v1/${id}`,
|
thumb: `https://res.cloudinary.com/dgtwf7mar/image/upload/c_fill,w_480,h_480,g_center/c_limit,w_480/f_auto/q_auto/v1/${id}`
|
||||||
}
|
};
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import { getLastPosts } from '$lib/bluesky.js';
|
import { getLastPosts } from '$lib/bluesky.js';
|
||||||
import { noteFromBskyPost } from '../../components/note.svelte';
|
import { noteFromBskyPost } from '../../components/note.svelte';
|
||||||
|
|
||||||
export const load = async ({ }) => {
|
export const load = async () => {
|
||||||
return _load()
|
return _load();
|
||||||
}
|
};
|
||||||
|
|
||||||
export const _load = async () => {
|
export const _load = async () => {
|
||||||
return {
|
return {
|
||||||
feedPosts: getLastPosts().map(noteFromBskyPost),
|
feedPosts: getLastPosts().map(noteFromBskyPost)
|
||||||
}
|
};
|
||||||
}
|
};
|
||||||
|
@ -1,37 +1,64 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Window from '../../components/window.svelte';
|
import Window from '../../components/window.svelte';
|
||||||
import Token from '../../components/token.svelte';
|
import Token from '../../components/token.svelte';
|
||||||
import Note from '../../components/note.svelte';
|
import Note, { type NoteData } from '../../components/note.svelte';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
data: any;
|
data: {
|
||||||
}
|
feedPosts: NoteData[];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
let { data }: Props = $props();
|
let { data }: Props = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Window title="terminal" removePadding>
|
<Window title="terminal" removePadding>
|
||||||
<div
|
<div
|
||||||
class="
|
class="
|
||||||
prose prose-ralsei
|
prose prose-ralsei
|
||||||
prose-pre:rounded-none prose-pre:!m-0 prose-pre:!p-2
|
prose-pre:rounded-none prose-pre:!m-0 prose-pre:!p-2
|
||||||
prose-pre:!bg-ralsei-black prose-code:!bg-ralsei-black
|
prose-pre:!bg-ralsei-black prose-code:!bg-ralsei-black
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<pre class="language-bash"><code class="language-bash"><nobr>
|
<pre class="language-bash"><code class="language-bash"
|
||||||
<Token v="[" punct/>gazesystems <Token v="/" keywd/><Token v="]$" punct/> <Token v="source" funct/> <Token v="scripts/log.nu" />
|
><nobr>
|
||||||
<br>
|
<Token v="[" punct />gazesystems <Token v="/" keywd /><Token v="]$" punct /> <Token
|
||||||
<Token v="[" punct/>gazesystems <Token v="/" keywd/><Token v="]$" punct/> <Token v="let" funct/> <Token v="entries"/> <Token v="=" punct/> <Token v="(" punct/><Token v="ls" funct/> <Token v="logs" /> <Token v="|" punct/> <Token v="reverse" funct/> <Token v="|" punct/> <Token v="take" funct/> <Token v="13"/><Token v=")" punct/>
|
v="source"
|
||||||
<br>
|
funct
|
||||||
<Token v="[" punct/>gazesystems <Token v="/" keywd/><Token v="]$" punct/> <Token v="$entries" /> <Token v="|" punct/> <Token v="each" funct/> <Token v="{" punct/><Token v="|" punct/><Token v="file"/><Token v="|" punct/> <Token v="render" funct/> <Token v="(" punct/><Token v="open" funct/> <Token v="$file.name" /><Token v=")" punct/><Token v="}" punct/>
|
/> <Token v="scripts/log.nu" />
|
||||||
<br>
|
<br />
|
||||||
<br>
|
<Token v="[" punct />gazesystems <Token v="/" keywd /><Token v="]$" punct /> <Token
|
||||||
|
v="let"
|
||||||
|
funct
|
||||||
|
/> <Token v="entries" /> <Token v="=" punct /> <Token v="(" punct /><Token
|
||||||
|
v="ls"
|
||||||
|
funct
|
||||||
|
/> <Token v="logs" /> <Token v="|" punct /> <Token v="reverse" funct /> <Token
|
||||||
|
v="|"
|
||||||
|
punct
|
||||||
|
/> <Token v="take" funct /> <Token v="13" /><Token v=")" punct />
|
||||||
|
<br />
|
||||||
|
<Token v="[" punct />gazesystems <Token v="/" keywd /><Token v="]$" punct /> <Token
|
||||||
|
v="$entries"
|
||||||
|
/> <Token v="|" punct /> <Token v="each" funct /> <Token v="{" punct /><Token
|
||||||
|
v="|"
|
||||||
|
punct
|
||||||
|
/><Token v="file" /><Token v="|" punct /> <Token v="render" funct /> <Token
|
||||||
|
v="("
|
||||||
|
punct
|
||||||
|
/><Token v="open" funct /> <Token v="$file.name" /><Token v=")" punct /><Token
|
||||||
|
v="}"
|
||||||
|
punct
|
||||||
|
/>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
{#each data.feedPosts as note, index}
|
{#each data.feedPosts as note, index}
|
||||||
<Note {note}/>
|
<Note {note} />
|
||||||
{#if index < data.feedPosts.length - 1}
|
{#if index < data.feedPosts.length - 1}
|
||||||
<div class="mt-3"></div>
|
<div class="mt-3"></div>
|
||||||
{/if}
|
{/if}
|
||||||
{/each}
|
{/each}
|
||||||
</nobr></code></pre>
|
</nobr></code
|
||||||
</div>
|
></pre>
|
||||||
|
</div>
|
||||||
</Window>
|
</Window>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { redirect } from '@sveltejs/kit';
|
import { redirect } from '@sveltejs/kit';
|
||||||
|
|
||||||
export const GET = async ({ }) => {
|
export const GET = async () => {
|
||||||
redirect(301, "https://bsky.app/profile/did:plc:dfl62fgb7wtjj3fcbb72naae/rss")
|
redirect(301, 'https://bsky.app/profile/did:plc:dfl62fgb7wtjj3fcbb72naae/rss');
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user