diff --git a/.eleventy.js b/.eleventy.js index ec9e323..ba14893 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -21,7 +21,8 @@ const { stripHtml, minifyCss, minifyJs, - mdInline + mdInline, + splitlines } = require('./config/filters/index.js'); // module import shortcodes @@ -34,6 +35,9 @@ const { // module import collections const {getAllPosts} = require('./config/collections/index.js'); +// module import events +const {svgToJpeg} = require('./config/events/index.js'); + // plugins const markdownLib = require('./config/plugins/markdown.js'); const {EleventyRenderPlugin} = require('@11ty/eleventy'); @@ -70,6 +74,7 @@ module.exports = eleventyConfig => { eleventyConfig.addFilter('cssmin', minifyCss); eleventyConfig.addNunjucksAsyncFilter('jsmin', minifyJs); eleventyConfig.addFilter('md', mdInline); + eleventyConfig.addFilter('splitlines', splitlines); eleventyConfig.addFilter('keys', Object.keys); eleventyConfig.addFilter('values', Object.values); eleventyConfig.addFilter('entries', Object.entries); @@ -91,6 +96,9 @@ module.exports = eleventyConfig => { // --------------------- Custom collections ----------------------- eleventyConfig.addCollection('posts', getAllPosts); + // --------------------- Events --------------------- + eleventyConfig.on('afterBuild', svgToJpeg); + // --------------------- Plugins --------------------- eleventyConfig.addPlugin(EleventyRenderPlugin); eleventyConfig.addPlugin(syntaxHighlight); diff --git a/.prettierignore b/.prettierignore index fc997d8..ff34a9c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ src/assets/helperfiles/* -src/feed.njk \ No newline at end of file +src/feed.njk +src/social-preview.njk \ No newline at end of file diff --git a/config/events/index.js b/config/events/index.js new file mode 100644 index 0000000..cc09d84 --- /dev/null +++ b/config/events/index.js @@ -0,0 +1,32 @@ +// https://bnijenhuis.nl/notes/automatically-generate-open-graph-images-in-eleventy/ +// concerts SVG to JPEG for open graph images + +const fs = require('fs'); +const Image = require('@11ty/eleventy-img'); + +const svgToJpeg = function () { + const socialPreviewImagesDir = 'dist/assets/images/social-preview/'; + fs.readdir(socialPreviewImagesDir, (err, files) => { + if (!!files && files.length > 0) { + files.forEach(fileName => { + if (fileName.endsWith('.svg')) { + let imageUrl = socialPreviewImagesDir + fileName; + Image(imageUrl, { + formats: ['jpeg'], + outputDir: './' + socialPreviewImagesDir, + filenameFormat: function (id, src, width, format, options) { + let outputFileName = fileName.substring(0, fileName.length - 4); + return `${outputFileName}.${format}`; + } + }); + } + }); + } else { + console.log('⚠ No social images found'); + } + }); +}; + +module.exports = { + svgToJpeg +}; diff --git a/config/filters/index.js b/config/filters/index.js index 40ee326..0424a54 100644 --- a/config/filters/index.js +++ b/config/filters/index.js @@ -99,6 +99,28 @@ const mdInline = (content, opts) => { return inline ? md.renderInline(content) : md.render(content); }; +// source: https://github.com/bnijenhuis/bnijenhuis-nl/blob/main/.eleventy.js +const splitlines = (input, maxCharLength) => { + const parts = input.split(' '); + const lines = parts.reduce(function (acc, cur) { + if (!acc.length) { + return [cur]; + } + + let lastOne = acc[acc.length - 1]; + + if (lastOne.length + cur.length > maxCharLength) { + return [...acc, cur]; + } + + acc[acc.length - 1] = lastOne + ' ' + cur; + + return acc; + }, []); + + return lines; +}; + module.exports = { limit, toHtml, @@ -109,5 +131,6 @@ module.exports = { stripHtml, minifyCss, minifyJs, - mdInline + mdInline, + splitlines }; diff --git a/package-lock.json b/package-lock.json index 1dc80e1..5f7c5d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "eleventy-excellent", - "version": "1.2.3", + "version": "1.2.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "eleventy-excellent", - "version": "1.2.3", + "version": "1.2.4", "license": "ISC", "dependencies": { - "@11ty/eleventy": "^2.0.0-canary.30", + "@11ty/eleventy": "^2.0.0-beta.1", "@11ty/eleventy-fetch": "^3.0.0", "@11ty/eleventy-img": "^2.0.1", "@11ty/eleventy-plugin-syntaxhighlight": "^4.1.0", @@ -58,9 +58,9 @@ "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==" }, "node_modules/@11ty/eleventy": { - "version": "2.0.0-canary.30", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-2.0.0-canary.30.tgz", - "integrity": "sha512-kYszNYX1sEjNEDSoFD3Ez7RjXe2NeoDg+XauhOyrprN5EPa4k54t4F/dqBUup7Izm6IzqXr6wAkbKEPaly/URQ==", + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-2.0.0-beta.1.tgz", + "integrity": "sha512-j/V73NWO3i8VnVBWHytDbHxyexomKwrbHiDOLs3LyNaaB3MYZIvGYYf10NVLDO37Zq9CacIfP6a69Njjg9rJDg==", "dependencies": { "@11ty/dependency-tree": "^2.0.1", "@11ty/eleventy-dev-server": "^1.0.1", @@ -249,9 +249,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -273,9 +273,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.2.tgz", - "integrity": "sha512-Art7v3xYfqH1gEMUSP0Nx67pNAlC/Y3qSg3mOw8Wg7MP9bJLXL0DrmJaV1Qz1o4FwagtvDgkVOeBDpZgxdj13Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.4.tgz", + "integrity": "sha512-R9GCe2xl2XDSc2XbQB63mFiFXHIVkOP+ltIxICKXqUPrFX97z6Z7vONCLQM1pSOLGqfLrGi3B7nbhxmFY/fomg==", "cpu": [ "arm" ], @@ -289,9 +289,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.2.tgz", - "integrity": "sha512-QSkmYISXr2uFoR+NdmmKyR5svYb0cXDCfzwNblLsrC8wTpx/I1L7u/zrjrf4aLoHoRTycZFIewJwBiUrO5DWtQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.4.tgz", + "integrity": "sha512-91VwDrl4EpxBCiG6h2LZZEkuNvVZYJkv2T9gyLG/mhGG1qrM7i5SwUcg/hlSPnL/4hDT0TFcF35/XMGSn0bemg==", "cpu": [ "arm64" ], @@ -305,9 +305,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.2.tgz", - "integrity": "sha512-5VOaFBI0RK8jJVDHdeU1YJmpxXoOf1RPoiOBhk/Tvpulw7R1SwCsxHvC3eDQcoF0gV7YM4V2wJO0PR9tem6gCQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.4.tgz", + "integrity": "sha512-mGSqhEPL7029XL7QHNPxPs15JVa02hvZvysUcyMP9UXdGFwncl2WU0bqx+Ysgzd+WAbv8rfNa73QveOxAnAM2w==", "cpu": [ "x64" ], @@ -321,9 +321,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.2.tgz", - "integrity": "sha512-iQJu1Zn1Wi91D5x/sslEn/jwae1tgSAEHK0R/kYzIr5jO992IJwDDuWhSGll23jHt18RECxahhGG0BWY/bVUTw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.4.tgz", + "integrity": "sha512-tTyJRM9dHvlMPt1KrBFVB5OW1kXOsRNvAPtbzoKazd5RhD5/wKlXk1qR2MpaZRYwf4WDMadt0Pv0GwxB41CVow==", "cpu": [ "arm64" ], @@ -337,9 +337,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.2.tgz", - "integrity": "sha512-j750nyrwoRZd3VnPo5sd12/5U27TxFGmvmoDv93G2jiaGJPYKJ/+5IfRAvHahGePTUIRPyOlE5YLFw9MlzuBnw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.4.tgz", + "integrity": "sha512-phQuC2Imrb3TjOJwLN8EO50nb2FHe8Ew0OwgZDH1SV6asIPGudnwTQtighDF2EAYlXChLoMJwqjAp4vAaACq6w==", "cpu": [ "x64" ], @@ -353,9 +353,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.2.tgz", - "integrity": "sha512-ti7GU+/KUQQXEPmSUep7efZpA3KR2SkKsVuSL2FE7Yxka9apuqKfymAgQmVPMxstzAgCRBIu8uEu0KFmTfs3/Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.4.tgz", + "integrity": "sha512-oH6JUZkocgmjzzYaP5juERLpJQSwazdjZrTPgLRmAU2bzJ688x0vfMB/WTv4r58RiecdHvXOPC46VtsMy/mepg==", "cpu": [ "arm64" ], @@ -369,9 +369,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.2.tgz", - "integrity": "sha512-NgooSKWSnrNKRuiumY1dg7KAGpsyXIMcwyOXN9imnqe8VFjqqrEOMqZRik0C1wlfLjiSCuMsj+YUSmBMAJMt0A==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.4.tgz", + "integrity": "sha512-U4iWGn/9TrAfpAdfd56eO0pRxIgb0a8Wj9jClrhT8hvZnOnS4dfMPW7o4fn15D/KqoiVYHRm43jjBaTt3g/2KA==", "cpu": [ "x64" ], @@ -385,9 +385,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.2.tgz", - "integrity": "sha512-8dfrRTd39n+THdAetwQKNwK6zBPR5oPjMtgRNXvRq8gsn/J5o69zTaOWVi3QO09BljqdShxU2dxDA09lDhdIqQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.4.tgz", + "integrity": "sha512-S2s9xWTGMTa/fG5EyMGDeL0wrWVgOSQcNddJWgu6rG1NCSXJHs76ZP9AsxjB3f2nZow9fWOyApklIgiTGZKhiw==", "cpu": [ "arm" ], @@ -401,9 +401,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.2.tgz", - "integrity": "sha512-jcJ4cxwQyqEqgDwkqj7820nKx9cM5WBPCCU4oUXvTeG+DkkJE6/P75od0VPHmItFfEJu+/2vV85ebvFVomZcBg==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.4.tgz", + "integrity": "sha512-UkGfQvYlwOaeYJzZG4cLV0hCASzQZnKNktRXUo3/BMZvdau40AOz9GzmGA063n1piq6VrFFh43apRDQx8hMP2w==", "cpu": [ "arm64" ], @@ -417,9 +417,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.2.tgz", - "integrity": "sha512-dXZ3m++zaRVD2fqOUPP8QTh1Lfg6WO6uZDo/QJ3KdfnIR7dDToDtaA12AgKYvCed9Nuzf/gpKs/7/f6I02b/sg==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.4.tgz", + "integrity": "sha512-3lqFi4VFo/Vwvn77FZXeLd0ctolIJH/uXkH3yNgEk89Eh6D3XXAC9/iTPEzeEpsNE5IqGIsFa5Z0iPeOh25IyA==", "cpu": [ "ia32" ], @@ -433,9 +433,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.2.tgz", - "integrity": "sha512-/vntXkzSe9TUp0Rh35Wgye1EOhDtmIMjwC4rtahHcALmDXL+iuQGvwGFvXrP+sBigia/ltLryMAvCiqGV6plqw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.4.tgz", + "integrity": "sha512-HqpWZkVslDHIwdQ9D+gk7NuAulgQvRxF9no54ut/M55KEb3mi7sQS3GwpPJzSyzzP0UkjQVN7/tbk88/CaX4EQ==", "cpu": [ "loong64" ], @@ -449,9 +449,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.2.tgz", - "integrity": "sha512-guYcNHjMRO1BMxWAeb8LDfgQaU8oeUO65xtlclwBD+hX3163KBifEHyao1hK96J10BP9n0UmZug6GhtGZaNm2Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.4.tgz", + "integrity": "sha512-d/nMCKKh/SVDbqR9ju+b78vOr0tNXtfBjcp5vfHONCCOAL9ad8gN9dC/u+UnH939pz7wO+0u/x9y1MaZcb/lKA==", "cpu": [ "mips64el" ], @@ -465,9 +465,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.2.tgz", - "integrity": "sha512-fzHTnIGIVqgUGZcFnnisguKD4UneF4uwWwkG+i8kBspMDdU1wJ0jha1VdtxWP7Ob1KGxuXcoUlrQkCVO+Z5iOw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.4.tgz", + "integrity": "sha512-lOD9p2dmjZcNiTU+sGe9Nn6G3aYw3k0HBJies1PU0j5IGfp6tdKOQ6mzfACRFCqXjnBuTqK7eTYpwx09O5LLfg==", "cpu": [ "ppc64" ], @@ -481,9 +481,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.2.tgz", - "integrity": "sha512-Sa+z7csvNVeAsTD83tVSggOb8CAU7EdDuihC8WhtoJfuDVkF5+Vi0imaiCjXQ7Ci5rz/a8IJ1H1MWX3eI9AmuQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.4.tgz", + "integrity": "sha512-mTGnwWwVshAjGsd8rP+K6583cPDgxOunsqqldEYij7T5/ysluMHKqUIT4TJHfrDFadUwrghAL6QjER4FeqQXoA==", "cpu": [ "riscv64" ], @@ -497,9 +497,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.2.tgz", - "integrity": "sha512-jUFCO+/VA1Y/oeauSNBubp2UtGu4xjBUEFVgMPm0qLuw6xw18yOagKwBOPVmyE3ZSFqGd9BAPZM/JrtadgBryA==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.4.tgz", + "integrity": "sha512-AQYuUGp50XM29/N/dehADxvc2bUqDcoqrVuijop1Wv72SyxT6dDB9wjUxuPZm2HwIM876UoNNBMVd+iX/UTKVQ==", "cpu": [ "s390x" ], @@ -513,9 +513,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.2.tgz", - "integrity": "sha512-naygxkSmr6x9tuvpa8iGefnXo3Rc3Noz7c4+Dn0MSfSWJwLaN2YR686e7HkI09irfjDdU5UAq9wcxUwjkYQNUA==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.4.tgz", + "integrity": "sha512-+AsFBwKgQuhV2shfGgA9YloxLDVjXgUEWZum7glR5lLmV94IThu/u2JZGxTgjYby6kyXEx8lKOqP5rTEVBR0Rw==", "cpu": [ "x64" ], @@ -529,9 +529,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.2.tgz", - "integrity": "sha512-Hagbdq4EpiG9XXJY6Ozfrl2RN5jkXZXd6BD39f43tWz0d8yyOrRZlofM1eA6JYQbdv6c8BUsUOcgopavIqwx4Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.4.tgz", + "integrity": "sha512-zD1TKYX9553OiLS/qkXPMlWoELYkH/VkzRYNKEU+GwFiqkq0SuxsKnsCg5UCdxN3cqd+1KZ8SS3R+WG/Hxy2jQ==", "cpu": [ "x64" ], @@ -545,9 +545,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.2.tgz", - "integrity": "sha512-Pkby+VEXY7+aWP8J2RUCfqWbbZz2M1GavRGGnE2kEPzwarba/BOk3B45PSaKwc3iKdK2rgCPCTjC/p9JoKNejA==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.4.tgz", + "integrity": "sha512-PY1NjEsLRhPEFFg1AV0/4Or/gR+q2dOb9s5rXcPuCjyHRzbt8vnHJl3vYj+641TgWZzTFmSUnZbzs1zwTzjeqw==", "cpu": [ "x64" ], @@ -561,9 +561,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.2.tgz", - "integrity": "sha512-WAyg4dBTUsAPJ9cRnuQ23cwJWYRhP4e4y0M/l2+EpRjWW+g1MNAXKQQNNhRQ71zc8UixRVrqj+43ReHeZC8mJQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.4.tgz", + "integrity": "sha512-B3Z7s8QZQW9tKGleMRXvVmwwLPAUoDCHs4WZ2ElVMWiortLJFowU1NjAhXOKjDgC7o9ByeVcwyOlJ+F2r6ZgmQ==", "cpu": [ "x64" ], @@ -577,9 +577,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.2.tgz", - "integrity": "sha512-rMbO3gPpxuENd+AnZLgo4J/g+BkwxT3NK7nYpSZ0KlYtSdlxYMIMG5pznX7a1ISZKo67aGStne+K41jdkBywpA==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.4.tgz", + "integrity": "sha512-0HCu8R3mY/H5V7N6kdlsJkvrT591bO/oRZy8ztF1dhgNU5xD5tAh5bKByT1UjTGjp/VVBsl1PDQ3L18SfvtnBQ==", "cpu": [ "arm64" ], @@ -593,9 +593,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.2.tgz", - "integrity": "sha512-73dWKDMhFk+4owS19OjEVbEDGFPRS1fyga3qOu5HPd5eTxJTjtlVTT/fG/S7AchA0vXS7hOqY70AAir1CkmICg==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.4.tgz", + "integrity": "sha512-VUjhVDQycse1gLbe06pC/uaA0M+piQXJpdpNdhg8sPmeIZZqu5xPoGWVCmcsOO2gaM2cywuTYTHkXRozo3/Nkg==", "cpu": [ "ia32" ], @@ -609,9 +609,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.2.tgz", - "integrity": "sha512-QFJlhf73HCBjTqAWWSIlD8JQBtmue0Dd6UV+KGccycJ3HKj1dCkXdRKJGwc5bZWiI9hrxcWsVEa1kVFaltC4vQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.4.tgz", + "integrity": "sha512-0kLAjs+xN5OjhTt/aUA6t48SfENSCKgGPfExADYTOo/UCn0ivxos9/anUVeSfg+L+2O9xkFxvJXIJfG+Q4sYSg==", "cpu": [ "x64" ], @@ -1280,9 +1280,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001445", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001445.tgz", - "integrity": "sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg==", + "version": "1.0.30001448", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz", + "integrity": "sha512-tq2YI+MJnooG96XpbTRYkBxLxklZPOdLmNIOdIhvf7SNJan6u5vCKum8iT7ZfCt70m1GPkuC7P3TtX6UuhupuA==", "dev": true, "funding": [ { @@ -1356,9 +1356,9 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "node_modules/clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -2007,9 +2007,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.2.tgz", - "integrity": "sha512-odaHSgtYafOXt2nSISwdWlfRkb4ceMX3akY1mWspQpT08jsqVYEK1XtVusr250Rmbx8AVNWjMPI/yyvKqxOKMw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.4.tgz", + "integrity": "sha512-zBn9MeCwT7W5F1a3lXClD61ip6vQM+H8Msb0w8zMT4ZKBpDg+rFAraNyWCDelB/2L6M3g6AXHPnsyvjMFnxtFw==", "dev": true, "hasInstallScript": true, "bin": { @@ -2019,28 +2019,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.2", - "@esbuild/android-arm64": "0.17.2", - "@esbuild/android-x64": "0.17.2", - "@esbuild/darwin-arm64": "0.17.2", - "@esbuild/darwin-x64": "0.17.2", - "@esbuild/freebsd-arm64": "0.17.2", - "@esbuild/freebsd-x64": "0.17.2", - "@esbuild/linux-arm": "0.17.2", - "@esbuild/linux-arm64": "0.17.2", - "@esbuild/linux-ia32": "0.17.2", - "@esbuild/linux-loong64": "0.17.2", - "@esbuild/linux-mips64el": "0.17.2", - "@esbuild/linux-ppc64": "0.17.2", - "@esbuild/linux-riscv64": "0.17.2", - "@esbuild/linux-s390x": "0.17.2", - "@esbuild/linux-x64": "0.17.2", - "@esbuild/netbsd-x64": "0.17.2", - "@esbuild/openbsd-x64": "0.17.2", - "@esbuild/sunos-x64": "0.17.2", - "@esbuild/win32-arm64": "0.17.2", - "@esbuild/win32-ia32": "0.17.2", - "@esbuild/win32-x64": "0.17.2" + "@esbuild/android-arm": "0.17.4", + "@esbuild/android-arm64": "0.17.4", + "@esbuild/android-x64": "0.17.4", + "@esbuild/darwin-arm64": "0.17.4", + "@esbuild/darwin-x64": "0.17.4", + "@esbuild/freebsd-arm64": "0.17.4", + "@esbuild/freebsd-x64": "0.17.4", + "@esbuild/linux-arm": "0.17.4", + "@esbuild/linux-arm64": "0.17.4", + "@esbuild/linux-ia32": "0.17.4", + "@esbuild/linux-loong64": "0.17.4", + "@esbuild/linux-mips64el": "0.17.4", + "@esbuild/linux-ppc64": "0.17.4", + "@esbuild/linux-riscv64": "0.17.4", + "@esbuild/linux-s390x": "0.17.4", + "@esbuild/linux-x64": "0.17.4", + "@esbuild/netbsd-x64": "0.17.4", + "@esbuild/openbsd-x64": "0.17.4", + "@esbuild/sunos-x64": "0.17.4", + "@esbuild/win32-arm64": "0.17.4", + "@esbuild/win32-ia32": "0.17.4", + "@esbuild/win32-x64": "0.17.4" } }, "node_modules/escalade": { @@ -2395,9 +2395,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -3640,9 +3640,9 @@ } }, "node_modules/minimatch": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.4.tgz", - "integrity": "sha512-U0iNYXt9wALljzfnGkhFSy5sAC6/SCR3JrHrlsdJz4kF8MvhTRQNiC59iUi1iqsitV7abrNAJWElVL9pdnoUgw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -5737,9 +5737,9 @@ } }, "node_modules/rimraf": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.1.0.tgz", - "integrity": "sha512-ZJdkUR5/dRrRJHdcSKJLrpRn6tVjl9ALxd4yrTCxFsMpjQNzwHF6GLqMsuEzEYIXxHlFPDSk21Vr8VPuFBEz0g==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.1.2.tgz", + "integrity": "sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ==", "dev": true, "bin": { "rimraf": "dist/cjs/src/bin.js" @@ -6460,9 +6460,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -6868,9 +6868,9 @@ "integrity": "sha512-5R+DsT9LJ9tXiSQ4y+KLFppCkQyXhzAm1AIuBWE/sbU0hSXY5pkhoqQYEcPJQFg/nglL+wD55iv2j+7O96UAvg==" }, "@11ty/eleventy": { - "version": "2.0.0-canary.30", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-2.0.0-canary.30.tgz", - "integrity": "sha512-kYszNYX1sEjNEDSoFD3Ez7RjXe2NeoDg+XauhOyrprN5EPa4k54t4F/dqBUup7Izm6IzqXr6wAkbKEPaly/URQ==", + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-2.0.0-beta.1.tgz", + "integrity": "sha512-j/V73NWO3i8VnVBWHytDbHxyexomKwrbHiDOLs3LyNaaB3MYZIvGYYf10NVLDO37Zq9CacIfP6a69Njjg9rJDg==", "requires": { "@11ty/dependency-tree": "^2.0.1", "@11ty/eleventy-dev-server": "^1.0.1", @@ -7003,9 +7003,9 @@ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" }, "@babel/parser": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz", - "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==" + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==" }, "@babel/types": { "version": "7.20.7", @@ -7018,156 +7018,156 @@ } }, "@esbuild/android-arm": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.2.tgz", - "integrity": "sha512-Art7v3xYfqH1gEMUSP0Nx67pNAlC/Y3qSg3mOw8Wg7MP9bJLXL0DrmJaV1Qz1o4FwagtvDgkVOeBDpZgxdj13Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.4.tgz", + "integrity": "sha512-R9GCe2xl2XDSc2XbQB63mFiFXHIVkOP+ltIxICKXqUPrFX97z6Z7vONCLQM1pSOLGqfLrGi3B7nbhxmFY/fomg==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.2.tgz", - "integrity": "sha512-QSkmYISXr2uFoR+NdmmKyR5svYb0cXDCfzwNblLsrC8wTpx/I1L7u/zrjrf4aLoHoRTycZFIewJwBiUrO5DWtQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.4.tgz", + "integrity": "sha512-91VwDrl4EpxBCiG6h2LZZEkuNvVZYJkv2T9gyLG/mhGG1qrM7i5SwUcg/hlSPnL/4hDT0TFcF35/XMGSn0bemg==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.2.tgz", - "integrity": "sha512-5VOaFBI0RK8jJVDHdeU1YJmpxXoOf1RPoiOBhk/Tvpulw7R1SwCsxHvC3eDQcoF0gV7YM4V2wJO0PR9tem6gCQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.4.tgz", + "integrity": "sha512-mGSqhEPL7029XL7QHNPxPs15JVa02hvZvysUcyMP9UXdGFwncl2WU0bqx+Ysgzd+WAbv8rfNa73QveOxAnAM2w==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.2.tgz", - "integrity": "sha512-iQJu1Zn1Wi91D5x/sslEn/jwae1tgSAEHK0R/kYzIr5jO992IJwDDuWhSGll23jHt18RECxahhGG0BWY/bVUTw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.4.tgz", + "integrity": "sha512-tTyJRM9dHvlMPt1KrBFVB5OW1kXOsRNvAPtbzoKazd5RhD5/wKlXk1qR2MpaZRYwf4WDMadt0Pv0GwxB41CVow==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.2.tgz", - "integrity": "sha512-j750nyrwoRZd3VnPo5sd12/5U27TxFGmvmoDv93G2jiaGJPYKJ/+5IfRAvHahGePTUIRPyOlE5YLFw9MlzuBnw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.4.tgz", + "integrity": "sha512-phQuC2Imrb3TjOJwLN8EO50nb2FHe8Ew0OwgZDH1SV6asIPGudnwTQtighDF2EAYlXChLoMJwqjAp4vAaACq6w==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.2.tgz", - "integrity": "sha512-ti7GU+/KUQQXEPmSUep7efZpA3KR2SkKsVuSL2FE7Yxka9apuqKfymAgQmVPMxstzAgCRBIu8uEu0KFmTfs3/Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.4.tgz", + "integrity": "sha512-oH6JUZkocgmjzzYaP5juERLpJQSwazdjZrTPgLRmAU2bzJ688x0vfMB/WTv4r58RiecdHvXOPC46VtsMy/mepg==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.2.tgz", - "integrity": "sha512-NgooSKWSnrNKRuiumY1dg7KAGpsyXIMcwyOXN9imnqe8VFjqqrEOMqZRik0C1wlfLjiSCuMsj+YUSmBMAJMt0A==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.4.tgz", + "integrity": "sha512-U4iWGn/9TrAfpAdfd56eO0pRxIgb0a8Wj9jClrhT8hvZnOnS4dfMPW7o4fn15D/KqoiVYHRm43jjBaTt3g/2KA==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.2.tgz", - "integrity": "sha512-8dfrRTd39n+THdAetwQKNwK6zBPR5oPjMtgRNXvRq8gsn/J5o69zTaOWVi3QO09BljqdShxU2dxDA09lDhdIqQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.4.tgz", + "integrity": "sha512-S2s9xWTGMTa/fG5EyMGDeL0wrWVgOSQcNddJWgu6rG1NCSXJHs76ZP9AsxjB3f2nZow9fWOyApklIgiTGZKhiw==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.2.tgz", - "integrity": "sha512-jcJ4cxwQyqEqgDwkqj7820nKx9cM5WBPCCU4oUXvTeG+DkkJE6/P75od0VPHmItFfEJu+/2vV85ebvFVomZcBg==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.4.tgz", + "integrity": "sha512-UkGfQvYlwOaeYJzZG4cLV0hCASzQZnKNktRXUo3/BMZvdau40AOz9GzmGA063n1piq6VrFFh43apRDQx8hMP2w==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.2.tgz", - "integrity": "sha512-dXZ3m++zaRVD2fqOUPP8QTh1Lfg6WO6uZDo/QJ3KdfnIR7dDToDtaA12AgKYvCed9Nuzf/gpKs/7/f6I02b/sg==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.4.tgz", + "integrity": "sha512-3lqFi4VFo/Vwvn77FZXeLd0ctolIJH/uXkH3yNgEk89Eh6D3XXAC9/iTPEzeEpsNE5IqGIsFa5Z0iPeOh25IyA==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.2.tgz", - "integrity": "sha512-/vntXkzSe9TUp0Rh35Wgye1EOhDtmIMjwC4rtahHcALmDXL+iuQGvwGFvXrP+sBigia/ltLryMAvCiqGV6plqw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.4.tgz", + "integrity": "sha512-HqpWZkVslDHIwdQ9D+gk7NuAulgQvRxF9no54ut/M55KEb3mi7sQS3GwpPJzSyzzP0UkjQVN7/tbk88/CaX4EQ==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.2.tgz", - "integrity": "sha512-guYcNHjMRO1BMxWAeb8LDfgQaU8oeUO65xtlclwBD+hX3163KBifEHyao1hK96J10BP9n0UmZug6GhtGZaNm2Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.4.tgz", + "integrity": "sha512-d/nMCKKh/SVDbqR9ju+b78vOr0tNXtfBjcp5vfHONCCOAL9ad8gN9dC/u+UnH939pz7wO+0u/x9y1MaZcb/lKA==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.2.tgz", - "integrity": "sha512-fzHTnIGIVqgUGZcFnnisguKD4UneF4uwWwkG+i8kBspMDdU1wJ0jha1VdtxWP7Ob1KGxuXcoUlrQkCVO+Z5iOw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.4.tgz", + "integrity": "sha512-lOD9p2dmjZcNiTU+sGe9Nn6G3aYw3k0HBJies1PU0j5IGfp6tdKOQ6mzfACRFCqXjnBuTqK7eTYpwx09O5LLfg==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.2.tgz", - "integrity": "sha512-Sa+z7csvNVeAsTD83tVSggOb8CAU7EdDuihC8WhtoJfuDVkF5+Vi0imaiCjXQ7Ci5rz/a8IJ1H1MWX3eI9AmuQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.4.tgz", + "integrity": "sha512-mTGnwWwVshAjGsd8rP+K6583cPDgxOunsqqldEYij7T5/ysluMHKqUIT4TJHfrDFadUwrghAL6QjER4FeqQXoA==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.2.tgz", - "integrity": "sha512-jUFCO+/VA1Y/oeauSNBubp2UtGu4xjBUEFVgMPm0qLuw6xw18yOagKwBOPVmyE3ZSFqGd9BAPZM/JrtadgBryA==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.4.tgz", + "integrity": "sha512-AQYuUGp50XM29/N/dehADxvc2bUqDcoqrVuijop1Wv72SyxT6dDB9wjUxuPZm2HwIM876UoNNBMVd+iX/UTKVQ==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.2.tgz", - "integrity": "sha512-naygxkSmr6x9tuvpa8iGefnXo3Rc3Noz7c4+Dn0MSfSWJwLaN2YR686e7HkI09irfjDdU5UAq9wcxUwjkYQNUA==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.4.tgz", + "integrity": "sha512-+AsFBwKgQuhV2shfGgA9YloxLDVjXgUEWZum7glR5lLmV94IThu/u2JZGxTgjYby6kyXEx8lKOqP5rTEVBR0Rw==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.2.tgz", - "integrity": "sha512-Hagbdq4EpiG9XXJY6Ozfrl2RN5jkXZXd6BD39f43tWz0d8yyOrRZlofM1eA6JYQbdv6c8BUsUOcgopavIqwx4Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.4.tgz", + "integrity": "sha512-zD1TKYX9553OiLS/qkXPMlWoELYkH/VkzRYNKEU+GwFiqkq0SuxsKnsCg5UCdxN3cqd+1KZ8SS3R+WG/Hxy2jQ==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.2.tgz", - "integrity": "sha512-Pkby+VEXY7+aWP8J2RUCfqWbbZz2M1GavRGGnE2kEPzwarba/BOk3B45PSaKwc3iKdK2rgCPCTjC/p9JoKNejA==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.4.tgz", + "integrity": "sha512-PY1NjEsLRhPEFFg1AV0/4Or/gR+q2dOb9s5rXcPuCjyHRzbt8vnHJl3vYj+641TgWZzTFmSUnZbzs1zwTzjeqw==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.2.tgz", - "integrity": "sha512-WAyg4dBTUsAPJ9cRnuQ23cwJWYRhP4e4y0M/l2+EpRjWW+g1MNAXKQQNNhRQ71zc8UixRVrqj+43ReHeZC8mJQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.4.tgz", + "integrity": "sha512-B3Z7s8QZQW9tKGleMRXvVmwwLPAUoDCHs4WZ2ElVMWiortLJFowU1NjAhXOKjDgC7o9ByeVcwyOlJ+F2r6ZgmQ==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.2.tgz", - "integrity": "sha512-rMbO3gPpxuENd+AnZLgo4J/g+BkwxT3NK7nYpSZ0KlYtSdlxYMIMG5pznX7a1ISZKo67aGStne+K41jdkBywpA==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.4.tgz", + "integrity": "sha512-0HCu8R3mY/H5V7N6kdlsJkvrT591bO/oRZy8ztF1dhgNU5xD5tAh5bKByT1UjTGjp/VVBsl1PDQ3L18SfvtnBQ==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.2.tgz", - "integrity": "sha512-73dWKDMhFk+4owS19OjEVbEDGFPRS1fyga3qOu5HPd5eTxJTjtlVTT/fG/S7AchA0vXS7hOqY70AAir1CkmICg==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.4.tgz", + "integrity": "sha512-VUjhVDQycse1gLbe06pC/uaA0M+piQXJpdpNdhg8sPmeIZZqu5xPoGWVCmcsOO2gaM2cywuTYTHkXRozo3/Nkg==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.2.tgz", - "integrity": "sha512-QFJlhf73HCBjTqAWWSIlD8JQBtmue0Dd6UV+KGccycJ3HKj1dCkXdRKJGwc5bZWiI9hrxcWsVEa1kVFaltC4vQ==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.4.tgz", + "integrity": "sha512-0kLAjs+xN5OjhTt/aUA6t48SfENSCKgGPfExADYTOo/UCn0ivxos9/anUVeSfg+L+2O9xkFxvJXIJfG+Q4sYSg==", "dev": true, "optional": true }, @@ -7648,9 +7648,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001445", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001445.tgz", - "integrity": "sha512-8sdQIdMztYmzfTMO6KfLny878Ln9c2M0fc7EH60IjlP4Dc4PiCy7K2Vl3ITmWgOyPgVQKa5x+UP/KqFsxj4mBg==", + "version": "1.0.30001448", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001448.tgz", + "integrity": "sha512-tq2YI+MJnooG96XpbTRYkBxLxklZPOdLmNIOdIhvf7SNJan6u5vCKum8iT7ZfCt70m1GPkuC7P3TtX6UuhupuA==", "dev": true }, "chalk": { @@ -7697,9 +7697,9 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "clean-css": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", - "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -8173,33 +8173,33 @@ } }, "esbuild": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.2.tgz", - "integrity": "sha512-odaHSgtYafOXt2nSISwdWlfRkb4ceMX3akY1mWspQpT08jsqVYEK1XtVusr250Rmbx8AVNWjMPI/yyvKqxOKMw==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.4.tgz", + "integrity": "sha512-zBn9MeCwT7W5F1a3lXClD61ip6vQM+H8Msb0w8zMT4ZKBpDg+rFAraNyWCDelB/2L6M3g6AXHPnsyvjMFnxtFw==", "dev": true, "requires": { - "@esbuild/android-arm": "0.17.2", - "@esbuild/android-arm64": "0.17.2", - "@esbuild/android-x64": "0.17.2", - "@esbuild/darwin-arm64": "0.17.2", - "@esbuild/darwin-x64": "0.17.2", - "@esbuild/freebsd-arm64": "0.17.2", - "@esbuild/freebsd-x64": "0.17.2", - "@esbuild/linux-arm": "0.17.2", - "@esbuild/linux-arm64": "0.17.2", - "@esbuild/linux-ia32": "0.17.2", - "@esbuild/linux-loong64": "0.17.2", - "@esbuild/linux-mips64el": "0.17.2", - "@esbuild/linux-ppc64": "0.17.2", - "@esbuild/linux-riscv64": "0.17.2", - "@esbuild/linux-s390x": "0.17.2", - "@esbuild/linux-x64": "0.17.2", - "@esbuild/netbsd-x64": "0.17.2", - "@esbuild/openbsd-x64": "0.17.2", - "@esbuild/sunos-x64": "0.17.2", - "@esbuild/win32-arm64": "0.17.2", - "@esbuild/win32-ia32": "0.17.2", - "@esbuild/win32-x64": "0.17.2" + "@esbuild/android-arm": "0.17.4", + "@esbuild/android-arm64": "0.17.4", + "@esbuild/android-x64": "0.17.4", + "@esbuild/darwin-arm64": "0.17.4", + "@esbuild/darwin-x64": "0.17.4", + "@esbuild/freebsd-arm64": "0.17.4", + "@esbuild/freebsd-x64": "0.17.4", + "@esbuild/linux-arm": "0.17.4", + "@esbuild/linux-arm64": "0.17.4", + "@esbuild/linux-ia32": "0.17.4", + "@esbuild/linux-loong64": "0.17.4", + "@esbuild/linux-mips64el": "0.17.4", + "@esbuild/linux-ppc64": "0.17.4", + "@esbuild/linux-riscv64": "0.17.4", + "@esbuild/linux-s390x": "0.17.4", + "@esbuild/linux-x64": "0.17.4", + "@esbuild/netbsd-x64": "0.17.4", + "@esbuild/openbsd-x64": "0.17.4", + "@esbuild/sunos-x64": "0.17.4", + "@esbuild/win32-arm64": "0.17.4", + "@esbuild/win32-ia32": "0.17.4", + "@esbuild/win32-x64": "0.17.4" } }, "escalade": { @@ -8469,9 +8469,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -9369,9 +9369,9 @@ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" }, "minimatch": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.4.tgz", - "integrity": "sha512-U0iNYXt9wALljzfnGkhFSy5sAC6/SCR3JrHrlsdJz4kF8MvhTRQNiC59iUi1iqsitV7abrNAJWElVL9pdnoUgw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "requires": { "brace-expansion": "^2.0.1" } @@ -10865,9 +10865,9 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.1.0.tgz", - "integrity": "sha512-ZJdkUR5/dRrRJHdcSKJLrpRn6tVjl9ALxd4yrTCxFsMpjQNzwHF6GLqMsuEzEYIXxHlFPDSk21Vr8VPuFBEz0g==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.1.2.tgz", + "integrity": "sha512-BlIbgFryTbw3Dz6hyoWFhKk+unCcHMSkZGrTFVAx2WmttdBSonsdtRlwiuTbDqTKr+UlXIUqJVS4QT5tUzGENQ==", "dev": true }, "run-parallel": { @@ -11360,9 +11360,9 @@ }, "dependencies": { "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "commander": { diff --git a/package.json b/package.json index e53a475..7b71faf 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eleventy-excellent", - "version": "1.2.4", + "version": "1.3.0", "description": "Eleventy starter based on the workflow suggested by Andy Bell's buildexcellentwebsit.es.", "author": "Lene Saile", "license": "ISC", @@ -21,7 +21,7 @@ "url": "https://github.com/madrilene/eleventy-excellent.git" }, "dependencies": { - "@11ty/eleventy": "^2.0.0-canary.30", + "@11ty/eleventy": "^2.0.0-beta.1", "@11ty/eleventy-fetch": "^3.0.0", "@11ty/eleventy-img": "^2.0.1", "@11ty/eleventy-plugin-syntaxhighlight": "^4.1.0", diff --git a/readme.md b/readme.md index db02a4c..cd7d721 100644 --- a/readme.md +++ b/readme.md @@ -3,7 +3,7 @@ Opiniated but easy to use Eleventy starter, based on the workflow suggested by Andy Bell's [buildexcellentwebsit.es](https://buildexcellentwebsit.es/). If you end up using this starter, feel free to send me a link, I'd love to see it! -Also let me know if you miss any features. Currently in planning: automatically generated OpenGraph images (as fallback) and dark mode, inlining CSS and JS. +Also let me know if you miss any features. Currently in planning: dark mode, inlining CSS and JS. - [Eleventy Excellent](#eleventy-excellent) - [Preview](#preview) @@ -16,6 +16,7 @@ Also let me know if you miss any features. Currently in planning: automatically - [Creating a production build](#creating-a-production-build) - [Built with Eleventy Excellent](#built-with-eleventy-excellent) - [Logbook](#logbook) + - [23-01-25](#23-01-25) - [23-01-09](#23-01-09) - [22-12-29](#22-12-29) - [22-12-20](#22-12-20) @@ -44,6 +45,7 @@ https://eleventy-excellent.netlify.app/ - Syntax highlighting via eleventy-plugin-syntaxhighlight _([see blog post](https://eleventy-excellent.netlify.app/blog/post-with-some-code/))_ - Advanced markdown handling _([see blog post](https://eleventy-excellent.netlify.app/blog/post-with-all-the-markdown/))_ - 301 redirects for Netlify _([see blog post](https://eleventy-excellent.netlify.app/blog/post-with-301-redirects/))_ +- Automatically generated Open Graph images for blog posts _([see blog post](https://eleventy-excellent.netlify.app/blog/open-graph-images/))_ - SEO basics (XML-sitemap, metadata) - dayjs handling dates & times - Bundling via esbuild @@ -99,6 +101,11 @@ npm run build ## Logbook +### 23-01-25 + +- updated Elevebty +- minor: added automatically generated open graph images for blog posts + ### 23-01-09 - updated Eleventy @@ -200,3 +207,9 @@ Manuel is an accessibility expert. The menu I'm using is from one of his article - https://web.dev/website-navigation/ - https://www.matuzo.at/ + +**Bernard Nijenhuis** + +Bernard wrote the article on which the Open Graph Images implementation is based. + +- https://bnijenhuis.nl/notes/automatically-generate-open-graph-images-in-eleventy/ diff --git a/src/_includes/partials/meta-info.njk b/src/_includes/partials/meta-info.njk index 28ab668..0fe3e0f 100644 --- a/src/_includes/partials/meta-info.njk +++ b/src/_includes/partials/meta-info.njk @@ -38,11 +38,12 @@ /> +``` + +To edit the look and behaviour of those images edit `src/social-preview.njk`. +The implementation is based on [Bernard Nijenhuis article](https://bnijenhuis.nl/notes/automatically-generate-open-graph-images-in-eleventy/). diff --git a/src/social-preview.njk b/src/social-preview.njk new file mode 100644 index 0000000..33006b0 --- /dev/null +++ b/src/social-preview.njk @@ -0,0 +1,69 @@ +--- +# https://github.com/bnijenhuis/bnijenhuis-nl/blob/main/social-preview.njk +pagination: + data: collections.posts + size: 1 + alias: preview +permalink: '/assets/images/social-preview/{{ preview.data.title | slugify }}-preview.svg' +eleventyExcludeFromCollections: true +--- + + + {% set titleInLines = preview.data.title | splitlines(15) %} + {% set numberOfLines = titleInLines.length %} + {% if numberOfLines == 1 %} + {% set verticalStartingPoint = 340 %} + {% elseif numberOfLines == 2 %} + {% set verticalStartingPoint = 290 %} + {% elseif numberOfLines == 3 %} + {% set verticalStartingPoint = 250 %} + {% elseif numberOfLines == 4 %} + {% set verticalStartingPoint = 210 %} + {% elseif numberOfLines == 5 %} + {% set verticalStartingPoint = 170 %} + {% endif %} + + + + + + + + {{ preview.date | formatDate('DD / MM / YYYY') }} + + + + + + {% for line in titleInLines %} + + {{ line }} + + {% endfor %} + + + + + {{ meta.siteName }} · {{ meta.url | replace("https://", "") | replace("http://", "") }} + +