From 148fa78c0cc5c1128bfca555350e8f8e27393bd4 Mon Sep 17 00:00:00 2001 From: Robert McGovern Date: Mon, 23 Jan 2023 04:50:27 +0000 Subject: [PATCH] chipping away at partials. Rendering date for each post. Need to sort out pagination so not all posts are on front page. Need to add sass rendering and compiling like other project I started --- .eleventy.js | 71 ++- diff-index | 742 +++++++++++++++++++++++++++ inspect.output | 76 +++ notes.md | 8 +- package-lock.json | 788 ++++++++++++++++++++++++++++- package.json | 11 +- src/_data/site.json | 34 +- src/_includes/author-profile.html | 2 +- src/_includes/default.html | 42 -- src/_includes/layouts/default.html | 10 +- src/_includes/layouts/home.html | 9 +- src/_includes/layouts/posts.html | 2 + src/_includes/page__meta.html | 17 +- src/_includes/posts.html | 30 -- src/_includes/scripts.html | 8 +- src/_includes/sidebar.html | 17 +- src/_posts/_posts.json | 4 + tarasis.net.code-workspace | 10 + 18 files changed, 1749 insertions(+), 132 deletions(-) create mode 100644 diff-index create mode 100644 inspect.output delete mode 100644 src/_includes/default.html delete mode 100644 src/_includes/posts.html create mode 100644 src/_posts/_posts.json create mode 100644 tarasis.net.code-workspace diff --git a/.eleventy.js b/.eleventy.js index 5a5b913..66d4aa5 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -15,12 +15,16 @@ const pluginRss = require("@11ty/eleventy-plugin-rss"); const UpgradeHelper = require("@11ty/eleventy-upgrade-help"); const xmlFiltersPlugin = require("eleventy-xml-plugin"); +const inspect = require("node:util").inspect; + // relativeURL const path = require("path"); const urlFilter = require("@11ty/eleventy/src/Filters/Url"); const indexify = (url) => url.replace(/(\/[^.]*)$/, "$1index.html"); module.exports = function (eleventyConfig) { + let pathPrefix = "/"; + eleventyConfig.addPlugin(pluginRss); //Blog excerpts eleventyConfig.addPlugin(description); @@ -67,7 +71,7 @@ module.exports = function (eleventyConfig) { ); // eleventyConfig.addCollection("posts", function (collectionApi) { - // return collectionApi.getFilteredByGlob("./src/posts/**/*.md"); + // return collectionApi.getFilteredByGlob("./src/_posts/**/*.md"); // }); eleventyConfig.addCollection("tags", (collection) => { @@ -119,7 +123,7 @@ module.exports = function (eleventyConfig) { require("moment")(date).format(format) ); - eleventyConfig.addFilter("relative_url", relativeURL); + // eleventyConfig.addFilter("absolute_url", relativeURL); eleventyConfig.addLiquidFilter("toUTCString", (date) => { const utc = date.toUTCString(); return moment.utc(utc).format("MMMM Do YYYY"); @@ -138,6 +142,10 @@ module.exports = function (eleventyConfig) { return value.hidden != true; }); + eleventyConfig.addFilter("inspect", function (obj = {}) { + return inspect(obj, {sorted: true}); + }); + eleventyConfig.addLayoutAlias( "archive-taxonomy", "layouts/archive-taxonomy.html" @@ -294,10 +302,13 @@ module.exports = function (eleventyConfig) { // } // ); - return { - templateFormats: ["html", "liquid", "md"], + eleventyConfig.addFilter("relative_url", relativeURLALT); + eleventyConfig.addFilter("absolute_url", relativeURLALT); - pathPrefix: "/", + return { + templateFormats: ["html", "liquid", "md", "njk"], + + pathPrefix, passthroughFileCopy: true, @@ -351,3 +362,53 @@ function relativeURL(url, pathPrefix = undefined) { }`; return relativePath; } + +/** + * Just `{{ '/something' | url }}` will return the relative path to + * `/something/index.html`. + * + * `{{ '/something.with.dots' | url }}` will return the relative path to + * `/something.with.dots`. + * + * @param {string} url the URL to transform + * @param {string} [pathPrefix] optional path prefix to force an absolute URL + * @returns {string} resulting URL + */ +function relativeURLALT(url, pathPrefix = undefined) { + pathPrefix = "/"; + // console.log(url); + // console.log(pathPrefix); + // console.log(this.page); + if (pathPrefix !== undefined) { + // Fall back on original url filter if pathPrefix is set. + return urlFilter(url, pathPrefix); + } + + if (pathPrefix == undefined && this.page == undefined) { + // console.log("dropping out"); + return urlFilter(url, ""); + } + + // Look up the url of the current rendering page, which is accessible via + // `this`. + console.log(this); + const currentDir = this.page.url; + const filteredUrl = urlFilter(url, "/"); + + // Make sure the index.html is expressed. + const indexUrl = indexify(filteredUrl); + + // Check that the url doesn't specify a protocol. + const u = new URL(indexUrl, "make-relative://"); + if (u.protocol !== "make-relative:") { + // It has a protocol, so just return the filtered URL output. + return filteredUrl; + } + + // Return the relative path, or `index.html` if it's the same as the current + // page's directory. + const relativePath = `${ + path.relative(currentDir, u.pathname) || "index.html" + }`; + return relativePath; +} diff --git a/diff-index b/diff-index new file mode 100644 index 0000000..df3ab06 --- /dev/null +++ b/diff-index @@ -0,0 +1,742 @@ +0a1 +> +13d13 +< +19a20,21 +> +> +22c24 +< +--- +> +26c28 +< +--- +> +33c35 +< +--- +> +40c42 +< +--- +> +43,46c45,46 +< +< +< +< +--- +> +> +52a53 +> +56a58 +> +62c64 +< +--- +> +66d67 +< +68d68 +< +75c75 +< "url": "http://localhost:4000/" +--- +> "url": "index.html" +90c90 +< +--- +> +101c101 +< +--- +> +107c107 +< +--- +> +109c109 +< +--- +> +118c118 +< +--- +> +138c138 +< +--- +> +140c140 +< +--- +> +144,152c144 +< +--- +> +174a167 +> +177,178d169 +< +< +< +< +338d177 +<

Recent posts

+340a180 +>

Recent Posts

+343d182 +<
+345d183 +< +349,384c187 +<
+< +<
+< +--- +>
+386,421d188 +< +< +< +< +<
+<
+< +<

+< +< A short look back on my Camino de Santiago journey +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< 3 minute read +< +< +< +<

+< +< +<

A year ago tomorrow I began the most gruelling, yet immensely satisfying, journey of my life. I set off from my home in Buchholz in der Nordheide Germany, to...

+<
+424,425d190 +< +< +429,812d193 +<
+<
+< +<

+< +< Learning Web Development +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< 2 minute read +< +< +< +<

+< +< +<

I mentioned in the goals post, one of the things I am aiming to do is to start learning web development. +< +< I was well aware that what falls under the banner o...

+<
+<
+< +< +< +< +< +< +<
+<
+< +<

+< +< Swift Coding Challenges: Challenge 2 +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< 1 minute read +< +< +< +<

+< +< +<

Second one within 13 hours, good lord, that would never do. +< +< So this challenge was to test if a string matched against the reverse of itself. Basically a pal...

+<
+<
+< +< +< +< +< +< +<
+<
+< +<

+< +< Swift Coding Challenges: Challenge 1 +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< less than 1 minute read +< +< +< +<

+< +< +<

As an effort to improve and challenge myself I got a copy of Paul Hudson’s Swift Coding Challenges book and I’m going to work through it and post my thoughts...

+<
+<
+< +< +< +< +< +< +<
+<
+< +<

+< +< Goals +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< 6 minute read +< +< +< +<

+< +< +<

Long time, no write. +< +< A lot has changed in my life, not least of which is that I am no longer a stay at home dad or living in Germany. For now I am back home...

+<
+<
+< +< +< +< +< +< +<
+<
+< +<

+< +< Day 21 +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< 2 minute read +< +< +< +<

+< +< +<

Day 21 of trip +< +< Day Frómista to Carrión de los Condes. 18.88km according to app. 19.18km with Phone GPS (minor detour). Was walking quickly. Which Fitbit doe...

+<
+<
+< +< +< +< +< +< +<
+<
+< +<

+< +< Day 19 +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< 3 minute read +< +< +< +<

+< +< +<

Day 19 of trip +< +< Day 16 of walk. +< +< Today was Hornillos del Camino to Castrojeriz (19.47km) +< +< Weather: cool, grey and minimal sun (nice to walk in) +< +< Terrain: lig...

+<
+<
+< +< +< +< +< +< +<
+<
+< +<

+< +< Day 18 - drawn to stop +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< 4 minute read +< +< +< +<

+< +< +<

Day 18 +< +< Burgos to Hornillos del Camino ~22km +< +< Weather was pleasant but cool +< +< Terrain most flat, gravel & roads +< +< Woke up at 3am freezing and no blanket to...

+<
+<
+< +< +< +< +< +< +<
+<
+< +<

+< +< Day 17 +< +< +<

+< +< +<

+< +< +< +< +< +< +< +< +< +< +< +< 3 minute read +< +< +< +<

+< +< +<

Day 17 +< +< So it’s day 17 of the trip and day 14 of the Camino (day 12 if you take out 2 rest days) +< +< Woke at 6 pretty impressed that I didn’t hear the 2 women i...

+<
+<
+< +< +<
+< +< +< +< +< +< +841,842d221 +<
  • Follow:
  • +< +869c248 +<
  • Feed
  • +--- +>
  • Feed
  • +874c253 +< +--- +> +880c259 +< +--- +> +884a264 +> +886,889c266,268 +< +< +< +< +--- +> +> +> diff --git a/inspect.output b/inspect.output new file mode 100644 index 0000000..03dde69 --- /dev/null +++ b/inspect.output @@ -0,0 +1,76 @@ +{ content: [Getter], data: { category: [ 'site', 'webdev', 'personal' ], collections: { 'coding-challenges': [Array], all: [Array], camino: [Array], caminodesantiago: [Array], caminofrances: [Array], css: [Array], freecodecamp: [Array], frontendmentor: [Array], html: [Array], ios: [Array], jakobsweg: [Array], javascript: [Array], learning: [Array], life: [Array], pages: [Array], personal: [Array], posts: [Array], programming: [Array], projects: [], site: [Array], swift: [Array], swiftui: [Array], tags: [Array], webdev: [Array], webdevelopment: [Array] }, content: ' +Goal is that at some point in the not to distant future I will move the blog from Jekyll & the Minimal Mistakes Theme to something built with 11ty. + +\n' + ` +Part of this is to reduce things I need to think about, as I am already using 11ty for generating my portfolio site. Any time I want to blog I find I need to read up on using Jekyll again. (Commands to update site, build it and other things). As I don't really add anything to the theme (outside of the progress slider at the top of the page), there is also little point to have the power of Ruby. + +\n` + ' +I had considered using Hugo, but that would again be a new thing to learn how to use. That said, some of the themes were quite appealing. A year or two ago I started trying to merge two of the themes but gave up. (I liked the look of one, and liked that the second provided the possibility of doing proper blog posts along with microblog style updates). + +\n' + " +Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both. + +\n" + ` +Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in Gitea/Forgejo. As well as thoughts on Frontend Mentor. + +\n`, date: 2023-01-21T00:00:00.000Z, eleventy: { env: [Object], generator: 'Eleventy v2.0.0', version: '2.0.0' }, layout: 'single', layoutContent: ' +Goal is that at some point in the not to distant future I will move the blog from Jekyll & the Minimal Mistakes Theme to something built with 11ty. + +\n' + ` +Part of this is to reduce things I need to think about, as I am already using 11ty for generating my portfolio site. Any time I want to blog I find I need to read up on using Jekyll again. (Commands to update site, build it and other things). As I don't really add anything to the theme (outside of the progress slider at the top of the page), there is also little point to have the power of Ruby. + +\n` + ' +I had considered using Hugo, but that would again be a new thing to learn how to use. That said, some of the themes were quite appealing. A year or two ago I started trying to merge two of the themes but gave up. (I liked the look of one, and liked that the second provided the possibility of doing proper blog posts along with microblog style updates). + +\n' + " +Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both. + +\n" + ` +Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in Gitea/Forgejo. As well as thoughts on Frontend Mentor. + +\n`, page: { date: 2023-01-21T00:00:00.000Z, filePathStem: '/_posts/moving-blog', fileSlug: 'moving-blog', inputPath: './src/_posts/2023-01-21-moving-blog.md', outputFileExtension: 'html', outputPath: 'dist/2023/1/21/moving-blog/index.html', templateSyntax: 'liquid,md', url: '/2023/1/21/moving-blog/' }, permalink: "/{{ page.date | date: 'Y/M/D' }}/{{ page.fileSlug }}/", pkg: { author: 'Robert McGovern et all', dependencies: [Object], description: 'Second generation of site using 11ty for building but using Jekyll theme Minimal Mistakes (with mods to make it work)', devDependencies: [Object], keywords: [Array], license: 'MIT', main: 'index.js', name: 'tarasis.net', repository: [Object], scripts: [Object], version: '2.0.0' }, siblings: { next: undefined, prev: [Object] }, site: { algolia: [Object], analytics: [Object], atom_feed: [Object], author: [Object], baseurl: '', bing_site_verification: null, breadcrumb_home_label: 'Home', breadcrumb_separator: '>', breadcrumbs: false, category_archive: [Object], collections: [Object], comments: [Object], compress_html: [Object], defaults: [Object], description: 'Random Things', encoding: 'utf-8', excerpt_separator: '', exclude: [Array], facebook: [Object], footer: [Object], google_site_verification: null, head_scripts: [Array], highlighter: 'rouge', include: [Array], incremental: false, keep_files: [Array], kramdown: [Object], liquid: [Object], locale: 'en-US', logo: '/assets/images/apple-touch-icon.png', lsi: false, markdown: 'kramdown', markdown_ext: 'markdown,mkdown,mkdn,mkd,md', masthead_title: '', minimal_mistakes_skin: 'neon', name: 'Robert McGovern', og_image: '/assets/images/bio-photo.jpg', page_ext: 'html', page_layout: 'page', paginate: 10, paginate_path: '/page:num/', permalink: '/:year/:month/:day/:title/', plugins: [Array], post_ext: 'markdown', post_layout: 'single', repository: null, sass: [Object], search: true, search_full_content: true, search_provider: 'lunr', social: [Object], staticman: [Object], strict_front_matter: true, subtitle: '👨‍💻 🚶‍♂️ 💭 🤯', tag_archive: [Object], teaser: null, theme: 'minimal-mistakes-jekyll', timezone: null, title: 'TDN: RMCG', title_separator: '-', titlecase: true, twitter: [Object], url: 'https://tarasis.net', whitelist: [Array], words_per_minute: 200, yandex_site_verification: null }, tags: [ 'webdev', 'site', 'personal' ], title: 'Moving site from Jekyll to ???' }, date: 2023-01-21T00:00:00.000Z, filePathStem: '/_posts/moving-blog', fileSlug: 'moving-blog', inputPath: './src/_posts/2023-01-21-moving-blog.md', outputPath: 'dist/2023/1/21/moving-blog/index.html', page: { date: 2023-01-21T00:00:00.000Z, filePathStem: '/_posts/moving-blog', fileSlug: 'moving-blog', inputPath: './src/_posts/2023-01-21-moving-blog.md', outputFileExtension: 'html', outputPath: 'dist/2023/1/21/moving-blog/index.html', templateSyntax: 'liquid,md', url: '/2023/1/21/moving-blog/' }, template: Template { _cacheRenderedContent: ' +Goal is that at some point in the not to distant future I will move the blog from Jekyll & the Minimal Mistakes Theme to something built with 11ty. + +\n' + ` +Part of this is to reduce things I need to think about, as I am already using 11ty for generating my portfolio site. Any time I want to blog I find I need to read up on using Jekyll again. (Commands to update site, build it and other things). As I don't really add anything to the theme (outside of the progress slider at the top of the page), there is also little point to have the power of Ruby. + +\n` + ' +I had considered using Hugo, but that would again be a new thing to learn how to use. That said, some of the themes were quite appealing. A year or two ago I started trying to merge two of the themes but gave up. (I liked the look of one, and liked that the second provided the possibility of doing proper blog posts along with microblog style updates). + +\n' + " +Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both. + +\n" + ` +Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in Gitea/Forgejo. As well as thoughts on Frontend Mentor. + +\n`, _config: TemplateConfig { _usesGraph: [GlobalDependencyMap], config: [Object], customRootConfig: null, hasConfigMerged: true, logger: [ConsoleLogger], overrides: {}, projectConfigPaths: [Array], rootConfig: [Object], userConfig: [UserConfig], verbose: true }, _dataCache: { category: [Array], collections: [Object], content: ' +Goal is that at some point in the not to distant future I will move the blog from Jekyll & the Minimal Mistakes Theme to something built with 11ty. + +\n' + ` +Part of this is to reduce things I need to think about, as I am already using 11ty for generating my portfolio site. Any time I want to blog I find I need to read up on using Jekyll again. (Commands to update site, build it and other things). As I don't really add anything to the theme (outside of the progress slider at the top of the page), there is also little point to have the power of Ruby. + +\n` + ' +I had considered using Hugo, but that would again be a new thing to learn how to use. That said, some of the themes were quite appealing. A year or two ago I started trying to merge two of the themes but gave up. (I liked the look of one, and liked that the second provided the possibility of doing proper blog posts along with microblog style updates). + +\n' + " +Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both. + +\n" + ` +Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in Gitea/Forgejo. As well as thoughts on Frontend Mentor. + +\n`, date: 2023-01-21T00:00:00.000Z, eleventy: [Object], layout: 'single', layoutContent: ' +Goal is that at some point in the not to distant future I will move the blog from Jekyll & the Minimal Mistakes Theme to something built with 11ty. + +\n' + ` +Part of this is to reduce things I need to think about, as I am already using 11ty for generating my portfolio site. Any time I want to blog I find I need to read up on using Jekyll again. (Commands to update site, build it and other things). As I don't really add anything to the theme (outside of the progress slider at the top of the page), there is also little point to have the power of Ruby. + +\n` + ' +I had considered using Hugo, but that would again be a new thing to learn how to use. That said, some of the themes were quite appealing. A year or two ago I started trying to merge two of the themes but gave up. (I liked the look of one, and liked that the second provided the possibility of doing proper blog posts along with microblog style updates). + +\n' + " +Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both. + +\n" + ` +Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in Gitea/Forgejo. As well as thoughts on Frontend Mentor. + +\n`, page: [Object], permalink: "/{{ page.date | date: 'Y/M/D' }}/{{ page.fileSlug }}/", pkg: [Object], siblings: [Object], site: [Object], tags: [Array], title: 'Moving site from Jekyll to ???' }, _extensionMap: EleventyExtensionMap { _config: [Object], _engineManager: [TemplateEngineManager], _extensionToKeyMap: [Object], _spiderJsDepsCache: {}, eleventyConfig: [TemplateConfig], formatKeys: [Array], passthroughCopyKeys: [], unfilteredFormatKeys: [Array], validTemplateLanguageKeys: [Array] }, _frontMatter: { content: '\n' + 'Goal is that at some point in the not to distant future I will move the blog from [Jekyll](https://jekyllrb.com) & the [Minimal Mistakes Theme](https://mmistakes.github.io/minimal-mistakes/) to something built with [11ty](https://www.11ty.dev/).\n' + '\n' + "Part of this is to reduce things I need to think about, as I am already using 11ty for generating my [portfolio site](http://rmcg.dev). Any time I want to blog I find I need to read up on using Jekyll again. (Commands to update site, build it and other things). As I don't really add anything to the theme (outside of the progress slider at the top of the page), there is also little point to have the power of Ruby.\n" + '\n' + 'I had considered using [Hugo](https://gohugo.io), but that would again be a new thing to learn how to use. That said, some of the themes were quite appealing. A year or two ago I started trying to merge two of the themes but gave up. (I liked the look of one, and liked that the second provided the possibility of doing proper blog posts along with microblog style updates).\n' + '\n' + `Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both.\n` + '\n' + "Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in [Gitea](https://gitea.io/en-us/)/[Forgejo](https://forgejo.org). As well as thoughts on [Frontend Mentor](https://www.frontendmentor.io/).\n", data: [Object], excerpt: '', isEmpty: false }, _frontMatterDataCache: Promise { [Object] }, _logger: ConsoleLogger { _isVerbose: true, outputStream: [Readable] }, _templateRender: TemplateRender { _config: [Object], _engine: [Markdown], _engineName: 'md', _extensionMap: [EleventyExtensionMap], engineNameOrPath: './src/_posts/2023-01-21-moving-blog.md', includesDir: 'src/_includes', inputDir: 'src', parseHtmlWith: 'liquid', parseMarkdownWith: 'liquid', useMarkdown: true }, _usePermalinkRoot: undefined, behavior: TemplateBehavior { config: [Object], outputFormat: 'fs', render: true, write: true }, extraOutputSubdirectory: '', filePathStem: '/_posts/moving-blog', fileSlug: TemplateFileSlug { cleanInputPath: '_posts/2023-01-21-moving-blog.md', dirs: [Array], filenameNoExt: '2023-01-21-moving-blog', inputPath: '_posts/2023-01-21-moving-blog.md', parsed: [Object] }, fileSlugStr: 'moving-blog', inputContent: Promise { '---\n' + 'title: Moving site from Jekyll to ???\n' + 'tags: [webdev, site, personal]\n' + 'category: [site, webdev, personal]\n' + 'date: 2023-01-21\n' + '---\n' + '\n' + 'Goal is that at some point in the not to distant future I will move the blog from [Jekyll](https://jekyllrb.com) & the [Minimal Mistakes Theme](https://mmistakes.github.io/minimal-mistakes/) to something built with [11ty](https://www.11ty.dev/).\n' + '\n' + "Part of this is to reduce things I need to think about, as I am already using 11ty for generating my [portfolio site](http://rmcg.dev). Any time I want to blog I find I need to read up on using Jekyll again. (Commands to update site, build it and other things). As I don't really add anything to the theme (outside of the progress slider at the top of the page), there is also little point to have the power of Ruby.\n" + '\n' + 'I had considered using [Hugo](https://gohugo.io), but that would again be a new thing to learn how to use. That said, some of the themes were quite appealing. A year or two ago I started trying to merge two of the themes but gave up. (I liked the look of one, and liked that the second provided the possibility of doing proper blog posts along with microblog style updates).\n' + '\n' + `Whatever I end up doing, I do want to have it so that it is a mixture of "proper" blog posts along with short status style updates (like a Microblog). Then people who don't care for those can filter on just the posts, and likewise have 2-3 rss feeds; one for status updates, one for just blog posts, and finally one the has both.\n` + '\n' + "Regardless I am going to try and blog more this year. I've some posts I want to do about my setup, and the post-receive hooks I use in [Gitea](https://gitea.io/en-us/)/[Forgejo](https://forgejo.org). As well as thoughts on [Frontend Mentor](https://www.frontendmentor.io/).\n" }, inputDir: 'src', inputPath: './src/_posts/2023-01-21-moving-blog.md', isDryRun: false, isVerbose: true, linters: [], outputDir: 'dist', outputFormat: 'fs', parsed: { base: '2023-01-21-moving-blog.md', dir: './src/_posts', ext: '.md', name: '2023-01-21-moving-blog', root: '' }, readingPromise: Promise { [Object] }, serverlessUrls: {}, templateData: TemplateData { _env: [Object], _extensionMap: [EleventyExtensionMap], _fsExistsCache: [FSExistsCache], benchmarks: [Object], config: [Object], configApiGlobalData: [Promise], dataDir: 'src/_data', eleventyConfig: [TemplateConfig], fileSystemSearch: [FileSystemSearch], globalData: [Promise], initialGlobalData: [TemplateDataInitialGlobalData], inputDir: 'src', inputDirNeedsCheck: false, pathCache: [Array], rawImports: [Object], templateDirectoryData: [Object] }, transforms: [], writeCount: 0 }, templateContent: [Getter/Setter], url: '/2023/1/21/moving-blog/' } \ No newline at end of file diff --git a/notes.md b/notes.md index d3babec..0927a5f 100644 --- a/notes.md +++ b/notes.md @@ -8,4 +8,10 @@ Removed from site.json "post_template": "post", "page_template": "page", "draft_template": "draft" -``` \ No newline at end of file +``` + +hacked pathPrefix into relativeURLAlt function because for some reason it isn't being picked up from the above return. + +author_profile.html for adding mastodon + +invalid date format https://github.com/11ty/eleventy/issues/413 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ce3e2a4..13dbb06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,10 +14,16 @@ "@11ty/eleventy-plugin-syntaxhighlight": "^4.2.0", "@11ty/eleventy-upgrade-help": "^2.0.5", "autoprefixer": "^10.4.13", + "eleventy-load": "^0.3.1", + "eleventy-load-css": "^0.3.0", + "eleventy-load-file": "^0.1.0", + "eleventy-load-html": "^0.1.1", + "eleventy-load-sass": "^0.1.2", "eleventy-plugin-description": "^0.1.5", "eleventy-plugin-toc": "^1.1.5", "eleventy-xml-plugin": "^0.1.0", "fs-extra": "^11.1.0", + "markdown-it": "^13.0.1", "markdown-it-anchor": "^8.6.6", "markdown-it-attrs": "^4.1.6", "markdown-it-container": "^3.0.0", @@ -27,7 +33,8 @@ "moment": "^2.29.4", "npm-run-all": "^4.1.5", "postcss": "^8.4.21", - "sass": "^1.57.1" + "sass": "^1.57.1", + "slugify": "^1.6.5" }, "devDependencies": { "@11ty/eleventy": "^2.0.0-beta.1" @@ -335,6 +342,14 @@ "node": ">=8" } }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "engines": { + "node": ">= 6" + } + }, "node_modules/@types/linkify-it": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", @@ -369,11 +384,15 @@ "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", "dev": true }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -381,6 +400,34 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -475,6 +522,11 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/autoprefixer": { "version": "10.4.13", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", @@ -615,6 +667,11 @@ "node": ">=8" } }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, "node_modules/browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -642,6 +699,11 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -654,6 +716,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001446", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001446.tgz", @@ -875,6 +946,17 @@ "fsevents": "~2.3.2" } }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -891,6 +973,17 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", @@ -1016,6 +1109,35 @@ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1032,6 +1154,16 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, "node_modules/deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -1055,6 +1187,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/dependency-graph": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", @@ -1118,6 +1258,25 @@ } ] }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "engines": { + "node": ">=8" + } + }, "node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", @@ -1145,6 +1304,15 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1171,6 +1339,43 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, + "node_modules/eleventy-load": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/eleventy-load/-/eleventy-load-0.3.1.tgz", + "integrity": "sha512-1875hrlirhtbml8rdIJ5it5vty8cIRYNlyYqZHQhAk+r4L8jjpwXk0zxm0VmpZTyC6ooVCSUpf1wTrBZlITwYQ==" + }, + "node_modules/eleventy-load-css": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eleventy-load-css/-/eleventy-load-css-0.3.0.tgz", + "integrity": "sha512-yj7VVw4Z2OvNrmKL0Coq4uoivj0TdNZNUpH095/nMbPGRCmSLdbN8QETkVd11PwRljz1dthdQxtNIXoo5ZJUfA==", + "dependencies": { + "clean-css": "^5.1.3", + "postcss": "^8.3.5", + "postcss-values-parser": "^5.0.0" + } + }, + "node_modules/eleventy-load-file": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/eleventy-load-file/-/eleventy-load-file-0.1.0.tgz", + "integrity": "sha512-aazzhQLCKt8OWVxvsPqFLLDB/OGcJsuS2cS55QP2QIcRs+NAKuXcb28wltlT0CYAQz6dcvHPRDN1id+bkbWlZA==" + }, + "node_modules/eleventy-load-html": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eleventy-load-html/-/eleventy-load-html-0.1.1.tgz", + "integrity": "sha512-caXleRILa0tk1bfa6/T/j7scC+NQN1K8WuEK4X5qzePbjlCXCWzJttQtzLrPG0g1hEKRt3jf6fDsG275+he1SQ==", + "dependencies": { + "html-minifier-terser": "^5.1.1", + "jsdom": "^16.6.0" + } + }, + "node_modules/eleventy-load-sass": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eleventy-load-sass/-/eleventy-load-sass-0.1.2.tgz", + "integrity": "sha512-t+VbP807nM76uvYKJ+PTobEHNfciFfWP3E8li0oCyjTP2MY7KnV1QzD8ytOogkfhcWBxOuRxkKVa6vzzCuJU3g==", + "dependencies": { + "sass": "^1.35.1" + } + }, "node_modules/eleventy-plugin-description": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/eleventy-plugin-description/-/eleventy-plugin-description-0.1.5.tgz", @@ -1336,11 +1541,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1349,6 +1574,22 @@ "node": ">=4" } }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -1377,6 +1618,11 @@ "node": ">=8.6.0" } }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, "node_modules/fastq": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", @@ -1468,6 +1714,19 @@ "is-callable": "^1.1.3" } }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fraction.js": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", @@ -1760,6 +2019,17 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/html-entities": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", @@ -1770,6 +2040,45 @@ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" }, + "node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-minifier-terser/node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, "node_modules/html-to-text": { "version": "8.2.1", "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-8.2.1.tgz", @@ -1841,6 +2150,42 @@ "node": ">= 0.10" } }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/immutable": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", @@ -2075,6 +2420,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" + }, "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -2153,6 +2503,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-url-superb": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-url-superb/-/is-url-superb-4.0.0.tgz", + "integrity": "sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -2220,6 +2581,92 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/jsdom/node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/jsdom/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -2273,6 +2720,18 @@ "node": ">=6" } }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/linkedom": { "version": "0.14.21", "resolved": "https://registry.npmjs.org/linkedom/-/linkedom-0.14.21.tgz", @@ -2406,6 +2865,11 @@ "node": ">=4" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, "node_modules/lodash.chunk": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", @@ -2430,6 +2894,14 @@ "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==", "dev": true }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -2627,6 +3099,25 @@ "node": ">=10.0.0" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2770,6 +3261,15 @@ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-releases": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", @@ -2995,6 +3495,11 @@ } } }, + "node_modules/nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -3058,6 +3563,31 @@ "wrappy": "1" } }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -3144,6 +3674,15 @@ "node": ">= 0.8" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path": { "version": "0.4.10", "resolved": "https://registry.npmjs.org/path/-/path-0.4.10.tgz", @@ -3270,6 +3809,22 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "node_modules/postcss-values-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-5.0.0.tgz", + "integrity": "sha512-2viDDjMMrt21W2izbeiJxl3kFuD/+asgB0CBwPEgSyhCmBnDIa/y+pLaoyX+q3I3DHH0oPPL3cgjVTQvlS1Maw==", + "dependencies": { + "color-name": "^1.1.4", + "is-url-superb": "^4.0.0", + "quote-unquote": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, "node_modules/posthtml": { "version": "0.16.6", "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", @@ -3318,6 +3873,14 @@ "node": ">= 4" } }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/prismjs": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", @@ -3349,6 +3912,11 @@ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, "node_modules/pug": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", @@ -3473,6 +4041,14 @@ "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==", "dev": true }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, "node_modules/pygmentize-bundled": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pygmentize-bundled/-/pygmentize-bundled-2.3.0.tgz", @@ -3483,6 +4059,11 @@ "through2": "~0.2.1" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -3503,6 +4084,11 @@ } ] }, + "node_modules/quote-unquote": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/quote-unquote/-/quote-unquote-1.0.0.tgz", + "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==" + }, "node_modules/railroad-diagrams": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", @@ -3588,6 +4174,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -3670,6 +4269,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/sass": { "version": "1.57.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz", @@ -3686,6 +4290,17 @@ "node": ">=12.0.0" } }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -3785,7 +4400,6 @@ "version": "1.6.5", "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", - "dev": true, "engines": { "node": ">=8.0.0" } @@ -3794,7 +4408,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3807,6 +4420,15 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -3948,6 +4570,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, + "node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -3999,6 +4647,55 @@ "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==", "dev": true }, + "node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -4091,6 +4788,15 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -4109,6 +4815,60 @@ "node": ">=0.10.0" } }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4173,6 +4933,14 @@ "node": ">= 10.0.0" } }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -4206,6 +4974,16 @@ } } }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, "node_modules/xtend": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", diff --git a/package.json b/package.json index 19683a2..de5ed4e 100644 --- a/package.json +++ b/package.json @@ -34,10 +34,16 @@ "@11ty/eleventy-plugin-syntaxhighlight": "^4.2.0", "@11ty/eleventy-upgrade-help": "^2.0.5", "autoprefixer": "^10.4.13", + "eleventy-load": "^0.3.1", + "eleventy-load-css": "^0.3.0", + "eleventy-load-file": "^0.1.0", + "eleventy-load-html": "^0.1.1", + "eleventy-load-sass": "^0.1.2", "eleventy-plugin-description": "^0.1.5", "eleventy-plugin-toc": "^1.1.5", "eleventy-xml-plugin": "^0.1.0", "fs-extra": "^11.1.0", + "markdown-it": "^13.0.1", "markdown-it-anchor": "^8.6.6", "markdown-it-attrs": "^4.1.6", "markdown-it-container": "^3.0.0", @@ -47,6 +53,7 @@ "moment": "^2.29.4", "npm-run-all": "^4.1.5", "postcss": "^8.4.21", - "sass": "^1.57.1" + "sass": "^1.57.1", + "slugify": "^1.6.5" } -} \ No newline at end of file +} diff --git a/src/_data/site.json b/src/_data/site.json index 34cf765..e1f80fd 100644 --- a/src/_data/site.json +++ b/src/_data/site.json @@ -318,44 +318,34 @@ "permalink": "/:collection/:path/" } }, - "defaults": [ - { - "scope": { - "path": "", - "type": "posts" - }, - "values": { + "defaults": { + "posts": { + "path": "_posts", + "type": "posts", "layout": "single", "classes": "wide", "author_profile": true, "read_time": true, "share": true, "related": true, - "comments": true - } + "comments": true, + "sidebar":true, + "show_date": true }, - { - "scope": { + "pages": { "path": "_pages", - "type": "pages" - }, - "values": { + "type": "pages", "layout": "single", "author_profile": true - } }, - { - "scope": { + "recipies": { "path": "", - "type": "recipes" - }, - "values": { + "type": "recipes", "layout": "single", "author_profile": true, "share": true - } } - ], + }, "post_ext": "markdown", "page_ext": "html", "post_layout": "single", diff --git a/src/_includes/author-profile.html b/src/_includes/author-profile.html index d384ee7..b5a4f41 100644 --- a/src/_includes/author-profile.html +++ b/src/_includes/author-profile.html @@ -1,5 +1,5 @@ {% assign author = page.author | default: page.authors[0] | default: site.author %} -{% assign author = site.data.authors[author] | default: author %} +{% assign author = authors[author] | default: author %}
    diff --git a/src/_includes/default.html b/src/_includes/default.html deleted file mode 100644 index 5abd964..0000000 --- a/src/_includes/default.html +++ /dev/null @@ -1,42 +0,0 @@ ---- ---- - - - - - - {% include head.html %} - {% include head/custom.html %} - - - - {% include_cached skip-links.html %} - {% include_cached browser-upgrade.html %} - {% include_cached masthead.html %} - -
    - {{ content }} -
    - - {% if site.search == true %} -
    - {% include_cached search/search_form.html %} -
    - {% endif %} - - - - {% include scripts.html %} - - - diff --git a/src/_includes/layouts/default.html b/src/_includes/layouts/default.html index 5abd964..bf7d12f 100644 --- a/src/_includes/layouts/default.html +++ b/src/_includes/layouts/default.html @@ -15,9 +15,9 @@ - {% include_cached skip-links.html %} - {% include_cached browser-upgrade.html %} - {% include_cached masthead.html %} + {% include skip-links.html %} + {% include browser-upgrade.html %} + {% include masthead.html %}
    {{ content }} @@ -25,14 +25,14 @@ {% if site.search == true %}
    - {% include_cached search/search_form.html %} + {% include search/search_form.html %}
    {% endif %} diff --git a/src/_includes/layouts/home.html b/src/_includes/layouts/home.html index 02e96eb..75a0785 100644 --- a/src/_includes/layouts/home.html +++ b/src/_includes/layouts/home.html @@ -1,13 +1,16 @@ --- layout: archive ---- -{{ content }} +paginator: + data: collections.posts + size: 2 + +---

    {{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}

    {% if paginator %} - {% assign posts = paginator.posts %} + {% assign posts = collections.posts %} {% else %} {% assign posts = site.posts %} {% endif %} diff --git a/src/_includes/layouts/posts.html b/src/_includes/layouts/posts.html index 13fc707..904782f 100644 --- a/src/_includes/layouts/posts.html +++ b/src/_includes/layouts/posts.html @@ -4,6 +4,7 @@ layout: archive {{ content }} +{% comment %}
      {% assign postsInYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %} {% for year in postsInYear %} @@ -28,3 +29,4 @@ layout: archive {{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑ {% endfor %} +{% endcomment %} diff --git a/src/_includes/page__meta.html b/src/_includes/page__meta.html index 3d228c9..8516e0e 100644 --- a/src/_includes/page__meta.html +++ b/src/_includes/page__meta.html @@ -1,18 +1,25 @@ {% assign document = post | default: page %} -{% if document.read_time or document.show_date %} +{% assign document = document.data.page %} + + +{{document | inspect}} +{{site.defaults.posts.show_date | json}} +{{document.date | json}} +{% if document.read_time or document.show_date or site.defaults.posts.show_date %} +

      - {% if document.show_date and document.date %} + {% if document.show_date or site.defaults.posts.show_date and document.date %} {% assign date = document.date %} - {% assign date_format = site.date_format | default: "%B %-d, %Y" %} + {% assign date_format = site.date_format | default: "LLLL" %} {% endif %} - {% if document.read_time and document.show_date %}{% endif %} + {% if document.read_time or site.defaults.posts.read_time and document.show_date or site.defaults.posts.show_date %}{% endif %} - {% if document.read_time %} + {% if document.read_time or site.defaults.posts.read_time %} {% assign words_per_minute = document.words_per_minute | default: site.words_per_minute | default: 200 %} {% assign words = document.content | strip_html | number_of_words %} diff --git a/src/_includes/posts.html b/src/_includes/posts.html deleted file mode 100644 index 13fc707..0000000 --- a/src/_includes/posts.html +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: archive ---- - -{{ content }} - -

        - {% assign postsInYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %} - {% for year in postsInYear %} -
      • - - {{ year.name }} {{ year.items | size }} - -
      • - {% endfor %} -
      - -{% assign entries_layout = page.entries_layout | default: 'list' %} -{% assign postsByYear = site.posts | where_exp: "item", "item.hidden != true" | group_by_exp: 'post', 'post.date | date: "%Y"' %} -{% for year in postsByYear %} -
      -

      {{ year.name }}

      -
      - {% for post in year.items %} - {% include archive-single.html type=entries_layout %} - {% endfor %} -
      - {{ site.data.ui-text[site.locale].back_to_top | default: 'Back to Top' }} ↑ -
      -{% endfor %} diff --git a/src/_includes/scripts.html b/src/_includes/scripts.html index bbdaddf..d05383a 100644 --- a/src/_includes/scripts.html +++ b/src/_includes/scripts.html @@ -10,16 +10,16 @@ {%- assign search_provider = site.search_provider | default: "lunr" -%} {%- case search_provider -%} {%- when "lunr" -%} - {% include_cached search/lunr-search-scripts.html %} + {% include search/lunr-search-scripts.html %} {%- when "google" -%} - {% include_cached search/google-search-scripts.html %} + {% include search/google-search-scripts.html %} {%- when "algolia" -%} - {% include_cached search/algolia-search-scripts.html %} + {% include search/algolia-search-scripts.html %} {%- endcase -%} {% endif %} {% include analytics.html %} -{% include /comments-providers/scripts.html %} +{% include comments-providers/scripts.html %} {% if site.after_footer_scripts %} {% for script in site.after_footer_scripts %} diff --git a/src/_includes/sidebar.html b/src/_includes/sidebar.html index a4ca1ca..dac9268 100644 --- a/src/_includes/sidebar.html +++ b/src/_includes/sidebar.html @@ -1,8 +1,11 @@ -{% if page.author_profile or layout.author_profile or page.sidebar %} -