2024-11-11

This commit is contained in:
2024-11-11 08:41:45 -06:00
parent b668156747
commit eeb0d0d876
14 changed files with 483 additions and 7 deletions

View File

@@ -5,7 +5,8 @@ const pluginRss = require("@11ty/eleventy-plugin-rss");
module.exports = function(eleventyConfig) {
// Passthrough episodes directory to include both markdown and audio files
eleventyConfig.addPassthroughCopy("episodes/*/*.mp3");
eleventyConfig.addPassthroughCopy("content/episodes/*/*.mp3");
eleventyConfig.addPassthroughCopy("content/images/*.jpg");
eleventyConfig.addPlugin(handlebarsPlugin);
eleventyConfig.addPlugin(pluginRss);

View File

@@ -0,0 +1,16 @@
---
title: Crew of the Kahuna
layout: campaign
tags: campaign
system:
name: FFG Star Wars
seasons:
- 1
- 4
---
It is a dark time for the galaxy. Striking from their hidden base, the Rebel Alliance has destroyed the evil GALACTIC EMPIRE's powerful Death Star. Now, Imperial forces strike back, throwing the galaxy into war.
In the midst of conflict, countless planets suffer under Imperial tyranny. Many flee opression to build new lives beyond the bounds of civilization.
On the edge of the Empire, these renegades struggle to survive and remain free in the midst of ongoing turmoil....

View File

@@ -0,0 +1,16 @@
---
title: Junk Fort Boys
layout: campaign
tags: campaign
system:
name: Blades in the Dark
seasons:
- 3
- 5
---
In the electrified, shadowy streets of Doskvol, the Junk Fort Boys—a distinctive crew of eccentrics—tackle a series of misadventures.
The team includes Squish, a formidable fighter known for his culinary misadventures; Djuckles, a tinkerer with a knack for improvisation and occasional nut-punching solutions; and the Captain, an avid reader and drinker with a penchant for the occasional explosive.
Together, they embark on daring heists and supernatural encounters across haunted ships, arcane academies, and high-society parties, often dealing with cursed artifacts and ghostly adversaries. Their dynamic headquarters evolves from a makeshift fort to a floating garbage barge, reflecting their chaotic lifestyle and inventive survival tactics. Through their escapades, they not only explore the mystical and perilous corners of Doskvol but also navigate the depths of their camaraderie and individual quests for purpose, all while maintaining a humorous twist on their unconventional problem-solving methods.

View File

@@ -0,0 +1,10 @@
---
title: D&D vs. Rick and Morty
layout: campaign
tags: campaign
system:
name: Dungeons and Dragons
seasons:
- 2
---
When Morty sees a cute girl at school playing Dungeons & Dragons, he asks Rick to show him the ropes, only to discover that his grandfather is a veteran gamer. Next thing he knows, the entire family has been pulled into a campaign that escalates from virtual D&D simulations to alternate universes governed by the rules of the game. And as it turns out, Rick isn't the only one who knows his way around a d20.

View File

@@ -4,6 +4,7 @@ $secondary-color: #f0f0f0;
@import url('https://fonts.googleapis.com/css2?family=Noticia+Text:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=UnifrakturCook:wght@700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400..800;1,400..800&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Didact+Gothic&family=Libre+Franklin:ital,wght@0,100..900;1,100..900&display=swap');
body {
font-family: Helvetica, sans-serif, sans-serif;
@@ -67,14 +68,33 @@ body {
}
&.season-5 {
--newspaper-background-texture-image: url(../textures/parchment.jpg);
--newspaper-background-texture-image: url(../images/parchment.jpg);
--newspaper-headline-font: 'Noticia Text';
--newspaper-base-font: 'EB Garamond';
--newspaper-name-font: 'UnifrakturCook';
font-family: var(--newspaper-base-font);
hgroup {
section.prologue {
padding: 20px;
margin: 20px;
border: black solid 1 px;
border-radius: 10px;
background: var(--newspaper-background-texture-image);
background-color: green;
}
hgroup{
h1 {
text-transform: uppercase;
margin: inherit;
}
h2 {
margin: inherit;
}
&.masthead {
text-align: center;
h1, h2 {
text-transform: inherit;
border-bottom: 0px;
font-family: var(--newspaper-headline-font);
line-height: 85%;
@@ -90,6 +110,47 @@ body {
font-style: italic;
}
}
}
h2 {
text-align: center;
}
article p {
text-align: justify;
}
}
&.season-4 {
--newspaper-background-texture-image: url(../images/starwars.jpg);
--newspaper-headline-font: 'Noticia Text';
--newspaper-base-font: 'EB Garamond';
--newspaper-name-font: 'UnifrakturCook';
font-family: "Libre Franklin";
section.prologue {
padding: 20px;
margin: 20px;
border: black solid 1 px;
border-radius: 10px;
background: var(--newspaper-background-texture-image);
background-color: black;
color: yellow;
}
hgroup{
text-align: center;
text-transform: uppercase;
h1 {
margin: inherit;
}
h2 {
margin: inherit;
}
}
strong {
text-transform: uppercase;
}
h2 {
text-align: center;
}

6
content/data/site.js Normal file
View File

@@ -0,0 +1,6 @@
require('dotenv').config();
module.exports = function () {
return {
url: process.env.SITE_URL
};
}

47
content/feeds/full.njk Normal file
View File

@@ -0,0 +1,47 @@
---
permalink: /feeds/full.xml
eleventyExcludeFromCollections: true
metadata:
title: Crew of the Kahuna
subtitle: A FFG Star Wars RPG Story
description: This is an RPG podcast.
language: en
categories:
- Fiction
- Comedy
- Lesiure
- Games
---
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="{{ site.url | addPathPrefixToFullUrl }}" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ metadata.title }}</title>
<link>{{ site.url | addPathPrefixToFullUrl }}</link>
<atom:link href="{{ permalink | htmlBaseUrl(site.url) }}" rel="self" type="application/rss+xml" />
<description>{{ metadata.description }}</description>
<language>{{ metadata.language or page.lang }}</language>
<itunes:subtitle>{{metadata.subtitle}}</itunes:subtitle>
<itunes:author>{{site.author.name}}</itunes:author>
{%- for category in metadata.categories %}
<itunes:category text="{{category}}"/>
{%- endfor %}
<itunes:owner>
<itunes:name>{{ site.author.name }}</itunes:name>
<itunes:email>{{ site.author.email }}</itunes:email>
</itunes:owner>
<generator>
{{eleventy.generator}}
</generator>
{%- for post in collections.episode | reverse %}
{%- set absolutePostUrl = post.url | htmlBaseUrl(site.url) %}
{% if post.data.podcast %}<item>
<title>{{ post.data.title }}</title>
<link>{{ absolutePostUrl }}</link>
<description>{{ post.content | renderTransforms(post.data.page, site.url) }}</description>
<pubDate>{{ post.date.toUTCString() | dateToRfc822 }}</pubDate>
<guid>{{ absolutePostUrl }}</guid>
<enclosure url="{{ post | podcastUrl | absoluteUrl(site.url) }}" type="audio/mpeg"/>
</item>{% endif %}
{%- endfor %}
</channel>
</rss>

View File

@@ -0,0 +1,79 @@
const { Podcast } = require('podcast');
const music_metadata = require('music-metadata');
const fs = require('fs');
async function getMp3Duration(filePath) {
try {
const metadata = await music_metadata.parseFile(filePath);
console.log('Duration:', metadata.format.duration, 'seconds');
return metadata.format.duration; // Duration in seconds
} catch (error) {
console.error('Error reading file:', error.message);
return null;
}
}
class PodcastFeed {
data() {
return {
// Writes to "/my-permalink/hello/index.html"
permalink: (data) => `${data.page.filePathStem}.xml`,
};
}
async render(data) {
const feed = new Podcast({
title: 'title',
description: 'description',
feedUrl: `${data.site.url}${data.page.filePathStem}.xml`,
siteUrl: data.site.url,
imageUrl: 'http://example.com/icon.png',
author: `${data.site.author.name}`,
copyright: '2013 Dylan Greene',
language: 'en',
categories: ['Category 1','Category 2','Category 3'],
pubDate: 'May 20, 2012 04:00:00 GMT',
ttl: 60,
itunesAuthor: `${data.site.author.name}`,
itunesSubtitle: 'I am a sub title',
itunesSummary: 'I am a summary',
itunesOwner: { name: `${data.site.author.name}`, email: `${data.site.author.email}` },
itunesExplicit: false,
itunesCategory: [{
text: 'Entertainment',
subcats: [{
text: 'Television'
}]
}],
itunesImage: 'http://example.com/image.png'
});
data.collections.episode.forEach(episode=>{
const episode_data = episode.data
const zero_pad_season = episode_data.season.toString().padStart(2, '0')
// const duration = getMp3Duration(`../episodes/s${zero_pad_season}/s${zero_pad_season}e${episode_data.episode}.mp3`)
/* loop over data and add to feed */
feed.addItem({
title: `S${zero_pad_season}E${episode_data.episode}: ${episode_data.title}`,
description: episode.content,
url: episode.url, // link to the item
guid: episode.url, // optional - defaults to url
categories: episode_data.categories,
author: data.site.author.name,
date: episode_data.date, // any format that js Date can parse.
// enclosure : {url:`${data.site.url}/episodes/s${zero_pad_season}/s${zero_pad_season}e${episode_data.episode}.mp3`}, // optional enclosure
enclosure : {url:`https://cdn.localhost/podcast/s${zero_pad_season}e${episode_data.episode}.mp3`}, // optional enclosure
itunesAuthor: data.site.author,
itunesExplicit: episode_data.itunesExplicit,
// itunesDuration: duration,
});
})
// cache the xml to send to clients
const xml = feed.buildXml();
return xml
}
}
module.exports = PodcastFeed

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
content/images/starwars.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

9
content/podcast.md Normal file
View File

@@ -0,0 +1,9 @@
---
layout: podcast
seasons:
- s01
- s05
campaigns:
- junkfort-boys
- crew-of-the-kahuna
---

View File

@@ -2,16 +2,16 @@
<head>
<meta charset="utf-8">
<title>{{#if title }}{{ title }}{{else}}{{ site.title }}{{/if}} - {{ site.name }}</title>
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="{{site.url}}/css/style.css">
</head>
<body class="{{{bodyClasses}}}">
<header>
<div>rpg.ascorrea.com</div>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/campaigns">Campaigns</a></li>
<li><a href="/seasons">Seasons</a></li>
<li><a href="{{site.url}}">Home</a></li>
<li><a href="./campaigns">Campaigns</a></li>
<li><a href="./seasons">Seasons</a></li>
</ul>
</nav>
</header>

226
package-lock.json generated
View File

@@ -12,7 +12,10 @@
"@11ty/eleventy-navigation": "^0.3.5",
"@11ty/eleventy-plugin-handlebars": "^1.0.0",
"@11ty/eleventy-plugin-rss": "^2.0.2",
"dotenv": "^16.4.5",
"markdown-it": "^14.1.0",
"music-metadata": "^10.5.1",
"podcast": "^2.0.1",
"sass": "^1.80.3"
}
},
@@ -383,6 +386,16 @@
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@sec-ant/readable-stream": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
"integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="
},
"node_modules/@tokenizer/token": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
"integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
},
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -431,6 +444,14 @@
"url": "https://paulmillr.com/funding/"
}
},
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/debug": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
@@ -557,6 +578,17 @@
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/dotenv": {
"version": "16.4.5",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
"integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://dotenvx.com"
}
},
"node_modules/entities": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz",
@@ -629,6 +661,23 @@
"reusify": "^1.0.4"
}
},
"node_modules/file-type": {
"version": "19.6.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-19.6.0.tgz",
"integrity": "sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==",
"dependencies": {
"get-stream": "^9.0.1",
"strtok3": "^9.0.1",
"token-types": "^6.0.0",
"uint8array-extras": "^1.3.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sindresorhus/file-type?sponsor=1"
}
},
"node_modules/fill-range": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
@@ -666,6 +715,21 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-stream": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
"integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
"dependencies": {
"@sec-ant/readable-stream": "^0.4.1",
"is-stream": "^4.0.1"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -778,6 +842,25 @@
"node": ">= 6"
}
},
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/immutable": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
@@ -815,6 +898,17 @@
"node": ">=0.12.0"
}
},
"node_modules/is-stream": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
"integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/linkify-it": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
@@ -860,6 +954,14 @@
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
"integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="
},
"node_modules/media-typer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -880,6 +982,25 @@
"node": ">=8.6"
}
},
"node_modules/mime-db": {
"version": "1.25.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.25.0.tgz",
"integrity": "sha512-5k547tI4Cy+Lddr/hdjNbBEWBwSl8EBc5aSdKvedav8DReADgWJzcYiktaRIw3GtGC1jjwldXtTzvqJZmtvC7w==",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.13",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.13.tgz",
"integrity": "sha512-ryBDp1Z/6X90UvjUK3RksH0IBPM137T7cmg4OgD5wQBojlAiUwuok0QeELkim/72EtcYuNlmbkrcGuxj3Kl0YQ==",
"dependencies": {
"mime-db": "~1.25.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/minimist": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
@@ -893,6 +1014,34 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/music-metadata": {
"version": "10.5.1",
"resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-10.5.1.tgz",
"integrity": "sha512-lrBqOlhgAlqzBkqEMiqnVaCXwfQBkid8eXborPVceYv/t4lfXN3DiCBHed3fu+5kpqpaAez/rn3/PiT/fCYU4g==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/Borewit"
},
{
"type": "buymeacoffee",
"url": "https://buymeacoffee.com/borewit"
}
],
"dependencies": {
"@tokenizer/token": "^0.3.0",
"content-type": "^1.0.5",
"debug": "^4.3.7",
"file-type": "^19.6.0",
"media-typer": "^1.1.0",
"strtok3": "^9.0.1",
"token-types": "^6.0.0",
"uint8array-extras": "^1.4.0"
},
"engines": {
"node": ">=16.0.0"
}
},
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
@@ -937,6 +1086,18 @@
"resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz",
"integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q=="
},
"node_modules/peek-readable": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.3.1.tgz",
"integrity": "sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==",
"engines": {
"node": ">=14.16"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Borewit"
}
},
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@@ -948,6 +1109,14 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/podcast": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/podcast/-/podcast-2.0.1.tgz",
"integrity": "sha512-TWXe/zVziwJNksAn7RLkSre+Z6VQgbs/+gC7qQCKdkyw0hv2hdFGOY9rHgKqa4LI+UP+yZBa6Wr+b9a9vrYDYQ==",
"dependencies": {
"rss": "^1.2.2"
}
},
"node_modules/posthtml": {
"version": "0.16.6",
"resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz",
@@ -1030,6 +1199,15 @@
"node": ">=0.10.0"
}
},
"node_modules/rss": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/rss/-/rss-1.2.2.tgz",
"integrity": "sha512-xUhRTgslHeCBeHAqaWSbOYTydN2f0tAzNXvzh3stjz7QDhQMzdgHf3pfgNIngeytQflrFPfy6axHilTETr6gDg==",
"dependencies": {
"mime-types": "2.1.13",
"xml": "1.0.1"
}
},
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -1101,6 +1279,22 @@
"node": ">=0.10.0"
}
},
"node_modules/strtok3": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/strtok3/-/strtok3-9.0.1.tgz",
"integrity": "sha512-ERPW+XkvX9W2A+ov07iy+ZFJpVdik04GhDA4eVogiG9hpC97Kem2iucyzhFxbFRvQ5o2UckFtKZdp1hkGvnrEw==",
"dependencies": {
"@tokenizer/token": "^0.3.0",
"peek-readable": "^5.3.1"
},
"engines": {
"node": ">=16"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Borewit"
}
},
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -1112,6 +1306,22 @@
"node": ">=8.0"
}
},
"node_modules/token-types": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz",
"integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==",
"dependencies": {
"@tokenizer/token": "^0.3.0",
"ieee754": "^1.2.1"
},
"engines": {
"node": ">=14.16"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/Borewit"
}
},
"node_modules/uc.micro": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
@@ -1129,10 +1339,26 @@
"node": ">=0.8.0"
}
},
"node_modules/uint8array-extras": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz",
"integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="
},
"node_modules/xml": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
"integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw=="
}
}
}

View File

@@ -4,6 +4,8 @@
"description": "A static site generator",
"main": "index.js",
"scripts": {
"build": "npx @11ty/eleventy",
"serve": "npx @11ty/eleventy --serve",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
@@ -13,7 +15,10 @@
"@11ty/eleventy-navigation": "^0.3.5",
"@11ty/eleventy-plugin-handlebars": "^1.0.0",
"@11ty/eleventy-plugin-rss": "^2.0.2",
"dotenv": "^16.4.5",
"markdown-it": "^14.1.0",
"music-metadata": "^10.5.1",
"podcast": "^2.0.1",
"sass": "^1.80.3"
}
}