├── .editorconfig ├── .gitattributes ├── .github └── workflows │ ├── release.yaml │ └── test.yaml ├── .gitignore ├── .husky └── pre-commit ├── .npmrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── eslint.config.js ├── package.json ├── pnpm-lock.yaml ├── stylelint.config.js ├── test └── declaration-colon-newline-after.js └── utils └── testRule.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_style = tab 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | 10 | [*.md] 11 | trim_trailing_whitespace = false 12 | 13 | [*.{yml,yaml}] 14 | indent_style = space 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - release 7 | 8 | permissions: 9 | contents: write 10 | id-token: write 11 | 12 | jobs: 13 | release: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | - uses: pnpm/action-setup@v4 18 | - uses: actions/setup-node@v4 19 | with: 20 | node-version-file: package.json 21 | cache: pnpm 22 | - run: pnpm install 23 | - run: | 24 | echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> ~/.npmrc 25 | git config --global user.email "actions@users.noreply.github.com" 26 | git config --global user.name "GitHub Actions" 27 | RELEASE_DESCRIPTION=$(awk '/## \[Unreleased\]/{flag=1; next} /## \[/{flag=0} flag' ./CHANGELOG.md | sed '/^[[:space:]]*$/d') 28 | if echo "$RELEASE_DESCRIPTION" | grep -q '### Changed'; then 29 | pnpm version major 30 | elif echo "$RELEASE_DESCRIPTION" | grep -q '### Added'; then 31 | pnpm version minor 32 | elif echo "$RELEASE_DESCRIPTION" | grep -q '### Fixed'; then 33 | pnpm version patch 34 | fi 35 | echo "TAG_NAME=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV 36 | echo "RELEASE_DESCRIPTION<> $GITHUB_ENV 37 | echo "$RELEASE_DESCRIPTION" >> $GITHUB_ENV 38 | echo "EOF" >> $GITHUB_ENV 39 | - uses: softprops/action-gh-release@v2 40 | env: 41 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 42 | with: 43 | tag_name: ${{ env.TAG_NAME }} 44 | name: "Release ${{ env.TAG_NAME }}" 45 | body: ${{ env.RELEASE_DESCRIPTION }} 46 | draft: false 47 | prerelease: false 48 | - run: git fetch --all && git switch main && git rebase release && git push origin main 49 | -------------------------------------------------------------------------------- /.github/workflows/test.yaml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - '*' 10 | 11 | env: 12 | FORCE_COLOR: true 13 | 14 | jobs: 15 | test: 16 | strategy: 17 | matrix: 18 | os: 19 | - ubuntu-latest 20 | runs-on: ${{ matrix.os }} 21 | steps: 22 | - uses: actions/checkout@v4 23 | - uses: pnpm/action-setup@v4 24 | - uses: actions/setup-node@v4 25 | with: 26 | node-version-file: package.json 27 | cache: pnpm 28 | - run: pnpm install && pnpm add -D @reporters/github 29 | - run: pnpm lint 30 | - run: node --test --test-reporter=@reporters/github --test-reporter-destination=stdout --test-reporter=spec --test-reporter-destination=stdout 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log 3 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | git stash -ku 2 | 3 | trap "git stash pop" EXIT 4 | 5 | pnpm test 6 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | enable-pre-post-scripts=true 2 | engine-strict=true 3 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # Changelog 3 | 4 | All notable changes to this project will be documented in this file. 5 | 6 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [Unreleased] 9 | 10 | ## [2.0.0] — 2024–07–30 11 | 12 | ### Changed 13 | 14 | - The plugin now requires `stylelint` version `16.8.0` or higher. 15 | 16 | ## [1.0.1] — 2023–12–23 17 | 18 | ### Fixed 19 | 20 | - Removed setting of a rule that does not exist in the plugin. 21 | 22 | ## [1.0.0] — 2023–12–23 23 | 24 | ### Added 25 | 26 | - Config file for Stylelint with: 27 | - 64 stylistic rules [removed in `stylelint-config-standard` 30.0.0](https://github.com/stylelint/stylelint-config-standard/releases/tag/30.0.0); 28 | - 1 stylistic rule [removed in `stylelint-config-recommended` 10.0.1](https://github.com/stylelint/stylelint-config-recommended/releases/tag/10.0.1). 29 | 30 | [Unreleased]: https://github.com/stylelint-stylistic/stylelint-config/compare/v2.0.0...HEAD 31 | [2.0.0]: https://github.com/stylelint-stylistic/stylelint-config/compare/v1.0.1...v2.0.0 32 | [1.0.1]: https://github.com/stylelint-stylistic/stylelint-config/compare/v1.0.0...v1.0.1 33 | [1.0.0]: https://github.com/stylelint-stylistic/stylelint-config/releases/tag/v1.0.0 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | =========== 3 | 4 | Copyright 2023 Sergey Artemov 5 | 6 | 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: 7 | 8 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 9 | 10 | 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. 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Stylelint Stylistic Config 2 | 3 | [![License: MIT][license-image]][license-url] 4 | [![Changelog][changelog-image]][changelog-url] 5 | [![NPM version][npm-image]][npm-url] 6 | [![Test Status][test-image]][test-url] 7 | 8 | > The stylistic shareable config for Stylelint. 9 | 10 | Use it to return to your config the 63 stylistic rules [removed in `stylelint-config-standard` 30.0.0](https://github.com/stylelint/stylelint-config-standard/releases/tag/30.0.0), and the one [removed in `stylelint-config-recommended` 10.0.1](https://github.com/stylelint/stylelint-config-recommended/releases/tag/10.0.1). 11 | 12 | To see the rules that this config uses, please read the [config itself](./.stylelintrc.json). 13 | 14 | ## Installation and usage 15 | 16 | Add `@stylistic/stylelint-config` and `stylelint` itself to your project: 17 | 18 | ```shell 19 | npm add -D @stylistic/stylelint-config stylelint 20 | ``` 21 | 22 | Set your `.stylelintrc.json` to: 23 | 24 | ```json 25 | { 26 | "extends": "@stylistic/stylelint-config" 27 | } 28 | ``` 29 | 30 | If you use `stylelint-config-recommended`, `stylelint-config-standard`, or some other config for syntax linting, then list the config names in an array (order matters): 31 | 32 | ```json 33 | { 34 | "extends": [ 35 | "stylelint-config-standard", 36 | "@stylistic/stylelint-config" 37 | ] 38 | } 39 | ``` 40 | 41 | ## Rule overrides 42 | 43 | If the value of a rule does not suit you, specify that rule in the `"rules"` section with the value you want: 44 | 45 | ```json 46 | { 47 | "extends": "@stylistic/stylelint-config", 48 | "rules": { 49 | "@stylistic/indentation": "tab" 50 | } 51 | } 52 | ``` 53 | 54 | You can turn off rules by setting its value to `null`. For example: 55 | 56 | ```json 57 | { 58 | "extends": "@stylistic/stylelint-config", 59 | "rules": { 60 | "@stylistic/max-line-length": null 61 | } 62 | } 63 | ``` 64 | 65 | In addition, the config is based on the [`@stylistic/stylelint-plugin`](https://www.npmjs.com/package/@stylistic/stylelint-plugin), which has all 76 stylistic rules [removed in Stylelint 16.0.0](https://github.com/stylelint/stylelint/releases/tag/16.0.0). You can use all these rules, not just the 65 configured in the config. For example: 66 | 67 | ```json 68 | { 69 | "extends": "@stylistic/stylelint-config", 70 | "rules": { 71 | "@stylistic/at-rule-name-newline-after": "always-multi-line" 72 | } 73 | } 74 | ``` 75 | 76 | Please refer to [Stylelint docs](https://stylelint.io/user-guide/get-started) for detailed info on using this linter. 77 | 78 | ## Need more? 79 | 80 | ESLint deprecates stylistic rules, too. But you can continue to use them thanks to [ESLint Stylistic](https://eslint.style). 81 | 82 | [license-url]: https://github.com/stylelint-stylistic/stylelint-config/blob/main/LICENSE.md 83 | [license-image]: https://img.shields.io/badge/License-MIT-limegreen.svg 84 | 85 | [changelog-url]: https://github.com/stylelint-stylistic/stylelint-config/blob/main/CHANGELOG.md 86 | [changelog-image]: https://img.shields.io/badge/Change-log-limegreen 87 | 88 | [npm-url]: https://npmjs.org/package/@stylistic/stylelint-config 89 | [npm-image]: https://badge.fury.io/js/@stylistic%2Fstylelint-config.svg 90 | 91 | [test-url]: https://github.com/stylelint-stylistic/stylelint-config/actions 92 | [test-image]: https://github.com/stylelint-stylistic/stylelint-config/actions/workflows/test.yaml/badge.svg?branch=main 93 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import { default as firefoxicEslintConfig, globals } from "@firefoxic/eslint-config" 2 | 3 | /** @type {import('eslint').Linter.Config[]} */ 4 | export default [ 5 | { 6 | languageOptions: { 7 | globals: { 8 | ...globals.nodeBuiltin, 9 | }, 10 | }, 11 | }, 12 | ...firefoxicEslintConfig, 13 | ] 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@stylistic/stylelint-config", 3 | "description": "The stylistic shareable config for Stylelint.", 4 | "version": "2.0.0", 5 | "license": "MIT", 6 | "author": { 7 | "name": "Sergey Artemov", 8 | "email": "firefoxic.dev@gmail.com" 9 | }, 10 | "homepage": "https://github.com/stylelint-stylistic/stylelint-config#readme", 11 | "bugs": { 12 | "url": "https://github.com/stylelint-stylistic/stylelint-config/issues" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/stylelint-stylistic/stylelint-config.git" 17 | }, 18 | "type": "module", 19 | "exports": "./stylelint.config.js", 20 | "files": [ 21 | "./stylelint.config.js" 22 | ], 23 | "engines": { 24 | "node": "^18.12 || >=20.9" 25 | }, 26 | "peerDependencies": { 27 | "stylelint": "^16.8.0" 28 | }, 29 | "dependencies": { 30 | "@stylistic/stylelint-plugin": "^3.0.1" 31 | }, 32 | "scripts": { 33 | "prepare": "husky", 34 | "lint": "eslint", 35 | "pretest": "pnpm lint", 36 | "test": "node --test", 37 | "test:coverage": "node --test --experimental-test-coverage", 38 | "test:watch": "node --test --watch", 39 | "preversion": "pnpm test", 40 | "version": "update-changelog", 41 | "postversion": "pnpm publish --provenance --access public --no-git-checks", 42 | "postpublish": "git push --follow-tags" 43 | }, 44 | "packageManager": "pnpm@9.7.1", 45 | "devDependencies": { 46 | "@firefoxic/eslint-config": "^3.0.0", 47 | "@firefoxic/update-changelog": "^0.2.0", 48 | "eslint": "^9.9.0", 49 | "husky": "^9.1.4", 50 | "stylelint": "^16.8.2" 51 | }, 52 | "keywords": [ 53 | "codeguide", 54 | "css", 55 | "csslint", 56 | "formatting", 57 | "lint", 58 | "linter", 59 | "style", 60 | "stylelint", 61 | "stylelint-config", 62 | "stylistic" 63 | ] 64 | } 65 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@stylistic/stylelint-plugin': 12 | specifier: ^3.0.1 13 | version: 3.0.1(stylelint@16.8.2) 14 | devDependencies: 15 | '@firefoxic/eslint-config': 16 | specifier: ^3.0.0 17 | version: 3.0.0(eslint@9.9.0) 18 | '@firefoxic/update-changelog': 19 | specifier: ^0.2.0 20 | version: 0.2.0 21 | eslint: 22 | specifier: ^9.9.0 23 | version: 9.9.0 24 | husky: 25 | specifier: ^9.1.4 26 | version: 9.1.4 27 | stylelint: 28 | specifier: ^16.8.2 29 | version: 16.8.2 30 | 31 | packages: 32 | 33 | '@babel/code-frame@7.24.7': 34 | resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} 35 | engines: {node: '>=6.9.0'} 36 | 37 | '@babel/helper-validator-identifier@7.24.7': 38 | resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} 39 | engines: {node: '>=6.9.0'} 40 | 41 | '@babel/highlight@7.24.7': 42 | resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} 43 | engines: {node: '>=6.9.0'} 44 | 45 | '@csstools/css-parser-algorithms@3.0.1': 46 | resolution: {integrity: sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==} 47 | engines: {node: '>=18'} 48 | peerDependencies: 49 | '@csstools/css-tokenizer': ^3.0.1 50 | 51 | '@csstools/css-tokenizer@3.0.1': 52 | resolution: {integrity: sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==} 53 | engines: {node: '>=18'} 54 | 55 | '@csstools/media-query-list-parser@3.0.1': 56 | resolution: {integrity: sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==} 57 | engines: {node: '>=18'} 58 | peerDependencies: 59 | '@csstools/css-parser-algorithms': ^3.0.1 60 | '@csstools/css-tokenizer': ^3.0.1 61 | 62 | '@csstools/selector-specificity@4.0.0': 63 | resolution: {integrity: sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==} 64 | engines: {node: '>=18'} 65 | peerDependencies: 66 | postcss-selector-parser: ^6.1.0 67 | 68 | '@dual-bundle/import-meta-resolve@4.1.0': 69 | resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} 70 | 71 | '@eslint-community/eslint-utils@4.4.0': 72 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 73 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 74 | peerDependencies: 75 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 76 | 77 | '@eslint-community/regexpp@4.11.0': 78 | resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} 79 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 80 | 81 | '@eslint/config-array@0.17.1': 82 | resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} 83 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 84 | 85 | '@eslint/eslintrc@3.1.0': 86 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 87 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 88 | 89 | '@eslint/js@9.9.0': 90 | resolution: {integrity: sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==} 91 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 92 | 93 | '@eslint/object-schema@2.1.4': 94 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 95 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 96 | 97 | '@firefoxic/eslint-config@3.0.0': 98 | resolution: {integrity: sha512-lR1OFs1l0R14zJDPM1UkWBTSj5DzZ+8Uw8YLlUNyiyLR6qcKE3xtkFM/PemaYdjt5pGGQnXTkr+y9NHdaLJw8A==} 99 | engines: {node: ^18.12 || >=20.9} 100 | peerDependencies: 101 | eslint: ^9.9.0 102 | 103 | '@firefoxic/update-changelog@0.2.0': 104 | resolution: {integrity: sha512-gaErin6RQlelHAbq8wk5E1Lqr5kdoYfq1U5M+3bzkLcslvlHuGAY62K7kfXm+HT2jJCNuyesZIfQ4V4/g1GthQ==} 105 | engines: {node: ^18.12 || >=20.9} 106 | hasBin: true 107 | 108 | '@humanwhocodes/module-importer@1.0.1': 109 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 110 | engines: {node: '>=12.22'} 111 | 112 | '@humanwhocodes/retry@0.3.0': 113 | resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} 114 | engines: {node: '>=18.18'} 115 | 116 | '@nodelib/fs.scandir@2.1.5': 117 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 118 | engines: {node: '>= 8'} 119 | 120 | '@nodelib/fs.stat@2.0.5': 121 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 122 | engines: {node: '>= 8'} 123 | 124 | '@nodelib/fs.walk@1.2.8': 125 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 126 | engines: {node: '>= 8'} 127 | 128 | '@stylistic/eslint-plugin-js@2.6.4': 129 | resolution: {integrity: sha512-kx1hS3xTvzxZLdr/DCU/dLBE++vcP97sHeEFX2QXhk1Ipa4K1rzPOLw1HCbf4mU3s+7kHP5eYpDe+QteEOFLug==} 130 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 131 | peerDependencies: 132 | eslint: '>=8.40.0' 133 | 134 | '@stylistic/stylelint-plugin@3.0.1': 135 | resolution: {integrity: sha512-j3mH8HSw2Rob/KJFWZ627w3CQ8gQqVHtzCdPeEffUg5vOgpz4rgrR+Xw2kU0OQCDcdW8Y1nKfdXKKjM5Rn8X0g==} 136 | engines: {node: ^18.12 || >=20.9} 137 | peerDependencies: 138 | stylelint: ^16.8.0 139 | 140 | '@types/eslint@9.6.0': 141 | resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} 142 | 143 | '@types/estree@1.0.5': 144 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 145 | 146 | '@types/json-schema@7.0.15': 147 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 148 | 149 | acorn-jsx@5.3.2: 150 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 151 | peerDependencies: 152 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 153 | 154 | acorn@8.12.1: 155 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 156 | engines: {node: '>=0.4.0'} 157 | hasBin: true 158 | 159 | ajv@6.12.6: 160 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 161 | 162 | ajv@8.17.1: 163 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 164 | 165 | ansi-regex@5.0.1: 166 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 167 | engines: {node: '>=8'} 168 | 169 | ansi-regex@6.0.1: 170 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 171 | engines: {node: '>=12'} 172 | 173 | ansi-styles@3.2.1: 174 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 175 | engines: {node: '>=4'} 176 | 177 | ansi-styles@4.3.0: 178 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 179 | engines: {node: '>=8'} 180 | 181 | argparse@2.0.1: 182 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 183 | 184 | array-union@2.1.0: 185 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 186 | engines: {node: '>=8'} 187 | 188 | astral-regex@2.0.0: 189 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 190 | engines: {node: '>=8'} 191 | 192 | balanced-match@1.0.2: 193 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 194 | 195 | balanced-match@2.0.0: 196 | resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} 197 | 198 | brace-expansion@1.1.11: 199 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 200 | 201 | braces@3.0.3: 202 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 203 | engines: {node: '>=8'} 204 | 205 | callsites@3.1.0: 206 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 207 | engines: {node: '>=6'} 208 | 209 | chalk@2.4.2: 210 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 211 | engines: {node: '>=4'} 212 | 213 | chalk@4.1.2: 214 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 215 | engines: {node: '>=10'} 216 | 217 | color-convert@1.9.3: 218 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 219 | 220 | color-convert@2.0.1: 221 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 222 | engines: {node: '>=7.0.0'} 223 | 224 | color-name@1.1.3: 225 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 226 | 227 | color-name@1.1.4: 228 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 229 | 230 | colord@2.9.3: 231 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} 232 | 233 | concat-map@0.0.1: 234 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 235 | 236 | cosmiconfig@9.0.0: 237 | resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} 238 | engines: {node: '>=14'} 239 | peerDependencies: 240 | typescript: '>=4.9.5' 241 | peerDependenciesMeta: 242 | typescript: 243 | optional: true 244 | 245 | cross-spawn@7.0.3: 246 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 247 | engines: {node: '>= 8'} 248 | 249 | css-functions-list@3.2.2: 250 | resolution: {integrity: sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==} 251 | engines: {node: '>=12 || >=16'} 252 | 253 | css-tree@2.3.1: 254 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 255 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 256 | 257 | cssesc@3.0.0: 258 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 259 | engines: {node: '>=4'} 260 | hasBin: true 261 | 262 | debug@4.3.6: 263 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} 264 | engines: {node: '>=6.0'} 265 | peerDependencies: 266 | supports-color: '*' 267 | peerDependenciesMeta: 268 | supports-color: 269 | optional: true 270 | 271 | deep-is@0.1.4: 272 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 273 | 274 | dir-glob@3.0.1: 275 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 276 | engines: {node: '>=8'} 277 | 278 | emoji-regex@8.0.0: 279 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 280 | 281 | env-paths@2.2.1: 282 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 283 | engines: {node: '>=6'} 284 | 285 | error-ex@1.3.2: 286 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 287 | 288 | escape-string-regexp@1.0.5: 289 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 290 | engines: {node: '>=0.8.0'} 291 | 292 | escape-string-regexp@4.0.0: 293 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 294 | engines: {node: '>=10'} 295 | 296 | eslint-plugin-prefer-let@4.0.0: 297 | resolution: {integrity: sha512-X4ep5PMO1320HKaNC9DM5+p6XvOhwv+RcqGjhv3aiw9iAtHhiFtdIUB5l0Zya0iM22ys2BGKzrNI9Xpw/ZHooQ==} 298 | engines: {node: '>=0.10.0'} 299 | 300 | eslint-scope@8.0.2: 301 | resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} 302 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 303 | 304 | eslint-visitor-keys@3.4.3: 305 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 306 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 307 | 308 | eslint-visitor-keys@4.0.0: 309 | resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} 310 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 311 | 312 | eslint@9.9.0: 313 | resolution: {integrity: sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==} 314 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 315 | hasBin: true 316 | peerDependencies: 317 | jiti: '*' 318 | peerDependenciesMeta: 319 | jiti: 320 | optional: true 321 | 322 | espree@10.1.0: 323 | resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} 324 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 325 | 326 | esquery@1.6.0: 327 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 328 | engines: {node: '>=0.10'} 329 | 330 | esrecurse@4.3.0: 331 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 332 | engines: {node: '>=4.0'} 333 | 334 | estraverse@5.3.0: 335 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 336 | engines: {node: '>=4.0'} 337 | 338 | esutils@2.0.3: 339 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 340 | engines: {node: '>=0.10.0'} 341 | 342 | fast-deep-equal@3.1.3: 343 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 344 | 345 | fast-glob@3.3.2: 346 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 347 | engines: {node: '>=8.6.0'} 348 | 349 | fast-json-stable-stringify@2.1.0: 350 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 351 | 352 | fast-levenshtein@2.0.6: 353 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 354 | 355 | fast-uri@3.0.1: 356 | resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} 357 | 358 | fastest-levenshtein@1.0.16: 359 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} 360 | engines: {node: '>= 4.9.1'} 361 | 362 | fastq@1.17.1: 363 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 364 | 365 | file-entry-cache@8.0.0: 366 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 367 | engines: {node: '>=16.0.0'} 368 | 369 | file-entry-cache@9.0.0: 370 | resolution: {integrity: sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==} 371 | engines: {node: '>=18'} 372 | 373 | fill-range@7.1.1: 374 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 375 | engines: {node: '>=8'} 376 | 377 | find-up@5.0.0: 378 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 379 | engines: {node: '>=10'} 380 | 381 | flat-cache@4.0.1: 382 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 383 | engines: {node: '>=16'} 384 | 385 | flat-cache@5.0.0: 386 | resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==} 387 | engines: {node: '>=18'} 388 | 389 | flatted@3.3.1: 390 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 391 | 392 | glob-parent@5.1.2: 393 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 394 | engines: {node: '>= 6'} 395 | 396 | glob-parent@6.0.2: 397 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 398 | engines: {node: '>=10.13.0'} 399 | 400 | global-modules@2.0.0: 401 | resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} 402 | engines: {node: '>=6'} 403 | 404 | global-prefix@3.0.0: 405 | resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} 406 | engines: {node: '>=6'} 407 | 408 | globals@14.0.0: 409 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 410 | engines: {node: '>=18'} 411 | 412 | globals@15.9.0: 413 | resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} 414 | engines: {node: '>=18'} 415 | 416 | globby@11.1.0: 417 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 418 | engines: {node: '>=10'} 419 | 420 | globjoin@0.1.4: 421 | resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} 422 | 423 | has-flag@3.0.0: 424 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 425 | engines: {node: '>=4'} 426 | 427 | has-flag@4.0.0: 428 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 429 | engines: {node: '>=8'} 430 | 431 | html-tags@3.3.1: 432 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} 433 | engines: {node: '>=8'} 434 | 435 | husky@9.1.4: 436 | resolution: {integrity: sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==} 437 | engines: {node: '>=18'} 438 | hasBin: true 439 | 440 | ignore@5.3.2: 441 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 442 | engines: {node: '>= 4'} 443 | 444 | import-fresh@3.3.0: 445 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 446 | engines: {node: '>=6'} 447 | 448 | imurmurhash@0.1.4: 449 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 450 | engines: {node: '>=0.8.19'} 451 | 452 | ini@1.3.8: 453 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 454 | 455 | is-arrayish@0.2.1: 456 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 457 | 458 | is-extglob@2.1.1: 459 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 460 | engines: {node: '>=0.10.0'} 461 | 462 | is-fullwidth-code-point@3.0.0: 463 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 464 | engines: {node: '>=8'} 465 | 466 | is-glob@4.0.3: 467 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 468 | engines: {node: '>=0.10.0'} 469 | 470 | is-number@7.0.0: 471 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 472 | engines: {node: '>=0.12.0'} 473 | 474 | is-path-inside@3.0.3: 475 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 476 | engines: {node: '>=8'} 477 | 478 | is-plain-object@5.0.0: 479 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} 480 | engines: {node: '>=0.10.0'} 481 | 482 | isexe@2.0.0: 483 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 484 | 485 | js-tokens@4.0.0: 486 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 487 | 488 | js-yaml@4.1.0: 489 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 490 | hasBin: true 491 | 492 | json-buffer@3.0.1: 493 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 494 | 495 | json-parse-even-better-errors@2.3.1: 496 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 497 | 498 | json-schema-traverse@0.4.1: 499 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 500 | 501 | json-schema-traverse@1.0.0: 502 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 503 | 504 | json-stable-stringify-without-jsonify@1.0.1: 505 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 506 | 507 | keyv@4.5.4: 508 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 509 | 510 | kind-of@6.0.3: 511 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 512 | engines: {node: '>=0.10.0'} 513 | 514 | known-css-properties@0.34.0: 515 | resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} 516 | 517 | levn@0.4.1: 518 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 519 | engines: {node: '>= 0.8.0'} 520 | 521 | lines-and-columns@1.2.4: 522 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 523 | 524 | locate-path@6.0.0: 525 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 526 | engines: {node: '>=10'} 527 | 528 | lodash.merge@4.6.2: 529 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 530 | 531 | lodash.truncate@4.4.2: 532 | resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} 533 | 534 | mathml-tag-names@2.1.3: 535 | resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} 536 | 537 | mdn-data@2.0.30: 538 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 539 | 540 | meow@13.2.0: 541 | resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} 542 | engines: {node: '>=18'} 543 | 544 | merge2@1.4.1: 545 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 546 | engines: {node: '>= 8'} 547 | 548 | micromatch@4.0.7: 549 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} 550 | engines: {node: '>=8.6'} 551 | 552 | minimatch@3.1.2: 553 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 554 | 555 | ms@2.1.2: 556 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 557 | 558 | nanoid@3.3.7: 559 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 560 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 561 | hasBin: true 562 | 563 | natural-compare@1.4.0: 564 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 565 | 566 | normalize-path@3.0.0: 567 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 568 | engines: {node: '>=0.10.0'} 569 | 570 | optionator@0.9.4: 571 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 572 | engines: {node: '>= 0.8.0'} 573 | 574 | p-limit@3.1.0: 575 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 576 | engines: {node: '>=10'} 577 | 578 | p-locate@5.0.0: 579 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 580 | engines: {node: '>=10'} 581 | 582 | parent-module@1.0.1: 583 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 584 | engines: {node: '>=6'} 585 | 586 | parse-json@5.2.0: 587 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 588 | engines: {node: '>=8'} 589 | 590 | path-exists@4.0.0: 591 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 592 | engines: {node: '>=8'} 593 | 594 | path-key@3.1.1: 595 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 596 | engines: {node: '>=8'} 597 | 598 | path-type@4.0.0: 599 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 600 | engines: {node: '>=8'} 601 | 602 | picocolors@1.0.1: 603 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 604 | 605 | picomatch@2.3.1: 606 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 607 | engines: {node: '>=8.6'} 608 | 609 | postcss-resolve-nested-selector@0.1.6: 610 | resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} 611 | 612 | postcss-safe-parser@7.0.0: 613 | resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} 614 | engines: {node: '>=18.0'} 615 | peerDependencies: 616 | postcss: ^8.4.31 617 | 618 | postcss-selector-parser@6.1.2: 619 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 620 | engines: {node: '>=4'} 621 | 622 | postcss-value-parser@4.2.0: 623 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 624 | 625 | postcss@8.4.41: 626 | resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} 627 | engines: {node: ^10 || ^12 || >=14} 628 | 629 | prelude-ls@1.2.1: 630 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 631 | engines: {node: '>= 0.8.0'} 632 | 633 | punycode@2.3.1: 634 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 635 | engines: {node: '>=6'} 636 | 637 | queue-microtask@1.2.3: 638 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 639 | 640 | require-from-string@2.0.2: 641 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 642 | engines: {node: '>=0.10.0'} 643 | 644 | requireindex@1.2.0: 645 | resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} 646 | engines: {node: '>=0.10.5'} 647 | 648 | resolve-from@4.0.0: 649 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 650 | engines: {node: '>=4'} 651 | 652 | resolve-from@5.0.0: 653 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 654 | engines: {node: '>=8'} 655 | 656 | reusify@1.0.4: 657 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 658 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 659 | 660 | run-parallel@1.2.0: 661 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 662 | 663 | shebang-command@2.0.0: 664 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 665 | engines: {node: '>=8'} 666 | 667 | shebang-regex@3.0.0: 668 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 669 | engines: {node: '>=8'} 670 | 671 | signal-exit@4.1.0: 672 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 673 | engines: {node: '>=14'} 674 | 675 | slash@3.0.0: 676 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 677 | engines: {node: '>=8'} 678 | 679 | slice-ansi@4.0.0: 680 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 681 | engines: {node: '>=10'} 682 | 683 | source-map-js@1.2.0: 684 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 685 | engines: {node: '>=0.10.0'} 686 | 687 | string-width@4.2.3: 688 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 689 | engines: {node: '>=8'} 690 | 691 | strip-ansi@6.0.1: 692 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 693 | engines: {node: '>=8'} 694 | 695 | strip-ansi@7.1.0: 696 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 697 | engines: {node: '>=12'} 698 | 699 | strip-json-comments@3.1.1: 700 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 701 | engines: {node: '>=8'} 702 | 703 | style-search@0.1.0: 704 | resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} 705 | 706 | stylelint@16.8.2: 707 | resolution: {integrity: sha512-fInKATippQhcSm7AB+T32GpI+626yohrg33GkFT/5jzliUw5qhlwZq2UQQwgl3HsHrf09oeARi0ZwgY/UWEv9A==} 708 | engines: {node: '>=18.12.0'} 709 | hasBin: true 710 | 711 | supports-color@5.5.0: 712 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 713 | engines: {node: '>=4'} 714 | 715 | supports-color@7.2.0: 716 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 717 | engines: {node: '>=8'} 718 | 719 | supports-hyperlinks@3.0.0: 720 | resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==} 721 | engines: {node: '>=14.18'} 722 | 723 | svg-tags@1.0.0: 724 | resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} 725 | 726 | table@6.8.2: 727 | resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} 728 | engines: {node: '>=10.0.0'} 729 | 730 | text-table@0.2.0: 731 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 732 | 733 | to-regex-range@5.0.1: 734 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 735 | engines: {node: '>=8.0'} 736 | 737 | type-check@0.4.0: 738 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 739 | engines: {node: '>= 0.8.0'} 740 | 741 | uri-js@4.4.1: 742 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 743 | 744 | util-deprecate@1.0.2: 745 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 746 | 747 | which@1.3.1: 748 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 749 | hasBin: true 750 | 751 | which@2.0.2: 752 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 753 | engines: {node: '>= 8'} 754 | hasBin: true 755 | 756 | word-wrap@1.2.5: 757 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 758 | engines: {node: '>=0.10.0'} 759 | 760 | write-file-atomic@5.0.1: 761 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} 762 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 763 | 764 | yocto-queue@0.1.0: 765 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 766 | engines: {node: '>=10'} 767 | 768 | snapshots: 769 | 770 | '@babel/code-frame@7.24.7': 771 | dependencies: 772 | '@babel/highlight': 7.24.7 773 | picocolors: 1.0.1 774 | 775 | '@babel/helper-validator-identifier@7.24.7': {} 776 | 777 | '@babel/highlight@7.24.7': 778 | dependencies: 779 | '@babel/helper-validator-identifier': 7.24.7 780 | chalk: 2.4.2 781 | js-tokens: 4.0.0 782 | picocolors: 1.0.1 783 | 784 | '@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1)': 785 | dependencies: 786 | '@csstools/css-tokenizer': 3.0.1 787 | 788 | '@csstools/css-tokenizer@3.0.1': {} 789 | 790 | '@csstools/media-query-list-parser@3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1)': 791 | dependencies: 792 | '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) 793 | '@csstools/css-tokenizer': 3.0.1 794 | 795 | '@csstools/selector-specificity@4.0.0(postcss-selector-parser@6.1.2)': 796 | dependencies: 797 | postcss-selector-parser: 6.1.2 798 | 799 | '@dual-bundle/import-meta-resolve@4.1.0': {} 800 | 801 | '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0)': 802 | dependencies: 803 | eslint: 9.9.0 804 | eslint-visitor-keys: 3.4.3 805 | 806 | '@eslint-community/regexpp@4.11.0': {} 807 | 808 | '@eslint/config-array@0.17.1': 809 | dependencies: 810 | '@eslint/object-schema': 2.1.4 811 | debug: 4.3.6 812 | minimatch: 3.1.2 813 | transitivePeerDependencies: 814 | - supports-color 815 | 816 | '@eslint/eslintrc@3.1.0': 817 | dependencies: 818 | ajv: 6.12.6 819 | debug: 4.3.6 820 | espree: 10.1.0 821 | globals: 14.0.0 822 | ignore: 5.3.2 823 | import-fresh: 3.3.0 824 | js-yaml: 4.1.0 825 | minimatch: 3.1.2 826 | strip-json-comments: 3.1.1 827 | transitivePeerDependencies: 828 | - supports-color 829 | 830 | '@eslint/js@9.9.0': {} 831 | 832 | '@eslint/object-schema@2.1.4': {} 833 | 834 | '@firefoxic/eslint-config@3.0.0(eslint@9.9.0)': 835 | dependencies: 836 | '@eslint/js': 9.9.0 837 | '@stylistic/eslint-plugin-js': 2.6.4(eslint@9.9.0) 838 | eslint: 9.9.0 839 | eslint-plugin-prefer-let: 4.0.0 840 | globals: 15.9.0 841 | 842 | '@firefoxic/update-changelog@0.2.0': {} 843 | 844 | '@humanwhocodes/module-importer@1.0.1': {} 845 | 846 | '@humanwhocodes/retry@0.3.0': {} 847 | 848 | '@nodelib/fs.scandir@2.1.5': 849 | dependencies: 850 | '@nodelib/fs.stat': 2.0.5 851 | run-parallel: 1.2.0 852 | 853 | '@nodelib/fs.stat@2.0.5': {} 854 | 855 | '@nodelib/fs.walk@1.2.8': 856 | dependencies: 857 | '@nodelib/fs.scandir': 2.1.5 858 | fastq: 1.17.1 859 | 860 | '@stylistic/eslint-plugin-js@2.6.4(eslint@9.9.0)': 861 | dependencies: 862 | '@types/eslint': 9.6.0 863 | acorn: 8.12.1 864 | eslint: 9.9.0 865 | eslint-visitor-keys: 4.0.0 866 | espree: 10.1.0 867 | 868 | '@stylistic/stylelint-plugin@3.0.1(stylelint@16.8.2)': 869 | dependencies: 870 | '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) 871 | '@csstools/css-tokenizer': 3.0.1 872 | '@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1) 873 | is-plain-object: 5.0.0 874 | postcss-selector-parser: 6.1.2 875 | postcss-value-parser: 4.2.0 876 | style-search: 0.1.0 877 | stylelint: 16.8.2 878 | 879 | '@types/eslint@9.6.0': 880 | dependencies: 881 | '@types/estree': 1.0.5 882 | '@types/json-schema': 7.0.15 883 | 884 | '@types/estree@1.0.5': {} 885 | 886 | '@types/json-schema@7.0.15': {} 887 | 888 | acorn-jsx@5.3.2(acorn@8.12.1): 889 | dependencies: 890 | acorn: 8.12.1 891 | 892 | acorn@8.12.1: {} 893 | 894 | ajv@6.12.6: 895 | dependencies: 896 | fast-deep-equal: 3.1.3 897 | fast-json-stable-stringify: 2.1.0 898 | json-schema-traverse: 0.4.1 899 | uri-js: 4.4.1 900 | 901 | ajv@8.17.1: 902 | dependencies: 903 | fast-deep-equal: 3.1.3 904 | fast-uri: 3.0.1 905 | json-schema-traverse: 1.0.0 906 | require-from-string: 2.0.2 907 | 908 | ansi-regex@5.0.1: {} 909 | 910 | ansi-regex@6.0.1: {} 911 | 912 | ansi-styles@3.2.1: 913 | dependencies: 914 | color-convert: 1.9.3 915 | 916 | ansi-styles@4.3.0: 917 | dependencies: 918 | color-convert: 2.0.1 919 | 920 | argparse@2.0.1: {} 921 | 922 | array-union@2.1.0: {} 923 | 924 | astral-regex@2.0.0: {} 925 | 926 | balanced-match@1.0.2: {} 927 | 928 | balanced-match@2.0.0: {} 929 | 930 | brace-expansion@1.1.11: 931 | dependencies: 932 | balanced-match: 1.0.2 933 | concat-map: 0.0.1 934 | 935 | braces@3.0.3: 936 | dependencies: 937 | fill-range: 7.1.1 938 | 939 | callsites@3.1.0: {} 940 | 941 | chalk@2.4.2: 942 | dependencies: 943 | ansi-styles: 3.2.1 944 | escape-string-regexp: 1.0.5 945 | supports-color: 5.5.0 946 | 947 | chalk@4.1.2: 948 | dependencies: 949 | ansi-styles: 4.3.0 950 | supports-color: 7.2.0 951 | 952 | color-convert@1.9.3: 953 | dependencies: 954 | color-name: 1.1.3 955 | 956 | color-convert@2.0.1: 957 | dependencies: 958 | color-name: 1.1.4 959 | 960 | color-name@1.1.3: {} 961 | 962 | color-name@1.1.4: {} 963 | 964 | colord@2.9.3: {} 965 | 966 | concat-map@0.0.1: {} 967 | 968 | cosmiconfig@9.0.0: 969 | dependencies: 970 | env-paths: 2.2.1 971 | import-fresh: 3.3.0 972 | js-yaml: 4.1.0 973 | parse-json: 5.2.0 974 | 975 | cross-spawn@7.0.3: 976 | dependencies: 977 | path-key: 3.1.1 978 | shebang-command: 2.0.0 979 | which: 2.0.2 980 | 981 | css-functions-list@3.2.2: {} 982 | 983 | css-tree@2.3.1: 984 | dependencies: 985 | mdn-data: 2.0.30 986 | source-map-js: 1.2.0 987 | 988 | cssesc@3.0.0: {} 989 | 990 | debug@4.3.6: 991 | dependencies: 992 | ms: 2.1.2 993 | 994 | deep-is@0.1.4: {} 995 | 996 | dir-glob@3.0.1: 997 | dependencies: 998 | path-type: 4.0.0 999 | 1000 | emoji-regex@8.0.0: {} 1001 | 1002 | env-paths@2.2.1: {} 1003 | 1004 | error-ex@1.3.2: 1005 | dependencies: 1006 | is-arrayish: 0.2.1 1007 | 1008 | escape-string-regexp@1.0.5: {} 1009 | 1010 | escape-string-regexp@4.0.0: {} 1011 | 1012 | eslint-plugin-prefer-let@4.0.0: 1013 | dependencies: 1014 | requireindex: 1.2.0 1015 | 1016 | eslint-scope@8.0.2: 1017 | dependencies: 1018 | esrecurse: 4.3.0 1019 | estraverse: 5.3.0 1020 | 1021 | eslint-visitor-keys@3.4.3: {} 1022 | 1023 | eslint-visitor-keys@4.0.0: {} 1024 | 1025 | eslint@9.9.0: 1026 | dependencies: 1027 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0) 1028 | '@eslint-community/regexpp': 4.11.0 1029 | '@eslint/config-array': 0.17.1 1030 | '@eslint/eslintrc': 3.1.0 1031 | '@eslint/js': 9.9.0 1032 | '@humanwhocodes/module-importer': 1.0.1 1033 | '@humanwhocodes/retry': 0.3.0 1034 | '@nodelib/fs.walk': 1.2.8 1035 | ajv: 6.12.6 1036 | chalk: 4.1.2 1037 | cross-spawn: 7.0.3 1038 | debug: 4.3.6 1039 | escape-string-regexp: 4.0.0 1040 | eslint-scope: 8.0.2 1041 | eslint-visitor-keys: 4.0.0 1042 | espree: 10.1.0 1043 | esquery: 1.6.0 1044 | esutils: 2.0.3 1045 | fast-deep-equal: 3.1.3 1046 | file-entry-cache: 8.0.0 1047 | find-up: 5.0.0 1048 | glob-parent: 6.0.2 1049 | ignore: 5.3.2 1050 | imurmurhash: 0.1.4 1051 | is-glob: 4.0.3 1052 | is-path-inside: 3.0.3 1053 | json-stable-stringify-without-jsonify: 1.0.1 1054 | levn: 0.4.1 1055 | lodash.merge: 4.6.2 1056 | minimatch: 3.1.2 1057 | natural-compare: 1.4.0 1058 | optionator: 0.9.4 1059 | strip-ansi: 6.0.1 1060 | text-table: 0.2.0 1061 | transitivePeerDependencies: 1062 | - supports-color 1063 | 1064 | espree@10.1.0: 1065 | dependencies: 1066 | acorn: 8.12.1 1067 | acorn-jsx: 5.3.2(acorn@8.12.1) 1068 | eslint-visitor-keys: 4.0.0 1069 | 1070 | esquery@1.6.0: 1071 | dependencies: 1072 | estraverse: 5.3.0 1073 | 1074 | esrecurse@4.3.0: 1075 | dependencies: 1076 | estraverse: 5.3.0 1077 | 1078 | estraverse@5.3.0: {} 1079 | 1080 | esutils@2.0.3: {} 1081 | 1082 | fast-deep-equal@3.1.3: {} 1083 | 1084 | fast-glob@3.3.2: 1085 | dependencies: 1086 | '@nodelib/fs.stat': 2.0.5 1087 | '@nodelib/fs.walk': 1.2.8 1088 | glob-parent: 5.1.2 1089 | merge2: 1.4.1 1090 | micromatch: 4.0.7 1091 | 1092 | fast-json-stable-stringify@2.1.0: {} 1093 | 1094 | fast-levenshtein@2.0.6: {} 1095 | 1096 | fast-uri@3.0.1: {} 1097 | 1098 | fastest-levenshtein@1.0.16: {} 1099 | 1100 | fastq@1.17.1: 1101 | dependencies: 1102 | reusify: 1.0.4 1103 | 1104 | file-entry-cache@8.0.0: 1105 | dependencies: 1106 | flat-cache: 4.0.1 1107 | 1108 | file-entry-cache@9.0.0: 1109 | dependencies: 1110 | flat-cache: 5.0.0 1111 | 1112 | fill-range@7.1.1: 1113 | dependencies: 1114 | to-regex-range: 5.0.1 1115 | 1116 | find-up@5.0.0: 1117 | dependencies: 1118 | locate-path: 6.0.0 1119 | path-exists: 4.0.0 1120 | 1121 | flat-cache@4.0.1: 1122 | dependencies: 1123 | flatted: 3.3.1 1124 | keyv: 4.5.4 1125 | 1126 | flat-cache@5.0.0: 1127 | dependencies: 1128 | flatted: 3.3.1 1129 | keyv: 4.5.4 1130 | 1131 | flatted@3.3.1: {} 1132 | 1133 | glob-parent@5.1.2: 1134 | dependencies: 1135 | is-glob: 4.0.3 1136 | 1137 | glob-parent@6.0.2: 1138 | dependencies: 1139 | is-glob: 4.0.3 1140 | 1141 | global-modules@2.0.0: 1142 | dependencies: 1143 | global-prefix: 3.0.0 1144 | 1145 | global-prefix@3.0.0: 1146 | dependencies: 1147 | ini: 1.3.8 1148 | kind-of: 6.0.3 1149 | which: 1.3.1 1150 | 1151 | globals@14.0.0: {} 1152 | 1153 | globals@15.9.0: {} 1154 | 1155 | globby@11.1.0: 1156 | dependencies: 1157 | array-union: 2.1.0 1158 | dir-glob: 3.0.1 1159 | fast-glob: 3.3.2 1160 | ignore: 5.3.2 1161 | merge2: 1.4.1 1162 | slash: 3.0.0 1163 | 1164 | globjoin@0.1.4: {} 1165 | 1166 | has-flag@3.0.0: {} 1167 | 1168 | has-flag@4.0.0: {} 1169 | 1170 | html-tags@3.3.1: {} 1171 | 1172 | husky@9.1.4: {} 1173 | 1174 | ignore@5.3.2: {} 1175 | 1176 | import-fresh@3.3.0: 1177 | dependencies: 1178 | parent-module: 1.0.1 1179 | resolve-from: 4.0.0 1180 | 1181 | imurmurhash@0.1.4: {} 1182 | 1183 | ini@1.3.8: {} 1184 | 1185 | is-arrayish@0.2.1: {} 1186 | 1187 | is-extglob@2.1.1: {} 1188 | 1189 | is-fullwidth-code-point@3.0.0: {} 1190 | 1191 | is-glob@4.0.3: 1192 | dependencies: 1193 | is-extglob: 2.1.1 1194 | 1195 | is-number@7.0.0: {} 1196 | 1197 | is-path-inside@3.0.3: {} 1198 | 1199 | is-plain-object@5.0.0: {} 1200 | 1201 | isexe@2.0.0: {} 1202 | 1203 | js-tokens@4.0.0: {} 1204 | 1205 | js-yaml@4.1.0: 1206 | dependencies: 1207 | argparse: 2.0.1 1208 | 1209 | json-buffer@3.0.1: {} 1210 | 1211 | json-parse-even-better-errors@2.3.1: {} 1212 | 1213 | json-schema-traverse@0.4.1: {} 1214 | 1215 | json-schema-traverse@1.0.0: {} 1216 | 1217 | json-stable-stringify-without-jsonify@1.0.1: {} 1218 | 1219 | keyv@4.5.4: 1220 | dependencies: 1221 | json-buffer: 3.0.1 1222 | 1223 | kind-of@6.0.3: {} 1224 | 1225 | known-css-properties@0.34.0: {} 1226 | 1227 | levn@0.4.1: 1228 | dependencies: 1229 | prelude-ls: 1.2.1 1230 | type-check: 0.4.0 1231 | 1232 | lines-and-columns@1.2.4: {} 1233 | 1234 | locate-path@6.0.0: 1235 | dependencies: 1236 | p-locate: 5.0.0 1237 | 1238 | lodash.merge@4.6.2: {} 1239 | 1240 | lodash.truncate@4.4.2: {} 1241 | 1242 | mathml-tag-names@2.1.3: {} 1243 | 1244 | mdn-data@2.0.30: {} 1245 | 1246 | meow@13.2.0: {} 1247 | 1248 | merge2@1.4.1: {} 1249 | 1250 | micromatch@4.0.7: 1251 | dependencies: 1252 | braces: 3.0.3 1253 | picomatch: 2.3.1 1254 | 1255 | minimatch@3.1.2: 1256 | dependencies: 1257 | brace-expansion: 1.1.11 1258 | 1259 | ms@2.1.2: {} 1260 | 1261 | nanoid@3.3.7: {} 1262 | 1263 | natural-compare@1.4.0: {} 1264 | 1265 | normalize-path@3.0.0: {} 1266 | 1267 | optionator@0.9.4: 1268 | dependencies: 1269 | deep-is: 0.1.4 1270 | fast-levenshtein: 2.0.6 1271 | levn: 0.4.1 1272 | prelude-ls: 1.2.1 1273 | type-check: 0.4.0 1274 | word-wrap: 1.2.5 1275 | 1276 | p-limit@3.1.0: 1277 | dependencies: 1278 | yocto-queue: 0.1.0 1279 | 1280 | p-locate@5.0.0: 1281 | dependencies: 1282 | p-limit: 3.1.0 1283 | 1284 | parent-module@1.0.1: 1285 | dependencies: 1286 | callsites: 3.1.0 1287 | 1288 | parse-json@5.2.0: 1289 | dependencies: 1290 | '@babel/code-frame': 7.24.7 1291 | error-ex: 1.3.2 1292 | json-parse-even-better-errors: 2.3.1 1293 | lines-and-columns: 1.2.4 1294 | 1295 | path-exists@4.0.0: {} 1296 | 1297 | path-key@3.1.1: {} 1298 | 1299 | path-type@4.0.0: {} 1300 | 1301 | picocolors@1.0.1: {} 1302 | 1303 | picomatch@2.3.1: {} 1304 | 1305 | postcss-resolve-nested-selector@0.1.6: {} 1306 | 1307 | postcss-safe-parser@7.0.0(postcss@8.4.41): 1308 | dependencies: 1309 | postcss: 8.4.41 1310 | 1311 | postcss-selector-parser@6.1.2: 1312 | dependencies: 1313 | cssesc: 3.0.0 1314 | util-deprecate: 1.0.2 1315 | 1316 | postcss-value-parser@4.2.0: {} 1317 | 1318 | postcss@8.4.41: 1319 | dependencies: 1320 | nanoid: 3.3.7 1321 | picocolors: 1.0.1 1322 | source-map-js: 1.2.0 1323 | 1324 | prelude-ls@1.2.1: {} 1325 | 1326 | punycode@2.3.1: {} 1327 | 1328 | queue-microtask@1.2.3: {} 1329 | 1330 | require-from-string@2.0.2: {} 1331 | 1332 | requireindex@1.2.0: {} 1333 | 1334 | resolve-from@4.0.0: {} 1335 | 1336 | resolve-from@5.0.0: {} 1337 | 1338 | reusify@1.0.4: {} 1339 | 1340 | run-parallel@1.2.0: 1341 | dependencies: 1342 | queue-microtask: 1.2.3 1343 | 1344 | shebang-command@2.0.0: 1345 | dependencies: 1346 | shebang-regex: 3.0.0 1347 | 1348 | shebang-regex@3.0.0: {} 1349 | 1350 | signal-exit@4.1.0: {} 1351 | 1352 | slash@3.0.0: {} 1353 | 1354 | slice-ansi@4.0.0: 1355 | dependencies: 1356 | ansi-styles: 4.3.0 1357 | astral-regex: 2.0.0 1358 | is-fullwidth-code-point: 3.0.0 1359 | 1360 | source-map-js@1.2.0: {} 1361 | 1362 | string-width@4.2.3: 1363 | dependencies: 1364 | emoji-regex: 8.0.0 1365 | is-fullwidth-code-point: 3.0.0 1366 | strip-ansi: 6.0.1 1367 | 1368 | strip-ansi@6.0.1: 1369 | dependencies: 1370 | ansi-regex: 5.0.1 1371 | 1372 | strip-ansi@7.1.0: 1373 | dependencies: 1374 | ansi-regex: 6.0.1 1375 | 1376 | strip-json-comments@3.1.1: {} 1377 | 1378 | style-search@0.1.0: {} 1379 | 1380 | stylelint@16.8.2: 1381 | dependencies: 1382 | '@csstools/css-parser-algorithms': 3.0.1(@csstools/css-tokenizer@3.0.1) 1383 | '@csstools/css-tokenizer': 3.0.1 1384 | '@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.1(@csstools/css-tokenizer@3.0.1))(@csstools/css-tokenizer@3.0.1) 1385 | '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) 1386 | '@dual-bundle/import-meta-resolve': 4.1.0 1387 | balanced-match: 2.0.0 1388 | colord: 2.9.3 1389 | cosmiconfig: 9.0.0 1390 | css-functions-list: 3.2.2 1391 | css-tree: 2.3.1 1392 | debug: 4.3.6 1393 | fast-glob: 3.3.2 1394 | fastest-levenshtein: 1.0.16 1395 | file-entry-cache: 9.0.0 1396 | global-modules: 2.0.0 1397 | globby: 11.1.0 1398 | globjoin: 0.1.4 1399 | html-tags: 3.3.1 1400 | ignore: 5.3.2 1401 | imurmurhash: 0.1.4 1402 | is-plain-object: 5.0.0 1403 | known-css-properties: 0.34.0 1404 | mathml-tag-names: 2.1.3 1405 | meow: 13.2.0 1406 | micromatch: 4.0.7 1407 | normalize-path: 3.0.0 1408 | picocolors: 1.0.1 1409 | postcss: 8.4.41 1410 | postcss-resolve-nested-selector: 0.1.6 1411 | postcss-safe-parser: 7.0.0(postcss@8.4.41) 1412 | postcss-selector-parser: 6.1.2 1413 | postcss-value-parser: 4.2.0 1414 | resolve-from: 5.0.0 1415 | string-width: 4.2.3 1416 | strip-ansi: 7.1.0 1417 | supports-hyperlinks: 3.0.0 1418 | svg-tags: 1.0.0 1419 | table: 6.8.2 1420 | write-file-atomic: 5.0.1 1421 | transitivePeerDependencies: 1422 | - supports-color 1423 | - typescript 1424 | 1425 | supports-color@5.5.0: 1426 | dependencies: 1427 | has-flag: 3.0.0 1428 | 1429 | supports-color@7.2.0: 1430 | dependencies: 1431 | has-flag: 4.0.0 1432 | 1433 | supports-hyperlinks@3.0.0: 1434 | dependencies: 1435 | has-flag: 4.0.0 1436 | supports-color: 7.2.0 1437 | 1438 | svg-tags@1.0.0: {} 1439 | 1440 | table@6.8.2: 1441 | dependencies: 1442 | ajv: 8.17.1 1443 | lodash.truncate: 4.4.2 1444 | slice-ansi: 4.0.0 1445 | string-width: 4.2.3 1446 | strip-ansi: 6.0.1 1447 | 1448 | text-table@0.2.0: {} 1449 | 1450 | to-regex-range@5.0.1: 1451 | dependencies: 1452 | is-number: 7.0.0 1453 | 1454 | type-check@0.4.0: 1455 | dependencies: 1456 | prelude-ls: 1.2.1 1457 | 1458 | uri-js@4.4.1: 1459 | dependencies: 1460 | punycode: 2.3.1 1461 | 1462 | util-deprecate@1.0.2: {} 1463 | 1464 | which@1.3.1: 1465 | dependencies: 1466 | isexe: 2.0.0 1467 | 1468 | which@2.0.2: 1469 | dependencies: 1470 | isexe: 2.0.0 1471 | 1472 | word-wrap@1.2.5: {} 1473 | 1474 | write-file-atomic@5.0.1: 1475 | dependencies: 1476 | imurmurhash: 0.1.4 1477 | signal-exit: 4.1.0 1478 | 1479 | yocto-queue@0.1.0: {} 1480 | -------------------------------------------------------------------------------- /stylelint.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('stylelint').Config} */ 2 | export default { 3 | plugins: [`@stylistic/stylelint-plugin`], 4 | rules: { 5 | "@stylistic/at-rule-name-case": `lower`, 6 | "@stylistic/at-rule-name-space-after": `always-single-line`, 7 | "@stylistic/at-rule-semicolon-newline-after": `always`, 8 | "@stylistic/block-closing-brace-empty-line-before": `never`, 9 | "@stylistic/block-closing-brace-newline-after": `always`, 10 | "@stylistic/block-closing-brace-newline-before": `always-multi-line`, 11 | "@stylistic/block-closing-brace-space-before": `always-single-line`, 12 | "@stylistic/block-opening-brace-newline-after": `always-multi-line`, 13 | "@stylistic/block-opening-brace-space-after": `always-single-line`, 14 | "@stylistic/block-opening-brace-space-before": `always`, 15 | "@stylistic/color-hex-case": `lower`, 16 | "@stylistic/declaration-bang-space-after": `never`, 17 | "@stylistic/declaration-bang-space-before": `always`, 18 | "@stylistic/declaration-block-semicolon-newline-after": `always-multi-line`, 19 | "@stylistic/declaration-block-semicolon-space-after": `always-single-line`, 20 | "@stylistic/declaration-block-semicolon-space-before": `never`, 21 | "@stylistic/declaration-block-trailing-semicolon": `always`, 22 | "@stylistic/declaration-colon-newline-after": `always-multi-line`, 23 | "@stylistic/declaration-colon-space-after": `always-single-line`, 24 | "@stylistic/declaration-colon-space-before": `never`, 25 | "@stylistic/function-comma-newline-after": `always-multi-line`, 26 | "@stylistic/function-comma-space-after": `always-single-line`, 27 | "@stylistic/function-comma-space-before": `never`, 28 | "@stylistic/function-max-empty-lines": 0, 29 | "@stylistic/function-parentheses-newline-inside": `always-multi-line`, 30 | "@stylistic/function-parentheses-space-inside": `never-single-line`, 31 | "@stylistic/function-whitespace-after": `always`, 32 | "@stylistic/indentation": 2, 33 | "@stylistic/max-empty-lines": 1, 34 | "@stylistic/max-line-length": 120, 35 | "@stylistic/media-feature-colon-space-after": `always`, 36 | "@stylistic/media-feature-colon-space-before": `never`, 37 | "@stylistic/media-feature-name-case": `lower`, 38 | "@stylistic/media-feature-parentheses-space-inside": `never`, 39 | "@stylistic/media-feature-range-operator-space-after": `always`, 40 | "@stylistic/media-feature-range-operator-space-before": `always`, 41 | "@stylistic/media-query-list-comma-newline-after": `always-multi-line`, 42 | "@stylistic/media-query-list-comma-space-after": `always-single-line`, 43 | "@stylistic/media-query-list-comma-space-before": `never`, 44 | "@stylistic/no-empty-first-line": true, 45 | "@stylistic/no-eol-whitespace": true, 46 | "@stylistic/no-extra-semicolons": true, 47 | "@stylistic/no-missing-end-of-source-newline": true, 48 | "@stylistic/number-leading-zero": `always`, 49 | "@stylistic/number-no-trailing-zeros": true, 50 | "@stylistic/property-case": `lower`, 51 | "@stylistic/selector-attribute-brackets-space-inside": `never`, 52 | "@stylistic/selector-attribute-operator-space-after": `never`, 53 | "@stylistic/selector-attribute-operator-space-before": `never`, 54 | "@stylistic/selector-combinator-space-after": `always`, 55 | "@stylistic/selector-combinator-space-before": `always`, 56 | "@stylistic/selector-descendant-combinator-no-non-space": true, 57 | "@stylistic/selector-list-comma-newline-after": `always`, 58 | "@stylistic/selector-list-comma-space-before": `never`, 59 | "@stylistic/selector-max-empty-lines": 0, 60 | "@stylistic/selector-pseudo-class-case": `lower`, 61 | "@stylistic/selector-pseudo-class-parentheses-space-inside": `never`, 62 | "@stylistic/selector-pseudo-element-case": `lower`, 63 | "@stylistic/string-quotes": `double`, 64 | "@stylistic/unit-case": `lower`, 65 | "@stylistic/value-list-comma-newline-after": `always-multi-line`, 66 | "@stylistic/value-list-comma-space-after": `always-single-line`, 67 | "@stylistic/value-list-comma-space-before": `never`, 68 | "@stylistic/value-list-max-empty-lines": 0, 69 | }, 70 | } 71 | -------------------------------------------------------------------------------- /test/declaration-colon-newline-after.js: -------------------------------------------------------------------------------- 1 | import { testRule } from "../utils/testRule.js" 2 | 3 | let rule = `@stylistic/declaration-colon-newline-after` 4 | 5 | let plugin = { 6 | name: `@stylistic/stylelint-plugin`, 7 | } 8 | 9 | let code = ` 10 | .valid { 11 | background: 12 | url("foo.png"), 13 | url("bar.png"); 14 | transform: 15 | translate( 16 | 1px, 17 | 1px 18 | ); 19 | } 20 | 21 | .invalid { 22 | background: url("foo.png"), 23 | url("bar.png"); 24 | transform: translate( 25 | 1px, 26 | 1px 27 | ); 28 | } 29 | ` 30 | 31 | testRule({ 32 | description: `should include a new line after a colon in multiline declarations`, 33 | rule, 34 | plugin, 35 | code, 36 | expectedWarnings: [ 37 | { 38 | line: 14, 39 | column: 12, 40 | endLine: 14, 41 | endColumn: 13, 42 | rule, 43 | severity: `error`, 44 | text: `Expected newline after ":" with a multi-line declaration (${rule})`, 45 | url: undefined, 46 | }, 47 | { 48 | line: 16, 49 | column: 11, 50 | endLine: 16, 51 | endColumn: 12, 52 | rule, 53 | severity: `error`, 54 | text: `Expected newline after ":" with a multi-line declaration (${rule})`, 55 | url: undefined, 56 | }, 57 | ], 58 | }) 59 | -------------------------------------------------------------------------------- /utils/testRule.js: -------------------------------------------------------------------------------- 1 | import { deepEqual } from "node:assert/strict" 2 | import { describe, it } from "node:test" 3 | 4 | import stylelint from "stylelint" 5 | 6 | /** 7 | * Test the specified rule with its configuration from the `stylelint.config.js` file. 8 | * 9 | * @param {Object} test - Test run parameters. 10 | * @param {string} test.description - The description of the test. 11 | * @param {string} [test.rule] - The name of the rule under test. If not specified, stylelint will use all the rules in the `stylelint.config.js` file. 12 | * @param {Object} [test.plugin] - The plugin required for the rule under test. 13 | * @param {string} test.code - The code for the rule under test. 14 | * @param {Array} test.expectedWarnings - Full data of the warnings expected in the test. 15 | * @returns {Promise} A promise that resolves when the test is complete. 16 | */ 17 | export async function testRule ({ description, rule, plugin, code, expectedWarnings }) { 18 | let config = rule 19 | ? { 20 | plugins: plugin?.name, 21 | rules: { 22 | [rule]: await getRuleConfig(rule), 23 | }, 24 | } 25 | : undefined 26 | 27 | describe(rule, () => { 28 | it(description, async () => { 29 | let warnings = await stylelint.lint({ code, config }).then((r) => r.results[0].warnings) 30 | 31 | deepEqual(warnings, expectedWarnings) 32 | }) 33 | }) 34 | } 35 | 36 | /** 37 | * Get the rule config from the `stylelint.config.js` file. 38 | * 39 | * @param {string} rule - The name of the rule. 40 | * @returns {any} The config of the specified rule. 41 | */ 42 | async function getRuleConfig (rule) { 43 | let configObject = await import(`../stylelint.config.js`).then((m) => m.default) 44 | 45 | return configObject.rules[rule] 46 | } 47 | --------------------------------------------------------------------------------