aboutsummaryrefslogtreecommitdiffstats
path: root/src/gen
diff options
context:
space:
mode:
Diffstat (limited to 'src/gen')
-rw-r--r--src/gen/atom.11ty.js30
-rw-r--r--src/gen/error.11ty.js21
-rw-r--r--src/gen/gen.11tydata.js8
-rw-r--r--src/gen/json.11ty.js28
-rw-r--r--src/gen/manifest.11ty.js28
-rw-r--r--src/gen/metadata.11ty.js15
-rw-r--r--src/gen/robot.11ty.js13
-rw-r--r--src/gen/sitemap.11ty.js17
8 files changed, 160 insertions, 0 deletions
diff --git a/src/gen/atom.11ty.js b/src/gen/atom.11ty.js
new file mode 100644
index 0000000..0184018
--- /dev/null
+++ b/src/gen/atom.11ty.js
@@ -0,0 +1,30 @@
+module.exports = class {
+ async data() {
+ return {
+ permalink: "/feed.xml"
+ };
+ }
+
+ async render(data) {
+ return `<?xml version="1.0" encoding="utf-8"?>
+ <feed xmlns="http://www.w3.org/2005/Atom">
+ <title>${data.metadata.title}</title>
+ <subtitle>${data.metadata.description}</subtitle>
+ <link href="${new URL(data.url, data.metadata.url)}" rel="self"/>
+ <link href="${data.metadata.url}"/>
+ <updated>${this.getNewestCollectionItemDate((data.collections.posts) || []).toISOString()}</updated>
+ <id>${data.metadata.url}</id>
+ <author>
+ <name>${data.metadata.author.name}</name>
+ <email>${data.metadata.author.email}</email>
+ </author>
+ ${(await Promise.all((data.collections.posts || []).map(async post => `<entry>
+ <title>${post.data.title}</title>
+ <link href="${new URL(post.url, data.metadata.url)}"/>
+ <updated>${post.date.toISOString()}</updated>
+ <id>${new URL(post.url, data.metadata.url)}</id>
+ <content type="html"><![CDATA[${await this.convertHtmlToAbsoluteUrls(post.templateContent, new URL(post.url, data.metadata.url)) || ""}]]></content>
+ </entry>`))).join()}
+ </feed>`;
+ }
+};
diff --git a/src/gen/error.11ty.js b/src/gen/error.11ty.js
new file mode 100644
index 0000000..6c7105e
--- /dev/null
+++ b/src/gen/error.11ty.js
@@ -0,0 +1,21 @@
+module.exports = class {
+ data() {
+ return {
+ layout: "base",
+ pagination: {
+ data: "err",
+ size: 1,
+ },
+ err: {
+ offline: "The Page is offline",
+ 404: "Not Found"
+ },
+ permalink: data => `/${data.pagination.items}.html`
+ };
+ }
+
+ render(data) {
+ return `<h1 style="color: rgb(139 0 0)">ERROR: ${data.pagination.items}</h1>
+ <p>${data.err[data.pagination.items]}</p>`;
+ }
+};
diff --git a/src/gen/gen.11tydata.js b/src/gen/gen.11tydata.js
new file mode 100644
index 0000000..52b6ced
--- /dev/null
+++ b/src/gen/gen.11tydata.js
@@ -0,0 +1,8 @@
+const path = require("path");
+
+module.exports = {
+ eleventyExcludeFromCollections: true,
+ eleventyComputed: {
+ permalink: data => data.permalink || `/${path.relative("/gen", data.page.filePathStem)}.${data.page.outputFileExtension}`
+ }
+}; \ No newline at end of file
diff --git a/src/gen/json.11ty.js b/src/gen/json.11ty.js
new file mode 100644
index 0000000..017b69c
--- /dev/null
+++ b/src/gen/json.11ty.js
@@ -0,0 +1,28 @@
+module.exports = class {
+ async data() {
+ return {
+ permalink: "/feed.json"
+ };
+ }
+
+ async render(data) {
+ return JSON.stringify({
+ version: "https://jsonfeed.org/version/1.1",
+ title: data.metadata.title,
+ language: data.metadata.language,
+ home_page_url: data.metadata.url,
+ feed_url: new URL(data.page.url, data.metadata.url),
+ description: data.metadata.description,
+ author: {
+ name: data.metadata.author.name
+ },
+ items: await Promise.all((data.collections.posts || []).map(async post => ({
+ id: new URL(post.url, data.metadata.url),
+ url: new URL(post.url, data.metadata.url),
+ title: new URL(post.url, data.metadata.url),
+ content_html: await this.convertHtmlToAbsoluteUrls(post.templateContent, new URL(post.url, data.metadata.url)),
+ date_published: post.date.toISOString()
+ })).reverse())
+ });
+ }
+}; \ No newline at end of file
diff --git a/src/gen/manifest.11ty.js b/src/gen/manifest.11ty.js
new file mode 100644
index 0000000..e41df83
--- /dev/null
+++ b/src/gen/manifest.11ty.js
@@ -0,0 +1,28 @@
+module.exports = class {
+ data() {
+ return {
+ permalink: "/app.webmanifest"
+ };
+ }
+
+ render(data) {
+ return JSON.stringify({
+ $schema: "https://json.schemastore.org/web-manifest-combined.json",
+ name: data.metadata.title,
+ lang: data.metadata.language,
+ start_url: "/",
+ id: "/",
+ scope: "/",
+ display: "minimal-ui",
+ background_color: data.metadata.theme,
+ theme_color: data.metadata.theme,
+ description: data.metadata.description,
+ icons: [192, 512, 1024].map(size => ({
+ src: `/favicon/${size}.png`,
+ type: "image/png",
+ sizes: `${size}x${size}`,
+ purpose: "maskable"
+ }))
+ });
+ }
+}; \ No newline at end of file
diff --git a/src/gen/metadata.11ty.js b/src/gen/metadata.11ty.js
new file mode 100644
index 0000000..87d7997
--- /dev/null
+++ b/src/gen/metadata.11ty.js
@@ -0,0 +1,15 @@
+module.exports = class {
+ data() {
+ return {
+ permalink: "/assets/metadata.js"
+ };
+ }
+
+ render() {
+ const obj = JSON.stringify({
+ version: new Date().toISOString()
+ });
+ return `const obj = '${obj}'
+ export default () => JSON.parse(obj);`;
+ }
+}; \ No newline at end of file
diff --git a/src/gen/robot.11ty.js b/src/gen/robot.11ty.js
new file mode 100644
index 0000000..289d3b6
--- /dev/null
+++ b/src/gen/robot.11ty.js
@@ -0,0 +1,13 @@
+module.exports = class {
+ data() {
+ return {
+ permalink: "/robot.txt"
+ };
+ }
+
+ render(data) {
+ return `User-agent: *
+ Disallow:
+ Sitemap: ${new URL("/sitemap.xml",data.metadata.url)}`;
+ }
+}; \ No newline at end of file
diff --git a/src/gen/sitemap.11ty.js b/src/gen/sitemap.11ty.js
new file mode 100644
index 0000000..02b285f
--- /dev/null
+++ b/src/gen/sitemap.11ty.js
@@ -0,0 +1,17 @@
+module.exports = class {
+ data() {
+ return {
+ permalink: "/sitemap.xml"
+ };
+ }
+
+ render(data) {
+ return `<?xml version="1.0" encoding="utf-8"?>
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+ ${(data.collections.all || []).map(page => `<url>
+ <loc>${new URL(page.url, data.metadata.url)}</loc>
+ <lastmod>${page.date.toISOString()}</lastmod>
+ </url>`).join()}
+ </urlset>`;
+ }
+};