From 3bd08521ac2fe0458598e5ddec385d6e516a3db6 Mon Sep 17 00:00:00 2001 From: Marc Pervaz Boocha Date: Tue, 25 Jan 2022 13:58:30 +0530 Subject: change to 11ty.js for non markdown templates Signed-off-by: Marc Pervaz Boocha Please enter the commit message for your changes. Lines starting with '#' will be ignored, and an empty message aborts the commit. On branch main Your branch is up to date with 'origin/main'. Changes to be committed: modified: .eleventy.js modified: .eslintrc.js new file: assets/index.css new file: assets/index.js new file: assets/mandle.png new file: assets/sw.js renamed: favicon.ico -> favicon/icon.ico modified: package-lock.json modified: package.json modified: src/about.md deleted: src/assets/atom.njk deleted: src/assets/error.md deleted: src/assets/index.css deleted: src/assets/index.mjs deleted: src/assets/json.njk deleted: src/assets/manifest.njk deleted: src/assets/prism.css deleted: src/assets/robot.njk deleted: src/assets/sitemap.njk deleted: src/assets/sw.mjs new file: src/blog.11ty.js deleted: src/blog.njk modified: src/data/env.js deleted: src/data/err.js modified: src/data/metadata.js deleted: src/data/navigator.js new file: src/gen/atom.11ty.js new file: src/gen/error.11ty.js renamed: src/assets/assets.11tydata.js -> src/gen/gen.11tydata.js new file: src/gen/json.11ty.js new file: src/gen/manifest.11ty.js new file: src/gen/metadata.11ty.js new file: src/gen/robot.11ty.js new file: src/gen/sitemap.11ty.js modified: src/index.md new file: src/layouts/base.11ty.js deleted: src/layouts/base.njk new file: src/layouts/page.11ty.js new file: src/layouts/post.11ty.js deleted: src/layouts/post.njk modified: src/post/post.11tydata.js --- src/about.md | 10 +-- src/assets/assets.11tydata.js | 8 --- src/assets/atom.njk | 26 ------- src/assets/error.md | 11 --- src/assets/index.css | 137 ----------------------------------- src/assets/index.mjs | 12 ---- src/assets/json.njk | 30 -------- src/assets/manifest.njk | 29 -------- src/assets/prism.css | 162 ------------------------------------------ src/assets/robot.njk | 6 -- src/assets/sitemap.njk | 14 ---- src/assets/sw.mjs | 59 --------------- src/blog.11ty.js | 23 ++++++ src/blog.njk | 19 ----- src/data/env.js | 4 +- src/data/err.js | 121 ------------------------------- src/data/metadata.js | 2 +- src/data/navigator.js | 13 ---- src/gen/atom.11ty.js | 30 ++++++++ src/gen/error.11ty.js | 21 ++++++ src/gen/gen.11tydata.js | 8 +++ src/gen/json.11ty.js | 28 ++++++++ src/gen/manifest.11ty.js | 28 ++++++++ src/gen/metadata.11ty.js | 15 ++++ src/gen/robot.11ty.js | 13 ++++ src/gen/sitemap.11ty.js | 17 +++++ src/index.md | 11 +-- src/layouts/base.11ty.js | 51 +++++++++++++ src/layouts/base.njk | 46 ------------ src/layouts/page.11ty.js | 14 ++++ src/layouts/post.11ty.js | 17 +++++ src/layouts/post.njk | 12 ---- src/post/post.11tydata.js | 12 ++-- 33 files changed, 280 insertions(+), 729 deletions(-) delete mode 100644 src/assets/assets.11tydata.js delete mode 100644 src/assets/atom.njk delete mode 100644 src/assets/error.md delete mode 100644 src/assets/index.css delete mode 100644 src/assets/index.mjs delete mode 100644 src/assets/json.njk delete mode 100644 src/assets/manifest.njk delete mode 100644 src/assets/prism.css delete mode 100644 src/assets/robot.njk delete mode 100644 src/assets/sitemap.njk delete mode 100644 src/assets/sw.mjs create mode 100644 src/blog.11ty.js delete mode 100644 src/blog.njk delete mode 100644 src/data/err.js delete mode 100644 src/data/navigator.js create mode 100644 src/gen/atom.11ty.js create mode 100644 src/gen/error.11ty.js create mode 100644 src/gen/gen.11tydata.js create mode 100644 src/gen/json.11ty.js create mode 100644 src/gen/manifest.11ty.js create mode 100644 src/gen/metadata.11ty.js create mode 100644 src/gen/robot.11ty.js create mode 100644 src/gen/sitemap.11ty.js create mode 100644 src/layouts/base.11ty.js delete mode 100644 src/layouts/base.njk create mode 100644 src/layouts/page.11ty.js create mode 100644 src/layouts/post.11ty.js delete mode 100644 src/layouts/post.njk (limited to 'src') diff --git a/src/about.md b/src/about.md index ef1fad4..a0beb69 100644 --- a/src/about.md +++ b/src/about.md @@ -1,15 +1,11 @@ --- -layout: base.njk +layout: page title: About Me -tags: - - navigator --- -# About Me - ## {{ metadata.author.name }} -!["A Photo of me]({{ metadata.author.image | url}}){.side} +!["A Photo of me]({{ metadata.author.image}}){.side} Email: <{{ metadata.author.email }}> -Github: <{{ metadata.author.github | url}}> +Github: <{{ metadata.author.github}}> diff --git a/src/assets/assets.11tydata.js b/src/assets/assets.11tydata.js deleted file mode 100644 index 6704307..0000000 --- a/src/assets/assets.11tydata.js +++ /dev/null @@ -1,8 +0,0 @@ -const path = require("path") - -module.exports = { - eleventyExcludeFromCollections: true, - eleventyComputed: { - permalink: data => data.permalink || `/${path.relative("/assets", data.page.filePathStem)}.${data.page.outputFileExtension}` - } -} \ No newline at end of file diff --git a/src/assets/atom.njk b/src/assets/atom.njk deleted file mode 100644 index 4e517ca..0000000 --- a/src/assets/atom.njk +++ /dev/null @@ -1,26 +0,0 @@ ---- -permalink: /feed.xml ---- - - - {{ metadata.title }} - {{ metadata.description }} - - - {{ collections.posts | getNewestCollectionItemDate | dateToRfc3339 }} - {{ metadata.url }} - - {{ metadata.author.name }} - {{ metadata.author.email }} - - {% for post in collections.posts %} - {% set absolutePostUrl %}{{ post.url | url | absoluteUrl(metadata.url) }}{% endset %} - - {{ post.data.title }} - - {{ post.date | dateToRfc3339 }} - {{ '/' | url | absoluteUrl(metadata.url) }} - - - {% endfor %} - diff --git a/src/assets/error.md b/src/assets/error.md deleted file mode 100644 index 65655f3..0000000 --- a/src/assets/error.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: base.njk -pagination: - data: err - size: 1 - alias: error -permalink: "/{{ error.code }}.html" ---- -# ERROR: {{ error.code }} {.err} - -{{ error.msg }} diff --git a/src/assets/index.css b/src/assets/index.css deleted file mode 100644 index 2a75675..0000000 --- a/src/assets/index.css +++ /dev/null @@ -1,137 +0,0 @@ -:root { - --fg: rgb(0 0 0); - --bg: rgb(255 255 255); - --brand: rgb(139 0 0); - - @media screen and (prefers-color-scheme: dark) { - --bg: rgb(0 0 0); - --fg: rgb(255 255 255); - --brand: rgb(255 0 0); - } -} - -body { - font-family: serif; - background-color: var(--bg); - color: var(--fg); - - @media screen { - max-width: 920px; - min-height: calc(100vh - 1rem); - margin: 0.5rem auto; - display: grid; - grid-template: "head" auto "main" auto "footer" 1fr / auto; - - & > header { - background-color: var(--brand); - font-weight: bold; - color: rgb(255 255 255); - padding: 1rem; - grid-area: head; - - & *:any-link { - text-decoration: none; - } - } - - & > footer { - background-color: var(--brand); - color: rgb(255 255 255); - padding: 0.5rem; - align-self: end; - grid-area: footer; - - & *:any-link { - text-decoration: none; - } - } - - & > main { - margin: 0.5rem 0; - grid-area: main; - } - } -} - -* :any-link { - color: inherit; - text-decoration: underline; - - @media screen { - &:is(:hover, :active) { - font-style: italic; - } - } -} - -.header-anchor:any-link { - text-decoration: none; - - @media screen { - &:is(:hover, :active) { - font-style: inherit; - } - } -} - -a[href^="mailto:"]::after { - content: "📧"; -} - -.err { - color: var(--brand); -} - -aside { - width: 40%; - padding: 0.5rem; - margin-left: 0.5rem; - float: right; - background-color: var(--brand); - color: rgb(255 255 255); -} - -img { - max-width: 100%; - max-height: 100%; - - &.side { - width: 40%; - float: right; - - @media screen and (max-width: 450px) { - width: 100%; - float: none; - } - } -} - -@media screen { - nav > a { - margin-right: 1rem; - padding-left: 0; - padding-right: 0; - - @media (max-width: 450px) { - display: block; - margin: auto; - text-align: center; - padding: 16px; - - &.navlinks { - display: none; - - &.navopen { - display: block; - } - } - } - } -} - -@media print { - header, - footer { - display: none; - } -} diff --git a/src/assets/index.mjs b/src/assets/index.mjs deleted file mode 100644 index 4d7c2b0..0000000 --- a/src/assets/index.mjs +++ /dev/null @@ -1,12 +0,0 @@ -document.getElementById("nav-toogle").addEventListener("click", async() => { - const navlinks = Array.from(document.getElementsByClassName("navlinks")) - for (const navlink of navlinks) { - navlink.classList.toggle("navopen") - } - return false -}) -window.addEventListener('load', async() => { - if ('serviceWorker' in navigator) { - navigator.serviceWorker.register('/sw.js') - } -}) \ No newline at end of file diff --git a/src/assets/json.njk b/src/assets/json.njk deleted file mode 100644 index 0d58804..0000000 --- a/src/assets/json.njk +++ /dev/null @@ -1,30 +0,0 @@ ---- -permalink: /feed.json ---- -{ - "version": "https://jsonfeed.org/version/1.1", - "title": "{{ metadata.title }}", - "language": "{{ metadata.language }}", - "home_page_url": "{{ metadata.url }}", - "feed_url": "{{ permalink | url | absoluteUrl(metadata.url) }}", - "description": "{{ metadata.description }}", - "author": { - "name": "{{ metadata.author.name }}" - }, - "items": [ - {%- for post in collections.posts | reverse %} - {%- set absolutePostUrl %}{{ post.url | url | absoluteUrl(metadata.url) }}{% endset -%} - { - "id": "{{ absolutePostUrl }}", - "url": "{{ absolutePostUrl }}", - "title": "{{ post.data.title }}", - "content_html": {% if post.templateContent %}{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) | dump | safe }} - {% else %}""{% endif %}, - "date_published": "{{ post.date | rssDate }}" - } - {%- if not loop.last -%} - , - {%- endif -%} -{%- endfor %} -] -} diff --git a/src/assets/manifest.njk b/src/assets/manifest.njk deleted file mode 100644 index 9362037..0000000 --- a/src/assets/manifest.njk +++ /dev/null @@ -1,29 +0,0 @@ ---- -permalink: /app.webmanifest ---- -{ - "$schema": "https://json.schemastore.org/web-manifest-combined.json", - "name": "{{ metadata.title }}", - - "lang": "{{ metadata.language }}", - "start_url": "/", - "id": "/", - "scope": "/", - "display": "minimal-ui", - "background_color": "{{ metadat.theme }}", - "theme_color": "{{ metadat.theme }}", - "description": "{{ metadata.description }}", - "icons": [ -{%- for size in [192,512,1024] %} - { - "src": "/favicon/{{ size }}.png", - "type": "image/png", - "sizes": "{{ size }}x{{ size }}", - "purpose": "maskable" - } - {%- if not loop.last -%} - , - {%- endif -%} - {%- endfor -%} - ] -} diff --git a/src/assets/prism.css b/src/assets/prism.css deleted file mode 100644 index 110c6be..0000000 --- a/src/assets/prism.css +++ /dev/null @@ -1,162 +0,0 @@ -code[class*="language-"], -pre[class*="language-"] { - color: rgb(248 248 242); - background: none; - text-shadow: 0 1px rgb(0 0 0 / 30%); - font-family: monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - tab-size: 4; - hyphens: none; - - @media screen and (prefers-color-scheme: dark) { - code[class*="language-"], - pre[class*="language-"] { - color: #000; - text-shadow: 0 1px #fff; - } - } -} - -/* Code blocks */ - -pre[class*="language-"] { - padding: 1em; - margin: 0.5em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code[class*="language-"], -pre[class*="language-"] { - background: rgb(39 40 34); - - @media screen and (prefers-color-scheme: dark) { - background: rgb(245 242 240); - } -} - -/* Inline code */ - -:not(pre) > code[class*="language-"] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: rgb(130 146 162); - - @media screen and (prefers-color-scheme: dark) { - color: rgb(112 128 144); - } -} - -.token.punctuation { - color: rgb(248 248 242); - - @media screen and (prefers-color-scheme: dark) { - color: rgb(153 0 85); - } -} - -.token.namespace { - opacity: 0.7; -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: rgb(249 38 114); - - @media screen and (prefers-color-scheme: dark) { - color: rgb(153 0 85); - } -} - -.token.boolean, -.token.number { - color: rgb(174 129 255); - - @media screen and (prefers-color-scheme: dark) { - color: rgb(153 0 85); - } -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: rgb(166 226 46); - - @media screen and (prefers-color-scheme: dark) { - color: rgb(102 153 0); - } -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: rgb(248 248 242); - - @media screen and (prefers-color-scheme: dark) { - color: rgb(154 110 58); - background: rgb(255 255 255 / 50%); - } -} - -.token.atrule, -.token.attr-value, -.token.function, -.token.class-name { - color: rgb(230 219 116); - - @media screen and (prefers-color-scheme: dark) { - color: rgb(0 118 168); - } -} - -.token.keyword { - color: rgb(102 217 239); - - @media screen and (prefers-color-scheme: dark) { - color: rgb(221 75 104); - } -} - -.token.regex, -.token.important { - color: rgb(253 151 31); - - @media screen (prefers-color-scheme: dark) { - color: rgb(238 153 0); - } -} - -.token.important, -.token.bold { - font-weight: bold; -} - -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} diff --git a/src/assets/robot.njk b/src/assets/robot.njk deleted file mode 100644 index dcaa728..0000000 --- a/src/assets/robot.njk +++ /dev/null @@ -1,6 +0,0 @@ ---- -permalink: /robot.txt ---- -User-agent: * -Allow: / -Sitemap: {{ "/"| url | absoluteUrl(metadata.url) }}/sitemap.xml \ No newline at end of file diff --git a/src/assets/sitemap.njk b/src/assets/sitemap.njk deleted file mode 100644 index 910b238..0000000 --- a/src/assets/sitemap.njk +++ /dev/null @@ -1,14 +0,0 @@ ---- -permalink: /sitemap.xml ---- - - -{%- for page in collections.all %} - {% set absoluteUrl %}{{ page.url | url | absoluteUrl(metadata.url) }}{% endset %} - - {{ absoluteUrl }} - {{ page.date | datefmt }} - -{%- endfor %} - - diff --git a/src/assets/sw.mjs b/src/assets/sw.mjs deleted file mode 100644 index 78d659a..0000000 --- a/src/assets/sw.mjs +++ /dev/null @@ -1,59 +0,0 @@ -const sw_cache = { - offline: "/offline.html", - default: [ - "/index.css", - "/prism.css", - "/index.js", - "/favicon/icon.svg", - "/offline.html", - "/" - ], - // eslint-disable-next-line no-undef - store: VERSION, -} - -self.addEventListener('install', event => { - self.skipWaiting() - event.waitUntil((async() => { - const cache = await self.caches.open(sw_cache.store) - return cache.addAll(sw_cache.default) - })()) -}) - -self.addEventListener('activate', event => { - event.waitUntil((async() => { - const keys = await self.caches.keys() - Promise.all(keys.map(key => { - if (key !== sw_cache.store) { - return self.caches.delete(key) - } - })) - })()) -}) - -self.addEventListener('fetch', event => { - event.respondWith((async() => { - if (event.request.method != 'GET') { - return fetch(event.request) - } - - const req_url = new URL(event.request.url) - if (req_url.origin != self.location.origin) { - return fetch(event.request) - } - - const cacheres = await self.caches.match(event.request) - return cacheres || (async() => { - try { - const response = await self.fetch(event.request) - const cache = await self.caches.open(sw_cache.store) - cache.put(event.request, response.clone()) - return response - } catch { - return self.caches.match(sw_cache.offline) - } - })() - })()) - - -}) \ No newline at end of file diff --git a/src/blog.11ty.js b/src/blog.11ty.js new file mode 100644 index 0000000..eb79089 --- /dev/null +++ b/src/blog.11ty.js @@ -0,0 +1,23 @@ +module.exports = class { + data() { + return { + layout: "base", + title: "Blog" + }; + } + + render(data) { + return `
+ ${(data.collections.posts || []).map((post, index, array) => ` + `).join()} +
`; + } +}; diff --git a/src/blog.njk b/src/blog.njk deleted file mode 100644 index 9bd2a05..0000000 --- a/src/blog.njk +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: base.njk -title: Blog -tags: - - navigator ---- -
- {% for post in collections.posts %} -
-

- {{ post.data.title }} -

- -

{{ metadata.author.name }} - {{ post.data.date | datefmt }}

-
-

{{ post.data.description }}

-
- {% endfor %} -
\ No newline at end of file diff --git a/src/data/env.js b/src/data/env.js index 91842b4..a497313 100644 --- a/src/data/env.js +++ b/src/data/env.js @@ -1,3 +1,3 @@ -const process = require("process") +const process = require("process"); -module.exports = () => process.env \ No newline at end of file +module.exports = () => process.env; \ No newline at end of file diff --git a/src/data/err.js b/src/data/err.js deleted file mode 100644 index 0e3fe56..0000000 --- a/src/data/err.js +++ /dev/null @@ -1,121 +0,0 @@ -module.exports = [{ - code: "offline", - msg: "The Page is offline" - }, - { - code: 400, - msg: "Bad Request" - }, - { - code: 401, - msg: "Unauthorized" - }, - { - code: 402, - msg: "Payment Required" - }, - { - code: 403, - msg: "Forbidden" - }, - { - code: 404, - msg: "Not Found" - }, - { - code: 405, - msg: "Method Not Allowed" - }, - { - code: 406, - msg: "Not Acceptable" - }, - { - code: 407, - msg: "Proxy Authentication Required" - }, - { - code: 408, - msg: "Request Timeout" - }, - { - code: 409, - msg: "Conflict" - }, - { - code: 410, - msg: "Gone" - }, - { - code: 411, - msg: "Length Required" - }, - { - code: 412, - msg: "Precondition Failed" - }, - { - code: 413, - msg: "Payload Too Large" - }, - { - code: 414, - msg: "URI Too Long" - }, - { - code: 415, - msg: "Unsupported Media Type" - }, - { - code: 416, - msg: "Range Not Satisfiable" - }, - { - code: 417, - msg: "Expectation Failed" - }, - { - code: 418, - msg: "I\"m a teapot" - }, - { - code: 421, - msg: "Misdirected Request" - }, - { - code: 422, - msg: "Unprocessable Entity" - }, - { - code: 423, - msg: "Locked" - }, - { - code: 424, - msg: "Failed Dependency" - }, - { - code: 425, - msg: "Too Early" - }, - { - code: 426, - msg: "Upgrade Required" - }, - { - code: 428, - msg: "Precondition Required" - }, - { - code: 429, - msg: "Too Many Requests" - }, - { - code: 431, - msg: "Request Header Fields Too Large" - }, - { - code: 451, - msg: "Unavailable For Legal Reasons" - } -] \ No newline at end of file diff --git a/src/data/metadata.js b/src/data/metadata.js index db05b63..a38e344 100644 --- a/src/data/metadata.js +++ b/src/data/metadata.js @@ -15,4 +15,4 @@ module.exports = { image: "/favicon/512.png", url: "/about/#marc-pervaz-boocha" } -} \ No newline at end of file +}; \ No newline at end of file diff --git a/src/data/navigator.js b/src/data/navigator.js deleted file mode 100644 index 2081e7d..0000000 --- a/src/data/navigator.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = [{ - url: "/", - title: "Home" - }, - { - url: "/blog/", - title: "Blog" - }, - { - url: "/about/", - title: "About" - } -] \ No newline at end of file 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 ` + + ${data.metadata.title} + ${data.metadata.description} + + + ${this.getNewestCollectionItemDate((data.collections.posts) || []).toISOString()} + ${data.metadata.url} + + ${data.metadata.author.name} + ${data.metadata.author.email} + + ${(await Promise.all((data.collections.posts || []).map(async post => ` + ${post.data.title} + + ${post.date.toISOString()} + ${new URL(post.url, data.metadata.url)} + + `))).join()} + `; + } +}; 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 `

ERROR: ${data.pagination.items}

+

${data.err[data.pagination.items]}

`; + } +}; 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 ` + + ${(data.collections.all || []).map(page => ` + ${new URL(page.url, data.metadata.url)} + ${page.date.toISOString()} + `).join()} + `; + } +}; diff --git a/src/index.md b/src/index.md index 01346a5..c4d3ed6 100644 --- a/src/index.md +++ b/src/index.md @@ -1,11 +1,6 @@ --- -layout: base.njk -title: Home -tags: - - navigator +layout: page +title: Welcome --- -# About This Blog - -This is my special place on the big World Wide Web - +![Mandlebrotset](/assets/mandle.png) diff --git a/src/layouts/base.11ty.js b/src/layouts/base.11ty.js new file mode 100644 index 0000000..a42b15f --- /dev/null +++ b/src/layouts/base.11ty.js @@ -0,0 +1,51 @@ +const {oneLine} = require("common-tags") + +module.exports = class { + render(data) { + return oneLine` + + + + + ${data.title || data.metadata.title} + + + + + ${data.keywords ? ` + + + + + + + + + + + + + + + + +
+ +
+
+ ${data.content} +
+ + + `; + } +}; diff --git a/src/layouts/base.njk b/src/layouts/base.njk deleted file mode 100644 index 20b1100..0000000 --- a/src/layouts/base.njk +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - {{ title or metadata.title }} - - - - - - - - - - - - - - - - - - - - {% if syntaxhighlight %}{% endif %} - - - -
- -
-
- {{ content | safe }} -
- - - \ No newline at end of file diff --git a/src/layouts/page.11ty.js b/src/layouts/page.11ty.js new file mode 100644 index 0000000..53b0bd8 --- /dev/null +++ b/src/layouts/page.11ty.js @@ -0,0 +1,14 @@ +module.exports = class { + data() { + return { + layout: "base", + }; + } + + render(data) { + return `
+

${data.title}

+ ${data.content} +
`; + } +}; diff --git a/src/layouts/post.11ty.js b/src/layouts/post.11ty.js new file mode 100644 index 0000000..2cd725d --- /dev/null +++ b/src/layouts/post.11ty.js @@ -0,0 +1,17 @@ +module.exports = class { + data() { + return { + layout: "page", + tags: [ + "posts" + ] + }; + } + + render(data) { + return ` + - + + ${data.content}`; + } +}; diff --git a/src/layouts/post.njk b/src/layouts/post.njk deleted file mode 100644 index f8a4aee..0000000 --- a/src/layouts/post.njk +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: base.njk -tags: - - posts ---- - \ No newline at end of file diff --git a/src/post/post.11tydata.js b/src/post/post.11tydata.js index 68f56d2..6ae489a 100644 --- a/src/post/post.11tydata.js +++ b/src/post/post.11tydata.js @@ -1,8 +1,8 @@ -const slugify = require("@sindresorhus/slugify") +const slugify = require("@sindresorhus/slugify"); module.exports = () => ({ - layout: "post.njk", - eleventyComputed: { - permalink: data => `/posts/${slugify(data.title)}/` - } -}) \ No newline at end of file + layout: "post", + eleventyComputed: { + permalink: data => `/posts/${slugify(data.title)}/` + } +}); -- cgit v1.2.3-70-g09d2