From d822cabdc785c9599d77537b99790a352bf2111a Mon Sep 17 00:00:00 2001 From: Sammy Harper <36314993+samharp@users.noreply.github.com> Date: Fri, 13 Jun 2025 16:41:15 -0500 Subject: [PATCH 001/126] Initial commit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1695d51 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# terrabyte-11ty-template +11ty template for starting a Terrabyte website From 55b627403c2bce657d0e4ef255c5c55d4aaa93dc Mon Sep 17 00:00:00 2001 From: Sammy Harper <36314993+samharp@users.noreply.github.com> Date: Fri, 13 Jun 2025 16:47:15 -0500 Subject: [PATCH 002/126] Update README.md --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1695d51..a30d534 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ -# terrabyte-11ty-template -11ty template for starting a Terrabyte website +# Terrabyte 11ty Template + +The purpose of this project is to make it easy to get started when building a Terrabyte website using 11ty. [11ty](https://www.11ty.dev/) is a static-site generator that makes the website build process more efficient while leveraging components. For more information on using 11ty, please visit their [docs](https://www.11ty.dev/docs/). + +## Process + +[DigitalOcean](https://digitalocean.com) has a great (guide)[https://www.digitalocean.com/community/tutorials/how-to-create-and-deploy-your-first-eleventy-website#step-2-choosing-a-templating-language] on building your first 11ty website. This guide will use their steps, but cater the process to building a Terrabyte website. + From 223350703e357826871e96cd95a333638e646295 Mon Sep 17 00:00:00 2001 From: Sammy Harper <36314993+samharp@users.noreply.github.com> Date: Fri, 13 Jun 2025 17:13:35 -0500 Subject: [PATCH 003/126] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a30d534..3fc8485 100644 --- a/README.md +++ b/README.md @@ -4,5 +4,5 @@ The purpose of this project is to make it easy to get started when building a Te ## Process -[DigitalOcean](https://digitalocean.com) has a great (guide)[https://www.digitalocean.com/community/tutorials/how-to-create-and-deploy-your-first-eleventy-website#step-2-choosing-a-templating-language] on building your first 11ty website. This guide will use their steps, but cater the process to building a Terrabyte website. +[DigitalOcean](https://digitalocean.com) has a great [guide](https://www.digitalocean.com/community/tutorials/how-to-create-and-deploy-your-first-eleventy-website#step-2-choosing-a-templating-language) on building your first 11ty website. This guide will use their steps, but cater the process to building a Terrabyte website. From 2d584a70c1d5bb3f28766c30e3920ed12b9ce51f Mon Sep 17 00:00:00 2001 From: sharper Date: Fri, 13 Jun 2025 17:37:30 -0500 Subject: [PATCH 004/126] feat: init 11ty --- .eleventy.js | 21 + .gitignore | 2 + .htaccess | 4 + android-chrome-192x192.png | Bin 0 -> 4645 bytes android-chrome-512x512.png | Bin 0 -> 14258 bytes apple-touch-icon.png | Bin 0 -> 4130 bytes favicon-16x16.png | Bin 0 -> 369 bytes package-lock.json | 1697 ++++++++++++++++++++++++++++++++++++ package.json | 16 + site.webmanifest | 1 + 10 files changed, 1741 insertions(+) create mode 100644 .eleventy.js create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 android-chrome-192x192.png create mode 100644 android-chrome-512x512.png create mode 100644 apple-touch-icon.png create mode 100644 favicon-16x16.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 site.webmanifest diff --git a/.eleventy.js b/.eleventy.js new file mode 100644 index 0000000..610980a --- /dev/null +++ b/.eleventy.js @@ -0,0 +1,21 @@ +module.exports = function (eleventyConfig) { + // copy site data + eleventyConfig.addPassthroughCopy('htaccess.txt'); + eleventyConfig.addPassthroughCopy('.htaccess'); + // copy directories to the output + eleventyConfig.addPassthroughCopy('css'); + eleventyConfig.addPassthroughCopy('js'); + eleventyConfig.addPassthroughCopy('img'); + // copy favicons + eleventyConfig.addPassthroughCopy('site.webmanifest'); + eleventyConfig.addPassthroughCopy('*.ico'); + eleventyConfig.addPassthroughCopy('*.png'); + + // watch directories for changes + eleventyConfig.addWatchTarget('css'); + eleventyConfig.addWatchTarget('js'); + eleventyConfig.addWatchTarget('img'); + eleventyConfig.addWatchTarget('cards'); + eleventyConfig.addWatchTarget('site.webmanifest'); + +}; \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5a87346 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +_site \ No newline at end of file diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..60a4186 --- /dev/null +++ b/.htaccess @@ -0,0 +1,4 @@ +ErrorDocument 400 /error.php +ErrorDocument 401 /error.php +ErrorDocument 403 /error.php +ErrorDocument 404 /error.php \ No newline at end of file diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f8047bdbdfd65a7a022c9ec6817aa458c77b34b8 GIT binary patch literal 4645 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 literal 0 HcmV?d00001 diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..854392ddf9311cc17bf9fc74f66878c40b8bf792 GIT binary patch literal 4130 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 U^f0d@b?66Z-_qAA)vyiyAHcaKOaK4? literal 0 HcmV?d00001 diff --git a/favicon-16x16.png b/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..600a710783373576892182801bc65aa1fda5fd59 GIT binary patch literal 369 zcmV-%0gnEOP)Px$D@jB_R5(v#WIzLL=R8G!{bz1vU}ThKVELDQA9JE-3QuL1Sve2y~yXE16o-olBj&~;tmcLoNAlY`uV zh6V;E24CN6j7$tt^@f}IP`t3d;4=dQd|IOSTG-(EH44~KxAZHEnXasqo0g{wW85o(x88&YC)WFcd zV59nypOcgQB~eMa;jHg`21bSiteJ^{ao(=LKKz*pUv_5x{ikL-T6P8iU5CICRU+@i P00000NkvXXu0mjfeq^Gl literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4f78303 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1697 @@ +{ + "name": "terrabyte-11ty-template", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "terrabyte-11ty-template", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@11ty/eleventy": "^3.1.1" + } + }, + "node_modules/@11ty/dependency-tree": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-4.0.0.tgz", + "integrity": "sha512-PTOnwM8Xt+GdJmwRKg4pZ8EKAgGoK7pedZBfNSOChXu8MYk2FdEsxdJYecX4t62owpGw3xK60q9TQv/5JI59jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@11ty/eleventy-utils": "^2.0.1" + } + }, + "node_modules/@11ty/dependency-tree-esm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree-esm/-/dependency-tree-esm-2.0.0.tgz", + "integrity": "sha512-+4ySOON4aEAiyAGuH6XQJtxpGSpo6nibfG01krgix00sqjhman2+UaDUopq6Ksv8/jBB3hqkhsHe3fDE4z8rbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@11ty/eleventy-utils": "^2.0.1", + "acorn": "^8.14.0", + "dependency-graph": "^1.0.0", + "normalize-path": "^3.0.0" + } + }, + "node_modules/@11ty/eleventy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.1.tgz", + "integrity": "sha512-nsMCW44WSYzpi6JSQ1ar/wlotj/2cxuP4AABX5Dxqwol3IQ3SkEMgcAugP1t1mthv5I0kIB9lql1Jv/lhUHIkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@11ty/dependency-tree": "^4.0.0", + "@11ty/dependency-tree-esm": "^2.0.0", + "@11ty/eleventy-dev-server": "^2.0.8", + "@11ty/eleventy-plugin-bundle": "^3.0.6", + "@11ty/eleventy-utils": "^2.0.7", + "@11ty/lodash-custom": "^4.17.21", + "@11ty/posthtml-urls": "^1.0.1", + "@11ty/recursive-copy": "^4.0.1", + "@sindresorhus/slugify": "^2.2.1", + "bcp-47-normalize": "^2.3.0", + "chokidar": "^3.6.0", + "debug": "^4.4.1", + "dependency-graph": "^1.0.0", + "entities": "^6.0.0", + "filesize": "^10.1.6", + "gray-matter": "^4.0.3", + "iso-639-1": "^3.1.5", + "js-yaml": "^4.1.0", + "kleur": "^4.1.5", + "liquidjs": "^10.21.1", + "luxon": "^3.6.1", + "markdown-it": "^14.1.0", + "minimist": "^1.2.8", + "moo": "^0.5.2", + "node-retrieve-globals": "^6.0.1", + "nunjucks": "^3.2.4", + "picomatch": "^4.0.2", + "please-upgrade-node": "^3.2.0", + "posthtml": "^0.16.6", + "posthtml-match-helper": "^2.0.3", + "semver": "^7.7.2", + "slugify": "^1.6.6", + "tinyglobby": "^0.2.14" + }, + "bin": { + "eleventy": "cmd.cjs" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-dev-server": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-dev-server/-/eleventy-dev-server-2.0.8.tgz", + "integrity": "sha512-15oC5M1DQlCaOMUq4limKRYmWiGecDaGwryr7fTE/oM9Ix8siqMvWi+I8VjsfrGr+iViDvWcH/TVI6D12d93mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@11ty/eleventy-utils": "^2.0.1", + "chokidar": "^3.6.0", + "debug": "^4.4.0", + "finalhandler": "^1.3.1", + "mime": "^3.0.0", + "minimist": "^1.2.8", + "morphdom": "^2.7.4", + "please-upgrade-node": "^3.2.0", + "send": "^1.1.0", + "ssri": "^11.0.0", + "urlpattern-polyfill": "^10.0.0", + "ws": "^8.18.1" + }, + "bin": { + "eleventy-dev-server": "cmd.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-plugin-bundle": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-bundle/-/eleventy-plugin-bundle-3.0.6.tgz", + "integrity": "sha512-wlEIMa1SEe6HE6ZyREEnPQiTw72337a2MPkyn0D1IzrqHrKU9euB17mv27LnnnyKvMJamCCqtU0985F5yyDL8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@11ty/eleventy-utils": "^2.0.2", + "debug": "^4.4.0", + "posthtml-match-helper": "^2.0.3" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/eleventy-utils": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-2.0.7.tgz", + "integrity": "sha512-6QE+duqSQ0GY9rENXYb4iPR4AYGdrFpqnmi59tFp9VrleOl0QSh8VlBr2yd6dlhkdtj7904poZW5PvGr9cMiJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/lodash-custom": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@11ty/lodash-custom/-/lodash-custom-4.17.21.tgz", + "integrity": "sha512-Mqt6im1xpb1Ykn3nbcCovWXK3ggywRJa+IXIdoz4wIIK+cvozADH63lexcuPpGS/gJ6/m2JxyyXDyupkMr5DHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/11ty" + } + }, + "node_modules/@11ty/posthtml-urls": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.1.tgz", + "integrity": "sha512-6EFN/yYSxC/OzYXpq4gXDyDMlX/W+2MgCvvoxf11X1z76bqkqFJ8eep5RiBWfGT5j0323a1pwpelcJJdR46MCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "evaluate-value": "^2.0.0", + "http-equiv-refresh": "^2.0.1", + "list-to-array": "^1.1.0", + "parse-srcset": "^1.0.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@11ty/recursive-copy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.1.tgz", + "integrity": "sha512-Zsg1xgfdVTMKNPj9o4FZeYa73dFZRX856CL4LsmqPMvDr0TuIK4cH9CVWJyf0OkNmM8GmlibGX18fF0B75Rn1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "errno": "^1.0.0", + "junk": "^3.1.0", + "maximatch": "^0.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sindresorhus/slugify": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz", + "integrity": "sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/transliterate": "^1.0.0", + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/transliterate": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz", + "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bcp-47": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", + "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-normalize": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bcp-47-normalize/-/bcp-47-normalize-2.3.0.tgz", + "integrity": "sha512-8I/wfzqQvttUFz7HVJgIZ7+dj3vUaIyIxYXaTRP1YWoSDfzt6TUmxaKZeuXR62qBmYr+nvuWINFRl6pZ5DlN4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "bcp-47": "^2.0.0", + "bcp-47-match": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/errno/-/errno-1.0.0.tgz", + "integrity": "sha512-3zV5mFS1E8/1bPxt/B0xxzI1snsg3uSCIh6Zo1qKg6iMw93hzPANk9oBFzSFBFrwuVoQuE3rLoouAUfwOAj1wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esm-import-transformer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/esm-import-transformer/-/esm-import-transformer-3.0.3.tgz", + "integrity": "sha512-Wj9kBIA9vKZRYAQzhe229M7wmWb2f3vTu86CkszZUy2/iiVCYljXm/EkwJtWKc0vup30WHhxbm3rpkysBKczxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.2" + } + }, + "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, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/evaluate-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/evaluate-value/-/evaluate-value-2.0.0.tgz", + "integrity": "sha512-VonfiuDJc0z4sOO7W0Pd130VLsXN6vmBWZlrog1mCb/o7o/Nl5Lr25+Kj/nkCCAhG+zqeeGjxhkK9oHpkgTHhQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/filesize": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", + "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 10.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-equiv-refresh": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-2.0.1.tgz", + "integrity": "sha512-XJpDL/MLkV3dKwLzHwr2dY05dYNfBNlyPu4STQ8WvKCFdc6vC5tPXuq28of663+gHVg03C+16pHHs/+FmmDjcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-json": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", + "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/iso-639-1": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-3.1.5.tgz", + "integrity": "sha512-gXkz5+KN7HrG0Q5UGqSMO2qB9AsbEeyLP54kF1YrMsIxmu+g4BdB7rflReZTSTZGpfj8wywu6pfPBCylPIzGQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/liquidjs": { + "version": "10.21.1", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.21.1.tgz", + "integrity": "sha512-NZXmCwv3RG5nire3fmIn9HsOyJX3vo+ptp0yaXUHAMzSNBhx74Hm+dAGJvscUA6lNqbLuYfXgNavRQ9UbUJhQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^10.0.0" + }, + "bin": { + "liquid": "bin/liquid.js", + "liquidjs": "bin/liquid.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/liquidjs" + } + }, + "node_modules/list-to-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz", + "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/luxon": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz", + "integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/maximatch": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", + "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/moo": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/morphdom": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.5.tgz", + "integrity": "sha512-z6bfWFMra7kBqDjQGHud1LSXtq5JJC060viEkQFMBX6baIecpkNr2Ywrn2OQfWP3rXiNFQRPoFjD8/TvJcWcDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-retrieve-globals": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/node-retrieve-globals/-/node-retrieve-globals-6.0.1.tgz", + "integrity": "sha512-j0DeFuZ/Wg3VlklfbxUgZF/mdHMTEiEipBb3q0SpMMbHaV3AVfoUQF8UGxh1s/yjqO0TgRZd4Pi/x2yRqoQ4Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.1", + "acorn-walk": "^8.3.4", + "esm-import-transformer": "^3.0.3" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parse-srcset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/posthtml": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", + "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "posthtml-parser": "^0.11.0", + "posthtml-render": "^3.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/posthtml-match-helper": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/posthtml-match-helper/-/posthtml-match-helper-2.0.3.tgz", + "integrity": "sha512-p9oJgTdMF2dyd7WE54QI1LvpBIkNkbSiiECKezNnDVYhGhD1AaOnAkw0Uh0y5TW+OHO8iBdSqnd8Wkpb6iUqmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "posthtml": "^0.16.6" + } + }, + "node_modules/posthtml-parser": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", + "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^7.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/posthtml-render": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", + "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-json": "^2.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/ssri": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-11.0.0.tgz", + "integrity": "sha512-aZpUoMN/Jj2MqA4vMCeiKGnc/8SuSyHbGSBdgFbZxP8OJGF/lFkIuElzPxsN0q8TQQ+prw3P4EDfB3TBHHgfXw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", + "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ws": { + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ae0cdb9 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "canapi-website", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "build": "eleventy", + "start": "eleventy --serve" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "devDependencies": { + "@11ty/eleventy": "^3.1.1" + } +} diff --git a/site.webmanifest b/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file From b6a20b85bfd512e3cb18ae17a1384e96c24a6faa Mon Sep 17 00:00:00 2001 From: sharper Date: Fri, 13 Jun 2025 17:38:12 -0500 Subject: [PATCH 005/126] feat: add website template assets --- .github/workflows/main.yml | 33 +++++++++++++++++++++++++++++++++ _data/site.json | 7 +++++++ css/site-styles.css | 10 ++++++++++ favicon-32x32.png | Bin 0 -> 702 bytes favicon.ico | Bin 0 -> 15406 bytes img/meta/og-image.png | Bin 0 -> 16008 bytes js/scripts.js | 7 +++++++ 7 files changed, 57 insertions(+) create mode 100644 .github/workflows/main.yml create mode 100644 _data/site.json create mode 100644 css/site-styles.css create mode 100644 favicon-32x32.png create mode 100644 favicon.ico create mode 100644 img/meta/og-image.png create mode 100644 js/scripts.js diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..a6155ad --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,33 @@ +on: + push: + branches: + - main +name: Build and deploy website (prod) +jobs: + deploy_job: + name: Deploy + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v2 + with: + node-version: '23' + + - name: Install dependencies + run: npm install + + - name: Build site + run: npx eleventy + + - name: Deploy file(s) + uses: wlixcc/SFTP-Deploy-Action@v1.2.4 + with: + server: ${{ secrets.sftp_server }} + username: ${{ secrets.sftp_username }} + password: ${{ secrets.sftp_password }} + port: 22 + local_path: './_site/*' + remote_path: ${{ secrets.sftp_remote_path_prod }} \ No newline at end of file diff --git a/_data/site.json b/_data/site.json new file mode 100644 index 0000000..7199a7c --- /dev/null +++ b/_data/site.json @@ -0,0 +1,7 @@ +{ + "title": "Website Title", + "url": "https://terrabyte.eco", + "author": "Terrabyte", + "language": "en-US", + "description": "Terrabyte is green tech company based in Omaha, NE." +} \ No newline at end of file diff --git a/css/site-styles.css b/css/site-styles.css new file mode 100644 index 0000000..281712c --- /dev/null +++ b/css/site-styles.css @@ -0,0 +1,10 @@ +/* +++++++++++++++++++++++++++++++++++++++++++ */ + +/* layout */ + +/* responsive */ +@media only screen and (max-width: 600px){ + body{ + /* */ + } +} \ No newline at end of file diff --git a/favicon-32x32.png b/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..2358ed407240d279669e3a239aad6be77fa7a608 GIT binary patch literal 702 zcmV;v0zv(WP)Px%cu7P-R9HvtmrZEXU>L{$Pns@O=O3U{7;ZRF z5N)c$z{$GV3VKqnL#I$&Xd^g0>7m`k;bkC-Lxwu^u+DXD@=E#v+t`w<6?(~g%Ez03 ze(yie`#gCFCWrXJ<5U%)#YSwO_6TE&EV`vn+VR=3-bT*OHy5R7fzRaj{jMR&A`{<*p077a1AOY7(A~|sEH2&s) zV0rnMcxG}@yWTX`T@R&hKVQck;5hacfV~tC;bdS~tPUXMA0om)N#u{{j_=hIY<|)A zn?QStfr?vlM5J>@wJ?5-Rbxw>V5 zP`d3PfqetOl~zBWrTno$x1?KUJ>vsTkn$0Lv-nb`FfM;YJ|FwO5yYkr)Eq#gt?4Jw z0JI>)?wu(Bjg88dChY`irClgbR3Bx71Bl57iMD(up zFxhRhAabl0G6Ar}*YU22b5*uxg_`3e5elAr`5U<^bPHI41w((c}3gT)uM#1{*--5;nxsO@a4 z7^5#H@}P1aFi9`~EFIAwDHf`4L>^hsx?A^V4ce~qG z?k1Dz%$+mmo0)UYoHH|(qy^F^n*3=?s0KY}{wX>;4%#Rs zkI}U`pjK}NZIn_#lRwW)ElHp|k2LX8ge{dATgaHSaL*UdE%T|aNx$m)){5R^bp8PR zcg1#~y*uaWF<#8yFG?hMOT_QfT(|w2Yn0|g{Km`fp^iPVx!2hVUdQu5SUyQ>(5kwc zc%7K%OHb>S4}QWkuh$RwNq#*BnaQphR%Nm?Wk?lBWS{c=$yeA)#R$IUi3GirY7DlK_t_Gv+z1`;QVM9US6lk6?GdNV zCRc{pF3kNnpMT2TkzgaIg&l0o?BqLtoUSde_k~@baQ>9T9(};S z*~#k+wg&vBlg9o>jd94*PavNLd~b3Ln1iXe`dn-5@TRu2&7UyL=KK?Xl0T2$`E$}5 z*pff&e|gED$sE|*|1`Oq`pDn>89{)tWVb_}+W3IVp`0zvE_m7Cd zia++f@wQM!-tiaVu8Ra4z(4!=QDe zY%6ejHeDC*u|W&I!LJ{}oUxaT`?F zpId+DX%R1UVG2G(lX9iKyw*6pw*JzQ6n!KeZSH+>E!iEfDz`!hrUX5R`cGFsQCRe` z`16Gn{06&ei*Hm~fV25OQ}BmtpS0Ca4vi5%o8S-Lu-g@E4(w%1%Gj7XI6Jsrcn<&1!v$?`pSiv-XI&9suqh5j)D$h{g7p z(PXMa?2C61@^s1=RQZ%Y^z8kaXzhMuc<1AebTraCB@_Jmj*)jCvD@c?(^ZcGdn5(F zCg1Yntw*MJPj-1VTxBJQ8BdyE|9gkQUT0C3_Kj6KUKHyh=6wVB@lH$dqc!;iot>tm zwOb#`FQorg z4F92!`2EiLgQeIx^BB!GqlplNd7Zh6|exH^53)A}} zgH5@Ig8P)qU0Y-6Qg^v1j{8r`<=)=Pt(0(A*M^vDcJ7Y`+voNDUF~JI8gcLilUO)$ zkDbf?Bks4qFUI{T-CyIbv7O#5r5i&I_$MG!2a9okO>#|dAAr3dX=dIJsID)I{RRT@ wa4Ftx9KaaxeuLS6zoE&$<4yIsm@eagJVbpjMw!-ozP_I+#{4)u=Kc))3uV69hyVZp literal 0 HcmV?d00001 diff --git a/img/meta/og-image.png b/img/meta/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf10a2448667801dc332eb37a8baaaa8f377b49 GIT binary patch literal 16008 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 e!EHZ(|1}4cq++7q6TcibF0LDy8x|WlzW5( Date: Fri, 13 Jun 2025 17:38:25 -0500 Subject: [PATCH 006/126] feat: add nunjucks templates --- _includes/footer.njk | 0 _includes/header.njk | 0 _includes/layouts/base.njk | 100 +++++++++++++++++++++++++++++++++++++ index.njk | 7 +++ 4 files changed, 107 insertions(+) create mode 100644 _includes/footer.njk create mode 100644 _includes/header.njk create mode 100644 _includes/layouts/base.njk create mode 100644 index.njk diff --git a/_includes/footer.njk b/_includes/footer.njk new file mode 100644 index 0000000..e69de29 diff --git a/_includes/header.njk b/_includes/header.njk new file mode 100644 index 0000000..e69de29 diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk new file mode 100644 index 0000000..b4eab49 --- /dev/null +++ b/_includes/layouts/base.njk @@ -0,0 +1,100 @@ + + + + + + + + + + {% if noIndex %} + + {% endif %} + + + + + {{ site.title }} + {% if subtitle %} + : {{ subtitle }} + {% endif %} + + + + + + + {# Open Graph meta tags #} + + + + + + + {# Favicon links #} + + + + + + + + + + + + + + {# #} + + + {# #} + + + + {# #} + + + {# #} + + + + + {# conditional styles #} + {% if testPage %} + + {% else %} + {# #} + {% endif %} + + + + + + + + + + {# + #} + + + + {% include "header.njk" %} + {#
#} +

{{ title }}

+ {#
#} +
+ {{ content | safe }} +
+ {% include "footer.njk" %} + + + \ No newline at end of file diff --git a/index.njk b/index.njk new file mode 100644 index 0000000..32fa11c --- /dev/null +++ b/index.njk @@ -0,0 +1,7 @@ +--- +subtitle: Home +layout: layouts/base.njk +keywords: terrabyte, software, green, tech, technology, omaha, nebraska, startup, midwest, business, environmental, climate, climate change +--- + +

Hello World!

\ No newline at end of file From d4f49c07df748bd10adda68ef99bb75f6401b27d Mon Sep 17 00:00:00 2001 From: sharper Date: Fri, 13 Jun 2025 17:58:51 -0500 Subject: [PATCH 007/126] feat: update process docs --- README.md | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- package.json | 2 +- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3fc8485..f9ec9e2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,57 @@ The purpose of this project is to make it easy to get started when building a Terrabyte website using 11ty. [11ty](https://www.11ty.dev/) is a static-site generator that makes the website build process more efficient while leveraging components. For more information on using 11ty, please visit their [docs](https://www.11ty.dev/docs/). +**NOTE:** Creating a website with 11ty requires Node.js and npm on your machine. + ## Process -[DigitalOcean](https://digitalocean.com) has a great [guide](https://www.digitalocean.com/community/tutorials/how-to-create-and-deploy-your-first-eleventy-website#step-2-choosing-a-templating-language) on building your first 11ty website. This guide will use their steps, but cater the process to building a Terrabyte website. +DigitalOcean has a great [guide](https://www.digitalocean.com/community/tutorials/how-to-create-and-deploy-your-first-eleventy-website#step-2-choosing-a-templating-language) on building your first 11ty website. This guide will use their steps, but cater the process to building a Terrabyte website using the files included in this repo. + +### 1. Create repo & checkout + +Create a project repository in GitHub as per-norm. Initialize within GitHub by adding a README, and check it out to your local device through the GitHub CLI. + +### 2. Initialize project + +Within the repo's root folder, run the following commands to create a new Node.js project... + +``` +npm init -y +``` + +...and install 11ty as a dependency. + +``` +npm install -D @11ty/eleventy +``` + +### 3. package.json + +In the created `package.json` file, replace the existing `scripts{}` object with the following `scripts{}` object: + +``` +... + "scripts": { + "build": "eleventy", + "start": "eleventy --serve" + }, +... +``` + +After saving the `package.json` file, run the following command to build the project (we'll add the website content in the next step). + +``` +npm run build +``` + +### 4. Drop in content + +From here, you should be able to copy the content within this template project into your new repo. + +Caveats that _should not_ be copied include: + +- `_site`: This is the web-ready content rendered by the 11ty build process. It will be rendered in your new project as well. +- `node_modules`: This is a folder containing node-specific files. These won't be committed in GitHub nor should they be copied from project to project (use npm for this). +- `package.json` and `package-lock.json`: You just changed the `package.json` file, no need to overwrite it! +- `README.md`: Your new project requires it's own README :) diff --git a/package.json b/package.json index ae0cdb9..0b32663 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "canapi-website", + "name": "terrabyte-11ty-template", "version": "1.0.0", "main": "index.js", "scripts": { From 7be76fd1894bd6a8cfb1db61b00715c4b48a27f3 Mon Sep 17 00:00:00 2001 From: sharper Date: Mon, 16 Jun 2025 14:26:14 -0500 Subject: [PATCH 008/126] feat: add analytics, Aurum; refactor if statements to remove unwanted spaces --- _includes/layouts/base.njk | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index b4eab49..7a4238a 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -14,28 +14,17 @@ - {{ site.title }} - {% if subtitle %} - : {{ subtitle }} - {% endif %} - + {{ site.title }}{% if subtitle %}: {{ subtitle }}{% endif %} {# Open Graph meta tags #} - + - + {# Favicon links #} @@ -58,10 +47,17 @@ {# #} + + + {# currently does not exist; doesn't seem needed as all products have different styles #} + {# #} + {# should not be used; leverage aurum framework #} {# #} + + {# #} {# #} @@ -85,6 +81,13 @@ {# #} + + + + + + + {% include "header.njk" %} From fe54252fde7e188f96ca7a62db229e2077941429 Mon Sep 17 00:00:00 2001 From: sharper Date: Mon, 16 Jun 2025 14:57:21 -0500 Subject: [PATCH 009/126] feat: add dev deploy proc, other shared components --- .github/workflows/dev.yml | 33 +++++++++++++++++++++++++++++++++ _includes/layouts/base.njk | 14 ++++++++++++-- _includes/noscript-banner.njk | 5 +++++ _includes/svgs.njk | 11 +++++++++++ css/site-styles.css | 6 ++++++ 5 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/dev.yml create mode 100644 _includes/noscript-banner.njk create mode 100644 _includes/svgs.njk diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml new file mode 100644 index 0000000..2c26667 --- /dev/null +++ b/.github/workflows/dev.yml @@ -0,0 +1,33 @@ +on: + push: + branches: + - dev +name: Build and deploy website (dev) +jobs: + deploy_job: + name: Deploy + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Set up Node.js + uses: actions/setup-node@v2 + with: + node-version: '23' + + - name: Install dependencies + run: npm install + + - name: Build site + run: npx eleventy + + - name: Deploy file(s) + uses: wlixcc/SFTP-Deploy-Action@v1.2.4 + with: + server: ${{ secrets.sftp_server }} + username: ${{ secrets.sftp_username }} + password: ${{ secrets.sftp_password }} + port: 22 + local_path: './_site/*' + remote_path: ${{ secrets.sftp_remote_path_dev }} \ No newline at end of file diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 7a4238a..51b48d1 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -20,6 +20,9 @@ + {# if applicable/desired #} + + {# Open Graph meta tags #} @@ -50,8 +53,7 @@ - {# currently does not exist; doesn't seem needed as all products have different styles #} - {# #} + {# should not be used; leverage aurum framework #} {# #} @@ -90,6 +92,14 @@ + {# svg container component #} + {% include "svgs.njk" %} + + {# noscript banner component #} + {% include "noscript-banner.njk" %} + + + {% include "header.njk" %} {#
#}

{{ title }}

diff --git a/_includes/noscript-banner.njk b/_includes/noscript-banner.njk new file mode 100644 index 0000000..6bc99f3 --- /dev/null +++ b/_includes/noscript-banner.njk @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/_includes/svgs.njk b/_includes/svgs.njk new file mode 100644 index 0000000..078ccbc --- /dev/null +++ b/_includes/svgs.njk @@ -0,0 +1,11 @@ + + + {# template for icons #} + + + + + + + + \ No newline at end of file diff --git a/css/site-styles.css b/css/site-styles.css index 281712c..113a788 100644 --- a/css/site-styles.css +++ b/css/site-styles.css @@ -1,5 +1,11 @@ /* +++++++++++++++++++++++++++++++++++++++++++ */ +/* css variables */ +:root{ + --background: #ffffff; + --foreground: #333333; +} + /* layout */ /* responsive */ From 22d5e02dd3097f70c75b1c38a6f46690c4b1fc4c Mon Sep 17 00:00:00 2001 From: sharper Date: Mon, 16 Jun 2025 15:01:53 -0500 Subject: [PATCH 010/126] fix: minor formatting --- _includes/layouts/base.njk | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 51b48d1..4258253 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -54,13 +54,15 @@ + {# should not be used; leverage aurum framework #} {# #} - {# #} - {# #} + + + {# #} @@ -80,13 +82,11 @@ - {# - #} + - From 0cdc730bce2994d782543793791b78244d851b0b Mon Sep 17 00:00:00 2001 From: sharper Date: Mon, 16 Jun 2025 15:12:49 -0500 Subject: [PATCH 011/126] feat: include accessibility table of contents component (placeholder) --- _includes/layouts/base.njk | 3 +++ _includes/sr-toc.njk | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 _includes/sr-toc.njk diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 4258253..805f4e3 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -95,6 +95,9 @@ {# svg container component #} {% include "svgs.njk" %} + {# accessibility/screen reader TOC component #} + {% include "sr-toc.njk" %} + {# noscript banner component #} {% include "noscript-banner.njk" %} diff --git a/_includes/sr-toc.njk b/_includes/sr-toc.njk new file mode 100644 index 0000000..7b99f49 --- /dev/null +++ b/_includes/sr-toc.njk @@ -0,0 +1,5 @@ +{# component for building the table of contents for each page (used by screen readers) #} + +{# psuedo-code: #} +{# 1. take the sections of the page #} +{# 2. make list item for each section #} \ No newline at end of file From 709b9b0064e2221d4b14732ef05ae16e25e161b9 Mon Sep 17 00:00:00 2001 From: sharper Date: Mon, 16 Jun 2025 17:27:59 -0500 Subject: [PATCH 012/126] update reference to aurum framework --- _includes/layouts/base.njk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 805f4e3..67ab04d 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -51,7 +51,7 @@ - + From 873e5a701e73492370bdee59b322682485c12e3d Mon Sep 17 00:00:00 2001 From: sharper Date: Tue, 17 Jun 2025 19:02:57 -0500 Subject: [PATCH 013/126] feat: add content for SEO --- .eleventy.js | 2 ++ _data/site.json | 1 + _includes/layouts/base.njk | 22 +++++++++++++++++++--- robots.txt | 3 +++ sitemap.xml | 7 +++++++ 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 robots.txt create mode 100644 sitemap.xml diff --git a/.eleventy.js b/.eleventy.js index 610980a..2f20d29 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -2,6 +2,8 @@ module.exports = function (eleventyConfig) { // copy site data eleventyConfig.addPassthroughCopy('htaccess.txt'); eleventyConfig.addPassthroughCopy('.htaccess'); + eleventyConfig.addPassthroughCopy('robots.txt'); + eleventyConfig.addPassthroughCopy('sitemap.xml'); // copy directories to the output eleventyConfig.addPassthroughCopy('css'); eleventyConfig.addPassthroughCopy('js'); diff --git a/_data/site.json b/_data/site.json index 7199a7c..6398505 100644 --- a/_data/site.json +++ b/_data/site.json @@ -1,4 +1,5 @@ { + "name": "Project Name", "title": "Website Title", "url": "https://terrabyte.eco", "author": "Terrabyte", diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 67ab04d..f3ffdf0 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -16,7 +16,7 @@ {{ site.title }}{% if subtitle %}: {{ subtitle }}{% endif %} - + @@ -49,7 +49,6 @@ {# #} - @@ -78,6 +77,18 @@ + + + @@ -85,11 +96,16 @@ - + + + + + + {# svg container component #} diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..121cb5c --- /dev/null +++ b/robots.txt @@ -0,0 +1,3 @@ +User-agent: * +Disallow: +Sitemap: https://THISDOMAIN.com/sitemap.xml \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..2d2ccea --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,7 @@ + + + + https://THISDOMAIN.com + 1.0 + + From 4a42f800fdd9434bf5e0b26631577640f8a7172d Mon Sep 17 00:00:00 2001 From: sharper Date: Tue, 17 Jun 2025 23:50:47 -0500 Subject: [PATCH 014/126] feat: add standardized code comments; splash design to head section --- _data/site.json | 2 +- _includes/banners.njk | 10 ++++++++++ _includes/inspector-splash.njk | 6 ++++++ _includes/layouts/base.njk | 36 +++++++++++++++++++++------------- _includes/noscript-banner.njk | 5 ----- _includes/svgs.njk | 6 +++++- index.njk | 2 +- js/scripts.js | 3 ++- 8 files changed, 47 insertions(+), 23 deletions(-) create mode 100644 _includes/banners.njk create mode 100644 _includes/inspector-splash.njk delete mode 100644 _includes/noscript-banner.njk diff --git a/_data/site.json b/_data/site.json index 6398505..5662a78 100644 --- a/_data/site.json +++ b/_data/site.json @@ -1,5 +1,5 @@ { - "name": "Project Name", + "project": "Project Name", "title": "Website Title", "url": "https://terrabyte.eco", "author": "Terrabyte", diff --git a/_includes/banners.njk b/_includes/banners.njk new file mode 100644 index 0000000..49993dc --- /dev/null +++ b/_includes/banners.njk @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/_includes/inspector-splash.njk b/_includes/inspector-splash.njk new file mode 100644 index 0000000..f332d03 --- /dev/null +++ b/_includes/inspector-splash.njk @@ -0,0 +1,6 @@ + + + + + + diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index f3ffdf0..6d04a26 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -2,11 +2,14 @@ +{% include "inspector-splash.njk" %} + - + + {# add variable to nunjucks templates that shouldn't be indexed in frontmatter #} {% if noIndex %} {% endif %} @@ -20,7 +23,7 @@ - {# if applicable/desired #} + {# if applicable/desired (default: TB green) #} {# Open Graph meta tags #} @@ -30,13 +33,12 @@ - {# Favicon links #} + {# favicons #} - @@ -51,12 +53,10 @@ + - {# should not be used; leverage aurum framework #} - {# #} - {# #} @@ -82,7 +82,7 @@ { "@context": "https://schema.org", "@type": "Thing", - "name": "{{ site.name }}", + "name": "{{ site.project }}", "url": "{{ site.url }}", "logo": "https://THISDOMAIN.com/logo.png", "description": "{% if subdescription %}{{ subdescription }}{% else %}{{ site.description }}{% endif %}" @@ -105,24 +105,32 @@ - + +{# ########## #} +{# dependencies #} +{# ########## #} + {# svg container component #} {% include "svgs.njk" %} +{# ########## #} +{# sys ui #} +{# ########## #} + {# accessibility/screen reader TOC component #} {% include "sr-toc.njk" %} {# noscript banner component #} - {% include "noscript-banner.njk" %} + {% include "banners.njk" %} - +{# ########## #} +{# page begins #} +{# ########## #} + {% include "header.njk" %} - {#
#} -

{{ title }}

- {#
#}
{{ content | safe }}
diff --git a/_includes/noscript-banner.njk b/_includes/noscript-banner.njk deleted file mode 100644 index 6bc99f3..0000000 --- a/_includes/noscript-banner.njk +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/_includes/svgs.njk b/_includes/svgs.njk index 078ccbc..5b79552 100644 --- a/_includes/svgs.njk +++ b/_includes/svgs.njk @@ -3,9 +3,13 @@ {# template for icons #} + + + + + - \ No newline at end of file diff --git a/index.njk b/index.njk index 32fa11c..b59868a 100644 --- a/index.njk +++ b/index.njk @@ -4,4 +4,4 @@ layout: layouts/base.njk keywords: terrabyte, software, green, tech, technology, omaha, nebraska, startup, midwest, business, environmental, climate, climate change --- -

Hello World!

\ No newline at end of file +

505 error

\ No newline at end of file diff --git a/js/scripts.js b/js/scripts.js index a30432e..503a8e6 100644 --- a/js/scripts.js +++ b/js/scripts.js @@ -2,6 +2,7 @@ window.addEventListener("load", function(){ console.log("{{ site.title }} scripts.js loaded"); -/////////////// + // Add a class to the body element to indicate that the page has loaded + document.body.classList.add("loaded"); }, false); \ No newline at end of file From 7bd2370aa2770884debb8b9fa6d7f063b742ce63 Mon Sep 17 00:00:00 2001 From: sharper Date: Fri, 20 Jun 2025 13:58:13 -0500 Subject: [PATCH 015/126] fix: minor additions of comments and planned inclusions --- _includes/layouts/base.njk | 5 ++++- js/scripts.js | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 6d04a26..969b3b7 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -93,7 +93,7 @@ - + @@ -119,6 +119,9 @@ {# sys ui #} {# ########## #} + {# modals (not supported atm...) #} + {# {% include "modals.njk" %} #} + {# accessibility/screen reader TOC component #} {% include "sr-toc.njk" %} diff --git a/js/scripts.js b/js/scripts.js index 503a8e6..24fc4c9 100644 --- a/js/scripts.js +++ b/js/scripts.js @@ -1,6 +1,10 @@ window.addEventListener("load", function(){ - console.log("{{ site.title }} scripts.js loaded"); + // var thisScript = document.querySelector("script[src='./js/scripts.js']"); + // var thisScriptSiteTitle = thisScript.getAttribute("data-site-title"); + + // console.log(thisScript); + console.log(thisScriptSiteTitle + " scripts.js loaded"); // Add a class to the body element to indicate that the page has loaded document.body.classList.add("loaded"); From 93aa8fb9bc2956a86659c7b41ac68bc5a11af3f8 Mon Sep 17 00:00:00 2001 From: sharper Date: Thu, 26 Jun 2025 10:46:14 -0500 Subject: [PATCH 016/126] feat: add commonly used svgs --- _includes/svgs.njk | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/_includes/svgs.njk b/_includes/svgs.njk index 5b79552..fc0f8b0 100644 --- a/_includes/svgs.njk +++ b/_includes/svgs.njk @@ -4,12 +4,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 55f1a64190b71f81386816aac203c0a7ccc93971 Mon Sep 17 00:00:00 2001 From: sharper Date: Thu, 26 Jun 2025 12:57:29 -0500 Subject: [PATCH 017/126] feat: build accessibility TOC per page --- .eleventy.js | 35 ++++ _includes/layouts/base.njk | 6 +- css/site-styles.css | 39 ++++ index.njk | 8 +- js/scripts.js | 2 +- package-lock.json | 390 ++++++++++++++++++++++++++++++++++++- package.json | 3 + 7 files changed, 477 insertions(+), 6 deletions(-) diff --git a/.eleventy.js b/.eleventy.js index 2f20d29..aa0e715 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,3 +1,5 @@ +const cheerio = require("cheerio"); + module.exports = function (eleventyConfig) { // copy site data eleventyConfig.addPassthroughCopy('htaccess.txt'); @@ -20,4 +22,37 @@ module.exports = function (eleventyConfig) { eleventyConfig.addWatchTarget('cards'); eleventyConfig.addWatchTarget('site.webmanifest'); + + // create accessibility table of contents + eleventyConfig.addTransform("injectSrToc", function(content, outputPath) { + if (outputPath && outputPath.endsWith(".html")) { + const $ = cheerio.load(content); + + // Build TOC from sections + const sections = []; + $("section[id]").each((i, elem) => { + const id = $(elem).attr("id"); + const title = id + " section"; + sections.push({ id, title }); + }); + + // Only inject if there are sections + if (sections.length) { + const tocHtml = ` + + `; + // Insert TOC at the start of on the page + $("body").prepend(tocHtml); + return $.html(); + } + } + return content; + }); + }; \ No newline at end of file diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 969b3b7..1a66d84 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -93,7 +93,7 @@ - + @@ -123,7 +123,9 @@ {# {% include "modals.njk" %} #} {# accessibility/screen reader TOC component #} - {% include "sr-toc.njk" %} + {# {% set pageContent = content %} #} + {# {% include "sr-toc.njk" %} #} + {# now handled in .eleventy.js transform #} {# noscript banner component #} {% include "banners.njk" %} diff --git a/css/site-styles.css b/css/site-styles.css index 113a788..a80891b 100644 --- a/css/site-styles.css +++ b/css/site-styles.css @@ -7,6 +7,45 @@ } /* layout */ +/* for shared */ +.sr-only.sr-toc{ + background-color:var(--background); + border: 1px solid var(--foreground); + display:block; + position:fixed; + left:-200px; + top:0px; + width:1px; + height:1px; + overflow:hidden; + transition:width .5s, left .5s; + z-index:1000; + font-size:25px; + padding:0px; + font-samily:inherit; +} +/* show on focus for those with vision impairments */ +.sr-only.sr-toc:focus-within{ + left:0; + width:100%; + max-width:500px; + height:auto; + padding:20px; + clip:unset; +} +.sr-toc h2{ + margin-bottom:20px; +} +.sr-toc ul{ + list-style-type:none; + padding:0px; + margin:0px; +} +.sr-toc a.text-link{ + color:inherit; + display:block; + margin-bottom:10px; +} /* responsive */ @media only screen and (max-width: 600px){ diff --git a/index.njk b/index.njk index b59868a..ce19743 100644 --- a/index.njk +++ b/index.njk @@ -4,4 +4,10 @@ layout: layouts/base.njk keywords: terrabyte, software, green, tech, technology, omaha, nebraska, startup, midwest, business, environmental, climate, climate change --- -

505 error

\ No newline at end of file +
+

505 error

+
+ +
+

non-error

+
\ No newline at end of file diff --git a/js/scripts.js b/js/scripts.js index 24fc4c9..f99c2f4 100644 --- a/js/scripts.js +++ b/js/scripts.js @@ -4,7 +4,7 @@ window.addEventListener("load", function(){ // var thisScriptSiteTitle = thisScript.getAttribute("data-site-title"); // console.log(thisScript); - console.log(thisScriptSiteTitle + " scripts.js loaded"); + console.log("scripts.js loaded"); // Add a class to the body element to indicate that the page has loaded document.body.classList.add("loaded"); diff --git a/package-lock.json b/package-lock.json index 4f78303..5634aff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "terrabyte-11ty-template", "version": "1.0.0", "license": "ISC", + "dependencies": { + "cheerio": "^1.1.0" + }, "devDependencies": { "@11ty/eleventy": "^3.1.1" } @@ -409,6 +412,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -433,6 +442,177 @@ "node": ">=8" } }, + "node_modules/cheerio": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz", + "integrity": "sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^10.0.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.10.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/cheerio-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/cheerio/node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -475,6 +655,89 @@ "dev": true, "license": "MIT" }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/css-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -542,7 +805,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, "funding": [ { "type": "github", @@ -599,11 +861,23 @@ "node": ">= 0.8" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, "node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -914,6 +1188,18 @@ "node": ">= 0.8" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -1288,6 +1574,18 @@ "node": ">=0.10.0" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/nunjucks": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", @@ -1344,6 +1642,58 @@ "dev": true, "license": "MIT" }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1483,6 +1833,12 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -1654,6 +2010,15 @@ "dev": true, "license": "MIT" }, + "node_modules/undici": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz", + "integrity": "sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -1671,6 +2036,27 @@ "dev": true, "license": "MIT" }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/ws": { "version": "8.18.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", diff --git a/package.json b/package.json index 0b32663..9356fa6 100644 --- a/package.json +++ b/package.json @@ -12,5 +12,8 @@ "description": "", "devDependencies": { "@11ty/eleventy": "^3.1.1" + }, + "dependencies": { + "cheerio": "^1.1.0" } } From 02d984e8bb73f0e48246d3def8576b9e91cc4a6c Mon Sep 17 00:00:00 2001 From: sharper Date: Thu, 26 Jun 2025 12:57:52 -0500 Subject: [PATCH 018/126] feat: remove need for separate component --- _includes/sr-toc.njk | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/_includes/sr-toc.njk b/_includes/sr-toc.njk index 7b99f49..f263737 100644 --- a/_includes/sr-toc.njk +++ b/_includes/sr-toc.njk @@ -1,5 +1,13 @@ -{# component for building the table of contents for each page (used by screen readers) #} +{# component for building the table of contents for each page based on sections within the page (used by screen readers) #} -{# psuedo-code: #} -{# 1. take the sections of the page #} -{# 2. make list item for each section #} \ No newline at end of file + \ No newline at end of file From 190e54ee36718d2f0b03d94d393bf51872b66339 Mon Sep 17 00:00:00 2001 From: sharper Date: Thu, 26 Jun 2025 15:21:46 -0500 Subject: [PATCH 019/126] feat: move accessibility table of contents styles to shared org styles --- .eleventy.js | 1 + _includes/layouts/base.njk | 3 ++- _includes/sr-toc.njk | 1 + css/site-styles.css | 41 ++------------------------------------ index.njk | 4 ---- 5 files changed, 6 insertions(+), 44 deletions(-) diff --git a/.eleventy.js b/.eleventy.js index aa0e715..93bdb98 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -23,6 +23,7 @@ module.exports = function (eleventyConfig) { eleventyConfig.addWatchTarget('site.webmanifest'); + // page transforms // create accessibility table of contents eleventyConfig.addTransform("injectSrToc", function(content, outputPath) { if (outputPath && outputPath.endsWith(".html")) { diff --git a/_includes/layouts/base.njk b/_includes/layouts/base.njk index 1a66d84..0aa43ac 100644 --- a/_includes/layouts/base.njk +++ b/_includes/layouts/base.njk @@ -122,10 +122,11 @@ {# modals (not supported atm...) #} {# {% include "modals.njk" %} #} + {# now handled as .eleventy.js transform #} {# accessibility/screen reader TOC component #} {# {% set pageContent = content %} #} {# {% include "sr-toc.njk" %} #} - {# now handled in .eleventy.js transform #} + {# #} {# noscript banner component #} {% include "banners.njk" %} diff --git a/_includes/sr-toc.njk b/_includes/sr-toc.njk index f263737..f0ae5e8 100644 --- a/_includes/sr-toc.njk +++ b/_includes/sr-toc.njk @@ -1,3 +1,4 @@ +{# DEPRECATED COMPONENT #} {# component for building the table of contents for each page based on sections within the page (used by screen readers) #}