├── .npmignore ├── .gitignore ├── .github ├── FUNDING.yml └── workflows │ ├── release.yml │ └── test.yml ├── eslint.config.mjs ├── .editorconfig ├── index.d.ts ├── LICENSE ├── package.json ├── CHANGELOG.md ├── index.js ├── README.md ├── index.test.js └── pnpm-lock.yaml /.npmignore: -------------------------------------------------------------------------------- 1 | *.test.js 2 | coverage/ 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | coverage/ 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: postcss 2 | github: ai 3 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import loguxConfig from '@logux/eslint-config' 2 | 3 | export default [...loguxConfig] 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | import type { PluginCreator } from 'postcss' 2 | 3 | declare const darkClass: PluginCreator<{ 4 | darkSelector?: string 5 | lightSelector?: string 6 | rootSelector?: string | string[] 7 | useWhere?: boolean 8 | removeMedia?: boolean 9 | }> 10 | 11 | export = darkClass 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright 2019 Andrey Sitnik 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | on: 3 | push: 4 | tags: 5 | - '*' 6 | permissions: 7 | contents: write 8 | jobs: 9 | release: 10 | name: Release On Tag 11 | if: startsWith(github.ref, 'refs/tags/') 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout the repository 15 | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 16 | - name: Extract the changelog 17 | id: changelog 18 | run: | 19 | TAG_NAME=${GITHUB_REF/refs\/tags\//} 20 | READ_SECTION=false 21 | CHANGELOG="" 22 | while IFS= read -r line; do 23 | if [[ "$line" =~ ^#+\ +(.*) ]]; then 24 | if [[ "${BASH_REMATCH[1]}" == "$TAG_NAME" ]]; then 25 | READ_SECTION=true 26 | elif [[ "$READ_SECTION" == true ]]; then 27 | break 28 | fi 29 | elif [[ "$READ_SECTION" == true ]]; then 30 | CHANGELOG+="$line"$'\n' 31 | fi 32 | done < "CHANGELOG.md" 33 | CHANGELOG=$(echo "$CHANGELOG" | awk '/./ {$1=$1;print}') 34 | echo "changelog_content<> $GITHUB_OUTPUT 35 | echo "$CHANGELOG" >> $GITHUB_OUTPUT 36 | echo "EOF" >> $GITHUB_OUTPUT 37 | - name: Create the release 38 | if: steps.changelog.outputs.changelog_content != '' 39 | uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2 40 | with: 41 | name: ${{ github.ref_name }} 42 | body: '${{ steps.changelog.outputs.changelog_content }}' 43 | draft: false 44 | prerelease: false 45 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | permissions: 8 | contents: read 9 | jobs: 10 | full: 11 | name: Node.js Latest Full 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout the repository 15 | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 16 | - name: Install pnpm 17 | uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 18 | with: 19 | version: 10 20 | - name: Install Node.js 21 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 22 | with: 23 | node-version: 24 24 | cache: pnpm 25 | - name: Install dependencies 26 | run: pnpm install --ignore-scripts 27 | - name: Run tests 28 | run: pnpm test 29 | short: 30 | runs-on: ubuntu-latest 31 | strategy: 32 | matrix: 33 | node-version: 34 | - 22 35 | - 20 36 | name: Node.js ${{ matrix.node-version }} Quick 37 | steps: 38 | - name: Checkout the repository 39 | uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 40 | - name: Install pnpm 41 | uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 42 | with: 43 | version: 10 44 | - name: Install Node.js ${{ matrix.node-version }} 45 | uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 46 | with: 47 | node-version: ${{ matrix.node-version }} 48 | cache: pnpm 49 | - name: Install dependencies 50 | run: pnpm install --ignore-scripts 51 | - name: Run unit tests 52 | run: pnpm unit 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "postcss-dark-theme-class", 3 | "version": "2.0.0", 4 | "description": "CSS solution for light/dark/auto theme switcher for websites", 5 | "keywords": [ 6 | "postcss", 7 | "css", 8 | "postcss-plugin", 9 | "dark", 10 | "dark-theme", 11 | "light", 12 | "auto-theme", 13 | "theme-switcher" 14 | ], 15 | "scripts": { 16 | "unit": "node --test index.test.js", 17 | "test:coverage": "c8 pnpm unit", 18 | "test:lint": "eslint .", 19 | "test": "pnpm run /^test:/" 20 | }, 21 | "author": "Andrey Sitnik ", 22 | "license": "MIT", 23 | "repository": "postcss/postcss-dark-theme-class", 24 | "engines": { 25 | "node": ">=20.0" 26 | }, 27 | "funding": [ 28 | { 29 | "type": "opencollective", 30 | "url": "https://opencollective.com/postcss/" 31 | }, 32 | { 33 | "type": "github", 34 | "url": "https://github.com/sponsors/ai" 35 | } 36 | ], 37 | "peerDependencies": { 38 | "postcss": "^8.2.14" 39 | }, 40 | "devDependencies": { 41 | "@logux/eslint-config": "^56.1.0", 42 | "actions-up": "^1.3.0", 43 | "c8": "^10.1.3", 44 | "clean-publish": "^5.2.2", 45 | "eslint": "^9.34.0", 46 | "postcss": "^8.5.6" 47 | }, 48 | "prettier": { 49 | "arrowParens": "avoid", 50 | "jsxSingleQuote": false, 51 | "quoteProps": "consistent", 52 | "semi": false, 53 | "singleQuote": true, 54 | "trailingComma": "none" 55 | }, 56 | "eslintConfig": { 57 | "extends": "@logux/eslint-config" 58 | }, 59 | "c8": { 60 | "exclude": [ 61 | "**/*.test.*" 62 | ], 63 | "lines": 100, 64 | "reporter": "lcov", 65 | "check-coverage": true 66 | }, 67 | "clean-publish": { 68 | "cleanDocs": true 69 | }, 70 | "dependencies": { 71 | "postcss-value-parser": "^4.2.0" 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | This project adheres to [Semantic Versioning](http://semver.org/). 3 | 4 | ## 2.0.0 5 | * Removed Node.js 18 support. 6 | * Fixed types. 7 | 8 | ## 1.3.0 9 | * Added `removeMedia` option (by @aletorrado). 10 | 11 | ## 1.2.3 12 | * Fixed `light-dark()` support in complex values (by @VladBrok). 13 | * Fixed source map for `light-dark()` (by @romainmenke). 14 | 15 | ## 1.2.2 16 | * Fixed `!important` for `light-dark()` (by @yuheiy). 17 | 18 | ## 1.2.1 19 | * Fixed function support inside `light-dark()` (by @VladBrok). 20 | 21 | ## 1.2.0 22 | * Added `light-dark()` support (by @VladBrok). 23 | 24 | ## 1.1 25 | * Added TypeScript types. 26 | 27 | ## 1.0 28 | * Added `preferred-color-scheme: light` support (by Natalia Nagaeva). 29 | 30 | ## 0.8 31 | * Moved to `:where()` to keep specificity. 32 | * Removed Node.js 12, 14, and 16 support. 33 | * Fixed docs (by Qi Luo). 34 | 35 | ## 0.7.3 36 | * Reduced package size. 37 | 38 | ## 0.7.2 39 | * Improved docs. 40 | 41 | ## 0.7.1 42 | * Fixed compatibility with other PostCSS plugins. 43 | 44 | ## 0.7 45 | * Added already transformed rules ignoring. 46 | 47 | ## 0.6 48 | * Added `rootSelector` option. 49 | 50 | ## 0.5.2 51 | * Fixed parsing comments in at-rule (by @nobuhikosawai). 52 | 53 | ## 0.5.1 54 | * Added funding links. 55 | 56 | ## 0.5 57 | * Moved to PostCSS 8. 58 | * Moved `postcss` to `peerDependencies`. 59 | 60 | ## 0.4 61 | * Replace `lightClass` with `lightSelector` (by Mattia Astorino). 62 | * Replace `darkClass` with `darkSelector` (by Mattia Astorino). 63 | 64 | ## 0.3 65 | * Add support for queries like 66 | `(min-width: 600px) and (prefers-color-scheme: dark)`. 67 | 68 | ## 0.2.2 69 | * Show error on `.` in the beggining of `opts.darkClass` or `opts.lightClass`. 70 | 71 | ## 0.2.1 72 | * Improve docs (by Martijn Cuppens). 73 | 74 | ## 0.2 75 | * Add `lightClass`. 76 | 77 | ## 0.1 78 | * Initial release. 79 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | let valueParser = require('postcss-value-parser') 2 | 3 | const PREFERS_COLOR_ONLY = /^\(\s*prefers-color-scheme\s*:\s*(dark|light)\s*\)$/ 4 | const PREFERS_COLOR = /\(\s*prefers-color-scheme\s*:\s*(dark|light)\s*\)/g 5 | 6 | function escapeRegExp(string) { 7 | return string.replace(/[$()*+.?[\\\]^{|}-]/g, '\\$&') 8 | } 9 | 10 | function replaceAll(string, find, replace) { 11 | return string.replace(new RegExp(escapeRegExp(find), 'g'), replace) 12 | } 13 | 14 | function addColorSchemeMedia(isDark, propValue, declaration, postcss) { 15 | let mediaQuery = postcss.atRule({ 16 | name: 'media', 17 | params: `(prefers-color-scheme:${isDark ? 'dark' : 'light'})`, 18 | source: declaration.source 19 | }) 20 | mediaQuery.append( 21 | postcss.rule({ 22 | nodes: [ 23 | postcss.decl({ 24 | important: declaration.important, 25 | prop: declaration.prop, 26 | source: declaration.source, 27 | value: propValue 28 | }) 29 | ], 30 | selector: declaration.parent.selector, 31 | source: declaration.source 32 | }) 33 | ) 34 | declaration.parent.after(mediaQuery) 35 | } 36 | 37 | function extractLightDark(isDark, declarationValue) { 38 | let parsed = valueParser(declarationValue) 39 | mutateLightDarkRec(isDark, parsed) 40 | return valueParser.stringify(parsed) 41 | } 42 | 43 | function mutateLightDarkRec(isDark, parsed) { 44 | let wasMutated = false 45 | parsed.walk(node => { 46 | if (wasMutated || node.type !== 'function' || node.value !== 'light-dark') { 47 | return 48 | } 49 | 50 | let light = node.nodes[0] 51 | let dark = node.nodes.find((child, index) => { 52 | return index > 0 && (child.type === 'word' || child.type === 'function') 53 | }) 54 | Object.assign(node, isDark ? dark : light) 55 | mutateLightDarkRec(isDark, parsed) 56 | wasMutated = true 57 | return false 58 | }) 59 | } 60 | 61 | module.exports = (opts = {}) => { 62 | let dark = opts.darkSelector || '.is-dark' 63 | let light = opts.lightSelector || '.is-light' 64 | 65 | let roots = opts.rootSelector || ['html', ':root'] 66 | if (!Array.isArray(roots)) roots = [roots] 67 | 68 | let useWhere = opts.useWhere ?? true 69 | 70 | let removeMedia = opts.removeMedia ?? false 71 | 72 | let uniqueRoots = roots 73 | if (uniqueRoots.includes('html')) { 74 | uniqueRoots = uniqueRoots.filter(i => i !== ':root') 75 | } 76 | 77 | function processSelectors(selectors, add) { 78 | return selectors.map(selector => { 79 | let changed = false 80 | for (let root of roots) { 81 | if (selector.includes(root)) { 82 | changed = true 83 | if (useWhere) { 84 | selector = replaceAll(selector, root, `${root}:where(${add})`) 85 | } else { 86 | selector = replaceAll(selector, root, `${root}${add}`) 87 | } 88 | } 89 | } 90 | if (!changed) { 91 | selector = uniqueRoots 92 | .map(root => { 93 | if (useWhere) { 94 | return `:where(${root}${add}) ${selector}` 95 | } else { 96 | return `${root}${add} ${selector}` 97 | } 98 | }) 99 | .join(',') 100 | } 101 | return selector 102 | }) 103 | } 104 | 105 | function processNodes(parent, add) { 106 | parent.each(node => { 107 | if (node.type === 'atrule') { 108 | processNodes(node, add) 109 | } else if (node.type === 'rule') { 110 | node.selectors = processSelectors(node.selectors, add) 111 | } 112 | }) 113 | } 114 | 115 | return { 116 | AtRuleExit: { 117 | media(atrule) { 118 | let params = atrule.params 119 | if (!params.includes('dark') && !params.includes('light')) { 120 | return 121 | } 122 | 123 | let fixedSelector = params.includes('dark') ? dark : light 124 | let nodeSelector = `:not(${params.includes('dark') ? light : dark})` 125 | 126 | if (PREFERS_COLOR_ONLY.test(params)) { 127 | let last = atrule 128 | atrule.each(node => { 129 | let fixed 130 | if (node.type === 'atrule') { 131 | fixed = node.clone() 132 | processNodes(fixed, fixedSelector) 133 | if (!removeMedia) { 134 | processNodes(node, nodeSelector) 135 | } 136 | } else if (node.type === 'rule') { 137 | if (!node.selector.includes(nodeSelector)) { 138 | fixed = node.clone({ 139 | selectors: processSelectors(node.selectors, fixedSelector) 140 | }) 141 | if (!removeMedia) { 142 | node.selectors = processSelectors( 143 | node.selectors, 144 | nodeSelector 145 | ) 146 | } 147 | } 148 | } else if (node.type === 'comment') { 149 | fixed = node.clone() 150 | } 151 | if (fixed) { 152 | last.after(fixed) 153 | last = fixed 154 | } 155 | }) 156 | if (removeMedia) { 157 | atrule.remove() 158 | } 159 | } else if (PREFERS_COLOR.test(params) && params.includes(' and ')) { 160 | if (atrule.params.includes(' and ')) { 161 | let fixed = atrule.clone({ 162 | params: atrule.params 163 | .replace(PREFERS_COLOR, '') 164 | .replace(/\s+and\s+and/i, ' and') 165 | .replace(/^\s*and\s+/i, '') 166 | .replace(/\s+and\s*$/i, '') 167 | }) 168 | atrule.after(fixed) 169 | processNodes(fixed, fixedSelector) 170 | if (!removeMedia) { 171 | processNodes(atrule, nodeSelector) 172 | } else { 173 | atrule.remove() 174 | } 175 | } 176 | } 177 | } 178 | }, 179 | DeclarationExit: (declaration, { postcss }) => { 180 | if (!declaration.value.includes('light-dark')) return 181 | 182 | let lightValue = extractLightDark(false, declaration.value) 183 | if (lightValue === declaration.value) return 184 | let darkValue = extractLightDark(true, declaration.value) 185 | 186 | addColorSchemeMedia(false, lightValue, declaration, postcss) 187 | addColorSchemeMedia(true, darkValue, declaration, postcss) 188 | 189 | let parent = declaration.parent 190 | declaration.remove() 191 | if (parent.nodes.length === 0) { 192 | parent.remove() 193 | } 194 | }, 195 | postcssPlugin: 'postcss-dark-theme-class' 196 | } 197 | } 198 | module.exports.postcss = true 199 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PostCSS Dark Theme Class 2 | 3 | 6 | 7 | CSS solution for light/dark/auto theme switcher for websites. 8 | 9 | * It doesn’t have [FART] **flash of light theme** during JS initialization. 10 | * **Pure CSS** solution. You need JS only to set HTML class, when user. 11 | * **Automatic theme** provide better UX for users with theme switching 12 | by subset/sunrise (all operating systems now have theme switching schedule). 13 | 14 | [PostCSS] plugin to make switcher to force dark or light theme by copying styles 15 | from media query or [`light-dark()`] to special class. 16 | 17 | [PostCSS]: https://github.com/postcss/postcss 18 | [FART]: https://css-tricks.com/flash-of-inaccurate-color-theme-fart/ 19 | [`light-dark()`]: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/light-dark 20 | 21 | ```css 22 | /* Input CSS */ 23 | 24 | @media (prefers-color-scheme: dark) { 25 | html { 26 | --text-color: white 27 | } 28 | body { 29 | background: black 30 | } 31 | } 32 | 33 | section { 34 | background: light-dark(white, black); 35 | } 36 | ``` 37 | 38 | ```css 39 | /* Output CSS */ 40 | 41 | @media (prefers-color-scheme: dark) { 42 | html:where(:not(.is-light)) { 43 | --text-color: white 44 | } 45 | :where(html:not(.is-light)) body { 46 | background: black 47 | } 48 | } 49 | html:where(.is-dark) { 50 | --text-color: white 51 | } 52 | :where(html.is-dark) body { 53 | background: black 54 | } 55 | 56 | @media (prefers-color-scheme: dark) { 57 | :where(html:not(.is-light)) section { 58 | background: black; 59 | } 60 | } 61 | :where(html.is-dark) section { 62 | background: black; 63 | } 64 | @media (prefers-color-scheme: light) { 65 | :where(html:not(.is-dark)) section { 66 | background: white; 67 | } 68 | } 69 | :where(html.is-light) section { 70 | background: white; 71 | } 72 | ``` 73 | 74 | By default (without classes on `html`), website will use browser dark/light 75 | theme. If user want to use dark theme, you set `html.is-dark` class. 76 | If user want to force light theme, you use `html.is-light`. 77 | 78 | 79 | Sponsored by Evil Martians 81 | 82 | 83 | 84 | ## Usage 85 | 86 | **Step 1:** Install plugin: 87 | 88 | ```sh 89 | npm install --save-dev postcss postcss-dark-theme-class 90 | ``` 91 | 92 | **Step 2:** Check your project for existing PostCSS config: `postcss.config.js` 93 | in the project root, `"postcss"` section in `package.json` 94 | or `postcss` in bundle config. 95 | 96 | If you do not use PostCSS, add it according to [official docs] 97 | and set this plugin in settings. 98 | 99 | **Step 3:** Add the plugin to plugins list: 100 | 101 | ```diff 102 | module.exports = { 103 | plugins: [ 104 | + require('postcss-dark-theme-class'), 105 | require('autoprefixer') 106 | ] 107 | } 108 | ``` 109 | 110 | **Step 4:** Add theme switcher to UI. We recommend to have 3 states: light, 111 | dark, and auto. 112 | 113 | **Step 5:** Set `is-dark` and `is-light` classes to `` according 114 | to switcher state: 115 | 116 | ```html 117 | 122 | ``` 123 | 124 | ```js 125 | const html = document.documentElement 126 | const themeSwitcher = document.getElementById('themeSwitcher') 127 | 128 | themeSwitcher.addEventListener('change', () => { 129 | 130 | if (themeSwitcher.value === 'auto') { 131 | html.classList.remove('is-dark', 'is-light') 132 | 133 | } else if (themeSwitcher.value === 'light') { 134 | html.classList.add('is-light') 135 | html.classList.remove('is-dark') 136 | 137 | } else if (themeSwitcher.value === 'dark') { 138 | html.classList.add('is-dark') 139 | html.classList.remove('is-light') 140 | 141 | } 142 | }) 143 | ``` 144 | 145 | **Step 6:** Save user’s choice in `localStorage`. 146 | 147 | 148 | ```diff 149 | const html = document.documentElement 150 | const themeSwitcher = document.getElementById('themeSwitcher') 151 | 152 | themeSwitcher.addEventListener('change', () => { 153 | + localStorage.theme = themeSwitcher.value 154 | 155 | if (themeSwitcher.value === 'auto') { 156 | html.classList.remove('is-dark', 'is-light') 157 | 158 | } else if (themeSwitcher.value === 'light') { 159 | html.classList.add('is-light') 160 | html.classList.remove('is-dark') 161 | 162 | } else if (themeSwitcher.value === 'dark') { 163 | html.classList.add('is-dark') 164 | html.classList.remove('is-light') 165 | 166 | } 167 | }) 168 | 169 | + if (localStorage.theme) { 170 | + themeSwitcher.value = localStorage.theme ?? "auto"; 171 | + themeSwitcher.dispatchEvent(new Event("change")); 172 | + } 173 | ``` 174 | 175 | **Step 7:** Think of adding a small inline JS to prevent [FART] completely. 176 | 177 | ```html 178 | 185 | 186 | ``` 187 | 188 | [official docs]: https://github.com/postcss/postcss#usage 189 | 190 | 191 | ## Options 192 | 193 | ```js 194 | module.exports = { 195 | plugins: [ 196 | require('postcss-dark-theme-class')({ 197 | darkSelector: '.dark-theme', 198 | lightSelector: '.light-theme' 199 | }) 200 | ] 201 | } 202 | ``` 203 | 204 | 205 | ### `darkSelector` 206 | 207 | Type: `string`. Default: `.is-dark`. 208 | 209 | Any CSS’s valid selector for `` (alias for `:root`), which will switch 210 | dark theme. Use `darkSelector: '[data-theme="dark"]'` if you will switch theme 211 | by setting `` 212 | 213 | 214 | ### `lightSelector` 215 | 216 | Type: `string`. Default: `.is-light`. 217 | 218 | Any CSS’s valid selector, which will switch light theme. 219 | Use `lightSelector: '[data-theme="light"]'` if you will switch theme by setting 220 | `` 221 | 222 | 223 | ## `rootSelector` 224 | 225 | Type: `string[]`, `string`. Default: `['html', ':root']`. 226 | 227 | Selector for node for CSS Custom properties and dark/light theme classes. 228 | 229 | 230 | ## `useWhere` 231 | 232 | Type: `boolean`. Default: `true`. 233 | 234 | Should plugin wrap added selector to `:where()` to keep origin specificity. 235 | 236 | 237 | ## `removeMedia` 238 | 239 | Type: `boolean`. Default: `false`. 240 | 241 | Should plugin remove origin `@media` and keep only classes. It could be useful 242 | when only JS is responsible for theme switching. 243 | 244 | If you are using this option, don’t forget: 245 | 1. That theme should have 3 values: light, system, dark. 246 | 2. To subscribe for system theme switching in JS. 247 | 248 | We do not recommend this option for most of the cases, because of light flash 249 | when user visit your app with dark system theme and until JS will be loaded. 250 | -------------------------------------------------------------------------------- /index.test.js: -------------------------------------------------------------------------------- 1 | let { equal } = require('node:assert') 2 | let { test } = require('node:test') 3 | let postcss = require('postcss') 4 | 5 | let plugin = require('./') 6 | 7 | function run(input, output, opts) { 8 | let result = postcss([plugin(opts)]).process(input, { from: undefined }) 9 | equal(result.css, output) 10 | equal(result.warnings().length, 0) 11 | } 12 | 13 | test('replaces selectors - dark scheme', () => { 14 | run( 15 | `@media (prefers-color-scheme:dark) { 16 | html.is-a, 17 | html, 18 | :root, 19 | a { } 20 | }`, 21 | `@media (prefers-color-scheme:dark) { 22 | html:where(:not(.is-light)).is-a, 23 | html:where(:not(.is-light)), 24 | :root:where(:not(.is-light)), 25 | :where(html:not(.is-light)) a { } 26 | } 27 | html:where(.is-dark).is-a, 28 | html:where(.is-dark), 29 | :root:where(.is-dark), 30 | :where(html.is-dark) a { }` 31 | ) 32 | }) 33 | 34 | test('replaces selectors - light scheme', () => { 35 | run( 36 | `@media (prefers-color-scheme:light) { 37 | html.is-a, 38 | html, 39 | :root, 40 | a { } 41 | }`, 42 | `@media (prefers-color-scheme:light) { 43 | html:where(:not(.is-dark)).is-a, 44 | html:where(:not(.is-dark)), 45 | :root:where(:not(.is-dark)), 46 | :where(html:not(.is-dark)) a { } 47 | } 48 | html:where(.is-light).is-a, 49 | html:where(.is-light), 50 | :root:where(.is-light), 51 | :where(html.is-light) a { }` 52 | ) 53 | }) 54 | 55 | test('replaces selectors - dark and light schemes', () => { 56 | run( 57 | `@media (prefers-color-scheme:dark) { 58 | html.is-a, 59 | html, 60 | :root, 61 | a { } 62 | } 63 | @media (prefers-color-scheme:light) { 64 | html.is-a, 65 | html, 66 | :root, 67 | a { } 68 | }`, 69 | `@media (prefers-color-scheme:dark) { 70 | html:where(:not(.is-light)).is-a, 71 | html:where(:not(.is-light)), 72 | :root:where(:not(.is-light)), 73 | :where(html:not(.is-light)) a { } 74 | } 75 | html:where(.is-dark).is-a, 76 | html:where(.is-dark), 77 | :root:where(.is-dark), 78 | :where(html.is-dark) a { } 79 | @media (prefers-color-scheme:light) { 80 | html:where(:not(.is-dark)).is-a, 81 | html:where(:not(.is-dark)), 82 | :root:where(:not(.is-dark)), 83 | :where(html:not(.is-dark)) a { } 84 | } 85 | html:where(.is-light).is-a, 86 | html:where(.is-light), 87 | :root:where(.is-light), 88 | :where(html.is-light) a { }` 89 | ) 90 | }) 91 | 92 | test('disables :where() of request - dark scheme', () => { 93 | run( 94 | `@media (prefers-color-scheme:dark) { 95 | html.is-a, 96 | html, 97 | :root, 98 | a { } 99 | }`, 100 | `@media (prefers-color-scheme:dark) { 101 | html:not(.is-light).is-a, 102 | html:not(.is-light), 103 | :root:not(.is-light), 104 | html:not(.is-light) a { } 105 | } 106 | html.is-dark.is-a, 107 | html.is-dark, 108 | :root.is-dark, 109 | html.is-dark a { }`, 110 | { useWhere: false } 111 | ) 112 | }) 113 | 114 | test('disables :where() of request - light scheme', () => { 115 | run( 116 | `@media (prefers-color-scheme:light) { 117 | html.is-a, 118 | html, 119 | :root, 120 | a { } 121 | }`, 122 | `@media (prefers-color-scheme:light) { 123 | html:not(.is-dark).is-a, 124 | html:not(.is-dark), 125 | :root:not(.is-dark), 126 | html:not(.is-dark) a { } 127 | } 128 | html.is-light.is-a, 129 | html.is-light, 130 | :root.is-light, 131 | html.is-light a { }`, 132 | { useWhere: false } 133 | ) 134 | }) 135 | 136 | test('processes inner at-rules - dark scheme', () => { 137 | run( 138 | `@media (prefers-color-scheme: dark) { 139 | @media (min-width: 500px) { 140 | a { } 141 | } 142 | @media (min-width: 500px) { 143 | @media (print) { 144 | a { } 145 | } 146 | } 147 | }`, 148 | `@media (prefers-color-scheme: dark) { 149 | @media (min-width: 500px) { 150 | :where(html:not(.is-light)) a { } 151 | } 152 | @media (min-width: 500px) { 153 | @media (print) { 154 | :where(html:not(.is-light)) a { } 155 | } 156 | } 157 | } 158 | @media (min-width: 500px) { 159 | :where(html.is-dark) a { } 160 | } 161 | @media (min-width: 500px) { 162 | @media (print) { 163 | :where(html.is-dark) a { } 164 | } 165 | }` 166 | ) 167 | }) 168 | 169 | test('processes inner at-rules - light scheme', () => { 170 | run( 171 | `@media (prefers-color-scheme: light) { 172 | @media (min-width: 500px) { 173 | a { } 174 | } 175 | @media (min-width: 500px) { 176 | @media (print) { 177 | a { } 178 | } 179 | } 180 | }`, 181 | `@media (prefers-color-scheme: light) { 182 | @media (min-width: 500px) { 183 | :where(html:not(.is-dark)) a { } 184 | } 185 | @media (min-width: 500px) { 186 | @media (print) { 187 | :where(html:not(.is-dark)) a { } 188 | } 189 | } 190 | } 191 | @media (min-width: 500px) { 192 | :where(html.is-light) a { } 193 | } 194 | @media (min-width: 500px) { 195 | @media (print) { 196 | :where(html.is-light) a { } 197 | } 198 | }` 199 | ) 200 | }) 201 | 202 | test('checks media params deeply', () => { 203 | run( 204 | `@media (x-dark: true) { 205 | a { color: white } 206 | } 207 | @unknown (prefers-color-scheme: dark) { 208 | a { color: white } 209 | }`, 210 | `@media (x-dark: true) { 211 | a { color: white } 212 | } 213 | @unknown (prefers-color-scheme: dark) { 214 | a { color: white } 215 | }` 216 | ) 217 | }) 218 | 219 | test('ignores whitespaces', () => { 220 | run( 221 | `@media ( prefers-color-scheme:dark ) { 222 | a { color: white } 223 | }`, 224 | `@media ( prefers-color-scheme:dark ) { 225 | :where(html:not(.is-light)) a { color: white } 226 | } 227 | :where(html.is-dark) a { color: white }` 228 | ) 229 | }) 230 | 231 | test('reserve comments', () => { 232 | run( 233 | `@media (prefers-color-scheme:dark) { 234 | /* a */ 235 | a { color: white } 236 | @media (min-width: 500px) { /* b */ a { } } 237 | }`, 238 | `@media (prefers-color-scheme:dark) { 239 | /* a */ 240 | :where(html:not(.is-light)) a { color: white } 241 | @media (min-width: 500px) { /* b */ :where(html:not(.is-light)) a { } } 242 | } 243 | /* a */ 244 | :where(html.is-dark) a { color: white } 245 | @media (min-width: 500px) { /* b */ :where(html.is-dark) a { } }` 246 | ) 247 | }) 248 | 249 | test('supports combined queries - dark scheme', () => { 250 | run( 251 | `@media (min-width: 60px) and (prefers-color-scheme: dark) { 252 | a { color: white } 253 | }`, 254 | `@media (min-width: 60px) and (prefers-color-scheme: dark) { 255 | :where(html:not(.is-light)) a { color: white } 256 | }@media (min-width: 60px) { 257 | :where(html.is-dark) a { color: white } 258 | }` 259 | ) 260 | }) 261 | 262 | test('supports combined queries - light scheme', () => { 263 | run( 264 | `@media (min-width: 60px) and (prefers-color-scheme: light) { 265 | a { color: white } 266 | }`, 267 | `@media (min-width: 60px) and (prefers-color-scheme: light) { 268 | :where(html:not(.is-dark)) a { color: white } 269 | }@media (min-width: 60px) { 270 | :where(html.is-light) a { color: white } 271 | }` 272 | ) 273 | }) 274 | 275 | test('supports combined queries in the middle - dark scheme', () => { 276 | run( 277 | `@media (width > 0) and (prefers-color-scheme: dark) and (width > 0) { 278 | a { color: white } 279 | }`, 280 | `@media (width > 0) and (prefers-color-scheme: dark) and (width > 0) { 281 | :where(html:not(.is-light)) a { color: white } 282 | }@media (width > 0) and (width > 0) { 283 | :where(html.is-dark) a { color: white } 284 | }` 285 | ) 286 | }) 287 | 288 | test('supports combined queries in the middle - light scheme', () => { 289 | run( 290 | `@media (width > 0) and (prefers-color-scheme: light) and (width > 0) { 291 | a { color: white } 292 | }`, 293 | `@media (width > 0) and (prefers-color-scheme: light) and (width > 0) { 294 | :where(html:not(.is-dark)) a { color: white } 295 | }@media (width > 0) and (width > 0) { 296 | :where(html.is-light) a { color: white } 297 | }` 298 | ) 299 | }) 300 | 301 | test('allows to change class', () => { 302 | run( 303 | `@media (prefers-color-scheme: dark) { 304 | a { color: white } 305 | }`, 306 | `@media (prefers-color-scheme: dark) { 307 | :where(html:not(.light-theme)) a { color: white } 308 | } 309 | :where(html.dark-theme) a { color: white }`, 310 | { darkSelector: '.dark-theme', lightSelector: '.light-theme' } 311 | ) 312 | }) 313 | 314 | test('changes root selectors', () => { 315 | run( 316 | `@media (prefers-color-scheme: dark) { 317 | html, .s { --bg: black } 318 | p { color: white } 319 | } 320 | html, .s { --bg: white } 321 | p { color: black }`, 322 | `@media (prefers-color-scheme: dark) { 323 | html:where(:not(.is-light)), .s:where(:not(.is-light)) { --bg: black } 324 | :where(html:not(.is-light)) p,:where(.s:not(.is-light)) p { color: white } 325 | } 326 | html:where(.is-dark), .s:where(.is-dark) { --bg: black } 327 | :where(html.is-dark) p,:where(.s.is-dark) p { color: white } 328 | html, .s { --bg: white } 329 | p { color: black }`, 330 | { rootSelector: ['html', ':root', '.s'] } 331 | ) 332 | }) 333 | 334 | test('changes root selector', () => { 335 | run( 336 | `@media (prefers-color-scheme: dark) { 337 | body { --bg: black } 338 | p { color: white } 339 | } 340 | body { --bg: white } 341 | p { color: black }`, 342 | `@media (prefers-color-scheme: dark) { 343 | body:where(:not(.is-light)) { --bg: black } 344 | :where(body:not(.is-light)) p { color: white } 345 | } 346 | body:where(.is-dark) { --bg: black } 347 | :where(body.is-dark) p { color: white } 348 | body { --bg: white } 349 | p { color: black }`, 350 | { rootSelector: 'body' } 351 | ) 352 | }) 353 | 354 | test('ignores already transformed rules - dark scheme', () => { 355 | run( 356 | `@media (prefers-color-scheme: dark) { 357 | :root:not(.is-light) { --bg: black } 358 | p { color: white } 359 | } 360 | :root { --bg: white }`, 361 | `@media (prefers-color-scheme: dark) { 362 | :root:not(.is-light) { --bg: black } 363 | :where(html:not(.is-light)) p { color: white } 364 | } 365 | :where(html.is-dark) p { color: white } 366 | :root { --bg: white }` 367 | ) 368 | }) 369 | 370 | test('ignores already transformed rules - light scheme', () => { 371 | run( 372 | `@media (prefers-color-scheme: light) { 373 | :root:not(.is-dark) { --bg: black } 374 | p { color: white } 375 | } 376 | :root { --bg: white }`, 377 | `@media (prefers-color-scheme: light) { 378 | :root:not(.is-dark) { --bg: black } 379 | :where(html:not(.is-dark)) p { color: white } 380 | } 381 | :where(html.is-light) p { color: white } 382 | :root { --bg: white }` 383 | ) 384 | }) 385 | 386 | test('transforms light-dark()', () => { 387 | run( 388 | `html { 389 | border: 1px solid light-dark(white, black) 390 | }`, 391 | `@media (prefers-color-scheme:dark) { 392 | html:where(:not(.is-light)) { 393 | border: 1px solid black 394 | } 395 | } 396 | html:where(.is-dark) { 397 | border: 1px solid black 398 | } 399 | @media (prefers-color-scheme:light) { 400 | html:where(:not(.is-dark)) { 401 | border: 1px solid white 402 | } 403 | } 404 | html:where(.is-light) { 405 | border: 1px solid white 406 | }` 407 | ) 408 | }) 409 | 410 | test('transforms light-dark() with !important', () => { 411 | run( 412 | `html { 413 | border: 1px solid light-dark(white, black) !important 414 | }`, 415 | `@media (prefers-color-scheme:dark) { 416 | html:where(:not(.is-light)) { 417 | border: 1px solid black !important 418 | } 419 | } 420 | html:where(.is-dark) { 421 | border: 1px solid black !important 422 | } 423 | @media (prefers-color-scheme:light) { 424 | html:where(:not(.is-dark)) { 425 | border: 1px solid white !important 426 | } 427 | } 428 | html:where(.is-light) { 429 | border: 1px solid white !important 430 | }` 431 | ) 432 | }) 433 | 434 | test('transforms nested light-dark()', () => { 435 | run( 436 | `html { 437 | border: 1px solid light-dark(light-dark(white, red), light-dark(blue, light-dark(gray, rgb(255 122 127 / .2)))) 438 | }`, 439 | `@media (prefers-color-scheme:dark) { 440 | html:where(:not(.is-light)) { 441 | border: 1px solid rgb(255 122 127 / .2) 442 | } 443 | } 444 | html:where(.is-dark) { 445 | border: 1px solid rgb(255 122 127 / .2) 446 | } 447 | @media (prefers-color-scheme:light) { 448 | html:where(:not(.is-dark)) { 449 | border: 1px solid white 450 | } 451 | } 452 | html:where(.is-light) { 453 | border: 1px solid white 454 | }` 455 | ) 456 | }) 457 | 458 | test('transforms light-dark() with various color formats', () => { 459 | run( 460 | `html { 461 | border: 1px solid light-dark(rgb(0, 0, 0), var(--color)); 462 | color: light-dark( hsla(120, 100%, 50%, 0.3) , hsl( 463 | var(--red-hue) 464 | var(--red-sat) 465 | calc(var(--red-lit) - 20%) 466 | )); 467 | }`, 468 | `@media (prefers-color-scheme:dark) { 469 | html:where(:not(.is-light)) { 470 | color: hsl( 471 | var(--red-hue) 472 | var(--red-sat) 473 | calc(var(--red-lit) - 20%) 474 | ) 475 | } 476 | } 477 | html:where(.is-dark) { 478 | color: hsl( 479 | var(--red-hue) 480 | var(--red-sat) 481 | calc(var(--red-lit) - 20%) 482 | ) 483 | } 484 | @media (prefers-color-scheme:light) { 485 | html:where(:not(.is-dark)) { 486 | color: hsla(120, 100%, 50%, 0.3) 487 | } 488 | } 489 | html:where(.is-light) { 490 | color: hsla(120, 100%, 50%, 0.3) 491 | } 492 | @media (prefers-color-scheme:dark) { 493 | html:where(:not(.is-light)) { 494 | border: 1px solid var(--color) 495 | } 496 | } 497 | html:where(.is-dark) { 498 | border: 1px solid var(--color) 499 | } 500 | @media (prefers-color-scheme:light) { 501 | html:where(:not(.is-dark)) { 502 | border: 1px solid rgb(0, 0, 0) 503 | } 504 | } 505 | html:where(.is-light) { 506 | border: 1px solid rgb(0, 0, 0) 507 | }` 508 | ) 509 | }) 510 | 511 | test('does not transform light-dark() inside strings', () => { 512 | run( 513 | `html { 514 | content: ' light-dark(white, black) \ 515 | light-dark(purple, yellow) 516 | '; 517 | background: url("light-dark(red, blue).png"); 518 | quotes: "light-dark(white, black)" "light-dark(red, green)"; 519 | }`, 520 | `html { 521 | content: ' light-dark(white, black) \ 522 | light-dark(purple, yellow) 523 | '; 524 | background: url("light-dark(red, blue).png"); 525 | quotes: "light-dark(white, black)" "light-dark(red, green)"; 526 | }` 527 | ) 528 | }) 529 | 530 | test('transforms light-dark() and disables :where() of request', () => { 531 | run( 532 | `section { 533 | color: light-dark(#888, #eee) 534 | }`, 535 | `@media (prefers-color-scheme:dark) { 536 | html:not(.is-light) section { 537 | color: #eee 538 | } 539 | } 540 | html.is-dark section { 541 | color: #eee 542 | } 543 | @media (prefers-color-scheme:light) { 544 | html:not(.is-dark) section { 545 | color: #888 546 | } 547 | } 548 | html.is-light section { 549 | color: #888 550 | }`, 551 | { useWhere: false } 552 | ) 553 | }) 554 | 555 | test('processes inner at-rules with light-dark()', () => { 556 | run( 557 | `@media (min-width: 500px) { 558 | @media (print) { 559 | a { 560 | background-color: light-dark(white, black) 561 | } 562 | } 563 | }`, 564 | `@media (min-width: 500px) { 565 | @media (print) { 566 | @media (prefers-color-scheme:dark) { 567 | :where(html:not(.is-light)) a { 568 | background-color: black 569 | } 570 | } 571 | :where(html.is-dark) a { 572 | background-color: black 573 | } 574 | @media (prefers-color-scheme:light) { 575 | :where(html:not(.is-dark)) a { 576 | background-color: white 577 | } 578 | } 579 | :where(html.is-light) a { 580 | background-color: white 581 | } 582 | } 583 | }` 584 | ) 585 | }) 586 | 587 | test('ignores whitespaces for light-dark()', () => { 588 | run( 589 | `a { background: radial-gradient(light-dark( red , yellow ), 590 | light-dark( white , black ), 591 | rgb(30 144 255)); } 592 | `, 593 | `@media (prefers-color-scheme:dark) { 594 | :where(html:not(.is-light)) a { 595 | background: radial-gradient(yellow, 596 | black, 597 | rgb(30 144 255)) 598 | } 599 | } 600 | :where(html.is-dark) a { 601 | background: radial-gradient(yellow, 602 | black, 603 | rgb(30 144 255)) 604 | } 605 | @media (prefers-color-scheme:light) { 606 | :where(html:not(.is-dark)) a { 607 | background: radial-gradient(red, 608 | white, 609 | rgb(30 144 255)) 610 | } 611 | } 612 | :where(html.is-light) a { 613 | background: radial-gradient(red, 614 | white, 615 | rgb(30 144 255)) 616 | } 617 | ` 618 | ) 619 | }) 620 | 621 | test('changes root selectors for light-dark()', () => { 622 | run( 623 | `html, .s {--bg: light-dark(white, black)} 624 | p {color: light-dark(red, blue)} 625 | `, 626 | `@media (prefers-color-scheme:dark) { 627 | html:where(:not(.is-light)), .s:where(:not(.is-light)) { 628 | --bg: black 629 | } 630 | } 631 | html:where(.is-dark), .s:where(.is-dark) { 632 | --bg: black 633 | } 634 | @media (prefers-color-scheme:light) { 635 | html:where(:not(.is-dark)), .s:where(:not(.is-dark)) { 636 | --bg: white 637 | } 638 | } 639 | html:where(.is-light), .s:where(.is-light) { 640 | --bg: white 641 | } 642 | @media (prefers-color-scheme:dark) { 643 | :where(html:not(.is-light)) p,:where(.s:not(.is-light)) p { 644 | color: blue 645 | } 646 | } 647 | :where(html.is-dark) p,:where(.s.is-dark) p { 648 | color: blue 649 | } 650 | @media (prefers-color-scheme:light) { 651 | :where(html:not(.is-dark)) p,:where(.s:not(.is-dark)) p { 652 | color: red 653 | } 654 | } 655 | :where(html.is-light) p,:where(.s.is-light) p { 656 | color: red 657 | } 658 | `, 659 | { rootSelector: ['html', ':root', '.s'] } 660 | ) 661 | }) 662 | 663 | test('changes root selector for light-dark()', () => { 664 | run( 665 | `body {--bg: light-dark(white, black)} 666 | p {color: light-dark(green, yellow)} 667 | `, 668 | `@media (prefers-color-scheme:dark) { 669 | body:where(:not(.is-light)) { 670 | --bg: black 671 | } 672 | } 673 | body:where(.is-dark) { 674 | --bg: black 675 | } 676 | @media (prefers-color-scheme:light) { 677 | body:where(:not(.is-dark)) { 678 | --bg: white 679 | } 680 | } 681 | body:where(.is-light) { 682 | --bg: white 683 | } 684 | @media (prefers-color-scheme:dark) { 685 | :where(body:not(.is-light)) p { 686 | color: yellow 687 | } 688 | } 689 | :where(body.is-dark) p { 690 | color: yellow 691 | } 692 | @media (prefers-color-scheme:light) { 693 | :where(body:not(.is-dark)) p { 694 | color: green 695 | } 696 | } 697 | :where(body.is-light) p { 698 | color: green 699 | } 700 | `, 701 | { rootSelector: 'body' } 702 | ) 703 | }) 704 | 705 | test('transforms complex nested light-dark()', () => { 706 | run( 707 | `.light-dark-function-mix-a { 708 | color: light-dark(color-mix(in oklch, red, light-dark(cyan, rgb(0, 0, 0))), blue); 709 | }`, 710 | `@media (prefers-color-scheme:dark) { 711 | :where(html:not(.is-light)) .light-dark-function-mix-a { 712 | color: blue 713 | } 714 | } 715 | :where(html.is-dark) .light-dark-function-mix-a { 716 | color: blue 717 | } 718 | @media (prefers-color-scheme:light) { 719 | :where(html:not(.is-dark)) .light-dark-function-mix-a { 720 | color: color-mix(in oklch, red, cyan) 721 | } 722 | } 723 | :where(html.is-light) .light-dark-function-mix-a { 724 | color: color-mix(in oklch, red, cyan) 725 | }` 726 | ) 727 | }) 728 | 729 | test('removes media using transforms complex nested light-dark()', () => { 730 | run( 731 | `.light-dark-function-mix-a { 732 | color: light-dark(color-mix(in oklch, red, light-dark(cyan, rgb(0, 0, 0))), blue); 733 | }`, 734 | `:where(html.is-dark) .light-dark-function-mix-a { 735 | color: blue 736 | } 737 | :where(html.is-light) .light-dark-function-mix-a { 738 | color: color-mix(in oklch, red, cyan) 739 | }`, 740 | { removeMedia: true } 741 | ) 742 | }) 743 | 744 | test('removes media with combined queries in the middle - dark scheme', () => { 745 | run( 746 | `@media (width > 0) and (prefers-color-scheme: dark) and (width > 0) { 747 | a { color: white } 748 | }`, 749 | `@media (width > 0) and (width > 0) { 750 | :where(html.is-dark) a { color: white } 751 | }`, 752 | { removeMedia: true } 753 | ) 754 | }) 755 | 756 | test('removes media with combined queries in the middle - light scheme', () => { 757 | run( 758 | `@media (width > 0) and (prefers-color-scheme: light) and (width > 0) { 759 | a { color: white } 760 | }`, 761 | `@media (width > 0) and (width > 0) { 762 | :where(html.is-light) a { color: white } 763 | }`, 764 | { removeMedia: true } 765 | ) 766 | }) 767 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | postcss-value-parser: 12 | specifier: ^4.2.0 13 | version: 4.2.0 14 | devDependencies: 15 | '@logux/eslint-config': 16 | specifier: ^56.1.0 17 | version: 56.1.0(@typescript-eslint/utils@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0)(typescript@5.9.2) 18 | actions-up: 19 | specifier: ^1.3.0 20 | version: 1.3.0 21 | c8: 22 | specifier: ^10.1.3 23 | version: 10.1.3 24 | clean-publish: 25 | specifier: ^5.2.2 26 | version: 5.2.2 27 | eslint: 28 | specifier: ^9.34.0 29 | version: 9.34.0 30 | postcss: 31 | specifier: ^8.5.6 32 | version: 8.5.6 33 | 34 | packages: 35 | 36 | '@bcoe/v8-coverage@1.0.2': 37 | resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} 38 | engines: {node: '>=18'} 39 | 40 | '@emnapi/core@1.5.0': 41 | resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} 42 | 43 | '@emnapi/runtime@1.5.0': 44 | resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} 45 | 46 | '@emnapi/wasi-threads@1.1.0': 47 | resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} 48 | 49 | '@eslint-community/eslint-utils@4.7.0': 50 | resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 51 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 52 | peerDependencies: 53 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 54 | 55 | '@eslint-community/regexpp@4.12.1': 56 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 57 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 58 | 59 | '@eslint/config-array@0.21.0': 60 | resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} 61 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 62 | 63 | '@eslint/config-helpers@0.3.1': 64 | resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} 65 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 66 | 67 | '@eslint/core@0.15.2': 68 | resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} 69 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 70 | 71 | '@eslint/eslintrc@3.3.1': 72 | resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 73 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 74 | 75 | '@eslint/js@9.34.0': 76 | resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} 77 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 78 | 79 | '@eslint/object-schema@2.1.6': 80 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 81 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 82 | 83 | '@eslint/plugin-kit@0.3.5': 84 | resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} 85 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 86 | 87 | '@humanfs/core@0.19.1': 88 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 89 | engines: {node: '>=18.18.0'} 90 | 91 | '@humanfs/node@0.16.6': 92 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 93 | engines: {node: '>=18.18.0'} 94 | 95 | '@humanwhocodes/module-importer@1.0.1': 96 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 97 | engines: {node: '>=12.22'} 98 | 99 | '@humanwhocodes/retry@0.3.1': 100 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 101 | engines: {node: '>=18.18'} 102 | 103 | '@humanwhocodes/retry@0.4.3': 104 | resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 105 | engines: {node: '>=18.18'} 106 | 107 | '@isaacs/balanced-match@4.0.1': 108 | resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} 109 | engines: {node: 20 || >=22} 110 | 111 | '@isaacs/brace-expansion@5.0.0': 112 | resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} 113 | engines: {node: 20 || >=22} 114 | 115 | '@isaacs/cliui@8.0.2': 116 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 117 | engines: {node: '>=12'} 118 | 119 | '@istanbuljs/schema@0.1.3': 120 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 121 | engines: {node: '>=8'} 122 | 123 | '@jridgewell/resolve-uri@3.1.2': 124 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 125 | engines: {node: '>=6.0.0'} 126 | 127 | '@jridgewell/sourcemap-codec@1.5.5': 128 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 129 | 130 | '@jridgewell/trace-mapping@0.3.30': 131 | resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} 132 | 133 | '@logux/eslint-config@56.1.0': 134 | resolution: {integrity: sha512-o0fsiWHpj0T+ZgnHg2T/wBjLTztYkhQnk6cckZ8zmGA9hz+wX2Y+s34u2VB/AaxOxFOrOF+bQIUGacOzPCledA==} 135 | engines: {node: '>=18.0.0'} 136 | peerDependencies: 137 | eslint: ^8.57.0 || ^9.0.0 138 | eslint-plugin-svelte: ^3.0.0 139 | svelte: ^4.2.12 || ^5.0.0 140 | svelte-eslint-parser: ^1.0.0 141 | peerDependenciesMeta: 142 | eslint-plugin-svelte: 143 | optional: true 144 | svelte: 145 | optional: true 146 | svelte-eslint-parser: 147 | optional: true 148 | 149 | '@napi-rs/wasm-runtime@0.2.12': 150 | resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} 151 | 152 | '@nodelib/fs.scandir@2.1.5': 153 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 154 | engines: {node: '>= 8'} 155 | 156 | '@nodelib/fs.stat@2.0.5': 157 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 158 | engines: {node: '>= 8'} 159 | 160 | '@nodelib/fs.walk@1.2.8': 161 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 162 | engines: {node: '>= 8'} 163 | 164 | '@pkgjs/parseargs@0.11.0': 165 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 166 | engines: {node: '>=14'} 167 | 168 | '@tybys/wasm-util@0.10.0': 169 | resolution: {integrity: sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==} 170 | 171 | '@types/estree@1.0.8': 172 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 173 | 174 | '@types/istanbul-lib-coverage@2.0.6': 175 | resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} 176 | 177 | '@types/json-schema@7.0.15': 178 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 179 | 180 | '@typescript-eslint/eslint-plugin@8.42.0': 181 | resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==} 182 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 183 | peerDependencies: 184 | '@typescript-eslint/parser': ^8.42.0 185 | eslint: ^8.57.0 || ^9.0.0 186 | typescript: '>=4.8.4 <6.0.0' 187 | 188 | '@typescript-eslint/parser@8.42.0': 189 | resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==} 190 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 191 | peerDependencies: 192 | eslint: ^8.57.0 || ^9.0.0 193 | typescript: '>=4.8.4 <6.0.0' 194 | 195 | '@typescript-eslint/project-service@8.42.0': 196 | resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} 197 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 198 | peerDependencies: 199 | typescript: '>=4.8.4 <6.0.0' 200 | 201 | '@typescript-eslint/scope-manager@8.42.0': 202 | resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} 203 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 204 | 205 | '@typescript-eslint/tsconfig-utils@8.42.0': 206 | resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} 207 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 208 | peerDependencies: 209 | typescript: '>=4.8.4 <6.0.0' 210 | 211 | '@typescript-eslint/type-utils@8.42.0': 212 | resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==} 213 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 214 | peerDependencies: 215 | eslint: ^8.57.0 || ^9.0.0 216 | typescript: '>=4.8.4 <6.0.0' 217 | 218 | '@typescript-eslint/types@8.42.0': 219 | resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} 220 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 221 | 222 | '@typescript-eslint/typescript-estree@8.42.0': 223 | resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} 224 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 225 | peerDependencies: 226 | typescript: '>=4.8.4 <6.0.0' 227 | 228 | '@typescript-eslint/utils@8.42.0': 229 | resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} 230 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 231 | peerDependencies: 232 | eslint: ^8.57.0 || ^9.0.0 233 | typescript: '>=4.8.4 <6.0.0' 234 | 235 | '@typescript-eslint/visitor-keys@8.42.0': 236 | resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} 237 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 238 | 239 | '@unrs/resolver-binding-android-arm-eabi@1.11.1': 240 | resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} 241 | cpu: [arm] 242 | os: [android] 243 | 244 | '@unrs/resolver-binding-android-arm64@1.11.1': 245 | resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} 246 | cpu: [arm64] 247 | os: [android] 248 | 249 | '@unrs/resolver-binding-darwin-arm64@1.11.1': 250 | resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} 251 | cpu: [arm64] 252 | os: [darwin] 253 | 254 | '@unrs/resolver-binding-darwin-x64@1.11.1': 255 | resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} 256 | cpu: [x64] 257 | os: [darwin] 258 | 259 | '@unrs/resolver-binding-freebsd-x64@1.11.1': 260 | resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} 261 | cpu: [x64] 262 | os: [freebsd] 263 | 264 | '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': 265 | resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} 266 | cpu: [arm] 267 | os: [linux] 268 | 269 | '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': 270 | resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} 271 | cpu: [arm] 272 | os: [linux] 273 | 274 | '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': 275 | resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} 276 | cpu: [arm64] 277 | os: [linux] 278 | 279 | '@unrs/resolver-binding-linux-arm64-musl@1.11.1': 280 | resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} 281 | cpu: [arm64] 282 | os: [linux] 283 | 284 | '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': 285 | resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} 286 | cpu: [ppc64] 287 | os: [linux] 288 | 289 | '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': 290 | resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} 291 | cpu: [riscv64] 292 | os: [linux] 293 | 294 | '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': 295 | resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} 296 | cpu: [riscv64] 297 | os: [linux] 298 | 299 | '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': 300 | resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} 301 | cpu: [s390x] 302 | os: [linux] 303 | 304 | '@unrs/resolver-binding-linux-x64-gnu@1.11.1': 305 | resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} 306 | cpu: [x64] 307 | os: [linux] 308 | 309 | '@unrs/resolver-binding-linux-x64-musl@1.11.1': 310 | resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} 311 | cpu: [x64] 312 | os: [linux] 313 | 314 | '@unrs/resolver-binding-wasm32-wasi@1.11.1': 315 | resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} 316 | engines: {node: '>=14.0.0'} 317 | cpu: [wasm32] 318 | 319 | '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': 320 | resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} 321 | cpu: [arm64] 322 | os: [win32] 323 | 324 | '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': 325 | resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} 326 | cpu: [ia32] 327 | os: [win32] 328 | 329 | '@unrs/resolver-binding-win32-x64-msvc@1.11.1': 330 | resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} 331 | cpu: [x64] 332 | os: [win32] 333 | 334 | acorn-jsx@5.3.2: 335 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 336 | peerDependencies: 337 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 338 | 339 | acorn@8.15.0: 340 | resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 341 | engines: {node: '>=0.4.0'} 342 | hasBin: true 343 | 344 | actions-up@1.3.0: 345 | resolution: {integrity: sha512-bVs015T8tjEQifFvhPh+MvQGXWh1wtOK5RL4WZH0kB3PefX79HzqUGrFbYlvKCgpkjILJdptGLpxyI2swjxW4A==} 346 | engines: {node: ^18.0.0 || >=20.0.0} 347 | hasBin: true 348 | 349 | ajv@6.12.6: 350 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 351 | 352 | ansi-colors@4.1.3: 353 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 354 | engines: {node: '>=6'} 355 | 356 | ansi-regex@5.0.1: 357 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 358 | engines: {node: '>=8'} 359 | 360 | ansi-regex@6.2.0: 361 | resolution: {integrity: sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==} 362 | engines: {node: '>=12'} 363 | 364 | ansi-styles@4.3.0: 365 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 366 | engines: {node: '>=8'} 367 | 368 | ansi-styles@6.2.1: 369 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 370 | engines: {node: '>=12'} 371 | 372 | argparse@2.0.1: 373 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 374 | 375 | balanced-match@1.0.2: 376 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 377 | 378 | brace-expansion@1.1.12: 379 | resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 380 | 381 | brace-expansion@2.0.2: 382 | resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 383 | 384 | braces@3.0.3: 385 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 386 | engines: {node: '>=8'} 387 | 388 | c8@10.1.3: 389 | resolution: {integrity: sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==} 390 | engines: {node: '>=18'} 391 | hasBin: true 392 | peerDependencies: 393 | monocart-coverage-reports: ^2 394 | peerDependenciesMeta: 395 | monocart-coverage-reports: 396 | optional: true 397 | 398 | cac@6.7.14: 399 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 400 | engines: {node: '>=8'} 401 | 402 | callsites@3.1.0: 403 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 404 | engines: {node: '>=6'} 405 | 406 | chalk@4.1.2: 407 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 408 | engines: {node: '>=10'} 409 | 410 | clean-publish@5.2.2: 411 | resolution: {integrity: sha512-sqM9uAXG+K7QzEn0Ur00otEHfbQTsyle4enj/388ZZQhG6daXMJ15dfD/ALsFCQCJvMZPxYwDx/QrdcdzWVPyg==} 412 | engines: {node: '>= 18.0.0'} 413 | hasBin: true 414 | 415 | cliui@8.0.1: 416 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 417 | engines: {node: '>=12'} 418 | 419 | color-convert@2.0.1: 420 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 421 | engines: {node: '>=7.0.0'} 422 | 423 | color-name@1.1.4: 424 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 425 | 426 | comment-parser@1.4.1: 427 | resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} 428 | engines: {node: '>= 12.0.0'} 429 | 430 | concat-map@0.0.1: 431 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 432 | 433 | convert-source-map@2.0.0: 434 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 435 | 436 | cross-spawn@7.0.6: 437 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 438 | engines: {node: '>= 8'} 439 | 440 | debug@3.2.7: 441 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 442 | peerDependencies: 443 | supports-color: '*' 444 | peerDependenciesMeta: 445 | supports-color: 446 | optional: true 447 | 448 | debug@4.4.1: 449 | resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} 450 | engines: {node: '>=6.0'} 451 | peerDependencies: 452 | supports-color: '*' 453 | peerDependenciesMeta: 454 | supports-color: 455 | optional: true 456 | 457 | deep-is@0.1.4: 458 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 459 | 460 | eastasianwidth@0.2.0: 461 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 462 | 463 | emoji-regex@8.0.0: 464 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 465 | 466 | emoji-regex@9.2.2: 467 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 468 | 469 | enhanced-resolve@5.18.3: 470 | resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} 471 | engines: {node: '>=10.13.0'} 472 | 473 | enquirer@2.4.1: 474 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 475 | engines: {node: '>=8.6'} 476 | 477 | escalade@3.2.0: 478 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 479 | engines: {node: '>=6'} 480 | 481 | escape-string-regexp@4.0.0: 482 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 483 | engines: {node: '>=10'} 484 | 485 | eslint-compat-utils@0.5.1: 486 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 487 | engines: {node: '>=12'} 488 | peerDependencies: 489 | eslint: '>=6.0.0' 490 | 491 | eslint-import-context@0.1.9: 492 | resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} 493 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 494 | peerDependencies: 495 | unrs-resolver: ^1.0.0 496 | peerDependenciesMeta: 497 | unrs-resolver: 498 | optional: true 499 | 500 | eslint-import-resolver-node@0.3.9: 501 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 502 | 503 | eslint-plugin-es-x@7.8.0: 504 | resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} 505 | engines: {node: ^14.18.0 || >=16.0.0} 506 | peerDependencies: 507 | eslint: '>=8' 508 | 509 | eslint-plugin-import-x@4.16.1: 510 | resolution: {integrity: sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==} 511 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 512 | peerDependencies: 513 | '@typescript-eslint/utils': ^8.0.0 514 | eslint: ^8.57.0 || ^9.0.0 515 | eslint-import-resolver-node: '*' 516 | peerDependenciesMeta: 517 | '@typescript-eslint/utils': 518 | optional: true 519 | eslint-import-resolver-node: 520 | optional: true 521 | 522 | eslint-plugin-n@17.21.3: 523 | resolution: {integrity: sha512-MtxYjDZhMQgsWRm/4xYLL0i2EhusWT7itDxlJ80l1NND2AL2Vi5Mvneqv/ikG9+zpran0VsVRXTEHrpLmUZRNw==} 524 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 525 | peerDependencies: 526 | eslint: '>=8.23.0' 527 | 528 | eslint-plugin-perfectionist@4.15.0: 529 | resolution: {integrity: sha512-pC7PgoXyDnEXe14xvRUhBII8A3zRgggKqJFx2a82fjrItDs1BSI7zdZnQtM2yQvcyod6/ujmzb7ejKPx8lZTnw==} 530 | engines: {node: ^18.0.0 || >=20.0.0} 531 | peerDependencies: 532 | eslint: '>=8.45.0' 533 | 534 | eslint-plugin-prefer-let@4.0.0: 535 | resolution: {integrity: sha512-X4ep5PMO1320HKaNC9DM5+p6XvOhwv+RcqGjhv3aiw9iAtHhiFtdIUB5l0Zya0iM22ys2BGKzrNI9Xpw/ZHooQ==} 536 | engines: {node: '>=0.10.0'} 537 | 538 | eslint-plugin-promise@7.2.1: 539 | resolution: {integrity: sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==} 540 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 541 | peerDependencies: 542 | eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 543 | 544 | eslint-scope@8.4.0: 545 | resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 546 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 547 | 548 | eslint-visitor-keys@3.4.3: 549 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 550 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 551 | 552 | eslint-visitor-keys@4.2.1: 553 | resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 554 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 555 | 556 | eslint@9.34.0: 557 | resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} 558 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 559 | hasBin: true 560 | peerDependencies: 561 | jiti: '*' 562 | peerDependenciesMeta: 563 | jiti: 564 | optional: true 565 | 566 | espree@10.4.0: 567 | resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 568 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 569 | 570 | esquery@1.6.0: 571 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 572 | engines: {node: '>=0.10'} 573 | 574 | esrecurse@4.3.0: 575 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 576 | engines: {node: '>=4.0'} 577 | 578 | estraverse@5.3.0: 579 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 580 | engines: {node: '>=4.0'} 581 | 582 | esutils@2.0.3: 583 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 584 | engines: {node: '>=0.10.0'} 585 | 586 | fast-deep-equal@3.1.3: 587 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 588 | 589 | fast-glob@3.3.3: 590 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 591 | engines: {node: '>=8.6.0'} 592 | 593 | fast-json-stable-stringify@2.1.0: 594 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 595 | 596 | fast-levenshtein@2.0.6: 597 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 598 | 599 | fastq@1.19.1: 600 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 601 | 602 | file-entry-cache@8.0.0: 603 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 604 | engines: {node: '>=16.0.0'} 605 | 606 | fill-range@7.1.1: 607 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 608 | engines: {node: '>=8'} 609 | 610 | find-up@5.0.0: 611 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 612 | engines: {node: '>=10'} 613 | 614 | flat-cache@4.0.1: 615 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 616 | engines: {node: '>=16'} 617 | 618 | flatted@3.3.3: 619 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 620 | 621 | foreground-child@3.3.1: 622 | resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 623 | engines: {node: '>=14'} 624 | 625 | function-bind@1.1.2: 626 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 627 | 628 | get-caller-file@2.0.5: 629 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 630 | engines: {node: 6.* || 8.* || >= 10.*} 631 | 632 | get-tsconfig@4.10.1: 633 | resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} 634 | 635 | glob-parent@5.1.2: 636 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 637 | engines: {node: '>= 6'} 638 | 639 | glob-parent@6.0.2: 640 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 641 | engines: {node: '>=10.13.0'} 642 | 643 | glob@10.4.5: 644 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 645 | hasBin: true 646 | 647 | globals@14.0.0: 648 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 649 | engines: {node: '>=18'} 650 | 651 | globals@15.15.0: 652 | resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 653 | engines: {node: '>=18'} 654 | 655 | globals@16.3.0: 656 | resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} 657 | engines: {node: '>=18'} 658 | 659 | globrex@0.1.2: 660 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 661 | 662 | graceful-fs@4.2.11: 663 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 664 | 665 | graphemer@1.4.0: 666 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 667 | 668 | has-flag@4.0.0: 669 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 670 | engines: {node: '>=8'} 671 | 672 | hasown@2.0.2: 673 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 674 | engines: {node: '>= 0.4'} 675 | 676 | html-escaper@2.0.2: 677 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 678 | 679 | ignore@5.3.2: 680 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 681 | engines: {node: '>= 4'} 682 | 683 | ignore@7.0.5: 684 | resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 685 | engines: {node: '>= 4'} 686 | 687 | import-fresh@3.3.1: 688 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 689 | engines: {node: '>=6'} 690 | 691 | imurmurhash@0.1.4: 692 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 693 | engines: {node: '>=0.8.19'} 694 | 695 | is-core-module@2.16.1: 696 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 697 | engines: {node: '>= 0.4'} 698 | 699 | is-extglob@2.1.1: 700 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 701 | engines: {node: '>=0.10.0'} 702 | 703 | is-fullwidth-code-point@3.0.0: 704 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 705 | engines: {node: '>=8'} 706 | 707 | is-glob@4.0.3: 708 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 709 | engines: {node: '>=0.10.0'} 710 | 711 | is-number@7.0.0: 712 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 713 | engines: {node: '>=0.12.0'} 714 | 715 | isexe@2.0.0: 716 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 717 | 718 | istanbul-lib-coverage@3.2.2: 719 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 720 | engines: {node: '>=8'} 721 | 722 | istanbul-lib-report@3.0.1: 723 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 724 | engines: {node: '>=10'} 725 | 726 | istanbul-reports@3.2.0: 727 | resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} 728 | engines: {node: '>=8'} 729 | 730 | jackspeak@3.4.3: 731 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 732 | 733 | js-yaml@4.1.0: 734 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 735 | hasBin: true 736 | 737 | json-buffer@3.0.1: 738 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 739 | 740 | json-schema-traverse@0.4.1: 741 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 742 | 743 | json-stable-stringify-without-jsonify@1.0.1: 744 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 745 | 746 | keyv@4.5.4: 747 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 748 | 749 | levn@0.4.1: 750 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 751 | engines: {node: '>= 0.8.0'} 752 | 753 | lilconfig@3.1.3: 754 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 755 | engines: {node: '>=14'} 756 | 757 | locate-path@6.0.0: 758 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 759 | engines: {node: '>=10'} 760 | 761 | lodash.merge@4.6.2: 762 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 763 | 764 | lru-cache@10.4.3: 765 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 766 | 767 | make-dir@4.0.0: 768 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 769 | engines: {node: '>=10'} 770 | 771 | merge2@1.4.1: 772 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 773 | engines: {node: '>= 8'} 774 | 775 | micromatch@4.0.8: 776 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 777 | engines: {node: '>=8.6'} 778 | 779 | minimatch@10.0.3: 780 | resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} 781 | engines: {node: 20 || >=22} 782 | 783 | minimatch@3.1.2: 784 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 785 | 786 | minimatch@9.0.5: 787 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 788 | engines: {node: '>=16 || 14 >=14.17'} 789 | 790 | minipass@7.1.2: 791 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 792 | engines: {node: '>=16 || 14 >=14.17'} 793 | 794 | ms@2.1.3: 795 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 796 | 797 | nanoid@3.3.11: 798 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 799 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 800 | hasBin: true 801 | 802 | nanospinner@1.2.2: 803 | resolution: {integrity: sha512-Zt/AmG6qRU3e+WnzGGLuMCEAO/dAu45stNbHY223tUxldaDAeE+FxSPsd9Q+j+paejmm0ZbrNVs5Sraqy3dRxA==} 804 | 805 | napi-postinstall@0.3.3: 806 | resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} 807 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 808 | hasBin: true 809 | 810 | natural-compare@1.4.0: 811 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 812 | 813 | natural-orderby@5.0.0: 814 | resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} 815 | engines: {node: '>=18'} 816 | 817 | optionator@0.9.4: 818 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 819 | engines: {node: '>= 0.8.0'} 820 | 821 | p-limit@3.1.0: 822 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 823 | engines: {node: '>=10'} 824 | 825 | p-locate@5.0.0: 826 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 827 | engines: {node: '>=10'} 828 | 829 | package-json-from-dist@1.0.1: 830 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 831 | 832 | parent-module@1.0.1: 833 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 834 | engines: {node: '>=6'} 835 | 836 | path-exists@4.0.0: 837 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 838 | engines: {node: '>=8'} 839 | 840 | path-key@3.1.1: 841 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 842 | engines: {node: '>=8'} 843 | 844 | path-parse@1.0.7: 845 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 846 | 847 | path-scurry@1.11.1: 848 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 849 | engines: {node: '>=16 || 14 >=14.18'} 850 | 851 | picocolors@1.1.1: 852 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 853 | 854 | picomatch@2.3.1: 855 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 856 | engines: {node: '>=8.6'} 857 | 858 | picomatch@4.0.3: 859 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 860 | engines: {node: '>=12'} 861 | 862 | postcss-value-parser@4.2.0: 863 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 864 | 865 | postcss@8.5.6: 866 | resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 867 | engines: {node: ^10 || ^12 || >=14} 868 | 869 | prelude-ls@1.2.1: 870 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 871 | engines: {node: '>= 0.8.0'} 872 | 873 | punycode@2.3.1: 874 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 875 | engines: {node: '>=6'} 876 | 877 | queue-microtask@1.2.3: 878 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 879 | 880 | require-directory@2.1.1: 881 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 882 | engines: {node: '>=0.10.0'} 883 | 884 | requireindex@1.2.0: 885 | resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} 886 | engines: {node: '>=0.10.5'} 887 | 888 | resolve-from@4.0.0: 889 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 890 | engines: {node: '>=4'} 891 | 892 | resolve-pkg-maps@1.0.0: 893 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 894 | 895 | resolve@1.22.10: 896 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 897 | engines: {node: '>= 0.4'} 898 | hasBin: true 899 | 900 | reusify@1.1.0: 901 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 902 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 903 | 904 | run-parallel@1.2.0: 905 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 906 | 907 | semver@7.7.2: 908 | resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 909 | engines: {node: '>=10'} 910 | hasBin: true 911 | 912 | shebang-command@2.0.0: 913 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 914 | engines: {node: '>=8'} 915 | 916 | shebang-regex@3.0.0: 917 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 918 | engines: {node: '>=8'} 919 | 920 | signal-exit@4.1.0: 921 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 922 | engines: {node: '>=14'} 923 | 924 | source-map-js@1.2.1: 925 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 926 | engines: {node: '>=0.10.0'} 927 | 928 | stable-hash-x@0.2.0: 929 | resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} 930 | engines: {node: '>=12.0.0'} 931 | 932 | string-width@4.2.3: 933 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 934 | engines: {node: '>=8'} 935 | 936 | string-width@5.1.2: 937 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 938 | engines: {node: '>=12'} 939 | 940 | strip-ansi@6.0.1: 941 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 942 | engines: {node: '>=8'} 943 | 944 | strip-ansi@7.1.0: 945 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 946 | engines: {node: '>=12'} 947 | 948 | strip-json-comments@3.1.1: 949 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 950 | engines: {node: '>=8'} 951 | 952 | supports-color@7.2.0: 953 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 954 | engines: {node: '>=8'} 955 | 956 | supports-preserve-symlinks-flag@1.0.0: 957 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 958 | engines: {node: '>= 0.4'} 959 | 960 | tapable@2.2.3: 961 | resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} 962 | engines: {node: '>=6'} 963 | 964 | test-exclude@7.0.1: 965 | resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} 966 | engines: {node: '>=18'} 967 | 968 | to-regex-range@5.0.1: 969 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 970 | engines: {node: '>=8.0'} 971 | 972 | ts-api-utils@2.1.0: 973 | resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 974 | engines: {node: '>=18.12'} 975 | peerDependencies: 976 | typescript: '>=4.8.4' 977 | 978 | ts-declaration-location@1.0.7: 979 | resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} 980 | peerDependencies: 981 | typescript: '>=4.0.0' 982 | 983 | tslib@2.8.1: 984 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 985 | 986 | type-check@0.4.0: 987 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 988 | engines: {node: '>= 0.8.0'} 989 | 990 | typescript-eslint@8.42.0: 991 | resolution: {integrity: sha512-ozR/rQn+aQXQxh1YgbCzQWDFrsi9mcg+1PM3l/z5o1+20P7suOIaNg515bpr/OYt6FObz/NHcBstydDLHWeEKg==} 992 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 993 | peerDependencies: 994 | eslint: ^8.57.0 || ^9.0.0 995 | typescript: '>=4.8.4 <6.0.0' 996 | 997 | typescript@5.9.2: 998 | resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 999 | engines: {node: '>=14.17'} 1000 | hasBin: true 1001 | 1002 | unrs-resolver@1.11.1: 1003 | resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} 1004 | 1005 | uri-js@4.4.1: 1006 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1007 | 1008 | v8-to-istanbul@9.3.0: 1009 | resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} 1010 | engines: {node: '>=10.12.0'} 1011 | 1012 | which@2.0.2: 1013 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1014 | engines: {node: '>= 8'} 1015 | hasBin: true 1016 | 1017 | word-wrap@1.2.5: 1018 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1019 | engines: {node: '>=0.10.0'} 1020 | 1021 | wrap-ansi@7.0.0: 1022 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1023 | engines: {node: '>=10'} 1024 | 1025 | wrap-ansi@8.1.0: 1026 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1027 | engines: {node: '>=12'} 1028 | 1029 | y18n@5.0.8: 1030 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1031 | engines: {node: '>=10'} 1032 | 1033 | yaml@2.8.1: 1034 | resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} 1035 | engines: {node: '>= 14.6'} 1036 | hasBin: true 1037 | 1038 | yargs-parser@21.1.1: 1039 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1040 | engines: {node: '>=12'} 1041 | 1042 | yargs@17.7.2: 1043 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 1044 | engines: {node: '>=12'} 1045 | 1046 | yocto-queue@0.1.0: 1047 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1048 | engines: {node: '>=10'} 1049 | 1050 | snapshots: 1051 | 1052 | '@bcoe/v8-coverage@1.0.2': {} 1053 | 1054 | '@emnapi/core@1.5.0': 1055 | dependencies: 1056 | '@emnapi/wasi-threads': 1.1.0 1057 | tslib: 2.8.1 1058 | optional: true 1059 | 1060 | '@emnapi/runtime@1.5.0': 1061 | dependencies: 1062 | tslib: 2.8.1 1063 | optional: true 1064 | 1065 | '@emnapi/wasi-threads@1.1.0': 1066 | dependencies: 1067 | tslib: 2.8.1 1068 | optional: true 1069 | 1070 | '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0)': 1071 | dependencies: 1072 | eslint: 9.34.0 1073 | eslint-visitor-keys: 3.4.3 1074 | 1075 | '@eslint-community/regexpp@4.12.1': {} 1076 | 1077 | '@eslint/config-array@0.21.0': 1078 | dependencies: 1079 | '@eslint/object-schema': 2.1.6 1080 | debug: 4.4.1 1081 | minimatch: 3.1.2 1082 | transitivePeerDependencies: 1083 | - supports-color 1084 | 1085 | '@eslint/config-helpers@0.3.1': {} 1086 | 1087 | '@eslint/core@0.15.2': 1088 | dependencies: 1089 | '@types/json-schema': 7.0.15 1090 | 1091 | '@eslint/eslintrc@3.3.1': 1092 | dependencies: 1093 | ajv: 6.12.6 1094 | debug: 4.4.1 1095 | espree: 10.4.0 1096 | globals: 14.0.0 1097 | ignore: 5.3.2 1098 | import-fresh: 3.3.1 1099 | js-yaml: 4.1.0 1100 | minimatch: 3.1.2 1101 | strip-json-comments: 3.1.1 1102 | transitivePeerDependencies: 1103 | - supports-color 1104 | 1105 | '@eslint/js@9.34.0': {} 1106 | 1107 | '@eslint/object-schema@2.1.6': {} 1108 | 1109 | '@eslint/plugin-kit@0.3.5': 1110 | dependencies: 1111 | '@eslint/core': 0.15.2 1112 | levn: 0.4.1 1113 | 1114 | '@humanfs/core@0.19.1': {} 1115 | 1116 | '@humanfs/node@0.16.6': 1117 | dependencies: 1118 | '@humanfs/core': 0.19.1 1119 | '@humanwhocodes/retry': 0.3.1 1120 | 1121 | '@humanwhocodes/module-importer@1.0.1': {} 1122 | 1123 | '@humanwhocodes/retry@0.3.1': {} 1124 | 1125 | '@humanwhocodes/retry@0.4.3': {} 1126 | 1127 | '@isaacs/balanced-match@4.0.1': {} 1128 | 1129 | '@isaacs/brace-expansion@5.0.0': 1130 | dependencies: 1131 | '@isaacs/balanced-match': 4.0.1 1132 | 1133 | '@isaacs/cliui@8.0.2': 1134 | dependencies: 1135 | string-width: 5.1.2 1136 | string-width-cjs: string-width@4.2.3 1137 | strip-ansi: 7.1.0 1138 | strip-ansi-cjs: strip-ansi@6.0.1 1139 | wrap-ansi: 8.1.0 1140 | wrap-ansi-cjs: wrap-ansi@7.0.0 1141 | 1142 | '@istanbuljs/schema@0.1.3': {} 1143 | 1144 | '@jridgewell/resolve-uri@3.1.2': {} 1145 | 1146 | '@jridgewell/sourcemap-codec@1.5.5': {} 1147 | 1148 | '@jridgewell/trace-mapping@0.3.30': 1149 | dependencies: 1150 | '@jridgewell/resolve-uri': 3.1.2 1151 | '@jridgewell/sourcemap-codec': 1.5.5 1152 | 1153 | '@logux/eslint-config@56.1.0(@typescript-eslint/utils@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0)(typescript@5.9.2)': 1154 | dependencies: 1155 | '@eslint/eslintrc': 3.3.1 1156 | eslint: 9.34.0 1157 | eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0) 1158 | eslint-plugin-n: 17.21.3(eslint@9.34.0)(typescript@5.9.2) 1159 | eslint-plugin-perfectionist: 4.15.0(eslint@9.34.0)(typescript@5.9.2) 1160 | eslint-plugin-prefer-let: 4.0.0 1161 | eslint-plugin-promise: 7.2.1(eslint@9.34.0) 1162 | globals: 16.3.0 1163 | typescript-eslint: 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1164 | transitivePeerDependencies: 1165 | - '@typescript-eslint/utils' 1166 | - eslint-import-resolver-node 1167 | - supports-color 1168 | - typescript 1169 | 1170 | '@napi-rs/wasm-runtime@0.2.12': 1171 | dependencies: 1172 | '@emnapi/core': 1.5.0 1173 | '@emnapi/runtime': 1.5.0 1174 | '@tybys/wasm-util': 0.10.0 1175 | optional: true 1176 | 1177 | '@nodelib/fs.scandir@2.1.5': 1178 | dependencies: 1179 | '@nodelib/fs.stat': 2.0.5 1180 | run-parallel: 1.2.0 1181 | 1182 | '@nodelib/fs.stat@2.0.5': {} 1183 | 1184 | '@nodelib/fs.walk@1.2.8': 1185 | dependencies: 1186 | '@nodelib/fs.scandir': 2.1.5 1187 | fastq: 1.19.1 1188 | 1189 | '@pkgjs/parseargs@0.11.0': 1190 | optional: true 1191 | 1192 | '@tybys/wasm-util@0.10.0': 1193 | dependencies: 1194 | tslib: 2.8.1 1195 | optional: true 1196 | 1197 | '@types/estree@1.0.8': {} 1198 | 1199 | '@types/istanbul-lib-coverage@2.0.6': {} 1200 | 1201 | '@types/json-schema@7.0.15': {} 1202 | 1203 | '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2)': 1204 | dependencies: 1205 | '@eslint-community/regexpp': 4.12.1 1206 | '@typescript-eslint/parser': 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1207 | '@typescript-eslint/scope-manager': 8.42.0 1208 | '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1209 | '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1210 | '@typescript-eslint/visitor-keys': 8.42.0 1211 | eslint: 9.34.0 1212 | graphemer: 1.4.0 1213 | ignore: 7.0.5 1214 | natural-compare: 1.4.0 1215 | ts-api-utils: 2.1.0(typescript@5.9.2) 1216 | typescript: 5.9.2 1217 | transitivePeerDependencies: 1218 | - supports-color 1219 | 1220 | '@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2)': 1221 | dependencies: 1222 | '@typescript-eslint/scope-manager': 8.42.0 1223 | '@typescript-eslint/types': 8.42.0 1224 | '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) 1225 | '@typescript-eslint/visitor-keys': 8.42.0 1226 | debug: 4.4.1 1227 | eslint: 9.34.0 1228 | typescript: 5.9.2 1229 | transitivePeerDependencies: 1230 | - supports-color 1231 | 1232 | '@typescript-eslint/project-service@8.42.0(typescript@5.9.2)': 1233 | dependencies: 1234 | '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) 1235 | '@typescript-eslint/types': 8.42.0 1236 | debug: 4.4.1 1237 | typescript: 5.9.2 1238 | transitivePeerDependencies: 1239 | - supports-color 1240 | 1241 | '@typescript-eslint/scope-manager@8.42.0': 1242 | dependencies: 1243 | '@typescript-eslint/types': 8.42.0 1244 | '@typescript-eslint/visitor-keys': 8.42.0 1245 | 1246 | '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.9.2)': 1247 | dependencies: 1248 | typescript: 5.9.2 1249 | 1250 | '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0)(typescript@5.9.2)': 1251 | dependencies: 1252 | '@typescript-eslint/types': 8.42.0 1253 | '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) 1254 | '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1255 | debug: 4.4.1 1256 | eslint: 9.34.0 1257 | ts-api-utils: 2.1.0(typescript@5.9.2) 1258 | typescript: 5.9.2 1259 | transitivePeerDependencies: 1260 | - supports-color 1261 | 1262 | '@typescript-eslint/types@8.42.0': {} 1263 | 1264 | '@typescript-eslint/typescript-estree@8.42.0(typescript@5.9.2)': 1265 | dependencies: 1266 | '@typescript-eslint/project-service': 8.42.0(typescript@5.9.2) 1267 | '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.9.2) 1268 | '@typescript-eslint/types': 8.42.0 1269 | '@typescript-eslint/visitor-keys': 8.42.0 1270 | debug: 4.4.1 1271 | fast-glob: 3.3.3 1272 | is-glob: 4.0.3 1273 | minimatch: 9.0.5 1274 | semver: 7.7.2 1275 | ts-api-utils: 2.1.0(typescript@5.9.2) 1276 | typescript: 5.9.2 1277 | transitivePeerDependencies: 1278 | - supports-color 1279 | 1280 | '@typescript-eslint/utils@8.42.0(eslint@9.34.0)(typescript@5.9.2)': 1281 | dependencies: 1282 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 1283 | '@typescript-eslint/scope-manager': 8.42.0 1284 | '@typescript-eslint/types': 8.42.0 1285 | '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) 1286 | eslint: 9.34.0 1287 | typescript: 5.9.2 1288 | transitivePeerDependencies: 1289 | - supports-color 1290 | 1291 | '@typescript-eslint/visitor-keys@8.42.0': 1292 | dependencies: 1293 | '@typescript-eslint/types': 8.42.0 1294 | eslint-visitor-keys: 4.2.1 1295 | 1296 | '@unrs/resolver-binding-android-arm-eabi@1.11.1': 1297 | optional: true 1298 | 1299 | '@unrs/resolver-binding-android-arm64@1.11.1': 1300 | optional: true 1301 | 1302 | '@unrs/resolver-binding-darwin-arm64@1.11.1': 1303 | optional: true 1304 | 1305 | '@unrs/resolver-binding-darwin-x64@1.11.1': 1306 | optional: true 1307 | 1308 | '@unrs/resolver-binding-freebsd-x64@1.11.1': 1309 | optional: true 1310 | 1311 | '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': 1312 | optional: true 1313 | 1314 | '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': 1315 | optional: true 1316 | 1317 | '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': 1318 | optional: true 1319 | 1320 | '@unrs/resolver-binding-linux-arm64-musl@1.11.1': 1321 | optional: true 1322 | 1323 | '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': 1324 | optional: true 1325 | 1326 | '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': 1327 | optional: true 1328 | 1329 | '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': 1330 | optional: true 1331 | 1332 | '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': 1333 | optional: true 1334 | 1335 | '@unrs/resolver-binding-linux-x64-gnu@1.11.1': 1336 | optional: true 1337 | 1338 | '@unrs/resolver-binding-linux-x64-musl@1.11.1': 1339 | optional: true 1340 | 1341 | '@unrs/resolver-binding-wasm32-wasi@1.11.1': 1342 | dependencies: 1343 | '@napi-rs/wasm-runtime': 0.2.12 1344 | optional: true 1345 | 1346 | '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': 1347 | optional: true 1348 | 1349 | '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': 1350 | optional: true 1351 | 1352 | '@unrs/resolver-binding-win32-x64-msvc@1.11.1': 1353 | optional: true 1354 | 1355 | acorn-jsx@5.3.2(acorn@8.15.0): 1356 | dependencies: 1357 | acorn: 8.15.0 1358 | 1359 | acorn@8.15.0: {} 1360 | 1361 | actions-up@1.3.0: 1362 | dependencies: 1363 | cac: 6.7.14 1364 | enquirer: 2.4.1 1365 | nanospinner: 1.2.2 1366 | picocolors: 1.1.1 1367 | semver: 7.7.2 1368 | yaml: 2.8.1 1369 | 1370 | ajv@6.12.6: 1371 | dependencies: 1372 | fast-deep-equal: 3.1.3 1373 | fast-json-stable-stringify: 2.1.0 1374 | json-schema-traverse: 0.4.1 1375 | uri-js: 4.4.1 1376 | 1377 | ansi-colors@4.1.3: {} 1378 | 1379 | ansi-regex@5.0.1: {} 1380 | 1381 | ansi-regex@6.2.0: {} 1382 | 1383 | ansi-styles@4.3.0: 1384 | dependencies: 1385 | color-convert: 2.0.1 1386 | 1387 | ansi-styles@6.2.1: {} 1388 | 1389 | argparse@2.0.1: {} 1390 | 1391 | balanced-match@1.0.2: {} 1392 | 1393 | brace-expansion@1.1.12: 1394 | dependencies: 1395 | balanced-match: 1.0.2 1396 | concat-map: 0.0.1 1397 | 1398 | brace-expansion@2.0.2: 1399 | dependencies: 1400 | balanced-match: 1.0.2 1401 | 1402 | braces@3.0.3: 1403 | dependencies: 1404 | fill-range: 7.1.1 1405 | 1406 | c8@10.1.3: 1407 | dependencies: 1408 | '@bcoe/v8-coverage': 1.0.2 1409 | '@istanbuljs/schema': 0.1.3 1410 | find-up: 5.0.0 1411 | foreground-child: 3.3.1 1412 | istanbul-lib-coverage: 3.2.2 1413 | istanbul-lib-report: 3.0.1 1414 | istanbul-reports: 3.2.0 1415 | test-exclude: 7.0.1 1416 | v8-to-istanbul: 9.3.0 1417 | yargs: 17.7.2 1418 | yargs-parser: 21.1.1 1419 | 1420 | cac@6.7.14: {} 1421 | 1422 | callsites@3.1.0: {} 1423 | 1424 | chalk@4.1.2: 1425 | dependencies: 1426 | ansi-styles: 4.3.0 1427 | supports-color: 7.2.0 1428 | 1429 | clean-publish@5.2.2: 1430 | dependencies: 1431 | cross-spawn: 7.0.6 1432 | fast-glob: 3.3.3 1433 | lilconfig: 3.1.3 1434 | micromatch: 4.0.8 1435 | 1436 | cliui@8.0.1: 1437 | dependencies: 1438 | string-width: 4.2.3 1439 | strip-ansi: 6.0.1 1440 | wrap-ansi: 7.0.0 1441 | 1442 | color-convert@2.0.1: 1443 | dependencies: 1444 | color-name: 1.1.4 1445 | 1446 | color-name@1.1.4: {} 1447 | 1448 | comment-parser@1.4.1: {} 1449 | 1450 | concat-map@0.0.1: {} 1451 | 1452 | convert-source-map@2.0.0: {} 1453 | 1454 | cross-spawn@7.0.6: 1455 | dependencies: 1456 | path-key: 3.1.1 1457 | shebang-command: 2.0.0 1458 | which: 2.0.2 1459 | 1460 | debug@3.2.7: 1461 | dependencies: 1462 | ms: 2.1.3 1463 | optional: true 1464 | 1465 | debug@4.4.1: 1466 | dependencies: 1467 | ms: 2.1.3 1468 | 1469 | deep-is@0.1.4: {} 1470 | 1471 | eastasianwidth@0.2.0: {} 1472 | 1473 | emoji-regex@8.0.0: {} 1474 | 1475 | emoji-regex@9.2.2: {} 1476 | 1477 | enhanced-resolve@5.18.3: 1478 | dependencies: 1479 | graceful-fs: 4.2.11 1480 | tapable: 2.2.3 1481 | 1482 | enquirer@2.4.1: 1483 | dependencies: 1484 | ansi-colors: 4.1.3 1485 | strip-ansi: 6.0.1 1486 | 1487 | escalade@3.2.0: {} 1488 | 1489 | escape-string-regexp@4.0.0: {} 1490 | 1491 | eslint-compat-utils@0.5.1(eslint@9.34.0): 1492 | dependencies: 1493 | eslint: 9.34.0 1494 | semver: 7.7.2 1495 | 1496 | eslint-import-context@0.1.9(unrs-resolver@1.11.1): 1497 | dependencies: 1498 | get-tsconfig: 4.10.1 1499 | stable-hash-x: 0.2.0 1500 | optionalDependencies: 1501 | unrs-resolver: 1.11.1 1502 | 1503 | eslint-import-resolver-node@0.3.9: 1504 | dependencies: 1505 | debug: 3.2.7 1506 | is-core-module: 2.16.1 1507 | resolve: 1.22.10 1508 | transitivePeerDependencies: 1509 | - supports-color 1510 | optional: true 1511 | 1512 | eslint-plugin-es-x@7.8.0(eslint@9.34.0): 1513 | dependencies: 1514 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 1515 | '@eslint-community/regexpp': 4.12.1 1516 | eslint: 9.34.0 1517 | eslint-compat-utils: 0.5.1(eslint@9.34.0) 1518 | 1519 | eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0): 1520 | dependencies: 1521 | '@typescript-eslint/types': 8.42.0 1522 | comment-parser: 1.4.1 1523 | debug: 4.4.1 1524 | eslint: 9.34.0 1525 | eslint-import-context: 0.1.9(unrs-resolver@1.11.1) 1526 | is-glob: 4.0.3 1527 | minimatch: 10.0.3 1528 | semver: 7.7.2 1529 | stable-hash-x: 0.2.0 1530 | unrs-resolver: 1.11.1 1531 | optionalDependencies: 1532 | '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1533 | eslint-import-resolver-node: 0.3.9 1534 | transitivePeerDependencies: 1535 | - supports-color 1536 | 1537 | eslint-plugin-n@17.21.3(eslint@9.34.0)(typescript@5.9.2): 1538 | dependencies: 1539 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 1540 | enhanced-resolve: 5.18.3 1541 | eslint: 9.34.0 1542 | eslint-plugin-es-x: 7.8.0(eslint@9.34.0) 1543 | get-tsconfig: 4.10.1 1544 | globals: 15.15.0 1545 | globrex: 0.1.2 1546 | ignore: 5.3.2 1547 | semver: 7.7.2 1548 | ts-declaration-location: 1.0.7(typescript@5.9.2) 1549 | transitivePeerDependencies: 1550 | - typescript 1551 | 1552 | eslint-plugin-perfectionist@4.15.0(eslint@9.34.0)(typescript@5.9.2): 1553 | dependencies: 1554 | '@typescript-eslint/types': 8.42.0 1555 | '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1556 | eslint: 9.34.0 1557 | natural-orderby: 5.0.0 1558 | transitivePeerDependencies: 1559 | - supports-color 1560 | - typescript 1561 | 1562 | eslint-plugin-prefer-let@4.0.0: 1563 | dependencies: 1564 | requireindex: 1.2.0 1565 | 1566 | eslint-plugin-promise@7.2.1(eslint@9.34.0): 1567 | dependencies: 1568 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 1569 | eslint: 9.34.0 1570 | 1571 | eslint-scope@8.4.0: 1572 | dependencies: 1573 | esrecurse: 4.3.0 1574 | estraverse: 5.3.0 1575 | 1576 | eslint-visitor-keys@3.4.3: {} 1577 | 1578 | eslint-visitor-keys@4.2.1: {} 1579 | 1580 | eslint@9.34.0: 1581 | dependencies: 1582 | '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0) 1583 | '@eslint-community/regexpp': 4.12.1 1584 | '@eslint/config-array': 0.21.0 1585 | '@eslint/config-helpers': 0.3.1 1586 | '@eslint/core': 0.15.2 1587 | '@eslint/eslintrc': 3.3.1 1588 | '@eslint/js': 9.34.0 1589 | '@eslint/plugin-kit': 0.3.5 1590 | '@humanfs/node': 0.16.6 1591 | '@humanwhocodes/module-importer': 1.0.1 1592 | '@humanwhocodes/retry': 0.4.3 1593 | '@types/estree': 1.0.8 1594 | '@types/json-schema': 7.0.15 1595 | ajv: 6.12.6 1596 | chalk: 4.1.2 1597 | cross-spawn: 7.0.6 1598 | debug: 4.4.1 1599 | escape-string-regexp: 4.0.0 1600 | eslint-scope: 8.4.0 1601 | eslint-visitor-keys: 4.2.1 1602 | espree: 10.4.0 1603 | esquery: 1.6.0 1604 | esutils: 2.0.3 1605 | fast-deep-equal: 3.1.3 1606 | file-entry-cache: 8.0.0 1607 | find-up: 5.0.0 1608 | glob-parent: 6.0.2 1609 | ignore: 5.3.2 1610 | imurmurhash: 0.1.4 1611 | is-glob: 4.0.3 1612 | json-stable-stringify-without-jsonify: 1.0.1 1613 | lodash.merge: 4.6.2 1614 | minimatch: 3.1.2 1615 | natural-compare: 1.4.0 1616 | optionator: 0.9.4 1617 | transitivePeerDependencies: 1618 | - supports-color 1619 | 1620 | espree@10.4.0: 1621 | dependencies: 1622 | acorn: 8.15.0 1623 | acorn-jsx: 5.3.2(acorn@8.15.0) 1624 | eslint-visitor-keys: 4.2.1 1625 | 1626 | esquery@1.6.0: 1627 | dependencies: 1628 | estraverse: 5.3.0 1629 | 1630 | esrecurse@4.3.0: 1631 | dependencies: 1632 | estraverse: 5.3.0 1633 | 1634 | estraverse@5.3.0: {} 1635 | 1636 | esutils@2.0.3: {} 1637 | 1638 | fast-deep-equal@3.1.3: {} 1639 | 1640 | fast-glob@3.3.3: 1641 | dependencies: 1642 | '@nodelib/fs.stat': 2.0.5 1643 | '@nodelib/fs.walk': 1.2.8 1644 | glob-parent: 5.1.2 1645 | merge2: 1.4.1 1646 | micromatch: 4.0.8 1647 | 1648 | fast-json-stable-stringify@2.1.0: {} 1649 | 1650 | fast-levenshtein@2.0.6: {} 1651 | 1652 | fastq@1.19.1: 1653 | dependencies: 1654 | reusify: 1.1.0 1655 | 1656 | file-entry-cache@8.0.0: 1657 | dependencies: 1658 | flat-cache: 4.0.1 1659 | 1660 | fill-range@7.1.1: 1661 | dependencies: 1662 | to-regex-range: 5.0.1 1663 | 1664 | find-up@5.0.0: 1665 | dependencies: 1666 | locate-path: 6.0.0 1667 | path-exists: 4.0.0 1668 | 1669 | flat-cache@4.0.1: 1670 | dependencies: 1671 | flatted: 3.3.3 1672 | keyv: 4.5.4 1673 | 1674 | flatted@3.3.3: {} 1675 | 1676 | foreground-child@3.3.1: 1677 | dependencies: 1678 | cross-spawn: 7.0.6 1679 | signal-exit: 4.1.0 1680 | 1681 | function-bind@1.1.2: 1682 | optional: true 1683 | 1684 | get-caller-file@2.0.5: {} 1685 | 1686 | get-tsconfig@4.10.1: 1687 | dependencies: 1688 | resolve-pkg-maps: 1.0.0 1689 | 1690 | glob-parent@5.1.2: 1691 | dependencies: 1692 | is-glob: 4.0.3 1693 | 1694 | glob-parent@6.0.2: 1695 | dependencies: 1696 | is-glob: 4.0.3 1697 | 1698 | glob@10.4.5: 1699 | dependencies: 1700 | foreground-child: 3.3.1 1701 | jackspeak: 3.4.3 1702 | minimatch: 9.0.5 1703 | minipass: 7.1.2 1704 | package-json-from-dist: 1.0.1 1705 | path-scurry: 1.11.1 1706 | 1707 | globals@14.0.0: {} 1708 | 1709 | globals@15.15.0: {} 1710 | 1711 | globals@16.3.0: {} 1712 | 1713 | globrex@0.1.2: {} 1714 | 1715 | graceful-fs@4.2.11: {} 1716 | 1717 | graphemer@1.4.0: {} 1718 | 1719 | has-flag@4.0.0: {} 1720 | 1721 | hasown@2.0.2: 1722 | dependencies: 1723 | function-bind: 1.1.2 1724 | optional: true 1725 | 1726 | html-escaper@2.0.2: {} 1727 | 1728 | ignore@5.3.2: {} 1729 | 1730 | ignore@7.0.5: {} 1731 | 1732 | import-fresh@3.3.1: 1733 | dependencies: 1734 | parent-module: 1.0.1 1735 | resolve-from: 4.0.0 1736 | 1737 | imurmurhash@0.1.4: {} 1738 | 1739 | is-core-module@2.16.1: 1740 | dependencies: 1741 | hasown: 2.0.2 1742 | optional: true 1743 | 1744 | is-extglob@2.1.1: {} 1745 | 1746 | is-fullwidth-code-point@3.0.0: {} 1747 | 1748 | is-glob@4.0.3: 1749 | dependencies: 1750 | is-extglob: 2.1.1 1751 | 1752 | is-number@7.0.0: {} 1753 | 1754 | isexe@2.0.0: {} 1755 | 1756 | istanbul-lib-coverage@3.2.2: {} 1757 | 1758 | istanbul-lib-report@3.0.1: 1759 | dependencies: 1760 | istanbul-lib-coverage: 3.2.2 1761 | make-dir: 4.0.0 1762 | supports-color: 7.2.0 1763 | 1764 | istanbul-reports@3.2.0: 1765 | dependencies: 1766 | html-escaper: 2.0.2 1767 | istanbul-lib-report: 3.0.1 1768 | 1769 | jackspeak@3.4.3: 1770 | dependencies: 1771 | '@isaacs/cliui': 8.0.2 1772 | optionalDependencies: 1773 | '@pkgjs/parseargs': 0.11.0 1774 | 1775 | js-yaml@4.1.0: 1776 | dependencies: 1777 | argparse: 2.0.1 1778 | 1779 | json-buffer@3.0.1: {} 1780 | 1781 | json-schema-traverse@0.4.1: {} 1782 | 1783 | json-stable-stringify-without-jsonify@1.0.1: {} 1784 | 1785 | keyv@4.5.4: 1786 | dependencies: 1787 | json-buffer: 3.0.1 1788 | 1789 | levn@0.4.1: 1790 | dependencies: 1791 | prelude-ls: 1.2.1 1792 | type-check: 0.4.0 1793 | 1794 | lilconfig@3.1.3: {} 1795 | 1796 | locate-path@6.0.0: 1797 | dependencies: 1798 | p-locate: 5.0.0 1799 | 1800 | lodash.merge@4.6.2: {} 1801 | 1802 | lru-cache@10.4.3: {} 1803 | 1804 | make-dir@4.0.0: 1805 | dependencies: 1806 | semver: 7.7.2 1807 | 1808 | merge2@1.4.1: {} 1809 | 1810 | micromatch@4.0.8: 1811 | dependencies: 1812 | braces: 3.0.3 1813 | picomatch: 2.3.1 1814 | 1815 | minimatch@10.0.3: 1816 | dependencies: 1817 | '@isaacs/brace-expansion': 5.0.0 1818 | 1819 | minimatch@3.1.2: 1820 | dependencies: 1821 | brace-expansion: 1.1.12 1822 | 1823 | minimatch@9.0.5: 1824 | dependencies: 1825 | brace-expansion: 2.0.2 1826 | 1827 | minipass@7.1.2: {} 1828 | 1829 | ms@2.1.3: {} 1830 | 1831 | nanoid@3.3.11: {} 1832 | 1833 | nanospinner@1.2.2: 1834 | dependencies: 1835 | picocolors: 1.1.1 1836 | 1837 | napi-postinstall@0.3.3: {} 1838 | 1839 | natural-compare@1.4.0: {} 1840 | 1841 | natural-orderby@5.0.0: {} 1842 | 1843 | optionator@0.9.4: 1844 | dependencies: 1845 | deep-is: 0.1.4 1846 | fast-levenshtein: 2.0.6 1847 | levn: 0.4.1 1848 | prelude-ls: 1.2.1 1849 | type-check: 0.4.0 1850 | word-wrap: 1.2.5 1851 | 1852 | p-limit@3.1.0: 1853 | dependencies: 1854 | yocto-queue: 0.1.0 1855 | 1856 | p-locate@5.0.0: 1857 | dependencies: 1858 | p-limit: 3.1.0 1859 | 1860 | package-json-from-dist@1.0.1: {} 1861 | 1862 | parent-module@1.0.1: 1863 | dependencies: 1864 | callsites: 3.1.0 1865 | 1866 | path-exists@4.0.0: {} 1867 | 1868 | path-key@3.1.1: {} 1869 | 1870 | path-parse@1.0.7: 1871 | optional: true 1872 | 1873 | path-scurry@1.11.1: 1874 | dependencies: 1875 | lru-cache: 10.4.3 1876 | minipass: 7.1.2 1877 | 1878 | picocolors@1.1.1: {} 1879 | 1880 | picomatch@2.3.1: {} 1881 | 1882 | picomatch@4.0.3: {} 1883 | 1884 | postcss-value-parser@4.2.0: {} 1885 | 1886 | postcss@8.5.6: 1887 | dependencies: 1888 | nanoid: 3.3.11 1889 | picocolors: 1.1.1 1890 | source-map-js: 1.2.1 1891 | 1892 | prelude-ls@1.2.1: {} 1893 | 1894 | punycode@2.3.1: {} 1895 | 1896 | queue-microtask@1.2.3: {} 1897 | 1898 | require-directory@2.1.1: {} 1899 | 1900 | requireindex@1.2.0: {} 1901 | 1902 | resolve-from@4.0.0: {} 1903 | 1904 | resolve-pkg-maps@1.0.0: {} 1905 | 1906 | resolve@1.22.10: 1907 | dependencies: 1908 | is-core-module: 2.16.1 1909 | path-parse: 1.0.7 1910 | supports-preserve-symlinks-flag: 1.0.0 1911 | optional: true 1912 | 1913 | reusify@1.1.0: {} 1914 | 1915 | run-parallel@1.2.0: 1916 | dependencies: 1917 | queue-microtask: 1.2.3 1918 | 1919 | semver@7.7.2: {} 1920 | 1921 | shebang-command@2.0.0: 1922 | dependencies: 1923 | shebang-regex: 3.0.0 1924 | 1925 | shebang-regex@3.0.0: {} 1926 | 1927 | signal-exit@4.1.0: {} 1928 | 1929 | source-map-js@1.2.1: {} 1930 | 1931 | stable-hash-x@0.2.0: {} 1932 | 1933 | string-width@4.2.3: 1934 | dependencies: 1935 | emoji-regex: 8.0.0 1936 | is-fullwidth-code-point: 3.0.0 1937 | strip-ansi: 6.0.1 1938 | 1939 | string-width@5.1.2: 1940 | dependencies: 1941 | eastasianwidth: 0.2.0 1942 | emoji-regex: 9.2.2 1943 | strip-ansi: 7.1.0 1944 | 1945 | strip-ansi@6.0.1: 1946 | dependencies: 1947 | ansi-regex: 5.0.1 1948 | 1949 | strip-ansi@7.1.0: 1950 | dependencies: 1951 | ansi-regex: 6.2.0 1952 | 1953 | strip-json-comments@3.1.1: {} 1954 | 1955 | supports-color@7.2.0: 1956 | dependencies: 1957 | has-flag: 4.0.0 1958 | 1959 | supports-preserve-symlinks-flag@1.0.0: 1960 | optional: true 1961 | 1962 | tapable@2.2.3: {} 1963 | 1964 | test-exclude@7.0.1: 1965 | dependencies: 1966 | '@istanbuljs/schema': 0.1.3 1967 | glob: 10.4.5 1968 | minimatch: 9.0.5 1969 | 1970 | to-regex-range@5.0.1: 1971 | dependencies: 1972 | is-number: 7.0.0 1973 | 1974 | ts-api-utils@2.1.0(typescript@5.9.2): 1975 | dependencies: 1976 | typescript: 5.9.2 1977 | 1978 | ts-declaration-location@1.0.7(typescript@5.9.2): 1979 | dependencies: 1980 | picomatch: 4.0.3 1981 | typescript: 5.9.2 1982 | 1983 | tslib@2.8.1: 1984 | optional: true 1985 | 1986 | type-check@0.4.0: 1987 | dependencies: 1988 | prelude-ls: 1.2.1 1989 | 1990 | typescript-eslint@8.42.0(eslint@9.34.0)(typescript@5.9.2): 1991 | dependencies: 1992 | '@typescript-eslint/eslint-plugin': 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0)(typescript@5.9.2))(eslint@9.34.0)(typescript@5.9.2) 1993 | '@typescript-eslint/parser': 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1994 | '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.9.2) 1995 | '@typescript-eslint/utils': 8.42.0(eslint@9.34.0)(typescript@5.9.2) 1996 | eslint: 9.34.0 1997 | typescript: 5.9.2 1998 | transitivePeerDependencies: 1999 | - supports-color 2000 | 2001 | typescript@5.9.2: {} 2002 | 2003 | unrs-resolver@1.11.1: 2004 | dependencies: 2005 | napi-postinstall: 0.3.3 2006 | optionalDependencies: 2007 | '@unrs/resolver-binding-android-arm-eabi': 1.11.1 2008 | '@unrs/resolver-binding-android-arm64': 1.11.1 2009 | '@unrs/resolver-binding-darwin-arm64': 1.11.1 2010 | '@unrs/resolver-binding-darwin-x64': 1.11.1 2011 | '@unrs/resolver-binding-freebsd-x64': 1.11.1 2012 | '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 2013 | '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 2014 | '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 2015 | '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 2016 | '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 2017 | '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 2018 | '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 2019 | '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 2020 | '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 2021 | '@unrs/resolver-binding-linux-x64-musl': 1.11.1 2022 | '@unrs/resolver-binding-wasm32-wasi': 1.11.1 2023 | '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 2024 | '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 2025 | '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 2026 | 2027 | uri-js@4.4.1: 2028 | dependencies: 2029 | punycode: 2.3.1 2030 | 2031 | v8-to-istanbul@9.3.0: 2032 | dependencies: 2033 | '@jridgewell/trace-mapping': 0.3.30 2034 | '@types/istanbul-lib-coverage': 2.0.6 2035 | convert-source-map: 2.0.0 2036 | 2037 | which@2.0.2: 2038 | dependencies: 2039 | isexe: 2.0.0 2040 | 2041 | word-wrap@1.2.5: {} 2042 | 2043 | wrap-ansi@7.0.0: 2044 | dependencies: 2045 | ansi-styles: 4.3.0 2046 | string-width: 4.2.3 2047 | strip-ansi: 6.0.1 2048 | 2049 | wrap-ansi@8.1.0: 2050 | dependencies: 2051 | ansi-styles: 6.2.1 2052 | string-width: 5.1.2 2053 | strip-ansi: 7.1.0 2054 | 2055 | y18n@5.0.8: {} 2056 | 2057 | yaml@2.8.1: {} 2058 | 2059 | yargs-parser@21.1.1: {} 2060 | 2061 | yargs@17.7.2: 2062 | dependencies: 2063 | cliui: 8.0.1 2064 | escalade: 3.2.0 2065 | get-caller-file: 2.0.5 2066 | require-directory: 2.1.1 2067 | string-width: 4.2.3 2068 | y18n: 5.0.8 2069 | yargs-parser: 21.1.1 2070 | 2071 | yocto-queue@0.1.0: {} 2072 | --------------------------------------------------------------------------------