diff --git a/.cspell.json b/.cspell.json index b741efb..55ce7cb 100644 --- a/.cspell.json +++ b/.cspell.json @@ -1,4 +1,6 @@ { - "import": "@kitschpatrol/cspell-config", - "ignorePaths": ["/packages/*/init/*.json", "/packages/*/bin"] + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "import": "@envsa/cspell-config", + "ignorePaths": ["/packages/*/init/*.json", "/packages/*/bin"], + "words": [] } diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index a47d1cf..0000000 --- a/.eslintignore +++ /dev/null @@ -1,25 +0,0 @@ -# ESLint Ignore -# Does not inherit from .gitignore - -# @kitschpatrol/repo-config boilerplate -.astro/ -.DS_Store -.env -.env.* -!.env.example -.svelte-kit/ -{tmp,temp}/ -**/*.min.js -/scratch/ -bower_components/ -build/ -coverage/ -dist/ -node_modules/ -vendor/ - -# @kitschpatrol/eslint-config boilerplate -/patches/ - -# Customizations -bin/ diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 7075f80..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-disable perfectionist/sort-objects */ -/* @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - extends: ['@kitschpatrol/eslint-config'], - overrides: [ - { - files: ['src/**/*', 'scripts/**/*', 'packages/*/src/**/*', 'packages/*/scripts/**/*'], - rules: { - 'n/no-unpublished-import': 'off', - 'n/hashbang': 'off', - }, - }, - ], -} diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml index fdb8cb0..5d9c882 100644 --- a/.github/workflows/github-release.yml +++ b/.github/workflows/github-release.yml @@ -1,81 +1,81 @@ name: Create GitHub Release on: - push: - tags: - - 'v[0-9]*' + push: + tags: + - "v[0-9]*" jobs: - build: - name: Create Release - runs-on: ubuntu-latest - env: - ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} - IS_VALID_COMMIT: false - TAG_NAME: '' + build: + name: Create Release + runs-on: ubuntu-latest + env: + ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} + IS_VALID_COMMIT: false + TAG_NAME: "" - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Log Token Type - run: | - if [ ${{ env.ACCESS_TOKEN }} == ${{ secrets.GITHUB_TOKEN }} ]; then - echo "🗝️ Authenticated with GitHub Token" - else - echo "🔑 Authenticated with Personal Access token" - fi + - name: Log Token Type + run: | + if [ ${{ env.ACCESS_TOKEN }} == ${{ secrets.GITHUB_TOKEN }} ]; then + echo "🗝️ Authenticated with GitHub Token" + else + echo "🔑 Authenticated with Personal Access token" + fi - - name: Validate Tag and Branch - id: validation - run: | - TAG=$(git tag --contains HEAD | grep '^v[0-9]' | head -n 1) - echo "🏷️ Tag for commit is: $TAG" - BRANCH=$(git branch -r --contains tags/${GITHUB_REF_NAME} | grep 'origin/main' | xargs) - if [[ -z "$BRANCH" ]]; then - echo "🚨 Tag is not on main branch" - else - echo "🕊️ Current branch is: $BRANCH" - fi - if [[ -z "$TAG" || -z "$BRANCH" ]]; then - echo "IS_VALID_COMMIT=false" >> $GITHUB_ENV - echo "TAG_NAME=''" >> $GITHUB_ENV - else - echo "IS_VALID_COMMIT=true" >> $GITHUB_ENV - echo "TAG_NAME=$TAG" >> $GITHUB_ENV - fi + - name: Validate Tag and Branch + id: validation + run: | + TAG=$(git tag --contains HEAD | grep '^v[0-9]' | head -n 1) + echo "🏷️ Tag for commit is: $TAG" + BRANCH=$(git branch -r --contains tags/${GITHUB_REF_NAME} | grep 'origin/main' | xargs) + if [[ -z "$BRANCH" ]]; then + echo "🚨 Tag is not on main branch" + else + echo "🕊️ Current branch is: $BRANCH" + fi + if [[ -z "$TAG" || -z "$BRANCH" ]]; then + echo "IS_VALID_COMMIT=false" >> $GITHUB_ENV + echo "TAG_NAME=''" >> $GITHUB_ENV + else + echo "IS_VALID_COMMIT=true" >> $GITHUB_ENV + echo "TAG_NAME=$TAG" >> $GITHUB_ENV + fi - - name: Release Notes - if: env.IS_VALID_COMMIT == 'true' - id: release-notes - uses: kitschpatrol/github-action-release-changelog@v2 + - name: Release Notes + if: env.IS_VALID_COMMIT == 'true' + id: release-notes + uses: kitschpatrol/github-action-release-changelog@v2 - - name: Release - if: env.IS_VALID_COMMIT == 'true' - id: release - uses: kitschpatrol/github-action-release@v2 - with: - token: ${{ env.ACCESS_TOKEN }} - draft: false - prerelease: false - name: ${{ env.TAG_NAME }} - tag_name: ${{ env.TAG_NAME }} - body: | - ${{ steps.release-notes.outputs.changelog }} - files: | - readme.md - README.md - LICENSE - license.txt - CHANGELOG - CHANGELOG.md - changelog.md + - name: Release + if: env.IS_VALID_COMMIT == 'true' + id: release + uses: kitschpatrol/github-action-release@v2 + with: + token: ${{ env.ACCESS_TOKEN }} + draft: false + prerelease: false + name: ${{ env.TAG_NAME }} + tag_name: ${{ env.TAG_NAME }} + body: | + ${{ steps.release-notes.outputs.changelog }} + files: | + readme.md + README.md + LICENSE + license.txt + CHANGELOG + CHANGELOG.md + changelog.md - - name: Log Release Details - if: env.IS_VALID_COMMIT == 'true' - run: | - echo "📦 Successfully released: ${{ env.TAG_NAME }}" - echo "🔗 Release URL: ${{ steps.release.outputs.url }}" - echo "🪪 Release ID: ${{ steps.release.outputs.id }}" + - name: Log Release Details + if: env.IS_VALID_COMMIT == 'true' + run: | + echo "📦 Successfully released: ${{ env.TAG_NAME }}" + echo "🔗 Release URL: ${{ steps.release.outputs.url }}" + echo "🪪 Release ID: ${{ steps.release.outputs.id }}" diff --git a/.github/workflows/sync-metadata.yml b/.github/workflows/sync-metadata.yml index 4ab3e89..ca97dd1 100644 --- a/.github/workflows/sync-metadata.yml +++ b/.github/workflows/sync-metadata.yml @@ -1,48 +1,48 @@ name: Overwrite GitHub repo metadata with info from package.json on: - push: - branches: [main] - workflow_dispatch: + push: + branches: [main] + workflow_dispatch: jobs: - build: - name: Sync Metadata - runs-on: ubuntu-latest - env: - IS_VALID_TOKEN: false - HAS_PACKAGE: false + build: + name: Sync Metadata + runs-on: ubuntu-latest + env: + IS_VALID_TOKEN: false + HAS_PACKAGE: false - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Check for package.json - run: | - if [ -f package.json ]; then - echo "📦 Found package.json" - echo "HAS_PACKAGE=true" >> $GITHUB_ENV - else - echo "❌ This action requires a package.json to run" - echo "HAS_PACKAGE=false" >> $GITHUB_ENV - fi + - name: Check for package.json + run: | + if [ -f package.json ]; then + echo "📦 Found package.json" + echo "HAS_PACKAGE=true" >> $GITHUB_ENV + else + echo "❌ This action requires a package.json to run" + echo "HAS_PACKAGE=false" >> $GITHUB_ENV + fi - - name: Validate Access Token - if: env.HAS_PACKAGE == 'true' - run: | - if [ -z ${{ secrets.PERSONAL_ACCESS_TOKEN }} ]; then - echo "❌ This action requires a Personal Access token to run" - echo "IS_VALID_TOKEN=false" >> $GITHUB_ENV - else - echo "🔑 Authenticated with Personal Access token" - echo "IS_VALID_TOKEN=true" >> $GITHUB_ENV - fi + - name: Validate Access Token + if: env.HAS_PACKAGE == 'true' + run: | + if [ -z ${{ secrets.PERSONAL_ACCESS_TOKEN }} ]; then + echo "❌ This action requires a Personal Access token to run" + echo "IS_VALID_TOKEN=false" >> $GITHUB_ENV + else + echo "🔑 Authenticated with Personal Access token" + echo "IS_VALID_TOKEN=true" >> $GITHUB_ENV + fi - - name: Sync Package info to GitHub - if: env.IS_VALID_TOKEN == 'true' && env.HAS_PACKAGE == 'true' - uses: kitschpatrol/github-action-repo-sync@v2 - with: - TYPE: npm - PATH: package.json - TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + - name: Sync Package info to GitHub + if: env.IS_VALID_TOKEN == 'true' && env.HAS_PACKAGE == 'true' + uses: kitschpatrol/github-action-repo-sync@v2 + with: + TYPE: npm + PATH: package.json + TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} diff --git a/.gitignore b/.gitignore index d101422..e224d55 100644 --- a/.gitignore +++ b/.gitignore @@ -1,21 +1,20 @@ # Git Ignore # Also used by CSpell and Stylelint -# @kitschpatrol/repo-config boilerplate -.astro/ +# @envsa/repo-config boilerplate .DS_Store +.ddev/ .env .env.* !.env.example -.svelte-kit/ -{tmp,temp}/ -**/*.min.js -/scratch/ -bower_components/ +node_modules/ +vendor/ build/ coverage/ dist/ -node_modules/ -vendor/ +**/*.min.js +tmp/ +temp/ +_junk/ # Customizations diff --git a/.mdatrc.ts b/.mdatrc.ts index 5b627b7..03cca6c 100644 --- a/.mdatrc.ts +++ b/.mdatrc.ts @@ -1,6 +1,6 @@ -import mdatConfig from '@kitschpatrol/mdat-config' -import { mergeConfigs } from 'mdat' +import mdatConfig from '@envsa/mdat-config'; +import { mergeConfigs } from 'mdat'; export default mergeConfigs(mdatConfig, { - // Custom mdat config goes here -}) + // Custom mdat config goes here +}); diff --git a/.npmrc b/.npmrc index 95441b0..373ef61 100644 --- a/.npmrc +++ b/.npmrc @@ -1,10 +1,9 @@ publish-branch=main -# Required for using @kitschpatrol/shared-config with pnpm -public-hoist-pattern[]=@kitschpatrol/repo-config +# Required for using @envsa/shared-config with pnpm +public-hoist-pattern[]=@envsa/repo-config public-hoist-pattern[]=*cspell* public-hoist-pattern[]=*eslint* public-hoist-pattern[]=*mdat* public-hoist-pattern[]=*prettier* -public-hoist-pattern[]=*remark* public-hoist-pattern[]=*stylelint* diff --git a/.prettierignore b/.prettierignore index a34dc99..e676370 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,24 +1,23 @@ # Prettier Ignore # Does not inherit from .gitignore -# @kitschpatrol/repo-config boilerplate -.astro/ +# @envsa/repo-config boilerplate .DS_Store +.ddev/ .env .env.* !.env.example -.svelte-kit/ -{tmp,temp}/ -**/*.min.js -/scratch/ -bower_components/ +node_modules/ +vendor/ build/ coverage/ dist/ -node_modules/ -vendor/ +**/*.min.js +tmp/ +temp/ +_junk/ -# @kitschpatrol/prettier-config boilerplate +# @envsa/prettier-config boilerplate pnpm-lock.yaml package-lock.json diff --git a/.prettierrc.js b/.prettierrc.js index b60d8e3..0687905 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,16 +1,16 @@ -import sharedConfig from '@kitschpatrol/prettier-config' +import sharedConfig from '@envsa/prettier-config'; /** @type {import("prettier").Config} */ const localConfig = { - // Config overrides - // overrides: [ - // ...sharedConfig.overrides, - // { - // // Per-file overrides overrides - // }, - // ], -} + // Config overrides + // overrides: [ + // ...sharedConfig.overrides, + // { + // // Per-file overrides overrides + // }, + // ], +}; export default { - ...sharedConfig, - ...localConfig, -} + ...sharedConfig, + ...localConfig, +}; diff --git a/.remarkrc.js b/.remarkrc.js deleted file mode 100644 index aa921bc..0000000 --- a/.remarkrc.js +++ /dev/null @@ -1,9 +0,0 @@ -import sharedConfig, { overrideRules } from '@kitschpatrol/remark-config' - -const localConfig = { - ...sharedConfig, - // Overrides are a special case, working as below (set `false` as the second element to disable): - // plugins: overrideRules(sharedConfig.plugins, [['remark-lint-first-heading-level', 2]]) -} - -export default localConfig diff --git a/.stylelintrc.cjs b/.stylelintrc.cjs index 8ec9ed0..544a83c 100644 --- a/.stylelintrc.cjs +++ b/.stylelintrc.cjs @@ -1,4 +1,4 @@ module.exports = { - extends: ['@kitschpatrol/stylelint-config'], - // Overrides -} + extends: ['@envsa/stylelint-config'], + // Overrides +}; diff --git a/.vscode/extensions.json b/.vscode/extensions.json index d28fd4e..fbe4433 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,15 +1,13 @@ { - "recommendations": [ - "dbaeumer.vscode-eslint", - "svelte.svelte-vscode", - "astro-build.astro-vscode", - "streetsidesoftware.code-spell-checker", - "esbenp.prettier-vscode", - "unifiedjs.vscode-mdx", - "stylelint.vscode-stylelint", - "usernamehw.errorlens", - "antfu.where-am-i", - "antfu.open-in-github-button", - "johnsoncodehk.vscode-tsconfig-helper" - ] + "recommendations": [ + "dbaeumer.vscode-eslint", + "svelte.svelte-vscode", + "streetsidesoftware.code-spell-checker", + "esbenp.prettier-vscode", + "stylelint.vscode-stylelint", + "usernamehw.errorlens", + "johnsoncodehk.vscode-tsconfig-helper", + "github.vscode-github-actions", + "yoavbls.pretty-ts-errors" + ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index cab6e67..4426353 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,56 +1,40 @@ { - "[astro]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[gitignore]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[ruby]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[shellscript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[svelte]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "cSpell.enabled": true, - "cSpell.workspaceRootPath": ".", - "editor.codeActionsOnSave": { - "source.fixAll": "explicit" - }, - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true, - "eslint.enable": true, - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - "svelte", - "astro", - "markdown", - "mdx", - "html" - ], - "explorer.fileNesting.enabled": true, - "explorer.fileNesting.expand": false, - "explorer.fileNesting.patterns": { - ".env": ".env.*", - "package.json": ".*.cjs, .*.js, .*.json, .*.mjs, .*.toml, .*.ts, .*.yaml, .*.yml, .*ignore, .*rc, *config.cjs, *config.js, *config.json, *config.mjs, *config.toml, *config.ts, *config.yaml, *config.yml, *workspace.cjs, *workspace.js, *workspace.json, *workspace.mjs, *workspace.toml, *workspace.ts, *workspace.yaml, *workspace.yml lerna.json, netlify.toml, package-lock.json, pnpm*, turbo.json, vercel.json, workspace*, wrangler.toml, yarn.lock, yarn*", - "readme.md": "authors*, backers*, changelog*, citation*, code_of_conduct*, contributing*, contributors*, copying*, credits*, governance*, history*, license*, maintainers*, release_notes*, security*, sponsors*" - }, - - "prettier.documentSelectors": [ - "**/*.rb", - "**/*.astro", - "**/*.svelte", - "**/.prettierignore", - "**/.npmrc", - "**/.eslintignore" - ], - "prettier.enable": true, - "stylelint.enable": true, - "stylelint.validate": ["css", "html", "svelte", "astro"], - "typescript.tsdk": "node_modules/typescript/lib" + "[gitignore]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[shellscript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[svelte]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "cSpell.enabled": true, + "cSpell.workspaceRootPath": ".", + "editor.codeActionsOnSave": { + "source.fixAll": "explicit" + }, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "eslint.enable": true, + "eslint.workingDirectories": ["./"], // Make sure vscode is getting config from root dir + "eslint.validate": ["javascript", "typescript", "svelte", "markdown", "html", "twig"], + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + ".env": ".env.*", + "package.json": ".*.cjs, .*.js, .*.json, .*.mjs, .*.toml, .*.ts, .*.yaml, .*.yml, .*ignore, .*rc, *config.cjs, *config.js, *config.json, *config.mjs, *config.toml, *config.ts, *config.yaml, *config.yml, lerna.json, netlify.toml, package-lock.json, , pnpm*, turbo.json, vercel.json, workspace*, wrangler.toml, yarn.lock, yarn*", + "readme.md": "authors*, backers*, changelog*, citation*, code_of_conduct*, contributing*, contributors*, copying*, credits*, governance*, history*, license*, maintainers*, release_notes*, security*, sponsors*" + }, + "prettier.documentSelectors": [ + "**/*.svelte", + "**/.prettierignore", + "**/.npmrc", + "**/.eslintignore", + "**/.node-version" + ], + "prettier.enable": true, + "stylelint.enable": true, + "stylelint.validate": ["css", "html", "svelte"], + "typescript.tsdk": "node_modules/typescript/lib", + "eslint.useFlatConfig": true } diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..60ad046 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,21 @@ +import configEnvsa from '@envsa/eslint-config'; + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + ...configEnvsa, + { + ignores: ['**/bin/cli.js'], + }, + { + settings: { + 'import/resolver': { + alias: { + map: [['$root', './']], + }, + }, + }, + rules: { + 'import-x/no-extraneous-dependencies': 'off', + }, + }, +]; diff --git a/license.txt b/license.txt index bc47b30..4097ab1 100644 --- a/license.txt +++ b/license.txt @@ -1,6 +1,8 @@ MIT License -Copyright (c) 2023-2024 Eric Mika +Copyright (c) 2024 Liam Rella + +Based on the MIT-licensed "@kitschpatrol/shared-config" project by Eric Mika Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/package.json b/package.json index 0112691..66941b6 100644 --- a/package.json +++ b/package.json @@ -1,79 +1,78 @@ { - "name": "root", - "version": "4.7.5", - "type": "module", - "description": "A single dependency and single command to configure and run various code linters and tools.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git" - }, - "homepage": "https://github.com/kitschpatrol/shared-config", - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "private": true, - "packageManager": "pnpm@9.9.0", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "keywords": [ - "shared-config", - "eslint-config", - "stylelint-config", - "prettier-config", - "remark-config", - "remark-lint", - "github-actions", - "cspell", - "mdat", - "cli", - "npm-package" - ], - "scripts": { - "bin-ignore": "git ls-files | grep cli.js | xargs -I {} git update-index --skip-worktree {}", - "bin-restore": "pnpm run bin-unignore && git ls-files | grep cli.js | xargs -I {} git restore --source HEAD -- {} && pnpm run bin-ignore", - "bin-unignore": "git ls-files | grep cli.js | xargs -I {} git update-index --no-skip-worktree {}", - "build": "pnpm run build:stand-alone && pnpm run build:shared && cp ./packages/shared-config/readme.md ./readme.md ", - "build:shared": "pnpm --filter=shared-config build", - "build:stand-alone": "pnpm --filter=!shared-config build", - "clean": "pnpm run bin-restore && git clean -fdXq && rm ./pnpm-lock.yaml", - "fix": "pnpm shared-config --fix", - "lint": "pnpm shared-config --lint", - "merge-ignores": "ksdiff --merge ./packages/eslint-config/.eslintignore ./packages/stylelint-config/.stylelintignore", - "prepublishOnly": "pnpm run build", - "release": "pnpm bumpp -r --commit 'Release: %s' --tag 'v%s' && pnpm -r publish --otp $(op read 'op://Personal/Npmjs/one-time password?attribute=otp')" - }, - "devDependencies": { - "@kitschpatrol/cspell-config": "workspace:*", - "@kitschpatrol/eslint-config": "workspace:*", - "@kitschpatrol/mdat-config": "workspace:*", - "@kitschpatrol/prettier-config": "workspace:*", - "@kitschpatrol/remark-config": "workspace:*", - "@kitschpatrol/repo-config": "workspace:*", - "@kitschpatrol/shared-config": "workspace:*", - "@kitschpatrol/stylelint-config": "workspace:*", - "@pinojs/json-colorizer": "^4.0.0", - "@types/fs-extra": "^11.0.4", - "@types/node": "^20.16.5", - "bumpp": "^9.5.2", - "chalk": "^5.3.0", - "cosmiconfig": "^9.0.0", - "deepmerge": "^4.3.1", - "esbuild": "^0.23.1", - "execa": "^8.0.1", - "fs-extra": "^11.2.0", - "json-stringify-pretty-compact": "^4.0.0", - "meow": "^13.2.0", - "package-up": "^5.0.0", - "tsx": "^4.19.0", - "typescript": "~5.5.4" - } + "name": "root", + "version": "0.0.1", + "type": "module", + "description": "A single dependency and single command to configure and run various code linters and tools.", + "repository": { + "type": "git", + "url": "git@github.com:envsa/shared-config.git" + }, + "homepage": "https://github.com/envsa/shared-config", + "bugs": { + "url": "https://github.com/envsa/shared-config/issues", + "email": "DEW.ICTWebServices@sa.gov.au" + }, + "author": { + "name": "Liam Rella", + "email": "DEW.ICTWebServices@sa.gov.au", + "url": "https://github.com/rellafella" + }, + "license": "MIT", + "private": true, + "packageManager": "pnpm@9.9.0", + "engines": { + "node": ">=18.0.0", + "pnpm": ">=8.0.0" + }, + "keywords": [ + "shared-config", + "eslint-config", + "stylelint-config", + "prettier-config", + "github-actions", + "cspell", + "mdat", + "cli", + "npm-package" + ], + "scripts": { + "bin-ignore": "git ls-files | grep cli.js | xargs -I {} git update-index --skip-worktree {}", + "bin-restore": "pnpm run bin-unignore && git ls-files | grep cli.js | xargs -I {} git restore --source HEAD -- {} && pnpm run bin-ignore", + "bin-unignore": "git ls-files | grep cli.js | xargs -I {} git update-index --no-skip-worktree {}", + "build": "pnpm run build:stand-alone && pnpm run build:shared && cp ./packages/shared-config/readme.md ./readme.md ", + "build:shared": "pnpm --filter=shared-config build", + "build:stand-alone": "pnpm --filter=!shared-config build", + "clean": "pnpm run bin-restore && git clean -fdXq && rm ./pnpm-lock.yaml", + "fix": "pnpm shared-config --fix", + "lint": "pnpm shared-config --lint", + "merge-ignores": "ksdiff --merge ./packages/eslint-config/.eslintignore ./packages/stylelint-config/.stylelintignore", + "nuke": "rm -rf node_modules packages/*/node_modules pnpm-lock.yaml && pnpm install", + "prepublishOnly": "pnpm run build", + "release": "pnpm bumpp -r --commit 'release: %s' --tag 'v%s' && pnpm -r publish --otp $(op read 'op://Personal/NPM/one-time password?attribute=otp')" + }, + "devDependencies": { + "@envsa/cspell-config": "workspace:*", + "@envsa/eslint-config": "workspace:*", + "@envsa/mdat-config": "workspace:*", + "@envsa/prettier-config": "workspace:*", + "@envsa/repo-config": "workspace:*", + "@envsa/shared-config": "workspace:*", + "@envsa/stylelint-config": "workspace:*", + "@pinojs/json-colorizer": "^4.0.0", + "@types/fs-extra": "^11.0.4", + "@types/node": "^20.16.5", + "bumpp": "^9.5.2", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.1", + "esbuild": "^0.23.1", + "execa": "^8.0.1", + "fs-extra": "^11.2.0", + "json-stringify-pretty-compact": "^4.0.0", + "mdat": "^0.7.4", + "meow": "^13.2.0", + "package-up": "^5.0.0", + "tsx": "^4.19.0", + "typescript": "~5.5.4" + } } diff --git a/packages/cspell-config/cspell.config.json b/packages/cspell-config/cspell.config.json index 22d5661..325d485 100644 --- a/packages/cspell-config/cspell.config.json +++ b/packages/cspell-config/cspell.config.json @@ -1,101 +1,90 @@ { - "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", - "enabled": true, - "enableGlobDot": false, - "enableFiletypes": ["astro", "md", "mdx", "patch", "svelte"], - "dictionaryDefinitions": [ - { - "name": "kp-acronyms", - "path": "./dictionaries/kp-acronyms.txt", - "addWords": true - }, - { - "name": "kp-brands", - "path": "./dictionaries/kp-brands.txt", - "addWords": true - }, - { - "name": "kp-files", - "path": "./dictionaries/kp-files.txt", - "addWords": true - }, - { - "name": "kp-misc", - "path": "./dictionaries/kp-misc.txt", - "addWords": true - }, - { - "name": "kp-names", - "path": "./dictionaries/kp-names.txt", - "addWords": true - }, - { - "name": "kp-tech", - "path": "./dictionaries/kp-tech.txt", - "addWords": true - } - ], - "dictionaries": [ - "lorem-ipsum", - "git", - "gaming-terms", - "npm", - "data-science", - "fullstack", - "kp-acronyms", - "kp-brands", - "kp-files", - "kp-misc", - "kp-names", - "kp-tech" - ], - "languageSettings": [ - { - "languageId": "markdown,mdx,json", - "ignoreRegExpList": [ - // TODO does regex really need to be global? - "/^```(?:.|\\s)+?^```/mig", // Code fences - "\\$\\$.*?\\$\\$", // Ignore display MathJax $$...$$ - "\\$[^$\\n]*\\$", // Ignore inline MathJax $...$ - "[A-Z\\d\\-]{8,}" // Probable IDs or model names, e.g. AK-68-S7KA-0004 - ] - } - ], - "globRoot": "/", - "ignorePaths": [ - "__snapshots__", - "*.app", - "*.avif", - "*.m4a", - "*.m4v", - "*.mp3", - "*.mp4", - "*.patch", - "*.scpt", - "*.svg", - "*.tif", - "*.tldr", - "*.3gp", - "*.aac", - "*.avi", - "*.flac", - "*.flv", - "*.mkv", - "*.mpeg", - "*.oga", - "*.ogg", - "*.ogv", - "*.ogx", - "*.opus", - "*.spx", - "*.swf", - "*.wav", - "package.json", - "patches/", - "pnpm-lock.yaml" - ], - "ignoreRegExpList": ["tp-.+", "tweakpane-plugin-.+", "v2_c_\\w{21}"], - "language": "en,en-US", - "useGitignore": true, - "version": "0.2" + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "enabled": true, + "enableGlobDot": false, + "dictionaryDefinitions": [ + { + "name": "envsa-acronyms", + "path": "./dictionaries/envsa-acronyms.txt", + "addWords": true + }, + { + "name": "envsa-files", + "path": "./dictionaries/envsa-files.txt", + "addWords": true + }, + { + "name": "envsa-misc", + "path": "./dictionaries/envsa-misc.txt", + "addWords": true + }, + { + "name": "envsa-names", + "path": "./dictionaries/envsa-names.txt", + "addWords": true + }, + { + "name": "envsa-tech", + "path": "./dictionaries/envsa-tech.txt", + "addWords": true + } + ], + "dictionaries": [ + "lorem-ipsum", + "git", + "npm", + "fullstack", + "softwareTerms", + "envsa-acronyms", + "envsa-brands", + "envsa-files", + "envsa-misc", + "envsa-names", + "envsa-tech" + ], + "languageSettings": [ + { + "languageId": "markdown", + "ignoreRegExpList": [ + "/^```(?:.|\\s)+?^```/mig" // Code fences + ] + } + ], + "globRoot": "/", + "ignorePaths": [ + "__snapshots__", + "*.app", + "*.avif", + "*.m4a", + "*.m4v", + "*.mp3", + "*.mp4", + "*.patch", + "*.scpt", + "*.svg", + "*.tif", + "*.tldr", + "*.3gp", + "*.aac", + "*.avi", + "*.flac", + "*.flv", + "*.mkv", + "*.mpeg", + "*.oga", + "*.ogg", + "*.ogv", + "*.ogx", + "*.opus", + "*.spx", + "*.swf", + "*.wav", + "package.json", + "patches/", + "pnpm-lock.yaml" + ], + "ignoreRegExpList": ["tp-.+", "tweakpane-plugin-.+", "v2_c_\\w{21}"], + "language": "en,en-AU", + "useGitignore": true, + "version": "0.2" } diff --git a/packages/cspell-config/dictionaries/envsa-acronyms.txt b/packages/cspell-config/dictionaries/envsa-acronyms.txt new file mode 100644 index 0000000..8985a39 --- /dev/null +++ b/packages/cspell-config/dictionaries/envsa-acronyms.txt @@ -0,0 +1,4 @@ +DEW +NPSA +NPWS +NPWSSA diff --git a/packages/cspell-config/dictionaries/kp-files.txt b/packages/cspell-config/dictionaries/envsa-files.txt similarity index 100% rename from packages/cspell-config/dictionaries/kp-files.txt rename to packages/cspell-config/dictionaries/envsa-files.txt diff --git a/packages/cspell-config/dictionaries/envsa-misc.txt b/packages/cspell-config/dictionaries/envsa-misc.txt new file mode 100644 index 0000000..e87495c --- /dev/null +++ b/packages/cspell-config/dictionaries/envsa-misc.txt @@ -0,0 +1,28 @@ +adelaidegaol +adelaidenationalparkcity +Autophagic +bgset +botanicgardens +camelcase +carbonneutraladelaide +clelandwildlifepark +contentmigrations +defaultstatus +dogandcatboard +envsa +greenadelaide +kitschpatrol +koalalife +lazyload +marineparks +Mergeable +metabundles +nonconstructor +outfile +preid +productname +scpt +startdate +stateflora +tldr +webroot diff --git a/packages/cspell-config/dictionaries/envsa-names.txt b/packages/cspell-config/dictionaries/envsa-names.txt new file mode 100644 index 0000000..0c25009 --- /dev/null +++ b/packages/cspell-config/dictionaries/envsa-names.txt @@ -0,0 +1,4 @@ +Mika +Rella +rellafella +wolispace diff --git a/packages/cspell-config/dictionaries/envsa-tech.txt b/packages/cspell-config/dictionaries/envsa-tech.txt new file mode 100644 index 0000000..71e6ed9 --- /dev/null +++ b/packages/cspell-config/dictionaries/envsa-tech.txt @@ -0,0 +1,25 @@ +bullrich +ddev +deepmerge +dewnrger +drawnoxima +execa +formie +glightbox +grecaptcha +kbrashears +lazysizes +mdat +mdatrc +openforms +pcss +pinojs +redactoranchors +seomatic +softprops +solspace +stylelintrc +tailwindcss +trivago +tseslint +tsup diff --git a/packages/cspell-config/dictionaries/kp-acronyms.txt b/packages/cspell-config/dictionaries/kp-acronyms.txt deleted file mode 100644 index 18e1026..0000000 --- a/packages/cspell-config/dictionaries/kp-acronyms.txt +++ /dev/null @@ -1,186 +0,0 @@ -ABFR -AMNH -ANKR -APFS -APNG -APOE -ARGB -ARoS -ASMR -ASTC -AVIXA -BICSI -BIRP -BMBF -BOGO -BOWN -BTAL -BTLE -BYOD -CALS -CATECK -CCRU -CDMA -CHAG -CHNDM -CLRF -CMA's -CMOM -CMPS -CMTS -CMYKA -CNVIO -COFDM -CPNI -CRDT -CVPR -CWRU -DBRS -DIVX -DJVU -DMNS -DOCSIS -DPMS -DSIM -DSLR -DSSIM -DWGs -DWSH -DYLIB -ECHDC -EPDF -EPSF -EPSI -EPUB -EQOS -EXPI -FAANG -FAAS -FACP -FAFSA -FFTC -FLDC -FLIF -FOOMA -FOST -FOUC -FOUSC -FTXT -GLSL -GLTF -GPLT -GRAYA -HAARP -HALD -HDRI -HPAC -HPGL -HTPL -HVAC -IDML -IEET -IFFT -IIFE -IMDB -INSV -IPTC -ISBN -ISOBRL -IXDA -JBIG -JBOD -JFET -JOGL -JSTOR -KALV -KQED -LLDB -LLIS -LTMSC -LWJGL -MCAD -MCMC -MDMA -MELA -MoAD -MOBI -MODD -MoMA -MOPOP -MPAA -MRAD -MRPE -MRSA -MSATA -MSTR -MUAC -MURS -NASM -NIME -NIMH -NKSC -NLTK -NMUSN -NTFS -NYPL -NYSCI -NYU's -ODMA -OHTO -OKLCH -OLED -OMCS -OMFG -PAAS -PCDS -PCOMP -PICON -PMVS -PSNR -PSYK -PTAM -PTFE -PTIF -QLED -QTIF -RAAS -RDMS -RFID -RIAA -ROKC -RWET -SBMS -SBRC -SDHC -SEGD -SICP -SKALE -SNDL -SNMP -SSIM -STUI -TBIO -TECAN -TMKF -TPLM -TQQQ -TRIAC -TRPL -TSNE -TUIO -UBRL -UDTG -UHDR -UYVY -VERU -VIFF -VMAF -VRML -WAMU -WBMP -WJCT -WLAN -WLTOF -WWDC -WXRU -XONE diff --git a/packages/cspell-config/dictionaries/kp-brands.txt b/packages/cspell-config/dictionaries/kp-brands.txt deleted file mode 100644 index 9c2befa..0000000 --- a/packages/cspell-config/dictionaries/kp-brands.txt +++ /dev/null @@ -1,320 +0,0 @@ -Acela -Acto -Adafruit -Adventureland -AeroVironment -Aescape -AEVEX -AIEQ -Akasa -Alamy -Alibre -Altice -Amahi -Ameritrade -Anacapa -Anduril -Anker -ænrmòus -Aqara -Aqueux -Arc'teryx -Archimedia -Asahi -Asana -Asics -ASUS -Aukey -Aurulent -Avitto -Axure -Backblaze -Baggu -Bagjack -Baldor -Baratza -Bazel -Behmor -Belkin -Bionade -Biozyme -Birdly -Blooploop -Blundstone -Bodum -Boncom -Bormioli -Botanica -Bria -Brita -Buefy -Buspar -Camino -Canva -Carbonmade -Cardhop -Celeron -Cera -CFCL -Chakra -Cheogram -Ciel -Citi -CLAE -Cnet -codemirror -Cometa -Conceptarium -Coolhunting -Coolify -Cortina -Cosm -côte -côte&ciel -Cydwoq -Daiso -Danspace -Datomic -Devtek -DigiKey -Dinamo -Displax -Dorkbot -Dretec -Duolingo -Duralex -Dymo -Dyneema -Eastpak -Eldorado -Elgato -Enerloop -Envato -Espiral -Evangelion -Everlane -Evernote -EVGA -Expomobilia -Fanprix -Fastmail -Ferrero -Fira -Fishs -Fiskars -Flic -Flickr -Focalin -Fogia -Foznt -FTDI -Fugu -Fumito -Futureworks -Ganryu -Gateron -Gazos -Geico -Gizmodo -Glamtech -Glasslands -Glorietta -Goetz -Goppion -Graffle -Grailed -Grilli -Guidi -Hagerty -Hario -Harves -Hipmunk -Hirshhorn -Hisense -Hoka -Hokas -Hotmail -Hunkemöller -Illesteva -iMac -Isaora -Izipizi -Jaden -Juul -Kagi -Kaiyo -Kalita -Kato -Kaweco -Keppra -Kershaw -Keychron -Khronos -Kickstarter -Killscreen -Kingwin -Kinka -Kinkos -Knowfox -Koche -Kohler -Kuro -L'Oréal -Labdoor -Lamy -Lamzu -Levain -Loreal -Lowes -Luxon -MacBook -Macys -Malin -Mandai -Maybach -Mechanix -Mechano -Mekelburg -Melitta -Meross -Metra -Metrograph -Mets -Moccamaster -Momofuku -Monero -Monoprice -Monoprix -Muji -Mykita -Neatorama -Nelnet -networkidle -Niimbot -Nord -Northbank -Northstar -Novablast -nytimes -Ohaus -Oishii -Oncorus -Optery -Optimo -Optoma -Orbi -Otta -Pachube -Palit -Panera -Paxlovid -Payboo -Peakto -Penco -Performa -Perlorian -Perrotin -Phidgets -Piction -Pirelli -Plastite -Playmobil -Pocketmod -Posay -Prezi -Protolabs -Puro -Qotom -Qovery -Quantbase -Quercia -Retrobatch -Rhodia -Ribbonfarm -Rilakkuma -Rimowa -Rivarossi -Robinhood -Rocher -Roka -Roomba -Rotring -Sabrent -Salomon -Sandvic -Saphris -Sapienship -Satechi -Saucony -Sbarro -Scarpa -Scarpia -Schiff -Selfridges -Sephora -Shippo -Siig -Smartwool -Somaxis -Sonicare -Sotheby -Speaklow -Spyscape -Squarespace -Squidex -SSENSE -Staron -STAX -Steelcase -Storify -Strix -Sugru -Sunon -Superbright -Sutro -Swappa -Tanita -Tapo -Targus -Tellart -Terrapattern -Tesa -Thonet -Tifosi -Tiktok -Timbuk -Tinyletter -Totokaelo -Travelpro -Trippen -Truevision -Turris -Tuxera -über -Ubiquiti -Ubisoft -Ultimaker -Uniqlo -Vava -Venmo -VENTUS -Verio -Viberg -Videlio -Vitra -VOCOlinc -Vyvanse -Wegman's -Wegmans -Wemo -Westfalia -Wirecutter -Xero -Yasso -Yoox -Zcash -Zengobi -Zocdoc -ZOTAC -Zotero -Zulip diff --git a/packages/cspell-config/dictionaries/kp-misc.txt b/packages/cspell-config/dictionaries/kp-misc.txt deleted file mode 100644 index 46cedf8..0000000 --- a/packages/cspell-config/dictionaries/kp-misc.txt +++ /dev/null @@ -1,253 +0,0 @@ -acai -acmeism -acmeist -adhocracy -adject -affordances -afterparty -agentic -allwork -amaro -ampli -ampliface -anglophilic -angsty -animatable -apértif -apotheke -archivers -argh -assed -autofiction -autophagic -Ayurvedic -badass -Barcade -barramundi -bastirma -benshi -bento -bien -biodesign -bleh -blondies -bodymetrics -boing -borked -boulangerie -bourguignon -bresaola -brevis -broccolini -brushless -bulgogi -Bushwick -callout -Canalside -cantine -Caprica -carb -catechins -ceci -Changdu -checkin -cheesery -choco -clicky -comparables -confit -connectome -connectomes -consequentialism -contrivings -cortado -Covenhoven -Craftbar -crashy -cronut -customizer -cutz -cyberia -Danby -delaminating -dicked -dinero -discardable -discoverability -disruptors -dolmas -dopp -dosa -douchier -downleveling -droolmonkies -earlyish -earnout -electrooptical -electrotechnical -embodiedness -enshittification -esque -experimentations -favoriting -Finsta -firestarter -Flatbush -flosser -fluxus -freakin -frites -fuckery -fugazi -ganga -goji -Googlers -grapher -Greenpoint -gummies -gyoza -hackier -haha -Haniwa -heli -hella -herenow -holo -holodeck -hotspot -hubless -hyperpop -ibond -ideator -Ikinari -immersiveness -instrumentalization -Interactivos -intergenerational -jankiness -jouissance -Kabelwerk -kanban -katsu -kludgey -kombucha -kunst -kunstmuseum -Ladenburg -Lockerbie -Lockport -longshed -lorax -mafé -mahi -maison -matryoshka -mirrorless -misconstrual -misophonia -Mithraeum -moar -mochi -moiré -motorsports -Musée -Museo -Muséum -neuro -Neuromancer -nori -normie -Nostrand -onesie -orotate -packrat -panini -pappardelle -pico -plexi -polyphenol -polyphenols -polyvinylpyrrolidone -porntipsguzzardo -posthumanism -quippy -railcar -rando -randos -rebranded -refurb -repairability -repost -Roebling -royale -Sancerre -Sandia -satisfiability -Schizopolis -Shinkansen -shroom -sidenote -sidenotes -situationists -skeuomorphic -skeuomorphism -smokin -socio -Soleil -Soulscape -soundsuit -Soziokultur -spammy -spincycle -spiritualization -spyplane -sqft -stackable -statuario -steeplecab -stopfen -storymaking -suyah -synesthectacles -technologiae -technopaganism -technoprogressivism -technosentience -Teddit -timelapse -tldr -trailhead -transhumanism -traunch -Tribeca -trippy -ubanology -uberbeamer -überbeamer -umami -unagi -uncapitalize -undelightable -ungoogleable -unignore -unshift -untildify -Valis -vaporwave -Việt -Westville -whatwork -wireframe -womp -wonkery -XPLO -yada -yakitori -yall -Yankī -yeesh -youmean -zettelkasten -ziptie -zoomer -zoomers diff --git a/packages/cspell-config/dictionaries/kp-names.txt b/packages/cspell-config/dictionaries/kp-names.txt deleted file mode 100644 index 95799d0..0000000 --- a/packages/cspell-config/dictionaries/kp-names.txt +++ /dev/null @@ -1,1170 +0,0 @@ -3dkng -A'yen -Abbate -Acconci -Acko -Adamson -Adelle -Adelphi -Adkisson -Adorno -Adrián -Aelita -aemarse -Agarwal -Agarwala -Aherin -Ahern -Ainslie -Aita -Aiwen -AJ's -Ajay -Akara -Akim -Akkurat -Akten -Alain -alexeaton -Amane -Amato -Amed -Amelot -Amet -Amlen -Amplifi -Anadol -Analise -Andie -Ando -Andrade -André -Andreas -Andrej -Andrey -Andria -andycb -Anella -Anja -Ankeny -Ansari -antfu -Antoni -Anya -Applebaum -Aran -Ariely -Arjo -Artifex -Aseem -Ashwin -Atreet -Attia -Avgeros -ayamflow -Ayen -Babar -Babou -Badr -Baichtal -Balch -Baltz -Banksy -Bansal -Banzon -Baraff -Barbier -Barbuto -Baret -Barokka -Barriga -Bassick -Batuman -Bayles -beatfeat -Belson -Bembe -Bengio -Benine -Beno -Beny -Bermudez -Besa -Besos -Besta -Betts -Beuerer -Beyah -Bezos -Bhoj -Bifo -Bihn -Bijja -bildende -Billelo -Binay -Binks -Binky -Bjorn -Bjørn -Bodden -Boesch -Bofill -Bokaer -Boling -Bonawitz -Bonime -Boomgaard -Borenstein -Borrelli -Bostom -Bostrom -Boujou -Boulton -Bourke -Boveri -Bovino -Boyz -Brade -Bradfield -Bram -Branly -Branwen -Brea -Breezer -Brendon -Bretton -Brichter -Bricman -Bringle -Britz -Bront -Brower -Brutvan -Bubuck -Buckminster -Budd -Burges -Burgund -Burndy -Bustos -Byung -Cabel -Callot -Cambre -Canavan -Capps -Cardano -Carley -Carlsen -Carmack -Carnett -Carrer -Carsten -Castiñeira -Catie -Catmull -ccorcos -Celko -Chadd -Chana -Chapelle -Chapin -Charnov -Chicagi -Chien -Chika -Chiriac -Chisai -Chiu -Choi -Christo -Chul -Chun -Classon -Cleary -Cleese -Clevenger -Clisset -Cocoön -Coen -Cofoco -Cohrs -Condon -Copia -Corbin -Corbis -Corinna -Cormeau -Cortese -Cosme -Crary -Cravath -Cravey -Crittercism -Croghan -Cúbias -Cuit -Cunk -Cuomo -Cupidon -Cynar -d'Orsay -Dabas -Dahing -Dahnke -Dalma -Damore -Damyata -Danja -Darche -Dass -Datta -dbaeumer -Deamer -Debord -Degaulle -Degenhardt -Dekkers -Delbyck -Deleuze -Delice -Dell'Antonia -Dellantonia -Delphine -Delray -Delson -Demeulemeester -Demian -Denson -Depeche -desousak -dewwy -Diez -Diller -Dimnet -Ditmas -Dmitriy -Doherty -Dombås -donmccurdy -Doob -Dostoy -Dowding -Downey -Doyers -Drasin -Drennan -drona -Dubrule -Ducasse -Dumont -Durland -Dustyn -Eames -Ebenezer -Edensor -Edgcumbe -Edsger -Efron -Eggli -Eidhof -Elie -Elixia -Elle -Elly -Emefre -Emel -Enault -Engelbart -Engst -Enso -Equa -Erbe -Erdogan -Erez -ericmika -Erwan -Esmaili -Etra -etrea -Exley -Eyal -Eyval -Ezer -Ezgi -Fabberz -Fairey’s -Falco -Faludi -Farah -Fede -Federov -feedbin -Feit -Feixen -Felidia -Feliu -Felsen -Fermoso -Ferrer -Fidler -Fiebrink -Fifi -Fleischmann -Fleisig -Flexa -Flichy -Florian -Foer -Földesi -Fong -Fontana -Forde -Forelle -Forman -Förnuft -Foro -Fortney -Fournil -Francesco -Francie -Franke -Frede -Freking -Freundlich -Frick -Frida -Frumin -Fung -Galette -Gaudí -Geffner -Gehry -Genny -Georgi -Geppert -Gerome -Gershenfeld -Gervais -Gesiak -Gethin -Ghibli -Gillaume -Girona -Glimcher -Godin -Goliński -Gomes -Gondry -Gordan -Gordie -Goryu -Gowanus -Graeber -Grasse -Graw -Grayson -Grelle -Gresser -Grisch -Grischa -grishe -Grob -Grogan -Gruber -Grushkin -Guattari -Güeros -Guillaume -Guillin -Guíxols -Gwern -Haenyeo -Hagborg -Haider -Hakuba -Hallett -Hamel -Hammerbacher -Hana -Hanstra -Harari -Haraway -Harnisch -Harouna -Hartke -Hartun -Hassani -Healey -Hebbian -Hechinger -Hédelin -Hedwig -Heimat -Heinen -Hender -Hendry -Henny -Henpen -Hersh -Higa -Higgs -Hillman -Hiroki -Hirsch -Hirschmiller -Hito -Hodgson -Hoefler -Holda -Höller -Hollingworth -Holten -Holtzman -Hoppe -Hornbeck -Hotz -Houde -Houellebecq -Houng -Houx -Hsueh -Huebler -Huffington -Husain -Husted -Hyman -Iberti -Ichiran -Idah -idfdz -Igal -Igoe -Iijima -Ijima -Ikeda -Ilana -Illich -Insaf -Ippudo -Irina -Irisch -Isaacson -Issey -Italo -Itzhak -Ivana -Izzy -Jaccard -Jadens -Jaein -Jakob -Jakub -Jalufka -Jamil -Jamison -Jang -Jango -Jasmin -Jasons -Javits -Jaynes -Jelani -Jenine -Jenn -Jilann -Jing -Jiro -Jodry -joethei -Johan -Jóhann -Jóhannsson -johnsoncodehk -Jojo -Jong -Jonny -Jony -jorisjh -Jott -Juliya -Junichiro -Junya -Kahlo -Kaitlyn -Kalee -Kalish -Kallie -Kang -Karman -Karmann -Karpathy -Karsan -Karsten -Katia -Katsuhiro -Katz -Kayser -Keane -Keeli -Keijiro -Keiko -Kemper -Kengo -Kerker -Kerruish -Kessler -KeWlers -Kiet -Kilmer -Kimi -Kinsella -Kirill -Kishfy -Kishle -Kitano -kitschpatrol -Kleiner -Klim -Klompus -Klosterman -Kocienda -Kogan -Kohonen -Kôji -Kojian -Kokubun -Kolak -Korin -Korput -Kosberg -Kottas -Kottke -Koustantinich -Kovarik -Koze -Koźniewski -Kraner -Krantz -Kratos -Krause -Kruse -Krzysztof -Ku -Kuang -Kuma -Kuno -Kurzweil -Kusama -Kushner -Kutnow -Kuzmin -Kykuit -Kyoko -L'Rai -Laidlaw -Laika -Lände -Laren -Lassy -Lattner -Laure -Lavigne -Leahy -Leavitt -Lebron -Leeza -Leff -Lefrak -Legrand -leolabs -Lesniak -Lessig -Lethem -Lévi -Levitch -Lewitt -Leyland -Licklider -Liesje -Lijun -lillallol -Lillo -Limor -Lindley -Linds -Lineto -Linett -Lingdong -Litt -Littlewood -Littrell -Liv -Lixin -Locanda -Lockes -Löffler -Lohman -Loong -Lovejoy -Lrai -Luiz -Lupton -L’Óreal -L’Rai -Maag -Mackay -mackuba -Maddie -Maddy -Madsen -Magnus -Mahir -Maithel -Majer -Makari -Makiura -Makoto -Malkin -Marais -Marbut -Margiela -Mariel -Marien -Marijana -Marika -Marko -Markoff -Marlena -Marnier -Maron -Marraco -Martín -Martino -Maru -Masha -Masif -Maslow -Masood -Maspeth -Masucci -matan's -Mateo -Matheus -Matias -Matija -Matsuda -Matteson -Mattt -Matuschak -Maujer -Maver -McCambridge -McGlone -McIver -McKenna -Medcraft -Meer -Meeus -Mekala -Mekas -Melcher -Melrose -Meltzer -Mendenhall -Mendes -Mensah -Menya -Merington -Mesia -Mesià -metehus -Michna -Midori -Mika -Mikaela -Millican -Millner -Millstein -Milman -Minhs -Minkowski -Miorelli -Mirada -Mishima -Misrahi -Mistry -Miyake -Miyazaki -mmackh -Moatti -Möbius -Modesta -Moffat -Moishe's -Molanphy -Molior -Molmol -Monge -Monroy -Monstercat -Montauk -Mori -Moriah -Morril -Morry -Morty -Mozina -mrdoob -Mulhollen -Müller -Munish -Mwangi -Myriam -Nadya -Nagbe -Nahana -Naimark -Nalata -Narita -Naruns -Nassima -Nattinger -Nausicaä -Nava -Navalny -Nduja -Nekoro -Nemerov -Nessen -Neumann -Nevarez -Newmark -Ngan -Nico -Niel -Nien -Nik's -Nikiforov -Nikola -Nikolas -Nilay -Niloo -Nima -Niro -Nisma -Nitsuj -Noam -Noonan -Nosaj -Notwist -Novak -O'Connor -Oconnor -Okamura -Olaaf -Olah -oldboy -Oliva -Oliveri -Olly -Ondi -Onika -Onvural -Ordrup -Orenda -Oriol -Orland -Osawa -osnr -Outkast -Ozge -Ôtomo -Pachucki -Paciocco -Paik -Palash -Palatucci -Palo -pangenerator -Paounov -Paradis -Pavel -Pawel -Pawlikowski -Pearlyn -Pegg -Pell -Pepe -Perla -Perlin -Pettee -Pham -phenomnomnominal -Philipp -Picabia -Pirsig -Plessey -Pletcher -Plomatos -Pohlman -Poitras -Polanyi -Polli -Pollyn -Ponto -Ponzi -Positas -Pradhyo -Propery -Protazanov -Protzel -Quintana -Quist -Rafaël -Rafferty -Raku -Raman -ramblerman -Rana -Raskar -Rasmus -Realmuto -Reas -Rebecca -Refik -Renard -Renata -Renaud -Renfer -Renfro -Renwick -repalash -Resy -Reza -Riano -Ridhi -Rienstra -Rieper -Riess -Rigamonti -Ritchie -Rivero -Rivière -Rivington -Rizzo -Robey -Rockel -Rodale -Rodley -Rodríguez -Roguski -Rokeby -Romare -Romie -ronaldpr -Ronin -Roopa -Rosado -Rosen -Rosling -Rossi -Rosso -Roszak -Rothman -rseidelsohn -Ruberto -Rucyl -Rudtner -Rutter -Ryoji -Ryono -Rzehak -Sabir -Sackler -Sadek -Safdie -Safrin -Saggau -Saldaña -Salles -Samia -Samira -Sandeep -Sangwoo -Sanrio -Sant -Santosh -Saoudi -Saskia -Sasser -Sasson -Satoru -Sauer -Savicic -Scanlon -Schachman -Schaffhauser -Scharf -Schmitz -Schnaars -Schödler -Scholes -Scholze -Schulfer -Schwarz -Scofidio -Scotty -Seamus -Sebald -Seger -Seixas -Sekhmet -Sellam -Semir -Serdal -Sergey -Shafqat -Shafter -Shahar -Shakar -Shapira -Sharpless -Sheng -Shephard -Shera -Shiffman -Shiki -Shinder -Shirky -shoedler -Shulgin -Sice -Siddiq -Siegel -Sigel -siipo -Silverman -Simkin -Simpkins -Simun -Sindre -sindresorhus -Sinead -Singla -Sital -Skiba -Slava -Slavin -Slover -Smullin -Snibbe -Soerensen -Sofreh -Sofy -Söhne -Soman -Sorhus -Sout -Spalla -Spiekerman -Spirk -Spitzmiller -srmla -Stapledon -Steane -Stelton -Stepan -Stetter -Steyerl -Stinson -Stott -Styer -Suda -Sujata -Sundar -Sundström -Sungbin -Sveta -Svorka -Swensen -Syed -Syeda -Synbio -Tadao -Tadasuke -Taeyoon -Takahashi -Takaoka -Takeshi -Takoma -Talia -Talisa -Tallie -Tallman -Talman -Tamar -Tanenbaum -Tanizaki -Tarakajian -Tarte -Taryn -Tatu -taubyte -Tayle -Tchiu -Tchoupakov -Teng -Tensai -Terje -Terzoula -Thakar -Thao -Theiner -Theo -Thornburg -Thurston -Tianwei -Tibbets -Timoner -Timpson -Tims -Tiongson -Titicut -Tiya -Tomi -Tomo -Tompson -Tonian -tonsky -Torien -Torin -Torre -Torrone -Totto -Toulu -Tournaye -Triant -Tripp -Trivino -truise -Tsai -Tsumago -Tufte -Tupplur -Turkle -Twickr -Twilley -Tyka -Tymon -Udovich -Umar -Urbach -ürich -usernamehw -Vakili -Vanhemert -Vankatesh -Varan -Varujan -Varun -Veasey -Vélez -Venegas -venkat -Vibha -Vidich -Vidichs -Vidya -Vijil -Vikar -Vikram -Vogel -Volk -Voronoi -VVORK -Waldrop -Wanger -Wassim -Watanabe -Watz -Waxman -Wazin -Weinke -Weisenbach -Wenders -Wendt -Wenner -Wenwen -Werblin -Werthein -Wheare -Whorf -Willson -Wilmans -Wohrl -Wolcott -Wolther -wooorm -Wooyoung -Worby -Worku -Wouk -Wyndam -Wynne -Yakov -Yamamoto -Yaney -Yann -Yannick -Yaran -Yarnell -Yarvin -Yasser -Yatskov -Yavuz -Yaya -Yendri -Yeon -Yermack -Ylonen -Yoder -Yohji -Yonhee -Yonni -Yooin -Yoshida -Yoshua -Yossef -Yotrk -Yuditskaya -Yuill -Yung -Yuval -Zabala -Zack -Zaks -Zaman -Zamorano -Zana -Zananiri -Zannah -Zanzouri -Zareen -Zavala -Zeena -Zeki -Zena -Zeplin -Zeven -Zhang -Zheng -Ziskina -Ziyun -Zlatar -Zoephel -Zoltan -Zucker -Zurkow -Zutowski diff --git a/packages/cspell-config/dictionaries/kp-tech.txt b/packages/cspell-config/dictionaries/kp-tech.txt deleted file mode 100644 index 66b9b75..0000000 --- a/packages/cspell-config/dictionaries/kp-tech.txt +++ /dev/null @@ -1,559 +0,0 @@ -aacbrew -Acrobits -adjustmentsinfo -Airtable -altool -AMPM -Anki -apos -AppFlowy -AppleScript -apufix -Archivy -argless -Armbian -armhf -Artnet -astable -Astro -astrojs -autohide -autoimports -Automator -autoplay -autoresizing -avifenc -backlink -backlinking -backlinks -backtest -balena -Balsamiq -beforeunload -bézier -bgsound -Bibliogram -bignum -bigram -bigrams -bindability -bitvise -Blotar -boids -Boostnote -bootable -boto -browserconfig -Bugsense -Bulma -bumpp -bunnycdn -buttongrid -bzdata -bzpkg -camelcase -camerakit -cameraring -camerawheel -certbot -chezmoi -chipset -clippy -cloze -clozes -cmark -cocoapods -codebases -codebooga -codellama -codesigning -Codespaces -codsen -Colibri -Collab -colspan -combinators -Coqui -coreboot -cosmicconfig -Cousine -cout -Cpath -cpufreq -crossorigin -cssnano -csvg -cubicbezier -cupsctl -Cura -cwebp -Cyberduck -Cython -Datalog -dataview -datavis -dataviz -Datejs -datetime -deepmerge -deleter -demux -dendron -deno -devel -dicom -disablepictureinpicture -divs -dnsperf -docsify -Dokku -dpkg -draggability -duti -dwebp -Dyntube -emaculation -Emolex -ereader -errorlens -estree -ette -Excalidraw -execa -exif -exiftool -exiv -exportdb -farbfeld -faststart -favicons -fbtweak -fddk -ffmetadata -ffprobe -fieldset -figcaption -fileprivate -filesize -filesys -finnhub -finviz -firmata -Flashforge -flexbox -Flickrj -Flycut -fontsource -fortawesome -fpsgraph -fsnotes -fullscreen -fusuma -Futil -gchat -gdocs -gdrive -gdrives -geotag -gifski -gitbox -glew -glkview -gogs -Grav -Gridsome -GSAP -guetzli -gzipped -Hackaday -hackintosh -hackpad -haml -haptics -hasha -hashable -hashbang -hashchange -helpd -hexfet -HoloLens -HoloVista -hostnames -htmlmixed -hypedl -hypem -iama -ibeacon -iframes -imager -imagetools -imce -immer -InfoComm -instanceof -introend -introstart -InvisBox -ipynb -jetblack -jpgs -jphc -jsonifiable -JUCE -jxra -jxrs -jxsc -jxsi -jxss -keepnames -Keybr -keydown -keyof -Kinect -kinects -kiota -kputil -ksdiff -lanczos -langchain -lazygit -lerp -lerper -lerpy -libpam -libreddit -lilnas -linebreak -linkedom -linkify -localizable -Loggly -logseq -lproj -Lume -Luminar -Maaku -magicmark -mailarchiver -mailparser -makr -manycam -markdownit -marpit -mathjax -maxlength -Mbps -mcfly -mdast -mdat -mdatrc -mdsvex -mdxconfig -mdxjs -mediahasplayed -Memex -memfs -Menlo -Meraki -mergeable -Meslo -metafile -metaio -MikroTik -millis -Mimestream -min -Mindflex -minica -miniconda -minidom -minmax -mipmaps -mixtral -Mkdown -mkfile -mklabel -mkpart -mmhmm -mobileconfig -mofi -mollom -Monaspace -Monkeytype -Monospice -moveto -movflags -mozjpeg -mplayer -mrmime -MSLICE -mstile -Mullvad -mult -multicol -multimethod -multiport -Multitaction -multiview -nannou -navas -Navizon -Netatalk -Netgate -Netgear -Newswire -nextdns -nextid -Niantic -Nimbot -Ninite -Nitter -Noctua -Nodebox -nodenext -noembed -nokey -noopener -noprint -noreferrer -noscript -notarytool -Notenik -Noteplan -Noteship -nothrow -Noti -notionhq -Noto -notunes -npmlog -nproc -numpy -Nuxt -nyquist -Obinslab -objc -oclif -Octocat -Odroid -Odroidh -Odroidxu -oflog -ofparam -ohmyzsh -oklab -ollama -onehot -openframeworks -opengl -openmediavault -openscad -optionator -osascript -osxphotos -outfile -outro -outroend -outrostart -overscroll -oxipng -oxlint -pagecrypt -pagefind -Pandoc -Panebuilder -Panepaint -pango -Parachain -parsimmon -pdfreader -pdfs -pendingupload -pflops -pfsense -phasor -photokit -Photomator -Photoshop -photoslibrary -photoswipe -piezo -pinojs -pipx -Piwick -piwik -Pixelmator -Pixera -pkgroll -Plask -playform -playsinline -pngs -Polycode -poscene -positionals -Preact -precompress -preprocessors -prezto -printwidth -projectz -Protectli -proto -protobuf -Protokol -Protovis -Proxyman -psds -psexec -pushshift -qalpha -qcolor -qscale -radiogrid -raytrace -rclone -rcmdnk -realfavicongenerator -rects -rehype -remarklint -remarkrc -resizability -Roboto -roletype -rsvfx -ScanX -scikit -scipy -scpt -screenreader -screenshare -scrollbooster -sectionhead -seedrandom -setext -shadcn -shikijs -signale -silencedetect -Simplenote -Siri -slnc -sluggify -slugified -smartctl -smartmontools -smupgd -Snipster -softphone -squoosh -srgb -sshfs -Statamic -stegano -Strapi -strimg -Stuntz -stylelintrc -stylesheet -subclassable -subclassing -subgrid -subgrids -subheadline -subviews -Superslides -svelteness -Sveltepress -svgs -swiftui -SwiftyMarkdown -Swinsian -syncmd -syncme -tabindex -tailwindcss -Talabot -taskkill -Tauri -tbody -templating -testid -texcoord -textbox -thead -Threlte -tiktoken -tinycolor -tinyllama -tldraw -tolower -torchaudio -torchvision -touchid -toupper -truecolor -tsconfigs -tsdoc -tslog -tsparticles -tsquery -tsup -ttime -ttulo -Tukul -tweakpane -tweener -tweens -unibody -unifiedjs -unist -universaljs -unplugin -unsharp -urlopen -urlset -USBImager -ustream -uuidgen -vapo -vectorstore -Verba -vfile -vidup -virtualenv -vmax -vmin -Vokaloid -vpnc -vsync -Vuetify -webarchive -Webflow -webmail -webmin -webui -Wekinator -wetlab -wght -whisperx -WHOIS -woob -wordnet -WorkFlowy -worktree -xbee -xbees -xcrun -XCTU -xstate -yadm -yanki -Zarvox -zeed -Zigbee -zimfw -zoomout -zoomy -zplug diff --git a/packages/cspell-config/init/.cspell.json b/packages/cspell-config/init/.cspell.json index fa9890f..bada7ac 100644 --- a/packages/cspell-config/init/.cspell.json +++ b/packages/cspell-config/init/.cspell.json @@ -1,6 +1,6 @@ { - "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", - "import": "@kitschpatrol/cspell-config", - "ignorePaths": [], - "words": [] + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "import": "@envsa/cspell-config", + "ignorePaths": [], + "words": [] } diff --git a/packages/cspell-config/init/.vscode/extensions.json b/packages/cspell-config/init/.vscode/extensions.json index cd59864..ff1b97a 100644 --- a/packages/cspell-config/init/.vscode/extensions.json +++ b/packages/cspell-config/init/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["streetsidesoftware.code-spell-checker"] + "recommendations": ["streetsidesoftware.code-spell-checker"] } diff --git a/packages/cspell-config/init/.vscode/settings.json b/packages/cspell-config/init/.vscode/settings.json index cd83a08..e979c28 100644 --- a/packages/cspell-config/init/.vscode/settings.json +++ b/packages/cspell-config/init/.vscode/settings.json @@ -1,4 +1,4 @@ { - "cSpell.enabled": true, - "cSpell.workspaceRootPath": "." + "cSpell.enabled": true, + "cSpell.workspaceRootPath": "." } diff --git a/packages/cspell-config/license.txt b/packages/cspell-config/license.txt index bc47b30..4097ab1 100644 --- a/packages/cspell-config/license.txt +++ b/packages/cspell-config/license.txt @@ -1,6 +1,8 @@ MIT License -Copyright (c) 2023-2024 Eric Mika +Copyright (c) 2024 Liam Rella + +Based on the MIT-licensed "@kitschpatrol/shared-config" project by Eric Mika Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/cspell-config/package.json b/packages/cspell-config/package.json index e08100e..55dc818 100644 --- a/packages/cspell-config/package.json +++ b/packages/cspell-config/package.json @@ -1,60 +1,60 @@ { - "name": "@kitschpatrol/cspell-config", - "version": "4.7.5", - "type": "module", - "description": "CSpell configuration for @kitschpatrol/shared-config.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git", - "directory": "packages/cspell-config" - }, - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "bin": { - "cspell-config": "bin/cli.js" - }, - "main": "./cspell.config.json", - "files": [ - "bin/*", - "dictionaries/*", - "init/*" - ], - "keywords": [ - "shared-config", - "cspell-config", - "cspell", - "cli" - ], - "scripts": { - "build": "../../scripts/build.ts && mdat readme", - "cli": "node ./bin/cli.js", - "find-duplicates": "cat ./dictionaries/*.txt | sort -f | uniq -i -d", - "list-words": "cat ./dictionaries/*.txt", - "prepublishOnly": "pnpm run build", - "sort-dictionaries": "find ./dictionaries -name '*.txt' -execdir sort -f -o {} {} \\;" - }, - "peerDependencies": { - "cspell": "^8.8.4" - }, - "dependencies": { - "@pinojs/json-colorizer": "^4.0.0", - "cosmiconfig": "^9.0.0", - "execa": "^8.0.1", - "fs-extra": "^11.2.0" - }, - "publishConfig": { - "access": "public" - } + "name": "@envsa/cspell-config", + "version": "1.0.0", + "type": "module", + "description": "CSpell configuration for @envsa/shared-config.", + "repository": { + "type": "git", + "url": "git@github.com:envsa/shared-config.git", + "directory": "packages/cspell-config" + }, + "bugs": { + "url": "https://github.com/envsa/shared-config/issues", + "email": "DEW.ICTWebServices@sa.gov.au" + }, + "author": { + "name": "Liam Rella", + "email": "DEW.ICTWebServices@sa.gov.au", + "url": "https://github.com/rellafella" + }, + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "pnpm": ">=8.0.0" + }, + "bin": { + "cspell-config": "bin/cli.js" + }, + "main": "./cspell.config.json", + "files": [ + "bin/*", + "dictionaries/*", + "init/*" + ], + "keywords": [ + "shared-config", + "cspell-config", + "cspell", + "cli" + ], + "scripts": { + "build": "../../scripts/build.ts && mdat readme", + "cli": "node ./bin/cli.js", + "find-duplicates": "cat ./dictionaries/*.txt | sort -f | uniq -i -d", + "list-words": "cat ./dictionaries/*.txt", + "prepublishOnly": "pnpm run build", + "sort-dictionaries": "find ./dictionaries -name '*.txt' -execdir sort -f -o {} {} \\;" + }, + "peerDependencies": { + "cspell": "^8.8.4" + }, + "dependencies": { + "@pinojs/json-colorizer": "^4.0.0", + "cosmiconfig": "^9.0.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0" + }, + "publishConfig": { + "access": "public" + } } diff --git a/packages/cspell-config/readme.md b/packages/cspell-config/readme.md index eff092b..d95a432 100644 --- a/packages/cspell-config/readme.md +++ b/packages/cspell-config/readme.md @@ -2,20 +2,20 @@ -# @kitschpatrol/cspell-config +# @envsa/cspell-config -[![NPM Package @kitschpatrol/cspell-config](https://img.shields.io/npm/v/@kitschpatrol/cspell-config.svg)](https://npmjs.com/package/@kitschpatrol/cspell-config) +[![NPM Package @envsa/cspell-config](https://img.shields.io/npm/v/@envsa/cspell-config.svg)](https://npmjs.com/package/@envsa/cspell-config) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -**CSpell configuration for @kitschpatrol/shared-config.** +**CSpell configuration for @envsa/shared-config.** @@ -23,7 +23,7 @@ It's a shared [CSpell](https://cspell.org) config. -**See [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) for the recommended single-package approach.** +**See [`@envsa/shared-config`](https://www.npmjs.com/package/@envsa/shared-config) for the recommended single-package approach.** ## Setup @@ -32,13 +32,13 @@ To use just this CSpell config in isolation: 1. Install the `.npmrc` in your project root. This is required for correct PNPM behavior: ```sh - pnpm dlx @kitschpatrol/repo-config --init + pnpm dlx @envsa/repo-config --init ``` 2. Add the package: ```sh - pnpm add -D @kitschpatrol/cspell-config + pnpm add -D @envsa/cspell-config ``` 3. Add the starter `.cspell.json` file to your project root, and add any customizations you'd like: @@ -67,7 +67,7 @@ Integrate with your `package.json` scripts as you see fit, for example: #### Command: `cspell-config` -CSpell configuration for @kitschpatrol/shared-config. +CSpell configuration for @envsa/shared-config. Usage: @@ -100,23 +100,22 @@ In additional to CSpell's default dictionary configuration, this shared configur It also includes a number of _custom_ dictionaries distributed with this package, all of which are enabled by default: -- `kp-acronyms` Contains acronyms -- `kp-brands` Contains proper nouns like brand names -- `kp-files` File extensions and types -- `kp-misc` Contains general and miscellaneous words -- `kp-names` Human names and usernames -- `kp-tech` Tech-specific terminology, some ambiguity vs. "brands" +- `envsa-acronyms` Contains acronyms +- `envsa-files` File extensions and types +- `envsa-misc` Contains general and miscellaneous words +- `envsa-names` Human names and usernames +- `envsa-tech` Tech-specific terminology In your project's root `.cspell.json`, you can disable any combination of these dictionaries by adding them to the `dictionaries` array with a `!` prefix. -For example, do disable the `kp-acronyms` and `kp-brands` dictionaries: +For example, do disable the `envsa-acronyms` and `envsa-names` dictionaries: ```json { - "import": "@kitschpatrol/cspell-config", + "import": "@envsa/cspell-config", "dictionaries": [ - "!kp-acronyms", - "!kp-brands" + "!envsa-acronyms", + "!envsa-names" // ...Addtional !-prefixed dicitonary names ] } @@ -128,7 +127,7 @@ In your project's root `.cspell.json`: ```json { - "import": "@kitschpatrol/cspell-config", + "import": "@envsa/cspell-config", "words": [ "mountweazel", "steinlaus", @@ -145,10 +144,14 @@ This config includes a bunch of words I've happened to have needed to use. Your CSpell is configured to automatically ignore files and paths in `.gitignore` (via `"useGitignore": true`), and to ignore words inside of ` ``` ` code fences in markdown and mdx files. +## Credits + +[Eric Mika](https://github.com/kitschpatrol) is the author of the original [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) project on which this is based. + ## License -[MIT](license.txt) © Eric Mika +[MIT](license.txt) © Liam Rella diff --git a/packages/cspell-config/src/cli.ts b/packages/cspell-config/src/cli.ts index bea860f..88bf267 100755 --- a/packages/cspell-config/src/cli.ts +++ b/packages/cspell-config/src/cli.ts @@ -1,18 +1,18 @@ #!/usr/bin/env node -import { buildCommands } from '../../../src/command-builder.js' +import { buildCommands } from '$root/src/command-builder.ts'; await buildCommands('cspell-config', '[CSpell]', 'cyan', { - check: { - command: 'cspell', - defaultArguments: ['.'], - options: ['--quiet'], - }, - init: {}, - printConfig: { - // Doesn't work with executeJsonOutput - // because of json parsing errors (regex related) - command: 'cspell', - defaultArguments: ['.'], - options: ['--debug', '--no-exit-code', '--no-color'], - }, -}) + check: { + command: 'cspell', + defaultArguments: ['.'], + options: ['--quiet'], + }, + init: {}, + printConfig: { + // Doesn't work with executeJsonOutput + // because of json parsing errors (regex related) + command: 'cspell', + defaultArguments: ['.'], + options: ['--debug', '--no-exit-code', '--no-color'], + }, +}); diff --git a/packages/eslint-config/eslint.config.cjs b/packages/eslint-config/eslint.config.cjs deleted file mode 100644 index bac1437..0000000 --- a/packages/eslint-config/eslint.config.cjs +++ /dev/null @@ -1,352 +0,0 @@ -/* eslint-disable unicorn/no-null */ -/* eslint-disable perfectionist/sort-objects */ -const extendsPrefix = [ - 'eslint:recommended', - 'plugin:n/recommended', - 'plugin:unicorn/recommended', - 'xo', - 'plugin:perfectionist/recommended-natural-legacy', - 'prettier', // Needed here as well for files not caught by overrides -] -const extendsTypescript = ['plugin:@typescript-eslint/recommended-type-checked', 'xo-typescript'] -const extendsSuffix = ['prettier'] - -const globalRulesPrefix = { - 'max-params': 'off', - 'n/no-missing-import': 'off', // Trouble resolving in ts - 'n/no-process-exit': 'off', // Duplicated in unicorn - 'n/no-extraneous-import': 'off', // Monorepo problems - 'n/no-unpublished-import': 'off', // Monorepo problems - 'no-await-in-loop': 'off', - 'object-curly-spacing': 'off', // Shouldn't prettier get rid of this? - 'comma-dangle': 'off', // Shouldn't prettier get rid of this? - 'no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_', - destructuredArrayIgnorePattern: '^_', - }, - ], - 'no-warning-comments': 'off', - 'perfectionist/sort-imports': [ - 'error', - { - // Is this already set in the preset? - type: 'natural', - newlinesBetween: 'never', - }, - ], - 'unicorn/no-array-reduce': 'off', - 'unicorn/prevent-abbreviations': [ - 'error', - { - replacements: { - acc: false, - arg: false, - args: false, - db: false, - dev: false, - doc: false, - docs: false, - env: false, - fn: false, - i: false, - j: false, - lib: false, - param: false, - params: false, - pkg: false, - prop: false, - props: false, - ref: false, - refs: false, - src: false, - temp: false, - }, - }, - ], - // Perfectionist conflict rules, - '@typescript-eslint/adjacent-overload-signatures': 'off', - '@typescript-eslint/sort-type-constituents': 'off', - 'import/order': 'off', - 'react/jsx-sort-props': 'off', - 'sort-imports': 'off', -} - -const globalRulesTypescript = { - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_', - destructuredArrayIgnorePattern: '^_', - }, - ], - 'default-case': 'off', // TS checks - 'no-throw-literal': 'off', // Conflicts with @typescript-eslint version https://typescript-eslint.io/rules/no-throw-literal/#how-to-use - // https://typescript-eslint.io/linting/troubleshooting/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors - 'no-undef': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/naming-convention': [ - // https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/naming-convention.md - 'error', - // Group selectors - { - // Matches everything - selector: 'default', - format: ['camelCase'], - }, - { - // Forgive quoted things - selector: 'default', - format: null, - modifiers: ['requiresQuotes'], - }, - { - // Matches the same as class, enum, interface, typeAlias, typeParameter - selector: 'typeLike', - format: ['StrictPascalCase'], - }, - { - // Matches the same as function, parameter and variable - selector: 'variableLike', - leadingUnderscore: 'allow', - trailingUnderscore: 'allow', - format: ['camelCase'], - }, - // { - // // matches the same as accessor, enumMember, method, parameterProperty, property - // selector: 'memberLike' - // // format: [] - // }, - // { - // // matches the same as classMethod, objectLiteralMethod, typeMethod - // selector: 'method' - // // format: [] - // }, - // { - // // matches the same as classProperty, objectLiteralProperty, typeProperty - // selector: 'property' - // // format: [] - // }, - // Individual selectors - { - selector: 'import', - format: ['camelCase', 'StrictPascalCase'], - }, - { - // Allow Component import - selector: 'variable', - modifiers: ['destructured'], - format: ['camelCase', 'StrictPascalCase'], - }, - { - // Allow UPPER_CASE const exports - selector: 'variable', - modifiers: ['const', 'exported'], - format: ['UPPER_CASE'], - }, - ], -} - -/* @type {import('eslint').Linter.Config} */ -module.exports = { - plugins: ['@html-eslint', 'html'], - extends: extendsPrefix, - env: { - browser: true, - es2022: true, // TODO 2024 like xo? - node: true, - }, - parser: '@typescript-eslint/parser', // Todo right choice for jsdoc js? - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - ecmaVersion: 2022, - extraFileExtensions: ['.svelte', '.astro'], // Essential for these file types to make it to the override - project: 'tsconfig.eslint.json', - tsconfigRootDir: process.cwd(), // Look for tsconfig in the consuming project's root - sourceType: 'module', - }, - rules: globalRulesPrefix, - overrides: [ - // HTML (and inline scripts) - { - files: ['*.html'], - parser: '@html-eslint/parser', - rules: { - // Best Practice - '@html-eslint/no-duplicate-attrs': 'error', - '@html-eslint/no-duplicate-id': 'error', - '@html-eslint/no-inline-styles': 'error', - '@html-eslint/no-obsolete-tags': 'error', - '@html-eslint/no-restricted-attr-values': 'error', - '@html-eslint/no-restricted-attrs': 'error', - '@html-eslint/no-script-style-type': 'error', - '@html-eslint/no-target-blank': 'error', - '@html-eslint/require-attrs': 'error', - '@html-eslint/require-button-type': 'error', - // '@html-eslint/require-closing-tags': 'error', - '@html-eslint/require-doctype': 'error', - '@html-eslint/require-li-container': 'error', - '@html-eslint/require-meta-charset': 'error', - // SEO - '@html-eslint/no-multiple-h1': 'error', - '@html-eslint/require-lang': 'error', - // '@html-eslint/require-meta-description': 'error', - // '@html-eslint/require-open-graph-protocol': 'error', - '@html-eslint/require-title': 'error', - // Accessibility - '@html-eslint/no-abstract-roles': 'error', - '@html-eslint/no-accesskey-attrs': 'error', - '@html-eslint/no-aria-hidden-body': 'error', - '@html-eslint/no-non-scalable-viewport': 'error', - '@html-eslint/no-positive-tabindex': 'error', - '@html-eslint/no-skip-heading-levels': 'error', - '@html-eslint/require-frame-title': 'error', - '@html-eslint/require-img-alt': 'error', - '@html-eslint/require-meta-viewport': 'error', - }, - }, - - // Markdown - { - extends: ['plugin:mdx/recommended'], - files: ['*.md'], - parser: 'eslint-mdx', - rules: globalRulesPrefix, - }, - // MDX - { - extends: ['plugin:mdx/recommended', ...extendsSuffix], - files: ['*.mdx'], - parser: 'eslint-mdx', - rules: { - ...globalRulesPrefix, - 'no-unused-expressions': 'off', - 'no-unused-vars': 'off', - - // MDX files can be PascalCase OR kebab-case, depending on whether - // the file's core nature is that of content or component - 'unicorn/filename-case': [ - 'error', - { - cases: { - kebabCase: true, - pascalCase: true, - }, - }, - ], - }, - settings: { - 'mdx/code-blocks': false, - }, - }, - // TypeScript - { - extends: [...extendsTypescript, ...extendsSuffix], - files: ['*.ts', '*.tsx', '*.mts', '*.cts'], - // SvelteKit - overrides: [ - { - files: ['**/routes/**/+*.ts'], - rules: { - // Error often imported from from '@sveltejs/kit in SvelteKit files - '@typescript-eslint/no-throw-literal': 'off', - }, - }, - ], - parser: '@typescript-eslint/parser', - parserOptions: { - project: 'tsconfig.eslint.json', // Not sure why this isn't inherited - }, - rules: { - ...globalRulesPrefix, - ...globalRulesTypescript, - }, - }, - // JavaScript - { - extends: [...extendsSuffix], - files: ['*.jsx', '*.mjs', '*.cjs', '.js'], - rules: { - ...globalRulesPrefix, - ...globalRulesTypescript, - }, - }, - // Astro - { - extends: [ - ...extendsTypescript, - 'plugin:astro/recommended', - 'plugin:astro/jsx-a11y-recommended', - ...extendsSuffix, - ], - files: ['*.astro'], - parser: 'astro-eslint-parser', - parserOptions: { - extraFileExtensions: ['.astro'], - parser: '@typescript-eslint/parser', - project: 'tsconfig.eslint.json', // Not sure why this isn't inherited - sourceType: 'module', - }, - rules: { - ...globalRulesPrefix, - ...globalRulesTypescript, - '@typescript-eslint/no-unsafe-assignment': 'off', // Crashing - '@typescript-eslint/no-unsafe-return': 'off', // Happens in templates - // Astro components are usually PascalCase, - // but when used as pages they are kebab-case - 'unicorn/filename-case': [ - 'error', - { - cases: { - kebabCase: true, - pascalCase: true, - }, - ignore: [String.raw`^\[slug\]\.astro$`], - }, - ], - }, - }, - // Svelte - { - extends: [ - ...extendsTypescript, - 'plugin:svelte/recommended', - ...extendsSuffix, - 'plugin:svelte/prettier', - ], - files: ['*.svelte'], - parser: 'svelte-eslint-parser', - parserOptions: { - extraFileExtensions: ['.svelte'], - parser: '@typescript-eslint/parser', - project: true, - sourceType: 'module', - }, - rules: { - ...globalRulesPrefix, - ...globalRulesTypescript, - '@typescript-eslint/no-confusing-void-expression': 'off', // Reactive statements - '@typescript-eslint/no-unused-expressions': 'off', // Needed for reactive statements - 'import/no-mutable-exports': 'off', // Allow prop export - 'no-sequences': 'off', // Reactive statements - // https://github.com/typescript-eslint/typescript-eslint/blob/1cf9243/docs/getting-started/linting/FAQ.md#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors - 'no-undef-init': 'off', // Initialize props to undefined - 'prefer-const': 'off', // Needed for let props - 'unicorn/filename-case': [ - // Svelte components are PascalCase - 'error', - { - case: 'pascalCase', - ignore: [ - String.raw`^\+`, // SvelteKit +page.svelte etc. - ], - }, - ], - 'unicorn/no-useless-undefined': 'off', // Needed for let props - }, - }, - ], -} diff --git a/packages/eslint-config/eslint.config.js b/packages/eslint-config/eslint.config.js new file mode 100644 index 0000000..9a468d5 --- /dev/null +++ b/packages/eslint-config/eslint.config.js @@ -0,0 +1,128 @@ +import pluginCspell from '@cspell/eslint-plugin'; +import { includeIgnoreFile } from '@eslint/compat'; +import eslint from '@eslint/js'; +import pluginImportX from 'eslint-plugin-import-x'; +import pluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import pluginUnicorn from 'eslint-plugin-unicorn'; +import globals from 'globals'; +import fs from 'node:fs'; +import path from 'node:path'; +import typescriptEslint from 'typescript-eslint'; + +const gitignorePath = path.join(process.cwd(), '.gitignore'); + +export default typescriptEslint.config( + // Use project .gitignore file for a basis of ignored files + { + ignores: fs.existsSync(gitignorePath) ? includeIgnoreFile(gitignorePath)?.ignores : [], + }, + // 1st party eslint config + eslint.configs.recommended, + // Unicorn config + pluginUnicorn.configs['flat/recommended'], + // ImportX config + pluginImportX.flatConfigs.recommended, + // Enable cspell plugin + { + name: 'CSpell config', + plugins: { + '@cspell': pluginCspell, + }, + rules: { + '@cspell/spellchecker': 1, + }, + }, + // Typescript config + { + name: 'Typescript config', + files: ['**/*.ts'], + extends: [ + ...typescriptEslint.configs.recommendedTypeChecked, + ...typescriptEslint.configs.stylisticTypeChecked, + pluginImportX.flatConfigs.typescript, + ], + languageOptions: { + parserOptions: { + project: ['tsconfig.eslint.json'], + }, + }, + }, + // Primary config + { + name: 'Primary config', + files: ['**/*.{js,mjs,cjs,ts}'], + languageOptions: { + parserOptions: { + requireConfigFile: false, + ecmaVersion: 2024, + sourceType: 'module', + }, + globals: { + ...globals.browser, + ...globals.node, + }, + }, + settings: { + 'import-x/resolver': { + node: { + extensions: ['.js', '.mjs', '.cjs', '.ts'], + }, + typescript: { + alwaysTryTypes: true, + }, + }, + }, + rules: { + // ImportX rule overrides + 'import-x/exports-last': 'error', + 'import-x/first': 'error', + 'import-x/extensions': ['error', 'ignorePackages'], + 'import-x/newline-after-import': 'error', + 'import-x/no-extraneous-dependencies': [ + 'error', + { + devDependencies: [ + './*.{mjs,cjs,js,ts}', // Any root project files + '**/dev/**/', // Any files in a 'dev/' dir + '**/dev.{mjs,cjs,js,ts}', // Any file named dev + '**/*.{test}.{mjs,cjs,js,ts}', // Any test files + '**/{test,tests,__tests__}/**/', // Any files in common test dirs + ], + }, + ], + 'import-x/no-absolute-path': 'error', + 'import-x/no-amd': 'error', + 'import-x/no-dynamic-require': 'error', + 'import-x/no-import-module-exports': 'error', + 'import-x/no-mutable-exports': 'error', + 'import-x/no-named-default': 'error', + 'import-x/no-relative-packages': 'error', + 'import-x/no-self-import': 'error', + 'import-x/no-useless-path-segments': 'error', + 'import-x/no-webpack-loader-syntax': 'error', + // Unicorn rule overrides + 'unicorn/no-array-reduce': 'off', + 'unicorn/no-object-as-default-parameter': 'off', + 'unicorn/prefer-top-level-await': 'off', + 'unicorn/prevent-abbreviations': [ + 'error', + { + allowList: { + dev: true, + useDevServer: true, + args: true, + }, + }, + ], + }, + }, + // Prettier must come last + // Prettier config + pluginPrettierRecommended, + { + name: 'Prettier config', + rules: { + 'prettier/prettier': 'error', + }, + }, +); diff --git a/packages/eslint-config/init/.eslintignore b/packages/eslint-config/init/.eslintignore deleted file mode 100644 index 69cb12b..0000000 --- a/packages/eslint-config/init/.eslintignore +++ /dev/null @@ -1,25 +0,0 @@ -# ESLint Ignore -# Does not inherit from .gitignore - -# @kitschpatrol/repo-config boilerplate -.astro/ -.DS_Store -.env -.env.* -!.env.example -.svelte-kit/ -{tmp,temp}/ -**/*.min.js -/scratch/ -bower_components/ -build/ -coverage/ -dist/ -env.d.ts -node_modules/ -vendor/ - -# @kitschpatrol/eslint-config boilerplate -/patches/ - -# Customizations diff --git a/packages/eslint-config/init/.eslintrc.cjs b/packages/eslint-config/init/.eslintrc.cjs deleted file mode 100644 index 4de3181..0000000 --- a/packages/eslint-config/init/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -/* eslint-disable perfectionist/sort-objects */ -/* @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - extends: ['@kitschpatrol/eslint-config'], - // Overrides -} diff --git a/packages/eslint-config/init/.vscode/extensions.json b/packages/eslint-config/init/.vscode/extensions.json index e6cd984..940260d 100644 --- a/packages/eslint-config/init/.vscode/extensions.json +++ b/packages/eslint-config/init/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["dbaeumer.vscode-eslint"] + "recommendations": ["dbaeumer.vscode-eslint"] } diff --git a/packages/eslint-config/init/.vscode/settings.json b/packages/eslint-config/init/.vscode/settings.json index 4277640..55796b8 100644 --- a/packages/eslint-config/init/.vscode/settings.json +++ b/packages/eslint-config/init/.vscode/settings.json @@ -1,18 +1,9 @@ { - "editor.codeActionsOnSave": { - "source.fixAll": "explicit" - }, - "eslint.enable": true, - "eslint.validate": [ - "astro", - "html", - "javascript", - "javascriptreact", - "markdown", - "mdx", - "svelte", - "typescript", - "typescriptreact" - ], - "typescript.tsdk": "node_modules/typescript/lib" + "editor.codeActionsOnSave": { + "source.fixAll": "explicit" + }, + "eslint.enable": true, + "eslint.useFlatConfig": true, + "eslint.validate": ["html", "javascript", "markdown", "svelte", "typescript", "twig"], + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/packages/eslint-config/init/eslint.config.js b/packages/eslint-config/init/eslint.config.js new file mode 100644 index 0000000..a9229a9 --- /dev/null +++ b/packages/eslint-config/init/eslint.config.js @@ -0,0 +1,12 @@ +import configEnvsa from '@envsa/eslint-config'; + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + ...configEnvsa, + // Config overrides + // { + // rules: { + // // Add your custom rules here + // } + // } +]; diff --git a/packages/eslint-config/init/tsconfig.eslint.json b/packages/eslint-config/init/tsconfig.eslint.json index f824125..12ae9b0 100644 --- a/packages/eslint-config/init/tsconfig.eslint.json +++ b/packages/eslint-config/init/tsconfig.eslint.json @@ -1,11 +1,11 @@ { - "compilerOptions": { - "noEmit": true, - "allowJs": true - }, - "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": true, + "allowJs": true + }, + "extends": "./tsconfig.json", - /* Also lint config files. */ - "include": ["**/*", "**/**.*"], - "exclude": ["dist/", "bin/"] + /* Also lint config files. */ + "include": ["**/*", "**/**.*"], + "exclude": ["dist/", "bin/"] } diff --git a/packages/eslint-config/init/tsconfig.json b/packages/eslint-config/init/tsconfig.json index d89c576..88e17bb 100644 --- a/packages/eslint-config/init/tsconfig.json +++ b/packages/eslint-config/init/tsconfig.json @@ -1,26 +1,26 @@ { - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - "noEmit": true, - "noErrorTruncation": true, + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "noEmit": true, + "noErrorTruncation": true, - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, - "include": ["**/*"], - "exclude": ["dist/", "bin/"] + "include": ["**/*"], + "exclude": ["dist/", "bin/"] } diff --git a/packages/eslint-config/license.txt b/packages/eslint-config/license.txt index bc47b30..4097ab1 100644 --- a/packages/eslint-config/license.txt +++ b/packages/eslint-config/license.txt @@ -1,6 +1,8 @@ MIT License -Copyright (c) 2023-2024 Eric Mika +Copyright (c) 2024 Liam Rella + +Based on the MIT-licensed "@kitschpatrol/shared-config" project by Eric Mika Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 5105edf..52f598e 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,71 +1,68 @@ { - "name": "@kitschpatrol/eslint-config", - "version": "4.7.5", - "type": "module", - "description": "ESLint configuration for @kitschpatrol/shared-config.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git", - "directory": "packages/eslint-config" - }, - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "bin": { - "eslint-config": "bin/cli.js" - }, - "main": "./eslint.config.cjs", - "files": [ - "bin/*", - "init/*" - ], - "keywords": [ - "shared-config", - "eslint-config", - "eslint", - "cli" - ], - "scripts": { - "build": "../../scripts/build.ts && mdat readme", - "cli": "node ./bin/cli.js", - "prepublishOnly": "pnpm run build" - }, - "peerDependencies": { - "eslint": "^8.57.0" - }, - "dependencies": { - "@html-eslint/eslint-plugin": "^0.26.0", - "@html-eslint/parser": "^0.26.0", - "@pinojs/json-colorizer": "^4.0.0", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", - "astro-eslint-parser": "^1.0.2", - "eslint-config-prettier": "^9.1.0", - "eslint-config-xo": "^0.45.0", - "eslint-config-xo-typescript": "^5.0.0", - "eslint-plugin-astro": "^1.2.3", - "eslint-plugin-html": "^8.1.1", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-mdx": "^3.1.5", - "eslint-plugin-n": "^17.10.2", - "eslint-plugin-perfectionist": "^3.4.0", - "eslint-plugin-svelte": "^2.43.0", - "eslint-plugin-unicorn": "^55.0.0", - "execa": "^8.0.1", - "fs-extra": "^11.2.0" - }, - "publishConfig": { - "access": "public" - } + "name": "@envsa/eslint-config", + "version": "1.0.0", + "type": "module", + "description": "ESLint configuration for @envsa/shared-config.", + "repository": { + "type": "git", + "url": "git@github.com:envsa/shared-config.git", + "directory": "packages/eslint-config" + }, + "bugs": { + "url": "https://github.com/envsa/shared-config/issues", + "email": "DEW.ICTWebServices@sa.gov.au" + }, + "author": { + "name": "Liam Rella", + "email": "DEW.ICTWebServices@sa.gov.au", + "url": "https://github.com/rellafella" + }, + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "pnpm": ">=8.0.0" + }, + "bin": { + "eslint-config": "bin/cli.js" + }, + "main": "./eslint.config.js", + "files": [ + "bin/*", + "init/*" + ], + "keywords": [ + "shared-config", + "eslint-config", + "eslint", + "cli" + ], + "scripts": { + "build": "../../scripts/build.ts && mdat readme", + "cli": "node ./bin/cli.js", + "prepublishOnly": "pnpm run build" + }, + "peerDependencies": { + "eslint": "^8.0.0" + }, + "dependencies": { + "@cspell/eslint-plugin": "^8.14.2", + "@eslint/compat": "^1.1.1", + "@eslint/js": "^9.10.0", + "@pinojs/json-colorizer": "^4.0.0", + "cosmiconfig": "^9.0.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-alias": "^1.1.2", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import-x": "^4.2.1", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-svelte": "^2.43.0", + "eslint-plugin-unicorn": "^55.0.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0", + "globals": "^15.9.0", + "typescript-eslint": "^8.4.0" + }, + "publishConfig": { + "access": "public" + } } diff --git a/packages/eslint-config/readme.md b/packages/eslint-config/readme.md index d9cce26..46214a4 100644 --- a/packages/eslint-config/readme.md +++ b/packages/eslint-config/readme.md @@ -2,20 +2,20 @@ -# @kitschpatrol/eslint-config +# @envsa/eslint-config -[![NPM Package @kitschpatrol/eslint-config](https://img.shields.io/npm/v/@kitschpatrol/eslint-config.svg)](https://npmjs.com/package/@kitschpatrol/eslint-config) +[![NPM Package @envsa/eslint-config](https://img.shields.io/npm/v/@envsa/eslint-config.svg)](https://npmjs.com/package/@envsa/eslint-config) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -**ESLint configuration for @kitschpatrol/shared-config.** +**ESLint configuration for @envsa/shared-config.** @@ -23,7 +23,7 @@ It's a shared [ESLint](https://eslint.org) config. -**See [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) for the recommended single-package approach.** +**See [`@envsa/shared-config`](https://www.npmjs.com/package/@envsa/shared-config) for the recommended single-package approach.** ## Setup @@ -32,13 +32,13 @@ To use just this ESLint config in isolation: 1. Install the `.npmrc` in your project root. This is required for correct PNPM behavior: ```sh - pnpm dlx @kitschpatrol/repo-config --init + pnpm dlx @envsa/repo-config --init ``` 2. Add the package: ```sh - pnpm add -D @kitschpatrol/eslint-config + pnpm add -D @envsa/eslint-config ``` 3. Add the starter `.eslintrc.cjs` config and `.eslintignore` files to your project root, and add any overrides you'd like: @@ -68,7 +68,7 @@ Integrate with your `package.json` scripts as you see fit, for example: #### Command: `eslint-config` -ESLint configuration for @kitschpatrol/shared-config. +ESLint configuration for @envsa/shared-config. Usage: @@ -95,10 +95,14 @@ ESLint does not inherit files and paths from `.gitignore`. Ignored paths must be This shared config will also initialize a `tsconfig.json` and a `tsconfig.eslint.json`. These should probably live in a separate configuration package, but they'll reside here for now. +## Credits + +[Eric Mika](https://github.com/kitschpatrol) is the author of the original [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) project on which this is based. + ## License -[MIT](license.txt) © Eric Mika +[MIT](license.txt) © Liam Rella diff --git a/packages/eslint-config/src/cli.ts b/packages/eslint-config/src/cli.ts index f6fcf8c..83833f4 100755 --- a/packages/eslint-config/src/cli.ts +++ b/packages/eslint-config/src/cli.ts @@ -1,27 +1,28 @@ #!/usr/bin/env node -import { buildCommands, executeJsonOutput } from '../../../src/command-builder.js' +// eslint-disable-next-line import-x/no-relative-packages +import { buildCommands, executeJsonOutput } from '$root/src/command-builder.ts'; await buildCommands('eslint-config', `[ESLint]`, 'magenta', { - check: { - command: 'eslint', - defaultArguments: ['.'], - }, - fix: { - command: 'eslint', - defaultArguments: ['.'], - options: ['--fix'], - }, - init: {}, - printConfig: { - async command(logStream, args) { - return executeJsonOutput( - logStream, - { - command: 'eslint', - options: ['--print-config'], - }, - args, - ) - }, - }, -}) + check: { + command: 'eslint', + defaultArguments: ['.'], + }, + fix: { + command: 'eslint', + defaultArguments: ['.'], + options: ['--fix'], + }, + init: {}, + printConfig: { + async command(logStream, args) { + return executeJsonOutput( + logStream, + { + command: 'eslint', + options: ['--print-config'], + }, + args, + ); + }, + }, +}); diff --git a/packages/eslint-config/tsconfig.eslint.json b/packages/eslint-config/tsconfig.eslint.json new file mode 100644 index 0000000..4082f16 --- /dev/null +++ b/packages/eslint-config/tsconfig.eslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} diff --git a/packages/mdat-config/init/.mdatrc.ts b/packages/mdat-config/init/.mdatrc.ts index 5b627b7..03cca6c 100644 --- a/packages/mdat-config/init/.mdatrc.ts +++ b/packages/mdat-config/init/.mdatrc.ts @@ -1,6 +1,6 @@ -import mdatConfig from '@kitschpatrol/mdat-config' -import { mergeConfigs } from 'mdat' +import mdatConfig from '@envsa/mdat-config'; +import { mergeConfigs } from 'mdat'; export default mergeConfigs(mdatConfig, { - // Custom mdat config goes here -}) + // Custom mdat config goes here +}); diff --git a/packages/mdat-config/license.txt b/packages/mdat-config/license.txt index bc47b30..4097ab1 100644 --- a/packages/mdat-config/license.txt +++ b/packages/mdat-config/license.txt @@ -1,6 +1,8 @@ MIT License -Copyright (c) 2023-2024 Eric Mika +Copyright (c) 2024 Liam Rella + +Based on the MIT-licensed "@kitschpatrol/shared-config" project by Eric Mika Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/mdat-config/mdat.config.ts b/packages/mdat-config/mdat.config.ts index 0c60820..663656e 100644 --- a/packages/mdat-config/mdat.config.ts +++ b/packages/mdat-config/mdat.config.ts @@ -1,8 +1,8 @@ -import { type Config } from 'mdat' +import { type Config } from 'mdat'; export default { - rules: { - 'shared-config': - '## Project configuration\n\nThis project uses [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) to consolidate various linting and formatting tool configurations under a single dependency and command. (ESLint, Prettier, CSpell, etc.)', - }, -} satisfies Config + rules: { + 'shared-config': + '## Project configuration\n\nThis project uses [@envsa/shared-config](https://github.com/envsa/shared-config) to consolidate various linting and formatting tool configurations under a single dependency and command. (ESLint, Prettier, CSpell, etc.)', + }, +} satisfies Config; diff --git a/packages/mdat-config/package.json b/packages/mdat-config/package.json index d51a7aa..26da9f5 100644 --- a/packages/mdat-config/package.json +++ b/packages/mdat-config/package.json @@ -1,60 +1,60 @@ { - "name": "@kitschpatrol/mdat-config", - "version": "4.7.5", - "type": "module", - "description": "MDAT configuration for @kitschpatrol/shared-config.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git", - "directory": "packages/mdat-config" - }, - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "bin": { - "mdat-config": "bin/cli.js" - }, - "main": "dist/mdat.config.js", - "types": "dist/mdat.config.d.ts", - "files": [ - "bin/*", - "dist/*", - "init/*" - ], - "keywords": [ - "shared-config", - "mdat-config", - "markdown", - "readme", - "mdat", - "cli" - ], - "scripts": { - "build": "tsc && ../../scripts/build.ts && mdat readme", - "cli": "node ./bin/cli.js", - "prepublishOnly": "pnpm run build" - }, - "peerDependencies": { - "mdat": "^0.7.1" - }, - "dependencies": { - "@pinojs/json-colorizer": "^4.0.0", - "cosmiconfig": "^9.0.0", - "execa": "^8.0.1", - "fs-extra": "^11.2.0" - }, - "publishConfig": { - "access": "public" - } + "name": "@envsa/mdat-config", + "version": "1.0.0", + "type": "module", + "description": "MDAT configuration for @envsa/shared-config.", + "repository": { + "type": "git", + "url": "git@github.com:envsa/shared-config.git", + "directory": "packages/mdat-config" + }, + "bugs": { + "url": "https://github.com/envsa/shared-config/issues", + "email": "DEW.ICTWebServices@sa.gov.au" + }, + "author": { + "name": "Liam Rella", + "email": "DEW.ICTWebServices@sa.gov.au", + "url": "https://github.com/rellafella" + }, + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "pnpm": ">=8.0.0" + }, + "bin": { + "mdat-config": "bin/cli.js" + }, + "main": "dist/mdat.config.js", + "types": "dist/mdat.config.d.ts", + "files": [ + "bin/*", + "dist/*", + "init/*" + ], + "keywords": [ + "shared-config", + "mdat-config", + "markdown", + "readme", + "mdat", + "cli" + ], + "scripts": { + "build": "tsc && ../../scripts/build.ts && mdat readme", + "cli": "node ./bin/cli.js", + "prepublishOnly": "pnpm run build" + }, + "peerDependencies": { + "mdat": "^0.7.1" + }, + "dependencies": { + "@pinojs/json-colorizer": "^4.0.0", + "cosmiconfig": "^9.0.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0" + }, + "publishConfig": { + "access": "public" + } } diff --git a/packages/mdat-config/readme.md b/packages/mdat-config/readme.md index 3dd3aa5..dd3f692 100644 --- a/packages/mdat-config/readme.md +++ b/packages/mdat-config/readme.md @@ -2,20 +2,20 @@ -# @kitschpatrol/mdat-config +# @envsa/mdat-config -[![NPM Package @kitschpatrol/mdat-config](https://img.shields.io/npm/v/@kitschpatrol/mdat-config.svg)](https://npmjs.com/package/@kitschpatrol/mdat-config) +[![NPM Package @envsa/mdat-config](https://img.shields.io/npm/v/@envsa/mdat-config.svg)](https://npmjs.com/package/@envsa/mdat-config) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -**MDAT configuration for @kitschpatrol/shared-config.** +**MDAT configuration for @envsa/shared-config.** @@ -23,7 +23,7 @@ It's a shared [MDAT (Markdown Autophagic Template)](https://github.com/kitschpatrol/mdat) system config. -**See [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) for the recommended single-package approach.** +**See [`@envsa/shared-config`](https://www.npmjs.com/package/@envsa/shared-config) for the recommended single-package approach.** ## Setup @@ -32,13 +32,13 @@ To use just `mdat-config` in isolation: 1. Install the `.npmrc` in your project root. This is required for correct PNPM behavior: ```sh - pnpm dlx @kitschpatrol/repo-config --init + pnpm dlx @envsa/repo-config --init ``` 2. Add the package: ```sh - pnpm add -D @kitschpatrol/mdat-config + pnpm add -D @envsa/mdat-config ``` 3. Add the starter `.mdatrc.ts` file to your project root, and add any customizations you'd like: @@ -72,7 +72,7 @@ It runs `mdat readme expand` to expand placeholder comments in your readme.md us #### Command: `mdat-config` -MDAT configuration for @kitschpatrol/shared-config. +MDAT configuration for @envsa/shared-config. Usage: @@ -91,10 +91,14 @@ mdat-config [ ...] +## Credits + +[Eric Mika](https://github.com/kitschpatrol) is the author of the original [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) project on which this is based. + ## License -[MIT](license.txt) © Eric Mika +[MIT](license.txt) © Liam Rella diff --git a/packages/mdat-config/src/cli.ts b/packages/mdat-config/src/cli.ts index 562eb3a..82702b4 100644 --- a/packages/mdat-config/src/cli.ts +++ b/packages/mdat-config/src/cli.ts @@ -1,17 +1,18 @@ #!/usr/bin/env node -import { buildCommands } from '../../../src/command-builder.js' +// eslint-disable-next-line import-x/extensions, import-x/no-relative-packages +import { buildCommands } from '../../../src/command-builder.js'; await buildCommands('mdat-config', '[Mdat Config]', 'green', { - check: { - command: 'mdat', - defaultArguments: ['readme.md'], - options: ['readme', 'check'], - }, - fix: { - command: 'mdat', - defaultArguments: ['readme.md'], - options: ['readme', 'expand'], - }, - init: {}, - printConfig: {}, -}) + check: { + command: 'mdat', + defaultArguments: ['readme.md'], + options: ['readme', 'check'], + }, + fix: { + command: 'mdat', + defaultArguments: ['readme.md'], + options: ['readme', 'expand'], + }, + init: {}, + printConfig: {}, +}); diff --git a/packages/mdat-config/tsconfig.json b/packages/mdat-config/tsconfig.json index 80bc619..8e25154 100644 --- a/packages/mdat-config/tsconfig.json +++ b/packages/mdat-config/tsconfig.json @@ -1,10 +1,10 @@ { - "extends": "../../tsconfig.json", - "compilerOptions": { - "noEmit": false, - "declaration": true, - "allowImportingTsExtensions": false, - "outDir": "dist" - }, - "include": ["mdat.config.ts"] + "extends": "../../tsconfig.json", + "compilerOptions": { + "noEmit": false, + "declaration": true, + "allowImportingTsExtensions": false, + "outDir": "dist" + }, + "include": ["mdat.config.ts"] } diff --git a/packages/prettier-config/init/.prettierignore b/packages/prettier-config/init/.prettierignore index d18c860..cf355c0 100644 --- a/packages/prettier-config/init/.prettierignore +++ b/packages/prettier-config/init/.prettierignore @@ -1,21 +1,23 @@ # Prettier Ignore # Does not inherit from .gitignore -# @kitschpatrol/repo-config boilerplate -.astro/ +# @envsa/repo-config boilerplate .DS_Store -.svelte-kit/ -{tmp,temp}/ -**/*.min.js -/scratch/ -bower_components/ +.ddev/ +.env +.env.* +!.env.example +node_modules/ +vendor/ build/ coverage/ dist/ -node_modules/ -vendor/ +**/*.min.js +tmp/ +temp/ +_junk/ -# @kitschpatrol/prettier-config boilerplate +# @envsa/prettier-config boilerplate pnpm-lock.yaml package-lock.json diff --git a/packages/prettier-config/init/.prettierrc.js b/packages/prettier-config/init/.prettierrc.js deleted file mode 100644 index b60d8e3..0000000 --- a/packages/prettier-config/init/.prettierrc.js +++ /dev/null @@ -1,16 +0,0 @@ -import sharedConfig from '@kitschpatrol/prettier-config' - -/** @type {import("prettier").Config} */ -const localConfig = { - // Config overrides - // overrides: [ - // ...sharedConfig.overrides, - // { - // // Per-file overrides overrides - // }, - // ], -} -export default { - ...sharedConfig, - ...localConfig, -} diff --git a/packages/prettier-config/init/.vscode/extensions.json b/packages/prettier-config/init/.vscode/extensions.json index 64dbfec..c83e263 100644 --- a/packages/prettier-config/init/.vscode/extensions.json +++ b/packages/prettier-config/init/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["esbenp.prettier-vscode"] + "recommendations": ["esbenp.prettier-vscode"] } diff --git a/packages/prettier-config/init/.vscode/settings.json b/packages/prettier-config/init/.vscode/settings.json index 3cfd86b..0d0e5b8 100644 --- a/packages/prettier-config/init/.vscode/settings.json +++ b/packages/prettier-config/init/.vscode/settings.json @@ -1,29 +1,20 @@ { - "[astro]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[gitignore]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[ruby]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[shellscript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[svelte]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true, - "prettier.documentSelectors": [ - "**/.eslintignore", - "**/.node-version", - "**/.npmrc", - "**/.prettierignore", - "**/*.astro", - "**/*.rb", - "**/*.svelte" - ], - "prettier.enable": true + "[gitignore]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[shellscript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[svelte]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "prettier.documentSelectors": [ + "**/.node-version", + "**/.npmrc", + "**/.prettierignore", + "**/*.svelte" + ], + "prettier.enable": true } diff --git a/packages/prettier-config/init/prettier.config.js b/packages/prettier-config/init/prettier.config.js new file mode 100644 index 0000000..0687905 --- /dev/null +++ b/packages/prettier-config/init/prettier.config.js @@ -0,0 +1,16 @@ +import sharedConfig from '@envsa/prettier-config'; + +/** @type {import("prettier").Config} */ +const localConfig = { + // Config overrides + // overrides: [ + // ...sharedConfig.overrides, + // { + // // Per-file overrides overrides + // }, + // ], +}; +export default { + ...sharedConfig, + ...localConfig, +}; diff --git a/packages/prettier-config/license.txt b/packages/prettier-config/license.txt index bc47b30..4097ab1 100644 --- a/packages/prettier-config/license.txt +++ b/packages/prettier-config/license.txt @@ -1,6 +1,8 @@ MIT License -Copyright (c) 2023-2024 Eric Mika +Copyright (c) 2024 Liam Rella + +Based on the MIT-licensed "@kitschpatrol/shared-config" project by Eric Mika Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/prettier-config/package.json b/packages/prettier-config/package.json index 455d76e..1245147 100644 --- a/packages/prettier-config/package.json +++ b/packages/prettier-config/package.json @@ -1,66 +1,62 @@ { - "name": "@kitschpatrol/prettier-config", - "version": "4.7.5", - "type": "module", - "description": "Prettier configuration for @kitschpatrol/shared-config.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git", - "directory": "packages/prettier-config" - }, - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "bin": { - "prettier-config": "bin/cli.js" - }, - "main": "prettier.config.js", - "files": [ - "bin/*", - "init/*" - ], - "keywords": [ - "shared-config", - "prettier-config", - "prettier", - "cli" - ], - "scripts": { - "build": "../../scripts/build.ts && mdat readme", - "cli": "node ./bin/cli.js", - "prepublishOnly": "pnpm run build" - }, - "peerDependencies": { - "prettier": "^3.3.1" - }, - "dependencies": { - "@pinojs/json-colorizer": "^4.0.0", - "@prettier/plugin-php": "^0.22.2", - "@prettier/plugin-ruby": "^4.0.4", - "@prettier/plugin-xml": "^3.4.1", - "cosmiconfig": "^9.0.0", - "execa": "^8.0.1", - "fs-extra": "^11.2.0", - "prettier-plugin-astro": "^0.14.1", - "prettier-plugin-pkg": "^0.18.1", - "prettier-plugin-sh": "^0.14.0", - "prettier-plugin-sql": "^0.18.1", - "prettier-plugin-svelte": "^3.2.6", - "prettier-plugin-tailwindcss": "^0.6.6", - "prettier-plugin-toml": "^2.0.1" - }, - "publishConfig": { - "access": "public" - } + "name": "@envsa/prettier-config", + "version": "1.0.0", + "type": "module", + "description": "Prettier configuration for @envsa/shared-config.", + "repository": { + "type": "git", + "url": "git@github.com:envsa/shared-config.git", + "directory": "packages/prettier-config" + }, + "bugs": { + "url": "https://github.com/envsa/shared-config/issues", + "email": "DEW.ICTWebServices@sa.gov.au" + }, + "author": { + "name": "Liam Rella", + "email": "DEW.ICTWebServices@sa.gov.au", + "url": "https://github.com/rellafella" + }, + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "pnpm": ">=8.0.0" + }, + "bin": { + "prettier-config": "bin/cli.js" + }, + "main": "prettier.config.js", + "files": [ + "bin/*", + "init/*" + ], + "keywords": [ + "shared-config", + "prettier-config", + "prettier", + "cli" + ], + "scripts": { + "build": "../../scripts/build.ts && mdat readme", + "cli": "node ./bin/cli.js", + "prepublishOnly": "pnpm run build" + }, + "peerDependencies": { + "prettier": "^3.3.1" + }, + "dependencies": { + "@pinojs/json-colorizer": "^4.0.0", + "@prettier/plugin-php": "^0.22.2", + "@prettier/plugin-xml": "^3.4.1", + "cosmiconfig": "^9.0.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0", + "prettier-plugin-pkg": "^0.18.1", + "prettier-plugin-sh": "^0.14.0", + "prettier-plugin-svelte": "^3.2.4", + "prettier-plugin-tailwindcss": "^0.6.2" + }, + "publishConfig": { + "access": "public" + } } diff --git a/packages/prettier-config/prettier.config.js b/packages/prettier-config/prettier.config.js index 00999d0..26be6e2 100644 --- a/packages/prettier-config/prettier.config.js +++ b/packages/prettier-config/prettier.config.js @@ -1,59 +1,62 @@ -import { homedir } from 'node:os' - /** @type {import("prettier").Config} */ const config = { - bracketSpacing: true, - overrides: [ - { - files: ['*.md', '*.mdx', '*.yml'], - options: { - useTabs: false, - }, - }, - { - files: '*.astro', - options: { - parser: 'astro', - plugins: ['prettier-plugin-astro'], - }, - }, - { - files: '*.svelte', - options: { - parser: 'svelte', - plugins: ['prettier-plugin-svelte'], - }, - }, - { - files: '*.rb', - options: { - rubyExecutablePath: `${homedir}/.rbenv/shims/ruby`, - }, - }, - { - files: ['*rc', '*ignore', '*.sh', '*.zsh', '*.bash', '*.fish'], - options: { - parser: 'sh', - plugins: ['prettier-plugin-sh'], - }, - }, - ], - plugins: [ - '@prettier/plugin-php', - '@prettier/plugin-ruby', - '@prettier/plugin-xml', - 'prettier-plugin-pkg', - 'prettier-plugin-sh', - 'prettier-plugin-sql', - 'prettier-plugin-tailwindcss', - 'prettier-plugin-toml', - ], - printWidth: 100, - semi: false, - singleQuote: true, - tabWidth: 2, - trailingComma: 'all', - useTabs: true, -} + arrowParens: 'always', + bracketSpacing: true, + overrides: [ + { + files: '*.json5', + options: { + parser: 'json5', + quoteProps: 'preserve', + singleQuote: false, + trailingComma: 'none', + }, + }, + { + files: '*.php', + options: { + phpVersion: '8.2', + printWidth: 80, + parser: 'php', + tabWidth: 4, + trailingCommaPHP: true, + }, + }, + { + files: '*.{yml,yaml}', + options: { + singleQuote: false, + tabWidth: 4, + }, + }, + { + files: ['*rc', '*ignore', '*.sh', '*.zsh', '*.bash', '*.fish'], + options: { + parser: 'sh', + plugins: ['prettier-plugin-sh'], + }, + }, + { + files: '*.svelte', + options: { + parser: 'svelte', + plugins: ['prettier-plugin-svelte', 'prettier-plugin-tailwindcss'], + }, + }, + ], + plugins: [ + '@prettier/plugin-php', + '@prettier/plugin-xml', + 'prettier-plugin-pkg', + 'prettier-plugin-sh', + // 'prettier-plugin-tailwindcss', + ], + printWidth: 100, + semi: true, + singleQuote: true, + tabWidth: 2, + trailingComma: 'all', + useTabs: false, +}; -export default config +export default config; diff --git a/packages/prettier-config/readme.md b/packages/prettier-config/readme.md index 318a042..1a3b125 100644 --- a/packages/prettier-config/readme.md +++ b/packages/prettier-config/readme.md @@ -2,20 +2,20 @@ -# @kitschpatrol/prettier-config +# @envsa/prettier-config -[![NPM Package @kitschpatrol/prettier-config](https://img.shields.io/npm/v/@kitschpatrol/prettier-config.svg)](https://npmjs.com/package/@kitschpatrol/prettier-config) +[![NPM Package @envsa/prettier-config](https://img.shields.io/npm/v/@envsa/prettier-config.svg)](https://npmjs.com/package/@envsa/prettier-config) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -**Prettier configuration for @kitschpatrol/shared-config.** +**Prettier configuration for @envsa/shared-config.** @@ -23,7 +23,7 @@ It's a shared [Prettier](https://prettier.io) config. -**See [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) for the recommended single-package approach.** +**See [`@envsa/shared-config`](https://www.npmjs.com/package/@envsa/shared-config) for the recommended single-package approach.** ## Setup @@ -32,13 +32,13 @@ To use just this Prettier config in isolation: 1. Install the `.npmrc` in your project root. This is required for correct PNPM behavior: ```sh - pnpm dlx @kitschpatrol/repo-config --init + pnpm dlx @envsa/repo-config --init ``` 2. Add the package: ```sh - pnpm add -D @kitschpatrol/prettier-config + pnpm add -D @envsa/prettier-config ``` 3. Add the starter `.prettierrc.js` and `.prettierignore` files to your project root, and add any customizations you'd like: @@ -70,7 +70,7 @@ You might need to pass certain plugins in explicitly. The `shared-config --fix` #### Command: `prettier-config` -Prettier configuration for @kitschpatrol/shared-config. +Prettier configuration for @envsa/shared-config. Usage: @@ -89,22 +89,14 @@ prettier-config [ ...] -## Ruby support +## Credits -Ruby formatting Expects a global Ruby install >=2.7 via `rbenv` at `~/.rbenv/shims/ruby` with the following gems: - -- `bundler` -- `prettier_print` -- `syntax_tree` -- `syntax_tree-haml` -- `syntax_tree-rbs` - -Note: Do _not_ add `plugins: ['prettier-plugin-ruby']` to the per-file scope, it must be global. +[Eric Mika](https://github.com/kitschpatrol) is the author of the original [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) project on which this is based. ## License -[MIT](license.txt) © Eric Mika +[MIT](license.txt) © Liam Rella diff --git a/packages/prettier-config/src/cli.ts b/packages/prettier-config/src/cli.ts index 742ed7f..ee3384a 100644 --- a/packages/prettier-config/src/cli.ts +++ b/packages/prettier-config/src/cli.ts @@ -1,33 +1,29 @@ #!/usr/bin/env node -import { buildCommands } from '../../../src/command-builder.js' +import { buildCommands } from '$root/src/command-builder.ts'; // TODO bad idea? // At least test the ruby situation const sharedOptions = [ - '--log-level=warn', - '--plugin=@prettier/plugin-php', - '--plugin=@prettier/plugin-ruby', - '--plugin=@prettier/plugin-xml', - '--plugin=prettier-plugin-astro', - '--plugin=prettier-plugin-pkg', - '--plugin=prettier-plugin-sh', - '--plugin=prettier-plugin-sql', - '--plugin=prettier-plugin-svelte', - '--plugin=prettier-plugin-tailwindcss', - '--plugin=prettier-plugin-toml', -] + '--log-level=warn', + '--plugin=@prettier/plugin-php', + '--plugin=@prettier/plugin-xml', + '--plugin=prettier-plugin-pkg', + '--plugin=prettier-plugin-sh', + '--plugin=prettier-plugin-svelte', + '--plugin=prettier-plugin-tailwindcss', +]; await buildCommands('prettier-config', '[Prettier]', 'blue', { - check: { - command: 'prettier', - defaultArguments: ['.'], - options: [...sharedOptions, '--check'], - }, - fix: { - command: 'prettier', - defaultArguments: ['.'], - options: [...sharedOptions, '--write'], - }, - init: {}, - printConfig: {}, -}) + check: { + command: 'prettier', + defaultArguments: ['.'], + options: [...sharedOptions, '--check'], + }, + fix: { + command: 'prettier', + defaultArguments: ['.'], + options: [...sharedOptions, '--write'], + }, + init: {}, + printConfig: {}, +}); diff --git a/packages/remark-config/init/.remarkrc.js b/packages/remark-config/init/.remarkrc.js deleted file mode 100644 index 8b5f18a..0000000 --- a/packages/remark-config/init/.remarkrc.js +++ /dev/null @@ -1,12 +0,0 @@ -import sharedConfig, { overrideRules } from '@kitschpatrol/remark-config' - -const localConfig = { - ...sharedConfig, - // Overrides are a special case, working as below (set `false` as the second element to disable): - // plugins: overrideRules(sharedConfig.plugins, [ - // ['remark-lint-first-heading-level', 2], - // ['remarkValidateLinks', { repository: false }], - // ]), -} - -export default localConfig diff --git a/packages/remark-config/init/.vscode/extensions.json b/packages/remark-config/init/.vscode/extensions.json deleted file mode 100644 index d61eaa7..0000000 --- a/packages/remark-config/init/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["unifiedjs.vscode-mdx"] -} diff --git a/packages/remark-config/license.txt b/packages/remark-config/license.txt deleted file mode 100644 index bc47b30..0000000 --- a/packages/remark-config/license.txt +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023-2024 Eric Mika - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/remark-config/package.json b/packages/remark-config/package.json deleted file mode 100644 index c456da5..0000000 --- a/packages/remark-config/package.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "name": "@kitschpatrol/remark-config", - "version": "4.7.5", - "type": "module", - "description": "Markdown and MDX linting for @kitschpatrol/shared-config.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git", - "directory": "packages/remark-config" - }, - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "bin": { - "remark-config": "bin/cli.js" - }, - "main": "remark.config.js", - "files": [ - "bin/*", - "init/*" - ], - "keywords": [ - "shared-config", - "remark-config", - "remark-lint", - "remark", - "cli" - ], - "scripts": { - "build": "../../scripts/build.ts && mdat readme", - "cli": "node ./bin/cli.js", - "prepublishOnly": "pnpm run build" - }, - "dependencies": { - "@pinojs/json-colorizer": "^4.0.0", - "cosmiconfig": "^9.0.0", - "execa": "^8.0.1", - "fs-extra": "^11.2.0", - "remark-cli": "^12.0.1", - "remark-directive": "^3.0.0", - "remark-frontmatter": "^5.0.0", - "remark-gfm": "^4.0.0", - "remark-lint": "^10.0.0", - "remark-lint-checkbox-character-style": "^5.0.0", - "remark-lint-checkbox-content-indent": "^5.0.0", - "remark-lint-code-block-style": "^4.0.0", - "remark-lint-emphasis-marker": "^4.0.0", - "remark-lint-fenced-code-flag": "^4.0.0", - "remark-lint-fenced-code-marker": "^4.0.0", - "remark-lint-final-definition": "^4.0.1", - "remark-lint-first-heading-level": "^4.0.0", - "remark-lint-heading-increment": "^4.0.0", - "remark-lint-linebreak-style": "^4.0.0", - "remark-lint-maximum-heading-length": "^4.0.0", - "remark-lint-no-duplicate-defined-urls": "^3.0.0", - "remark-lint-no-duplicate-definitions": "^4.0.0", - "remark-lint-no-duplicate-headings": "^4.0.0", - "remark-lint-no-duplicate-headings-in-section": "^4.0.0", - "remark-lint-no-empty-url": "^4.0.0", - "remark-lint-no-file-name-articles": "^3.0.0", - "remark-lint-no-file-name-consecutive-dashes": "^3.0.0", - "remark-lint-no-file-name-irregular-characters": "^3.0.0", - "remark-lint-no-file-name-outer-dashes": "^3.0.0", - "remark-lint-no-heading-indent": "^5.0.0", - "remark-lint-no-heading-like-paragraph": "^4.0.0", - "remark-lint-no-literal-urls": "^4.0.0", - "remark-lint-no-multiple-toplevel-headings": "^4.0.0", - "remark-lint-no-paragraph-content-indent": "^5.0.0", - "remark-lint-no-reference-like-url": "^4.0.0", - "remark-lint-no-shell-dollars": "^4.0.0", - "remark-lint-no-shortcut-reference-image": "^4.0.0", - "remark-lint-no-shortcut-reference-link": "^4.0.0", - "remark-lint-no-tabs": "^4.0.0", - "remark-lint-no-undefined-references": "^5.0.0", - "remark-lint-no-unneeded-full-reference-image": "^4.0.0", - "remark-lint-no-unneeded-full-reference-link": "^4.0.0", - "remark-lint-no-unused-definitions": "^4.0.0", - "remark-lint-ordered-list-marker-style": "^4.0.0", - "remark-lint-rule-style": "^4.0.0", - "remark-lint-strikethrough-marker": "^3.0.0", - "remark-lint-strong-marker": "^4.0.0", - "remark-lint-table-cell-padding": "^5.0.0", - "remark-lint-unordered-list-marker-style": "^4.0.0", - "remark-preset-prettier": "^2.0.1", - "remark-validate-links": "^13.0.1" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/remark-config/readme.md b/packages/remark-config/readme.md deleted file mode 100644 index a137c53..0000000 --- a/packages/remark-config/readme.md +++ /dev/null @@ -1,121 +0,0 @@ - - - - -# @kitschpatrol/remark-config - - - - - -[![NPM Package @kitschpatrol/remark-config](https://img.shields.io/npm/v/@kitschpatrol/remark-config.svg)](https://npmjs.com/package/@kitschpatrol/remark-config) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) - - - - - -**Markdown and MDX linting for @kitschpatrol/shared-config.** - - - -## Overview - -It's a shared [Remark](https://github.com/remarkjs/remark/blob/main/packages/remark-cli/readme.md#example-config-files-json-yaml-js) config for linting. - -**See [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) for the recommended single-package approach.** - -## Setup - -To use just this Remark config in isolation: - -1. Install the `.npmrc` in your project root. This is required for correct PNPM behavior: - - ```sh - pnpm dlx @kitschpatrol/repo-config --init - ``` - -2. Add the package: - - ```sh - pnpm add -D @kitschpatrol/remark-config - ``` - -3. Add the starter `.remarkrc.js` and files to your project root, and add any customizations you'd like: - - ```sh - pnpm exec remark-config --init - ``` - -## Usage - -The Remark binary should be picked up automatically by VS Code plugins. - -You can call it directly, but it's recommended to use the script bundled with the shared config to invoke the remark lint rules through ESLint. The [`eslint-mdx`](https://github.com/mdx-js/eslint-mdx) plugin is used to bridge these rules into ESLint and the VS Code ESLint plugin. - -Integrate with your `package.json` scripts as you see fit, for example: - -```json -"scripts": { - "lint": "pnpm remark . --quiet --frail" -} -``` - -### CLI - - - -#### Command: `remark-config` - -Markdown and MDX linting for @kitschpatrol/shared-config. - -Usage: - -```txt -remark-config [ ...] -``` - -| Option | Argument | Description | -| ------------------------ | -------- | ---------------------------------------------------------------- | -| `--init`
`-i` | | Initialize by copying starter config files to your project root. | -| `--print-config`
`-p` | `` | Print the effective configuration at a certain path. | -| `--help`
`-h` | | Print this help info. | -| `--version`
`-v` | | Print the package version. | - - - -## Configuration - -### Avoiding errors in non-git projects - -The [remark-validate-links](https://github.com/remarkjs/remark-validate-links) looks for a git remote to validate relative link paths. - -If your project is not a git repository, you will receive warning from remark via eslint: - -```txt -Command failed: git remote -v -fatal: not a git repository (or any of the parent directories): .git -eslint(undefined-undefined) -``` - -To fix this, pass the `repository: false` option in your `.remarkrc.js` file: - -```js -// .remarkrc.js -import sharedConfig, { overrideRules } from '@kitschpatrol/remark-config' - -const localConfig = { - ...sharedConfig, - plugins: overrideRules(sharedConfig.plugins, [['remarkValidateLinks', { repository: false }]]), -} - -export default localConfig -``` - - - -## License - -[MIT](license.txt) © Eric Mika - - diff --git a/packages/remark-config/remark.config.js b/packages/remark-config/remark.config.js deleted file mode 100644 index 0f7bef5..0000000 --- a/packages/remark-config/remark.config.js +++ /dev/null @@ -1,155 +0,0 @@ -import remarkDirective from 'remark-directive' -import remarkFrontmatter from 'remark-frontmatter' -import remarkGfm from 'remark-gfm' -import remarkLint from 'remark-lint' -import remarkLintCheckboxCharacterStyle from 'remark-lint-checkbox-character-style' -import remarkLintCheckboxContentIndent from 'remark-lint-checkbox-content-indent' -import remarkLintCodeBlockStyle from 'remark-lint-code-block-style' -import remarkLintEmphasisMarker from 'remark-lint-emphasis-marker' -import remarkLintFencedCodeFlag from 'remark-lint-fenced-code-flag' -import remarkLintFencedCodeMarker from 'remark-lint-fenced-code-marker' -import remarkLintFinalDefinition from 'remark-lint-final-definition' -import remarkLintFirstHeadingLevel from 'remark-lint-first-heading-level' -import remarkLintHeadingIncrement from 'remark-lint-heading-increment' -import remarkLintLinebreakStyle from 'remark-lint-linebreak-style' -import remarkLintMaximumHeadingLength from 'remark-lint-maximum-heading-length' -import remarkLintNoDuplicateDefinedUrls from 'remark-lint-no-duplicate-defined-urls' -import remarkLintNoDuplicateDefinitions from 'remark-lint-no-duplicate-definitions' -import remarkLintNoDuplicateHeadings from 'remark-lint-no-duplicate-headings' -import remarkLintNoDuplicateHeadingsInSection from 'remark-lint-no-duplicate-headings-in-section' -import remarkLintNoEmptyUrl from 'remark-lint-no-empty-url' -import remarkLintNoFileNameArticles from 'remark-lint-no-file-name-articles' -import remarkLintNoFileNameConsecutiveDashes from 'remark-lint-no-file-name-consecutive-dashes' -import remarkLintNoFileNameIrregularCharacters from 'remark-lint-no-file-name-irregular-characters' -import remarkLintNoFileNameOuterDashes from 'remark-lint-no-file-name-outer-dashes' -import remarkLintNoHeadingIndent from 'remark-lint-no-heading-indent' -import remarkLintNoHeadingLikeParagraph from 'remark-lint-no-heading-like-paragraph' -import remarkLintNoLiteralUrls from 'remark-lint-no-literal-urls' -import remarkLintNoMultipleToplevelHeadings from 'remark-lint-no-multiple-toplevel-headings' -import remarkLintNoParagraphContentIndent from 'remark-lint-no-paragraph-content-indent' -import remarkLintNoReferenceLikeUrl from 'remark-lint-no-reference-like-url' -import remarkLintNoShellDollars from 'remark-lint-no-shell-dollars' -import remarkLintNoShortcutReferenceImage from 'remark-lint-no-shortcut-reference-image' -import remarkLintNoShortcutReferenceLink from 'remark-lint-no-shortcut-reference-link' -import remarkLintNoTabs from 'remark-lint-no-tabs' -import remarkLintNoUndefinedReferences from 'remark-lint-no-undefined-references' -import remarkLintNoUnneededFullReferenceImage from 'remark-lint-no-unneeded-full-reference-image' -import remarkLintNoUnneededFullReferenceLink from 'remark-lint-no-unneeded-full-reference-link' -import remarkLintNoUnusedDefinitions from 'remark-lint-no-unused-definitions' -import remarkLintOrderedListMarkerStyle from 'remark-lint-ordered-list-marker-style' -import remarkLintRuleStyle from 'remark-lint-rule-style' -import remarkLintStrikethroughMarker from 'remark-lint-strikethrough-marker' -import remarkLintStrongMarker from 'remark-lint-strong-marker' -import remarkLintTableCellPadding from 'remark-lint-table-cell-padding' -import remarkLintUnorderedListMarkerStyle from 'remark-lint-unordered-list-marker-style' -import remarkPresetPrettier from 'remark-preset-prettier' -import remarkValidateLinks from 'remark-validate-links' - -/** - * Overrides specific rules in a set of plugins. - * - * This function searches through an array of plugins to find and override - * multiple plugins by their names, replacing their arguments with new ones. - * - * See this link for why we need this: - * https://github.com/remarkjs/remark-lint/issues/165 - * - * @param {any[]} plugins - An array of plugins, where each plugin is either a function or an array containing a function and its arguments. - * @param {Array.<[string, any]>} rules - An array of [ruleName, newArgs] pairs, where `ruleName` is the name of the rule to override and `newArgs` are the new arguments to apply. - * @returns {any[]} The modified array of plugins with the overridden rules. - */ -export function overrideRules(plugins, rules) { - for (let [ruleName, newArguments] of rules) { - // Internally, function names are different from the package names - ruleName = ruleName.replace(/^remark-lint-/, 'remark-lint:') - - let ruleFunction - const index = plugins.findIndex((plugin) => { - if (Array.isArray(plugin)) { - if (plugin[0]?.name === ruleName) { - ruleFunction = plugin[0] - return true - } - } else if (plugin.name === ruleName) { - ruleFunction = plugin - return true - } - - return false - }) - - if (index !== -1) { - plugins.splice(index, 1, [ruleFunction, newArguments]) - } - } - - return plugins -} - -export default { - plugins: [ - remarkLint, - remarkFrontmatter, - remarkGfm, - remarkDirective, - [remarkLintCheckboxCharacterStyle, 'x'], - remarkLintCheckboxContentIndent, - [remarkLintCodeBlockStyle, 'fenced'], - [remarkLintEmphasisMarker, '*'], - [remarkLintFencedCodeFlag, { allowEmpty: false }], - [remarkLintFencedCodeMarker, '`'], - // Crashes with "Cannot use 'in' operator to search for 'start' in undefined" - // [remarkLintFileExtension, 'md'], - remarkLintFinalDefinition, - remarkLintFirstHeadingLevel, - remarkLintHeadingIncrement, - // [remarkLintHeadingStyle, 'atx'], Prettier - remarkLintLinebreakStyle, - remarkLintMaximumHeadingLength, - // RemarkLintNoAutoLinkWithoutProtocol, // Deprecated - remarkLintNoDuplicateDefinedUrls, - remarkLintNoDuplicateDefinitions, - remarkLintNoDuplicateHeadings, - remarkLintNoDuplicateHeadingsInSection, - remarkLintNoEmptyUrl, - remarkLintNoFileNameArticles, - remarkLintNoFileNameConsecutiveDashes, - remarkLintNoFileNameIrregularCharacters, - // Crashes with "Cannot use 'in' operator to search for 'start' in undefined" - // RemarkLintNoFileNameMixedCase, - remarkLintNoFileNameOuterDashes, - remarkLintNoHeadingIndent, - remarkLintNoHeadingLikeParagraph, - remarkLintNoLiteralUrls, - remarkLintNoMultipleToplevelHeadings, - remarkLintNoParagraphContentIndent, - remarkLintNoReferenceLikeUrl, - remarkLintNoShellDollars, - remarkLintNoShortcutReferenceImage, - remarkLintNoShortcutReferenceLink, - remarkLintNoTabs, - remarkLintNoUndefinedReferences, - remarkLintNoUnneededFullReferenceImage, - remarkLintNoUnneededFullReferenceLink, - remarkLintNoUnusedDefinitions, - remarkLintNoUnusedDefinitions, - [remarkLintOrderedListMarkerStyle, '.'], - [remarkLintRuleStyle, '---'], - remarkLintStrikethroughMarker, - [remarkLintStrongMarker, '*'], - [remarkLintTableCellPadding, 'padded'], - [remarkLintUnorderedListMarkerStyle, '-'], - remarkValidateLinks, - remarkPresetPrettier, - ], - settings: { - bullet: '-', - // 1stg settings - // emphasis: '_', - // listItemIndent: 'one', - // quote: "'", - // rule: '-', - // strong: '*', - // tightDefinitions: true, - }, -} diff --git a/packages/remark-config/src/cli.ts b/packages/remark-config/src/cli.ts deleted file mode 100644 index d018c5d..0000000 --- a/packages/remark-config/src/cli.ts +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -import { buildCommands } from '../../../src/command-builder.js' - -await buildCommands('remark-config', '[remarklint]', 'blue', { - init: {}, - printConfig: {}, -}) diff --git a/packages/repo-config/init/.github/workflows/github-release.yml b/packages/repo-config/init/.github/workflows/github-release.yml index fdb8cb0..5d9c882 100644 --- a/packages/repo-config/init/.github/workflows/github-release.yml +++ b/packages/repo-config/init/.github/workflows/github-release.yml @@ -1,81 +1,81 @@ name: Create GitHub Release on: - push: - tags: - - 'v[0-9]*' + push: + tags: + - "v[0-9]*" jobs: - build: - name: Create Release - runs-on: ubuntu-latest - env: - ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} - IS_VALID_COMMIT: false - TAG_NAME: '' + build: + name: Create Release + runs-on: ubuntu-latest + env: + ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} + IS_VALID_COMMIT: false + TAG_NAME: "" - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Log Token Type - run: | - if [ ${{ env.ACCESS_TOKEN }} == ${{ secrets.GITHUB_TOKEN }} ]; then - echo "🗝️ Authenticated with GitHub Token" - else - echo "🔑 Authenticated with Personal Access token" - fi + - name: Log Token Type + run: | + if [ ${{ env.ACCESS_TOKEN }} == ${{ secrets.GITHUB_TOKEN }} ]; then + echo "🗝️ Authenticated with GitHub Token" + else + echo "🔑 Authenticated with Personal Access token" + fi - - name: Validate Tag and Branch - id: validation - run: | - TAG=$(git tag --contains HEAD | grep '^v[0-9]' | head -n 1) - echo "🏷️ Tag for commit is: $TAG" - BRANCH=$(git branch -r --contains tags/${GITHUB_REF_NAME} | grep 'origin/main' | xargs) - if [[ -z "$BRANCH" ]]; then - echo "🚨 Tag is not on main branch" - else - echo "🕊️ Current branch is: $BRANCH" - fi - if [[ -z "$TAG" || -z "$BRANCH" ]]; then - echo "IS_VALID_COMMIT=false" >> $GITHUB_ENV - echo "TAG_NAME=''" >> $GITHUB_ENV - else - echo "IS_VALID_COMMIT=true" >> $GITHUB_ENV - echo "TAG_NAME=$TAG" >> $GITHUB_ENV - fi + - name: Validate Tag and Branch + id: validation + run: | + TAG=$(git tag --contains HEAD | grep '^v[0-9]' | head -n 1) + echo "🏷️ Tag for commit is: $TAG" + BRANCH=$(git branch -r --contains tags/${GITHUB_REF_NAME} | grep 'origin/main' | xargs) + if [[ -z "$BRANCH" ]]; then + echo "🚨 Tag is not on main branch" + else + echo "🕊️ Current branch is: $BRANCH" + fi + if [[ -z "$TAG" || -z "$BRANCH" ]]; then + echo "IS_VALID_COMMIT=false" >> $GITHUB_ENV + echo "TAG_NAME=''" >> $GITHUB_ENV + else + echo "IS_VALID_COMMIT=true" >> $GITHUB_ENV + echo "TAG_NAME=$TAG" >> $GITHUB_ENV + fi - - name: Release Notes - if: env.IS_VALID_COMMIT == 'true' - id: release-notes - uses: kitschpatrol/github-action-release-changelog@v2 + - name: Release Notes + if: env.IS_VALID_COMMIT == 'true' + id: release-notes + uses: kitschpatrol/github-action-release-changelog@v2 - - name: Release - if: env.IS_VALID_COMMIT == 'true' - id: release - uses: kitschpatrol/github-action-release@v2 - with: - token: ${{ env.ACCESS_TOKEN }} - draft: false - prerelease: false - name: ${{ env.TAG_NAME }} - tag_name: ${{ env.TAG_NAME }} - body: | - ${{ steps.release-notes.outputs.changelog }} - files: | - readme.md - README.md - LICENSE - license.txt - CHANGELOG - CHANGELOG.md - changelog.md + - name: Release + if: env.IS_VALID_COMMIT == 'true' + id: release + uses: kitschpatrol/github-action-release@v2 + with: + token: ${{ env.ACCESS_TOKEN }} + draft: false + prerelease: false + name: ${{ env.TAG_NAME }} + tag_name: ${{ env.TAG_NAME }} + body: | + ${{ steps.release-notes.outputs.changelog }} + files: | + readme.md + README.md + LICENSE + license.txt + CHANGELOG + CHANGELOG.md + changelog.md - - name: Log Release Details - if: env.IS_VALID_COMMIT == 'true' - run: | - echo "📦 Successfully released: ${{ env.TAG_NAME }}" - echo "🔗 Release URL: ${{ steps.release.outputs.url }}" - echo "🪪 Release ID: ${{ steps.release.outputs.id }}" + - name: Log Release Details + if: env.IS_VALID_COMMIT == 'true' + run: | + echo "📦 Successfully released: ${{ env.TAG_NAME }}" + echo "🔗 Release URL: ${{ steps.release.outputs.url }}" + echo "🪪 Release ID: ${{ steps.release.outputs.id }}" diff --git a/packages/repo-config/init/.github/workflows/sync-metadata.yml b/packages/repo-config/init/.github/workflows/sync-metadata.yml index 4ab3e89..ca97dd1 100644 --- a/packages/repo-config/init/.github/workflows/sync-metadata.yml +++ b/packages/repo-config/init/.github/workflows/sync-metadata.yml @@ -1,48 +1,48 @@ name: Overwrite GitHub repo metadata with info from package.json on: - push: - branches: [main] - workflow_dispatch: + push: + branches: [main] + workflow_dispatch: jobs: - build: - name: Sync Metadata - runs-on: ubuntu-latest - env: - IS_VALID_TOKEN: false - HAS_PACKAGE: false + build: + name: Sync Metadata + runs-on: ubuntu-latest + env: + IS_VALID_TOKEN: false + HAS_PACKAGE: false - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Check for package.json - run: | - if [ -f package.json ]; then - echo "📦 Found package.json" - echo "HAS_PACKAGE=true" >> $GITHUB_ENV - else - echo "❌ This action requires a package.json to run" - echo "HAS_PACKAGE=false" >> $GITHUB_ENV - fi + - name: Check for package.json + run: | + if [ -f package.json ]; then + echo "📦 Found package.json" + echo "HAS_PACKAGE=true" >> $GITHUB_ENV + else + echo "❌ This action requires a package.json to run" + echo "HAS_PACKAGE=false" >> $GITHUB_ENV + fi - - name: Validate Access Token - if: env.HAS_PACKAGE == 'true' - run: | - if [ -z ${{ secrets.PERSONAL_ACCESS_TOKEN }} ]; then - echo "❌ This action requires a Personal Access token to run" - echo "IS_VALID_TOKEN=false" >> $GITHUB_ENV - else - echo "🔑 Authenticated with Personal Access token" - echo "IS_VALID_TOKEN=true" >> $GITHUB_ENV - fi + - name: Validate Access Token + if: env.HAS_PACKAGE == 'true' + run: | + if [ -z ${{ secrets.PERSONAL_ACCESS_TOKEN }} ]; then + echo "❌ This action requires a Personal Access token to run" + echo "IS_VALID_TOKEN=false" >> $GITHUB_ENV + else + echo "🔑 Authenticated with Personal Access token" + echo "IS_VALID_TOKEN=true" >> $GITHUB_ENV + fi - - name: Sync Package info to GitHub - if: env.IS_VALID_TOKEN == 'true' && env.HAS_PACKAGE == 'true' - uses: kitschpatrol/github-action-repo-sync@v2 - with: - TYPE: npm - PATH: package.json - TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + - name: Sync Package info to GitHub + if: env.IS_VALID_TOKEN == 'true' && env.HAS_PACKAGE == 'true' + uses: kitschpatrol/github-action-repo-sync@v2 + with: + TYPE: npm + PATH: package.json + TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} diff --git a/packages/repo-config/init/.gitignore b/packages/repo-config/init/.gitignore index d101422..e224d55 100644 --- a/packages/repo-config/init/.gitignore +++ b/packages/repo-config/init/.gitignore @@ -1,21 +1,20 @@ # Git Ignore # Also used by CSpell and Stylelint -# @kitschpatrol/repo-config boilerplate -.astro/ +# @envsa/repo-config boilerplate .DS_Store +.ddev/ .env .env.* !.env.example -.svelte-kit/ -{tmp,temp}/ -**/*.min.js -/scratch/ -bower_components/ +node_modules/ +vendor/ build/ coverage/ dist/ -node_modules/ -vendor/ +**/*.min.js +tmp/ +temp/ +_junk/ # Customizations diff --git a/packages/repo-config/init/.npmrc b/packages/repo-config/init/.npmrc index 95441b0..373ef61 100644 --- a/packages/repo-config/init/.npmrc +++ b/packages/repo-config/init/.npmrc @@ -1,10 +1,9 @@ publish-branch=main -# Required for using @kitschpatrol/shared-config with pnpm -public-hoist-pattern[]=@kitschpatrol/repo-config +# Required for using @envsa/shared-config with pnpm +public-hoist-pattern[]=@envsa/repo-config public-hoist-pattern[]=*cspell* public-hoist-pattern[]=*eslint* public-hoist-pattern[]=*mdat* public-hoist-pattern[]=*prettier* -public-hoist-pattern[]=*remark* public-hoist-pattern[]=*stylelint* diff --git a/packages/repo-config/init/.vscode/extensions.json b/packages/repo-config/init/.vscode/extensions.json index 6552887..bdef820 100644 --- a/packages/repo-config/init/.vscode/extensions.json +++ b/packages/repo-config/init/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["astro-build.astro-vscode", "svelte.svelte-vscode"] + "recommendations": ["svelte.svelte-vscode"] } diff --git a/packages/repo-config/init/.vscode/settings.json b/packages/repo-config/init/.vscode/settings.json index 49885c3..5c98c49 100644 --- a/packages/repo-config/init/.vscode/settings.json +++ b/packages/repo-config/init/.vscode/settings.json @@ -1,9 +1,9 @@ { - "explorer.fileNesting.enabled": true, - "explorer.fileNesting.expand": false, - "explorer.fileNesting.patterns": { - ".env": ".env.*", - "package.json": ".*.cjs, .*.js, .*.json, .*.mjs, .*.toml, .*.ts, .*.yaml, .*.yml, .*ignore, .*rc, *config.cjs, *config.js, *config.json, *config.mjs, *config.toml, *config.ts, *config.yaml, *config.yml, lerna.json, netlify.toml, package-lock.json, , pnpm*, turbo.json, vercel.json, workspace*, wrangler.toml, yarn.lock, yarn*", - "readme.md": "authors*, backers*, changelog*, citation*, code_of_conduct*, contributing*, contributors*, copying*, credits*, governance*, history*, license*, maintainers*, release_notes*, security*, sponsors*" - } + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + ".env": ".env.*", + "package.json": ".*.cjs, .*.js, .*.json, .*.mjs, .*.toml, .*.ts, .*.yaml, .*.yml, .*ignore, .*rc, *config.cjs, *config.js, *config.json, *config.mjs, *config.toml, *config.ts, *config.yaml, *config.yml, lerna.json, netlify.toml, package-lock.json, , pnpm*, turbo.json, vercel.json, workspace*, wrangler.toml, yarn.lock, yarn*", + "readme.md": "authors*, backers*, changelog*, citation*, code_of_conduct*, contributing*, contributors*, copying*, credits*, governance*, history*, license*, maintainers*, release_notes*, security*, sponsors*" + } } diff --git a/packages/repo-config/license.txt b/packages/repo-config/license.txt index bc47b30..4097ab1 100644 --- a/packages/repo-config/license.txt +++ b/packages/repo-config/license.txt @@ -1,6 +1,8 @@ MIT License -Copyright (c) 2023-2024 Eric Mika +Copyright (c) 2024 Liam Rella + +Based on the MIT-licensed "@kitschpatrol/shared-config" project by Eric Mika Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/repo-config/package.json b/packages/repo-config/package.json index d648573..b948d9d 100644 --- a/packages/repo-config/package.json +++ b/packages/repo-config/package.json @@ -1,51 +1,51 @@ { - "name": "@kitschpatrol/repo-config", - "version": "4.7.5", - "type": "module", - "description": "Repository configuration and GitHub workflows for @kitschpatrol/shared-config.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git", - "directory": "packages/repo-config" - }, - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "bin": { - "repo-config": "bin/cli.js" - }, - "files": [ - "bin/*", - "init/*" - ], - "keywords": [ - "shared-config", - "github-actions", - "cli" - ], - "scripts": { - "build": "../../scripts/build.ts && mdat readme", - "cli": "node ./bin/cli.js", - "prepublishOnly": "pnpm run build" - }, - "dependencies": { - "@pinojs/json-colorizer": "^4.0.0", - "cosmiconfig": "^9.0.0", - "execa": "^8.0.1", - "fs-extra": "^11.2.0" - }, - "publishConfig": { - "access": "public" - } + "name": "@envsa/repo-config", + "version": "1.0.0", + "type": "module", + "description": "Repository configuration and GitHub workflows for @envsa/shared-config.", + "repository": { + "type": "git", + "url": "git@github.com:envsa/shared-config.git", + "directory": "packages/repo-config" + }, + "bugs": { + "url": "https://github.com/envsa/shared-config/issues", + "email": "DEW.ICTWebServices@sa.gov.au" + }, + "author": { + "name": "Liam Rella", + "email": "DEW.ICTWebServices@sa.gov.au", + "url": "https://github.com/rellafella" + }, + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "pnpm": ">=8.0.0" + }, + "bin": { + "repo-config": "bin/cli.js" + }, + "files": [ + "bin/*", + "init/*" + ], + "keywords": [ + "shared-config", + "github-actions", + "cli" + ], + "scripts": { + "build": "../../scripts/build.ts && mdat readme", + "cli": "node ./bin/cli.js", + "prepublishOnly": "pnpm run build" + }, + "dependencies": { + "@pinojs/json-colorizer": "^4.0.0", + "cosmiconfig": "^9.0.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0" + }, + "publishConfig": { + "access": "public" + } } diff --git a/packages/repo-config/readme.md b/packages/repo-config/readme.md index 14571fb..23b8135 100644 --- a/packages/repo-config/readme.md +++ b/packages/repo-config/readme.md @@ -2,20 +2,20 @@ -# @kitschpatrol/repo-config +# @envsa/repo-config -[![NPM Package @kitschpatrol/repo-config](https://img.shields.io/npm/v/@kitschpatrol/repo-config.svg)](https://npmjs.com/package/@kitschpatrol/repo-config) +[![NPM Package @envsa/repo-config](https://img.shields.io/npm/v/@envsa/repo-config.svg)](https://npmjs.com/package/@envsa/repo-config) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -**Repository configuration and GitHub workflows for @kitschpatrol/shared-config.** +**Repository configuration and GitHub workflows for @envsa/shared-config.** @@ -32,9 +32,9 @@ This includes the following: - `github-release.yml` Automates turning turning vX.X.X tags on main into GitHub releases with changelogs - `sync-metadata.yml` Populates GitHub repo metadata from package.json -In order to work around some hoisting issues related to plugin resolution in the other `@kitschpatrol/shared-config` packages, it's critical that it is applied _before_ any other `@kitschpatrol/shared-config` packages are installed. +In order to work around some hoisting issues related to plugin resolution in the other `@envsa/shared-config` packages, it's critical that it is applied _before_ any other `@envsa/shared-config` packages are installed. -**See [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) for the recommended single-package approach.** +**See [`@envsa/shared-config`](https://www.npmjs.com/package/@envsa/shared-config) for the recommended single-package approach.** ## Setup @@ -43,7 +43,7 @@ In order to work around some hoisting issues related to plugin resolution in the If you just need to set up your `.npmrc` in anticipation of installing another shared config, you can run the script via `dlx` to copy the `.npmrc` to your home folder: ```sh -pnpm dlx @kitschpatrol/repo-config --init +pnpm dlx @envsa/repo-config --init ``` ### Installation approach @@ -53,7 +53,7 @@ Optionally, you can install the package if you think you'll ever want to regener 1. Add the package: ```sh - pnpm add -D @kitschpatrol/repo-config + pnpm add -D @envsa/repo-config ``` 2. If / when you need to regenerate the repo config files, you can run the bundled script: @@ -102,7 +102,7 @@ Note: Action dependencies have been forked. #### Command: `repo-config` -Repository configuration and GitHub workflows for @kitschpatrol/shared-config. +Repository configuration and GitHub workflows for @envsa/shared-config. Usage: @@ -119,10 +119,14 @@ repo-config [ ...] +## Credits + +[Eric Mika](https://github.com/kitschpatrol) is the author of the original [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) project on which this is based. + ## License -[MIT](license.txt) © Eric Mika +[MIT](license.txt) © Liam Rella diff --git a/packages/repo-config/src/cli.ts b/packages/repo-config/src/cli.ts index c15a0a2..3d13771 100644 --- a/packages/repo-config/src/cli.ts +++ b/packages/repo-config/src/cli.ts @@ -1,49 +1,49 @@ #!/usr/bin/env node -import fse from 'fs-extra' -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import { packageUp } from 'package-up' -import { buildCommands } from '../../../src/command-builder.js' +import { buildCommands } from '$root/src/command-builder.ts'; +import * as fse from 'fs-extra'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { packageUp } from 'package-up'; await buildCommands('repo-config', '[Repo Config]', 'gray', { - init: {}, - printConfig: { - async command(logStream) { - const destinationPackage = await packageUp() - if (destinationPackage === undefined) { - logStream.write( - 'Error: The `--print-config` flag must be used in a directory with a package.json file somewhere above it\n', - ) - return 1 - } + init: {}, + printConfig: { + async command(logStream) { + const destinationPackage = await packageUp(); + if (destinationPackage === undefined) { + logStream.write( + 'Error: The `--print-config` flag must be used in a directory with a package.json file somewhere above it\n', + ); + return 1; + } - const sourcePackage = await packageUp({ cwd: fileURLToPath(import.meta.url) }) - if (sourcePackage === undefined) { - logStream.write('Error: The script being called was not in a package, weird.\n') - return 1 - } + const sourcePackage = await packageUp({ cwd: fileURLToPath(import.meta.url) }); + if (sourcePackage === undefined) { + logStream.write('Error: The script being called was not in a package, weird.\n'); + return 1; + } - const sourceDirectory = path.join(path.dirname(sourcePackage), 'init/') - const destinationDirectory = path.dirname(destinationPackage) + const sourceDirectory = path.join(path.dirname(sourcePackage), 'init/'); + const destinationDirectory = path.dirname(destinationPackage); - let exitCode = 0 + let exitCode = 0; - for (const file of await fse.readdir(sourceDirectory)) { - const destinationPath = path.join(destinationDirectory, file) + for (const file of await fse.readdir(sourceDirectory)) { + const destinationPath = path.join(destinationDirectory, file); - // Merge with existing, if present - if (await fse.exists(destinationPath)) { - const fileContent = await fse.readFile(destinationPath, 'utf8') - logStream.write(`💾 Contents of "${file}":\n`) - logStream.write(fileContent) - logStream.write('\n') - } else { - logStream.write(`Error: Could not find ${file}\n`) - exitCode = 1 - } - } + // Merge with existing, if present + if (await fse.exists(destinationPath)) { + const fileContent = await fse.readFile(destinationPath, 'utf8'); + logStream.write(`💾 Contents of "${file}":\n`); + logStream.write(fileContent); + logStream.write('\n'); + } else { + logStream.write(`Error: Could not find ${file}\n`); + exitCode = 1; + } + } - return exitCode - }, - }, -}) + return exitCode; + }, + }, +}); diff --git a/packages/shared-config/license.txt b/packages/shared-config/license.txt index bc47b30..4097ab1 100644 --- a/packages/shared-config/license.txt +++ b/packages/shared-config/license.txt @@ -1,6 +1,8 @@ MIT License -Copyright (c) 2023-2024 Eric Mika +Copyright (c) 2024 Liam Rella + +Based on the MIT-licensed "@kitschpatrol/shared-config" project by Eric Mika Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/shared-config/package.json b/packages/shared-config/package.json index 06a8be9..3ff57ad 100644 --- a/packages/shared-config/package.json +++ b/packages/shared-config/package.json @@ -1,70 +1,67 @@ { - "name": "@kitschpatrol/shared-config", - "version": "4.7.5", - "type": "module", - "description": "A collection of shared configurations for various linters and formatting tools. All managed as a single dependency, and invoked via a single command.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git", - "directory": "packages/shared-config" - }, - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "bin": { - "shared-config": "bin/cli.js" - }, - "files": [ - "bin/*" - ], - "keywords": [ - "shared-config", - "eslint-config", - "stylelint-config", - "prettier-config", - "remark-config", - "remark-lint", - "github-actions", - "cspell", - "mdat", - "cli" - ], - "scripts": { - "build": "./scripts/capability-generator.ts && ../../scripts/build.ts && mdat readme", - "clean": "pnpm run bin-restore && git clean -fdX", - "cli": "node ./bin/cli.js", - "prepublishOnly": "pnpm run build" - }, - "dependencies": { - "@kitschpatrol/cspell-config": "workspace:*", - "@kitschpatrol/eslint-config": "workspace:*", - "@kitschpatrol/mdat-config": "workspace:*", - "@kitschpatrol/prettier-config": "workspace:*", - "@kitschpatrol/remark-config": "workspace:*", - "@kitschpatrol/repo-config": "workspace:*", - "@kitschpatrol/stylelint-config": "workspace:*", - "@pinojs/json-colorizer": "^4.0.0", - "cosmiconfig": "^9.0.0", - "execa": "^8.0.1", - "fs-extra": "^11.2.0" - }, - "devDependencies": { - "camelcase": "^8.0.0", - "chalk": "^5.3.0", - "globby": "^14.0.2" - }, - "publishConfig": { - "access": "public" - } + "name": "@envsa/shared-config", + "version": "1.0.0", + "type": "module", + "description": "A collection of shared configurations for various linters and formatting tools. All managed as a single dependency, and invoked via a single command.", + "repository": { + "type": "git", + "url": "git@github.com:envsa/shared-config.git", + "directory": "packages/shared-config" + }, + "bugs": { + "url": "https://github.com/envsa/shared-config/issues", + "email": "DEW.ICTWebServices@sa.gov.au" + }, + "author": { + "name": "Liam Rella", + "email": "DEW.ICTWebServices@sa.gov.au", + "url": "https://github.com/rellafella" + }, + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "pnpm": ">=8.0.0" + }, + "bin": { + "shared-config": "bin/cli.js" + }, + "files": [ + "bin/*" + ], + "keywords": [ + "shared-config", + "eslint-config", + "stylelint-config", + "prettier-config", + "github-actions", + "cspell", + "mdat", + "cli" + ], + "scripts": { + "build": "./scripts/capability-generator.ts && ../../scripts/build.ts && mdat readme", + "clean": "pnpm run bin-restore && git clean -fdX", + "cli": "node ./bin/cli.js", + "prepublishOnly": "pnpm run build" + }, + "dependencies": { + "@envsa/cspell-config": "workspace:*", + "@envsa/eslint-config": "workspace:*", + "@envsa/mdat-config": "workspace:*", + "@envsa/prettier-config": "workspace:*", + "@envsa/repo-config": "workspace:*", + "@envsa/stylelint-config": "workspace:*", + "@pinojs/json-colorizer": "^4.0.0", + "cosmiconfig": "^9.0.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0" + }, + "devDependencies": { + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "globby": "^14.0.2" + }, + "publishConfig": { + "access": "public" + } } diff --git a/packages/shared-config/readme.md b/packages/shared-config/readme.md index aad8e80..c452349 100644 --- a/packages/shared-config/readme.md +++ b/packages/shared-config/readme.md @@ -2,13 +2,13 @@ -# 🔬 @kitschpatrol/shared-config +# 🔬 @envsa/shared-config -[![NPM Package @kitschpatrol/shared-config](https://img.shields.io/npm/v/@kitschpatrol/shared-config.svg)](https://npmjs.com/package/@kitschpatrol/shared-config) +[![NPM Package @envsa/shared-config](https://img.shields.io/npm/v/@envsa/shared-config.svg)](https://npmjs.com/package/@envsa/shared-config) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) @@ -28,7 +28,7 @@ - [Usage](#usage) - [Implementation notes](#implementation-notes) - [Development notes](#development-notes) -- [Background](#background) +- [Credits](#credits) - [License](#license) @@ -42,27 +42,25 @@ This project attempts to consolidate most of the configuration and tooling share It takes care of dependencies and configurations for the following tools: - [CSpell](https://cspell.org) -- [ESLint](https://eslint.org) (including Svelte, Astro, and TypeScript support) +- [ESLint](https://eslint.org) (including Svelte, and TypeScript support) - [mdat](https://github.com/kitschpatrol/mdat) - [Prettier](https://prettier.io) (including a bunch of extra plugins) -- [remarklint](https://github.com/remarkjs/remark-lint) - [Stylelint](https://stylelint.io) - [VS Code](https://code.visualstudio.com) (extension recommendations and extension settings) - Minimal repo boilerplate (`.npmrc`, `.gitignore`, etc.) ### Packages -This readme is for the [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) package, which depends on a number of tool-specific packages included in the [`kitschpatrol/shared-config`](https://github.com/kitschpatrol/shared-config) monorepo on GitHub, each of which is documented in its respective readme, linked below: +This readme is for the [`@envsa/shared-config`](https://www.npmjs.com/package/@envsa/shared-config) package, which depends on a number of tool-specific packages included in the [`kitschpatrol/shared-config`](https://github.com/kitschpatrol/shared-config) monorepo on GitHub, each of which is documented in its respective readme, linked below: -- [`@kitschpatrol/cspell-config`](/packages/cspell-config/readme.md) -- [`@kitschpatrol/eslint-config`](/packages/eslint-config/readme.md) -- [`@kitschpatrol/mdat-config`](/packages/mdat-config/readme.md) -- [`@kitschpatrol/prettier-config`](/packages/prettier-config/readme.md) -- [`@kitschpatrol/remark-config`](/packages/remark-config/readme.md) -- [`@kitschpatrol/repo-config`](/packages/repo-config/readme.md) -- [`@kitschpatrol/stylelint-config`](/packages/stylelint-config/readme.md) +- [`@envsa/cspell-config`](/packages/cspell-config/readme.md) +- [`@envsa/eslint-config`](/packages/eslint-config/readme.md) +- [`@envsa/mdat-config`](/packages/mdat-config/readme.md) +- [`@envsa/prettier-config`](/packages/prettier-config/readme.md) +- [`@envsa/repo-config`](/packages/repo-config/readme.md) +- [`@envsa/stylelint-config`](/packages/stylelint-config/readme.md) -Any of these may be installed and run on their own via CLI if desired. However, in general, the idea is to use `@kitschpatrol/shared-config` to easily run them all simultaneously over a repo with a single command with options to either check or (where possible) fix problems, with output aggregated into a single report. +Any of these may be installed and run on their own via CLI if desired. However, in general, the idea is to use `@envsa/shared-config` to easily run them all simultaneously over a repo with a single command with options to either check or (where possible) fix problems, with output aggregated into a single report. ## Getting started @@ -77,7 +75,7 @@ Node 18+ and [pnpm](https://pnpm.io) are required. It probably works with NPM an Bootstrap a new project and open in VS Code: ```sh -git init && pnpm init && pnpm pkg set type="module" && pnpm dlx @kitschpatrol/repo-config --init && pnpm add -D @kitschpatrol/shared-config && pnpm shared-config --init && pnpm i && code . +git init && pnpm init && pnpm pkg set type="module" && pnpm dlx @envsa/repo-config --init && pnpm add -D @envsa/shared-config && pnpm shared-config --init && pnpm i && code . ``` #### Quick add to an existing project: @@ -85,7 +83,7 @@ git init && pnpm init && pnpm pkg set type="module" && pnpm dlx @kitschpatrol/re This might overwrite certain config files, so commit first: ```sh -pnpm dlx @kitschpatrol/repo-config --init && pnpm i && pnpm add -D @kitschpatrol/shared-config && pnpm shared-config --init +pnpm dlx @envsa/repo-config --init && pnpm i && pnpm add -D @envsa/shared-config && pnpm shared-config --init ``` #### Step-by-step: @@ -93,13 +91,13 @@ pnpm dlx @kitschpatrol/repo-config --init && pnpm i && pnpm add -D @kitschpatrol 1. Install the requisite `.npmrc`: ```sh - pnpm dlx @kitschpatrol/repo-config --init + pnpm dlx @envsa/repo-config --init ``` 2. Install the package: ```sh - pnpm add -D @kitschpatrol/shared-config + pnpm add -D @envsa/shared-config ``` 3. Add default config files for all the tools to your project root: @@ -119,9 +117,6 @@ pnpm dlx @kitschpatrol/repo-config --init && pnpm i && pnpm add -D @kitschpatrol } ``` - > \[!NOTE]\ - > Prettier formatting for Ruby requires some extra legwork to configure, see [`the @kitschpatrol/prettier-config` package readme](https://github.com/kitschpatrol/shared-config/blob/main/packages/prettier-config/readme.md) for more details. - ## Usage Various VS Code plugins should "just work". @@ -163,7 +158,7 @@ shared-config [ ...] -Recall that the `@kitschpatrol/shared-config` package aggregates integration and invocation of the other tool-specific packages in this monorepo. Running a cli command on `shared-config` effectively runs the same command against all the tool-specific packages. +Recall that the `@envsa/shared-config` package aggregates integration and invocation of the other tool-specific packages in this monorepo. Running a cli command on `shared-config` effectively runs the same command against all the tool-specific packages. ## Implementation notes @@ -177,7 +172,7 @@ The monorepo must be kept intact, as the sub-packages depend on scripts in the p Pnpm considers module hoisting harmful, and I tend to agree, but certain exceptions are carved out as necessary: -- CSpell, remark, mdat, ESLint, and Prettier all need to be hoisted via `public-hoist-pattern` to be accessible in `pnpm exec` scripts and to VS Code plugins. +- CSpell, mdat, ESLint, and Prettier all need to be hoisted via `public-hoist-pattern` to be accessible in `pnpm exec` scripts and to VS Code plugins. - Even basic file-only packages like `repo-config` seem to need to be hoisted via for their bin scripts to be accessible via `pnpm exec` @@ -193,32 +188,14 @@ For local development via `pnpm`, use `file:` dependency protocol instead of `li Something to investigate: An [approach](https://github.com/antfu/eslint-config#vs-code-support-auto-fix) to ignoring style rules in VS Code, and possibly migrate all style to -## Background - -### Motivation - -[`xo`](https://github.com/xojs/xo) is really, really close to what I'm after here, but I wanted a few extra tools and preferred to use "first party" VS Code plugins where possible. - -### Similar projects +## Credits -- [1stG/configs](https://github.com/1stG/configs) -- [antfu/eslint-config](https://github.com/antfu/eslint-config) -- [awesome-eslint](https://github.com/dustinspecker/awesome-eslint) -- [lass](https://lass.js.org) (xo etc.) -- [routine-npm-packages](https://github.com/kachkaev/routine-npm-packages) and [example](https://github.com/kachkaev/website) -- [sheriff](https://www.eslint-config-sheriff.dev) -- [standard](https://standardjs.com) -- [trunk](https://trunk.io) -- [xo](https://github.com/xojs/xo) -- [vscode-file-nesting-config](https://github.com/antfu/vscode-file-nesting-config) -- [NullVoxPopuli/eslint-configs](https://github.com/NullVoxPopuli/eslint-configs) -- [tsconfig/bases](https://github.com/tsconfig/bases/tree/main) -- [eslint-config-current-thing](https://github.com/GildedPleb/eslint-config-current-thing) _(Smart!)_ +[Eric Mika](https://github.com/kitschpatrol) is the author of the original [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) project on which this is based. ## License -[MIT](license.txt) © Eric Mika +[MIT](license.txt) © Liam Rella diff --git a/packages/shared-config/scripts/capability-generator.ts b/packages/shared-config/scripts/capability-generator.ts index 8d202d2..92441da 100755 --- a/packages/shared-config/scripts/capability-generator.ts +++ b/packages/shared-config/scripts/capability-generator.ts @@ -1,61 +1,63 @@ #!/usr/bin/env tsx -import camelCase from 'camelcase' -import { execa } from 'execa' -import fse from 'fs-extra' -import { globby } from 'globby' +/* eslint-disable import-x/no-named-as-default-member */ +import camelCase from 'camelcase'; +import { execa } from 'execa'; +// eslint-disable-next-line import-x/default +import fse from 'fs-extra'; +import { globby } from 'globby'; async function getBinNames(): Promise { - const paths = await globby('../*/package.json', { ignore: ['../shared-config/package.json'] }) - - // Add the bin names for each package (except shared-) - const names: string[] = [] - for (const path of paths) { - const packageJson = (await fse.readJSON(path)) as Record - const bin = packageJson.bin as Record | undefined - - if (bin) { - for (const name of Object.keys(bin)) { - names.push(name) - } - } else { - console.error(`No bin key found in package.json for ${path}`) - process.exit(1) - } - } - - return names + const paths = await globby('../*/package.json', { ignore: ['../shared-config/package.json'] }); + + // Add the bin names for each package (except shared-) + const names: string[] = []; + for (const path of paths) { + const packageJson = (await fse.readJSON(path)) as Record; + const bin = packageJson.bin as Record | undefined; + + if (bin) { + for (const name of Object.keys(bin)) { + names.push(name); + } + } else { + console.error(`No bin key found in package.json for ${path}`); + process.exit(1); + } + } + + return names; } async function getCapabilities(binName: string): Promise { - const helpText = await execa(binName, ['--help']) + const helpText = await execa(binName, ['--help']); - if (helpText.exitCode !== 0 || helpText.stdout === undefined || helpText.stdout.length === 0) { - console.error(`Error getting capabilities for ${binName}`) - process.exit(1) - } + if (helpText.exitCode !== 0 || helpText.stdout === undefined || helpText.stdout.length === 0) { + console.error(`Error getting capabilities for ${binName}`); + process.exit(1); + } - const capabilities: string[] = [] - for (const match of helpText.stdout.matchAll(/--([a-z-]+)/g)) { - capabilities.push(camelCase(match[1])) - } + const capabilities: string[] = []; + for (const match of helpText.stdout.matchAll(/--([a-z-]+)/g)) { + capabilities.push(camelCase(match[1])); + } - return capabilities + return capabilities; } -type Capabilities = Record +type Capabilities = Record; -const capabilities: Capabilities = {} +const capabilities: Capabilities = {}; for (const binName of await getBinNames()) { - for (const capability of await getCapabilities(binName)) { - capabilities[capability] = [...(capabilities[capability] ?? []), binName] - } + for (const capability of await getCapabilities(binName)) { + capabilities[capability] = [...(capabilities[capability] ?? []), binName]; + } } const capabilitiesModule = `// Generated by capability-generator.ts\nexport const capabilities = ${JSON.stringify( - capabilities, - undefined, - 2, -)};` + capabilities, + undefined, + 2, +)};`; -await fse.mkdir('./build', { recursive: true }) -await fse.writeFile('./build/capabilities.ts', capabilitiesModule) +await fse.mkdir('./build', { recursive: true }); +await fse.writeFile('./build/capabilities.ts', capabilitiesModule); diff --git a/packages/shared-config/src/cli.ts b/packages/shared-config/src/cli.ts index 1abb81c..0ce348a 100644 --- a/packages/shared-config/src/cli.ts +++ b/packages/shared-config/src/cli.ts @@ -1,82 +1,82 @@ #!/usr/bin/env node -import chalk from 'chalk' -import { buildCommands, execute, type OptionCommands } from '../../../src/command-builder.js' -import { capabilities } from '../build/capabilities.js' +import { buildCommands, execute, type OptionCommands } from '$root/src/command-builder.ts'; +import { capabilities } from '../build/capabilities.ts'; +import chalk from 'chalk'; function kebabCase(text: string): string { - return text.replaceAll(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g, (match) => '-' + match.toLowerCase()) + return text.replaceAll(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g, (match) => '-' + match.toLowerCase()); } function pluralize(text: string, count: number): string { - return count === 1 ? text : text + 's' + return count === 1 ? text : text + 's'; } async function executeCommands( - logStream: NodeJS.WritableStream, - commands: string[], - options: string[], - args: string[], + logStream: NodeJS.WritableStream, + commands: string[], + options: string[], + args: string[], ): Promise { - const successfulCommands: string[] = [] - const failedCommands: string[] = [] + const successfulCommands: string[] = []; + const failedCommands: string[] = []; - for (const command of commands) { - logStream.write(`Running "${command}${args.join(' ')} ${options.join(' ')}"\n`) + for (const command of commands) { + logStream.write(`Running "${command}${args.join(' ')} ${options.join(' ')}"\n`); - const exitCode = await execute( - logStream, - { - command, - options, - }, - args, - ) + const exitCode = await execute( + logStream, + { + command, + options, + }, + args, + ); - if (exitCode === 0) { - successfulCommands.push(command) - } else { - failedCommands.push(command) - } - } + if (exitCode === 0) { + successfulCommands.push(command); + } else { + failedCommands.push(command); + } + } - if (successfulCommands.length > 0) { - logStream.write( - `✅ ${chalk.green.bold( - `${successfulCommands.length} Successful ${pluralize( - 'command', - successfulCommands.length, - )}:`, - )} ${successfulCommands.join(', ')}\n`, - ) - } + if (successfulCommands.length > 0) { + logStream.write( + `✅ ${chalk.green.bold( + `${successfulCommands.length} Successful ${pluralize( + 'command', + successfulCommands.length, + )}:`, + )} ${successfulCommands.join(', ')}\n`, + ); + } - if (failedCommands.length > 0) { - logStream.write( - `❌ ${chalk.green.bold( - `${failedCommands.length} Failed ${pluralize('command', failedCommands.length)}:`, - )} ${failedCommands.join(', ')}\n`, - ) - } + if (failedCommands.length > 0) { + logStream.write( + `❌ ${chalk.green.bold( + `${failedCommands.length} Failed ${pluralize('command', failedCommands.length)}:`, + )} ${failedCommands.join(', ')}\n`, + ); + } - return failedCommands.length > 0 ? 1 : 0 + return failedCommands.length > 0 ? 1 : 0; } await buildCommands( - 'shared-config', - '🔬', - 'yellow', - Object.keys(capabilities).reduce((acc, capability) => { - acc[capability as keyof OptionCommands] = { - async command(logStream, args) { - return executeCommands( - logStream, - capabilities[capability as keyof typeof capabilities], - [`--${kebabCase(capability)}`], - args, - ) - }, - defaultArguments: [], - } - return acc - }, {}), -) + 'shared-config', + '🔬', + 'yellow', + Object.keys(capabilities).reduce((accumulator, capability) => { + accumulator[capability as keyof OptionCommands] = { + async command(logStream, args) { + return executeCommands( + logStream, + capabilities[capability as keyof typeof capabilities], + [`--${kebabCase(capability)}`], + args, + ); + }, + defaultArguments: [], + }; + return accumulator; + }, {}), +); diff --git a/packages/stylelint-config/init/.stylelintrc.cjs b/packages/stylelint-config/init/.stylelintrc.cjs deleted file mode 100644 index 35cf8d6..0000000 --- a/packages/stylelint-config/init/.stylelintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -/* eslint-disable perfectionist/sort-objects */ - -/** @type {import("stylelint").Config} */ -module.exports = { - extends: ['@kitschpatrol/stylelint-config'], - // Overrides -} diff --git a/packages/stylelint-config/init/.vscode/extensions.json b/packages/stylelint-config/init/.vscode/extensions.json index 0aef949..494eea3 100644 --- a/packages/stylelint-config/init/.vscode/extensions.json +++ b/packages/stylelint-config/init/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["stylelint.vscode-stylelint"] + "recommendations": ["stylelint.vscode-stylelint"] } diff --git a/packages/stylelint-config/init/.vscode/settings.json b/packages/stylelint-config/init/.vscode/settings.json index d8dc416..f160be7 100644 --- a/packages/stylelint-config/init/.vscode/settings.json +++ b/packages/stylelint-config/init/.vscode/settings.json @@ -1,7 +1,7 @@ { - "stylelint.enable": true, - "stylelint.validate": ["css", "html", "svelte", "astro"], - "editor.codeActionsOnSave": { - "source.fixAll": "explicit" - } + "stylelint.enable": true, + "stylelint.validate": ["css", "html", "svelte"], + "editor.codeActionsOnSave": { + "source.fixAll": "explicit" + } } diff --git a/packages/stylelint-config/init/stylelint.config.js b/packages/stylelint-config/init/stylelint.config.js new file mode 100644 index 0000000..8fa52d1 --- /dev/null +++ b/packages/stylelint-config/init/stylelint.config.js @@ -0,0 +1,5 @@ +/** @type {import("stylelint").Config} */ +export default { + extends: ['@envsa/stylelint-config'], + // Overrides +}; diff --git a/packages/stylelint-config/license.txt b/packages/stylelint-config/license.txt index bc47b30..4097ab1 100644 --- a/packages/stylelint-config/license.txt +++ b/packages/stylelint-config/license.txt @@ -1,6 +1,8 @@ MIT License -Copyright (c) 2023-2024 Eric Mika +Copyright (c) 2024 Liam Rella + +Based on the MIT-licensed "@kitschpatrol/shared-config" project by Eric Mika Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/stylelint-config/package.json b/packages/stylelint-config/package.json index 3d689f9..6d29f85 100644 --- a/packages/stylelint-config/package.json +++ b/packages/stylelint-config/package.json @@ -1,58 +1,58 @@ { - "name": "@kitschpatrol/stylelint-config", - "version": "4.7.5", - "type": "module", - "description": "Stylelint configuration for @kitschpatrol/shared-config.", - "repository": { - "type": "git", - "url": "git@github.com:kitschpatrol/shared-config.git", - "directory": "packages/stylelint-config" - }, - "bugs": { - "url": "https://github.com/kitschpatrol/shared-config/issues", - "email": "eric@ericmika.com" - }, - "author": { - "name": "Eric Mika", - "email": "eric@ericmika.com", - "url": "https://ericmika.com" - }, - "license": "MIT", - "engines": { - "node": ">=18.0.0", - "pnpm": ">=8.0.0" - }, - "bin": { - "stylelint-config": "bin/cli.js" - }, - "main": "stylelint.config.cjs", - "files": [ - "bin/*", - "init/*" - ], - "keywords": [ - "stylelint-config", - "stylelint", - "cli" - ], - "scripts": { - "build": "../../scripts/build.ts && mdat readme", - "cli": "node ./bin/cli.js", - "prepublishOnly": "pnpm run build" - }, - "peerDependencies": { - "stylelint": "^16.6.1" - }, - "dependencies": { - "@pinojs/json-colorizer": "^4.0.0", - "cosmiconfig": "^9.0.0", - "execa": "^8.0.1", - "fs-extra": "^11.2.0", - "stylelint-config-clean-order": "^6.1.0", - "stylelint-config-html": "^1.1.0", - "stylelint-config-standard": "^36.0.1" - }, - "publishConfig": { - "access": "public" - } + "name": "@envsa/stylelint-config", + "version": "1.0.0", + "type": "module", + "description": "Stylelint configuration for @envsa/shared-config.", + "repository": { + "type": "git", + "url": "git@github.com:envsa/shared-config.git", + "directory": "packages/stylelint-config" + }, + "bugs": { + "url": "https://github.com/envsa/shared-config/issues", + "email": "DEW.ICTWebServices@sa.gov.au" + }, + "author": { + "name": "Liam Rella", + "email": "DEW.ICTWebServices@sa.gov.au", + "url": "https://github.com/rellafella" + }, + "license": "MIT", + "engines": { + "node": ">=18.0.0", + "pnpm": ">=8.0.0" + }, + "bin": { + "stylelint-config": "bin/cli.js" + }, + "main": "stylelint.config.cjs", + "files": [ + "bin/*", + "init/*" + ], + "keywords": [ + "stylelint-config", + "stylelint", + "cli" + ], + "scripts": { + "build": "../../scripts/build.ts && mdat readme", + "cli": "node ./bin/cli.js", + "prepublishOnly": "pnpm run build" + }, + "peerDependencies": { + "stylelint": "^16.6.1" + }, + "dependencies": { + "@pinojs/json-colorizer": "^4.0.0", + "cosmiconfig": "^9.0.0", + "execa": "^8.0.1", + "fs-extra": "^11.2.0", + "stylelint-config-clean-order": "^6.1.0", + "stylelint-config-standard": "^36.0.1", + "stylelint-config-standard-scss": "^13.1.0" + }, + "publishConfig": { + "access": "public" + } } diff --git a/packages/stylelint-config/readme.md b/packages/stylelint-config/readme.md index 5691757..0a24804 100644 --- a/packages/stylelint-config/readme.md +++ b/packages/stylelint-config/readme.md @@ -2,20 +2,20 @@ -# @kitschpatrol/stylelint-config +# @envsa/stylelint-config -[![NPM Package @kitschpatrol/stylelint-config](https://img.shields.io/npm/v/@kitschpatrol/stylelint-config.svg)](https://npmjs.com/package/@kitschpatrol/stylelint-config) +[![NPM Package @envsa/stylelint-config](https://img.shields.io/npm/v/@envsa/stylelint-config.svg)](https://npmjs.com/package/@envsa/stylelint-config) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -**Stylelint configuration for @kitschpatrol/shared-config.** +**Stylelint configuration for @envsa/shared-config.** @@ -23,7 +23,7 @@ It's a shared [Stylelint](https://stylelint.io) config. -**See [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) for the recommended single-package approach.** +**See [`@envsa/shared-config`](https://www.npmjs.com/package/@envsa/shared-config) for the recommended single-package approach.** ## Setup @@ -32,13 +32,13 @@ To use just this Stylelint config in isolation: 1. Install the `.npmrc` in your project root. This is required for correct PNPM behavior: ```sh - pnpm dlx @kitschpatrol/repo-config --init + pnpm dlx @envsa/repo-config --init ``` 2. Add the package: ```sh - pnpm add -D @kitschpatrol/stylelint-config + pnpm add -D @envsa/stylelint-config ``` 3. Add the starter `.stylelintrc.cjs` file to your project root, and add any customizations you'd like: @@ -68,7 +68,7 @@ Integrate with your `package.json` scripts as you see fit, for example: #### Command: `stylelint-config` -Stylelint configuration for @kitschpatrol/shared-config. +Stylelint configuration for @envsa/shared-config. Usage: @@ -91,10 +91,14 @@ stylelint-config [ ...] Ignores files in `.gitignore` +## Credits + +[Eric Mika](https://github.com/kitschpatrol) is the author of the original [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) project on which this is based. + ## License -[MIT](license.txt) © Eric Mika +[MIT](license.txt) © Liam Rella diff --git a/packages/stylelint-config/src/cli.ts b/packages/stylelint-config/src/cli.ts index 9ef0155..dfbfa7e 100644 --- a/packages/stylelint-config/src/cli.ts +++ b/packages/stylelint-config/src/cli.ts @@ -1,32 +1,32 @@ #!/usr/bin/env node -import { buildCommands, executeJsonOutput } from '../../../src/command-builder.js' +import { buildCommands, executeJsonOutput } from '$root/src/command-builder.ts'; -const sharedOptions = ['--ignore-path', '.gitignore', '--allow-empty-input'] -const sharedDefaultArguments = ['**/*.{css,scss,sass,svelte,html,astro}'] +const sharedOptions = ['--ignore-path', '.gitignore', '--allow-empty-input']; +const sharedDefaultArguments = ['**/*.{css,scss,sass,svelte,html}']; await buildCommands('stylelint-config', '[Stylelint]', 'greenBright', { - check: { - command: 'stylelint', - defaultArguments: sharedDefaultArguments, - options: sharedOptions, - }, - fix: { - command: 'stylelint', - defaultArguments: sharedDefaultArguments, - options: [...sharedOptions, '--fix'], - }, - init: {}, - printConfig: { - async command(logStream, args) { - return executeJsonOutput( - logStream, - { - command: 'stylelint', - options: ['--print-config'], - }, - args, - ) - }, - defaultArguments: ['.'], - }, -}) + check: { + command: 'stylelint', + defaultArguments: sharedDefaultArguments, + options: sharedOptions, + }, + fix: { + command: 'stylelint', + defaultArguments: sharedDefaultArguments, + options: [...sharedOptions, '--fix'], + }, + init: {}, + printConfig: { + async command(logStream, args) { + return executeJsonOutput( + logStream, + { + command: 'stylelint', + options: ['--print-config'], + }, + args, + ); + }, + defaultArguments: ['.'], + }, +}); diff --git a/packages/stylelint-config/stylelint.config.cjs b/packages/stylelint-config/stylelint.config.cjs deleted file mode 100644 index 845dd12..0000000 --- a/packages/stylelint-config/stylelint.config.cjs +++ /dev/null @@ -1,43 +0,0 @@ -/* eslint-disable perfectionist/sort-objects */ -/* eslint-disable unicorn/no-null */ -const { propertyGroups } = require('stylelint-config-clean-order') - -const propertiesOrder = propertyGroups.map((properties) => ({ - emptyLineBefore: 'never', // Don't add empty lines between order groups. - noEmptyLineBetween: true, - properties, -})) - -/** @type {import("stylelint").Config} */ -module.exports = { - extends: ['stylelint-config-standard', 'stylelint-config-clean-order', 'stylelint-config-html'], - rules: { - 'color-hex-length': null, - 'comment-empty-line-before': null, - 'declaration-empty-line-before': null, - // 'at-rule-empty-line-before': 'never', - 'order/properties-order': [ - propertiesOrder, - { - severity: 'error', - unspecified: 'bottomAlphabetical', - }, - ], - 'selector-class-pattern': null, - 'selector-pseudo-class-no-unknown': [ - true, - { - ignorePseudoClasses: ['global'], - }, - ], - }, - overrides: [ - { - // Not unusual to have empty style tags in an Astro template - files: ['*.astro'], - rules: { - 'no-empty-source': null, - }, - }, - ], -} diff --git a/packages/stylelint-config/stylelint.config.js b/packages/stylelint-config/stylelint.config.js new file mode 100644 index 0000000..27452d7 --- /dev/null +++ b/packages/stylelint-config/stylelint.config.js @@ -0,0 +1,63 @@ +/* eslint-disable unicorn/no-null */ +import { propertyGroups } from 'stylelint-config-clean-order'; + +const propertiesOrder = propertyGroups.map((properties) => ({ + emptyLineBefore: 'never', // Don't add empty lines between order groups. + noEmptyLineBetween: true, + properties, +})); + +/** @type {import("stylelint").Config} */ +export default { + extends: ['stylelint-config-standard-scss'], + ignoreFiles: ['./vendor/**/*'], + rules: { + 'at-rule-empty-line-before': [ + 'always', + { + ignore: ['after-comment', 'first-nested', 'blockless-after-same-name-blockless'], + ignoreAtRules: ['else', 'apply'], + }, + ], + 'declaration-empty-line-before': 'never', + 'import-notation': 'string', + 'no-descending-specificity': [true, { ignore: ['selectors-within-list'] }], + 'no-invalid-position-at-import-rule': [true, { ignoreAtRules: ['tailwind'] }], + 'order/properties-order': [ + propertiesOrder, + { + severity: 'error', + unspecified: 'bottomAlphabetical', + }, + ], + /** Selector class pattern must match [BEM CSS](https://en.bem.info/methodology/css) - [Regex](https://regexr.com/3apms) */ + 'selector-class-pattern': [ + '^[a-z]([-]?[a-z0-9]+)*(__[a-z0-9]([-]?[a-z0-9]+)*)?(--[a-z0-9]([-]?[a-z0-9]+)*)?$', + { + /** This option will resolve nested selectors with & interpolation. - https://stylelint.io/user-guide/rules/selector-class-pattern/#resolvenestedselectors-true--false-default-false */ + resolveNestedSelectors: true, + /** Custom message */ + message: function expected(selectorValue) { + return `Expected class selector "${selectorValue}" to match BEM CSS pattern https://en.bem.info/methodology/css. Selector validation tool: https://regexr.com/3apms`; + }, + }, + ], + 'value-keyword-case': ['lower', { camelCaseSvgKeywords: true }], + }, + 'scss/at-rule-no-unknown': [ + true, + { + ignoreAtRules: [ + /* Tailwind */ + 'tailwind', + 'apply', + 'layer', + 'config', + 'variants', + 'responsive', + 'screen', + ], + }, + ], + 'scss/load-partial-extension': 'never', +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc46114..355a27e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,28 +8,25 @@ importers: .: devDependencies: - '@kitschpatrol/cspell-config': + '@envsa/cspell-config': specifier: workspace:* version: link:packages/cspell-config - '@kitschpatrol/eslint-config': + '@envsa/eslint-config': specifier: workspace:* version: link:packages/eslint-config - '@kitschpatrol/mdat-config': + '@envsa/mdat-config': specifier: workspace:* version: link:packages/mdat-config - '@kitschpatrol/prettier-config': + '@envsa/prettier-config': specifier: workspace:* version: link:packages/prettier-config - '@kitschpatrol/remark-config': - specifier: workspace:* - version: link:packages/remark-config - '@kitschpatrol/repo-config': + '@envsa/repo-config': specifier: workspace:* version: link:packages/repo-config - '@kitschpatrol/shared-config': + '@envsa/shared-config': specifier: workspace:* version: link:packages/shared-config - '@kitschpatrol/stylelint-config': + '@envsa/stylelint-config': specifier: workspace:* version: link:packages/stylelint-config '@pinojs/json-colorizer': @@ -65,6 +62,9 @@ importers: json-stringify-pretty-compact: specifier: ^4.0.0 version: 4.0.0 + mdat: + specifier: ^0.7.4 + version: 0.7.4(typescript@5.5.4) meow: specifier: ^13.2.0 version: 13.2.0 @@ -98,54 +98,39 @@ importers: packages/eslint-config: dependencies: - '@html-eslint/eslint-plugin': - specifier: ^0.26.0 - version: 0.26.0 - '@html-eslint/parser': - specifier: ^0.26.0 - version: 0.26.0 + '@cspell/eslint-plugin': + specifier: ^8.14.2 + version: 8.14.2(eslint@8.57.0) + '@eslint/compat': + specifier: ^1.1.1 + version: 1.1.1 + '@eslint/js': + specifier: ^9.10.0 + version: 9.10.0 '@pinojs/json-colorizer': specifier: ^4.0.0 version: 4.0.0 - '@typescript-eslint/eslint-plugin': - specifier: ^7.18.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) - astro-eslint-parser: - specifier: ^1.0.2 - version: 1.0.2(typescript@5.5.4) + cosmiconfig: + specifier: ^9.0.0 + version: 9.0.0(typescript@5.5.4) eslint: - specifier: ^8.57.0 + specifier: ^8.0.0 version: 8.57.0 eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) - eslint-config-xo: - specifier: ^0.45.0 - version: 0.45.0(eslint@8.57.0) - eslint-config-xo-typescript: - specifier: ^5.0.0 - version: 5.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-astro: - specifier: ^1.2.3 - version: 1.2.3(eslint@8.57.0)(typescript@5.5.4) - eslint-plugin-html: - specifier: ^8.1.1 - version: 8.1.1 - eslint-plugin-jsx-a11y: - specifier: ^6.10.0 - version: 6.10.0(eslint@8.57.0) - eslint-plugin-mdx: - specifier: ^3.1.5 - version: 3.1.5(eslint@8.57.0) - eslint-plugin-n: - specifier: ^17.10.2 - version: 17.10.2(eslint@8.57.0) - eslint-plugin-perfectionist: - specifier: ^3.4.0 - version: 3.4.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@4.2.19))(svelte@4.2.19)(typescript@5.5.4) + eslint-import-resolver-alias: + specifier: ^1.1.2 + version: 1.1.2(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)) + eslint-import-resolver-typescript: + specifier: ^3.6.3 + version: 3.6.3(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0) + eslint-plugin-import-x: + specifier: ^4.2.1 + version: 4.2.1(eslint@8.57.0)(typescript@5.5.4) + eslint-plugin-prettier: + specifier: ^5.2.1 + version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) eslint-plugin-svelte: specifier: ^2.43.0 version: 2.43.0(eslint@8.57.0)(svelte@4.2.19) @@ -158,6 +143,12 @@ importers: fs-extra: specifier: ^11.2.0 version: 11.2.0 + globals: + specifier: ^15.9.0 + version: 15.9.0 + typescript-eslint: + specifier: ^8.4.0 + version: 8.5.0(eslint@8.57.0)(typescript@5.5.4) packages/mdat-config: dependencies: @@ -175,7 +166,7 @@ importers: version: 11.2.0 mdat: specifier: ^0.7.1 - version: 0.7.3(typescript@5.5.4) + version: 0.7.4(typescript@5.5.4) packages/prettier-config: dependencies: @@ -185,9 +176,6 @@ importers: '@prettier/plugin-php': specifier: ^0.22.2 version: 0.22.2(prettier@3.3.3) - '@prettier/plugin-ruby': - specifier: ^4.0.4 - version: 4.0.4(prettier@3.3.3) '@prettier/plugin-xml': specifier: ^3.4.1 version: 3.4.1(prettier@3.3.3) @@ -203,183 +191,18 @@ importers: prettier: specifier: ^3.3.1 version: 3.3.3 - prettier-plugin-astro: - specifier: ^0.14.1 - version: 0.14.1 prettier-plugin-pkg: specifier: ^0.18.1 version: 0.18.1(prettier@3.3.3) prettier-plugin-sh: specifier: ^0.14.0 version: 0.14.0(prettier@3.3.3) - prettier-plugin-sql: - specifier: ^0.18.1 - version: 0.18.1(prettier@3.3.3) prettier-plugin-svelte: - specifier: ^3.2.6 + specifier: ^3.2.4 version: 3.2.6(prettier@3.3.3)(svelte@4.2.19) prettier-plugin-tailwindcss: - specifier: ^0.6.6 - version: 0.6.6(prettier-plugin-astro@0.14.1)(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19))(prettier@3.3.3) - prettier-plugin-toml: - specifier: ^2.0.1 - version: 2.0.1(prettier@3.3.3) - - packages/remark-config: - dependencies: - '@pinojs/json-colorizer': - specifier: ^4.0.0 - version: 4.0.0 - cosmiconfig: - specifier: ^9.0.0 - version: 9.0.0(typescript@5.5.4) - execa: - specifier: ^8.0.1 - version: 8.0.1 - fs-extra: - specifier: ^11.2.0 - version: 11.2.0 - remark-cli: - specifier: ^12.0.1 - version: 12.0.1 - remark-directive: - specifier: ^3.0.0 - version: 3.0.0 - remark-frontmatter: - specifier: ^5.0.0 - version: 5.0.0 - remark-gfm: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint: - specifier: ^10.0.0 - version: 10.0.0 - remark-lint-checkbox-character-style: - specifier: ^5.0.0 - version: 5.0.0 - remark-lint-checkbox-content-indent: - specifier: ^5.0.0 - version: 5.0.0 - remark-lint-code-block-style: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-emphasis-marker: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-fenced-code-flag: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-fenced-code-marker: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-final-definition: - specifier: ^4.0.1 - version: 4.0.1 - remark-lint-first-heading-level: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-heading-increment: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-linebreak-style: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-maximum-heading-length: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-duplicate-defined-urls: - specifier: ^3.0.0 - version: 3.0.0 - remark-lint-no-duplicate-definitions: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-duplicate-headings: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-duplicate-headings-in-section: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-empty-url: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-file-name-articles: - specifier: ^3.0.0 - version: 3.0.0 - remark-lint-no-file-name-consecutive-dashes: - specifier: ^3.0.0 - version: 3.0.0 - remark-lint-no-file-name-irregular-characters: - specifier: ^3.0.0 - version: 3.0.0 - remark-lint-no-file-name-outer-dashes: - specifier: ^3.0.0 - version: 3.0.0 - remark-lint-no-heading-indent: - specifier: ^5.0.0 - version: 5.0.0 - remark-lint-no-heading-like-paragraph: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-literal-urls: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-multiple-toplevel-headings: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-paragraph-content-indent: - specifier: ^5.0.0 - version: 5.0.0 - remark-lint-no-reference-like-url: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-shell-dollars: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-shortcut-reference-image: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-shortcut-reference-link: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-tabs: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-undefined-references: - specifier: ^5.0.0 - version: 5.0.0 - remark-lint-no-unneeded-full-reference-image: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-unneeded-full-reference-link: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-no-unused-definitions: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-ordered-list-marker-style: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-rule-style: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-strikethrough-marker: - specifier: ^3.0.0 - version: 3.0.0 - remark-lint-strong-marker: - specifier: ^4.0.0 - version: 4.0.0 - remark-lint-table-cell-padding: - specifier: ^5.0.0 - version: 5.0.0 - remark-lint-unordered-list-marker-style: - specifier: ^4.0.0 - version: 4.0.0 - remark-preset-prettier: - specifier: ^2.0.1 - version: 2.0.1(prettier@3.3.3) - remark-validate-links: - specifier: ^13.0.1 - version: 13.0.1 + specifier: ^0.6.2 + version: 0.6.6(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19))(prettier@3.3.3) packages/repo-config: dependencies: @@ -398,25 +221,22 @@ importers: packages/shared-config: dependencies: - '@kitschpatrol/cspell-config': + '@envsa/cspell-config': specifier: workspace:* version: link:../cspell-config - '@kitschpatrol/eslint-config': + '@envsa/eslint-config': specifier: workspace:* version: link:../eslint-config - '@kitschpatrol/mdat-config': + '@envsa/mdat-config': specifier: workspace:* version: link:../mdat-config - '@kitschpatrol/prettier-config': + '@envsa/prettier-config': specifier: workspace:* version: link:../prettier-config - '@kitschpatrol/remark-config': - specifier: workspace:* - version: link:../remark-config - '@kitschpatrol/repo-config': + '@envsa/repo-config': specifier: workspace:* version: link:../repo-config - '@kitschpatrol/stylelint-config': + '@envsa/stylelint-config': specifier: workspace:* version: link:../stylelint-config '@pinojs/json-colorizer': @@ -462,12 +282,12 @@ importers: stylelint-config-clean-order: specifier: ^6.1.0 version: 6.1.0(stylelint@16.9.0(typescript@5.5.4)) - stylelint-config-html: - specifier: ^1.1.0 - version: 1.1.0(postcss-html@1.7.0)(stylelint@16.9.0(typescript@5.5.4)) stylelint-config-standard: specifier: ^36.0.1 version: 36.0.1(stylelint@16.9.0(typescript@5.5.4)) + stylelint-config-standard-scss: + specifier: ^13.1.0 + version: 13.1.0(postcss@8.4.45)(stylelint@16.9.0(typescript@5.5.4)) packages: @@ -475,9 +295,6 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@astrojs/compiler@2.10.3': - resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} - '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} @@ -685,6 +502,12 @@ packages: resolution: {integrity: sha512-5MbqtIligU7yPwHWU/5yFCgMvur4i1bRAF1Cy8y2dDtHsa204S/w/SaXs+51EFLp2eNbCiBisCBrwJFT7R1RxA==} engines: {node: '>=18.0'} + '@cspell/eslint-plugin@8.14.2': + resolution: {integrity: sha512-SU8OPwkNFjRmYyMuwA1O6L1GsKw2pjLogBKsIR1iBQaVNvIf2JiwqjO0xB+UQnJHlqHzR2VuarR9mJUMNuy4tg==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7 || ^8 || ^9 + '@cspell/filetypes@8.14.2': resolution: {integrity: sha512-ZevArA0mWeVTTqHicxCPZIAeCibpY3NwWK/x6d1Lgu7RPk/daoGAM546Q2SLChFu+r10tIH7pRG212A6Q9ihPA==} engines: {node: '>=18'} @@ -877,6 +700,10 @@ packages: resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@1.1.1': + resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -885,16 +712,12 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@fontsource/inter@5.0.20': - resolution: {integrity: sha512-rtw2F7xfM7rJmmnncXnR4ADr5wXsp4GyN1O1jmQJ1PMjAK+bm620/ZkQkeOYOkGoa09OksGinOeMA+Mkt6K9PQ==} - - '@html-eslint/eslint-plugin@0.26.0': - resolution: {integrity: sha512-ovmAYVN/Wv+OX77FrSSyPxBokOg6hvxuiTRXhbN1rnZ7DwCmHjnvVyDlkTeWQHmuwFF2n8yLu2B/X9AMA9KxNw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.10.0': + resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@html-eslint/parser@0.26.0': - resolution: {integrity: sha512-o82iUf7HLV6W48voPByAVTPALlWyF4PR9/2YOUlyXY9Ff7bbu9IdxU9Oc5t82Jwx4kOH5gJiZi3cee+CFB9OBQ==} - engines: {node: '>=8.10.0'} + '@fontsource/inter@5.0.21': + resolution: {integrity: sha512-Y4Ph0bYD5IfW8r9PSeiNjLvM6D/Bh5+YT9jOKiBqW3YS+AEBlmy8v74TpTNeZAvL3zHmikHCnzaKw7ob8LZiKQ==} '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} @@ -909,10 +732,6 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -935,8 +754,8 @@ packages: resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} engines: {node: '>=10'} - '@kitschpatrol/tldraw-cli@4.6.12': - resolution: {integrity: sha512-qI2Qm2C7JtvXrOn/QDcm0+jbILmcc0R3heiWqTqN6COPQqMfQ+eILSPiaymfAL2Ho2guJMF3lpbrdN96A2T56w==} + '@kitschpatrol/tldraw-cli@4.6.14': + resolution: {integrity: sha512-ln3O8w/0ePXMZO9c2/fdepDbiYf3ZPdk8e+F9l4V77NA8tIH9z5IjEeRtwPrZwO8iE+RvsjOyTAsGvhB5GxbCQ==} engines: {node: '>=18.0.0', pnpm: '>=9.0.0'} hasBin: true @@ -952,37 +771,13 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/config@8.3.4': - resolution: {integrity: sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/git@5.0.8': - resolution: {integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/map-workspaces@3.0.6': - resolution: {integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/name-from-folder@2.0.0': - resolution: {integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - '@npmcli/package-json@5.2.0': - resolution: {integrity: sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@npmcli/promise-spawn@7.0.2': - resolution: {integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==} - engines: {node: ^16.14.0 || >=18.0.0} + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} '@pinojs/json-colorizer@4.0.0': resolution: {integrity: sha512-TSQ3Dl9Icw/tfrDNmOoVRofU70yXFtvc5PjYFCOC+94su6HPv+4RkP/KfnolxcglfNUvhF1xI/0PkcpfaNAbzw==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -992,11 +787,6 @@ packages: peerDependencies: prettier: ^3.0.0 - '@prettier/plugin-ruby@4.0.4': - resolution: {integrity: sha512-lCpvfS/dQU5WrwN3AQ5vR8qrvj2h5gE41X08NNzAAXvHdM4zwwGRcP2sHSxfu6n6No+ljWCVx95NvJPFTTjCTg==} - peerDependencies: - prettier: ^3.0.0 - '@prettier/plugin-xml@3.4.1': resolution: {integrity: sha512-Uf/6/+9ez6z/IvZErgobZ2G9n1ybxF5BhCd7eMcKqfoWuOzzNUxBipNo3QAP8kRC1VD18TIo84no7LhqtyDcTg==} peerDependencies: @@ -1007,6 +797,9 @@ packages: engines: {node: '>=18'} hasBin: true + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -1018,54 +811,24 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@taplo/core@0.1.1': - resolution: {integrity: sha512-BG/zLGf5wiNXGEVPvUAAX/4ilB3PwDUY2o0MV0y47mZbDZ9ad9UK/cIQsILat3bqbPJsALVbU6k3cskNZ3vAQg==} - - '@taplo/lib@0.4.0-alpha.2': - resolution: {integrity: sha512-DV/Re3DPVY+BhBtLZ3dmP4mP6YMLSsgq9qGLXwOV38lvNF/fBlgvQswzlXmzCEefL/3q2eMoefZpOI/+GLuCNA==} - '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@types/acorn@4.0.6': - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - - '@types/concat-stream@2.0.3': - resolution: {integrity: sha512-3qe4oQAPNwVNwK4C9c8u+VJqv9kez+2MR4qJpoPFfXtgxxif1QbFusvXzK0/Wra2VX07smostI2VMmJNSpZjuQ==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - - '@types/hosted-git-info@3.0.5': - resolution: {integrity: sha512-Dmngh7U003cOHPhKGyA7LWqrnvcTyILNgNPmNCxlx7j8MIi54iBliiT8XqVLIQ3GchoOjVAyBzNJVyuaJjqokg==} - - '@types/is-empty@1.2.3': - resolution: {integrity: sha512-4J1l5d79hoIvsrKh5VUKVRA1aIdsOb10Hu5j3J2VfP/msDnfTdGPmNp2E1Wg+vs97Bktzo+MZePFFXSGoykYJw==} + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} '@types/jsonfile@6.1.4': resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - '@types/mdast@3.0.15': - resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@18.19.0': resolution: {integrity: sha512-667KNhaD7U29mT5wf+TZUnrzPrlL2GNQ5N0BMjO2oNULhBxX0/FKCkm6JMu0Jh7Z+1LwUlR21ekd7KhIboNFNw==} @@ -1075,15 +838,6 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/supports-color@8.1.3': - resolution: {integrity: sha512-Hy6UMpxhE3j1tLpl27exp1XqHD7n8chAiNPzWfz16LPZoMMoSc4dzLl6w9qijkEb/r5O1ozdu1CWGA2L83ZeZg==} - - '@types/text-table@0.2.5': - resolution: {integrity: sha512-hcZhlNvMkQG/k1vcZ6yHOl6WAYftQ2MLfTHcYRZ2xYZFD8tGVnE3qFV0lj1smQeDSR7/yY0PyuUalauf33bJeA==} - - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -1099,64 +853,46 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/eslint-plugin@8.5.0': + resolution: {integrity: sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/parser@8.5.0': + resolution: {integrity: sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/scope-manager@8.4.0': - resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==} + '@typescript-eslint/scope-manager@8.5.0': + resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.5.0': + resolution: {integrity: sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/types@8.4.0': - resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==} + '@typescript-eslint/types@8.5.0': + resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.4.0': - resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==} + '@typescript-eslint/typescript-estree@8.5.0': + resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1164,24 +900,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/utils@8.4.0': - resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==} + '@typescript-eslint/utils@8.5.0': + resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/visitor-keys@8.4.0': - resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==} + '@typescript-eslint/visitor-keys@8.5.0': + resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.2.0': @@ -1190,10 +916,6 @@ packages: '@xml-tools/parser@1.0.11': resolution: {integrity: sha512-aKqQ077XnR+oQtHJlrAflaZaL7qZsulWc/i/ZEooar5JiWj1eLt0+Wg28cpa+XLney107wXqneC+oG1IZvxkTA==} - abbrev@2.0.0: - resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -1222,8 +944,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} ansi-styles@3.2.1: @@ -1234,10 +956,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1245,9 +963,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} @@ -1269,6 +984,10 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} @@ -1281,9 +1000,6 @@ packages: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} @@ -1292,24 +1008,10 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - astro-eslint-parser@1.0.2: - resolution: {integrity: sha512-8hJaCuqxObShWl2wEsnASqh/DbQ2O+S66m0Q3ctJlzBPEQ4pfGwwama3FCjZO3GDLQsjvn1T0v93Vxyu/+5fGw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - astrojs-compiler-sync@1.0.0: - resolution: {integrity: sha512-IM6FxpMoBxkGGdKppkFHNQIC9Wge7jspG2MIJff8DOhG41USNJLxJfxRm7wnkTKWlYK5Y1YFFNYr2vUUKkI8sw==} - engines: {node: ^18.18.0 || >=20.9.0} - peerDependencies: - '@astrojs/compiler': '>=0.27.0' - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} - engines: {node: '>=4'} - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -1317,9 +1019,6 @@ packages: b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1329,17 +1028,17 @@ packages: bare-events@2.4.2: resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} - bare-fs@2.3.3: - resolution: {integrity: sha512-7RYKL+vZVCyAsMLi5SPu7QGauGGT8avnP/HO571ndEuV4MYdGXvLhtW67FuLPeEI8EiIY7zbbRR9x7x7HU0kgw==} + bare-fs@2.3.4: + resolution: {integrity: sha512-7YyxitZEq0ey5loOF5gdo1fZQFF7290GziT+VbAJ+JbYTJYaPZwuEz2r/Nq23sm4fjyTgUf2uJI2gkT3xAuSYA==} - bare-os@2.4.2: - resolution: {integrity: sha512-HZoJwzC+rZ9lqEemTMiO0luOePoGYNBgsLLgegKR/cljiJvcDNhDZQkzC+NC5Oh0aHbdBNSOHpghwMuB5tqhjg==} + bare-os@2.4.3: + resolution: {integrity: sha512-FjkNiU3AwTQNQkcxFOmDcCfoN1LjjtU+ofGJh5DymZZLTqdw2i/CzV7G0h3snvh6G8jrWtdmNSgZPH4L2VOAsQ==} bare-path@2.1.3: resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} - bare-stream@2.2.1: - resolution: {integrity: sha512-YTB47kHwBW9zSG8LD77MIBAAQXjU2WjAkMHeeb7hUplVs6+IoM5I7uEVQNPMB7lj9r8I76UMdoMkGnCodHOLqg==} + bare-stream@2.3.0: + resolution: {integrity: sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1348,16 +1047,12 @@ packages: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} - big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} brace-expansion@1.1.11: @@ -1378,9 +1073,6 @@ packages: buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} @@ -1424,11 +1116,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001658: - resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} chalk-template@1.1.0: resolution: {integrity: sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==} @@ -1446,27 +1135,6 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@1.1.4: - resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@1.2.4: - resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@1.1.4: - resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chevrotain@7.1.1: resolution: {integrity: sha512-wy3mC1x4ye+O+QkEinVJkPf5u2vsrDIYW9G7ZuwFl6v/Yu0LwUuT2POsb+NUWApebyxfkQq6+yDfRExbnI5rcw==} @@ -1505,9 +1173,6 @@ packages: code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1527,16 +1192,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - comment-json@4.2.5: resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} engines: {node: '>= 6'} @@ -1544,16 +1203,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} - engines: {'0': node >= 6.0} - confbox@0.1.7: resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - consola@3.2.3: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} @@ -1652,9 +1304,6 @@ packages: engines: {node: '>=4'} hasBin: true - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - data-uri-to-buffer@6.0.2: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} @@ -1679,6 +1328,14 @@ packages: supports-color: optional: true + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -1688,13 +1345,6 @@ packages: supports-color: optional: true - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1732,66 +1382,42 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - devtools-protocol@0.0.1330662: resolution: {integrity: sha512-pzh6YQ8zZfz3iKlCvgzVCu22NdpZ8hNmwU6WnQjNVquh0A9iVosPtNLWDwaWVGyrntQlltPFztTMK5Cg6lfCuw==} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - discontinuous-range@1.0.0: - resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.18: - resolution: {integrity: sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==} - - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + electron-to-chromium@1.5.20: + resolution: {integrity: sha512-74mdl6Fs1HHzK9SUX4CKFxAtAe3nUns48y79TskHNAG6fGOlLfyKA4j855x+0b5u8rWJIrlaG9tcTPstMlwjIw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -1799,10 +1425,6 @@ packages: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -1811,9 +1433,6 @@ packages: resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -1829,16 +1448,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - - es-html-parser@0.0.9: - resolution: {integrity: sha512-oniQMi+466VFsDzcdron9Ry/sqUJpDJg1bbDn0jFJKDdxXhwIOYDr4DgBnO5/yPLGj2xv+n5yy4L1Q0vAC5TYQ==} - - es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} - es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -1874,10 +1483,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -1895,84 +1500,77 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-config-xo-typescript@5.0.0: - resolution: {integrity: sha512-ukAYCKf3p039pRai7hb6xaomZzsKlCjV5qx3NbYe27UC7Nz75If1HcpQL5sNW2b5aH8+Axb6dIIv28+bVtwlVQ==} - engines: {node: '>=18'} - peerDependencies: - '@typescript-eslint/eslint-plugin': '>=7.16.0' - '@typescript-eslint/parser': '>=7.16.0' - eslint: '>=8.56.0' - typescript: '>=5.0.0' - - eslint-config-xo@0.45.0: - resolution: {integrity: sha512-T30F2S2HKKmr/RoHopKE7wMUMWrsLMab1qFl2WyFJjETbD+l7p4hSQWpTVGW7TEbSKG1QBekwf6Jn9ZDPA6thA==} - engines: {node: '>=18'} - peerDependencies: - eslint: '>=8.56.0' - - eslint-mdx@3.1.5: - resolution: {integrity: sha512-ynztX0k7CQ3iDL7fDEIeg3g0O/d6QPv7IBI9fdYLhXp5fAp0fi8X22xF/D3+Pk0f90R27uwqa1clHpay6t0l8Q==} - engines: {node: '>=18.0.0'} + eslint-import-resolver-alias@1.1.2: + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} peerDependencies: - eslint: '>=8.0.0' + eslint-plugin-import: '>=1.4.0' - eslint-plugin-astro@1.2.3: - resolution: {integrity: sha512-asHT0VUs68oppVnTHfp/WgLqs0yCx9kG9AC/PKLmp+87imeh3nGHMdFm0qP46vHxTM0NLDEhvmjFdAVAqw+QPQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.57.0' + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-plugin-es-x@7.8.0: - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '>=8' - - eslint-plugin-html@8.1.1: - resolution: {integrity: sha512-6qmlJsc40D2m3Dn9oEH+0PAOkJhxVu0f5sVItqpCE0YWgYnyP4xCjBc3UWTHaJcY9ARkWOLIIuXLq0ndRnQOHw==} - engines: {node: '>=16.0.0'} - - eslint-plugin-jsx-a11y@6.10.0: - resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-markdown@3.0.1: - resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true - eslint-plugin-mdx@3.1.5: - resolution: {integrity: sha512-lUE7tP7IrIRHU3gTtASDe5u4YM2SvQveYVJfuo82yn3MLh/B/v05FNySURCK4aIxIYF1QYo3IRemQG/lyQzpAg==} - engines: {node: '>=18.0.0'} + eslint-module-utils@2.11.0: + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} + engines: {node: '>=4'} peerDependencies: - eslint: '>=8.0.0' + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true - eslint-plugin-n@17.10.2: - resolution: {integrity: sha512-e+s4eAf5NtJaxPhTNu3qMO0Iz40WANS93w9LQgYcvuljgvDmWi/a3rh+OrNyMHeng6aOWGJO0rCg5lH4zi8yTw==} + eslint-plugin-import-x@4.2.1: + resolution: {integrity: sha512-WWi2GedccIJa0zXxx3WDnTgouGQTtdYK1nhXMwywbqqAgB0Ov+p1pYBsWh3VaB0bvBOwLse6OfVII7jZD9xo5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=8.23.0' + eslint: ^8.57.0 || ^9.0.0 - eslint-plugin-perfectionist@3.4.0: - resolution: {integrity: sha512-vXyd1sFg3H/7aKgBUie62bA6E0EN3Dh0LCD5r4vR/IYtTljxOnyckI1AV0Arw4eYjC/W9T1X04Pl2mdLsdWtMA==} - engines: {node: ^18.0.0 || >=20.0.0} + eslint-plugin-import@2.30.0: + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} + engines: {node: '>=4'} peerDependencies: - astro-eslint-parser: ^1.0.2 - eslint: '>=8.0.0' - svelte: '>=3.0.0' - svelte-eslint-parser: ^0.41.0 - vue-eslint-parser: '>=9.0.0' + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 peerDependenciesMeta: - astro-eslint-parser: + '@typescript-eslint/parser': optional: true - svelte: - optional: true - svelte-eslint-parser: + + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': optional: true - vue-eslint-parser: + eslint-config-prettier: optional: true eslint-plugin-svelte@2.43.0: @@ -1995,27 +1593,15 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.0.2: - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true - espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2037,12 +1623,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -2062,13 +1642,10 @@ packages: resolution: {integrity: sha512-gdhefCCNy/8tpH/2+ajP9IQc14vXchNdd0weyzSJEFURhRMGncQ+zKFxwjAufIewPEJm9BPOaJnvg2UtlH2gPQ==} engines: {node: ^18.19.0 || >=20.5.0} - express@4.19.2: - resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + express@4.21.0: + resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} engines: {node: '>= 0.10.0'} - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -2077,6 +1654,9 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-equals@5.0.1: resolution: {integrity: sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==} engines: {node: '>=6.0.0'} @@ -2104,9 +1684,6 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fault@2.0.1: - resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} - fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -2126,8 +1703,8 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} find-up-simple@1.0.0: @@ -2156,14 +1733,6 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - format@0.2.2: - resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} - engines: {node: '>=0.4.x'} - forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -2210,10 +1779,6 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} - get-stdin@8.0.0: - resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} - engines: {node: '>=10'} - get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} @@ -2245,9 +1810,6 @@ packages: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2256,10 +1818,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2353,12 +1911,6 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - htmlparser2@9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} - http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -2423,10 +1975,6 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ini@4.1.3: - resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -2439,22 +1987,6 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - is-alphabetical@1.0.4: - resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@1.0.4: - resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -2462,10 +1994,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -2481,6 +2009,9 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -2497,44 +2028,18 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} - is-decimal@1.0.4: - resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-empty@1.2.0: - resolution: {integrity: sha512-F2FnH/otLNJv0J6wc73A5Xo7oHLNnqplYqZhUu01tD54DIPvxIRSTSLkrUB/M0nHO4vo1O9PDfN4KoTxCzLh/w==} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@1.0.4: - resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -2566,10 +2071,6 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} @@ -2594,21 +2095,13 @@ packages: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} - is-unicode-supported@2.0.0: - resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -2619,12 +2112,6 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} - iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@1.21.6: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true @@ -2632,9 +2119,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2657,10 +2141,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@3.0.2: - resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -2673,9 +2153,8 @@ packages: json-stringify-pretty-compact@4.0.0: resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true jsonc-parser@3.3.1: @@ -2684,14 +2163,6 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - jsox@1.2.119: - resolution: {integrity: sha512-f37obwxWKKuylcaOzNlUlzfDvURSCpqTXs8yEivhvsp86D/DTIySxP4v5Qdlg24qCuzDSZ0mJr3krc/f7TZ/5A==} - hasBin: true - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -2703,24 +2174,9 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - known-css-properties@0.34.0: resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - levenshtein-edit-distance@1.0.0: - resolution: {integrity: sha512-gpgBvPn7IFIAL32f0o6Nsh2g+5uOvkt4eK9epTfgE4YVxBxwVhJ/p1888lMm/u8mXdu1ETLSi6zeEmkBI+0F3w==} - hasBin: true - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2732,16 +2188,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lines-and-columns@2.0.4: - resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - linguist-languages@7.27.0: resolution: {integrity: sha512-Wzx/22c5Jsv2ag+uKy+ITanGA5hzvBZngrNGDXLTC7ZjGM6FLCYGgomauTkxNJeP9of353OM0pWqngYA180xgw==} - load-plugin@6.0.3: - resolution: {integrity: sha512-kc0X2FEUZr145odl68frm+lMJuQ23+rTXYmR6TImqPtbpmXC4vVXbWKDQ9IzndA0HfyQamWfKLhzsqGSTxE63w==} - locate-character@3.0.0: resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} @@ -2759,9 +2208,6 @@ packages: lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -2772,81 +2218,11 @@ packages: magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - - markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} - mdast-comment-marker@3.0.0: - resolution: {integrity: sha512-bt08sLmTNg00/UtVDiqZKocxqvQqqyQZAg1uaRuO/4ysXV5motg7RolF5o5yy/sY1rG0v2XgZEqFWho1+2UquA==} - - mdast-util-directive@3.0.0: - resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} - - mdast-util-find-and-replace@3.0.1: - resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} - - mdast-util-from-markdown@0.8.5: - resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} - - mdast-util-from-markdown@2.0.1: - resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} - - mdast-util-frontmatter@2.0.1: - resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} - - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - - mdast-util-gfm-footnote@2.0.0: - resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.0.0: - resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} - - mdast-util-mdx-expression@2.0.0: - resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} - - mdast-util-mdx-jsx@3.1.3: - resolution: {integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} - - mdast-util-to-string@2.0.0: - resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdat@0.7.3: - resolution: {integrity: sha512-RhLaVgYiOBsqaHtW9PfNS9Wgnws8rNFHc77ptSRnFK3989OAHCd1R7tMBMIV93+ThJGW7J+P/RoSwUvOj9rm9w==} + mdat@0.7.4: + resolution: {integrity: sha512-CFfBLoKIUWO4yg69l/+dEMcMMBbSsPkNbmKhRNhaYHjhws9EtmSOTstFE8lxzPrRDvkf2ixdJ08tm2fVCZmG/w==} engines: {node: ^18.19.0 || >=20.5.0, pnpm: '>=9.0.0'} hasBin: true @@ -2861,8 +2237,8 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -2875,120 +2251,6 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - micromark-core-commonmark@2.0.1: - resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} - - micromark-extension-directive@3.0.1: - resolution: {integrity: sha512-VGV2uxUzhEZmaP7NSFo2vtq7M2nUD+WfmYQD+d8i/1nHbzE+rMy9uzTvUybBbNiVbrhOZibg3gbyoARGqgDWyg==} - - micromark-extension-frontmatter@2.0.0: - resolution: {integrity: sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==} - - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.0: - resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-extension-mdx-expression@3.0.0: - resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} - - micromark-extension-mdx-jsx@3.0.1: - resolution: {integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - - micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} - - micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} - - micromark-factory-mdx-expression@2.0.2: - resolution: {integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==} - - micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} - - micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} - - micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} - - micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - - micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} - - micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} - - micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} - - micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} - - micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-events-to-acorn@2.0.2: - resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} - - micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - - micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} - - micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-subtokenize@2.0.1: - resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - - micromark@2.11.4: - resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} - - micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -3032,10 +2294,6 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -3051,13 +2309,6 @@ packages: mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} - moo@0.5.2: - resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -3072,16 +2323,9 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - nearley@2.20.1: - resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} - hasBin: true - negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -3096,15 +2340,6 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - node-sql-parser@4.18.0: - resolution: {integrity: sha512-2YEOR5qlI1zUFbGMLKNfsrR5JUvFg9LxIRVE+xJe962pfVLH0rnItqLzv96XVs1Y1UIR8FxsXAuvX/lYAWZ2BQ==} - engines: {node: '>=8'} - - nopt@7.2.1: - resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -3116,22 +2351,6 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-install-checks@6.3.0: - resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-normalize-package-bin@3.0.1: - resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - npm-package-arg@11.0.3: - resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-pick-manifest@9.1.0: - resolution: {integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==} - engines: {node: ^16.14.0 || >=18.0.0} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3145,10 +2364,6 @@ packages: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -3161,6 +2376,10 @@ packages: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + object.values@1.2.0: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} @@ -3211,9 +2430,6 @@ packages: resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - package-up@5.0.0: resolution: {integrity: sha512-MQEgDUvXCa3sGvqHg3pzHO8e9gqTCMPVrWUko3vPQGntwegmFo52mZb2abIVTjFnUcW0BcPz0D93jV5Cas1DWA==} engines: {node: '>=18'} @@ -3226,20 +2442,10 @@ packages: resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} engines: {node: '>=8'} - parse-entities@2.0.0: - resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} - - parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-json@7.1.1: - resolution: {integrity: sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==} - engines: {node: '>=16'} - parse-json@8.1.0: resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} engines: {node: '>=18'} @@ -3271,12 +2477,8 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -3319,10 +2521,6 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss-html@1.7.0: - resolution: {integrity: sha512-MfcMpSUIaR/nNgeVS8AyvyDugXlADjN9AcV7e5rDfrF1wduIAGSkL4q2+wgrZgA3sHVAHLDO9FuauHhZYW2nBw==} - engines: {node: ^12 || >=14} - postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -3335,6 +2533,9 @@ packages: ts-node: optional: true + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + postcss-resolve-nested-selector@0.1.6: resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} @@ -3376,9 +2577,9 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-astro@0.14.1: - resolution: {integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==} - engines: {node: ^14.15.0 || >=16.0.0} + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} prettier-plugin-pkg@0.18.1: resolution: {integrity: sha512-FuUxvsYZR/8rsLH8s/jbPQmgYvv0yxW8LoIHCy6+Q7p4FBjjdP3DNKx8fMTOsc0SlEB1skB4o1LcahRceIh87A==} @@ -3392,12 +2593,6 @@ packages: peerDependencies: prettier: ^3.0.3 - prettier-plugin-sql@0.18.1: - resolution: {integrity: sha512-2+Nob2sg7hzLAKJoE6sfgtkhBZCqOzrWHZPvE4Kee/e80oOyI4qwy9vypeltqNBJwTtq3uiKPrCxlT03bBpOaw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - prettier: ^3.0.3 - prettier-plugin-svelte@3.2.6: resolution: {integrity: sha512-Y1XWLw7vXUQQZmgv1JAEiLcErqUniAF2wO7QJsw8BVMvpLET2dI5WpEIEJx1r11iHVdSMzQxivyfrH9On9t2IQ==} peerDependencies: @@ -3459,12 +2654,6 @@ packages: prettier-plugin-svelte: optional: true - prettier-plugin-toml@2.0.1: - resolution: {integrity: sha512-99z1YOkViECHtXQjGIigd3talI/ybUI1zB3yniAwUrlWBXupNXThB1hM6bwSMUEj2/+tomTlMtT98F5t4s8IWA==} - engines: {node: '>=16.0.0'} - peerDependencies: - prettier: ^3.0.3 - prettier@3.3.3: resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} @@ -3474,33 +2663,14 @@ packages: resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} engines: {node: '>=18'} - proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - propose@0.0.5: - resolution: {integrity: sha512-Jary1vb+ap2DIwOGfyiadcK4x1Iu3pzpkDBy8tljFPmQvnc9ES3m1PMZOMiWOG50cfoAyYNtGeBzrp+Rlh4G9A==} - proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -3512,8 +2682,8 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -3528,8 +2698,8 @@ packages: engines: {node: '>=18'} hasBin: true - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} queue-microtask@1.2.3: @@ -3538,16 +2708,6 @@ packages: queue-tick@1.0.1: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - quotation@2.0.3: - resolution: {integrity: sha512-yEc24TEgCFLXx7D4JHJJkK4JFVtatO8fziwUxY4nB/Jbea9o9CVS3gt22mA0W7rPYAGW2fWzYDSOtD94PwOyqA==} - - railroad-diagrams@1.0.0: - resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} - - randexp@0.4.6: - resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} - engines: {node: '>=0.12'} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -3559,10 +2719,6 @@ packages: rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - read-package-json-fast@3.0.2: - resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -3575,18 +2731,10 @@ packages: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - regexp-to-ast@0.5.0: resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} @@ -3602,166 +2750,6 @@ packages: resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} hasBin: true - remark-cli@12.0.1: - resolution: {integrity: sha512-2NAEOACoTgo+e+YAaCTODqbrWyhMVmlUyjxNCkTrDRHHQvH6+NbrnqVvQaLH/Q8Ket3v90A43dgAJmXv8y5Tkw==} - hasBin: true - - remark-directive@3.0.0: - resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==} - - remark-frontmatter@5.0.0: - resolution: {integrity: sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-lint-checkbox-character-style@5.0.0: - resolution: {integrity: sha512-K0G/Nok59fb2q5KUxcemBVt+ymnhTkDVLJAatZ4PAh9At8y0DGctHdU27jWsuvO0Fs7Zy62Usk7IJE2VO89p1w==} - - remark-lint-checkbox-content-indent@5.0.0: - resolution: {integrity: sha512-7L25a7TEfdogFSh4HDOnB+GTTTEiXJDMlceUPft9bzIjElI8Hm2+a2D8jUQn4ahj+j/3LmdZW4GjAeyfdPuqTA==} - - remark-lint-code-block-style@4.0.0: - resolution: {integrity: sha512-LKBKMVruEO0tzDnnnqi1TfUcnwY6Mo7cVtZM4E4pKt3KMhtvgU2wD68/MxDOEJd0pmnLrEgIadv74bY0gWhZpg==} - - remark-lint-emphasis-marker@4.0.0: - resolution: {integrity: sha512-xIRiB4PFWUOyIslN/UOPL6Lh+J0VD4R11+jo+W4hpGMNsg58l+2SgtdbinlXzDeoBxmaaka9n/sYpJ7cJWEIPQ==} - - remark-lint-fenced-code-flag@4.0.0: - resolution: {integrity: sha512-Zs0wJd4nRvBo/9NWQVfWg5Ykapbo0Zzw/SyZc3f0h73S1gTZZcfeU+bA5oDivlBdcUgLBsyHRE0QaoaVvN3/Wg==} - - remark-lint-fenced-code-marker@4.0.0: - resolution: {integrity: sha512-WFN88Rx78m4/HSbW3Kx2XAYbVfzYns4bJd9qpwDD90DA3nc59zciYd01xi6Bk3n9vSs5gIlmG7xkwxVHHJ8KCA==} - - remark-lint-final-definition@4.0.1: - resolution: {integrity: sha512-51T9oSdA7wuhjSdgGo0snO1BY39Igt9cJQi7XpgtgFsbfQk8zSSAUAc/rLabY6+YCTpcPs6qmwvLXZ4mPX6Qlg==} - - remark-lint-first-heading-level@4.0.0: - resolution: {integrity: sha512-CAMSDt03MwzGD1bgOZ+UaE0lN1xZXtJZGRXwMg7OmGazLVDtTsRkMEK0YY2LUyozdHBUFoq6FQt5pKyYdt/Tmw==} - - remark-lint-heading-increment@4.0.0: - resolution: {integrity: sha512-TARnsjXWzY/yLwxh/y4+KnDSXO3Koue8Crp55T8G9pjj3vw+XgTAG35zSpIIY9HmGiQ2a3R0SOj2pAxATpnckg==} - - remark-lint-linebreak-style@4.0.0: - resolution: {integrity: sha512-kXBkuFtk973KqLrBMwM/R9thbks2OBJBfNDr9RWTKrHqvdrEysWdehrMu+j56JqemqaeImmKWb8vQqzq/VLdkA==} - - remark-lint-maximum-heading-length@4.0.0: - resolution: {integrity: sha512-UCQxUd0zZyi6RUbpoK5KsxC50ppVqVk0hSgrSPot4wB6PHRgYMALU2fDkEcAjLDc/Y2TayG3IaZEKdqe+84Cwg==} - - remark-lint-no-duplicate-defined-urls@3.0.0: - resolution: {integrity: sha512-i6oGry+ISf3M5bu3okPspbOd6tgZj6biWJIOFT6K7lbKunnFpbIeosmoa1ZyY6CBp3N6i33toSiX+xk50F06vQ==} - - remark-lint-no-duplicate-definitions@4.0.0: - resolution: {integrity: sha512-21fcOACkCyhNsHkedKlpvqIywYx+5zGR507bW8e59gzdGhTbnBwQ9du4ACmN9jxPTfIBhUVMz0bWezkGrHE7Bg==} - - remark-lint-no-duplicate-headings-in-section@4.0.0: - resolution: {integrity: sha512-O6TPMdSs8AFEQeTA1mPI9CgCtJJ9UkfnXz1IlqRdTrpsCJ2DlwaPPXjS2LafQCHoJyf45DgjSwekHeV4WxHYxw==} - - remark-lint-no-duplicate-headings@4.0.0: - resolution: {integrity: sha512-FgBU/JCdR5MitHM+hnOcgBGO5ZCNV8epzuHIglFlJeb8ow23YhhNgmGvyk7RGrZrYuU5R9uQq23N4dF0g9atCA==} - - remark-lint-no-empty-url@4.0.0: - resolution: {integrity: sha512-2zJxrSnL42wGe+CSZepBzoj8d/FeL/QU8GM6TEO/5qGfXwvJD7s2v6q074UJU0CAaWlWRqSxElescwk3yGQddA==} - - remark-lint-no-file-name-articles@3.0.0: - resolution: {integrity: sha512-il4IseupahbV2TVfFjfDVL/EQw7jBWVlMVsv4K2cgl5uPIjiCjFGQypqKnWl6pZDN0oNOs/DE8gBdyuDjldJaA==} - - remark-lint-no-file-name-consecutive-dashes@3.0.0: - resolution: {integrity: sha512-3vSI1LOQlu8NSCpWLsKELa8dS9HU+YVZE0U43/DNkdEcnZmlJLpTHQjBTMZUHQipRgoOO+TOSyXFyN/H+2lbuQ==} - - remark-lint-no-file-name-irregular-characters@3.0.0: - resolution: {integrity: sha512-DhGreliHNU7lLTARQujsaLAn8fUPY0V+H0LSmOUuowBZPtIRWeNdQhunSp96RvsuYdqAdERXe0WuH58i3pRqrg==} - - remark-lint-no-file-name-outer-dashes@3.0.0: - resolution: {integrity: sha512-3kgamCp39mdlCtqF/+JLwwS4VpSj5wvVwRythUfrpW7993I9kF67dBsaU545aEzWSK+UJZqjb40i0m2VfnBRfQ==} - - remark-lint-no-heading-indent@5.0.0: - resolution: {integrity: sha512-JWGIWhaEzH00HywI0DHex92tJ5Mw7l11shQ6/MGhRjYsHMRWcwWcVeOuktVMe/BiQbg0hRoE4+g0z2VgUD6Cqw==} - - remark-lint-no-heading-like-paragraph@4.0.0: - resolution: {integrity: sha512-6P22xHF+2omrQUA9ujQ5yBUlZr3goaAxoa1t3wNSIydzqkbgwLS+RlpGsVvilW1Q8h4JgWpB42Zpflat6xr90g==} - - remark-lint-no-literal-urls@4.0.0: - resolution: {integrity: sha512-rl/3Ai4Ax9IH/fRpOJZuXk1HgYX6oFTauhmBOilpqbq/YT2kN3FuXaneXdRfKv1bgMdHaLKxHWxGj/mDyA2n8w==} - - remark-lint-no-multiple-toplevel-headings@4.0.0: - resolution: {integrity: sha512-JW11iYxza7asDdhQuKfr8SH1u4NBOCQ4U7Ru0HrKCPcT4y/AB1C1il5uMQzbcervgYPBq69xzyQ24+AJeL0t3A==} - - remark-lint-no-paragraph-content-indent@5.0.0: - resolution: {integrity: sha512-g4T1SrwL2HnzaLD+/Bl82vsL/YqJF+dvCTuCJ7gbDpZxlZXQt53nZJohwcUByeBM6O3o9n9DaPRFvTiE70qAZw==} - - remark-lint-no-reference-like-url@4.0.0: - resolution: {integrity: sha512-YkP8qWdrWDr9s8JLbJoC/U5Z0fU7hpa59Nin0i8zEOtD9coiYoI/YtXRKqSXuAKDmweb+JckhqtKuGJS5u77+w==} - - remark-lint-no-shell-dollars@4.0.0: - resolution: {integrity: sha512-ye2h8FzjsgqqQV0HHN2g9N4FqI3eD9Gpgu7tU5ADIJyQ3mUJdwBoFn7IlGnpmumR1fb/l6u/AhRavIZxXYqG+Q==} - - remark-lint-no-shortcut-reference-image@4.0.0: - resolution: {integrity: sha512-YEiCpW5F/8/LZyxlOuVK2L/n0NJ1AB0AJK7oP39OVyEk3Xl7w+JQi6nZ3KiH6REh+PWGqKn6M0KEPL9cT/iAOw==} - - remark-lint-no-shortcut-reference-link@4.0.0: - resolution: {integrity: sha512-6jka2Zz3I6G2MvDcKrwADYhTOxHMFMK854u1cfBEIH5/XnCCXROtoqiiDtbZw+NJqbmwsBKvGL4t2gnmEJUmgg==} - - remark-lint-no-tabs@4.0.0: - resolution: {integrity: sha512-rQR7LDdcw047ajB3D+v9uzdB8aZfZtEdlUJvQXKkcVDteWiuXGC3PcIrmM/8n3J/wlFMuwoAaW2IcdlJf8HzXQ==} - - remark-lint-no-undefined-references@5.0.0: - resolution: {integrity: sha512-O0q8bHpRHK1T85oqO+uep4BkvQnZZp3y+wahDeeLLq9dCJfF56sq6Tt5OOTt1BAOZlpobS3OPQHUiJWYP6hX1w==} - - remark-lint-no-unneeded-full-reference-image@4.0.0: - resolution: {integrity: sha512-0l9PZzidaAaJgn+mCRwudh6CLHvpz2PTIVlhK+fspxNwnRcPwpJOih+D4XMwyf/0x20g9MKtrlvSefIOnhqwNg==} - - remark-lint-no-unneeded-full-reference-link@4.0.0: - resolution: {integrity: sha512-QjqhQxCvB4TNKXVaV50YCh50DzSRdpYs7hKPn9kKvkYK2tsqjnax5vz0w78fI2Nb9EY3ISoehPJDHruwAlDbew==} - - remark-lint-no-unused-definitions@4.0.0: - resolution: {integrity: sha512-YCZ6k575NCTx7mnN+9ls0G6YgMsZHi0LYQqfLW8MNVHBtbpTBvfmk8I39bmsvuKWeBD98weZoXSDqIiIGg+Q/g==} - - remark-lint-ordered-list-marker-style@4.0.0: - resolution: {integrity: sha512-xZ7Xppy5fzACH4b9h1b4lTzVtNY2AlUkNTfl1Oe6cIKN8tk3juFxN0wL2RpktPtSZ7iRIabzFmg6l8WPhlASJA==} - - remark-lint-rule-style@4.0.0: - resolution: {integrity: sha512-Kt7IHMB5IbLgRFKaFUmB895sV3PTD0MBgN9CvXKxr1wHFF43S6tabjFIBSoQqyJRlhH0S3rK6Lvopofa009gLg==} - - remark-lint-strikethrough-marker@3.0.0: - resolution: {integrity: sha512-XPt5oO3txmoL6vvAZjQ9e42Q5JpaahubryJNzsFy0dAotuEws+Lpi93OH/T68/T0/PSzD/EpoZmSASkySAwG7Q==} - - remark-lint-strong-marker@4.0.0: - resolution: {integrity: sha512-YcvuzakYhQWdCH+1E30sUY+wyvq+PNa77NZAMAYO/cS/pZczFB+q4Ccttw4Q+No/chX8oMfe0GYtm8dDWLei/g==} - - remark-lint-table-cell-padding@5.0.0: - resolution: {integrity: sha512-LNyiHDQZBIOqcQGG1tYsZHW7g0v8OyRmRgDrD5WEsMaAYfM6EiECUokN/Q4py9h4oM/2KUSrdZbtfuZmy87/kA==} - - remark-lint-unordered-list-marker-style@4.0.0: - resolution: {integrity: sha512-XlP4Wr4KJNovyWVv0H5axfUlF23iE9Kt2SxaVq4+ieum5YcMmKE6KsL+aqt3kiJb60SH1u6a0bxKFvdM/9riOA==} - - remark-lint@10.0.0: - resolution: {integrity: sha512-E8yHHDOJ8b+qI0G49BRu24pe8t0fNNBWv8ENQJpCGNrVeTeyBIGEbaUe1yuF7OG8faA6PVpcN/pqWjzW9fcBWQ==} - - remark-mdx@3.0.1: - resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} - - remark-message-control@8.0.0: - resolution: {integrity: sha512-brpzOO+jdyE/mLqvqqvbogmhGxKygjpCUCG/PwSCU43+JZQ+RM+sSzkCWBcYvgF3KIAVNIoPsvXjBkzO7EdsYQ==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-preset-prettier@2.0.1: - resolution: {integrity: sha512-1+cZaM080zTlhQIvZDOj7SFWvW9zevfxsLjTZspLEsBYivMDwCyTodvNvaZLc9p5dUSMik/BjMFKicfhZXh7qg==} - engines: {node: '>=14.8'} - peerDependencies: - prettier: '>=1.0.0' - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - remark-validate-links@13.0.1: - resolution: {integrity: sha512-GWDZWJAQU0+Fsm1GCLNeJoVcE9L3XTVrWCgQZOYREfXqRFIYaSoIBbARZizLm/vBESq+a3GwEBnIflSCNw26tw==} - - remark@15.0.1: - resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} - repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} @@ -3789,14 +2777,6 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3809,13 +2789,6 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - s.color@0.0.15: - resolution: {integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==} - - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -3830,24 +2803,25 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass-formatter@0.7.9: - resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==} - semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} set-function-length@1.2.2: @@ -3908,17 +2882,14 @@ packages: resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -3934,18 +2905,13 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - sql-formatter@15.4.2: - resolution: {integrity: sha512-Pw4aAgfuyml/SHMlhbJhyOv+GR+Z1HNb9sgX3CVBVdN5YNM+v2VWkYJ3NNbYS7cu37GY3vP/PgnwoVynCuXRxg==} - hasBin: true + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - streamx@2.20.0: resolution: {integrity: sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==} @@ -3957,17 +2923,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string-width@6.1.0: - resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} - engines: {node: '>=16'} - - string.prototype.includes@2.0.0: - resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} - string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -3979,12 +2934,6 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3993,6 +2942,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -4014,12 +2967,15 @@ packages: peerDependencies: stylelint: '>=14' - stylelint-config-html@1.1.0: - resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} - engines: {node: ^12 || >=14} + stylelint-config-recommended-scss@14.1.0: + resolution: {integrity: sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==} + engines: {node: '>=18.12.0'} peerDependencies: - postcss-html: ^1.0.0 - stylelint: '>=14.0.0' + postcss: ^8.3.3 + stylelint: ^16.6.1 + peerDependenciesMeta: + postcss: + optional: true stylelint-config-recommended@14.0.1: resolution: {integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==} @@ -4027,6 +2983,16 @@ packages: peerDependencies: stylelint: ^16.1.0 + stylelint-config-standard-scss@13.1.0: + resolution: {integrity: sha512-Eo5w7/XvwGHWkeGLtdm2FZLOMYoZl1omP2/jgFCXyl2x5yNz7/8vv4Tj6slHvMSSUNTaGoam/GAZ0ZhukvalfA==} + engines: {node: '>=18.12.0'} + peerDependencies: + postcss: ^8.3.3 + stylelint: ^16.3.1 + peerDependenciesMeta: + postcss: + optional: true + stylelint-config-standard@36.0.1: resolution: {integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==} engines: {node: '>=18.12.0'} @@ -4038,14 +3004,17 @@ packages: peerDependencies: stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + stylelint-scss@6.5.1: + resolution: {integrity: sha512-ZLqdqihm6uDYkrsOeD6YWb+stZI8Wn92kUNDhE4M+g9g1aCnRv0JlOrttFiAJJwaNzpdQgX3YJb5vDQXVuO9Ww==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.2 + stylelint@16.9.0: resolution: {integrity: sha512-31Nm3WjxGOBGpQqF43o3wO9L5AC36TPIe6030Lnm13H3vDMTcS21DrLh69bMX+DBilKqMMVLian4iG6ybBoNRQ==} engines: {node: '>=18.12.0'} hasBin: true - suf-log@2.5.3: - resolution: {integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==} - supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4054,10 +3023,6 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - supports-hyperlinks@3.1.0: resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} engines: {node: '>=14.18'} @@ -4121,18 +3086,15 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} @@ -4161,12 +3123,8 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - - type-fest@4.26.0: - resolution: {integrity: sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==} + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} type-is@1.6.18: @@ -4192,8 +3150,14 @@ packages: typed-query-selector@2.12.0: resolution: {integrity: sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==} - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + typescript-eslint@8.5.0: + resolution: {integrity: sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true typescript@5.5.4: resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} @@ -4223,45 +3187,6 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unified-args@11.0.1: - resolution: {integrity: sha512-WEQghE91+0s3xPVs0YW6a5zUduNLjmANswX7YbBfksHNDGMjHxaWCql4SR7c9q0yov/XiIEdk6r/LqfPjaYGcw==} - - unified-engine@11.2.1: - resolution: {integrity: sha512-xBAdZ8UY2X4R9Hm6X6kMne4Nz0PlpOc1oE6DPeqJnewr5Imkb8uT5Eyvy1h7xNekPL3PSWh3ZJyNrMW6jnNQBg==} - - unified-lint-rule@3.0.0: - resolution: {integrity: sha512-Sz96ILLsTy3djsG3H44zFb2b77MFf9CQVYnV3PWkxgRX8/n31fFrr+JnzUaJ6cbOHTtZnL1A71+YodsTjzwAew==} - - unified-message-control@5.0.0: - resolution: {integrity: sha512-B2cSAkpuMVVmPP90KCfKdBhm1e9KYJ+zK3x5BCa0N65zpq1Ybkc9C77+M5qwR8FWO7RF3LM5QRRPZtgjW6DUCw==} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unist-util-inspect@8.1.0: - resolution: {integrity: sha512-mOlg8Mp33pR0eeFpo5d2902ojqFFOKMMG2hF8bmH7ZlhnmjFgh0NI3/ZDwdaBJNbvrS7LZFVrBVtIE9KZ9s7vQ==} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-stringify-position@2.0.3: - resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -4289,60 +3214,22 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile-reporter@8.1.1: - resolution: {integrity: sha512-qxRZcnFSQt6pWKn3PAk81yLK2rO2i7CDXpy8v8ZquiEOMLSnPw6BMSi9Y1sUCwGGl7a9b3CJT1CKpnRF7pp66g==} - - vfile-sort@4.0.0: - resolution: {integrity: sha512-lffPI1JrbHDTToJwcq0rl6rBmkjQmMuXkAxsZPRS9DXbaJQvc642eCg6EGxcX2i1L+esbuhq+2l9tBll5v8AeQ==} - - vfile-statistics@3.0.0: - resolution: {integrity: sha512-/qlwqwWBWFOmpXujL/20P+Iuydil0rZZNglR+VNm6J0gpLHwuVM5s7g2TfVoswbXjZ4HuIhLMySEyIw5i7/D8w==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vscode-languageserver-textdocument@1.0.12: resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - walk-up-path@3.0.1: - resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==} - which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -4369,10 +3256,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -4434,9 +3317,6 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - snapshots: '@ampproject/remapping@2.3.0': @@ -4444,8 +3324,6 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@astrojs/compiler@2.10.3': {} - '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 @@ -4652,6 +3530,14 @@ snapshots: dependencies: import-meta-resolve: 4.1.0 + '@cspell/eslint-plugin@8.14.2(eslint@8.57.0)': + dependencies: + '@cspell/cspell-types': 8.14.2 + '@cspell/url': 8.14.2 + cspell-lib: 8.14.2 + eslint: 8.57.0 + synckit: 0.9.1 + '@cspell/filetypes@8.14.2': {} '@cspell/strong-weak-map@8.14.2': {} @@ -4754,6 +3640,8 @@ snapshots: '@eslint-community/regexpp@4.11.0': {} + '@eslint/compat@1.1.1': {} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -4770,13 +3658,9 @@ snapshots: '@eslint/js@8.57.0': {} - '@fontsource/inter@5.0.20': {} + '@eslint/js@9.10.0': {} - '@html-eslint/eslint-plugin@0.26.0': {} - - '@html-eslint/parser@0.26.0': - dependencies: - es-html-parser: 0.0.9 + '@fontsource/inter@5.0.21': {} '@humanwhocodes/config-array@0.11.14': dependencies: @@ -4790,15 +3674,6 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4823,10 +3698,10 @@ snapshots: string-argv: 0.3.2 type-detect: 4.1.0 - '@kitschpatrol/tldraw-cli@4.6.12(typescript@5.5.4)': + '@kitschpatrol/tldraw-cli@4.6.14(typescript@5.5.4)': dependencies: - '@fontsource/inter': 5.0.20 - express: 4.19.2 + '@fontsource/inter': 5.0.21 + express: 4.21.0 puppeteer: 23.3.0(typescript@5.5.4) uint8array-extras: 1.4.0 yargs: 17.7.2 @@ -4848,65 +3723,12 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@npmcli/config@8.3.4': - dependencies: - '@npmcli/map-workspaces': 3.0.6 - '@npmcli/package-json': 5.2.0 - ci-info: 4.0.0 - ini: 4.1.3 - nopt: 7.2.1 - proc-log: 4.2.0 - semver: 7.6.3 - walk-up-path: 3.0.1 - transitivePeerDependencies: - - bluebird - - '@npmcli/git@5.0.8': - dependencies: - '@npmcli/promise-spawn': 7.0.2 - ini: 4.1.3 - lru-cache: 10.4.3 - npm-pick-manifest: 9.1.0 - proc-log: 4.2.0 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.6.3 - which: 4.0.0 - transitivePeerDependencies: - - bluebird - - '@npmcli/map-workspaces@3.0.6': - dependencies: - '@npmcli/name-from-folder': 2.0.0 - glob: 10.4.5 - minimatch: 9.0.5 - read-package-json-fast: 3.0.2 - - '@npmcli/name-from-folder@2.0.0': {} - - '@npmcli/package-json@5.2.0': - dependencies: - '@npmcli/git': 5.0.8 - glob: 10.4.5 - hosted-git-info: 7.0.2 - json-parse-even-better-errors: 3.0.2 - normalize-package-data: 6.0.2 - proc-log: 4.2.0 - semver: 7.6.3 - transitivePeerDependencies: - - bluebird - - '@npmcli/promise-spawn@7.0.2': - dependencies: - which: 4.0.0 + '@nolyfill/is-core-module@1.0.39': {} '@pinojs/json-colorizer@4.0.0': dependencies: colorette: 2.0.20 - '@pkgjs/parseargs@0.11.0': - optional: true - '@pkgr/core@0.1.1': {} '@prettier/plugin-php@0.22.2(prettier@3.3.3)': @@ -4915,10 +3737,6 @@ snapshots: php-parser: 3.1.5 prettier: 3.3.3 - '@prettier/plugin-ruby@4.0.4(prettier@3.3.3)': - dependencies: - prettier: 3.3.3 - '@prettier/plugin-xml@3.4.1(prettier@3.3.3)': dependencies: '@xml-tools/parser': 1.0.11 @@ -4937,36 +3755,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@rtsao/scc@1.1.0': {} + '@sec-ant/readable-stream@0.4.1': {} '@sindresorhus/merge-streams@2.3.0': {} '@sindresorhus/merge-streams@4.0.0': {} - '@taplo/core@0.1.1': {} - - '@taplo/lib@0.4.0-alpha.2': - dependencies: - '@taplo/core': 0.1.1 - '@tootallnate/quickjs-emscripten@0.23.0': {} - '@types/acorn@4.0.6': - dependencies: - '@types/estree': 1.0.5 - - '@types/concat-stream@2.0.3': - dependencies: - '@types/node': 20.16.5 - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.5 - '@types/estree@1.0.5': {} '@types/fs-extra@11.0.4': @@ -4974,28 +3772,16 @@ snapshots: '@types/jsonfile': 6.1.4 '@types/node': 20.16.5 - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/hosted-git-info@3.0.5': {} - - '@types/is-empty@1.2.3': {} + '@types/json5@0.0.29': {} '@types/jsonfile@6.1.4': dependencies: '@types/node': 20.16.5 - '@types/mdast@3.0.15': - dependencies: - '@types/unist': 2.0.11 - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 - '@types/ms@0.7.34': {} - '@types/node@18.19.0': dependencies: undici-types: 5.26.5 @@ -5006,12 +3792,6 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@types/supports-color@8.1.3': {} - - '@types/text-table@0.2.5': {} - - '@types/unist@2.0.11': {} - '@types/unist@3.0.3': {} '@types/which@3.0.4': {} @@ -5027,14 +3807,14 @@ snapshots: '@types/node': 20.16.5 optional: true - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/parser': 8.5.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/type-utils': 8.5.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.5.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.5.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -5045,12 +3825,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.7 eslint: 8.57.0 optionalDependencies: @@ -5058,51 +3838,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - - '@typescript-eslint/scope-manager@8.4.0': + '@typescript-eslint/scope-manager@8.5.0': dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.5.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.5.4) + '@typescript-eslint/utils': 8.5.0(eslint@8.57.0)(typescript@5.5.4) debug: 4.3.7 - eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: + - eslint - supports-color - '@typescript-eslint/types@7.18.0': {} - - '@typescript-eslint/types@8.4.0': {} - - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.5.0': {} - '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.5.0(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/visitor-keys': 8.4.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/visitor-keys': 8.5.0 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -5114,36 +3872,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.4.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/utils@8.5.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 8.4.0 - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.5.0 + '@typescript-eslint/types': 8.5.0 + '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.5.4) eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.4.0': + '@typescript-eslint/visitor-keys@8.5.0': dependencies: - '@typescript-eslint/types': 8.4.0 + '@typescript-eslint/types': 8.5.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} @@ -5152,8 +3894,6 @@ snapshots: dependencies: chevrotain: 7.1.1 - abbrev@2.0.0: {} - accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -5187,7 +3927,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} + ansi-regex@6.1.0: {} ansi-styles@3.2.1: dependencies: @@ -5197,8 +3937,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} - anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -5206,10 +3944,6 @@ snapshots: argparse@2.0.1: {} - aria-query@5.1.3: - dependencies: - deep-equal: 2.2.3 - aria-query@5.3.0: dependencies: dequal: 2.0.3 @@ -5234,6 +3968,15 @@ snapshots: array-union@2.1.0: {} + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 @@ -5259,50 +4002,20 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - ast-types-flow@0.0.8: {} - ast-types@0.13.4: dependencies: tslib: 2.7.0 astral-regex@2.0.0: {} - astro-eslint-parser@1.0.2(typescript@5.5.4): - dependencies: - '@astrojs/compiler': 2.10.3 - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - astrojs-compiler-sync: 1.0.0(@astrojs/compiler@2.10.3) - debug: 4.3.7 - entities: 4.5.0 - eslint-scope: 8.0.2 - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - typescript - - astrojs-compiler-sync@1.0.0(@astrojs/compiler@2.10.3): - dependencies: - '@astrojs/compiler': 2.10.3 - synckit: 0.9.1 - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - axe-core@4.10.0: {} - axobject-query@4.1.0: {} b4a@1.6.6: {} - bail@2.0.2: {} - balanced-match@1.0.2: {} balanced-match@2.0.0: {} @@ -5310,22 +4023,22 @@ snapshots: bare-events@2.4.2: optional: true - bare-fs@2.3.3: + bare-fs@2.3.4: dependencies: bare-events: 2.4.2 bare-path: 2.1.3 - bare-stream: 2.2.1 + bare-stream: 2.3.0 optional: true - bare-os@2.4.2: + bare-os@2.4.3: optional: true bare-path@2.1.3: dependencies: - bare-os: 2.4.2 + bare-os: 2.4.3 optional: true - bare-stream@2.2.1: + bare-stream@2.3.0: dependencies: b4a: 1.6.6 streamx: 2.20.0 @@ -5335,11 +4048,9 @@ snapshots: basic-ftp@5.0.5: {} - big-integer@1.6.52: {} - binary-extensions@2.3.0: {} - body-parser@1.20.2: + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -5349,7 +4060,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -5371,15 +4082,13 @@ snapshots: browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001658 - electron-to-chromium: 1.5.18 + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.20 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) buffer-crc32@0.2.13: {} - buffer-from@1.1.2: {} - buffer@5.7.1: dependencies: base64-js: 1.5.1 @@ -5434,9 +4143,7 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001658: {} - - ccount@2.0.1: {} + caniuse-lite@1.0.30001660: {} chalk-template@1.1.0: dependencies: @@ -5455,20 +4162,6 @@ snapshots: chalk@5.3.0: {} - character-entities-html4@2.1.0: {} - - character-entities-legacy@1.1.4: {} - - character-entities-legacy@3.0.0: {} - - character-entities@1.2.4: {} - - character-entities@2.0.2: {} - - character-reference-invalid@1.1.4: {} - - character-reference-invalid@2.0.1: {} - chevrotain@7.1.1: dependencies: regexp-to-ast: 0.5.0 @@ -5523,8 +4216,6 @@ snapshots: estree-walker: 3.0.3 periscopic: 3.1.0 - collapse-white-space@2.1.0: {} - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -5541,12 +4232,8 @@ snapshots: colorette@2.0.20: {} - comma-separated-tokens@2.0.3: {} - commander@12.1.0: {} - commander@2.20.3: {} - comment-json@4.2.5: dependencies: array-timsort: 1.0.3 @@ -5557,17 +4244,8 @@ snapshots: concat-map@0.0.1: {} - concat-stream@2.0.0: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - confbox@0.1.7: {} - confusing-browser-globals@1.0.11: {} - consola@3.2.3: {} content-disposition@0.5.4: @@ -5703,12 +4381,10 @@ snapshots: css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 cssesc@3.0.0: {} - damerau-levenshtein@1.0.8: {} - data-uri-to-buffer@6.0.2: {} data-view-buffer@1.0.1: @@ -5733,34 +4409,13 @@ snapshots: dependencies: ms: 2.0.0 - debug@4.3.7: + debug@3.2.7: dependencies: ms: 2.1.3 - decode-named-character-reference@1.0.2: - dependencies: - character-entities: 2.0.2 - - deep-equal@2.2.3: + debug@4.3.7: dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 + ms: 2.1.3 deep-is@0.1.4: {} @@ -5794,58 +4449,32 @@ snapshots: destroy@1.2.0: {} - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - devtools-protocol@0.0.1330662: {} - diff@5.2.0: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 - discontinuous-range@1.0.0: {} - - doctrine@3.0.0: + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.1.0: + doctrine@3.0.0: dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 + esutils: 2.0.3 dotenv@16.4.5: {} - eastasianwidth@0.2.0: {} - ee-first@1.1.1: {} - electron-to-chromium@1.5.18: {} - - emoji-regex@10.4.0: {} + electron-to-chromium@1.5.20: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + end-of-stream@1.4.4: dependencies: once: 1.4.0 @@ -5855,14 +4484,10 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 - entities@4.5.0: {} - env-paths@2.2.1: {} env-paths@3.0.0: {} - err-code@2.0.3: {} - error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -5922,38 +4547,7 @@ snapshots: es-errors@1.3.0: {} - es-get-iterator@1.1.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - - es-html-parser@0.0.9: {} - - es-iterator-helpers@1.0.19: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - - es-object-atoms@1.0.0: + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 @@ -6008,8 +4602,6 @@ snapshots: escape-string-regexp@4.0.0: {} - escape-string-regexp@5.0.0: {} - escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -6027,133 +4619,102 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-config-xo-typescript@5.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)): dependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 - typescript: 5.5.4 + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) - eslint-config-xo@0.45.0(eslint@8.57.0): + eslint-import-resolver-node@0.3.9: dependencies: - confusing-browser-globals: 1.0.11 - eslint: 8.57.0 + debug: 3.2.7 + is-core-module: 2.15.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color - eslint-mdx@3.1.5(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0): dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.7 + enhanced-resolve: 5.17.1 eslint: 8.57.0 - espree: 9.6.1 - estree-util-visit: 2.0.0 - remark-mdx: 3.0.1 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - synckit: 0.9.1 - tslib: 2.7.0 - unified: 11.0.5 - unified-engine: 11.2.1 - unist-util-visit: 5.0.0 - uvu: 0.5.6 - vfile: 6.0.3 + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0) + fast-glob: 3.3.2 + get-tsconfig: 4.8.0 + is-bun-module: 1.2.1 + is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0) + eslint-plugin-import-x: 4.2.1(eslint@8.57.0)(typescript@5.5.4) transitivePeerDependencies: - - bluebird + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack - supports-color - eslint-plugin-astro@1.2.3(eslint@8.57.0)(typescript@5.5.4): + eslint-module-utils@2.11.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@jridgewell/sourcemap-codec': 1.5.0 - '@typescript-eslint/types': 7.18.0 - astro-eslint-parser: 1.0.2(typescript@5.5.4) + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.5.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) - globals: 15.9.0 - postcss: 8.4.45 - postcss-selector-parser: 6.1.2 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0) transitivePeerDependencies: - supports-color - - typescript - eslint-plugin-es-x@7.8.0(eslint@8.57.0): + eslint-plugin-import-x@4.2.1(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/utils': 8.5.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.7 + doctrine: 3.0.0 eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) - - eslint-plugin-html@8.1.1: - dependencies: - htmlparser2: 9.1.0 + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.8.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + stable-hash: 0.0.4 + tslib: 2.7.0 + transitivePeerDependencies: + - supports-color + - typescript - eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0): dependencies: - aria-query: 5.1.3 + '@rtsao/scc': 1.1.0 array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.10.0 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.19 + debug: 3.2.7 + doctrine: 2.1.0 eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.11.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import-x@4.2.1(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0)(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 + is-core-module: 2.15.1 + is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 - safe-regex-test: 1.0.3 - string.prototype.includes: 2.0.0 - - eslint-plugin-markdown@3.0.1(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - mdast-util-from-markdown: 0.8.5 - transitivePeerDependencies: - - supports-color - - eslint-plugin-mdx@3.1.5(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - eslint-mdx: 3.1.5(eslint@8.57.0) - eslint-plugin-markdown: 3.0.1(eslint@8.57.0) - remark-mdx: 3.0.1 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - tslib: 2.7.0 - unified: 11.0.5 - vfile: 6.0.3 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.5.0(eslint@8.57.0)(typescript@5.5.4) transitivePeerDependencies: - - bluebird + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack - supports-color - eslint-plugin-n@17.10.2(eslint@8.57.0): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - enhanced-resolve: 5.17.1 - eslint: 8.57.0 - eslint-plugin-es-x: 7.8.0(eslint@8.57.0) - get-tsconfig: 4.8.0 - globals: 15.9.0 - ignore: 5.3.2 - minimatch: 9.0.5 - semver: 7.6.3 - - eslint-plugin-perfectionist@3.4.0(astro-eslint-parser@1.0.2(typescript@5.5.4))(eslint@8.57.0)(svelte-eslint-parser@0.41.0(svelte@4.2.19))(svelte@4.2.19)(typescript@5.5.4): + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): dependencies: - '@typescript-eslint/types': 8.4.0 - '@typescript-eslint/utils': 8.4.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 - minimatch: 9.0.5 - natural-compare-lite: 1.4.0 + prettier: 3.3.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.1 optionalDependencies: - astro-eslint-parser: 1.0.2(typescript@5.5.4) - svelte: 4.2.19 - svelte-eslint-parser: 0.41.0(svelte@4.2.19) - transitivePeerDependencies: - - supports-color - - typescript + eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-plugin-svelte@2.43.0(eslint@8.57.0)(svelte@4.2.19): dependencies: @@ -6199,15 +4760,8 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@8.0.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.0.0: {} - eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) @@ -6251,12 +4805,6 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.1.0: - dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 - espree@9.6.1: dependencies: acorn: 8.12.1 @@ -6275,13 +4823,6 @@ snapshots: estraverse@5.3.0: {} - estree-util-is-identifier-name@3.0.0: {} - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - estree-walker@3.0.3: dependencies: '@types/estree': 1.0.5 @@ -6317,34 +4858,34 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.1 - express@4.19.2: + express@4.21.0: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -6353,8 +4894,6 @@ snapshots: transitivePeerDependencies: - supports-color - extend@3.0.2: {} - extract-zip@2.0.1: dependencies: debug: 4.3.7 @@ -6367,6 +4906,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-diff@1.3.0: {} + fast-equals@5.0.1: {} fast-fifo@1.3.2: {} @@ -6391,17 +4932,13 @@ snapshots: dependencies: reusify: 1.0.4 - fault@2.0.1: - dependencies: - format: 0.2.2 - fd-slicer@1.1.0: dependencies: pend: 1.2.0 figures@6.1.0: dependencies: - is-unicode-supported: 2.0.0 + is-unicode-supported: 2.1.0 file-entry-cache@6.0.1: dependencies: @@ -6415,10 +4952,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.2.0: + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -6456,13 +4993,6 @@ snapshots: dependencies: is-callable: 1.2.7 - foreground-child@3.3.0: - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - - format@0.2.2: {} - forwarded@0.2.0: {} fresh@0.5.2: {} @@ -6505,13 +5035,11 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-stdin@8.0.0: {} - get-stdin@9.0.0: {} get-stream@5.2.0: dependencies: - pump: 3.0.0 + pump: 3.0.2 get-stream@8.0.1: {} @@ -6550,8 +5078,6 @@ snapshots: pathe: 1.1.2 tar: 6.2.1 - github-slugger@2.0.0: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -6560,15 +5086,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.4.5: - dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -6663,20 +5180,6 @@ snapshots: html-tags@3.3.1: {} - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - - htmlparser2@9.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -6735,8 +5238,6 @@ snapshots: ini@4.1.1: {} - ini@4.1.3: {} - internal-slot@1.0.7: dependencies: es-errors: 1.3.0 @@ -6750,25 +5251,6 @@ snapshots: ipaddr.js@1.9.1: {} - is-alphabetical@1.0.4: {} - - is-alphabetical@2.0.1: {} - - is-alphanumerical@1.0.4: - dependencies: - is-alphabetical: 1.0.4 - is-decimal: 1.0.4 - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 @@ -6776,10 +5258,6 @@ snapshots: is-arrayish@0.2.1: {} - is-async-function@2.0.0: - dependencies: - has-tostringtag: 1.0.2 - is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 @@ -6797,6 +5275,10 @@ snapshots: dependencies: builtin-modules: 3.3.0 + is-bun-module@1.2.1: + dependencies: + semver: 7.6.3 + is-callable@1.2.7: {} is-core-module@2.15.1: @@ -6811,34 +5293,14 @@ snapshots: dependencies: has-tostringtag: 1.0.2 - is-decimal@1.0.4: {} - - is-decimal@2.0.1: {} - - is-empty@1.2.0: {} - is-extglob@2.1.1: {} - is-finalizationregistry@1.0.2: - dependencies: - call-bind: 1.0.7 - is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-hexadecimal@1.0.4: {} - - is-hexadecimal@2.0.1: {} - - is-map@2.0.3: {} - is-negative-zero@2.0.3: {} is-number-object@1.0.7: @@ -6862,8 +5324,6 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 - is-set@2.0.3: {} - is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 @@ -6884,45 +5344,22 @@ snapshots: dependencies: which-typed-array: 1.1.15 - is-unicode-supported@2.0.0: {} - - is-weakmap@2.0.2: {} + is-unicode-supported@2.1.0: {} is-weakref@1.0.2: dependencies: call-bind: 1.0.7 - is-weakset@2.0.3: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - isarray@2.0.5: {} isexe@2.0.0: {} isexe@3.1.1: {} - iterator.prototype@1.1.2: - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jiti@1.21.6: {} js-tokens@4.0.0: {} - js-tokens@9.0.0: {} - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -6937,8 +5374,6 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@3.0.2: {} - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -6947,7 +5382,9 @@ snapshots: json-stringify-pretty-compact@4.0.0: {} - json5@2.2.3: {} + json5@1.0.2: + dependencies: + minimist: 1.2.8 jsonc-parser@3.3.1: {} @@ -6957,15 +5394,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsox@1.2.119: {} - - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 - keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -6974,18 +5402,8 @@ snapshots: kleur@3.0.3: {} - kleur@4.1.5: {} - known-css-properties@0.34.0: {} - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - - levenshtein-edit-distance@1.0.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -6995,17 +5413,8 @@ snapshots: lines-and-columns@1.2.4: {} - lines-and-columns@2.0.4: {} - linguist-languages@7.27.0: {} - load-plugin@6.0.3: - dependencies: - '@npmcli/config': 8.3.4 - import-meta-resolve: 4.1.0 - transitivePeerDependencies: - - bluebird - locate-character@3.0.0: {} locate-path@5.0.0: @@ -7020,8 +5429,6 @@ snapshots: lodash.truncate@4.4.2: {} - longest-streak@3.1.0: {} - lru-cache@10.4.3: {} lru-cache@7.18.3: {} @@ -7030,546 +5437,47 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 - markdown-extensions@2.0.0: {} - - markdown-table@3.0.3: {} - mathml-tag-names@2.1.3: {} - mdast-comment-marker@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-mdx-expression: 2.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-directive@3.0.0: + mdat@0.7.4(typescript@5.5.4): dependencies: + '@clack/prompts': 0.7.0 + '@kitschpatrol/tldraw-cli': 4.6.14(typescript@5.5.4) '@types/mdast': 4.0.4 + '@types/node': 18.19.0 '@types/unist': 3.0.3 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.4 - unist-util-visit-parents: 6.0.1 + '@types/which': 3.0.4 + '@types/yargs': 17.0.33 + cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.0)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4) + execa: 9.3.1 + globby: 14.0.2 + read-pkg: 9.0.1 + which: 4.0.0 transitivePeerDependencies: + - bufferutil - supports-color + - typescript + - utf-8-validate - mdast-util-find-and-replace@3.0.1: - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 + mdn-data@2.0.30: {} - mdast-util-from-markdown@0.8.5: - dependencies: - '@types/mdast': 3.0.15 - mdast-util-to-string: 2.0.0 - micromark: 2.11.4 - parse-entities: 2.0.0 - unist-util-stringify-position: 2.0.3 - transitivePeerDependencies: - - supports-color + media-typer@0.3.0: {} - mdast-util-from-markdown@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-decode-string: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color + meow@13.2.0: {} - mdast-util-frontmatter@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - micromark-extension-frontmatter: 2.0.0 - transitivePeerDependencies: - - supports-color + merge-descriptors@1.0.3: {} - mdast-util-gfm-autolink-literal@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.1.0 + merge-stream@2.0.0: {} - mdast-util-gfm-footnote@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - transitivePeerDependencies: - - supports-color + merge2@1.4.1: {} - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color + methods@1.1.2: {} - mdast-util-gfm-table@2.0.0: + micromatch@4.0.8: dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.3 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.1 - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.0.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.1.3: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.1 - mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.1.3 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.1 - mdast-util-to-markdown: 2.1.0 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 - - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - - mdast-util-to-markdown@2.1.0: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-decode-string: 2.0.0 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@2.0.0: {} - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - mdat@0.7.3(typescript@5.5.4): - dependencies: - '@clack/prompts': 0.7.0 - '@kitschpatrol/tldraw-cli': 4.6.12(typescript@5.5.4) - '@types/mdast': 4.0.4 - '@types/node': 18.19.0 - '@types/unist': 3.0.3 - '@types/which': 3.0.4 - '@types/yargs': 17.0.33 - cosmiconfig: 9.0.0(typescript@5.5.4) - cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.0)(cosmiconfig@9.0.0(typescript@5.5.4))(typescript@5.5.4) - execa: 9.3.1 - globby: 14.0.2 - read-pkg: 9.0.1 - which: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - typescript - - utf-8-validate - - mdn-data@2.0.30: {} - - media-typer@0.3.0: {} - - meow@13.2.0: {} - - merge-descriptors@1.0.1: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - methods@1.1.2: {} - - micromark-core-commonmark@2.0.1: - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.0 - micromark-factory-label: 2.0.0 - micromark-factory-space: 2.0.0 - micromark-factory-title: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-html-tag-name: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-directive@3.0.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - parse-entities: 4.0.1 - - micromark-extension-frontmatter@2.0.0: - dependencies: - fault: 2.0.1 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-classify-character: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-table@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.0 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-mdx-expression@3.0.0: - dependencies: - '@types/estree': 1.0.5 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-extension-mdx-jsx@3.0.1: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.2 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.5 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - micromark-extension-mdx-expression: 3.0.0 - micromark-extension-mdx-jsx: 3.0.1 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-destination@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-label@2.0.0: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-mdx-expression@2.0.2: - dependencies: - '@types/estree': 1.0.5 - devlop: 1.1.0 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-events-to-acorn: 2.0.2 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 - - micromark-factory-space@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-types: 2.0.0 - - micromark-factory-title@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-factory-whitespace@2.0.0: - dependencies: - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-character@2.1.0: - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-chunked@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-classify-character@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-combine-extensions@2.0.0: - dependencies: - micromark-util-chunked: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-decode-numeric-character-reference@2.0.1: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-decode-string@2.0.0: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-symbol: 2.0.0 - - micromark-util-encode@2.0.0: {} - - micromark-util-events-to-acorn@2.0.2: - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - vfile-message: 4.0.2 - - micromark-util-html-tag-name@2.0.0: {} - - micromark-util-normalize-identifier@2.0.0: - dependencies: - micromark-util-symbol: 2.0.0 - - micromark-util-resolve-all@2.0.0: - dependencies: - micromark-util-types: 2.0.0 - - micromark-util-sanitize-uri@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - - micromark-util-subtokenize@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-symbol@2.0.0: {} - - micromark-util-types@2.0.0: {} - - micromark@2.11.4: - dependencies: - debug: 4.3.7 - parse-entities: 2.0.0 - transitivePeerDependencies: - - supports-color - - micromark@4.0.0: - dependencies: - '@types/debug': 4.1.12 - debug: 4.3.7 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.1 - micromark-factory-space: 2.0.0 - micromark-util-character: 2.1.0 - micromark-util-chunked: 2.0.0 - micromark-util-combine-extensions: 2.0.0 - micromark-util-decode-numeric-character-reference: 2.0.1 - micromark-util-encode: 2.0.0 - micromark-util-normalize-identifier: 2.0.0 - micromark-util-resolve-all: 2.0.0 - micromark-util-sanitize-uri: 2.0.0 - micromark-util-subtokenize: 2.0.1 - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 + braces: 3.0.3 + picomatch: 2.3.1 mime-db@1.52.0: {} @@ -7599,8 +5507,6 @@ snapshots: minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: dependencies: minipass: 3.3.6 @@ -7617,10 +5523,6 @@ snapshots: pkg-types: 1.2.0 ufo: 1.5.4 - moo@0.5.2: {} - - mri@1.2.0: {} - ms@2.0.0: {} ms@2.1.3: {} @@ -7629,17 +5531,8 @@ snapshots: nanoid@3.3.7: {} - natural-compare-lite@1.4.0: {} - natural-compare@1.4.0: {} - nearley@2.20.1: - dependencies: - commander: 2.20.3 - moo: 0.5.2 - railroad-diagrams: 1.0.0 - randexp: 0.4.6 - negotiator@0.6.3: {} netmask@2.0.2: {} @@ -7648,14 +5541,6 @@ snapshots: node-releases@2.0.18: {} - node-sql-parser@4.18.0: - dependencies: - big-integer: 1.6.52 - - nopt@7.2.1: - dependencies: - abbrev: 2.0.0 - normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -7671,26 +5556,6 @@ snapshots: normalize-path@3.0.0: {} - npm-install-checks@6.3.0: - dependencies: - semver: 7.6.3 - - npm-normalize-package-bin@3.0.1: {} - - npm-package-arg@11.0.3: - dependencies: - hosted-git-info: 7.0.2 - proc-log: 4.2.0 - semver: 7.6.3 - validate-npm-package-name: 5.0.1 - - npm-pick-manifest@9.1.0: - dependencies: - npm-install-checks: 6.3.0 - npm-normalize-package-bin: 3.0.1 - npm-package-arg: 11.0.3 - semver: 7.6.3 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -7706,11 +5571,6 @@ snapshots: object-inspect@1.13.2: {} - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - object-keys@1.1.1: {} object.assign@4.1.5: @@ -7727,6 +5587,12 @@ snapshots: es-abstract: 1.23.3 es-object-atoms: 1.0.0 + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + object.values@1.2.0: dependencies: call-bind: 1.0.7 @@ -7792,8 +5658,6 @@ snapshots: degenerator: 5.0.1 netmask: 2.0.2 - package-json-from-dist@1.0.0: {} - package-up@5.0.0: dependencies: find-up-simple: 1.0.0 @@ -7806,26 +5670,6 @@ snapshots: dependencies: callsites: 3.1.0 - parse-entities@2.0.0: - dependencies: - character-entities: 1.2.4 - character-entities-legacy: 1.1.4 - character-reference-invalid: 1.1.4 - is-alphanumerical: 1.0.4 - is-decimal: 1.0.4 - is-hexadecimal: 1.0.4 - - parse-entities@4.0.1: - dependencies: - '@types/unist': 2.0.11 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.7 @@ -7833,19 +5677,11 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-json@7.1.1: - dependencies: - '@babel/code-frame': 7.24.7 - error-ex: 1.3.2 - json-parse-even-better-errors: 3.0.2 - lines-and-columns: 2.0.4 - type-fest: 3.13.1 - parse-json@8.1.0: dependencies: '@babel/code-frame': 7.24.7 index-to-position: 0.1.2 - type-fest: 4.26.0 + type-fest: 4.26.1 parse-ms@4.0.0: {} @@ -7861,12 +5697,7 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.10: {} path-type@4.0.0: {} @@ -7900,13 +5731,6 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-html@1.7.0: - dependencies: - htmlparser2: 8.0.2 - js-tokens: 9.0.0 - postcss: 8.4.45 - postcss-safe-parser: 6.0.0(postcss@8.4.45) - postcss-load-config@3.1.4(postcss@8.4.45): dependencies: lilconfig: 2.1.0 @@ -7914,6 +5738,8 @@ snapshots: optionalDependencies: postcss: 8.4.45 + postcss-media-query-parser@0.2.3: {} + postcss-resolve-nested-selector@0.1.6: {} postcss-safe-parser@6.0.0(postcss@8.4.45): @@ -7943,15 +5769,13 @@ snapshots: dependencies: nanoid: 3.3.7 picocolors: 1.1.0 - source-map-js: 1.2.0 + source-map-js: 1.2.1 prelude-ls@1.2.1: {} - prettier-plugin-astro@0.14.1: + prettier-linter-helpers@1.0.0: dependencies: - '@astrojs/compiler': 2.10.3 - prettier: 3.3.3 - sass-formatter: 0.7.9 + fast-diff: 1.3.0 prettier-plugin-pkg@0.18.1(prettier@3.3.3): dependencies: @@ -7963,57 +5787,30 @@ snapshots: prettier: 3.3.3 sh-syntax: 0.4.2 - prettier-plugin-sql@0.18.1(prettier@3.3.3): - dependencies: - jsox: 1.2.119 - node-sql-parser: 4.18.0 - prettier: 3.3.3 - sql-formatter: 15.4.2 - tslib: 2.7.0 - prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19): dependencies: prettier: 3.3.3 svelte: 4.2.19 - prettier-plugin-tailwindcss@0.6.6(prettier-plugin-astro@0.14.1)(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19))(prettier@3.3.3): + prettier-plugin-tailwindcss@0.6.6(prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@4.2.19))(prettier@3.3.3): dependencies: prettier: 3.3.3 optionalDependencies: - prettier-plugin-astro: 0.14.1 prettier-plugin-svelte: 3.2.6(prettier@3.3.3)(svelte@4.2.19) - prettier-plugin-toml@2.0.1(prettier@3.3.3): - dependencies: - '@taplo/lib': 0.4.0-alpha.2 - prettier: 3.3.3 - prettier@3.3.3: {} pretty-ms@9.1.0: dependencies: parse-ms: 4.0.0 - proc-log@4.2.0: {} - progress@2.0.3: {} - promise-inflight@1.0.1: {} - - promise-retry@2.0.1: - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - propose@0.0.5: - dependencies: - levenshtein-edit-distance: 1.0.0 - proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -8030,590 +5827,105 @@ snapshots: proxy-from-env: 1.1.0 socks-proxy-agent: 8.0.4 transitivePeerDependencies: - - supports-color - - proxy-from-env@1.1.0: {} - - pump@3.0.0: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - punycode@2.3.1: {} - - puppeteer-core@23.3.0: - dependencies: - '@puppeteer/browsers': 2.4.0 - chromium-bidi: 0.6.5(devtools-protocol@0.0.1330662) - debug: 4.3.7 - devtools-protocol: 0.0.1330662 - typed-query-selector: 2.12.0 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - puppeteer@23.3.0(typescript@5.5.4): - dependencies: - '@puppeteer/browsers': 2.4.0 - chromium-bidi: 0.6.5(devtools-protocol@0.0.1330662) - cosmiconfig: 9.0.0(typescript@5.5.4) - devtools-protocol: 0.0.1330662 - puppeteer-core: 23.3.0 - typed-query-selector: 2.12.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - typescript - - utf-8-validate - - qs@6.11.0: - dependencies: - side-channel: 1.0.6 - - queue-microtask@1.2.3: {} - - queue-tick@1.0.1: {} - - quotation@2.0.3: {} - - railroad-diagrams@1.0.0: {} - - randexp@0.4.6: - dependencies: - discontinuous-range: 1.0.0 - ret: 0.1.15 - - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - rc9@2.1.2: - dependencies: - defu: 6.1.4 - destr: 2.0.3 - - read-package-json-fast@3.0.2: - dependencies: - json-parse-even-better-errors: 3.0.2 - npm-normalize-package-bin: 3.0.1 - - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - - read-pkg@9.0.1: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.2 - parse-json: 8.1.0 - type-fest: 4.26.0 - unicorn-magic: 0.1.0 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - reflect.getprototypeof@1.0.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.4 - - regexp-to-ast@0.5.0: {} - - regexp-tree@0.1.27: {} - - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - regjsparser@0.10.0: - dependencies: - jsesc: 0.5.0 - - remark-cli@12.0.1: - dependencies: - import-meta-resolve: 4.1.0 - markdown-extensions: 2.0.0 - remark: 15.0.1 - unified-args: 11.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - - remark-directive@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-directive: 3.0.0 - micromark-extension-directive: 3.0.1 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-frontmatter@5.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-frontmatter: 2.0.1 - micromark-extension-frontmatter: 2.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-gfm@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.0.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-lint-checkbox-character-style@5.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - - remark-lint-checkbox-content-indent@5.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - pluralize: 8.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - - remark-lint-code-block-style@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - - remark-lint-emphasis-marker@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - - remark-lint-fenced-code-flag@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - quotation: 2.0.3 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - - remark-lint-fenced-code-marker@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - - remark-lint-final-definition@4.0.1: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-mdx: 3.0.0 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - remark-lint-first-heading-level@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-mdx: 3.0.0 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - transitivePeerDependencies: - - supports-color - - remark-lint-heading-increment@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-mdx: 3.0.0 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - remark-lint-linebreak-style@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - unified-lint-rule: 3.0.0 - vfile-location: 5.0.3 - vfile-message: 4.0.2 - - remark-lint-maximum-heading-length@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-mdx: 3.0.0 - mdast-util-to-string: 4.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - transitivePeerDependencies: - - supports-color - - remark-lint-no-duplicate-defined-urls@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - - remark-lint-no-duplicate-definitions@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - - remark-lint-no-duplicate-headings-in-section@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-mdx: 3.0.0 - mdast-util-to-string: 4.0.0 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - remark-lint-no-duplicate-headings@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-mdx: 3.0.0 - mdast-util-to-string: 4.0.0 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - remark-lint-no-empty-url@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - - remark-lint-no-file-name-articles@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - - remark-lint-no-file-name-consecutive-dashes@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - - remark-lint-no-file-name-irregular-characters@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - - remark-lint-no-file-name-outer-dashes@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - - remark-lint-no-heading-indent@5.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - pluralize: 8.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - - remark-lint-no-heading-like-paragraph@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - pluralize: 8.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - - remark-lint-no-literal-urls@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-string: 4.0.0 - micromark-util-character: 2.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - - remark-lint-no-multiple-toplevel-headings@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-mdx: 3.0.0 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - transitivePeerDependencies: - - supports-color - - remark-lint-no-paragraph-content-indent@5.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-phrasing: 4.1.0 - pluralize: 8.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-location: 5.0.3 - - remark-lint-no-reference-like-url@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 - - remark-lint-no-shell-dollars@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - collapse-white-space: 2.1.0 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - - remark-lint-no-shortcut-reference-image@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 - - remark-lint-no-shortcut-reference-link@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - unist-util-visit-parents: 6.0.1 + - supports-color - remark-lint-no-tabs@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - vfile-location: 5.0.3 + proxy-from-env@1.1.0: {} - remark-lint-no-undefined-references@5.0.0: + pump@3.0.2: dependencies: - '@types/mdast': 4.0.4 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - micromark-util-normalize-identifier: 2.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-location: 5.0.3 + end-of-stream: 1.4.4 + once: 1.4.0 - remark-lint-no-unneeded-full-reference-image@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - micromark-util-normalize-identifier: 2.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 + punycode@2.3.1: {} - remark-lint-no-unneeded-full-reference-link@4.0.0: + puppeteer-core@23.3.0: dependencies: - '@types/mdast': 4.0.4 - micromark-util-normalize-identifier: 2.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 + '@puppeteer/browsers': 2.4.0 + chromium-bidi: 0.6.5(devtools-protocol@0.0.1330662) + debug: 4.3.7 + devtools-protocol: 0.0.1330662 + typed-query-selector: 2.12.0 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate - remark-lint-no-unused-definitions@4.0.0: + puppeteer@23.3.0(typescript@5.5.4): dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - unified-lint-rule: 3.0.0 - unist-util-visit: 5.0.0 + '@puppeteer/browsers': 2.4.0 + chromium-bidi: 0.6.5(devtools-protocol@0.0.1330662) + cosmiconfig: 9.0.0(typescript@5.5.4) + devtools-protocol: 0.0.1330662 + puppeteer-core: 23.3.0 + typed-query-selector: 2.12.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate - remark-lint-ordered-list-marker-style@4.0.0: + qs@6.13.0: dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - micromark-util-character: 2.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 + side-channel: 1.0.6 - remark-lint-rule-style@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 + queue-microtask@1.2.3: {} - remark-lint-strikethrough-marker@3.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 + queue-tick@1.0.1: {} - remark-lint-strong-marker@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 + range-parser@1.2.1: {} - remark-lint-table-cell-padding@5.0.0: + raw-body@2.5.2: dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - devlop: 1.1.0 - mdast-util-phrasing: 4.1.0 - pluralize: 8.0.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 - remark-lint-unordered-list-marker-style@4.0.0: + rc9@2.1.2: dependencies: - '@types/mdast': 4.0.4 - mdast-util-phrasing: 4.1.0 - unified-lint-rule: 3.0.0 - unist-util-position: 5.0.0 - unist-util-visit-parents: 6.0.1 - vfile-message: 4.0.2 + defu: 6.1.4 + destr: 2.0.3 - remark-lint@10.0.0: + read-pkg-up@7.0.1: dependencies: - '@types/mdast': 4.0.4 - remark-message-control: 8.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 - remark-mdx@3.0.1: + read-pkg@5.2.0: dependencies: - mdast-util-mdx: 3.0.0 - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 - remark-message-control@8.0.0: + read-pkg@9.0.1: dependencies: - '@types/mdast': 4.0.4 - mdast-comment-marker: 3.0.0 - unified-message-control: 5.0.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.1.0 + type-fest: 4.26.1 + unicorn-magic: 0.1.0 - remark-parse@11.0.0: + readdirp@3.6.0: dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.1 - micromark-util-types: 2.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color + picomatch: 2.3.1 - remark-preset-prettier@2.0.1(prettier@3.3.3): - dependencies: - prettier: 3.3.3 + regexp-to-ast@0.5.0: {} - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.0 - unified: 11.0.5 + regexp-tree@0.1.27: {} - remark-validate-links@13.0.1: + regexp.prototype.flags@1.5.2: dependencies: - '@types/hosted-git-info': 3.0.5 - '@types/mdast': 4.0.4 - github-slugger: 2.0.0 - hosted-git-info: 7.0.2 - mdast-util-to-hast: 13.2.0 - mdast-util-to-string: 4.0.0 - propose: 0.0.5 - trough: 2.2.0 - unified-engine: 11.2.1 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - transitivePeerDependencies: - - bluebird - - supports-color + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 - remark@15.0.1: + regjsparser@0.10.0: dependencies: - '@types/mdast': 4.0.4 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color + jsesc: 0.5.0 repeat-string@1.6.1: {} @@ -8633,10 +5945,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - ret@0.1.15: {} - - retry@0.12.0: {} - reusify@1.0.4: {} rimraf@3.0.2: @@ -8647,12 +5955,6 @@ snapshots: dependencies: queue-microtask: 1.2.3 - s.color@0.0.15: {} - - sade@1.8.1: - dependencies: - mri: 1.2.0 - safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 @@ -8670,15 +5972,13 @@ snapshots: safer-buffer@2.1.2: {} - sass-formatter@0.7.9: - dependencies: - suf-log: 2.5.3 - semver@5.7.2: {} + semver@6.3.1: {} + semver@7.6.3: {} - send@0.18.0: + send@0.19.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -8696,12 +5996,12 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.15.0: + serve-static@1.16.2: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 transitivePeerDependencies: - supports-color @@ -8769,13 +6069,11 @@ snapshots: ip-address: 9.0.5 smart-buffer: 4.2.0 - source-map-js@1.2.0: {} + source-map-js@1.2.1: {} source-map@0.6.1: optional: true - space-separated-tokens@2.0.2: {} - spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -8792,18 +6090,10 @@ snapshots: sprintf-js@1.1.3: {} - sql-formatter@15.4.2: - dependencies: - argparse: 2.0.1 - get-stdin: 8.0.0 - nearley: 2.20.1 + stable-hash@0.0.4: {} statuses@2.0.1: {} - stop-iteration-iterator@1.0.0: - dependencies: - internal-slot: 1.0.7 - streamx@2.20.0: dependencies: fast-fifo: 1.3.2 @@ -8820,23 +6110,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string-width@6.1.0: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 10.4.0 - strip-ansi: 7.1.0 - - string.prototype.includes@2.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 @@ -8856,22 +6129,15 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} strip-final-newline@3.0.0: {} @@ -8888,15 +6154,27 @@ snapshots: stylelint: 16.9.0(typescript@5.5.4) stylelint-order: 6.0.4(stylelint@16.9.0(typescript@5.5.4)) - stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@16.9.0(typescript@5.5.4)): + stylelint-config-recommended-scss@14.1.0(postcss@8.4.45)(stylelint@16.9.0(typescript@5.5.4)): dependencies: - postcss-html: 1.7.0 + postcss-scss: 4.0.9(postcss@8.4.45) stylelint: 16.9.0(typescript@5.5.4) + stylelint-config-recommended: 14.0.1(stylelint@16.9.0(typescript@5.5.4)) + stylelint-scss: 6.5.1(stylelint@16.9.0(typescript@5.5.4)) + optionalDependencies: + postcss: 8.4.45 stylelint-config-recommended@14.0.1(stylelint@16.9.0(typescript@5.5.4)): dependencies: stylelint: 16.9.0(typescript@5.5.4) + stylelint-config-standard-scss@13.1.0(postcss@8.4.45)(stylelint@16.9.0(typescript@5.5.4)): + dependencies: + stylelint: 16.9.0(typescript@5.5.4) + stylelint-config-recommended-scss: 14.1.0(postcss@8.4.45)(stylelint@16.9.0(typescript@5.5.4)) + stylelint-config-standard: 36.0.1(stylelint@16.9.0(typescript@5.5.4)) + optionalDependencies: + postcss: 8.4.45 + stylelint-config-standard@36.0.1(stylelint@16.9.0(typescript@5.5.4)): dependencies: stylelint: 16.9.0(typescript@5.5.4) @@ -8908,6 +6186,17 @@ snapshots: postcss-sorting: 8.0.2(postcss@8.4.45) stylelint: 16.9.0(typescript@5.5.4) + stylelint-scss@6.5.1(stylelint@16.9.0(typescript@5.5.4)): + dependencies: + css-tree: 2.3.1 + is-plain-object: 5.0.0 + known-css-properties: 0.34.0 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + stylelint: 16.9.0(typescript@5.5.4) + stylelint@16.9.0(typescript@5.5.4): dependencies: '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) @@ -8953,10 +6242,6 @@ snapshots: - supports-color - typescript - suf-log@2.5.3: - dependencies: - s.color: 0.0.15 - supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -8965,8 +6250,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@9.4.0: {} - supports-hyperlinks@3.1.0: dependencies: has-flag: 4.0.0 @@ -9020,10 +6303,10 @@ snapshots: tar-fs@3.0.6: dependencies: - pump: 3.0.0 + pump: 3.0.2 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 2.3.3 + bare-fs: 2.3.4 bare-path: 2.1.3 tar-stream@3.1.7: @@ -9055,14 +6338,17 @@ snapshots: toidentifier@1.0.1: {} - trim-lines@3.0.1: {} - - trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.5.4): dependencies: typescript: 5.5.4 + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + tslib@2.7.0: {} tsx@4.19.0: @@ -9084,9 +6370,7 @@ snapshots: type-fest@0.8.1: {} - type-fest@3.13.1: {} - - type-fest@4.26.0: {} + type-fest@4.26.1: {} type-is@1.6.18: dependencies: @@ -9127,7 +6411,16 @@ snapshots: typed-query-selector@2.12.0: {} - typedarray@0.0.6: {} + typescript-eslint@8.5.0(eslint@8.57.0)(typescript@5.5.4): + dependencies: + '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.5.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.5.0(eslint@8.57.0)(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - eslint + - supports-color typescript@5.5.4: {} @@ -9153,111 +6446,6 @@ snapshots: unicorn-magic@0.1.0: {} - unified-args@11.0.1: - dependencies: - '@types/text-table': 0.2.5 - chalk: 5.3.0 - chokidar: 3.6.0 - comma-separated-tokens: 2.0.3 - json5: 2.2.3 - minimist: 1.2.8 - strip-ansi: 7.1.0 - text-table: 0.2.0 - unified-engine: 11.2.1 - transitivePeerDependencies: - - bluebird - - supports-color - - unified-engine@11.2.1: - dependencies: - '@types/concat-stream': 2.0.3 - '@types/debug': 4.1.12 - '@types/is-empty': 1.2.3 - '@types/node': 20.16.5 - '@types/unist': 3.0.3 - concat-stream: 2.0.0 - debug: 4.3.7 - extend: 3.0.2 - glob: 10.4.5 - ignore: 5.3.2 - is-empty: 1.2.0 - is-plain-obj: 4.1.0 - load-plugin: 6.0.3 - parse-json: 7.1.1 - trough: 2.2.0 - unist-util-inspect: 8.1.0 - vfile: 6.0.3 - vfile-message: 4.0.2 - vfile-reporter: 8.1.1 - vfile-statistics: 3.0.0 - yaml: 2.5.1 - transitivePeerDependencies: - - bluebird - - supports-color - - unified-lint-rule@3.0.0: - dependencies: - '@types/unist': 3.0.3 - trough: 2.2.0 - unified: 11.0.5 - vfile: 6.0.3 - - unified-message-control@5.0.0: - dependencies: - '@types/unist': 3.0.3 - devlop: 1.1.0 - space-separated-tokens: 2.0.2 - unist-util-is: 6.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - vfile-message: 4.0.2 - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - - unist-util-inspect@8.1.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-stringify-position@2.0.3: - dependencies: - '@types/unist': 2.0.11 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - universalify@2.0.1: {} unpipe@1.0.0: {} @@ -9278,64 +6466,17 @@ snapshots: utils-merge@1.0.1: {} - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.0 - kleur: 4.1.5 - sade: 1.8.1 - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validate-npm-package-name@5.0.1: {} - vary@1.1.2: {} - vfile-location@5.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile-reporter@8.1.1: - dependencies: - '@types/supports-color': 8.1.3 - string-width: 6.1.0 - supports-color: 9.4.0 - unist-util-stringify-position: 4.0.0 - vfile: 6.0.3 - vfile-message: 4.0.2 - vfile-sort: 4.0.0 - vfile-statistics: 3.0.0 - - vfile-sort@4.0.0: - dependencies: - vfile: 6.0.3 - vfile-message: 4.0.2 - - vfile-statistics@3.0.0: - dependencies: - vfile: 6.0.3 - vfile-message: 4.0.2 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - vscode-languageserver-textdocument@1.0.12: {} vscode-uri@3.0.8: {} - walk-up-path@3.0.1: {} - which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 @@ -9344,28 +6485,6 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 - which-builtin-type@1.1.4: - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 @@ -9394,12 +6513,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - wrappy@1.0.2: {} write-file-atomic@5.0.1: @@ -9441,5 +6554,3 @@ snapshots: yoctocolors@2.1.1: {} zod@3.23.8: {} - - zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 924b55f..9bec5ba 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,2 @@ packages: - - packages/* + - packages/* diff --git a/readme.md b/readme.md index a8bc5fa..c452349 100644 --- a/readme.md +++ b/readme.md @@ -2,13 +2,13 @@ -# 🔬 @kitschpatrol/shared-config +# 🔬 @envsa/shared-config -[![NPM Package @kitschpatrol/shared-config](https://img.shields.io/npm/v/@kitschpatrol/shared-config.svg)](https://npmjs.com/package/@kitschpatrol/shared-config) +[![NPM Package @envsa/shared-config](https://img.shields.io/npm/v/@envsa/shared-config.svg)](https://npmjs.com/package/@envsa/shared-config) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) @@ -28,7 +28,7 @@ - [Usage](#usage) - [Implementation notes](#implementation-notes) - [Development notes](#development-notes) -- [Background](#background) +- [Credits](#credits) - [License](#license) @@ -42,27 +42,25 @@ This project attempts to consolidate most of the configuration and tooling share It takes care of dependencies and configurations for the following tools: - [CSpell](https://cspell.org) -- [ESLint](https://eslint.org) (including Svelte, Astro, and TypeScript support) +- [ESLint](https://eslint.org) (including Svelte, and TypeScript support) - [mdat](https://github.com/kitschpatrol/mdat) - [Prettier](https://prettier.io) (including a bunch of extra plugins) -- [remarklint](https://github.com/remarkjs/remark-lint) - [Stylelint](https://stylelint.io) - [VS Code](https://code.visualstudio.com) (extension recommendations and extension settings) - Minimal repo boilerplate (`.npmrc`, `.gitignore`, etc.) ### Packages -This readme is for the [`@kitschpatrol/shared-config`](https://www.npmjs.com/package/@kitschpatrol/shared-config) package, which depends on a number of tool-specific packages included in the [`kitschpatrol/shared-config`](https://github.com/kitschpatrol/shared-config) monorepo on GitHub, each of which is documented in its respective readme, linked below: +This readme is for the [`@envsa/shared-config`](https://www.npmjs.com/package/@envsa/shared-config) package, which depends on a number of tool-specific packages included in the [`kitschpatrol/shared-config`](https://github.com/kitschpatrol/shared-config) monorepo on GitHub, each of which is documented in its respective readme, linked below: -- [`@kitschpatrol/cspell-config`](/packages/cspell-config/readme.md) -- [`@kitschpatrol/eslint-config`](/packages/eslint-config/readme.md) -- [`@kitschpatrol/mdat-config`](/packages/mdat-config/readme.md) -- [`@kitschpatrol/prettier-config`](/packages/prettier-config/readme.md) -- [`@kitschpatrol/remark-config`](/packages/remark-config/readme.md) -- [`@kitschpatrol/repo-config`](/packages/repo-config/readme.md) -- [`@kitschpatrol/stylelint-config`](/packages/stylelint-config/readme.md) +- [`@envsa/cspell-config`](/packages/cspell-config/readme.md) +- [`@envsa/eslint-config`](/packages/eslint-config/readme.md) +- [`@envsa/mdat-config`](/packages/mdat-config/readme.md) +- [`@envsa/prettier-config`](/packages/prettier-config/readme.md) +- [`@envsa/repo-config`](/packages/repo-config/readme.md) +- [`@envsa/stylelint-config`](/packages/stylelint-config/readme.md) -Any of these may be installed and run on their own via CLI if desired. However, in general, the idea is to use `@kitschpatrol/shared-config` to easily run them all simultaneously over a repo with a single command with options to either check or (where possible) fix problems, with output aggregated into a single report. +Any of these may be installed and run on their own via CLI if desired. However, in general, the idea is to use `@envsa/shared-config` to easily run them all simultaneously over a repo with a single command with options to either check or (where possible) fix problems, with output aggregated into a single report. ## Getting started @@ -77,7 +75,7 @@ Node 18+ and [pnpm](https://pnpm.io) are required. It probably works with NPM an Bootstrap a new project and open in VS Code: ```sh -git init && pnpm init && pnpm pkg set type="module" && pnpm dlx @kitschpatrol/repo-config --init && pnpm add -D @kitschpatrol/shared-config && pnpm shared-config --init && pnpm i && code . +git init && pnpm init && pnpm pkg set type="module" && pnpm dlx @envsa/repo-config --init && pnpm add -D @envsa/shared-config && pnpm shared-config --init && pnpm i && code . ``` #### Quick add to an existing project: @@ -85,7 +83,7 @@ git init && pnpm init && pnpm pkg set type="module" && pnpm dlx @kitschpatrol/re This might overwrite certain config files, so commit first: ```sh -pnpm dlx @kitschpatrol/repo-config --init && pnpm i && pnpm add -D @kitschpatrol/shared-config && pnpm shared-config --init +pnpm dlx @envsa/repo-config --init && pnpm i && pnpm add -D @envsa/shared-config && pnpm shared-config --init ``` #### Step-by-step: @@ -93,13 +91,13 @@ pnpm dlx @kitschpatrol/repo-config --init && pnpm i && pnpm add -D @kitschpatrol 1. Install the requisite `.npmrc`: ```sh - pnpm dlx @kitschpatrol/repo-config --init + pnpm dlx @envsa/repo-config --init ``` 2. Install the package: ```sh - pnpm add -D @kitschpatrol/shared-config + pnpm add -D @envsa/shared-config ``` 3. Add default config files for all the tools to your project root: @@ -119,9 +117,6 @@ pnpm dlx @kitschpatrol/repo-config --init && pnpm i && pnpm add -D @kitschpatrol } ``` - > \[!NOTE]\ - > Prettier formatting for Ruby requires some extra legwork to configure, see [`the @kitschpatrol/prettier-config` package readme](https://github.com/kitschpatrol/shared-config/blob/main/packages/prettier-config/readme.md) for more details. - ## Usage Various VS Code plugins should "just work". @@ -163,7 +158,7 @@ shared-config [ ...] -Recall that the `@kitschpatrol/shared-config` package aggregates integration and invocation of the other tool-specific packages in this monorepo. Running a cli command on `shared-config` effectively runs the same command against all the tool-specific packages. +Recall that the `@envsa/shared-config` package aggregates integration and invocation of the other tool-specific packages in this monorepo. Running a cli command on `shared-config` effectively runs the same command against all the tool-specific packages. ## Implementation notes @@ -177,7 +172,7 @@ The monorepo must be kept intact, as the sub-packages depend on scripts in the p Pnpm considers module hoisting harmful, and I tend to agree, but certain exceptions are carved out as necessary: -- CSpell, remark, mdat, ESLint, and Prettier all need to be hoisted via `public-hoist-pattern` to be accessible in `pnpm exec` scripts and to VS Code plugins. +- CSpell, mdat, ESLint, and Prettier all need to be hoisted via `public-hoist-pattern` to be accessible in `pnpm exec` scripts and to VS Code plugins. - Even basic file-only packages like `repo-config` seem to need to be hoisted via for their bin scripts to be accessible via `pnpm exec` @@ -193,33 +188,14 @@ For local development via `pnpm`, use `file:` dependency protocol instead of `li Something to investigate: An [approach](https://github.com/antfu/eslint-config#vs-code-support-auto-fix) to ignoring style rules in VS Code, and possibly migrate all style to -## Background - -### Motivation - -[`xo`](https://github.com/xojs/xo) is really, really close to what I'm after here, but I wanted a few extra tools and preferred to use "first party" VS Code plugins where possible. +## Credits -### Similar projects - -- [1stG/configs](https://github.com/1stG/configs) -- [antfu/eslint-config](https://github.com/antfu/eslint-config) -- [awesome-eslint](https://github.com/dustinspecker/awesome-eslint) -- [lass](https://lass.js.org) (xo etc.) -- [routine-npm-packages](https://github.com/kachkaev/routine-npm-packages) and [example](https://github.com/kachkaev/website) -- [sheriff](https://www.eslint-config-sheriff.dev) -- [standard](https://standardjs.com) -- [trunk](https://trunk.io) -- [xo](https://github.com/xojs/xo) -- [vscode-file-nesting-config](https://github.com/antfu/vscode-file-nesting-config) -- [NullVoxPopuli/eslint-configs](https://github.com/NullVoxPopuli/eslint-configs) -- [tsconfig/bases](https://github.com/tsconfig/bases/tree/main) -- [eslint-config-current-thing](https://github.com/GildedPleb/eslint-config-current-thing) _(Smart!)_ +[Eric Mika](https://github.com/kitschpatrol) is the author of the original [@kitschpatrol/shared-config](https://github.com/kitschpatrol/shared-config) project on which this is based. ## License -[MIT](license.txt) © Eric Mika +[MIT](license.txt) © Liam Rella - diff --git a/scripts/build.ts b/scripts/build.ts index 85f2f59..a1950a3 100755 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -1,13 +1,13 @@ #!/usr/bin/env tsx -import esbuild from 'esbuild' +import { build } from 'esbuild'; -await esbuild.build({ - bundle: true, - entryPoints: ['src/cli.ts'], - external: ['execa', '@pinojs/json-colorizer', 'cosmiconfig', 'fs-extra'], - format: 'esm', - minify: true, - outfile: 'bin/cli.js', - platform: 'node', - target: 'node18', -}) +await build({ + bundle: true, + entryPoints: ['src/cli.ts'], + external: ['execa', '@pinojs/json-colorizer', 'cosmiconfig', 'fs-extra'], + format: 'esm', + minify: true, + outfile: 'bin/cli.js', + platform: 'node', + target: 'node18', +}); diff --git a/src/command-builder.ts b/src/command-builder.ts index f44ba96..df3a083 100644 --- a/src/command-builder.ts +++ b/src/command-builder.ts @@ -1,479 +1,490 @@ #!/usr/bin/env node +/* eslint-disable import-x/namespace */ /* eslint-disable complexity */ // Creates cli bin files for each package // based on the shared-config field in their package.js -import type { Flag } from 'meow' +import type { Flag } from 'meow'; // eslint-disable-next-line unicorn/import-style -import chalk, { type foregroundColorNames } from 'chalk' -import { cosmiconfig } from 'cosmiconfig' -import { execa, type ExecaError } from 'execa' -import fse from 'fs-extra' -import meow from 'meow' -import path from 'node:path' -import { Transform } from 'node:stream' -import { PassThrough, type Stream } from 'node:stream' -import { fileURLToPath } from 'node:url' -import { packageUp } from 'package-up' -import { merge, stringify } from './json-utils.js' +import chalk, { type foregroundColorNames } from 'chalk'; +import { cosmiconfig } from 'cosmiconfig'; +import { execa, type ExecaError } from 'execa'; +import * as fse from 'fs-extra'; +import meow from 'meow'; +import path from 'node:path'; +import { PassThrough, Transform, type Stream } from 'node:stream'; +import { fileURLToPath } from 'node:url'; +import { packageUp } from 'package-up'; +import { merge, stringify } from './json-utils.ts'; // TODO get these from meow? -type StringFlag = Flag<'string', string> | Flag<'string', string[], true> -type BooleanFlag = Flag<'boolean', boolean> | Flag<'boolean', boolean[], true> -type NumberFlag = Flag<'number', number> | Flag<'number', number[], true> -type AnyFlag = BooleanFlag | NumberFlag | StringFlag -type AnyFlags = Record - -type ChalkColor = (typeof foregroundColorNames)[number] - -type OptionCommand = { - /** Either a string to run a command, or a function to do something custom. If undefined, a default behavior is used. */ - command?: - | (( - /** Useful if you're logging in the function, ensures output is prefixed */ - logStream: NodeJS.WritableStream, - args: string[], - options: string[], - ) => Promise) - | string - /** Arguments to be passed to the command in the absence of user-provided arguments */ - defaultArguments?: string[] - /** Options to be passed to the command. The argument is handled in command-builder.ts */ - options?: string[] +type StringFlag = Flag<'string', string> | Flag<'string', string[], true>; +type BooleanFlag = Flag<'boolean', boolean> | Flag<'boolean', boolean[], true>; +type NumberFlag = Flag<'number', number> | Flag<'number', number[], true>; +type AnyFlag = BooleanFlag | NumberFlag | StringFlag; +type AnyFlags = Record; + +type ChalkColor = (typeof foregroundColorNames)[number]; + +interface OptionCommand { + /** Either a string to run a command, or a function to do something custom. If undefined, a default behavior is used. */ + command?: + | (( + /** Useful if you're logging in the function, ensures output is prefixed */ + logStream: NodeJS.WritableStream, + args: string[], + options: string[], + ) => Promise) + | string; + /** Arguments to be passed to the command in the absence of user-provided arguments */ + defaultArguments?: string[]; + /** Options to be passed to the command. The argument is handled in command-builder.ts */ + options?: string[]; } // Supported options -export type OptionCommands = { - [key in 'check' | 'fix' | 'init' | 'printConfig']?: OptionCommand -} +type OptionCommands = { + [key in 'check' | 'fix' | 'init' | 'printConfig']?: OptionCommand; +}; function createStreamTransform(logPrefix: string | undefined, logColor: ChalkColor): Transform { - return new Transform({ - transform(chunk: string | Uint8Array, _: BufferEncoding, callback) { - // Convert the chunk to a string and prepend the string to each line - const lines: string[] = chunk - .toString() - .split(/\r?\n/) - .filter((line) => line.trim().length > 0) - - const transformed = - lines.map((line) => `${logPrefix ? chalk[logColor](logPrefix) : ''} ${line}`).join('\n') + - '\n' - - // Pass the transformed data to the next stage in the stream - this.push(transformed) - callback() - }, - }) + return new Transform({ + transform(chunk: string | Uint8Array, _: BufferEncoding, callback) { + // Convert the chunk to a string and prepend the string to each line + const lines: string[] = chunk + .toString() + .split(/\r?\n/) + .filter((line) => line.trim().length > 0); + + const transformed = + lines.map((line) => `${logPrefix ? chalk[logColor](logPrefix) : ''} ${line}`).join('\n') + + '\n'; + + // Pass the transformed data to the next stage in the stream + this.push(transformed); + callback(); + }, + }); } function generateHelpText(command: string, options: OptionCommands): string { - let helpText = ` + let helpText = ` Usage $ ${command} [ ...] - ` - - helpText += '\n Options' - - if (Object.keys(options).length > 0) { - for (const name of Object.keys(options)) { - switch (name) { - case 'init': { - helpText += - '\n --init, -i Initialize by copying starter config files to your project root.' - break - } - - case 'check': { - helpText += `\n --check, -c Check for and report issues. Same as \`${command}\`.` - break - } - - case 'fix': { - helpText += - '\n --fix, -f Fix all auto-fixable issues, and report the un-fixable.' - break - } - - case 'printConfig': { - helpText += - '\n --print-config, -p Print the effective configuration at a certain path.' - break - } - - case 'help': { - break - } - - case 'version': { - break - } - - default: { - console.error(`Unknown command name in generateHelpText: ${name}`) - } - } - } - } - - // Note some spooky behavior around these affecting how options are parsed - helpText += '\n --help, -h Print this help info.' - helpText += '\n --version, -v Print the package version.\n' - - return helpText + `; + + helpText += '\n Options'; + + if (Object.keys(options).length > 0) { + for (const name of Object.keys(options)) { + switch (name) { + case 'init': { + helpText += + '\n --init, -i Initialize by copying starter config files to your project root.'; + break; + } + + case 'check': { + helpText += `\n --check, -c Check for and report issues. Same as \`${command}\`.`; + break; + } + + case 'fix': { + helpText += + '\n --fix, -f Fix all auto-fixable issues, and report the un-fixable.'; + break; + } + + case 'printConfig': { + helpText += + '\n --print-config, -p Print the effective configuration at a certain path.'; + break; + } + + case 'help': { + break; + } + + case 'version': { + break; + } + + default: { + console.error(`Unknown command name in generateHelpText: ${name}`); + } + } + } + } + + // Note some spooky behavior around these affecting how options are parsed + helpText += '\n --help, -h Print this help info.'; + helpText += '\n --version, -v Print the package version.\n'; + + return helpText; } function generateFlags(options: OptionCommands): AnyFlags { - return Object.keys(options).reduce((acc, name) => { - let flagOptions: AnyFlag = {} - - switch (name) { - case 'init': { - flagOptions = { - shortFlag: 'i', - type: 'boolean', - } - break - } - - case 'check': { - flagOptions = { - aliases: ['lint', ''], - shortFlag: 'l', - type: 'boolean', - } - break - } - - case 'fix': { - flagOptions = { - shortFlag: 'f', - type: 'boolean', - } - break - } - - case 'printConfig': { - flagOptions = { - shortFlag: 'p', - type: 'boolean', - } - break - } - - case 'help': { - flagOptions = { - type: 'boolean', - } - break - } - - case 'version': { - flagOptions = { - type: 'boolean', - } - break - } - - default: { - console.error(`Unknown command name: ${name}`) - } - } - - acc[name] = flagOptions - return acc - }, {}) + return Object.keys(options).reduce((accumulator, name) => { + let flagOptions: AnyFlag = {}; + + switch (name) { + case 'init': { + flagOptions = { + shortFlag: 'i', + type: 'boolean', + }; + break; + } + + case 'check': { + flagOptions = { + aliases: ['lint', ''], + shortFlag: 'l', + type: 'boolean', + }; + break; + } + + case 'fix': { + flagOptions = { + shortFlag: 'f', + type: 'boolean', + }; + break; + } + + case 'printConfig': { + flagOptions = { + shortFlag: 'p', + type: 'boolean', + }; + break; + } + + case 'help': { + flagOptions = { + type: 'boolean', + }; + break; + } + + case 'version': { + flagOptions = { + type: 'boolean', + }; + break; + } + + default: { + console.error(`Unknown command name: ${name}`); + } + } + + accumulator[name] = flagOptions; + return accumulator; + }, {}); } async function streamToString(stream: Stream): Promise { - const chunks: Uint8Array[] = [] - return new Promise((resolve, reject) => { - stream.on('data', (chunk: Uint8Array) => chunks.push(Buffer.from(chunk))) - stream.on('error', (error) => { - reject(error as Error) - }) - stream.on('end', () => { - resolve(Buffer.concat(chunks).toString('utf8')) - }) - }) + const chunks: Uint8Array[] = []; + return new Promise((resolve, reject) => { + stream.on('data', (chunk: Uint8Array) => chunks.push(Buffer.from(chunk))); + stream.on('error', (error) => { + reject(error as Error); + }); + stream.on('end', () => { + resolve(Buffer.concat(chunks).toString('utf8')); + }); + }); } -export async function executeJsonOutput( - logStream: NodeJS.WritableStream, - optionCommand: OptionCommand, - input: string[] = [], +async function executeJsonOutput( + logStream: NodeJS.WritableStream, + optionCommand: OptionCommand, + input: string[] = [], ): Promise { - // Capture the output of execution, and then format is nicely - const pass = new PassThrough() - const exitCode = await execute(pass, optionCommand, input) - pass.end() - - if (exitCode !== 0) { - logStream.write('Error printing config.\n') - return exitCode - } - - try { - const configString = await streamToString(pass) - - logStream.write(stringify(JSON.parse(configString))) - logStream.write('\n') - return 0 - } catch (error) { - logStream.write(`Error: ${String(error)}\n`) - return 1 - } + // Capture the output of execution, and then format is nicely + const pass = new PassThrough(); + const exitCode = await execute(pass, optionCommand, input); + pass.end(); + + if (exitCode !== 0) { + logStream.write('Error printing config.\n'); + return exitCode; + } + + try { + const configString = await streamToString(pass); + + logStream.write(stringify(JSON.parse(configString))); + logStream.write('\n'); + return 0; + } catch (error) { + logStream.write(`Error: ${String(error)}\n`); + return 1; + } } -export async function execute( - logStream: NodeJS.WritableStream, - optionCommand: OptionCommand, - input: string[] = [], +async function execute( + logStream: NodeJS.WritableStream, + optionCommand: OptionCommand, + input: string[] = [], ): Promise { - if (optionCommand.command !== undefined && typeof optionCommand.command === 'string') { - let exitCode = 1 - - try { - const subprocess = execa( - optionCommand.command, - [...(optionCommand.options ?? []), ...input], - { - env: { - // eslint-disable-next-line @typescript-eslint/naming-convention - FORCE_COLOR: 'true', - }, - stdin: 'inherit', // For input, todo anything weird here? - }, - ) - - // End false is required here, otherwise the stream will close before the subprocess is done - subprocess.stdout?.pipe(logStream, { end: false }) - subprocess.stderr?.pipe(logStream, { end: false }) - await subprocess - exitCode = subprocess.exitCode ?? 1 - } catch (error) { - // Console.error(`${optionCommand.command} failed with error "${error.shortMessage}"`); - if (isErrorExecaError(error)) { - exitCode = typeof error.exitCode === 'number' ? error.exitCode : 1 - } - } - - return exitCode - } - - logStream.write(`Error: Invalid optionCommand: ${JSON.stringify(optionCommand, undefined, 2)}`) - return 1 + if (optionCommand.command !== undefined && typeof optionCommand.command === 'string') { + let exitCode = 1; + + try { + const subprocess = execa( + optionCommand.command, + [...(optionCommand.options ?? []), ...input], + { + env: { + // eslint-disable-next-line @typescript-eslint/naming-convention + FORCE_COLOR: 'true', + }, + stdin: 'inherit', // For input, todo anything weird here? + }, + ); + + // End false is required here, otherwise the stream will close before the subprocess is done + subprocess.stdout?.pipe(logStream, { end: false }); + subprocess.stderr?.pipe(logStream, { end: false }); + await subprocess; + exitCode = subprocess.exitCode ?? 1; + } catch (error) { + // Console.error(`${optionCommand.command} failed with error "${error.shortMessage}"`); + if (isErrorExecaError(error)) { + exitCode = typeof error.exitCode === 'number' ? error.exitCode : 1; + } + } + + return exitCode; + } + + logStream.write(`Error: Invalid optionCommand: ${JSON.stringify(optionCommand, undefined, 2)}`); + return 1; } function checkArguments( - input: string[], - optionCommand: OptionCommand, - logStream: NodeJS.WritableStream, + input: string[], + optionCommand: OptionCommand, + logStream: NodeJS.WritableStream, ): void { - // Warn if no default arguments are provided, don't be too clever - if (input.length === 0 && !optionCommand.defaultArguments) { - logStream.write('Error: This command must be used with a file argument\n') - process.exit(1) - } + // Warn if no default arguments are provided, don't be too clever + if (input.length === 0 && !optionCommand.defaultArguments) { + logStream.write('Error: This command must be used with a file argument\n'); + process.exit(1); + } } -export async function buildCommands( - command: string, - logPrefix: string | undefined, - logColor: ChalkColor, - options: OptionCommands, +async function buildCommands( + command: string, + logPrefix: string | undefined, + logColor: ChalkColor, + options: OptionCommands, ) { - const cli = meow({ - allowUnknownFlags: false, - booleanDefault: undefined, - flags: generateFlags(options), - help: generateHelpText(command, options), - importMeta: import.meta, - }) - - const { flags, input } = cli - - const commandsToRun = Object.keys(options).reduce((acc, command: string) => { - if (flags[command]) { - acc[command as keyof OptionCommands] = options[command as keyof OptionCommands] - } - - return acc - }, {}) - - // Set up log stream - const logStream = createStreamTransform(logPrefix, logColor) - logStream.pipe(process.stdout) - - // Make 'check' the default behavior if no flags are specified - if (Object.keys(commandsToRun).length === 0) { - if (options.check === undefined) { - logStream.write(`This command requires options. Run ${command} --help for valid commands.\n`) - } else { - commandsToRun.check = options.check - } - } - - // Debug - // console.log(`commandsToRun: ${JSON.stringify(commandsToRun, undefined, 2)}`); - - let aggregateExitCode = 0 - - for (const [name, optionCommand] of Object.entries(commandsToRun)) { - if (typeof optionCommand.command === 'function') { - checkArguments(input, optionCommand, logStream) - - const args = input.length === 0 ? (optionCommand.defaultArguments ?? []) : input - const options = optionCommand.options ?? [] - - // Custom function execution is always the same - aggregateExitCode += await optionCommand.command(logStream, args, options) - } else if (typeof optionCommand.command === 'string') { - // Warn if no default arguments are provided, don't be too clever - checkArguments(input, optionCommand, logStream) - - aggregateExitCode += await execute( - logStream, - optionCommand, - input.length === 0 ? optionCommand.defaultArguments : input, - ) - } else { - // Handle default behaviors (e.g. {}) - switch (name) { - case 'init': { - // By default, copies files in script package's /init directory to the root of the package it's called from - // For files in .vscode, if both the source and destination files are json, then merge them instead of overwriting - - // Copy files - const destinationPackage = await packageUp() - if (destinationPackage === undefined) { - logStream.write( - 'Error: The `--init` flag must be used in a directory with a package.json file\n', - ) - aggregateExitCode += 1 - break - } - - const sourcePackage = await packageUp({ cwd: fileURLToPath(import.meta.url) }) - if (sourcePackage === undefined) { - logStream.write('Error: The script being called was not in a package, weird.\n') - aggregateExitCode += 1 - break - } - - const source = path.join(path.dirname(sourcePackage), 'init/') - const destination = path.dirname(destinationPackage) - - logStream.write( - `Adding initial configuration files from:\n"${source}" → "${destination}"\n`, - ) - - try { - await fse.copy(source, destination, { - filter(source, destination) { - const isFile = fse.statSync(source).isFile() - const destinationExists = fse.existsSync(destination) - - if (isFile) { - if ( - destinationExists && - destination.includes('.vscode/') && - path.extname(destination) === '.json' - ) { - // Merge - logStream.write(`Merging: \n"${source}" → "${destination}"\n`) - - const sourceJson = fse.readJSONSync(source) as Record - const destinationJson = fse.readJSONSync(destination) as Record - const mergedJson = merge(destinationJson, sourceJson) - - fse.writeJSONSync(destination, mergedJson, { spaces: 2 }) - - return false - } - - if (destinationExists) { - logStream.write(`Overwriting: \n"${source}" → "${destination}"\n`) - return true - } - - logStream.write(`Copying: \n"${source}" → "${destination}"\n`) - return true - } - - // Don't log directory copy - return true - }, - overwrite: true, - }) - } catch {} - - // TODO - aggregateExitCode += 0 - - break - } - - case 'check': { - console.error( - 'There is no default implementation for check. The [tool]-config package must define a command.', - ) - aggregateExitCode += 1 - break - } - - case 'fix': { - console.error( - 'There is no default implementation for fix. The [tool]-config package must define a command.', - ) - aggregateExitCode += 1 - break - } - - case 'printConfig': { - const args = input.length === 0 ? (optionCommand.defaultArguments ?? ['.']) : input - const filePath = args?.at(0) - - // Brittle, could pass config name to commandBuilder() instead - const configName = command.split('-').at(0) - - if (configName === undefined) { - logStream.write(`Error: Could not find or parse config file for ${command}.\n`) - aggregateExitCode += 1 - break - } - - const configSearch = await cosmiconfig(configName).search(filePath) - - if (!configSearch?.config) { - logStream.write(`Error: Could not find or parse config file for ${configName}.\n`) - aggregateExitCode += 1 - break - } - - logStream.write(`${logPrefix} config path: "${configSearch?.filepath}"\n`) - logStream.write(stringify(configSearch.config)) - logStream.write('\n') - break - } - - default: { - console.error(`Unknown command name: ${name}`) - aggregateExitCode += 1 - break - } - } - } - } - - process.exit(aggregateExitCode > 0 ? 1 : 0) + const cli = meow({ + allowUnknownFlags: false, + booleanDefault: undefined, + flags: generateFlags(options), + help: generateHelpText(command, options), + importMeta: import.meta, + }); + + const { flags, input } = cli; + + const commandsToRun = Object.keys(options).reduce( + (accumulator, command: string) => { + if (flags[command]) { + accumulator[command as keyof OptionCommands] = options[command as keyof OptionCommands]; + } + + return accumulator; + }, + {}, + ); + + // Set up log stream + const logStream = createStreamTransform(logPrefix, logColor); + logStream.pipe(process.stdout); + + // Make 'check' the default behavior if no flags are specified + if (Object.keys(commandsToRun).length === 0) { + if (options.check === undefined) { + logStream.write(`This command requires options. Run ${command} --help for valid commands.\n`); + } else { + commandsToRun.check = options.check; + } + } + + // Debug + // console.log(`commandsToRun: ${JSON.stringify(commandsToRun, undefined, 2)}`); + + let aggregateExitCode = 0; + + for (const [name, optionCommand] of Object.entries(commandsToRun)) { + if (typeof optionCommand.command === 'function') { + checkArguments(input, optionCommand, logStream); + + const args = input.length === 0 ? (optionCommand.defaultArguments ?? []) : input; + const options = optionCommand.options ?? []; + + // Custom function execution is always the same + aggregateExitCode += await optionCommand.command(logStream, args, options); + } else if (typeof optionCommand.command === 'string') { + // Warn if no default arguments are provided, don't be too clever + checkArguments(input, optionCommand, logStream); + + aggregateExitCode += await execute( + logStream, + optionCommand, + input.length === 0 ? optionCommand.defaultArguments : input, + ); + } else { + // Handle default behaviors (e.g. {}) + switch (name) { + case 'init': { + // By default, copies files in script package's /init directory to the root of the package it's called from + // For files in .vscode, if both the source and destination files are json, then merge them instead of overwriting + + // Copy files + const destinationPackage = await packageUp(); + if (destinationPackage === undefined) { + logStream.write( + 'Error: The `--init` flag must be used in a directory with a package.json file\n', + ); + aggregateExitCode += 1; + break; + } + + const sourcePackage = await packageUp({ cwd: fileURLToPath(import.meta.url) }); + if (sourcePackage === undefined) { + logStream.write('Error: The script being called was not in a package, weird.\n'); + aggregateExitCode += 1; + break; + } + + const source = path.join(path.dirname(sourcePackage), 'init/'); + const destination = path.dirname(destinationPackage); + + logStream.write( + `Adding initial configuration files from:\n"${source}" → "${destination}"\n`, + ); + + try { + await fse.copy(source, destination, { + filter(source, destination) { + const isFile = fse.statSync(source).isFile(); + const destinationExists = fse.existsSync(destination); + + if (isFile) { + if ( + destinationExists && + destination.includes('.vscode/') && + path.extname(destination) === '.json' + ) { + // Merge + logStream.write(`Merging: \n"${source}" → "${destination}"\n`); + + const sourceJson = fse.readJSONSync(source) as Record; + const destinationJson = fse.readJSONSync(destination) as Record< + string, + unknown + >; + const mergedJson = merge(destinationJson, sourceJson); + + fse.writeJSONSync(destination, mergedJson, { spaces: 2 }); + + return false; + } + + if (destinationExists) { + logStream.write(`Overwriting: \n"${source}" → "${destination}"\n`); + return true; + } + + logStream.write(`Copying: \n"${source}" → "${destination}"\n`); + return true; + } + + // Don't log directory copy + return true; + }, + overwrite: true, + }); + } catch { + // Intentionally blank + } + + // TODO + aggregateExitCode += 0; + + break; + } + + case 'check': { + console.error( + 'There is no default implementation for check. The [tool]-config package must define a command.', + ); + aggregateExitCode += 1; + break; + } + + case 'fix': { + console.error( + 'There is no default implementation for fix. The [tool]-config package must define a command.', + ); + aggregateExitCode += 1; + break; + } + + case 'printConfig': { + const args = input.length === 0 ? (optionCommand.defaultArguments ?? ['.']) : input; + const filePath = args?.at(0); + + // Brittle, could pass config name to commandBuilder() instead + const configName = command.split('-').at(0); + + if (configName === undefined) { + logStream.write(`Error: Could not find or parse config file for ${command}.\n`); + aggregateExitCode += 1; + break; + } + + const configSearch = await cosmiconfig(configName).search(filePath); + + if (!configSearch?.config) { + logStream.write(`Error: Could not find or parse config file for ${configName}.\n`); + aggregateExitCode += 1; + break; + } + + logStream.write(`${logPrefix} config path: "${configSearch?.filepath}"\n`); + logStream.write(stringify(configSearch.config)); + logStream.write('\n'); + break; + } + + default: { + console.error(`Unknown command name: ${name}`); + aggregateExitCode += 1; + break; + } + } + } + } + + process.exit(aggregateExitCode > 0 ? 1 : 0); } function isErrorExecaError(error: unknown): error is ExecaError { - return ( - error instanceof Error && - 'exitCode' in error && - typeof (error as ExecaError).exitCode === 'number' - ) + return ( + error instanceof Error && + 'exitCode' in error && + typeof (error as ExecaError).exitCode === 'number' + ); } + +export { buildCommands, execute, executeJsonOutput }; +export type { OptionCommands }; diff --git a/src/file-utils.ts b/src/file-utils.ts index 2e63b76..51d4706 100644 --- a/src/file-utils.ts +++ b/src/file-utils.ts @@ -1,15 +1,15 @@ -import fs from 'node:fs/promises' +import fs from 'node:fs/promises'; export async function checkFileExists(file: string): Promise { - try { - await fs.stat(file) - return true // File exists - } catch (error) { - if ((error as NodeJS.ErrnoException).code === 'ENOENT') { - return false // File does not exist - } + try { + await fs.stat(file); + return true; // File exists + } catch (error) { + if ((error as NodeJS.ErrnoException).code === 'ENOENT') { + return false; // File does not exist + } - // Re-throw the error if it's not a 'File does not exist' error - throw error - } + // Re-throw the error if it's not a 'File does not exist' error + throw error; + } } diff --git a/src/json-utils.ts b/src/json-utils.ts index 0bd32ea..2bec95a 100644 --- a/src/json-utils.ts +++ b/src/json-utils.ts @@ -2,55 +2,57 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-explicit-any */ -import type { ArrayMergeOptions, Options } from 'deepmerge' -import jsonColorizer from '@pinojs/json-colorizer' -import deepmerge from 'deepmerge' -import jsonStringifyPrettyCompact from 'json-stringify-pretty-compact' - -export function stringify(object: unknown): string { - return jsonColorizer( - jsonStringifyPrettyCompact(object, { - indent: 2, - replacer(_, value) { - if (typeof value === 'function') { - // eslint-disable-next-line @typescript-eslint/ban-types - return (value as Function).name - } - - return value as unknown - }, - }), - { - /* eslint-disable @typescript-eslint/naming-convention */ - colors: { - BRACKET: 'gray', - }, - }, - ) +import jsonColorizer from '@pinojs/json-colorizer'; +import type { ArrayMergeOptions, Options } from 'deepmerge'; +import deepmerge from 'deepmerge'; +import jsonStringifyPrettyCompact from 'json-stringify-pretty-compact'; + +function stringify(object: unknown): string { + return jsonColorizer( + jsonStringifyPrettyCompact(object, { + indent: 2, + replacer(_, value) { + if (typeof value === 'function') { + // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + return (value as Function).name; + } + + return value as unknown; + }, + }), + { + /* eslint-disable @typescript-eslint/naming-convention */ + colors: { + BRACKET: 'gray', + }, + }, + ); } // https://www.npmjs.com/package/deepmerge#arraymerge-example-combine-arrays const combineMerge = (target: any[], source: any[], options: ArrayMergeOptions): any[] => { - const destination = [...target] - - for (const [index, item] of source.entries()) { - if (destination[index] === undefined) { - destination[index] = options.cloneUnlessOtherwiseSpecified(item, options) - } else if (options.isMergeableObject(item)) { - destination[index] = merge(target[index], item, options) - } else if (!target.includes(item)) { - destination.push(item) - } - } - - return destination -} + const destination = [...target]; -export function merge( - destination: any, - source: any, - // eslint-disable-next-line unicorn/no-object-as-default-parameter - options: Options = { arrayMerge: combineMerge }, + for (const [index, item] of source.entries()) { + if (destination[index] === undefined) { + destination[index] = options.cloneUnlessOtherwiseSpecified(item, options); + } else if (options.isMergeableObject(item)) { + destination[index] = merge(target[index], item, options); + } else if (!target.includes(item)) { + destination.push(item); + } + } + + return destination; +}; + +function merge( + destination: any, + source: any, + // eslint-disable-next-line unicorn/no-object-as-default-parameter + options: Options = { arrayMerge: combineMerge }, ): any[] { - return deepmerge(destination, source, options) + return deepmerge(destination, source, options); } + +export { merge, stringify }; diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index f824125..12ae9b0 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,11 +1,11 @@ { - "compilerOptions": { - "noEmit": true, - "allowJs": true - }, - "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": true, + "allowJs": true + }, + "extends": "./tsconfig.json", - /* Also lint config files. */ - "include": ["**/*", "**/**.*"], - "exclude": ["dist/", "bin/"] + /* Also lint config files. */ + "include": ["**/*", "**/**.*"], + "exclude": ["dist/", "bin/"] } diff --git a/tsconfig.json b/tsconfig.json index d89c576..e194ff8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,26 +1,30 @@ { - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - "noEmit": true, - "noErrorTruncation": true, + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "noEmit": true, + "noErrorTruncation": true, - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, - "include": ["**/*"], - "exclude": ["dist/", "bin/"] + "paths": { + "$root/*": ["./*"] + } + }, + + "include": ["**/*"], + "exclude": ["dist/", "bin/"] }