diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index aee9b80..6476170 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -7,17 +7,20 @@ "name": "Jekyll", "image": "mcr.microsoft.com/devcontainers/jekyll", "features": { - // The devcontainers/jekyll comes with the wrong Ruby version - "ghcr.io/devcontainers/features/ruby:1": { - "version": "3.3" + // Install rbenv (no Ruby yet); postCreateCommand installs the version from .ruby-version + "ghcr.io/devcontainers/features/ruby:2": { + "version": "none", + "versionManager": "rbenv" }, - // Install latest stable Node (we use for validation scripts after build) - "ghcr.io/devcontainers/features/node:1": { - "version": "lts", - "installYarnUsingApt": false // We use Yarn 4, so we don't want to install Yarn using apt + // Install nvm (no Node yet); postCreateCommand installs the version from .nvmrc + "ghcr.io/devcontainers/features/node:2": { + "version": "none", + "pnpmVersion": "none", // We use Yarn 4 via Corepack + "installYarnUsingApt": false // We use Yarn 4 via Corepack } }, - "postCreateCommand": "/bin/sh -c 'corepack enable && corepack pack && yarn install --immutable'", + // Ruby and Node versions come from .ruby-version and .nvmrc (single source of truth, shared with CI) + "postCreateCommand": "/bin/bash -c 'set -e; rbenv install --skip-existing; rbenv rehash; source \"$NVM_DIR/nvm.sh\"; nvm install; nvm use; npm install -g corepack; corepack enable; corepack prepare yarn@4.18.0 --activate; yarn install --immutable; bundle install'", "customizations": { "vscode": { "extensions": ["html-validate.vscode-html-validate"] diff --git a/.github/workflows/build-test-deploy.yml b/.github/workflows/build-test-deploy.yml index d6defcc..5a025e0 100644 --- a/.github/workflows/build-test-deploy.yml +++ b/.github/workflows/build-test-deploy.yml @@ -23,12 +23,11 @@ jobs: name: Jekyll build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - name: Setup Ruby # See https://www.ruby-lang.org/en/downloads/branches/ uses: ruby/setup-ruby@v1 with: - # Match Ruby version from https://github.com/github/pages-gem/blob/master/.ruby-version - ruby-version: 3.3 # Not needed with a .ruby-version file + ruby-version: .ruby-version # Kept in sync with https://pages.github.com/versions.json bundler-cache: true # runs 'bundle install' and caches installed gems automatically - name: Build site run: bundle exec jekyll build @@ -36,14 +35,17 @@ jobs: # Installing Node + modern Yarn on GitHub Actions requires hack # https://github.com/actions/setup-node/issues/531#issuecomment-2960522861 - name: Install Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v7 with: node-version-file: .nvmrc package-manager-cache: false - name: Enable Corepack - run: corepack enable + run: | + if ! command -v corepack >/dev/null 2>&1; then npm install -g corepack; fi + corepack enable + corepack prepare yarn@4.18.0 --activate - name: Configure dependency cache - uses: actions/setup-node@v5 + uses: actions/setup-node@v7 with: cache: yarn - name: Install dependencies @@ -56,11 +58,11 @@ jobs: SITE_URL: ${{ github.event.repository.name == format('{0}.github.io', github.repository_owner) && format('https://{0}.github.io', github.repository_owner) || format('https://{0}.github.io/{1}', github.repository_owner, github.event.repository.name) }} run: yarn build:sitemap - name: Upload build artifact, ready for GitHub Pages deployment - uses: actions/upload-pages-artifact@v4 + uses: actions/upload-pages-artifact@v5 with: path: build/ - name: Upload build artifact, ready for testing - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: build-artifact path: build/ # the Jekyll build directory @@ -72,31 +74,34 @@ jobs: runs-on: ubuntu-latest needs: [build] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 # Installing Node + modern Yarn on GitHub Actions requires hack # https://github.com/actions/setup-node/issues/531#issuecomment-2960522861 - name: Install Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v7 with: node-version-file: .nvmrc package-manager-cache: false - name: Enable Corepack - run: corepack enable + run: | + if ! command -v corepack >/dev/null 2>&1; then npm install -g corepack; fi + corepack enable + corepack prepare yarn@4.18.0 --activate - name: Configure dependency cache - uses: actions/setup-node@v5 + uses: actions/setup-node@v7 with: cache: yarn - name: Install dependencies run: yarn install --immutable - name: Download build artifact - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v8 with: name: build-artifact path: build/ - name: Restore testing cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v6 with: path: cache/ key: test-cache @@ -105,7 +110,7 @@ jobs: - name: Test suite run: yarn run test - name: Save testing cache - uses: actions/cache/save@v4 + uses: actions/cache/save@v6 if: always() with: path: cache/ @@ -123,4 +128,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/code-lint.yml b/.github/workflows/code-lint.yml index 1b3da2a..5239244 100644 --- a/.github/workflows/code-lint.yml +++ b/.github/workflows/code-lint.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: # Make sure the actual branch is checked out when running on pull requests ref: ${{ github.head_ref }} @@ -20,14 +20,17 @@ jobs: # Installing Node + modern Yarn on GitHub Actions requires hack # https://github.com/actions/setup-node/issues/531#issuecomment-2960522861 - name: Install Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v7 with: node-version-file: .nvmrc package-manager-cache: false - name: Enable Corepack - run: corepack enable + run: | + if ! command -v corepack >/dev/null 2>&1; then npm install -g corepack; fi + corepack enable + corepack prepare yarn@4.18.0 --activate - name: Configure dependency cache - uses: actions/setup-node@v5 + uses: actions/setup-node@v7 with: cache: yarn - name: Install dependencies @@ -42,21 +45,24 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: ref: ${{ github.head_ref }} # Installing Node + modern Yarn on GitHub Actions requires hack # https://github.com/actions/setup-node/issues/531#issuecomment-2960522861 - name: Install Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v7 with: node-version-file: .nvmrc package-manager-cache: false - name: Enable Corepack - run: corepack enable + run: | + if ! command -v corepack >/dev/null 2>&1; then npm install -g corepack; fi + corepack enable + corepack prepare yarn@4.18.0 --activate - name: Configure dependency cache - uses: actions/setup-node@v5 + uses: actions/setup-node@v7 with: cache: yarn - name: Install dependencies diff --git a/.nvmrc b/.nvmrc index b009dfb..4aa0e0a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -lts/* +v26 diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..a0891f5 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.3.4 diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 0000000..1ee9ffa --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,7 @@ +approvedGitRepositories: + - "**" + +# This makes better-sqlite3 work on GitHub Actions +enableScripts: true + +npmMinimalAgeGate: 0 diff --git a/README.md b/README.md index cb4adb5..817a937 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,13 @@ Use VS Code and the [Dev Containers extension](https://marketplace.visualstudio. Or if you do not want VS Code or the Docker setup, install your environment manually: -1. Install Ruby (use version in [build-test-deploy.yml](https://github.com/fulldecent/github-pages-template/blob/main/.github/workflows/build-test-deploy.yml) in "Setup Ruby", (try [rbenv](https://github.com/rbenv/rbenv)) +1. Install Ruby to match GitHub Pages. The version is pinned in [.ruby-version](.ruby-version). On Mac, use [rbenv](https://github.com/rbenv/rbenv), which reads that file automatically: + + ```sh + brew install rbenv + rbenv install # installs the Ruby version from .ruby-version + eval "$(rbenv init -)" # activate rbenv now + ``` 2. Install Jekyll: @@ -107,6 +113,12 @@ Also you can run this to update your environment to match the GitHub Pages (no P bundle update --conservative # "--consersative" ignores updates that GitHub Pages is not using ``` +Keep [.ruby-version](.ruby-version) matching [the Ruby that GitHub Pages runs](https://pages.github.com/versions/) (used by CI, the dev container, and rbenv locally): + +```sh +curl -s https://pages.github.com/versions.json | jq -r .ruby > .ruby-version # Send PR if changed +``` + ## References 1. This website is built based on [best practices documented in github-pages-template](https://github.com/fulldecent/github-pages-template). diff --git a/package.json b/package.json index b6fc038..6290891 100644 --- a/package.json +++ b/package.json @@ -29,14 +29,14 @@ ], "license": "UNLICENSED", "devDependencies": { - "@fulldecent/nice-checkers-plugin": "^1.2.1", - "@shopify/prettier-plugin-liquid": "^1.10.0", - "cheerio": "^1.1.2", + "@fulldecent/nice-checkers-plugin": "^1.3.7", + "@shopify/prettier-plugin-liquid": "^1.11.0", + "cheerio": "^1.2.0", "css": "^3.0.0", - "glob": "^13.0.0", - "html-validate": "^10.4.0", - "markdownlint-cli2": "^0.20.0", - "prettier": "^3.7.4" + "glob": "^13.0.6", + "html-validate": "^11.6.0", + "markdownlint-cli2": "^0.23.2", + "prettier": "^3.9.6" }, "scripts": { "lint": "sh -c 'yarn lint:prettier \"$@\" && yarn lint:markdown \"$@\"' --", @@ -55,7 +55,7 @@ "test:unused-assets": "node test/unused-assets.mjs", "postinstall": "yarn dlx @yarnpkg/sdks vscode" }, - "packageManager": "yarn@4.12.0", + "packageManager": "yarn@4.18.0", "dependencies": { "front-matter": "^4.0.2", "xml2js": "^0.6.2" diff --git a/yarn.lock b/yarn.lock index 1b2a209..c873899 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,44 +2,29 @@ # Manual changes might be lost - proceed with caution! __metadata: - version: 8 + version: 10 cacheKey: 10c0 -"@fulldecent/nice-checkers-plugin@npm:^1.2.1": - version: 1.2.1 - resolution: "@fulldecent/nice-checkers-plugin@npm:1.2.1" +"@fulldecent/nice-checkers-plugin@npm:^1.3.7": + version: 1.3.7 + resolution: "@fulldecent/nice-checkers-plugin@npm:1.3.7" dependencies: - better-sqlite3: "npm:^12.5.0" - cheerio: "npm:^1.1.2" - shell-quote: "npm:^1.8.3" + better-sqlite3: "npm:^12.10.0" + cheerio: "npm:^1.2.0" + shell-quote: "npm:^1.8.4" peerDependencies: - html-validate: ^10.0.0 - checksum: 10c0/fa5d2a12a8d44cbe39fe9da496b372749cba602bb33815a6958dd280c27e4e604e8adc09d0b9440ebd998a65c1514e78d08d52b06230b29182e6cfb2eb19afd3 - languageName: node - linkType: hard - -"@html-validate/stylish@npm:^4.1.0": - version: 4.2.0 - resolution: "@html-validate/stylish@npm:4.2.0" - dependencies: - kleur: "npm:^4.0.0" - checksum: 10c0/dd5ff56c81e21320a6a14fb7d071bcbe522dcc089e2e0db1bade4371ea3e391a37f87cf394403e71553a3e27b338c3535db28902a339f6e05f3677d6e9a8e3a2 - languageName: node - linkType: hard - -"@isaacs/balanced-match@npm:^4.0.1": - version: 4.0.1 - resolution: "@isaacs/balanced-match@npm:4.0.1" - checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 + html-validate: ^10.0.0 || ^11.0.0 + dependenciesMeta: + better-sqlite3: + built: true + checksum: 10c0/f402bfed7b655bbe51dc657a4e14a99eb3e6aa99d871985816495c1a4d93081c3fbe0b36dc9da0f573b897857755fa982251e53b0e8d99dc44b272db2986c103 languageName: node linkType: hard -"@isaacs/brace-expansion@npm:^5.0.0": - version: 5.0.0 - resolution: "@isaacs/brace-expansion@npm:5.0.0" - dependencies: - "@isaacs/balanced-match": "npm:^4.0.1" - checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 +"@html-validate/stylish@npm:^6.0.0": + version: 6.0.0 + resolution: "@html-validate/stylish@npm:6.0.0" + checksum: 10c0/f0bd3b53ead31d7f4e911e399356b6c8760a69e6e54c9f593e8a7acdadbe9427be487ea7be3ab3e0c957a4f910a9a79bc41907772e00ce5199964e9125fd7418 languageName: node linkType: hard @@ -113,36 +98,33 @@ __metadata: languageName: node linkType: hard -"@shopify/liquid-html-parser@npm:^2.9.0": - version: 2.9.0 - resolution: "@shopify/liquid-html-parser@npm:2.9.0" +"@shopify/liquid-html-parser@npm:^2.10.0": + version: 2.10.0 + resolution: "@shopify/liquid-html-parser@npm:2.10.0" dependencies: line-column: "npm:^1.0.2" - ohm-js: "npm:^17.0.0" - checksum: 10c0/1fc783d30a9907b1382b1dc226a74a025d5a0d59003778483643a344ca70b13e774daa01f1cc6b27951c1a73aeb74434208f0571ee77833f876e6ad4aa2fc245 + checksum: 10c0/7a3e2c0b6fbedbc1a64e17777c683bb82140e8dcc56130db718a68cc553985fc62dd3e898a4925879b06176cce2e9277f7db8cd7c636e97fdcff90339fa8a834 languageName: node linkType: hard -"@shopify/prettier-plugin-liquid@npm:^1.10.0": - version: 1.10.0 - resolution: "@shopify/prettier-plugin-liquid@npm:1.10.0" +"@shopify/prettier-plugin-liquid@npm:^1.11.0": + version: 1.11.0 + resolution: "@shopify/prettier-plugin-liquid@npm:1.11.0" dependencies: - "@shopify/liquid-html-parser": "npm:^2.9.0" + "@shopify/liquid-html-parser": "npm:^2.10.0" html-styles: "npm:^1.0.0" peerDependencies: prettier: ^2.0.0 || ^3.0.0 - checksum: 10c0/4b82b98459e95aca058e6371e598976cce6f2c049705f7fd0fcb6efad1c28c58d55eb1237d06b790451dbdf456084baa1df75120fb2a2f98eb6f4a791423db54 + checksum: 10c0/9c99b5d8a408853c136829ed7ae36e299a588597b8012020e729c153ce7b463727b8d6f0d8e8e92a74e36cb52545f32c9bd2ee4275eee824d032d5e92527ffcf languageName: node linkType: hard -"@sidvind/better-ajv-errors@npm:4.0.0": - version: 4.0.0 - resolution: "@sidvind/better-ajv-errors@npm:4.0.0" - dependencies: - kleur: "npm:^4.1.0" +"@sidvind/better-ajv-errors@npm:7.0.0": + version: 7.0.0 + resolution: "@sidvind/better-ajv-errors@npm:7.0.0" peerDependencies: - ajv: ^7.0.0 || ^8.0.0 - checksum: 10c0/ca17a19cccd64d7f3d9805ff9618d53ffdb1253191b45fe3a583950651b3ac47fca05aa9430f6377e93c4e045d6ec19e0aa951c4bddaa51587616ba9e7eaacc5 + ajv: ^8.0.0 + checksum: 10c0/8ac190b8f956c4e19384d80b73eb9f2e0e9f10c9bda95a4e3b1fa2899cbd7967826248f6e01f4fcbcd5fc5e2615dcdf63fe688745027a89d3d66d2c6d9b5fa47 languageName: node linkType: hard @@ -235,6 +217,13 @@ __metadata: languageName: node linkType: hard +"ansi-regex@npm:^6.2.2": + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f + languageName: node + linkType: hard + "ansi-styles@npm:^4.0.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -283,6 +272,13 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: 10c0/07e86102a3eb2ee2a6a1a89164f29d0dbaebd28f2ca3f5ca786f36b8b23d9e417eb3be45a4acf754f837be5ac0a2317de90d3fcb7f4f4dc95720a1f36b26a17b + languageName: node + linkType: hard + "base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" @@ -290,14 +286,14 @@ __metadata: languageName: node linkType: hard -"better-sqlite3@npm:^12.5.0": - version: 12.5.0 - resolution: "better-sqlite3@npm:12.5.0" +"better-sqlite3@npm:^12.10.0": + version: 12.11.1 + resolution: "better-sqlite3@npm:12.11.1" dependencies: bindings: "npm:^1.5.0" node-gyp: "npm:latest" prebuild-install: "npm:^7.1.1" - checksum: 10c0/50016aaa9a9db768907da5b109f12f8bb6f6d9be34d68b5623d901fe038cdac0d81be37aa280c27c8e0604d6c2482584b14f9c40f75ad6aa0baa59278c5f7a6a + checksum: 10c0/162d3fa6c19a68191d09537bd113bd54a636c9fb38b0fc0796f4f270032770695ef35a1bca041a0a0fa9bfa47e20b9e17c94484a3899c31f38881af4d12b7fa5 languageName: node linkType: hard @@ -337,6 +333,15 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^5.0.8": + version: 5.0.9 + resolution: "brace-expansion@npm:5.0.9" + dependencies: + balanced-match: "npm:^4.0.2" + checksum: 10c0/3dea38884a1c3c8b1c9c44a7402a0c76fca460f70cffb3127242b0b4cbf4472019e022ade021eec44838ff19f1dac2625dfd11dd459d7e1e055b0698a8d52fec + languageName: node + linkType: hard + "braces@npm:^3.0.3": version: 3.0.3 resolution: "braces@npm:3.0.3" @@ -411,22 +416,22 @@ __metadata: languageName: node linkType: hard -"cheerio@npm:^1.1.2": - version: 1.1.2 - resolution: "cheerio@npm:1.1.2" +"cheerio@npm:^1.2.0": + version: 1.2.0 + resolution: "cheerio@npm:1.2.0" dependencies: cheerio-select: "npm:^2.1.0" dom-serializer: "npm:^2.0.0" domhandler: "npm:^5.0.3" domutils: "npm:^3.2.2" encoding-sniffer: "npm:^0.2.1" - htmlparser2: "npm:^10.0.0" + htmlparser2: "npm:^10.1.0" parse5: "npm:^7.3.0" parse5-htmlparser2-tree-adapter: "npm:^7.1.0" parse5-parser-stream: "npm:^7.1.2" - undici: "npm:^7.12.0" + undici: "npm:^7.19.0" whatwg-mimetype: "npm:^4.0.0" - checksum: 10c0/2c6d2274666fe122f54fdca457ee76453e1a993b19563acaa23eb565bf7776f0f01e4c3800092f00e84aa13c83a161f0cf000ac0a8332d1d7f2b2387d6ecc5fc + checksum: 10c0/91a566aabfa9962f28056045bb7d92d79c0f8f3abb1fb86a852a9d1760556adddeb01a36b6f08fa7c133282375d387ae450a181a659e76c6a64016c30cc3f611 languageName: node linkType: hard @@ -474,7 +479,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.6": +"cross-spawn@npm:^7.0.0": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -622,7 +627,7 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^3.0.1, domutils@npm:^3.2.1, domutils@npm:^3.2.2": +"domutils@npm:^3.0.1, domutils@npm:^3.2.2": version: 3.2.2 resolution: "domutils@npm:3.2.2" dependencies: @@ -682,7 +687,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.4.0": +"entities@npm:^4.2.0, entities@npm:^4.5.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 @@ -696,6 +701,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^7.0.1": + version: 7.0.1 + resolution: "entities@npm:7.0.1" + checksum: 10c0/b4fb9937bb47ecb00aaaceb9db9cdd1cc0b0fb649c0e843d05cf5dbbd2e9d2df8f98721d8b1b286445689c72af7b54a7242fc2d63ef7c9739037a8c73363e7ca + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -796,16 +808,6 @@ __metadata: languageName: node linkType: hard -"foreground-child@npm:^3.3.1": - version: 3.3.1 - resolution: "foreground-child@npm:3.3.1" - dependencies: - cross-spawn: "npm:^7.0.6" - signal-exit: "npm:^4.0.1" - checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 - languageName: node - linkType: hard - "front-matter@npm:^4.0.2": version: 4.0.2 resolution: "front-matter@npm:4.0.2" @@ -840,10 +842,10 @@ __metadata: languageName: node linkType: hard -"get-east-asian-width@npm:^1.3.0": - version: 1.4.0 - resolution: "get-east-asian-width@npm:1.4.0" - checksum: 10c0/4e481d418e5a32061c36fbb90d1b225a254cc5b2df5f0b25da215dcd335a3c111f0c2023ffda43140727a9cafb62dac41d022da82c08f31083ee89f714ee3b83 +"get-east-asian-width@npm:^1.5.0": + version: 1.6.0 + resolution: "get-east-asian-width@npm:1.6.0" + checksum: 10c0/7e72e9550fd49ca5b246f9af6bb2afc129c96412845ff6556b3274fd44817a381702ca17028efe9866b261a3d44254cbf21e6c90cf05b4b61675630af776d431 languageName: node linkType: hard @@ -879,44 +881,28 @@ __metadata: languageName: node linkType: hard -"glob@npm:^11.0.0": - version: 11.0.3 - resolution: "glob@npm:11.0.3" +"glob@npm:^13.0.6": + version: 13.0.6 + resolution: "glob@npm:13.0.6" dependencies: - foreground-child: "npm:^3.3.1" - jackspeak: "npm:^4.1.1" - minimatch: "npm:^10.0.3" - minipass: "npm:^7.1.2" - package-json-from-dist: "npm:^1.0.0" - path-scurry: "npm:^2.0.0" - bin: - glob: dist/esm/bin.mjs - checksum: 10c0/7d24457549ec2903920dfa3d8e76850e7c02aa709122f0164b240c712f5455c0b457e6f2a1eee39344c6148e39895be8094ae8cfef7ccc3296ed30bce250c661 + minimatch: "npm:^10.2.2" + minipass: "npm:^7.1.3" + path-scurry: "npm:^2.0.2" + checksum: 10c0/269c236f11a9b50357fe7a8c6aadac667e01deb5242b19c84975628f05f4438d8ee1354bb62c5d6c10f37fd59911b54d7799730633a2786660d8c69f1d18120a languageName: node linkType: hard -"glob@npm:^13.0.0": - version: 13.0.0 - resolution: "glob@npm:13.0.0" - dependencies: - minimatch: "npm:^10.1.1" - minipass: "npm:^7.1.2" - path-scurry: "npm:^2.0.0" - checksum: 10c0/8e2f5821f3f7c312dd102e23a15b80c79e0837a9872784293ba2e15ec73b3f3749a49a42a31bfcb4e52c84820a474e92331c2eebf18819d20308f5c33876630a - languageName: node - linkType: hard - -"globby@npm:15.0.0": - version: 15.0.0 - resolution: "globby@npm:15.0.0" +"globby@npm:16.2.2": + version: 16.2.2 + resolution: "globby@npm:16.2.2" dependencies: "@sindresorhus/merge-streams": "npm:^4.0.0" fast-glob: "npm:^3.3.3" ignore: "npm:^7.0.5" - path-type: "npm:^6.0.0" + is-path-inside: "npm:^4.0.0" slash: "npm:^5.1.0" - unicorn-magic: "npm:^0.3.0" - checksum: 10c0/e4107be0579bcdd9642b8dff86aeafeaf62b2b9dd116669ab6e02e0e0c07ada0d972c2db182dee7588b460fe8c8919ddcc6b1cc4db405ca3a2adc9d35fa6eb21 + unicorn-magic: "npm:^0.4.0" + checksum: 10c0/77bbd36a8862b2952ccbb7e411064387c5b274cb0a1466fd335b0bf336f2b7d92e05167799ddcaf8beac571229d9a7d8a4d5ea7446d4a90714cdc32cef2443ed languageName: node linkType: hard @@ -934,27 +920,28 @@ __metadata: languageName: node linkType: hard -"html-validate@npm:^10.4.0": - version: 10.4.0 - resolution: "html-validate@npm:10.4.0" +"html-validate@npm:^11.6.0": + version: 11.6.0 + resolution: "html-validate@npm:11.6.0" dependencies: - "@html-validate/stylish": "npm:^4.1.0" - "@sidvind/better-ajv-errors": "npm:4.0.0" + "@html-validate/stylish": "npm:^6.0.0" + "@sidvind/better-ajv-errors": "npm:7.0.0" ajv: "npm:^8.0.0" - glob: "npm:^11.0.0" kleur: "npm:^4.1.0" - minimist: "npm:^1.2.0" prompts: "npm:^2.0.0" semver: "npm:^7.0.0" peerDependencies: - jest: ^28.1.3 || ^29.0.3 || ^30.0.0 - jest-diff: ^28.1.3 || ^29.0.3 || ^30.0.0 - jest-snapshot: ^28.1.3 || ^29.0.3 || ^30.0.0 - vitest: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.1 + "@jest/globals": ^29.0.3 || ^30.0.0 + "@vitest/expect": ^3.0.0 || ^4.0.1 + jest: ^29.0.3 || ^30.0.0 + jest-snapshot: ^29.0.3 || ^30.0.0 + vitest: ^3.0.0 || ^4.0.1 peerDependenciesMeta: - jest: + "@jest/globals": optional: true - jest-diff: + "@vitest/expect": + optional: true + jest: optional: true jest-snapshot: optional: true @@ -962,19 +949,19 @@ __metadata: optional: true bin: html-validate: bin/html-validate.mjs - checksum: 10c0/5de5d7db94a48d85005058218e269281d786ebd6d1d5abcf41a77bafbed63f7b7e2da8c160f4b557b64756316690d90421164c607f6b88464af54a3caf8f039d + checksum: 10c0/12be26cee9df1233a8f027256b03298189af9bedae49be51a952fed5fa543d9216928f17606cff85f3f9db89f866aee9199c499a23e1397a9d9c55feff0b669a languageName: node linkType: hard -"htmlparser2@npm:^10.0.0": - version: 10.0.0 - resolution: "htmlparser2@npm:10.0.0" +"htmlparser2@npm:^10.1.0": + version: 10.1.0 + resolution: "htmlparser2@npm:10.1.0" dependencies: domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" - domutils: "npm:^3.2.1" - entities: "npm:^6.0.0" - checksum: 10c0/47cfa37e529c86a7ba9a1e0e6f951ad26ef8ca5af898ab6e8916fa02c0264c1453b4a65f28b7b8a7f9d0d29b5a70abead8203bf8b3f07bc69407e85e7d9a68e4 + domutils: "npm:^3.2.2" + entities: "npm:^7.0.1" + checksum: 10c0/36394e29b80cfcc5e78e0fa4d3aa21fdaac3e6778d23e5c933e625c290987cd9a724a2eb0753ab60ed0c69dfaba0ab115f0ee50fb112fd8f0c4d522e7e0089a2 languageName: node linkType: hard @@ -1134,6 +1121,13 @@ __metadata: languageName: node linkType: hard +"is-path-inside@npm:^4.0.0": + version: 4.0.0 + resolution: "is-path-inside@npm:4.0.0" + checksum: 10c0/51188d7e2b1d907a9a5f7c18d99a90b60870b951ed87cf97595d9aaa429d4c010652c3350bcbf31182e7f4b0eab9a1860b43e16729b13cb1a44baaa6cdb64c46 + languageName: node + linkType: hard + "isarray@npm:1.0.0, isarray@npm:^1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -1177,23 +1171,14 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^4.1.1": - version: 4.1.1 - resolution: "jackspeak@npm:4.1.1" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - checksum: 10c0/84ec4f8e21d6514db24737d9caf65361511f75e5e424980eebca4199f400874f45e562ac20fa8aeb1dd20ca2f3f81f0788b6e9c3e64d216a5794fd6f30e0e042 - languageName: node - linkType: hard - -"js-yaml@npm:4.1.1": - version: 4.1.1 - resolution: "js-yaml@npm:4.1.1" +"js-yaml@npm:5.2.2": + version: 5.2.2 + resolution: "js-yaml@npm:5.2.2" dependencies: argparse: "npm:^2.0.1" bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 + js-yaml: bin/js-yaml.mjs + checksum: 10c0/e8ded203b235b3d562818c67bf362122abbcee89e507b62bddcdd3085b2f2dd866071e5e78f8e617d41d1a0c0baa1cec12a8fdec5859c571bf862adf585e2684 languageName: node linkType: hard @@ -1230,6 +1215,13 @@ __metadata: languageName: node linkType: hard +"jsonpointer@npm:5.0.1": + version: 5.0.1 + resolution: "jsonpointer@npm:5.0.1" + checksum: 10c0/89929e58b400fcb96928c0504fcf4fc3f919d81e9543ceb055df125538470ee25290bb4984251e172e6ef8fcc55761eb998c118da763a82051ad89d4cb073fe7 + languageName: node + linkType: hard + "katex@npm:^0.16.0": version: 0.16.19 resolution: "katex@npm:0.16.19" @@ -1248,7 +1240,7 @@ __metadata: languageName: node linkType: hard -"kleur@npm:^4.0.0, kleur@npm:^4.1.0": +"kleur@npm:^4.1.0": version: 4.1.5 resolution: "kleur@npm:4.1.5" checksum: 10c0/e9de6cb49657b6fa70ba2d1448fd3d691a5c4370d8f7bbf1c2f64c24d461270f2117e1b0afe8cb3114f13bbd8e51de158c2a224953960331904e636a5e4c0f2a @@ -1265,12 +1257,12 @@ __metadata: languageName: node linkType: hard -"linkify-it@npm:^5.0.0": - version: 5.0.0 - resolution: "linkify-it@npm:5.0.0" +"linkify-it@npm:^5.0.2": + version: 5.0.2 + resolution: "linkify-it@npm:5.0.2" dependencies: uc.micro: "npm:^2.0.0" - checksum: 10c0/ff4abbcdfa2003472fc3eb4b8e60905ec97718e11e33cca52059919a4c80cc0e0c2a14d23e23d8c00e5402bc5a885cdba8ca053a11483ab3cc8b3c7a52f88e2d + checksum: 10c0/dd70b1735a13d41a2cff0a058ac3771166038f23f6aff004dd53873cf985c64b107902fe0b544a5b3d1ff6e63249cf9c648fb3ae9f285481db48f56887adb0d6 languageName: node linkType: hard @@ -1308,19 +1300,19 @@ __metadata: languageName: node linkType: hard -"markdown-it@npm:14.1.0": - version: 14.1.0 - resolution: "markdown-it@npm:14.1.0" +"markdown-it@npm:14.3.0": + version: 14.3.0 + resolution: "markdown-it@npm:14.3.0" dependencies: argparse: "npm:^2.0.1" - entities: "npm:^4.4.0" - linkify-it: "npm:^5.0.0" + entities: "npm:^4.5.0" + linkify-it: "npm:^5.0.2" mdurl: "npm:^2.0.0" punycode.js: "npm:^2.3.1" uc.micro: "npm:^2.1.0" bin: markdown-it: bin/markdown-it.mjs - checksum: 10c0/9a6bb444181d2db7016a4173ae56a95a62c84d4cbfb6916a399b11d3e6581bf1cc2e4e1d07a2f022ae72c25f56db90fbe1e529fca16fbf9541659dc53480d4b4 + checksum: 10c0/b2dea908968109d6e9088ac972254bca842157d85d2e6838d0eb263cd8106e7e6a72663b138366cc98f57441d9f3f2ebfb842bf7b2f9e1c13187ebe70e0af8f9 languageName: node linkType: hard @@ -1333,26 +1325,28 @@ __metadata: languageName: node linkType: hard -"markdownlint-cli2@npm:^0.20.0": - version: 0.20.0 - resolution: "markdownlint-cli2@npm:0.20.0" +"markdownlint-cli2@npm:^0.23.2": + version: 0.23.2 + resolution: "markdownlint-cli2@npm:0.23.2" dependencies: - globby: "npm:15.0.0" - js-yaml: "npm:4.1.1" + globby: "npm:16.2.2" + js-yaml: "npm:5.2.2" jsonc-parser: "npm:3.3.1" - markdown-it: "npm:14.1.0" - markdownlint: "npm:0.40.0" + jsonpointer: "npm:5.0.1" + markdown-it: "npm:14.3.0" + markdownlint: "npm:0.41.1" markdownlint-cli2-formatter-default: "npm:0.0.6" micromatch: "npm:4.0.8" + smol-toml: "npm:1.7.0" bin: markdownlint-cli2: markdownlint-cli2-bin.mjs - checksum: 10c0/6c5dfc16b93db4adb39a890a745e71eda91e43e0abbd3e70f9f96057bf2c07de9df982c0be2868be170dbfa59e162c9b8632849096a177cf164f9dbd9c5f67b4 + checksum: 10c0/a854cc77c8a64b07d1f99a74303d0f3d773a5ff78a361328566ce469df8bb08fbc1d57b2715c5ad111cc85278c034a14bfa92c41b51e5926494d370af94ccd21 languageName: node linkType: hard -"markdownlint@npm:0.40.0": - version: 0.40.0 - resolution: "markdownlint@npm:0.40.0" +"markdownlint@npm:0.41.1": + version: 0.41.1 + resolution: "markdownlint@npm:0.41.1" dependencies: micromark: "npm:4.0.2" micromark-core-commonmark: "npm:2.0.3" @@ -1362,8 +1356,8 @@ __metadata: micromark-extension-gfm-table: "npm:2.1.1" micromark-extension-math: "npm:3.1.0" micromark-util-types: "npm:2.0.2" - string-width: "npm:8.1.0" - checksum: 10c0/1543fcf4a433bc54e0e565cb1c8111e5e3d0df3742df0cc840d470bced21a1e3b5593e4e380ad0d8d5e490d9b399699d48aeabed33719f3fbdc6d00128138f20 + string-width: "npm:8.2.1" + checksum: 10c0/ad1012c4723ebfca0b4578d6ef46f46f5c9d7d3e3cfd935933f23f7174b62b4ae153b56d62e9ef6250b511eec2a4b719faaaad32bdda7fee4763bf38dffef972 languageName: node linkType: hard @@ -1724,21 +1718,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.0.3": - version: 10.0.3 - resolution: "minimatch@npm:10.0.3" +"minimatch@npm:^10.2.2": + version: 10.2.6 + resolution: "minimatch@npm:10.2.6" dependencies: - "@isaacs/brace-expansion": "npm:^5.0.0" - checksum: 10c0/e43e4a905c5d70ac4cec8530ceaeccb9c544b1ba8ac45238e2a78121a01c17ff0c373346472d221872563204eabe929ad02669bb575cb1f0cc30facab369f70f - languageName: node - linkType: hard - -"minimatch@npm:^10.1.1": - version: 10.1.1 - resolution: "minimatch@npm:10.1.1" - dependencies: - "@isaacs/brace-expansion": "npm:^5.0.0" - checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 + brace-expansion: "npm:^5.0.8" + checksum: 10c0/4559a836243b98bd4d17ea9f7edae698717c76399eea7be374f3737f33164e4907f19e9726891ddeb122f750a5a7fa80d2ac43e851d6e5984dc4ff42ec127d3a languageName: node linkType: hard @@ -1832,6 +1817,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^7.1.3": + version: 7.1.3 + resolution: "minipass@npm:7.1.3" + checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb + languageName: node + linkType: hard + "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" @@ -1928,13 +1920,6 @@ __metadata: languageName: node linkType: hard -"ohm-js@npm:^17.0.0": - version: 17.2.1 - resolution: "ohm-js@npm:17.2.1" - checksum: 10c0/e1cb8ade21faa508c242644bde3c93d959b4638f1baec5475963fea8d0984db10913ee7c57c51a5af40732295332bd4b708c77d5a7d58a20cba656ac24efc054 - languageName: node - linkType: hard - "once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -2020,20 +2005,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^2.0.0": - version: 2.0.0 - resolution: "path-scurry@npm:2.0.0" +"path-scurry@npm:^2.0.2": + version: 2.0.2 + resolution: "path-scurry@npm:2.0.2" dependencies: lru-cache: "npm:^11.0.0" minipass: "npm:^7.1.2" - checksum: 10c0/3da4adedaa8e7ef8d6dc4f35a0ff8f05a9b4d8365f2b28047752b62d4c1ad73eec21e37b1579ef2d075920157856a3b52ae8309c480a6f1a8bbe06ff8e52b33c - languageName: node - linkType: hard - -"path-type@npm:^6.0.0": - version: 6.0.0 - resolution: "path-type@npm:6.0.0" - checksum: 10c0/55baa8b1187d6dc683d5a9cfcc866168d6adff58e5db91126795376d818eee46391e00b2a4d53e44d844c7524a7d96aa68cc68f4f3e500d3d069a39e6535481c + checksum: 10c0/b35ad37cf6557a87fd057121ce2be7695380c9138d93e87ae928609da259ea0a170fac6f3ef1eb3ece8a068e8b7f2f3adf5bb2374cf4d4a57fe484954fcc9482 languageName: node linkType: hard @@ -2066,12 +2044,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^3.7.4": - version: 3.7.4 - resolution: "prettier@npm:3.7.4" +"prettier@npm:^3.9.6": + version: 3.9.6 + resolution: "prettier@npm:3.9.6" bin: prettier: bin/prettier.cjs - checksum: 10c0/9675d2cd08eacb1faf1d1a2dbfe24bfab6a912b059fc9defdb380a408893d88213e794a40a2700bd29b140eb3172e0b07c852853f6e22f16f3374659a1a13389 + checksum: 10c0/9f7ddae234035868f3daab3dc34e6de7e54622185afb017378029f0c09a9c023248ccf6f34def0b17a0538e18c47aa1b3188bab72965d1bf735919baa0747e99 languageName: node linkType: hard @@ -2176,15 +2154,15 @@ __metadata: version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: - "@fulldecent/nice-checkers-plugin": "npm:^1.2.1" - "@shopify/prettier-plugin-liquid": "npm:^1.10.0" - cheerio: "npm:^1.1.2" + "@fulldecent/nice-checkers-plugin": "npm:^1.3.7" + "@shopify/prettier-plugin-liquid": "npm:^1.11.0" + cheerio: "npm:^1.2.0" css: "npm:^3.0.0" front-matter: "npm:^4.0.2" - glob: "npm:^13.0.0" - html-validate: "npm:^10.4.0" - markdownlint-cli2: "npm:^0.20.0" - prettier: "npm:^3.7.4" + glob: "npm:^13.0.6" + html-validate: "npm:^11.6.0" + markdownlint-cli2: "npm:^0.23.2" + prettier: "npm:^3.9.6" xml2js: "npm:^0.6.2" dependenciesMeta: "@shopify/prettier-plugin-liquid@1.5.0": @@ -2247,10 +2225,10 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.8.3": - version: 1.8.3 - resolution: "shell-quote@npm:1.8.3" - checksum: 10c0/bee87c34e1e986cfb4c30846b8e6327d18874f10b535699866f368ade11ea4ee45433d97bf5eada22c4320c27df79c3a6a7eb1bf3ecfc47f2c997d9e5e2672fd +"shell-quote@npm:^1.8.4": + version: 1.10.0 + resolution: "shell-quote@npm:1.10.0" + checksum: 10c0/46ee59bfd972ce6a45500c44ed130dff2d0a7d6fbac9841e59d548518cad8060a06393c9a5dcbc0cede294ad80b2a2cd8c904679e09265f53efc0a0879f30961 languageName: node linkType: hard @@ -2300,6 +2278,13 @@ __metadata: languageName: node linkType: hard +"smol-toml@npm:1.7.0": + version: 1.7.0 + resolution: "smol-toml@npm:1.7.0" + checksum: 10c0/8eef246b9b96f278a181f6dd2a90c754304cb4cf92ccdfe1d2f714fb980fb3f539ba00283609e8fd2fbcf7c0d48a4ae76b36bc0de556ed286b2c865827a778e8 + languageName: node + linkType: hard + "socks-proxy-agent@npm:^8.0.3": version: 8.0.4 resolution: "socks-proxy-agent@npm:8.0.4" @@ -2372,13 +2357,13 @@ __metadata: languageName: node linkType: hard -"string-width@npm:8.1.0": - version: 8.1.0 - resolution: "string-width@npm:8.1.0" +"string-width@npm:8.2.1": + version: 8.2.1 + resolution: "string-width@npm:8.2.1" dependencies: - get-east-asian-width: "npm:^1.3.0" - strip-ansi: "npm:^7.1.0" - checksum: 10c0/749b5d0dab2532b4b6b801064230f4da850f57b3891287023117ab63a464ad79dd208f42f793458f48f3ad121fe2e1f01dd525ff27ead957ed9f205e27406593 + get-east-asian-width: "npm:^1.5.0" + strip-ansi: "npm:^7.1.2" + checksum: 10c0/d467b4eaf4c40a01bb438a2620e77badd2456ffd5131c9973abe4f3acf7c802d5b21f3b6a00a5e33a7fc28ca8f9c103226e01bac61e9f259659c6f46d78e353a languageName: node linkType: hard @@ -2420,12 +2405,12 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^7.1.0": - version: 7.1.2 - resolution: "strip-ansi@npm:7.1.2" +"strip-ansi@npm:^7.1.2": + version: 7.2.0 + resolution: "strip-ansi@npm:7.2.0" dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 10c0/0d6d7a023de33368fd042aab0bf48f4f4077abdfd60e5393e73c7c411e85e1b3a83507c11af2e656188511475776215df9ca589b4da2295c9455cc399ce1858b + ansi-regex: "npm:^6.2.2" + checksum: 10c0/544d13b7582f8254811ea97db202f519e189e59d35740c46095897e254e4f1aa9fe1524a83ad6bc5ad67d4dd6c0281d2e0219ed62b880a6238a16a17d375f221 languageName: node linkType: hard @@ -2500,17 +2485,17 @@ __metadata: languageName: node linkType: hard -"undici@npm:^7.12.0": - version: 7.13.0 - resolution: "undici@npm:7.13.0" - checksum: 10c0/8865d40b141f073215a6763aad5d1b2f4bd4e252600e93e68055d6c5d23a8a0e5782669236b2ecfa4d415d1d969d9c4623ff1c0386d32fa60088a19ffa58c611 +"undici@npm:^7.19.0": + version: 7.29.0 + resolution: "undici@npm:7.29.0" + checksum: 10c0/85ea96e91e7f3de24de678cbbc54230fdd641a3b0643005f2aef044af1f1a2db8fbecb88b28e6fa78bb41ffeafda4479b57075b6b6ab92beac4b7b5ab53f9b10 languageName: node linkType: hard -"unicorn-magic@npm:^0.3.0": - version: 0.3.0 - resolution: "unicorn-magic@npm:0.3.0" - checksum: 10c0/0a32a997d6c15f1c2a077a15b1c4ca6f268d574cf5b8975e778bb98e6f8db4ef4e86dfcae4e158cd4c7e38fb4dd383b93b13eefddc7f178dea13d3ac8a603271 +"unicorn-magic@npm:^0.4.0": + version: 0.4.0 + resolution: "unicorn-magic@npm:0.4.0" + checksum: 10c0/cd6eff90967a5528dfa2016bdb5b38b0cd64c8558f9ba04fb5c2c23f3a232a67dfe2bfa4c45af3685d5f1a40dbac6a36d48e053f80f97ae4da1e0f6a55431685 languageName: node linkType: hard