├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .node-version ├── .npmrc ├── .prettierrc ├── .stylelintrc ├── CHANGELOG.md ├── README.md ├── UNLICENSE ├── index.js ├── package.json ├── pnpm-lock.yaml ├── rollup.config.js └── test ├── css.js ├── fixtures.css ├── fixtures.scss └── scss.js /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | pull_request: 7 | branches: [main] 8 | 9 | concurrency: 10 | group: ${{ github.ref }} 11 | cancel-in-progress: true 12 | 13 | jobs: 14 | test: 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: pnpm/action-setup@v4 20 | 21 | - name: Use Node.js ${{ matrix.node-version }} 22 | uses: actions/setup-node@v4 23 | with: 24 | node-version-file: '.node-version' 25 | cache: 'pnpm' 26 | 27 | - name: Install 28 | run: pnpm install 29 | 30 | - name: Test 31 | run: pnpm test 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 24 -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmjs.org -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "arrowParens": "avoid", 4 | "overrides": [ 5 | { 6 | "files": ["**/*.css", "**/*.scss"], 7 | "options": { 8 | "singleQuote": false 9 | } 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /.stylelintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["stylelint-config-standard", "./index.js"] 3 | } 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](http://keepachangelog.com/) 5 | and this project adheres to [Semantic Versioning](http://semver.org/). 6 | 7 | ## [Unreleased] 8 | 9 | ## [4.4.0] - 2023-12-20 10 | ### Added 11 | * Add support for Stylelint 16. 12 | None of the breaking changes are impacting this config. 13 | It stays compatible with previous Stylelint versions. 14 | 15 | ### Changed 16 | * Converted to an ES module, but with added support for commonjs. 17 | It should be transparent to consumers. 18 | 19 | ## [4.3.0] - 2023-07-19 20 | ### Added 21 | * Add support for `stylelint-scss@6.x` in optional dependencies. 22 | 23 | ## [4.2.0] - 2023-02-10 24 | ### Added 25 | * Add support for Stylelint 15. 26 | None of the breaking changes are impacting this config. 27 | It stays compatible with Stylelint `^14.5.1`. 28 | 29 | ## [4.1.0] - 2022-03-16 30 | ### Added 31 | * SCSS, use the `function-no-unknow` rule from `stylelint-scss >= 4.2`. 32 | 33 | ### Changed 34 | * Stylelint peerDependency version to `^14.5.1` 35 | (required by the function-no-unknown rule). 36 | 37 | ## [4.0.1] - 2022-03-11 38 | ### Fixed 39 | * Missing SCSS plugin declaration. 40 | 41 | ## [4.0.0] - 2022-03-11 42 | ### Added 43 | * SCSS support trough `overrides` relying on `stylelint-scss` for: 44 | - `at-rule-no-unknown` 45 | - `function-no-unknow` 46 | See https://github.com/pascalduez/stylelint-config-css-modules/issues/6 47 | * Now comes with `stylelint-scss` as `optionalDependency`. 48 | 49 | ## [3.0.0] - 2022-02-11 50 | ### Changed 51 | * `stylelint-config-standard@25.x` upgrade. 52 | Added `function-no-unknown` rule override to support `global` function. 53 | * **Breaking** 54 | Only support Stylelint 14 onwards. 55 | 56 | ## [2.3.0] - 2021-10-25 57 | ### Added 58 | * Add support for Stylelint 14. 59 | 60 | ## [2.2.0] - 2020-01-12 61 | ### Added 62 | * Add support for Stylelint 13. 63 | 64 | ## [2.1.0] - 2019-11-18 65 | ### Added 66 | * Add support for Stylelint 12. 67 | 68 | ## [2.0.0] - 2019-11-04 69 | ### Added 70 | * Add support for `:export` and `:import()` selectors. 71 | 72 | ### Changed 73 | * **Breaking** 74 | Only support Stylelint 11 onwards. 75 | 76 | ## [1.5.0] - 2019-09-16 77 | ### Added 78 | * Add support for Stylelint 11. 79 | 80 | ## [1.4.0] - 2019-04-14 81 | ### Added 82 | * Add support for Stylelint 10. 83 | 84 | ## [1.3.0] - 2018-06-23 85 | ### Added 86 | * Add support for modular-css `:external` pseudo class. 87 | See https://github.com/tivac/modular-css#style-overrides 88 | 89 | ## [1.2.0] - 2018-02-18 90 | ### Added 91 | * Add support for Stylelint 9. 92 | 93 | ## [1.1.0] - 2017-07-17 94 | ### Added 95 | * Add support for Stylelint 8. 96 | 97 | ## [1.0.0] - 2017-04-17 98 | ### Added 99 | * Add support for the `compose-with` property. 100 | 101 | ## [0.1.0] - 2016-09-12 102 | * Initial release. 103 | 104 | [Unreleased]: https://github.com/pascalduez/stylelint-config-css-modules/compare/4.2.0...HEAD 105 | [4.2.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/4.2.0 106 | [4.1.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/4.1.0 107 | [4.0.1]: https://github.com/pascalduez/stylelint-config-css-modules/tags/4.0.1 108 | [4.0.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/4.0.0 109 | [3.0.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/3.0.0 110 | [2.3.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/2.3.0 111 | [2.2.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/2.2.0 112 | [2.1.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/2.1.0 113 | [2.0.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/2.0.0 114 | [1.5.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/1.5.0 115 | [1.4.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/1.4.0 116 | [1.3.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/1.3.0 117 | [1.2.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/1.2.0 118 | [1.1.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/1.1.0 119 | [1.0.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/1.0.0 120 | [0.1.0]: https://github.com/pascalduez/stylelint-config-css-modules/tags/0.1.0 121 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # stylelint-config-css-modules 2 | 3 | [![npm version][npm-image]][npm-url] 4 | [![CI Status][ci-image]][ci-url] 5 | 6 | > CSS modules shareable config for stylelint. 7 | 8 | Tweaks [stylelint] rules to accept [css modules] specific syntax. 9 | This is useful as an override of pre-defined rules, for instance the [stylelint-config-standard]. 10 | 11 | ## Installation 12 | 13 | ``` 14 | npm install stylelint-config-css-modules --save-dev 15 | # or 16 | pnpm install stylelint-config-css-modules --save-dev 17 | # or 18 | yarn add stylelint-config-css-modules --dev 19 | ``` 20 | 21 | > `stylelint-config-css-modules` comes with `stylelint-scss` as `optionalDependencies`, 22 | if you're not using SCSS and want to strip it from your node_modules just: 23 | 24 | ``` 25 | npm install stylelint-config-css-modules --save-dev --no-optional 26 | # or 27 | pnpm install stylelint-config-css-modules --save-dev --no-optional 28 | # or 29 | yarn add stylelint-config-css-modules --dev --ignore-optional 30 | ``` 31 | 32 | ## Usage 33 | 34 | ```json 35 | { 36 | "extends": [ 37 | "stylelint-config-standard", 38 | "stylelint-config-css-modules" 39 | ] 40 | } 41 | ``` 42 | 43 | ## Examples 44 | 45 | ```css 46 | @value colors: './colors.css'; 47 | @value primary, secondary from colors; 48 | 49 | .base { 50 | content: 'base'; 51 | color: primary; 52 | } 53 | 54 | .composed { 55 | composes: base; 56 | } 57 | 58 | .composedWith { 59 | compose-with: base; 60 | } 61 | 62 | .flexible { 63 | composes: flex from './utils.css'; 64 | flex-direction: column; 65 | } 66 | 67 | :global(.js) .progressive { 68 | display: block; 69 | } 70 | 71 | :export { 72 | black: #000; 73 | white: #111; 74 | } 75 | ``` 76 | 77 | ## SCSS 78 | 79 | Using SCSS along with configs such as [stylelint-config-standard-scss] means you 80 | should necessarily have [stylelint-scss] installed. 81 | 82 | ```json 83 | { 84 | "extends": [ 85 | "stylelint-config-standard-scss", 86 | "stylelint-config-css-modules" 87 | ] 88 | } 89 | ``` 90 | 91 | ## Credits 92 | 93 | - [Pascal Duez](https://github.com/pascalduez) 94 | 95 | ## Licence 96 | 97 | stylelint-config-css-modules is [unlicensed](http://unlicense.org/). 98 | 99 | [npm-url]: https://www.npmjs.org/package/stylelint-config-css-modules 100 | [npm-image]: http://img.shields.io/npm/v/stylelint-config-css-modules.svg?style=flat-square 101 | [ci-url]: https://github.com/pascalduez/stylelint-config-css-modules/actions/workflows/ci.yml 102 | [ci-image]: https://img.shields.io/github/actions/workflow/status/pascalduez/stylelint-config-css-modules/ci.yml?branch=main&style=flat-square 103 | 104 | [stylelint]: https://github.com/stylelint/stylelint 105 | [css modules]: https://github.com/css-modules/css-modules 106 | [stylelint-scss]: https://github.com/stylelint-scss/stylelint-config-standard-scss 107 | [stylelint-config-standard]: https://github.com/stylelint/stylelint-config-standard 108 | [stylelint-config-standard-scss]: https://github.com/stylelint-scss/stylelint-config-standard-scss 109 | 110 | -------------------------------------------------------------------------------- /UNLICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | rules: { 3 | 'selector-pseudo-class-no-unknown': [ 4 | true, 5 | { 6 | ignorePseudoClasses: [ 7 | 'export', 8 | 'import', 9 | 'global', 10 | 'local', 11 | 'external', 12 | ], 13 | }, 14 | ], 15 | 'selector-type-no-unknown': [ 16 | true, 17 | { 18 | ignoreTypes: ['from'], 19 | }, 20 | ], 21 | 'property-no-unknown': [ 22 | true, 23 | { 24 | ignoreProperties: ['composes', 'compose-with'], 25 | ignoreSelectors: [':export', /^:import/], 26 | }, 27 | ], 28 | 'at-rule-no-unknown': [ 29 | true, 30 | { 31 | ignoreAtRules: ['value'], 32 | }, 33 | ], 34 | 'function-no-unknown': [ 35 | true, 36 | { 37 | ignoreFunctions: ['global'], 38 | }, 39 | ], 40 | }, 41 | overrides: [ 42 | { 43 | files: '**/*.scss', 44 | plugins: ['stylelint-scss'], 45 | rules: { 46 | 'at-rule-no-unknown': null, 47 | 'scss/at-rule-no-unknown': [ 48 | true, 49 | { 50 | ignoreAtRules: ['value'], 51 | }, 52 | ], 53 | 'function-no-unknown': null, 54 | 'scss/function-no-unknown': [ 55 | true, 56 | { 57 | ignoreFunctions: ['global'], 58 | }, 59 | ], 60 | }, 61 | }, 62 | ], 63 | }; 64 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "stylelint-config-css-modules", 3 | "version": "4.4.0", 4 | "description": "CSS modules shareable config for stylelint", 5 | "keywords": [ 6 | "stylelint", 7 | "stylelint-config", 8 | "css-modules" 9 | ], 10 | "author": { 11 | "name": "Pascal Duez", 12 | "url": "https://github.com/pascalduez" 13 | }, 14 | "homepage": "https://github.com/pascalduez/stylelint-config-css-modules", 15 | "bugs": "https://github.com/pascalduez/stylelint-config-css-modules/issues", 16 | "repository": { 17 | "type": "git", 18 | "url": "git://github.com/pascalduez/stylelint-config-css-modules.git" 19 | }, 20 | "license": "Unlicense", 21 | "type": "module", 22 | "main": "./dist/index.cjs", 23 | "exports": { 24 | "import": "./dist/index.js", 25 | "require": "./dist/index.cjs" 26 | }, 27 | "files": [ 28 | "CHANGELOG.md", 29 | "dist/**/*.js", 30 | "dist/**/*.cjs", 31 | "README.md", 32 | "UNLICENSE" 33 | ], 34 | "scripts": { 35 | "format:check": "prettier -l \"**/*.{js,css,scss}\"", 36 | "format:write": "prettier --write \"**/*.{js,scss,css}\"", 37 | "test": "node --test", 38 | "build": "rollup -c", 39 | "prepare": "pnpm build" 40 | }, 41 | "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977", 42 | "devDependencies": { 43 | "postcss": "^8.5.4", 44 | "prettier": "^3.5.3", 45 | "rollup": "^4.41.1", 46 | "stylelint": "^16.20.0", 47 | "stylelint-config-standard": "^38.0.0", 48 | "stylelint-config-standard-scss": "^15.0.1" 49 | }, 50 | "peerDependencies": { 51 | "stylelint": "^14.5.1 || ^15.0.0 || ^16.0.0" 52 | }, 53 | "optionalDependencies": { 54 | "stylelint-scss": "^6.12.0" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | postcss: 12 | specifier: ^8.5.4 13 | version: 8.5.4 14 | prettier: 15 | specifier: ^3.5.3 16 | version: 3.5.3 17 | rollup: 18 | specifier: ^4.41.1 19 | version: 4.41.1 20 | stylelint: 21 | specifier: ^16.20.0 22 | version: 16.20.0 23 | stylelint-config-standard: 24 | specifier: ^38.0.0 25 | version: 38.0.0(stylelint@16.20.0) 26 | stylelint-config-standard-scss: 27 | specifier: ^15.0.1 28 | version: 15.0.1(postcss@8.5.4)(stylelint@16.20.0) 29 | optionalDependencies: 30 | stylelint-scss: 31 | specifier: ^6.12.0 32 | version: 6.12.0(stylelint@16.20.0) 33 | 34 | packages: 35 | 36 | '@babel/code-frame@7.27.1': 37 | resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 38 | engines: {node: '>=6.9.0'} 39 | 40 | '@babel/helper-validator-identifier@7.27.1': 41 | resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 42 | engines: {node: '>=6.9.0'} 43 | 44 | '@csstools/css-parser-algorithms@3.0.5': 45 | resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} 46 | engines: {node: '>=18'} 47 | peerDependencies: 48 | '@csstools/css-tokenizer': ^3.0.4 49 | 50 | '@csstools/css-tokenizer@3.0.4': 51 | resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} 52 | engines: {node: '>=18'} 53 | 54 | '@csstools/media-query-list-parser@4.0.3': 55 | resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} 56 | engines: {node: '>=18'} 57 | peerDependencies: 58 | '@csstools/css-parser-algorithms': ^3.0.5 59 | '@csstools/css-tokenizer': ^3.0.4 60 | 61 | '@csstools/selector-specificity@5.0.0': 62 | resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} 63 | engines: {node: '>=18'} 64 | peerDependencies: 65 | postcss-selector-parser: ^7.0.0 66 | 67 | '@dual-bundle/import-meta-resolve@4.1.0': 68 | resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} 69 | 70 | '@keyv/serialize@1.0.3': 71 | resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} 72 | 73 | '@nodelib/fs.scandir@2.1.5': 74 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 75 | engines: {node: '>= 8'} 76 | 77 | '@nodelib/fs.stat@2.0.5': 78 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 79 | engines: {node: '>= 8'} 80 | 81 | '@nodelib/fs.walk@1.2.8': 82 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 83 | engines: {node: '>= 8'} 84 | 85 | '@rollup/rollup-android-arm-eabi@4.41.1': 86 | resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} 87 | cpu: [arm] 88 | os: [android] 89 | 90 | '@rollup/rollup-android-arm64@4.41.1': 91 | resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} 92 | cpu: [arm64] 93 | os: [android] 94 | 95 | '@rollup/rollup-darwin-arm64@4.41.1': 96 | resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} 97 | cpu: [arm64] 98 | os: [darwin] 99 | 100 | '@rollup/rollup-darwin-x64@4.41.1': 101 | resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} 102 | cpu: [x64] 103 | os: [darwin] 104 | 105 | '@rollup/rollup-freebsd-arm64@4.41.1': 106 | resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} 107 | cpu: [arm64] 108 | os: [freebsd] 109 | 110 | '@rollup/rollup-freebsd-x64@4.41.1': 111 | resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} 112 | cpu: [x64] 113 | os: [freebsd] 114 | 115 | '@rollup/rollup-linux-arm-gnueabihf@4.41.1': 116 | resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} 117 | cpu: [arm] 118 | os: [linux] 119 | 120 | '@rollup/rollup-linux-arm-musleabihf@4.41.1': 121 | resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} 122 | cpu: [arm] 123 | os: [linux] 124 | 125 | '@rollup/rollup-linux-arm64-gnu@4.41.1': 126 | resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} 127 | cpu: [arm64] 128 | os: [linux] 129 | 130 | '@rollup/rollup-linux-arm64-musl@4.41.1': 131 | resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} 132 | cpu: [arm64] 133 | os: [linux] 134 | 135 | '@rollup/rollup-linux-loongarch64-gnu@4.41.1': 136 | resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} 137 | cpu: [loong64] 138 | os: [linux] 139 | 140 | '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': 141 | resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} 142 | cpu: [ppc64] 143 | os: [linux] 144 | 145 | '@rollup/rollup-linux-riscv64-gnu@4.41.1': 146 | resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} 147 | cpu: [riscv64] 148 | os: [linux] 149 | 150 | '@rollup/rollup-linux-riscv64-musl@4.41.1': 151 | resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} 152 | cpu: [riscv64] 153 | os: [linux] 154 | 155 | '@rollup/rollup-linux-s390x-gnu@4.41.1': 156 | resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} 157 | cpu: [s390x] 158 | os: [linux] 159 | 160 | '@rollup/rollup-linux-x64-gnu@4.41.1': 161 | resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} 162 | cpu: [x64] 163 | os: [linux] 164 | 165 | '@rollup/rollup-linux-x64-musl@4.41.1': 166 | resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} 167 | cpu: [x64] 168 | os: [linux] 169 | 170 | '@rollup/rollup-win32-arm64-msvc@4.41.1': 171 | resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} 172 | cpu: [arm64] 173 | os: [win32] 174 | 175 | '@rollup/rollup-win32-ia32-msvc@4.41.1': 176 | resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} 177 | cpu: [ia32] 178 | os: [win32] 179 | 180 | '@rollup/rollup-win32-x64-msvc@4.41.1': 181 | resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} 182 | cpu: [x64] 183 | os: [win32] 184 | 185 | '@types/estree@1.0.7': 186 | resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 187 | 188 | ajv@8.17.1: 189 | resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 190 | 191 | ansi-regex@5.0.1: 192 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 193 | engines: {node: '>=8'} 194 | 195 | ansi-styles@4.3.0: 196 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 197 | engines: {node: '>=8'} 198 | 199 | argparse@2.0.1: 200 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 201 | 202 | array-union@2.1.0: 203 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 204 | engines: {node: '>=8'} 205 | 206 | astral-regex@2.0.0: 207 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 208 | engines: {node: '>=8'} 209 | 210 | balanced-match@2.0.0: 211 | resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} 212 | 213 | base64-js@1.5.1: 214 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 215 | 216 | braces@3.0.3: 217 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 218 | engines: {node: '>=8'} 219 | 220 | buffer@6.0.3: 221 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 222 | 223 | cacheable@1.9.0: 224 | resolution: {integrity: sha512-8D5htMCxPDUULux9gFzv30f04Xo3wCnik0oOxKoRTPIBoqA7HtOcJ87uBhQTs3jCfZZTrUBGsYIZOgE0ZRgMAg==} 225 | 226 | callsites@3.1.0: 227 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 228 | engines: {node: '>=6'} 229 | 230 | color-convert@2.0.1: 231 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 232 | engines: {node: '>=7.0.0'} 233 | 234 | color-name@1.1.4: 235 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 236 | 237 | colord@2.9.3: 238 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} 239 | 240 | cosmiconfig@9.0.0: 241 | resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} 242 | engines: {node: '>=14'} 243 | peerDependencies: 244 | typescript: '>=4.9.5' 245 | peerDependenciesMeta: 246 | typescript: 247 | optional: true 248 | 249 | css-functions-list@3.2.3: 250 | resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} 251 | engines: {node: '>=12 || >=16'} 252 | 253 | css-tree@3.1.0: 254 | resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} 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.4.1: 263 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 264 | engines: {node: '>=6.0'} 265 | peerDependencies: 266 | supports-color: '*' 267 | peerDependenciesMeta: 268 | supports-color: 269 | optional: true 270 | 271 | dir-glob@3.0.1: 272 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 273 | engines: {node: '>=8'} 274 | 275 | emoji-regex@8.0.0: 276 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 277 | 278 | env-paths@2.2.1: 279 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 280 | engines: {node: '>=6'} 281 | 282 | error-ex@1.3.2: 283 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 284 | 285 | fast-deep-equal@3.1.3: 286 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 287 | 288 | fast-glob@3.3.3: 289 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 290 | engines: {node: '>=8.6.0'} 291 | 292 | fast-uri@3.0.6: 293 | resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} 294 | 295 | fastest-levenshtein@1.0.16: 296 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} 297 | engines: {node: '>= 4.9.1'} 298 | 299 | fastq@1.19.1: 300 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 301 | 302 | file-entry-cache@10.1.0: 303 | resolution: {integrity: sha512-Et/ex6smi3wOOB+n5mek+Grf7P2AxZR5ueqRUvAAn4qkyatXi3cUC1cuQXVkX0VlzBVsN4BkWJFmY/fYiRTdww==} 304 | 305 | fill-range@7.1.1: 306 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 307 | engines: {node: '>=8'} 308 | 309 | flat-cache@6.1.9: 310 | resolution: {integrity: sha512-DUqiKkTlAfhtl7g78IuwqYM+YqvT+as0mY+EVk6mfimy19U79pJCzDZQsnqk3Ou/T6hFXWLGbwbADzD/c8Tydg==} 311 | 312 | flatted@3.3.3: 313 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 314 | 315 | fsevents@2.3.3: 316 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 317 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 318 | os: [darwin] 319 | 320 | glob-parent@5.1.2: 321 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 322 | engines: {node: '>= 6'} 323 | 324 | global-modules@2.0.0: 325 | resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} 326 | engines: {node: '>=6'} 327 | 328 | global-prefix@3.0.0: 329 | resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} 330 | engines: {node: '>=6'} 331 | 332 | globby@11.1.0: 333 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 334 | engines: {node: '>=10'} 335 | 336 | globjoin@0.1.4: 337 | resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} 338 | 339 | has-flag@4.0.0: 340 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 341 | engines: {node: '>=8'} 342 | 343 | hookified@1.9.0: 344 | resolution: {integrity: sha512-2yEEGqphImtKIe1NXWEhu6yD3hlFR4Mxk4Mtp3XEyScpSt4pQ4ymmXA1zzxZpj99QkFK+nN0nzjeb2+RUi/6CQ==} 345 | 346 | html-tags@3.3.1: 347 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} 348 | engines: {node: '>=8'} 349 | 350 | ieee754@1.2.1: 351 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 352 | 353 | ignore@5.3.2: 354 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 355 | engines: {node: '>= 4'} 356 | 357 | ignore@7.0.4: 358 | resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} 359 | engines: {node: '>= 4'} 360 | 361 | import-fresh@3.3.1: 362 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 363 | engines: {node: '>=6'} 364 | 365 | imurmurhash@0.1.4: 366 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 367 | engines: {node: '>=0.8.19'} 368 | 369 | ini@1.3.8: 370 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 371 | 372 | is-arrayish@0.2.1: 373 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 374 | 375 | is-extglob@2.1.1: 376 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 377 | engines: {node: '>=0.10.0'} 378 | 379 | is-fullwidth-code-point@3.0.0: 380 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 381 | engines: {node: '>=8'} 382 | 383 | is-glob@4.0.3: 384 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 385 | engines: {node: '>=0.10.0'} 386 | 387 | is-number@7.0.0: 388 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 389 | engines: {node: '>=0.12.0'} 390 | 391 | is-plain-object@5.0.0: 392 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} 393 | engines: {node: '>=0.10.0'} 394 | 395 | isexe@2.0.0: 396 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 397 | 398 | js-tokens@4.0.0: 399 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 400 | 401 | js-yaml@4.1.0: 402 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 403 | hasBin: true 404 | 405 | json-parse-even-better-errors@2.3.1: 406 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 407 | 408 | json-schema-traverse@1.0.0: 409 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 410 | 411 | keyv@5.3.3: 412 | resolution: {integrity: sha512-Rwu4+nXI9fqcxiEHtbkvoes2X+QfkTRo1TMkPfwzipGsJlJO/z69vqB4FNl9xJ3xCpAcbkvmEabZfPzrwN3+gQ==} 413 | 414 | kind-of@6.0.3: 415 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 416 | engines: {node: '>=0.10.0'} 417 | 418 | known-css-properties@0.36.0: 419 | resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==} 420 | 421 | lines-and-columns@1.2.4: 422 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 423 | 424 | lodash.truncate@4.4.2: 425 | resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} 426 | 427 | mathml-tag-names@2.1.3: 428 | resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} 429 | 430 | mdn-data@2.12.2: 431 | resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 432 | 433 | mdn-data@2.21.0: 434 | resolution: {integrity: sha512-+ZKPQezM5vYJIkCxaC+4DTnRrVZR1CgsKLu5zsQERQx6Tea8Y+wMx5A24rq8A8NepCeatIQufVAekKNgiBMsGQ==} 435 | 436 | meow@13.2.0: 437 | resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} 438 | engines: {node: '>=18'} 439 | 440 | merge2@1.4.1: 441 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 442 | engines: {node: '>= 8'} 443 | 444 | micromatch@4.0.8: 445 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 446 | engines: {node: '>=8.6'} 447 | 448 | ms@2.1.3: 449 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 450 | 451 | nanoid@3.3.11: 452 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 453 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 454 | hasBin: true 455 | 456 | normalize-path@3.0.0: 457 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 458 | engines: {node: '>=0.10.0'} 459 | 460 | parent-module@1.0.1: 461 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 462 | engines: {node: '>=6'} 463 | 464 | parse-json@5.2.0: 465 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 466 | engines: {node: '>=8'} 467 | 468 | path-type@4.0.0: 469 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 470 | engines: {node: '>=8'} 471 | 472 | picocolors@1.1.1: 473 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 474 | 475 | picomatch@2.3.1: 476 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 477 | engines: {node: '>=8.6'} 478 | 479 | postcss-media-query-parser@0.2.3: 480 | resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} 481 | 482 | postcss-resolve-nested-selector@0.1.6: 483 | resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} 484 | 485 | postcss-safe-parser@7.0.1: 486 | resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} 487 | engines: {node: '>=18.0'} 488 | peerDependencies: 489 | postcss: ^8.4.31 490 | 491 | postcss-scss@4.0.9: 492 | resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 493 | engines: {node: '>=12.0'} 494 | peerDependencies: 495 | postcss: ^8.4.29 496 | 497 | postcss-selector-parser@7.1.0: 498 | resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} 499 | engines: {node: '>=4'} 500 | 501 | postcss-value-parser@4.2.0: 502 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 503 | 504 | postcss@8.5.4: 505 | resolution: {integrity: sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==} 506 | engines: {node: ^10 || ^12 || >=14} 507 | 508 | prettier@3.5.3: 509 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 510 | engines: {node: '>=14'} 511 | hasBin: true 512 | 513 | queue-microtask@1.2.3: 514 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 515 | 516 | require-from-string@2.0.2: 517 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 518 | engines: {node: '>=0.10.0'} 519 | 520 | resolve-from@4.0.0: 521 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 522 | engines: {node: '>=4'} 523 | 524 | resolve-from@5.0.0: 525 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 526 | engines: {node: '>=8'} 527 | 528 | reusify@1.1.0: 529 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 530 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 531 | 532 | rollup@4.41.1: 533 | resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} 534 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 535 | hasBin: true 536 | 537 | run-parallel@1.2.0: 538 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 539 | 540 | signal-exit@4.1.0: 541 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 542 | engines: {node: '>=14'} 543 | 544 | slash@3.0.0: 545 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 546 | engines: {node: '>=8'} 547 | 548 | slice-ansi@4.0.0: 549 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 550 | engines: {node: '>=10'} 551 | 552 | source-map-js@1.2.1: 553 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 554 | engines: {node: '>=0.10.0'} 555 | 556 | string-width@4.2.3: 557 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 558 | engines: {node: '>=8'} 559 | 560 | strip-ansi@6.0.1: 561 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 562 | engines: {node: '>=8'} 563 | 564 | stylelint-config-recommended-scss@15.0.1: 565 | resolution: {integrity: sha512-V24bxkNkFGggqPVJlP9iXaBabwSGEG7QTz+PyxrRtjPkcF+/NsWtB3tKYvFYEmczRkWiIEfuFMhGpJFj9Fxe6Q==} 566 | engines: {node: '>=20'} 567 | peerDependencies: 568 | postcss: ^8.3.3 569 | stylelint: ^16.16.0 570 | peerDependenciesMeta: 571 | postcss: 572 | optional: true 573 | 574 | stylelint-config-recommended@16.0.0: 575 | resolution: {integrity: sha512-4RSmPjQegF34wNcK1e1O3Uz91HN8P1aFdFzio90wNK9mjgAI19u5vsU868cVZboKzCaa5XbpvtTzAAGQAxpcXA==} 576 | engines: {node: '>=18.12.0'} 577 | peerDependencies: 578 | stylelint: ^16.16.0 579 | 580 | stylelint-config-standard-scss@15.0.1: 581 | resolution: {integrity: sha512-8pmmfutrMlPHukLp+Th9asmk21tBXMVGxskZCzkRVWt1d8Z0SrXjUUQ3vn9KcBj1bJRd5msk6yfEFM0UYHBRdg==} 582 | engines: {node: '>=20'} 583 | peerDependencies: 584 | postcss: ^8.3.3 585 | stylelint: ^16.18.0 586 | peerDependenciesMeta: 587 | postcss: 588 | optional: true 589 | 590 | stylelint-config-standard@38.0.0: 591 | resolution: {integrity: sha512-uj3JIX+dpFseqd/DJx8Gy3PcRAJhlEZ2IrlFOc4LUxBX/PNMEQ198x7LCOE2Q5oT9Vw8nyc4CIL78xSqPr6iag==} 592 | engines: {node: '>=18.12.0'} 593 | peerDependencies: 594 | stylelint: ^16.18.0 595 | 596 | stylelint-scss@6.12.0: 597 | resolution: {integrity: sha512-U7CKhi1YNkM1pXUXl/GMUXi8xKdhl4Ayxdyceie1nZ1XNIdaUgMV6OArpooWcDzEggwgYD0HP/xIgVJo9a655w==} 598 | engines: {node: '>=18.12.0'} 599 | peerDependencies: 600 | stylelint: ^16.0.2 601 | 602 | stylelint@16.20.0: 603 | resolution: {integrity: sha512-B5Myu9WRxrgKuLs3YyUXLP2H0mrbejwNxPmyADlACWwFsrL8Bmor/nTSh4OMae5sHjOz6gkSeccQH34gM4/nAw==} 604 | engines: {node: '>=18.12.0'} 605 | hasBin: true 606 | 607 | supports-color@7.2.0: 608 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 609 | engines: {node: '>=8'} 610 | 611 | supports-hyperlinks@3.2.0: 612 | resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} 613 | engines: {node: '>=14.18'} 614 | 615 | svg-tags@1.0.0: 616 | resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} 617 | 618 | table@6.9.0: 619 | resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} 620 | engines: {node: '>=10.0.0'} 621 | 622 | to-regex-range@5.0.1: 623 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 624 | engines: {node: '>=8.0'} 625 | 626 | util-deprecate@1.0.2: 627 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 628 | 629 | which@1.3.1: 630 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 631 | hasBin: true 632 | 633 | write-file-atomic@5.0.1: 634 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} 635 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 636 | 637 | snapshots: 638 | 639 | '@babel/code-frame@7.27.1': 640 | dependencies: 641 | '@babel/helper-validator-identifier': 7.27.1 642 | js-tokens: 4.0.0 643 | picocolors: 1.1.1 644 | 645 | '@babel/helper-validator-identifier@7.27.1': {} 646 | 647 | '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': 648 | dependencies: 649 | '@csstools/css-tokenizer': 3.0.4 650 | 651 | '@csstools/css-tokenizer@3.0.4': {} 652 | 653 | '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': 654 | dependencies: 655 | '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 656 | '@csstools/css-tokenizer': 3.0.4 657 | 658 | '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': 659 | dependencies: 660 | postcss-selector-parser: 7.1.0 661 | 662 | '@dual-bundle/import-meta-resolve@4.1.0': {} 663 | 664 | '@keyv/serialize@1.0.3': 665 | dependencies: 666 | buffer: 6.0.3 667 | 668 | '@nodelib/fs.scandir@2.1.5': 669 | dependencies: 670 | '@nodelib/fs.stat': 2.0.5 671 | run-parallel: 1.2.0 672 | 673 | '@nodelib/fs.stat@2.0.5': {} 674 | 675 | '@nodelib/fs.walk@1.2.8': 676 | dependencies: 677 | '@nodelib/fs.scandir': 2.1.5 678 | fastq: 1.19.1 679 | 680 | '@rollup/rollup-android-arm-eabi@4.41.1': 681 | optional: true 682 | 683 | '@rollup/rollup-android-arm64@4.41.1': 684 | optional: true 685 | 686 | '@rollup/rollup-darwin-arm64@4.41.1': 687 | optional: true 688 | 689 | '@rollup/rollup-darwin-x64@4.41.1': 690 | optional: true 691 | 692 | '@rollup/rollup-freebsd-arm64@4.41.1': 693 | optional: true 694 | 695 | '@rollup/rollup-freebsd-x64@4.41.1': 696 | optional: true 697 | 698 | '@rollup/rollup-linux-arm-gnueabihf@4.41.1': 699 | optional: true 700 | 701 | '@rollup/rollup-linux-arm-musleabihf@4.41.1': 702 | optional: true 703 | 704 | '@rollup/rollup-linux-arm64-gnu@4.41.1': 705 | optional: true 706 | 707 | '@rollup/rollup-linux-arm64-musl@4.41.1': 708 | optional: true 709 | 710 | '@rollup/rollup-linux-loongarch64-gnu@4.41.1': 711 | optional: true 712 | 713 | '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': 714 | optional: true 715 | 716 | '@rollup/rollup-linux-riscv64-gnu@4.41.1': 717 | optional: true 718 | 719 | '@rollup/rollup-linux-riscv64-musl@4.41.1': 720 | optional: true 721 | 722 | '@rollup/rollup-linux-s390x-gnu@4.41.1': 723 | optional: true 724 | 725 | '@rollup/rollup-linux-x64-gnu@4.41.1': 726 | optional: true 727 | 728 | '@rollup/rollup-linux-x64-musl@4.41.1': 729 | optional: true 730 | 731 | '@rollup/rollup-win32-arm64-msvc@4.41.1': 732 | optional: true 733 | 734 | '@rollup/rollup-win32-ia32-msvc@4.41.1': 735 | optional: true 736 | 737 | '@rollup/rollup-win32-x64-msvc@4.41.1': 738 | optional: true 739 | 740 | '@types/estree@1.0.7': {} 741 | 742 | ajv@8.17.1: 743 | dependencies: 744 | fast-deep-equal: 3.1.3 745 | fast-uri: 3.0.6 746 | json-schema-traverse: 1.0.0 747 | require-from-string: 2.0.2 748 | 749 | ansi-regex@5.0.1: {} 750 | 751 | ansi-styles@4.3.0: 752 | dependencies: 753 | color-convert: 2.0.1 754 | 755 | argparse@2.0.1: {} 756 | 757 | array-union@2.1.0: {} 758 | 759 | astral-regex@2.0.0: {} 760 | 761 | balanced-match@2.0.0: {} 762 | 763 | base64-js@1.5.1: {} 764 | 765 | braces@3.0.3: 766 | dependencies: 767 | fill-range: 7.1.1 768 | 769 | buffer@6.0.3: 770 | dependencies: 771 | base64-js: 1.5.1 772 | ieee754: 1.2.1 773 | 774 | cacheable@1.9.0: 775 | dependencies: 776 | hookified: 1.9.0 777 | keyv: 5.3.3 778 | 779 | callsites@3.1.0: {} 780 | 781 | color-convert@2.0.1: 782 | dependencies: 783 | color-name: 1.1.4 784 | 785 | color-name@1.1.4: {} 786 | 787 | colord@2.9.3: {} 788 | 789 | cosmiconfig@9.0.0: 790 | dependencies: 791 | env-paths: 2.2.1 792 | import-fresh: 3.3.1 793 | js-yaml: 4.1.0 794 | parse-json: 5.2.0 795 | 796 | css-functions-list@3.2.3: {} 797 | 798 | css-tree@3.1.0: 799 | dependencies: 800 | mdn-data: 2.12.2 801 | source-map-js: 1.2.1 802 | 803 | cssesc@3.0.0: {} 804 | 805 | debug@4.4.1: 806 | dependencies: 807 | ms: 2.1.3 808 | 809 | dir-glob@3.0.1: 810 | dependencies: 811 | path-type: 4.0.0 812 | 813 | emoji-regex@8.0.0: {} 814 | 815 | env-paths@2.2.1: {} 816 | 817 | error-ex@1.3.2: 818 | dependencies: 819 | is-arrayish: 0.2.1 820 | 821 | fast-deep-equal@3.1.3: {} 822 | 823 | fast-glob@3.3.3: 824 | dependencies: 825 | '@nodelib/fs.stat': 2.0.5 826 | '@nodelib/fs.walk': 1.2.8 827 | glob-parent: 5.1.2 828 | merge2: 1.4.1 829 | micromatch: 4.0.8 830 | 831 | fast-uri@3.0.6: {} 832 | 833 | fastest-levenshtein@1.0.16: {} 834 | 835 | fastq@1.19.1: 836 | dependencies: 837 | reusify: 1.1.0 838 | 839 | file-entry-cache@10.1.0: 840 | dependencies: 841 | flat-cache: 6.1.9 842 | 843 | fill-range@7.1.1: 844 | dependencies: 845 | to-regex-range: 5.0.1 846 | 847 | flat-cache@6.1.9: 848 | dependencies: 849 | cacheable: 1.9.0 850 | flatted: 3.3.3 851 | hookified: 1.9.0 852 | 853 | flatted@3.3.3: {} 854 | 855 | fsevents@2.3.3: 856 | optional: true 857 | 858 | glob-parent@5.1.2: 859 | dependencies: 860 | is-glob: 4.0.3 861 | 862 | global-modules@2.0.0: 863 | dependencies: 864 | global-prefix: 3.0.0 865 | 866 | global-prefix@3.0.0: 867 | dependencies: 868 | ini: 1.3.8 869 | kind-of: 6.0.3 870 | which: 1.3.1 871 | 872 | globby@11.1.0: 873 | dependencies: 874 | array-union: 2.1.0 875 | dir-glob: 3.0.1 876 | fast-glob: 3.3.3 877 | ignore: 5.3.2 878 | merge2: 1.4.1 879 | slash: 3.0.0 880 | 881 | globjoin@0.1.4: {} 882 | 883 | has-flag@4.0.0: {} 884 | 885 | hookified@1.9.0: {} 886 | 887 | html-tags@3.3.1: {} 888 | 889 | ieee754@1.2.1: {} 890 | 891 | ignore@5.3.2: {} 892 | 893 | ignore@7.0.4: {} 894 | 895 | import-fresh@3.3.1: 896 | dependencies: 897 | parent-module: 1.0.1 898 | resolve-from: 4.0.0 899 | 900 | imurmurhash@0.1.4: {} 901 | 902 | ini@1.3.8: {} 903 | 904 | is-arrayish@0.2.1: {} 905 | 906 | is-extglob@2.1.1: {} 907 | 908 | is-fullwidth-code-point@3.0.0: {} 909 | 910 | is-glob@4.0.3: 911 | dependencies: 912 | is-extglob: 2.1.1 913 | 914 | is-number@7.0.0: {} 915 | 916 | is-plain-object@5.0.0: {} 917 | 918 | isexe@2.0.0: {} 919 | 920 | js-tokens@4.0.0: {} 921 | 922 | js-yaml@4.1.0: 923 | dependencies: 924 | argparse: 2.0.1 925 | 926 | json-parse-even-better-errors@2.3.1: {} 927 | 928 | json-schema-traverse@1.0.0: {} 929 | 930 | keyv@5.3.3: 931 | dependencies: 932 | '@keyv/serialize': 1.0.3 933 | 934 | kind-of@6.0.3: {} 935 | 936 | known-css-properties@0.36.0: {} 937 | 938 | lines-and-columns@1.2.4: {} 939 | 940 | lodash.truncate@4.4.2: {} 941 | 942 | mathml-tag-names@2.1.3: {} 943 | 944 | mdn-data@2.12.2: {} 945 | 946 | mdn-data@2.21.0: {} 947 | 948 | meow@13.2.0: {} 949 | 950 | merge2@1.4.1: {} 951 | 952 | micromatch@4.0.8: 953 | dependencies: 954 | braces: 3.0.3 955 | picomatch: 2.3.1 956 | 957 | ms@2.1.3: {} 958 | 959 | nanoid@3.3.11: {} 960 | 961 | normalize-path@3.0.0: {} 962 | 963 | parent-module@1.0.1: 964 | dependencies: 965 | callsites: 3.1.0 966 | 967 | parse-json@5.2.0: 968 | dependencies: 969 | '@babel/code-frame': 7.27.1 970 | error-ex: 1.3.2 971 | json-parse-even-better-errors: 2.3.1 972 | lines-and-columns: 1.2.4 973 | 974 | path-type@4.0.0: {} 975 | 976 | picocolors@1.1.1: {} 977 | 978 | picomatch@2.3.1: {} 979 | 980 | postcss-media-query-parser@0.2.3: {} 981 | 982 | postcss-resolve-nested-selector@0.1.6: {} 983 | 984 | postcss-safe-parser@7.0.1(postcss@8.5.4): 985 | dependencies: 986 | postcss: 8.5.4 987 | 988 | postcss-scss@4.0.9(postcss@8.5.4): 989 | dependencies: 990 | postcss: 8.5.4 991 | 992 | postcss-selector-parser@7.1.0: 993 | dependencies: 994 | cssesc: 3.0.0 995 | util-deprecate: 1.0.2 996 | 997 | postcss-value-parser@4.2.0: {} 998 | 999 | postcss@8.5.4: 1000 | dependencies: 1001 | nanoid: 3.3.11 1002 | picocolors: 1.1.1 1003 | source-map-js: 1.2.1 1004 | 1005 | prettier@3.5.3: {} 1006 | 1007 | queue-microtask@1.2.3: {} 1008 | 1009 | require-from-string@2.0.2: {} 1010 | 1011 | resolve-from@4.0.0: {} 1012 | 1013 | resolve-from@5.0.0: {} 1014 | 1015 | reusify@1.1.0: {} 1016 | 1017 | rollup@4.41.1: 1018 | dependencies: 1019 | '@types/estree': 1.0.7 1020 | optionalDependencies: 1021 | '@rollup/rollup-android-arm-eabi': 4.41.1 1022 | '@rollup/rollup-android-arm64': 4.41.1 1023 | '@rollup/rollup-darwin-arm64': 4.41.1 1024 | '@rollup/rollup-darwin-x64': 4.41.1 1025 | '@rollup/rollup-freebsd-arm64': 4.41.1 1026 | '@rollup/rollup-freebsd-x64': 4.41.1 1027 | '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 1028 | '@rollup/rollup-linux-arm-musleabihf': 4.41.1 1029 | '@rollup/rollup-linux-arm64-gnu': 4.41.1 1030 | '@rollup/rollup-linux-arm64-musl': 4.41.1 1031 | '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 1032 | '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 1033 | '@rollup/rollup-linux-riscv64-gnu': 4.41.1 1034 | '@rollup/rollup-linux-riscv64-musl': 4.41.1 1035 | '@rollup/rollup-linux-s390x-gnu': 4.41.1 1036 | '@rollup/rollup-linux-x64-gnu': 4.41.1 1037 | '@rollup/rollup-linux-x64-musl': 4.41.1 1038 | '@rollup/rollup-win32-arm64-msvc': 4.41.1 1039 | '@rollup/rollup-win32-ia32-msvc': 4.41.1 1040 | '@rollup/rollup-win32-x64-msvc': 4.41.1 1041 | fsevents: 2.3.3 1042 | 1043 | run-parallel@1.2.0: 1044 | dependencies: 1045 | queue-microtask: 1.2.3 1046 | 1047 | signal-exit@4.1.0: {} 1048 | 1049 | slash@3.0.0: {} 1050 | 1051 | slice-ansi@4.0.0: 1052 | dependencies: 1053 | ansi-styles: 4.3.0 1054 | astral-regex: 2.0.0 1055 | is-fullwidth-code-point: 3.0.0 1056 | 1057 | source-map-js@1.2.1: {} 1058 | 1059 | string-width@4.2.3: 1060 | dependencies: 1061 | emoji-regex: 8.0.0 1062 | is-fullwidth-code-point: 3.0.0 1063 | strip-ansi: 6.0.1 1064 | 1065 | strip-ansi@6.0.1: 1066 | dependencies: 1067 | ansi-regex: 5.0.1 1068 | 1069 | stylelint-config-recommended-scss@15.0.1(postcss@8.5.4)(stylelint@16.20.0): 1070 | dependencies: 1071 | postcss-scss: 4.0.9(postcss@8.5.4) 1072 | stylelint: 16.20.0 1073 | stylelint-config-recommended: 16.0.0(stylelint@16.20.0) 1074 | stylelint-scss: 6.12.0(stylelint@16.20.0) 1075 | optionalDependencies: 1076 | postcss: 8.5.4 1077 | 1078 | stylelint-config-recommended@16.0.0(stylelint@16.20.0): 1079 | dependencies: 1080 | stylelint: 16.20.0 1081 | 1082 | stylelint-config-standard-scss@15.0.1(postcss@8.5.4)(stylelint@16.20.0): 1083 | dependencies: 1084 | stylelint: 16.20.0 1085 | stylelint-config-recommended-scss: 15.0.1(postcss@8.5.4)(stylelint@16.20.0) 1086 | stylelint-config-standard: 38.0.0(stylelint@16.20.0) 1087 | optionalDependencies: 1088 | postcss: 8.5.4 1089 | 1090 | stylelint-config-standard@38.0.0(stylelint@16.20.0): 1091 | dependencies: 1092 | stylelint: 16.20.0 1093 | stylelint-config-recommended: 16.0.0(stylelint@16.20.0) 1094 | 1095 | stylelint-scss@6.12.0(stylelint@16.20.0): 1096 | dependencies: 1097 | css-tree: 3.1.0 1098 | is-plain-object: 5.0.0 1099 | known-css-properties: 0.36.0 1100 | mdn-data: 2.21.0 1101 | postcss-media-query-parser: 0.2.3 1102 | postcss-resolve-nested-selector: 0.1.6 1103 | postcss-selector-parser: 7.1.0 1104 | postcss-value-parser: 4.2.0 1105 | stylelint: 16.20.0 1106 | 1107 | stylelint@16.20.0: 1108 | dependencies: 1109 | '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 1110 | '@csstools/css-tokenizer': 3.0.4 1111 | '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) 1112 | '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) 1113 | '@dual-bundle/import-meta-resolve': 4.1.0 1114 | balanced-match: 2.0.0 1115 | colord: 2.9.3 1116 | cosmiconfig: 9.0.0 1117 | css-functions-list: 3.2.3 1118 | css-tree: 3.1.0 1119 | debug: 4.4.1 1120 | fast-glob: 3.3.3 1121 | fastest-levenshtein: 1.0.16 1122 | file-entry-cache: 10.1.0 1123 | global-modules: 2.0.0 1124 | globby: 11.1.0 1125 | globjoin: 0.1.4 1126 | html-tags: 3.3.1 1127 | ignore: 7.0.4 1128 | imurmurhash: 0.1.4 1129 | is-plain-object: 5.0.0 1130 | known-css-properties: 0.36.0 1131 | mathml-tag-names: 2.1.3 1132 | meow: 13.2.0 1133 | micromatch: 4.0.8 1134 | normalize-path: 3.0.0 1135 | picocolors: 1.1.1 1136 | postcss: 8.5.4 1137 | postcss-resolve-nested-selector: 0.1.6 1138 | postcss-safe-parser: 7.0.1(postcss@8.5.4) 1139 | postcss-selector-parser: 7.1.0 1140 | postcss-value-parser: 4.2.0 1141 | resolve-from: 5.0.0 1142 | string-width: 4.2.3 1143 | supports-hyperlinks: 3.2.0 1144 | svg-tags: 1.0.0 1145 | table: 6.9.0 1146 | write-file-atomic: 5.0.1 1147 | transitivePeerDependencies: 1148 | - supports-color 1149 | - typescript 1150 | 1151 | supports-color@7.2.0: 1152 | dependencies: 1153 | has-flag: 4.0.0 1154 | 1155 | supports-hyperlinks@3.2.0: 1156 | dependencies: 1157 | has-flag: 4.0.0 1158 | supports-color: 7.2.0 1159 | 1160 | svg-tags@1.0.0: {} 1161 | 1162 | table@6.9.0: 1163 | dependencies: 1164 | ajv: 8.17.1 1165 | lodash.truncate: 4.4.2 1166 | slice-ansi: 4.0.0 1167 | string-width: 4.2.3 1168 | strip-ansi: 6.0.1 1169 | 1170 | to-regex-range@5.0.1: 1171 | dependencies: 1172 | is-number: 7.0.0 1173 | 1174 | util-deprecate@1.0.2: {} 1175 | 1176 | which@1.3.1: 1177 | dependencies: 1178 | isexe: 2.0.0 1179 | 1180 | write-file-atomic@5.0.1: 1181 | dependencies: 1182 | imurmurhash: 0.1.4 1183 | signal-exit: 4.1.0 1184 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | { 3 | input: 'index.js', 4 | output: { 5 | file: 'dist/index.js', 6 | format: 'es', 7 | }, 8 | }, 9 | { 10 | input: 'index.js', 11 | output: { 12 | file: 'dist/index.cjs', 13 | format: 'cjs', 14 | }, 15 | }, 16 | ]; 17 | -------------------------------------------------------------------------------- /test/css.js: -------------------------------------------------------------------------------- 1 | import path from 'node:path'; 2 | import test from 'node:test'; 3 | import assert from 'node:assert/strict'; 4 | import stylelint from 'stylelint'; 5 | 6 | const config = { 7 | extends: [ 8 | 'stylelint-config-standard', 9 | path.join(import.meta.dirname, '..', 'index.js'), 10 | ], 11 | }; 12 | 13 | test('should not results errors nor warnings', async () => { 14 | const data = await stylelint.lint({ 15 | config, 16 | files: 'test/*.css', 17 | }); 18 | 19 | const { errored, results } = data; 20 | const { warnings } = results[0]; 21 | 22 | assert.equal(errored, false, 'no errors'); 23 | assert.equal(warnings.length, 0, 'no warnings'); 24 | }); 25 | -------------------------------------------------------------------------------- /test/fixtures.css: -------------------------------------------------------------------------------- 1 | @value grey: #ccc; 2 | @value colors: "./colors.css"; 3 | @value primary, secondary from colors; 4 | @value small as bp-small, large as bp-large from "./breakpoints.css"; 5 | 6 | .base { 7 | content: "base"; 8 | color: grey; 9 | } 10 | 11 | .composed { 12 | composes: base; 13 | } 14 | 15 | .composed-with { 16 | compose-with: base; 17 | } 18 | 19 | .flexible { 20 | composes: flex from "./utils.css"; 21 | flex-direction: column; 22 | } 23 | 24 | .globals { 25 | composes: u-whatever from global; 26 | composes: global(u-whatsoever); 27 | compose-with: global(u-anything); 28 | } 29 | 30 | :global(.js) .progressive { 31 | display: block; 32 | } 33 | 34 | :export { 35 | black: #000; 36 | white: #111; 37 | } 38 | 39 | :import("./path/to/file.css") { 40 | alias: keyfromfile; 41 | } 42 | 43 | /** 44 | * Modular CSS 45 | * https://github.com/tivac/modular-css 46 | */ 47 | .fieldset :external(input from "./input.css") { 48 | width: 50%; 49 | } 50 | -------------------------------------------------------------------------------- /test/fixtures.scss: -------------------------------------------------------------------------------- 1 | @use "sass:math"; 2 | 3 | @value grey: #ccc; 4 | 5 | .globals { 6 | composes: global(u-whatsoever); 7 | } 8 | 9 | @mixin foo() { 10 | @content; 11 | } 12 | 13 | .test { 14 | content: math.div(42, 5); 15 | } 16 | -------------------------------------------------------------------------------- /test/scss.js: -------------------------------------------------------------------------------- 1 | import path from 'node:path'; 2 | import test from 'node:test'; 3 | import assert from 'node:assert/strict'; 4 | import stylelint from 'stylelint'; 5 | 6 | const config = { 7 | extends: [ 8 | 'stylelint-config-standard', 9 | path.join(import.meta.dirname, '..', 'index.js'), 10 | ], 11 | }; 12 | 13 | test('should not results errors nor warnings', async () => { 14 | const data = await stylelint.lint({ 15 | config, 16 | files: 'test/*.scss', 17 | }); 18 | 19 | const { errored, results } = data; 20 | const { warnings } = results[0]; 21 | 22 | assert.equal(errored, false, 'no errors'); 23 | assert.equal(warnings.length, 0, 'no warnings'); 24 | }); 25 | --------------------------------------------------------------------------------