Browse Source

Merge pull request #2 from buttercat1791/static-site-generation

Support Static Site Generation
master
Michael J 1 year ago committed by GitHub
parent
commit
6802819956
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 11
      package-lock.json
  2. 3
      package.json
  3. 4
      src/lib/components/ArticleHeader.svelte
  4. 1
      src/routes/+layout.ts
  5. 12
      src/routes/[id]/+page.svelte
  6. 26
      src/routes/[id]/+page.ts
  7. 20
      src/routes/d/[tag]/+page.svelte
  8. 11
      src/routes/d/[tag]/+page.ts
  9. 42
      src/routes/publication/+page.svelte
  10. 14
      svelte.config.js

11
package-lock.json generated

@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@
},
"devDependencies": {
"@sveltejs/adapter-auto": "^3.1.1",
"@sveltejs/adapter-static": "^3.0.6",
"@sveltejs/kit": "^2.4.3",
"@types/he": "^1.2.3",
"@types/markdown-it": "^13.0.7",
@ -658,6 +659,16 @@ @@ -658,6 +659,16 @@
"@sveltejs/kit": "^2.0.0"
}
},
"node_modules/@sveltejs/adapter-static": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.6.tgz",
"integrity": "sha512-MGJcesnJWj7FxDcB/GbrdYD3q24Uk0PIL4QIX149ku+hlJuj//nxUbb0HxUTpjkecWfHjVveSUnUaQWnPRXlpg==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"@sveltejs/kit": "^2.0.0"
}
},
"node_modules/@sveltejs/kit": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.0.tgz",

3
package.json

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
{
"name": "alexandria",
"version": "0.0.5",
"version": "0.0.6",
"private": true,
"type": "module",
"scripts": {
@ -31,6 +31,7 @@ @@ -31,6 +31,7 @@
},
"devDependencies": {
"@sveltejs/adapter-auto": "^3.1.1",
"@sveltejs/adapter-static": "^3.0.6",
"@sveltejs/kit": "^2.4.3",
"@types/he": "^1.2.3",
"@types/markdown-it": "^13.0.7",

4
src/lib/components/ArticleHeader.svelte

@ -20,9 +20,9 @@ @@ -20,9 +20,9 @@
const d = event.getMatchingTags('d')[0][1];
if (d != null) {
href = `d/${d}`;
href = `publication?d=${d}`;
} else {
href = neventEncode(event, relays);
href = `publication?id=${neventEncode(event, relays)}`;
}
} catch (e) {
console.warn(e);

1
src/routes/+layout.ts

@ -0,0 +1 @@ @@ -0,0 +1 @@
export const prerender = true;

12
src/routes/[id]/+page.svelte

@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
<script lang="ts">
import Article from '$lib/components/Article.svelte';
import type { PageData } from './$types';
export let data: PageData;
let { event } = data;
</script>
<main>
<Article {event} />
</main>

26
src/routes/[id]/+page.ts

@ -1,26 +0,0 @@ @@ -1,26 +0,0 @@
import { getNdkInstance, ndk } from '$lib/ndk';
import type { NDKEvent } from '@nostr-dev-kit/ndk';
import { error } from '@sveltejs/kit';
// MichaelJ - 23 July 2024 - Disable server-side rendering so that the load function can use the
// browser's local storage to retrieve saved relays and the cache adapter for the NDK instance.
export const ssr = false;
export const load = async ({ params }) => {
const ndk = getNdkInstance();
const { id } = params;
let event: NDKEvent | null | undefined;
try {
event = await ndk.fetchEvent(id);
} catch (err) {
console.error(err);
}
if (!event) {
error(404, 'No event found with the given ID.');
}
return { event };
};

20
src/routes/d/[tag]/+page.svelte

@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
<script lang="ts">
import Article from '$lib/components/Article.svelte';
import { ndk } from '$lib/ndk';
import { TextPlaceholder } from 'flowbite-svelte';
import type { PageData } from './$types';
export let data: PageData;
const getIndexEvent = (d: string) => {
return $ndk.fetchEvent({ '#d': [d] });
};
</script>
<main>
{#await getIndexEvent(data.event.d)}
<TextPlaceholder size='xxl' />
{:then index}
<Article {index} />
{/await}
</main>

11
src/routes/d/[tag]/+page.ts

@ -1,11 +0,0 @@ @@ -1,11 +0,0 @@
import type { PageLoad } from './$types';
export const load: PageLoad = async ({ params }) => {
const { tag } = params;
return {
event: {
d: tag,
}
};
};

42
src/routes/publication/+page.svelte

@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
<script lang="ts">
import { page } from '$app/stores';
import Article from '$lib/components/Article.svelte';
import { ndk } from '$lib/ndk';
import type { NDKEvent } from '@nostr-dev-kit/ndk';
import { TextPlaceholder } from 'flowbite-svelte';
const id = $page.url.searchParams.get('id');
const dTag = $page.url.searchParams.get('d');
let event: NDKEvent | null | undefined;
if (id) {
$ndk.fetchEvent(id)
.then(ev => {
event = ev;
})
.catch(err => {
console.error(err);
// TODO: Redirect to 404 page.
});
} else if (dTag) {
$ndk.fetchEvent({ '#d': [dTag] })
.then(ev => {
event = ev;
})
.catch(err => {
console.error(err);
// TODO: Redirect to 404 page.
});
} else {
// TODO: Redirect to 400 page.
}
</script>
<main>
{#await event}
<TextPlaceholder size='xxl' />
{:then ev}
<Article index={ev} />
{/await}
</main>

14
svelte.config.js

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
import adapter from '@sveltejs/adapter-auto';
import adapter from '@sveltejs/adapter-static';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */
@ -8,10 +8,14 @@ const config = { @@ -8,10 +8,14 @@ const config = {
preprocess: [vitePreprocess()],
kit: {
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
adapter: adapter(),
// Static adapter
adapter: adapter({
pages: 'build',
assets: 'build',
fallback: null, // TODO: Create a 404.html page.
precompress: false,
strict: true,
}),
alias: {
$lib: 'src/lib',
$components: 'src/lib/components',

Loading…
Cancel
Save