Load pages directly from markdown and move to @sveltejs/adapter-static

This commit is contained in:
Lewin Kelly 2023-07-10 22:05:16 +01:00
parent 72d0b646fb
commit cbc20426a6
No known key found for this signature in database
GPG Key ID: C103AD9C84014FD7
26 changed files with 259 additions and 616 deletions

View File

@ -4,27 +4,22 @@ Revival archive website
# Pages/posts
To make a post, place it into the /pages directory. The filename will be used as the URL slug. The file must be in Markdown and contain a json header, like the following:
To make a post, place it into the /pages directory. The filename will be used as the URL slug. The file must be in Markdown and contain front matter, like the following:
```json
{
"title": "First blog post",
"date": "2023-07-06 7:29 PM"
}
```
title: First blog post
date: 2023-07-06 7:29 PM
```
A Revival description must include a "---" line between a short overview and the full post. A json header for a Revival could contain the following fields:
A Revival description must include a "---" line between a short overview and the full post. Front mater for a Revival could contain the following fields:
```json
{
"name": "Mercury",
"date": "2023-07-09 01:58 PM",
"clients": [2013],
"rating": {
"website": 5,
"community": 5,
"clients": 5,
"overall": 5
}
}
```
name: Mercury
date: 2023-07-09 01:58 PM
clients: [2013]
rating:
website: 5
community: 5
clients: 5
overall: 5
```

View File

@ -4,18 +4,16 @@
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "node pages/pages.js && vite build",
"build": "vite build",
"preview": "vite preview",
"buildview": "node pages/pages.js && vite build && vite preview",
"buildview": " && vite build && vite preview",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"md": "node pages/pages.js",
"lint": "prettier --plugin-search-dir . --check .",
"format": "prettier --plugin-search-dir . --write ."
},
"devDependencies": {
"@sveltejs/adapter-auto": "^2.1.0",
"@sveltejs/adapter-netlify": "^2.0.7",
"@sveltejs/adapter-static": "^2.0.2",
"@sveltejs/kit": "^1.22.1",
"@types/marked": "^5.0.0",
"@unocss/extractor-svelte": "^0.53.5",

View File

@ -1,9 +1,7 @@
```json
{
"title": "First blog post",
"date": "2023-07-06 7:29 PM"
}
```
---
title: First blog post
date: 2023-07-06 7:29 PM
---
I'm baby portland cred tote bag ethical glossier etsy fixie edison bulb retro irony. Helvetica beard humblebrag before they sold out photo booth yr cloud bread iceland ennui yes plz cold-pressed solarpunk tacos marxism. Yr occupy squid pug helvetica crucifix enamel pin subway tile bruh jean shorts fanny pack. Meditation gluten-free butcher PBR&B twee. Hammock selfies asymmetrical fixie before they sold out.

View File

@ -1,9 +1,7 @@
```json
{
"title": "Second blog post",
"date": "2023-07-09 11:40 AM"
}
```
---
title: Second blog post
date: 2023-07-09 11:40 AM
---
Franzen bodega boys gorpcore disrupt hell of viral wolf man braid food truck VHS yr. Gentrify tumblr meditation, art party try-hard vaporware direct trade echo park helvetica you probably haven't heard of them disrupt fam. Poutine portland gatekeep bespoke. Organic neutra jianbing, occupy distillery 3 wolf moon big mood bitters tumblr actually forage tattooed. DIY messenger bag listicle, sustainable bitters sus portland. Gentrify VHS freegan artisan solarpunk seitan bruh hoodie live-edge drinking vinegar vape iceland palo santo +1.

View File

@ -1,80 +0,0 @@
import { marked } from "marked"
import fs from "fs"
// Convert all markdown files in the pages directory and all subdirectories
// to HTML, and output as JSON files in the pagesjson directory.
const parseMD = md =>
marked.parse(md, {
mangle: false,
headerIds: false,
})
// thx copilot
function walk(dir) {
let results = []
for (const file of fs.readdirSync(dir)) {
const name = `${dir}/${file}`
const stat = fs.statSync(name)
if (stat && stat.isDirectory())
// Recurse into a subdirectory
results = results.concat(walk(name))
else if (file.endsWith(".md"))
// Is a file
results.push({ name })
}
return results
}
const allMdFiles = walk("./pages")
if (fs.existsSync("./pagesjson")) fs.rmSync("./pagesjson", { recursive: true })
allMdFiles.forEach(file => {
let md = fs.readFileSync(file.name, "utf8").replace(/\r\n/g, "\n")
// Get json data from the top of the file
const [json, content] = md
.match(/^```json[\s\S]*?({[\s\S]+})[\s\S]*```\n*([\s\S]+)$/)
.slice(1, 3)
let obj
if (file.name.includes("/index/")) {
// It's a Revival description
try {
const [overview, post] = content.split("\n---\n")
obj = {
...JSON.parse(json),
overview: parseMD(overview),
html: parseMD(post),
}
} catch (e) {
throw new Error(
`Error parsing ${file.name}: check that it has an overview and post section separated by ---`
)
}
} else
obj = {
...JSON.parse(json),
html: parseMD(content),
}
fs.mkdirSync(
file.name
.replace("/pages/", "/pagesjson/")
.replace(file.name.split("/").pop(), ""),
{ recursive: true }
)
console.log(`Writing ${file.name.replace(".md", ".json")}`)
fs.writeFileSync(
file.name.replace("/pages/", "/pagesjson/").replace(".md", ".json"),
JSON.stringify(obj)
)
})
console.log("~ Done! ~")

View File

@ -1,19 +1,16 @@
```json
{
"name": "Finobe",
"date": "2023-07-09 01:58 PM",
"clients": [2012, 2016],
"rating": {
"website": 4,
"community": 4,
"clients": 4,
"overall": 4
}
}
```
Finobe is a revival
---
name: Finobe
date: 2023-07-09 01:58 PM
clients:
- 2012
- 2016
rating:
website: 4
community: 4
clients: 4
overall: 4
overview: |
Finobe is a revival
---
Grailed laborum reprehenderit, id art party ea la croix small batch DIY fingerstache. Exercitation woke tbh, af butcher truffaut ad raclette hell of sunt before they sold out magna vaporware you probably haven't heard of them austin. Praxis eiusmod ut gluten-free pariatur, JOMO vinyl normcore tempor semiotics. Authentic kogi fashion axe yes plz veniam. Ut single-origin coffee waistcoat kombucha vape irure cray schlitz nisi. Cloud bread four dollar toast enamel pin sus. Butcher fam cliche salvia, af before they sold out selvage duis.

View File

@ -1,19 +1,15 @@
```json
{
"name": "Goodblox",
"date": "2023-07-09 01:58 PM",
"clients": [2009],
"rating": {
"website": 4.5,
"community": 4.5,
"clients": 4.5,
"overall": 4.5
}
}
```
Goodblox is a revival
---
name: Goodblox
date: 2023-07-09 01:58 PM
clients:
- 2009
rating:
website: 4.5
community: 4.5
clients: 4.5
overall: 4.5
overview: |
Goodblox is a revival
---
Minim viral gochujang ipsum et cred pitchfork shaman copper mug lumbersexual. Ipsum +1 fanny pack, twee chartreuse biodiesel fixie vexillologist tbh master cleanse unicorn subway tile officia. Tempor sunt small batch, waistcoat keffiyeh yes plz kogi. Adaptogen woke yes plz JOMO actually. You probably haven't heard of them kickstarter mollit chia whatever vaporware tonx man bun ethical letterpress cardigan. Blog nostrud vaporware aute woke. Before they sold out irure lorem, austin freegan vice ullamco in disrupt grailed franzen quinoa quis bushwick.

View File

@ -1,19 +1,15 @@
```json
{
"name": "Hamblox",
"date": "2023-07-09 01:58 PM",
"clients": [2015],
"rating": {
"website": 3.7,
"community": 3.7,
"clients": 3.7,
"overall": 3.7
}
}
```
Hamblox is a revival
---
name: Hamblox
date: 2023-07-09 01:58 PM
clients:
- 2015
rating:
website: 3.7
community: 3.7
clients: 3.7
overall: 3.7
overview: |
Hamblox is a revival
---
Big mood dolor +1, post-ironic green juice williamsburg you probably haven't heard of them edison bulb af asymmetrical poke chicharrones iPhone bespoke put a bird on it. Heirloom paleo air plant, raclette woke pariatur selfies chambray. Hashtag sunt you probably haven't heard of them velit meggings. Polaroid activated charcoal lyft messenger bag adipisicing, minim prism squid shabby chic yes plz kinfolk Brooklyn.

View File

@ -1,19 +1,15 @@
```json
{
"name": "idk18",
"date": "2023-07-09 01:58 PM",
"clients": [2018],
"rating": {
"website": 1.7,
"community": 1.7,
"clients": 1.7,
"overall": 1.7
}
}
```
idk18 is a revival
---
name: idk18
date: 2023-07-09 01:58 PM
clients:
- 2018
rating:
website: 1.7
community: 1.7
clients: 1.7
overall: 1.7
overview: |
idk18 is a revival
---
Taxidermy adaptogen do hot chicken consequat elit blue bottle pinterest portland velit normcore fashion axe anim mumblecore ex. Sus keffiyeh hot chicken affogato slow-carb nulla reprehenderit, occaecat neutral milk hotel chillwave XOXO tacos. Sus eu aliquip, shaman labore pinterest mumblecore narwhal kickstarter. Fit occaecat taiyaki DIY, succulents sint brunch magna tumblr YOLO thundercats.

View File

@ -1,19 +1,16 @@
```json
{
"name": "Kapish",
"date": "2023-07-09 01:58 PM",
"clients": [2014, 2016],
"rating": {
"website": 2.3,
"community": 2.3,
"clients": 2.3,
"overall": 2.3
}
}
```
Kapish is a revival
---
name: Kapish
date: 2023-07-09 01:58 PM
clients:
- 2014
- 2016
rating:
website: 2.3
community: 2.3
clients: 2.3
overall: 2.3
overview: |
Kapish is a revival
---
Tousled kinfolk coloring book +1 blackbird spyplane celiac vice palo santo mixtape grailed YOLO elit. Portland etsy fixie poutine. Pariatur gluten-free activated charcoal, XOXO godard shaman iceland. Art party single-origin coffee magna humblebrag sustainable celiac swag.

View File

@ -1,19 +1,15 @@
```json
{
"name": "Krypton",
"date": "2023-07-09 01:58 PM",
"clients": [2011],
"rating": {
"website": 4.7,
"community": 4.7,
"clients": 4.7,
"overall": 4.7
}
}
```
Krypton is a revival
---
name: Krypton
date: 2023-07-09 01:58 PM
clients:
- 2011
rating:
website: 4.7
community: 4.7
clients: 4.7
overall: 4.7
overview: |
Krypton is a revival
---
Artisan qui marxism mumblecore craft beer. Do lo-fi consequat raw denim gastropub sed blog, tumblr intelligentsia PBR&B. Deserunt fit ut retro. Gochujang mlkshk 3 wolf moon, lomo nisi excepteur tacos tousled vinyl et portland tilde.

View File

@ -1,19 +1,15 @@
```json
{
"name": "Mercury",
"date": "2023-07-09 01:58 PM",
"clients": [2013],
"rating": {
"website": 5,
"community": 5,
"clients": 5,
"overall": 5
}
}
```
Mercury is a revival
---
name: Mercury
date: 2023-07-09 01:58 PM
clients:
- 2013
rating:
website: 5
community: 5
clients: 5
overall: 5
overview: |
Mercury is a revival
---
Tilde lorem tbh, cliche eu forage laborum franzen vice. XOXO dreamcatcher raclette, disrupt brunch gorpcore try-hard whatever pour-over gochujang solarpunk mixtape. Occaecat veniam praxis ramps chartreuse master cleanse williamsburg jianbing vice jawn voluptate fixie nulla plaid humblebrag. Farm-to-table tofu 90's gochujang deep v affogato. Hella yes plz ipsum actually truffaut narwhal viral ut. Fam fixie mustache bushwick.

View File

@ -1,19 +1,16 @@
```json
{
"name": "Meteorite",
"date": "2023-07-09 01:58 PM",
"clients": [2016, 2020],
"rating": {
"website": 2.7,
"community": 2.7,
"clients": 2.7,
"overall": 2.7
}
}
```
Meteorite is a revival
---
name: Meteorite
date: 2023-07-09 01:58 PM
clients:
- 2016
- 2020
rating:
website: 2.7
community: 2.7
clients: 2.7
overall: 2.7
overview: |
Meteorite is a revival
---
Banjo bruh gatekeep, scenester mukbang crucifix XOXO everyday carry. Ullamco JOMO vinyl eu prism et. Roof party shoreditch green juice fugiat post-ironic chillwave flannel fixie bodega boys vegan prism snackwave etsy. Tote bag bodega boys church-key, voluptate palo santo vice wolf food truck leggings hot chicken subway tile.

View File

@ -1,19 +1,15 @@
```json
{
"name": "Rawblox",
"date": "2023-07-09 01:58 PM",
"clients": [2017],
"rating": {
"website": 1,
"community": 1,
"clients": 1,
"overall": 1
}
}
```
Rawblox is a revival
---
name: Rawblox
date: 2023-07-09 01:58 PM
clients:
- 2017
rating:
website: 1
community: 1
clients: 1
overall: 1
overview: |
Rawblox is a revival
---
Leggings chartreuse organic id proident. Ascot tattooed bruh palo santo portland roof party. Etsy irure anim flannel ennui cold-pressed same. Next level sartorial elit, adipisicing vexillologist bodega boys taiyaki before they sold out venmo. Try-hard austin four loko organic beard in narwhal tempor quinoa mollit. Tofu ut distillery knausgaard listicle Brooklyn keffiyeh tumblr vice aliqua meggings.

View File

@ -1,19 +1,18 @@
```json
{
"name": "Tadah",
"date": "2023-07-09 01:58 PM",
"clients": [2010, 2012, 2014, 2016],
"rating": {
"website": 3.5,
"community": 3.5,
"clients": 3.5,
"overall": 3.5
}
}
```
Tadah is a revival
---
name: Tadah
date: 2023-07-09 01:58 PM
clients:
- 2010
- 2012
- 2014
- 2016
rating:
website: 3.5
community: 3.5
clients: 3.5
overall: 3.5
overview: |
Tadah is a revival
---
Sed enim shaman roof party taiyaki pabst ipsum palo santo irure normcore polaroid small batch. Dolor ugh shoreditch incididunt laboris salvia iceland cornhole consectetur poutine raw denim fixie sunt activated charcoal. PBR&B pitchfork excepteur, woke eu affogato plaid leggings taiyaki. Kombucha hot chicken palo santo, laborum tempor aliqua cliche id jawn irony shaman. Tumeric et celiac, coloring book put a bird on it sartorial butcher cornhole heirloom.

View File

@ -5,12 +5,9 @@ settings:
excludeLinksFromLockfile: false
devDependencies:
'@sveltejs/adapter-auto':
specifier: ^2.1.0
version: 2.1.0(@sveltejs/kit@1.22.1)
'@sveltejs/adapter-netlify':
specifier: ^2.0.7
version: 2.0.7(@sveltejs/kit@1.22.1)
'@sveltejs/adapter-static':
specifier: ^2.0.2
version: 2.0.2(@sveltejs/kit@1.22.1)
'@sveltejs/kit':
specifier: ^1.22.1
version: 1.22.1(svelte@4.0.5)(vite@4.4.2)
@ -84,15 +81,6 @@ packages:
resolution: {integrity: sha512-dlR6LdS+0SzOAPx/TPRhnoi7hE251OVeT2Snw0RguNbBSbjUHdWr0l3vcUUDg26rEysT89kCbtw1lVorBXLLCg==}
dev: true
/@esbuild/android-arm64@0.17.19:
resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-arm64@0.18.11:
resolution: {integrity: sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==}
engines: {node: '>=12'}
@ -102,15 +90,6 @@ packages:
dev: true
optional: true
/@esbuild/android-arm@0.17.19:
resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-arm@0.18.11:
resolution: {integrity: sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==}
engines: {node: '>=12'}
@ -120,15 +99,6 @@ packages:
dev: true
optional: true
/@esbuild/android-x64@0.17.19:
resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-x64@0.18.11:
resolution: {integrity: sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==}
engines: {node: '>=12'}
@ -138,15 +108,6 @@ packages:
dev: true
optional: true
/@esbuild/darwin-arm64@0.17.19:
resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@esbuild/darwin-arm64@0.18.11:
resolution: {integrity: sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==}
engines: {node: '>=12'}
@ -156,15 +117,6 @@ packages:
dev: true
optional: true
/@esbuild/darwin-x64@0.17.19:
resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@esbuild/darwin-x64@0.18.11:
resolution: {integrity: sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==}
engines: {node: '>=12'}
@ -174,15 +126,6 @@ packages:
dev: true
optional: true
/@esbuild/freebsd-arm64@0.17.19:
resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/freebsd-arm64@0.18.11:
resolution: {integrity: sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==}
engines: {node: '>=12'}
@ -192,15 +135,6 @@ packages:
dev: true
optional: true
/@esbuild/freebsd-x64@0.17.19:
resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/freebsd-x64@0.18.11:
resolution: {integrity: sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==}
engines: {node: '>=12'}
@ -210,15 +144,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-arm64@0.17.19:
resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-arm64@0.18.11:
resolution: {integrity: sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==}
engines: {node: '>=12'}
@ -228,15 +153,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-arm@0.17.19:
resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-arm@0.18.11:
resolution: {integrity: sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==}
engines: {node: '>=12'}
@ -246,15 +162,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-ia32@0.17.19:
resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-ia32@0.18.11:
resolution: {integrity: sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==}
engines: {node: '>=12'}
@ -264,15 +171,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-loong64@0.17.19:
resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-loong64@0.18.11:
resolution: {integrity: sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==}
engines: {node: '>=12'}
@ -282,15 +180,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-mips64el@0.17.19:
resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-mips64el@0.18.11:
resolution: {integrity: sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==}
engines: {node: '>=12'}
@ -300,15 +189,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-ppc64@0.17.19:
resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-ppc64@0.18.11:
resolution: {integrity: sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==}
engines: {node: '>=12'}
@ -318,15 +198,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-riscv64@0.17.19:
resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-riscv64@0.18.11:
resolution: {integrity: sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==}
engines: {node: '>=12'}
@ -336,15 +207,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-s390x@0.17.19:
resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-s390x@0.18.11:
resolution: {integrity: sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==}
engines: {node: '>=12'}
@ -354,15 +216,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-x64@0.17.19:
resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-x64@0.18.11:
resolution: {integrity: sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==}
engines: {node: '>=12'}
@ -372,15 +225,6 @@ packages:
dev: true
optional: true
/@esbuild/netbsd-x64@0.17.19:
resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/netbsd-x64@0.18.11:
resolution: {integrity: sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==}
engines: {node: '>=12'}
@ -390,15 +234,6 @@ packages:
dev: true
optional: true
/@esbuild/openbsd-x64@0.17.19:
resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/openbsd-x64@0.18.11:
resolution: {integrity: sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==}
engines: {node: '>=12'}
@ -408,15 +243,6 @@ packages:
dev: true
optional: true
/@esbuild/sunos-x64@0.17.19:
resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
/@esbuild/sunos-x64@0.18.11:
resolution: {integrity: sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==}
engines: {node: '>=12'}
@ -426,15 +252,6 @@ packages:
dev: true
optional: true
/@esbuild/win32-arm64@0.17.19:
resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-arm64@0.18.11:
resolution: {integrity: sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==}
engines: {node: '>=12'}
@ -444,15 +261,6 @@ packages:
dev: true
optional: true
/@esbuild/win32-ia32@0.17.19:
resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-ia32@0.18.11:
resolution: {integrity: sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==}
engines: {node: '>=12'}
@ -462,15 +270,6 @@ packages:
dev: true
optional: true
/@esbuild/win32-x64@0.17.19:
resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-x64@0.18.11:
resolution: {integrity: sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==}
engines: {node: '>=12'}
@ -480,10 +279,6 @@ packages:
dev: true
optional: true
/@iarna/toml@2.2.5:
resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
dev: true
/@iconify/types@2.0.0:
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
dev: true
@ -582,24 +377,12 @@ packages:
picomatch: 2.3.1
dev: true
/@sveltejs/adapter-auto@2.1.0(@sveltejs/kit@1.22.1):
resolution: {integrity: sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==}
peerDependencies:
'@sveltejs/kit': ^1.0.0
dependencies:
'@sveltejs/kit': 1.22.1(svelte@4.0.5)(vite@4.4.2)
import-meta-resolve: 3.0.0
dev: true
/@sveltejs/adapter-netlify@2.0.7(@sveltejs/kit@1.22.1):
resolution: {integrity: sha512-QztxtQ26wzyonEOy+7RUvl4gqaYRi6UiBcIKrVTWA6uhkDYrB72ttt9t47phNeJAl9j2bCMZHQ8W7k2vXcwTrA==}
/@sveltejs/adapter-static@2.0.2(@sveltejs/kit@1.22.1):
resolution: {integrity: sha512-9wYtf6s6ew7DHUHMrt55YpD1FgV7oWql2IGsW5BXquLxqcY9vjrqCFo0TzzDpo+ZPZkW/v77k0eOP6tsAb8HmQ==}
peerDependencies:
'@sveltejs/kit': ^1.5.0
dependencies:
'@iarna/toml': 2.2.5
'@sveltejs/kit': 1.22.1(svelte@4.0.5)(vite@4.4.2)
esbuild: 0.17.19
set-cookie-parser: 2.6.0
dev: true
/@sveltejs/kit@1.22.1(svelte@4.0.5)(vite@4.4.2):
@ -1055,36 +838,6 @@ packages:
resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
dev: true
/esbuild@0.17.19:
resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@esbuild/android-arm': 0.17.19
'@esbuild/android-arm64': 0.17.19
'@esbuild/android-x64': 0.17.19
'@esbuild/darwin-arm64': 0.17.19
'@esbuild/darwin-x64': 0.17.19
'@esbuild/freebsd-arm64': 0.17.19
'@esbuild/freebsd-x64': 0.17.19
'@esbuild/linux-arm': 0.17.19
'@esbuild/linux-arm64': 0.17.19
'@esbuild/linux-ia32': 0.17.19
'@esbuild/linux-loong64': 0.17.19
'@esbuild/linux-mips64el': 0.17.19
'@esbuild/linux-ppc64': 0.17.19
'@esbuild/linux-riscv64': 0.17.19
'@esbuild/linux-s390x': 0.17.19
'@esbuild/linux-x64': 0.17.19
'@esbuild/netbsd-x64': 0.17.19
'@esbuild/openbsd-x64': 0.17.19
'@esbuild/sunos-x64': 0.17.19
'@esbuild/win32-arm64': 0.17.19
'@esbuild/win32-ia32': 0.17.19
'@esbuild/win32-x64': 0.17.19
dev: true
/esbuild@0.18.11:
resolution: {integrity: sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==}
engines: {node: '>=12'}
@ -1239,10 +992,6 @@ packages:
resolve-from: 4.0.0
dev: true
/import-meta-resolve@3.0.0:
resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==}
dev: true
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:

1
src/routes/+layout.ts Normal file
View File

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

View File

@ -1,17 +1,19 @@
export async function load() {
const allPostFiles = import.meta.glob("../../../pagesjson/blog/*.json")
const allPostFiles = import.meta.glob("../../../pages/blog/*.md")
return {
posts: Promise.all(
Object.entries(allPostFiles).map(async ([path, resolver]) => {
const { title, date } = (await resolver()) as any
Object.keys(allPostFiles).map(async path => {
const { metadata } = await allPostFiles[path]()
return {
title,
date,
path: path.match(/(\w+)\.json/)?.[1],
...(metadata as {
title: string
date: Date
}),
path: path.match(/(\w+)\.md/)?.[1],
}
})
}),
),
}
}

View File

@ -1,22 +0,0 @@
import { error } from "@sveltejs/kit"
import { load as loadParent } from "../+page"
export async function load({ params }) {
let title: string, date: Date, html: string
try {
;({ title, date, html } = await import(
`../../../../pagesjson/blog/${params.post}.json`
))
} catch (e) {
throw error(404, "Post not found")
}
const posts = await (await loadParent()).posts
// remove the current post from the list
const index = posts.findIndex(post => post.title == title)
posts.splice(index, 1)
return { title, date, html, posts }
}

View File

@ -1,21 +0,0 @@
export async function load() {
const allPostFiles = import.meta.glob("../../../pagesjson/index/*.json")
return {
revivals: Promise.all(
Object.entries(allPostFiles).map(async ([path, resolver]) => {
const { name, date, clients, rating, overview } =
(await resolver()) as any
return {
name,
date,
clients,
rating: rating.overall,
overview,
path: path.match(/(\w+)\.json/)?.[1],
}
})
),
}
}

View File

@ -0,0 +1,28 @@
import { error } from "@sveltejs/kit"
import { load as loadBlog } from "../../blog/+page"
export async function load({ params }) {
let data: any
try {
data = await import(`../../../../pages/blog/${params.post}.md`)
} catch (e) {
throw error(404, "Post not found")
}
const posts = await (await loadBlog()).posts
// remove the current post from the list
posts.splice(
posts.findIndex(post => post.title == data.metadata.title),
1,
)
return {
...(data.metadata as {
title: string
date: Date
}),
content: data.default,
posts,
}
}

View File

@ -1,32 +0,0 @@
import { error } from "@sveltejs/kit"
import { load as loadParent } from "../../index/+page"
export async function load({ params }) {
let name: string,
date: Date,
clients: number[],
rating: {
website: number
community: number
development: number
clients: number
overall: number
},
html: string
try {
;({ name, date, clients, rating, html } = await import(
`../../../../pagesjson/index/${params.revival}.json`
))
} catch (e) {
throw error(404, "Revival not found")
}
const revivals = await (await loadParent()).revivals
// remove the current post from the list
const index = revivals.findIndex(revival => revival.name == name)
revivals.splice(index, 1)
return { name, date, clients, rating, html, revivals }
}

View File

@ -0,0 +1,36 @@
import { error } from "@sveltejs/kit"
import { load as loadParent } from "../../revivals/+page"
export async function load({ params }) {
let data: any
try {
data = await import(`../../../../pages/revivals/${params.revival}.md`)
} catch (e) {
throw error(404, "Revival not found")
}
const revivals = await (await loadParent()).revivals
// remove the current post from the list
revivals.splice(
revivals.findIndex(revival => revival.name == data.metadata.name),
1,
)
return {
...(data.metadata as {
name: string
date: Date
clients: number[]
rating: {
website: number
community: number
clients: number
overall: number
}
overview: string
}),
content: data.default,
revivals,
}
}

View File

@ -0,0 +1,27 @@
export async function load() {
const allPostFiles = import.meta.glob("../../../pages/revivals/*.md")
return {
revivals: Promise.all(
Object.keys(allPostFiles).map(async path => {
const { metadata } = await allPostFiles[path]() as any
return {
...(metadata as {
name: string
date: Date
clients: number[]
rating: {
website: number
community: number
clients: number
overall: number
}
overview: string
}),
path: path.match(/(\w+)\.md/)?.[1],
}
}),
),
}
}

View File

@ -1,4 +1,4 @@
import adapter from "@sveltejs/adapter-netlify"
import adapter from "@sveltejs/adapter-static"
import { vitePreprocess } from "@sveltejs/kit/vite"
import autoImport from "sveltekit-autoimport"
import { mdsvex } from "mdsvex"

View File

@ -12,7 +12,7 @@ export default defineConfig({
],
server: {
fs: {
allow: ["./pagesjson"],
allow: ["./pages"],
},
},
})