├── .editorconfig ├── .github ├── FUNDING.yml └── workflows │ ├── release.yml │ └── test.yml ├── .gitignore ├── .npmignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── eslint.config.mjs ├── index.d.ts ├── index.js ├── index.test.js ├── package.json └── pnpm-lock.yaml /.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 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: postcss 2 | github: ai 3 | -------------------------------------------------------------------------------- /.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@v4 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@v2 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@v4 16 | - name: Install pnpm 17 | uses: pnpm/action-setup@v4 18 | with: 19 | version: 9 20 | - name: Install Node.js 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: 23 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 | - 18 37 | name: Node.js ${{ matrix.node-version }} Quick 38 | steps: 39 | - name: Checkout the repository 40 | uses: actions/checkout@v4 41 | - name: Install pnpm 42 | uses: pnpm/action-setup@v4 43 | with: 44 | version: 9 45 | - name: Install Node.js ${{ matrix.node-version }} 46 | uses: actions/setup-node@v4 47 | with: 48 | node-version: ${{ matrix.node-version }} 49 | cache: pnpm 50 | - name: Install dependencies 51 | run: pnpm install --ignore-scripts 52 | - name: Run unit tests 53 | run: pnpm unit 54 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | 3 | coverage/ 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | *.test.js 2 | coverage/ 3 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | This project adheres to [Semantic Versioning](http://semver.org/). 3 | 4 | ## 7.0.2 5 | * Fixed nested selector regression (by @Ulyanov-programmer). 6 | 7 | ## 7.0.1 8 | * Fixed RegExp issue with nested comments (by @Ulyanov-programmer). 9 | 10 | ## 7.0.0 11 | * More complex logic of when to move comments (by @Ulyanov-programmer). 12 | * Removed Node.js 16, 14, and 12 support. 13 | 14 | ## 6.2.0 15 | * Added `@starting-style` to bubbling at-rules. 16 | 17 | ## 6.1.0 18 | * Added `@container` to bubbling at-rules. 19 | 20 | ## 6.0 21 | * Added `@layer` to bubbling at-rules (by Már Örlygsson). 22 | * Added moving all preceding comments with rule (by Már Örlygsson). 23 | * Added `with` & `without` parameters on `@at-root` (by Már Örlygsson). 24 | * Added `rootRuleName` option (by Már Örlygsson). 25 | * Fixed handling sibling `@at-root` rule blocks (by Már Örlygsson). 26 | 27 | ## 5.0.6 28 | * Fixed custom at-rules nesting (by @bsak-shell). 29 | 30 | ## 5.0.5 31 | * Fixed `,` at the tail (by Jesse de Boer). 32 | 33 | ## 5.0.4 34 | * Fixed nested `&` at the tail (by Raphael Luba). 35 | * Fixed docs (by Samuel Charpentier). 36 | 37 | ## 5.0.3 38 | * Fixed compatibility with Autoprefixer by adding `@-webkit-keyframes` support. 39 | 40 | ## 5.0.2 41 | * Fixed compatibility with `postcss-mixins` by moving to visitor API. 42 | 43 | ## 5.0.1 44 | * Fixed PostCSS 8.1 compatibility. 45 | * Added funding links. 46 | 47 | ## 5.0 48 | * Moved to PostCSS 8. 49 | * Moved `postcss` to `peerDependencies`. 50 | 51 | ## 4.2.3 52 | * Fixed declarations after nested rule and before at-rule (by Rodion Demikhov). 53 | 54 | ## 4.2.2 55 | * Fixed wrong specificity order of declarations (by Rodion Demikhov). 56 | 57 | ## 4.2.1 58 | * Fix TypeScript definitions (by Avi Vahl). 59 | 60 | ## 4.2 61 | * Add `@at-root` support (by Jason Quense). 62 | 63 | ## 4.1.2 64 | * Improve error messsage on broken selector 65 | 66 | ## 4.1.1 67 | * Add `&(:hover)` support (by Ben Delarre). 68 | 69 | ## 4.1 70 | * Add `unwrap` option. 71 | 72 | ## 4.0 73 | * Use PostCSS 7 (by Aleks Hudochenkov). 74 | * Remove Node.js 4 support. 75 | 76 | ## 3.0 77 | * Add `@font-face` to bubbling at-rules (by Valeriy Komlev). 78 | * Add special logic for `@font-face` bubbling (by Phanindra Pydisetty). 79 | * Use PostCSS selector parser 3.0. 80 | 81 | ## 2.1.2 82 | * Fix replacing multiple `&`. 83 | 84 | ## 2.1.1 85 | * Fix `:not(&)` support. 86 | 87 | ## 2.1 88 | * Add `preserveEmpty` option (by Federico Zivolo). 89 | 90 | ## 2.0.4 91 | * Fix finding `&` in some selectors (by Stepan Mikhaylyuk). 92 | 93 | ## 2.0.3 94 | * Doesn’t replace `&` inside string (by Paul Kiddle). 95 | 96 | ## 2.0.2 97 | * Fix comments moving regression. 98 | 99 | ## 2.0.1 100 | * Fix rules order regression (by Dmitry Vibe). 101 | 102 | ## 2.0 103 | * Use PostCSS 6 API. 104 | 105 | ## 1.0.1 106 | * Clean up npm package. 107 | 108 | ## 1.0 109 | * Use PostCSS 5.0 API. 110 | * Do not add spaces to selector in compressed CSS. 111 | * Move nodes with its comment above. 112 | 113 | ## 0.3.2 114 | * Fix `@supports` at-rule support (by Ben Briggs). 115 | 116 | ## 0.3.1 117 | * Pass PostCSS Plugin Guidelines. 118 | 119 | ## 0.3 120 | * Do not unwrap custom at-rules. 121 | * Add `bubble` option to unwrap some custom at-rules. 122 | * Support PostCSS 4.1 API. 123 | * Fix last semicolon after unwrapping. 124 | 125 | ## 0.2.2 126 | * Module returns function to have common PostCSS API. 127 | 128 | ## 0.2.1 129 | * Add comma support to selectors unwrap. 130 | 131 | ## 0.2 132 | * Use PostCSS 4.0. 133 | * Fix indent, when move rules to other parent. 134 | 135 | ## 0.1 136 | * Initial release. 137 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright 2014 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PostCSS Nested 2 | 3 | 6 | 7 | [PostCSS] plugin to unwrap nested rules closer to Sass syntax. 8 | 9 | ```css 10 | .phone { 11 | &_title { 12 | width: 500px; 13 | @media (max-width: 500px) { 14 | width: auto; 15 | } 16 | body.is_dark & { 17 | color: white; 18 | } 19 | } 20 | img { 21 | display: block; 22 | } 23 | } 24 | 25 | .title { 26 | font-size: var(--font); 27 | 28 | @at-root html { 29 | --font: 16px; 30 | } 31 | } 32 | ``` 33 | 34 | will be processed to: 35 | 36 | ```css 37 | .phone_title { 38 | width: 500px; 39 | } 40 | @media (max-width: 500px) { 41 | .phone_title { 42 | width: auto; 43 | } 44 | } 45 | body.is_dark .phone_title { 46 | color: white; 47 | } 48 | .phone img { 49 | display: block; 50 | } 51 | 52 | .title { 53 | font-size: var(--font); 54 | } 55 | html { 56 | --font: 16px; 57 | } 58 | ``` 59 | 60 | Related plugins: 61 | 62 | - Use [`postcss-current-selector`] **after** this plugin if you want 63 | to use current selector in properties or variables values. 64 | - Use [`postcss-nested-ancestors`] **before** this plugin if you want 65 | to reference any ancestor element directly in your selectors with `^&`. 66 | 67 | Alternatives: 68 | 69 | - See also [`postcss-nesting`], which implements [CSSWG draft]. 70 | - [`postcss-nested-props`] for nested properties like `font-size`. 71 | 72 | 73 | Sponsored by Evil Martians 75 | 76 | 77 | [`postcss-current-selector`]: https://github.com/komlev/postcss-current-selector 78 | [`postcss-nested-ancestors`]: https://github.com/toomuchdesign/postcss-nested-ancestors 79 | [`postcss-nested-props`]: https://github.com/jedmao/postcss-nested-props 80 | [`postcss-nesting`]: https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-nesting 81 | [CSSWG draft]: https://drafts.csswg.org/css-nesting-1/ 82 | [PostCSS]: https://github.com/postcss/postcss 83 | 84 | ## Usage 85 | 86 | **Step 1:** Install plugin: 87 | 88 | ```sh 89 | npm install --save-dev postcss postcss-nested 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-nested'), 105 | require('autoprefixer') 106 | ] 107 | } 108 | ``` 109 | 110 | [official docs]: https://github.com/postcss/postcss#usage 111 | 112 | ## Options 113 | 114 | ### `bubble` 115 | 116 | By default, plugin will bubble only `@media`, `@supports`, `@layer`, 117 | `@container`, and `@starting-style` at-rules. Use this option 118 | to add your custom at-rules to this list. 119 | 120 | ```js 121 | postcss([require('postcss-nested')({ bubble: ['phone'] })]) 122 | ``` 123 | 124 | ```css 125 | /* input */ 126 | a { 127 | color: white; 128 | @phone { 129 | color: black; 130 | } 131 | } 132 | /* output */ 133 | a { 134 | color: white; 135 | } 136 | @phone { 137 | a { 138 | color: black; 139 | } 140 | } 141 | ``` 142 | 143 | ### `unwrap` 144 | 145 | By default, plugin will unwrap only `@font-face`, `@keyframes` and `@document` 146 | at-rules. You can add your custom at-rules to this list by `unwrap` option: 147 | 148 | ```js 149 | postcss([require('postcss-nested')({ unwrap: ['phone'] })]) 150 | ``` 151 | 152 | ```css 153 | /* input */ 154 | a { 155 | color: white; 156 | @phone { 157 | color: black; 158 | } 159 | } 160 | /* output */ 161 | a { 162 | color: white; 163 | } 164 | @phone { 165 | color: black; 166 | } 167 | ``` 168 | 169 | ### `preserveEmpty` 170 | 171 | By default, plugin will strip out any empty selector generated by intermediate 172 | nesting levels. You can set `preserveEmpty` to `true` to preserve them. 173 | 174 | ```css 175 | .a { 176 | .b { 177 | color: black; 178 | } 179 | } 180 | ``` 181 | 182 | Will be compiled to: 183 | 184 | ```css 185 | .a { 186 | } 187 | .a .b { 188 | color: black; 189 | } 190 | ``` 191 | 192 | This is especially useful if you want to export the empty classes with `postcss-modules`. 193 | 194 | ### `rootRuleName` 195 | 196 | The plugin supports the SCSS custom at-rule `@at-root` which breaks rule 197 | blocks out of their nested position. If you want, you can choose a new 198 | custom name for this rule in your code. 199 | 200 | ```js 201 | postcss([require('postcss-nested')({ rootRuleName: '_escape-nesting' })]) 202 | ``` 203 | 204 | ```css 205 | /* input */ 206 | .a { 207 | color: white; 208 | @_escape-nesting { 209 | .b { 210 | color: black; 211 | } 212 | } 213 | } 214 | /* output */ 215 | .a { 216 | color: white; 217 | } 218 | .b { 219 | color: black; 220 | } 221 | ``` 222 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import loguxConfig from '@logux/eslint-config' 2 | 3 | export default [...loguxConfig] 4 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | // Original definitions (@types/postcss-nested) 2 | // by Maxim Vorontsov 3 | 4 | import { PluginCreator } from 'postcss' 5 | 6 | declare namespace nested { 7 | interface Options { 8 | /** 9 | * By default, plugin will bubble only `@media`, `@supports` and `@layer` 10 | * at-rules. Use this option to add your custom at-rules to this list. 11 | */ 12 | bubble?: string[] 13 | 14 | /** 15 | * By default, plugin will unwrap only `@font-face`, `@keyframes`, 16 | * and `@document` at-rules. You can add your custom at-rules 17 | * to this list by this option. 18 | */ 19 | unwrap?: string[] 20 | 21 | /** 22 | * By default, plugin will strip out any empty selector generated 23 | * by intermediate nesting levels. You can set this option to `true` 24 | * to preserve them. 25 | */ 26 | preserveEmpty?: boolean 27 | 28 | /** 29 | * The plugin supports the SCSS custom at-rule `@at-root` which breaks 30 | * rule blocks out of their nested position. If you want, you can choose 31 | * a new custom name for this rule in your code. 32 | */ 33 | rootRuleName?: string 34 | } 35 | 36 | type Nested = PluginCreator 37 | } 38 | 39 | declare const nested: nested.Nested 40 | 41 | export = nested 42 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const { AtRule, Rule } = require('postcss') 2 | let parser = require('postcss-selector-parser') 3 | 4 | /** 5 | * Run a selector string through postcss-selector-parser 6 | */ 7 | function parse(rawSelector, rule) { 8 | let nodes 9 | try { 10 | parser(parsed => { 11 | nodes = parsed 12 | }).processSync(rawSelector) 13 | } catch (e) { 14 | if (rawSelector.includes(':')) { 15 | throw rule ? rule.error('Missed semicolon') : e 16 | } else { 17 | throw rule ? rule.error(e.message) : e 18 | } 19 | } 20 | return nodes.at(0) 21 | } 22 | 23 | /** 24 | * Replaces the "&" token in a node's selector with the parent selector 25 | * similar to what SCSS does. 26 | * 27 | * Mutates the nodes list 28 | */ 29 | function interpolateAmpInSelector(nodes, parent) { 30 | let replaced = false 31 | nodes.each(node => { 32 | if (node.type === 'nesting') { 33 | let clonedParent = parent.clone({}) 34 | if (node.value !== '&') { 35 | node.replaceWith( 36 | parse(node.value.replace('&', clonedParent.toString())) 37 | ) 38 | } else { 39 | node.replaceWith(clonedParent) 40 | } 41 | replaced = true 42 | } else if ('nodes' in node && node.nodes) { 43 | if (interpolateAmpInSelector(node, parent)) { 44 | replaced = true 45 | } 46 | } 47 | }) 48 | return replaced 49 | } 50 | 51 | /** 52 | * Combines parent and child selectors, in a SCSS-like way 53 | */ 54 | function mergeSelectors(parent, child) { 55 | let merged = [] 56 | for (let sel of parent.selectors) { 57 | let parentNode = parse(sel, parent) 58 | 59 | for (let selector of child.selectors) { 60 | if (!selector) { 61 | continue 62 | } 63 | let node = parse(selector, child) 64 | let replaced = interpolateAmpInSelector(node, parentNode) 65 | if (!replaced) { 66 | node.prepend(parser.combinator({ value: ' ' })) 67 | node.prepend(parentNode.clone({})) 68 | } 69 | merged.push(node.toString()) 70 | } 71 | } 72 | return merged 73 | } 74 | 75 | /** 76 | * Move a child and its preceding comment(s) to after "after" 77 | */ 78 | function breakOut(child, currentNode) { 79 | if (child.prev()?.type !== 'comment') { 80 | currentNode.after(child) 81 | return child 82 | } 83 | 84 | let prevNode = child.prev() 85 | 86 | /* Checking that the comment "describes" the rule following. Like this: 87 | /* comment about the rule below *\ 88 | .rule {} 89 | */ 90 | let regexp = /[*]\/ *\n.*{/ 91 | 92 | if (child.parent.toString().match(regexp)) { 93 | currentNode.after(child).after(prevNode) 94 | } 95 | else { 96 | currentNode.after(child) 97 | } 98 | 99 | return child 100 | } 101 | 102 | function createFnAtruleChilds(bubble) { 103 | return function atruleChilds(rule, atrule, bubbling, mergeSels = bubbling) { 104 | let children = [] 105 | atrule.each(child => { 106 | if (child.type === 'rule' && bubbling) { 107 | if (mergeSels) { 108 | child.selectors = mergeSelectors(rule, child) 109 | } 110 | } else if (child.type === 'atrule' && child.nodes) { 111 | if (bubble[child.name]) { 112 | atruleChilds(rule, child, mergeSels) 113 | } else if (atrule[rootRuleMergeSel] !== false) { 114 | children.push(child) 115 | } 116 | } else { 117 | children.push(child) 118 | } 119 | }) 120 | if (bubbling && children.length) { 121 | let clone = rule.clone({ nodes: [] }) 122 | for (let child of children) { 123 | clone.append(child) 124 | } 125 | atrule.prepend(clone) 126 | } 127 | } 128 | } 129 | 130 | function pickDeclarations(selector, declarations, after) { 131 | let parent = new Rule({ 132 | nodes: [], 133 | selector 134 | }) 135 | parent.append(declarations) 136 | after.after(parent) 137 | return parent 138 | } 139 | function pickAndClearDeclarations(ruleSelector, declarations, after, clear = true) { 140 | if (!declarations.length) return [after, declarations] 141 | 142 | after = pickDeclarations(ruleSelector, declarations, after) 143 | 144 | if (clear) { 145 | declarations = [] 146 | } 147 | 148 | return [after, declarations] 149 | } 150 | 151 | function atruleNames(defaults, custom = '') { 152 | let names = defaults.concat(custom) 153 | let list = {} 154 | for (let name of names) { 155 | list[name.replace(/^@/, '')] = true 156 | } 157 | return list 158 | } 159 | 160 | function parseRootRuleParams(params) { 161 | params = params.trim() 162 | let braceBlock = params.match(/^\((.*)\)$/) 163 | if (!braceBlock) { 164 | return { selector: params, type: 'basic' } 165 | } 166 | let bits = braceBlock[1].match(/^(with(?:out)?):(.+)$/) 167 | if (bits) { 168 | let allowlist = bits[1] === 'with' 169 | let rules = Object.fromEntries( 170 | bits[2] 171 | .trim() 172 | .split(/\s+/) 173 | .map(name => [name, true]) 174 | ) 175 | if (allowlist && rules.all) { 176 | return { type: 'noop' } 177 | } 178 | let escapes = rule => !!rules[rule] 179 | if (rules.all) { 180 | escapes = () => true 181 | } else if (allowlist) { 182 | escapes = rule => (rule === 'all' ? false : !rules[rule]) 183 | } 184 | 185 | return { 186 | escapes, 187 | type: 'withrules' 188 | } 189 | } 190 | // Unrecognized brace block 191 | return { type: 'unknown' } 192 | } 193 | 194 | function getAncestorRules(leaf) { 195 | let lineage = [] 196 | let parent = leaf.parent 197 | 198 | while (parent && parent instanceof AtRule) { 199 | lineage.push(parent) 200 | parent = parent.parent 201 | } 202 | return lineage 203 | } 204 | 205 | function unwrapRootRule(rule) { 206 | let escapes = rule[rootRuleEscapes] 207 | 208 | if (!escapes) { 209 | rule.after(rule.nodes) 210 | } else { 211 | let nodes = rule.nodes 212 | 213 | let topEscaped 214 | let topEscapedIdx = -1 215 | let breakoutLeaf 216 | let breakoutRoot 217 | let clone 218 | 219 | let lineage = getAncestorRules(rule) 220 | lineage.forEach((parent, i) => { 221 | if (escapes(parent.name)) { 222 | topEscaped = parent 223 | topEscapedIdx = i 224 | breakoutRoot = clone 225 | } else { 226 | let oldClone = clone 227 | clone = parent.clone({ nodes: [] }) 228 | oldClone && clone.append(oldClone) 229 | breakoutLeaf = breakoutLeaf || clone 230 | } 231 | }) 232 | 233 | if (!topEscaped) { 234 | rule.after(nodes) 235 | } else if (!breakoutRoot) { 236 | topEscaped.after(nodes) 237 | } else { 238 | let leaf = breakoutLeaf 239 | leaf.append(nodes) 240 | topEscaped.after(breakoutRoot) 241 | } 242 | 243 | if (rule.next() && topEscaped) { 244 | let restRoot 245 | lineage.slice(0, topEscapedIdx + 1).forEach((parent, i, arr) => { 246 | let oldRoot = restRoot 247 | restRoot = parent.clone({ nodes: [] }) 248 | oldRoot && restRoot.append(oldRoot) 249 | 250 | let nextSibs = [] 251 | let _child = arr[i - 1] || rule 252 | let next = _child.next() 253 | while (next) { 254 | nextSibs.push(next) 255 | next = next.next() 256 | } 257 | restRoot.append(nextSibs) 258 | }) 259 | restRoot && (breakoutRoot || nodes[nodes.length - 1]).after(restRoot) 260 | } 261 | } 262 | 263 | rule.remove() 264 | } 265 | 266 | const rootRuleMergeSel = Symbol('rootRuleMergeSel') 267 | const rootRuleEscapes = Symbol('rootRuleEscapes') 268 | 269 | function normalizeRootRule(rule) { 270 | let { params } = rule 271 | let { escapes, selector, type } = parseRootRuleParams(params) 272 | if (type === 'unknown') { 273 | throw rule.error( 274 | `Unknown @${rule.name} parameter ${JSON.stringify(params)}` 275 | ) 276 | } 277 | if (type === 'basic' && selector) { 278 | let selectorBlock = new Rule({ nodes: rule.nodes, selector }) 279 | rule.removeAll() 280 | rule.append(selectorBlock) 281 | } 282 | rule[rootRuleEscapes] = escapes 283 | rule[rootRuleMergeSel] = escapes ? !escapes('all') : type === 'noop' 284 | } 285 | 286 | const hasRootRule = Symbol('hasRootRule') 287 | 288 | module.exports = (opts = {}) => { 289 | let bubble = atruleNames( 290 | ['media', 'supports', 'layer', 'container', 'starting-style'], 291 | opts.bubble 292 | ) 293 | let atruleChilds = createFnAtruleChilds(bubble) 294 | let unwrap = atruleNames( 295 | [ 296 | 'document', 297 | 'font-face', 298 | 'keyframes', 299 | '-webkit-keyframes', 300 | '-moz-keyframes' 301 | ], 302 | opts.unwrap 303 | ) 304 | let rootRuleName = (opts.rootRuleName || 'at-root').replace(/^@/, '') 305 | let preserveEmpty = opts.preserveEmpty 306 | 307 | return { 308 | Once(root) { 309 | root.walkAtRules(rootRuleName, node => { 310 | normalizeRootRule(node) 311 | root[hasRootRule] = true 312 | }) 313 | }, 314 | 315 | postcssPlugin: 'postcss-nested', 316 | 317 | RootExit(root) { 318 | if (!root[hasRootRule]) return 319 | 320 | root.walkAtRules(rootRuleName, unwrapRootRule) 321 | root[hasRootRule] = false 322 | }, 323 | 324 | Rule(rule) { 325 | let unwrapped = false 326 | let after = rule 327 | let copyDeclarations = false 328 | let declarations = [] 329 | 330 | rule.each(child => { 331 | switch (child.type) { 332 | case 'atrule': 333 | [after, declarations] = pickAndClearDeclarations(rule.selector, declarations, after) 334 | 335 | if (child.name === rootRuleName) { 336 | unwrapped = true 337 | atruleChilds(rule, child, true, child[rootRuleMergeSel]) 338 | after = breakOut(child, after) 339 | } else if (bubble[child.name]) { 340 | copyDeclarations = true 341 | unwrapped = true 342 | atruleChilds(rule, child, true) 343 | after = breakOut(child, after) 344 | } else if (unwrap[child.name]) { 345 | copyDeclarations = true 346 | unwrapped = true 347 | atruleChilds(rule, child, false) 348 | after = breakOut(child, after) 349 | } else if (copyDeclarations) { 350 | declarations.push(child) 351 | } 352 | 353 | break 354 | case 'decl': 355 | if (copyDeclarations) { 356 | declarations.push(child) 357 | } 358 | 359 | break 360 | case 'rule': 361 | [after, declarations] = pickAndClearDeclarations(rule.selector, declarations, after) 362 | 363 | copyDeclarations = true 364 | unwrapped = true 365 | child.selectors = mergeSelectors(rule, child) 366 | after = breakOut(child, after) 367 | 368 | break 369 | } 370 | }) 371 | 372 | pickAndClearDeclarations(rule.selector, declarations, after, false) 373 | 374 | if (unwrapped && preserveEmpty !== true) { 375 | rule.raws.semicolon = true 376 | if (rule.nodes.length === 0) rule.remove() 377 | } 378 | } 379 | } 380 | } 381 | module.exports.postcss = true 382 | -------------------------------------------------------------------------------- /index.test.js: -------------------------------------------------------------------------------- 1 | let { test } = require('uvu') 2 | let { equal, throws } = require('uvu/assert') 3 | let postcss = require('postcss').default 4 | 5 | let plugin = require('./') 6 | 7 | function normalize(css) { 8 | return css 9 | .replace(/([:;{}]|\*\/|\/\*)/g, ' $1 ') 10 | .replace(/\s\s+/g, ' ') 11 | .replace(/ ([;:])/g, '$1') 12 | .trim() 13 | } 14 | 15 | function run(input, output, opts) { 16 | let result = postcss([plugin(opts)]).process(input, { from: '/test.css' }) 17 | equal(normalize(result.css), normalize(output)) 18 | equal(result.warnings().length, 0) 19 | } 20 | 21 | test('unwraps rule inside rule', () => { 22 | run( 23 | 'a { a: 1 } a { a: 1; b { b: 2; c { c: 3 } } }', 24 | 'a { a: 1 } a { a: 1; } a b { b: 2; } a b c { c: 3 }' 25 | ) 26 | }) 27 | 28 | test('cleans rules after unwrap', () => { 29 | run('a { b .one {} b .two {} }', 'a b .one {} a b .two {}') 30 | }) 31 | 32 | test('preserve empty rules if preserveEmpty is set to true', () => { 33 | run('a { b .one {} b .two {} }', 'a { } a b .one {} a b .two {}', { 34 | preserveEmpty: true 35 | }) 36 | }) 37 | 38 | test('hoists at-root', () => { 39 | run('a { & {} @at-root { b {} } }', 'a {} b {}') 40 | }) 41 | 42 | test('hoists at-root 2', () => { 43 | run('a { @at-root { b {} } }', 'b {}') 44 | }) 45 | 46 | test('at-root short hand', () => { 47 | run('a { & {} @at-root b { } }', 'a {} b {}') 48 | }) 49 | 50 | test('hoists multiple at-roots', () => { 51 | run( 52 | `a { 53 | b { 54 | & {} 55 | @at-root { 56 | c1 {} 57 | c2 {} 58 | } 59 | @at-root { 60 | d {} 61 | } 62 | } 63 | }`, 64 | `a b {} 65 | c1 {} 66 | c2 {} 67 | d {}` 68 | ) 69 | }) 70 | 71 | test('hoists at-root and media siblings', () => { 72 | run( 73 | `a { 74 | x: x; 75 | a2 {} 76 | @at-root { 77 | b {} 78 | } 79 | @media x { 80 | c {} 81 | } 82 | /* asdadf */ 83 | }`, 84 | `a { 85 | x: x; 86 | /* asdadf */ 87 | } 88 | a a2 {} 89 | b {} 90 | @media x { 91 | a c {} 92 | }` 93 | ) 94 | }) 95 | 96 | test('at-root stops at media', () => { 97 | run('@media x { a { & {} @at-root { b { } } } }', '@media x { a {} b {} }') 98 | }) 99 | 100 | test('at-root unwraps nested media', () => { 101 | run('a { & {} @media x { @at-root { b { } } } }', 'a {} @media x { b {} }') 102 | }) 103 | 104 | test('nested at-root with nested media', () => { 105 | run( 106 | `a { 107 | & {} 108 | @at-root { 109 | b { 110 | @at-root { 111 | c { 112 | & {} 113 | } 114 | @media y { 115 | d {} 116 | } 117 | } 118 | } 119 | } 120 | }`, 121 | `a {} 122 | c {} 123 | @media y { 124 | d {} 125 | }` 126 | ) 127 | }) 128 | 129 | test('tolerates immediately nested at-root', () => { 130 | run( 131 | `a { 132 | & {} 133 | @at-root { 134 | @at-root foo { 135 | c {} 136 | } 137 | } 138 | }`, 139 | `a {} 140 | foo c {}` 141 | ) 142 | }) 143 | 144 | test('tolerates top-level at-root', () => { 145 | run( 146 | `@at-root { 147 | a {} 148 | } 149 | @media x { 150 | @at-root { 151 | b {} 152 | } 153 | }`, 154 | `a {} 155 | @media x { 156 | b {} 157 | }` 158 | ) 159 | }) 160 | 161 | test('tolerates immediately nested at-root #2', () => { 162 | run( 163 | `@media x { 164 | a { 165 | & {} 166 | @at-root { 167 | @at-root (without: media) { 168 | c {} 169 | } 170 | } 171 | } 172 | }`, 173 | `@media x { 174 | a {} 175 | } 176 | c {}` 177 | ) 178 | }) 179 | 180 | test('tolerates immediately nested at-root #3', () => { 181 | run( 182 | `@media x { 183 | a { 184 | & {} 185 | @at-root (without: media) { 186 | @at-root (without: media) { 187 | c {} 188 | } 189 | } 190 | } 191 | }`, 192 | `@media x { 193 | a {} 194 | } 195 | a c {}` 196 | ) 197 | }) 198 | 199 | test('at-root supports (without: all)', () => { 200 | run( 201 | `@media x { 202 | @supports (z:y) { 203 | a { 204 | & {} 205 | @at-root (without: all) { 206 | b {} 207 | @media y { 208 | c {} 209 | } 210 | } 211 | b {} 212 | } 213 | } 214 | }`, 215 | `@media x { 216 | @supports (z:y) { 217 | a {} 218 | } 219 | } 220 | b {} 221 | @media y { 222 | c {} 223 | } 224 | @media x { 225 | @supports (z:y) { 226 | a b {} 227 | } 228 | }` 229 | ) 230 | }) 231 | 232 | test('at-root supports (with: all)', () => { 233 | run( 234 | `@media x { 235 | @supports (z:y) { 236 | a { 237 | & {} 238 | @at-root (with: all) { 239 | b {} 240 | @media y { 241 | c {} 242 | } 243 | @media z { 244 | & {} 245 | } 246 | } 247 | } 248 | } 249 | }`, 250 | `@media x { 251 | @supports (z:y) { 252 | a {} 253 | a b {} 254 | @media y { 255 | a c {} 256 | } 257 | @media z { 258 | a {} 259 | } 260 | } 261 | }` 262 | ) 263 | }) 264 | 265 | test('at-root supports (without: foo)', () => { 266 | run( 267 | `@media x { 268 | a { 269 | & {} 270 | @at-root (without: media) { 271 | b {} 272 | } 273 | } 274 | }`, 275 | `@media x { 276 | a {} 277 | } 278 | a b {}` 279 | ) 280 | }) 281 | 282 | test('at-root supports (without: foo) 2', () => { 283 | run( 284 | `@supports (y:z) { 285 | @media x { 286 | a { 287 | b {} 288 | @at-root (without: media) { 289 | c {} 290 | } 291 | } 292 | } 293 | }`, 294 | `@supports (y:z) { 295 | @media x { 296 | a b {} 297 | } 298 | a c {} 299 | }` 300 | ) 301 | }) 302 | 303 | test('at-root supports (with: foo)', () => { 304 | run( 305 | `@supports (y:z) { 306 | @media x { 307 | a { 308 | b {} 309 | @at-root (with: supports) { 310 | c {} 311 | } 312 | } 313 | } 314 | }`, 315 | `@supports (y:z) { 316 | @media x { 317 | a b {} 318 | } 319 | a c {} 320 | }` 321 | ) 322 | }) 323 | 324 | test('at-root supports (without: foo) 3', () => { 325 | run( 326 | `@supports (y:z) { 327 | @media x { 328 | a { 329 | b {} 330 | @at-root (without: supports) { 331 | c {} 332 | } 333 | } 334 | } 335 | }`, 336 | `@supports (y:z) { 337 | @media x { 338 | a b {} 339 | } 340 | } 341 | @media x { 342 | a c {} 343 | }` 344 | ) 345 | }) 346 | 347 | test('at-root supports (without: foo) 4', () => { 348 | run( 349 | `@media x { 350 | @supports (y:z) { 351 | a { 352 | & {} 353 | @at-root (without: supports) { 354 | b {} 355 | } 356 | } 357 | } 358 | }`, 359 | `@media x { 360 | @supports (y:z) { 361 | a {} 362 | } 363 | a b {} 364 | }` 365 | ) 366 | }) 367 | 368 | test('at-root supports (without: foo) 5', () => { 369 | run( 370 | `@media x { 371 | @supports (a:b) { 372 | @media (y) { 373 | @supports (c:d) { 374 | a { 375 | & {} 376 | @at-root (without: supports) { 377 | b {} 378 | } 379 | c {} 380 | } 381 | d {} 382 | } 383 | } 384 | e {} 385 | f {} 386 | } 387 | }`, 388 | `@media x { 389 | @supports (a:b) { 390 | @media (y) { 391 | @supports (c:d) { 392 | a {} 393 | } 394 | } 395 | } 396 | @media (y) { 397 | a b {} 398 | } 399 | @supports (a:b) { 400 | @media (y) { 401 | @supports (c:d) { 402 | a c {} 403 | d {} 404 | } 405 | } 406 | e {} 407 | f {} 408 | } 409 | }` 410 | ) 411 | }) 412 | 413 | test('replaces ampersand', () => { 414 | run('a { body &:hover b {} }', 'body a:hover b {}') 415 | }) 416 | 417 | test('replaces ampersands', () => { 418 | run('a { &:hover, &:active {} }', 'a:hover, a:active {}') 419 | }) 420 | 421 | test('replaces ampersand in string', () => { 422 | run('.block { &_elem {} }', '.block_elem {}') 423 | }) 424 | 425 | test('unwrap rules inside at-rules', () => { 426 | run( 427 | '@media (max-width: 500px) { a { b {} } }', 428 | '@media (max-width: 500px) { a b {} }' 429 | ) 430 | }) 431 | 432 | test('unwraps at-rule', () => { 433 | run( 434 | 'a { b { @media screen { width: auto } } }', 435 | '@media screen {a b { width: auto } }' 436 | ) 437 | }) 438 | 439 | test('unwraps at-rule with rules', () => { 440 | run( 441 | 'a { @media screen { b { color: black } } }', 442 | '@media screen { a b { color: black } }' 443 | ) 444 | }) 445 | 446 | test('unwraps font-face to top level css', () => { 447 | run( 448 | '.a { @font-face { font-family:font; src:url() format("woff"); } }', 449 | '@font-face { font-family:font; src:url() format("woff"); }' 450 | ) 451 | }) 452 | 453 | test('unwraps multiple fonts to top level css', () => { 454 | run( 455 | '.a { @font-face { font-family:f1; } @font-face { font-family:f2; }}', 456 | '@font-face { font-family:f1; } @font-face { font-family:f2; }' 457 | ) 458 | }) 459 | 460 | test('unwraps at-rules', () => { 461 | run( 462 | 'a { a: 1 } a { @media screen { @supports (a: 1) { a: 1 } } }', 463 | 'a { a: 1 } @media screen { @supports (a: 1) { a { a: 1 } } }' 464 | ) 465 | }) 466 | 467 | test('leaves nested @media blocks as is', () => { 468 | run( 469 | `a { a: 1 } 470 | a { 471 | @media screen { 472 | b { 473 | @media (max-width: 100rem) { 474 | @media (min-width: 50rem) { 475 | a: 1 476 | } 477 | } 478 | } 479 | } 480 | }`, 481 | `a { a: 1 } 482 | @media screen { 483 | @media (max-width: 100rem) { 484 | @media (min-width: 50rem) { 485 | a b { a: 1 } 486 | } 487 | } 488 | }` 489 | ) 490 | }) 491 | 492 | test('@at-root fully espacpes nested @media blocks', () => { 493 | run( 494 | `a { x: 3 } 495 | a { 496 | @media screen { 497 | b { 498 | @media (max-width: 100rem) { 499 | x: 2; 500 | @at-root (without: media) { 501 | @media (min-width: 50rem) { 502 | x: 1; 503 | } 504 | } 505 | } 506 | } 507 | } 508 | }`, 509 | `a { x: 3 } 510 | @media screen { 511 | @media (max-width: 100rem) { 512 | a b { x: 2; } 513 | } 514 | } 515 | @media (min-width: 50rem) { 516 | a b { x: 1 } 517 | }` 518 | ) 519 | }) 520 | 521 | test('Multi nested @media is resolved', () => { 522 | run( 523 | `a { 524 | @media screen { 525 | b { 526 | @media (max-width: 100rem) { 527 | y: y; 528 | c { 529 | @media (min-width: 50rem) { 530 | x: x 531 | } 532 | } 533 | } 534 | } 535 | } 536 | }`, 537 | `@media screen { 538 | @media (max-width: 100rem) { 539 | a b { 540 | y: y 541 | } 542 | @media (min-width: 50rem) { 543 | a b c { x:x } 544 | } 545 | } 546 | }` 547 | ) 548 | }) 549 | 550 | test('unwraps at-rules with interleaved properties', () => { 551 | run( 552 | 'a { a: 1 } a { color: red; @media screen { @supports (a: 1) { a: 1 } } background: green }', 553 | 'a { a: 1 } a { color: red; } @media screen { @supports (a: 1) { a { a: 1 } } } a { background: green }' 554 | ) 555 | }) 556 | 557 | test('does not move custom at-rules', () => { 558 | run( 559 | '.one { @mixin test; } .two { @media screen { @mixin test; } } .three { @media screen { @mixin test { color: black } } } .four { @phone { color: black } }', 560 | '.one { @mixin test; } @media screen { .two { @mixin test } } @media screen { .three { @mixin test { color: black } } } @phone { .four { color: black } }', 561 | { bubble: ['phone'] } 562 | ) 563 | }) 564 | 565 | test('does not move custom at-rules placed under nested bubbling ones', () => { 566 | run( 567 | '.one { @supports (color: black) { @media screen { @mixin test; } } } .two { @supports (color: black) { @media screen { @mixin test { color: black } } } }', 568 | '@supports (color: black) { @media screen {.one { @mixin test } } } @supports (color: black) { @media screen { .two { @mixin test { color: black } } } }' 569 | ) 570 | }) 571 | 572 | test('supports bubble option with at-name', () => { 573 | run('a { @phone { color: black } }', '@phone {a { color: black } }', { 574 | bubble: ['@phone'] 575 | }) 576 | }) 577 | 578 | test('unwraps keyframes', () => { 579 | run( 580 | 'a { color: white; @keyframes name { to { color: black } } }', 581 | 'a { color: white; } @keyframes name { to { color: black } }' 582 | ) 583 | }) 584 | 585 | test('supports unwrap option with at-name', () => { 586 | run('a { @phone { color: black } }', '@phone { color: black }', { 587 | unwrap: ['@phone'] 588 | }) 589 | }) 590 | 591 | test('processes comma', () => { 592 | run('.one, .two { a {} }', '.one a, .two a {}') 593 | }) 594 | 595 | test('processes comma with ampersand', () => { 596 | run('.one, .two { &:hover {} }', '.one:hover, .two:hover {}') 597 | }) 598 | 599 | test('processes comma inside', () => { 600 | run('a, b { .one, .two {} }', 'a .one, a .two, b .one, b .two {}') 601 | }) 602 | 603 | test('clears empty selector after comma', () => { 604 | run('a, b { .one, .two, {} }', 'a .one, a .two, b .one, b .two {}') 605 | }) 606 | 607 | test("Save the parent's comment", () => { 608 | run('a { /*i*/ b {} }', 'a { /*i*/ } a b {}') 609 | }) 610 | 611 | test("Save the parent's comment", () => { 612 | run( 613 | ` 614 | div { 615 | /* Comment with ^ $ . | ? * + () */ 616 | &[data-roots-all^=1] * #id .class {} 617 | }`, 618 | '/* Comment with ^ $ . | ? * + () */ div[data-roots-all^=1] * #id .class {}') 619 | }) 620 | 621 | test("Save several rules with attached comments", () => { 622 | run( 623 | ` 624 | a { 625 | /*i*/ 626 | 627 | /*i2*/ 628 | b {} 629 | /*i3*/ 630 | s {} 631 | }`, 632 | `a { /*i*/ } /*i2*/ a b {} /*i3*/ a s {}` 633 | ) 634 | }) 635 | 636 | test("Save the parent's comment with newline", () => { 637 | run( 638 | `a { 639 | /*i*/ 640 | 641 | b {} 642 | }`, 643 | `a { /*i*/ } a b {}` 644 | ) 645 | }) 646 | 647 | test('Save the comments for the parent and child', () => { 648 | run( 649 | ` 650 | a { 651 | /*i*/ 652 | /*o*/ 653 | b {} 654 | }`, 655 | 656 | `a { /*i*/ } /*o*/ a b {}` 657 | ) 658 | }) 659 | 660 | test('Save the comments for the parent and child with at-rule', () => { 661 | run( 662 | `a { /*i*/ 663 | /*o*/ 664 | @media { one: 1 } }`, 665 | 666 | `a { /*i*/ } /*o*/ @media {a { one: 1 } }` 667 | ) 668 | }) 669 | 670 | test('moves comment with declaration', () => { 671 | run('a { @media { /*B*/ one: 1 } }', '@media { a { /*B*/ one: 1 } }') 672 | }) 673 | 674 | test('moves comment with declaration without properties', () => { 675 | run('a { @media { /*B*/ } }', '@media { a { /*B*/ } }') 676 | }) 677 | 678 | test('saves order of rules', () => { 679 | run('.one { & .two {} & .tree {} }', '.one .two {} .one .tree {}') 680 | }) 681 | 682 | test('copies rule for declarations after nested rule', () => { 683 | run( 684 | 'a { a: 1; &b { b: 2 } c: 1; &c { d: 5 } e: 6 } c { f: 1 }', 685 | 'a { a: 1; } ab { b: 2 } a { c: 1; } ac { d: 5 } a { e: 6; } c { f: 1 }' 686 | ) 687 | }) 688 | 689 | test('copies rule for declarations after nested rule and before at-rule', () => { 690 | run( 691 | 'a { &b { a: 1 } b: 2; @media { c: 3 } }', 692 | 'ab { a: 1 } a { b: 2 } @media {a { c: 3 } }' 693 | ) 694 | }) 695 | 696 | test('does not replace ampersand inside string', () => { 697 | run( 698 | 'div { &[data-category="sound & vision"] {} }', 699 | 'div[data-category="sound & vision"] {}' 700 | ) 701 | }) 702 | 703 | test('replaces ampersand in adjacent sibling selector', () => { 704 | run('div { & + & {} }', 'div + div {}') 705 | }) 706 | 707 | test('replaces ampersands in not selector', () => { 708 | run('.a { &:not(&.no) {} }', '.a:not(.a.no) {}') 709 | }) 710 | 711 | test('correctly replaces tail ampersands', () => { 712 | run('.a { .b & {} }', '.b .a {}') 713 | }) 714 | 715 | test('correctly replaces tail ampersands that are nested further down', () => { 716 | run('.a { .b { .c & {} } }', '.c .a .b {}') 717 | }) 718 | 719 | test('correctly replaces tail ampersands that are nested inside ampersand rules', () => { 720 | run('.a { &:hover { .b { .c & {} } } }', '.c .a:hover .b {}') 721 | }) 722 | 723 | test('preserves child order when replacing tail ampersands', () => { 724 | run( 725 | '.a { color: red; .first {} @mixinFirst; .b & {} @mixinLast; .last {} }', 726 | '.a { color: red; } .a .first {} .a { @mixinFirst; } .b .a {} .a { @mixinLast; } .a .last {}' 727 | ) 728 | }) 729 | 730 | test('handles :host selector case', () => { 731 | run(':host { &(:focus) {} }', ':host(:focus) {}') 732 | }) 733 | 734 | test('works with other visitors', () => { 735 | let css = 'a{b{color:red}@mixin;}' 736 | let mixinPlugin = () => { 737 | return { 738 | AtRule: { 739 | mixin(node) { 740 | node.replaceWith('.in{.deep{color:blue}}') 741 | } 742 | }, 743 | postcssPlugin: 'mixin' 744 | } 745 | } 746 | mixinPlugin.postcss = true 747 | let out = postcss([plugin, mixinPlugin]).process(css, { 748 | from: undefined 749 | }).css 750 | equal(out, 'a b{color:red}a .in .deep{color:blue}') 751 | }) 752 | 753 | test('works with other visitors #2', () => { 754 | let css = 'a { @mixin; b {color:red} }' 755 | let mixinPlugin = () => { 756 | return { 757 | AtRule: { 758 | mixin(node) { 759 | node.replaceWith('.in { .deep {color:blue} }') 760 | } 761 | }, 762 | postcssPlugin: 'mixin' 763 | } 764 | } 765 | mixinPlugin.postcss = true 766 | let out = postcss([plugin, mixinPlugin]).process(css, { 767 | from: undefined 768 | }).css 769 | equal(out, 'a .in .deep {color:blue} a b {color:red}') 770 | }) 771 | 772 | test('shows clear errors on missed semicolon', () => { 773 | let css = 'a{\n color: black\n @mixin b { }\n}\n' 774 | throws(() => { 775 | css = postcss([plugin]).process(css, { from: undefined }).css 776 | }, '2:3: Missed semicolon') 777 | }) 778 | 779 | test('shows clear errors on other errors', () => { 780 | let css = 'a{\n -Option/root { }\n}\n' 781 | throws(() => { 782 | css = postcss([plugin]).process(css, { from: undefined }).css 783 | }, ':2:3: Unexpected') 784 | }) 785 | 786 | test('errors on unknown @at-root parameters', () => { 787 | let css = 'a {\n @at-root (wonky: "blah") {\n b {}\n }\n}' 788 | throws(() => { 789 | css = postcss([plugin]).process(css, { from: undefined }).css 790 | }, ':2:3: Unknown @at-root parameter "(wonky: \\"blah\\")"') 791 | }) 792 | 793 | test('third level dependencies', () => { 794 | run( 795 | '.text {&:hover{border-color: red;&:before{color: red;}}}', 796 | '.text:hover{border-color: red;}.text:hover:before{color: red;}' 797 | ) 798 | }) 799 | 800 | test('bubbles @layer blocks', () => { 801 | run( 802 | `@media x { 803 | a { 804 | @layer foo { 805 | x:x 806 | } 807 | } 808 | }`, 809 | `@media x { 810 | @layer foo { 811 | a { 812 | x:x 813 | } 814 | } 815 | }` 816 | ) 817 | }) 818 | 819 | test('third level dependencies #2', () => { 820 | run('.selector{:global{h2{color:pink}}}', '.selector :global h2{color:pink}') 821 | }) 822 | 823 | test('Name of at-root is configurable', () => { 824 | let rootRuleName = '_foobar_' 825 | run(`a { & {} @${rootRuleName} { b {} } }`, `a {} b {}`, { 826 | rootRuleName 827 | }) 828 | }) 829 | 830 | test('The rooRuleName option may start with "@"', () => { 831 | let rootRuleName = '@_foobar_' 832 | run(`a { & {} ${rootRuleName} { b {} } }`, `a {} b {}`, { 833 | rootRuleName 834 | }) 835 | }) 836 | 837 | test.run() 838 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "postcss-nested", 3 | "version": "7.0.2", 4 | "description": "PostCSS plugin to unwrap nested rules like how Sass does it", 5 | "keywords": [ 6 | "postcss", 7 | "css", 8 | "postcss-plugin", 9 | "sass", 10 | "nested" 11 | ], 12 | "scripts": { 13 | "unit": "uvu . '\\.test\\.js$'", 14 | "test:coverage": "c8 pnpm unit", 15 | "test:lint": "eslint .", 16 | "test": "pnpm run /^test:/" 17 | }, 18 | "author": "Andrey Sitnik ", 19 | "license": "MIT", 20 | "repository": "postcss/postcss-nested", 21 | "engines": { 22 | "node": ">=18.0" 23 | }, 24 | "funding": [ 25 | { 26 | "type": "opencollective", 27 | "url": "https://opencollective.com/postcss/" 28 | }, 29 | { 30 | "type": "github", 31 | "url": "https://github.com/sponsors/ai" 32 | } 33 | ], 34 | "peerDependencies": { 35 | "postcss": "^8.2.14" 36 | }, 37 | "dependencies": { 38 | "postcss-selector-parser": "^7.0.0" 39 | }, 40 | "devDependencies": { 41 | "@logux/eslint-config": "^53.4.2", 42 | "c8": "^10.1.2", 43 | "clean-publish": "^5.1.0", 44 | "eslint": "^9.13.0", 45 | "eslint-config-standard": "^17.1.0", 46 | "eslint-plugin-import": "^2.31.0", 47 | "eslint-plugin-n": "^17.12.0", 48 | "eslint-plugin-node-import": "^1.0.4", 49 | "eslint-plugin-perfectionist": "^3.9.1", 50 | "eslint-plugin-prefer-let": "^4.0.0", 51 | "eslint-plugin-promise": "^7.1.0", 52 | "postcss": "^8.4.47", 53 | "uvu": "^0.5.6" 54 | }, 55 | "prettier": { 56 | "arrowParens": "avoid", 57 | "jsxSingleQuote": false, 58 | "quoteProps": "consistent", 59 | "semi": false, 60 | "singleQuote": true, 61 | "trailingComma": "none" 62 | }, 63 | "eslintConfig": { 64 | "extends": "@logux/eslint-config" 65 | }, 66 | "c8": { 67 | "exclude": [ 68 | "**/*.test.*" 69 | ], 70 | "lines": 100, 71 | "check-coverage": true 72 | }, 73 | "clean-publish": { 74 | "cleanDocs": true 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /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-selector-parser: 12 | specifier: ^7.0.0 13 | version: 7.0.0 14 | devDependencies: 15 | '@logux/eslint-config': 16 | specifier: ^53.4.2 17 | version: 53.4.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0)(typescript@5.5.3) 18 | c8: 19 | specifier: ^10.1.2 20 | version: 10.1.2 21 | clean-publish: 22 | specifier: ^5.1.0 23 | version: 5.1.0 24 | eslint: 25 | specifier: ^9.13.0 26 | version: 9.13.0 27 | eslint-config-standard: 28 | specifier: ^17.1.0 29 | version: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0))(eslint-plugin-n@17.12.0(eslint@9.13.0))(eslint-plugin-promise@7.1.0(eslint@9.13.0))(eslint@9.13.0) 30 | eslint-plugin-import: 31 | specifier: ^2.31.0 32 | version: 2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0) 33 | eslint-plugin-n: 34 | specifier: ^17.12.0 35 | version: 17.12.0(eslint@9.13.0) 36 | eslint-plugin-node-import: 37 | specifier: ^1.0.4 38 | version: 1.0.4(eslint@9.13.0) 39 | eslint-plugin-perfectionist: 40 | specifier: ^3.9.1 41 | version: 3.9.1(eslint@9.13.0)(typescript@5.5.3) 42 | eslint-plugin-prefer-let: 43 | specifier: ^4.0.0 44 | version: 4.0.0 45 | eslint-plugin-promise: 46 | specifier: ^7.1.0 47 | version: 7.1.0(eslint@9.13.0) 48 | postcss: 49 | specifier: ^8.4.47 50 | version: 8.4.47 51 | uvu: 52 | specifier: ^0.5.6 53 | version: 0.5.6 54 | 55 | packages: 56 | 57 | '@bcoe/v8-coverage@0.2.3': 58 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 59 | 60 | '@eslint-community/eslint-utils@4.4.1': 61 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 62 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 63 | peerDependencies: 64 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 65 | 66 | '@eslint-community/regexpp@4.12.1': 67 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 68 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 69 | 70 | '@eslint/config-array@0.18.0': 71 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 72 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 73 | 74 | '@eslint/core@0.7.0': 75 | resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} 76 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 77 | 78 | '@eslint/eslintrc@3.1.0': 79 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 80 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 81 | 82 | '@eslint/js@9.13.0': 83 | resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} 84 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 85 | 86 | '@eslint/object-schema@2.1.4': 87 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 88 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 89 | 90 | '@eslint/plugin-kit@0.2.3': 91 | resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} 92 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 93 | 94 | '@humanfs/core@0.19.1': 95 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 96 | engines: {node: '>=18.18.0'} 97 | 98 | '@humanfs/node@0.16.6': 99 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 100 | engines: {node: '>=18.18.0'} 101 | 102 | '@humanwhocodes/module-importer@1.0.1': 103 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 104 | engines: {node: '>=12.22'} 105 | 106 | '@humanwhocodes/retry@0.3.1': 107 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 108 | engines: {node: '>=18.18'} 109 | 110 | '@isaacs/cliui@8.0.2': 111 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 112 | engines: {node: '>=12'} 113 | 114 | '@istanbuljs/schema@0.1.3': 115 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 116 | engines: {node: '>=8'} 117 | 118 | '@jridgewell/resolve-uri@3.1.2': 119 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 120 | engines: {node: '>=6.0.0'} 121 | 122 | '@jridgewell/sourcemap-codec@1.5.0': 123 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 124 | 125 | '@jridgewell/trace-mapping@0.3.25': 126 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 127 | 128 | '@logux/eslint-config@53.4.2': 129 | resolution: {integrity: sha512-Z1hRrA6bbqcPX74Q/ff9O/wNqQdPoPVENaA77KlETzRlaj9VStuDGzOolBHSvwK+dIbGVZonCdd0bVt8hCAeFQ==} 130 | engines: {node: '>=18.0.0'} 131 | peerDependencies: 132 | eslint: ^8.57.0 || ^9.0.0 133 | eslint-plugin-svelte: ^2.35.1 134 | svelte: ^4.2.12 || ^5.0.0 135 | peerDependenciesMeta: 136 | eslint-plugin-svelte: 137 | optional: true 138 | svelte: 139 | optional: true 140 | 141 | '@nodelib/fs.scandir@2.1.5': 142 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 143 | engines: {node: '>= 8'} 144 | 145 | '@nodelib/fs.stat@2.0.5': 146 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 147 | engines: {node: '>= 8'} 148 | 149 | '@nodelib/fs.walk@1.2.8': 150 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 151 | engines: {node: '>= 8'} 152 | 153 | '@pkgjs/parseargs@0.11.0': 154 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 155 | engines: {node: '>=14'} 156 | 157 | '@rtsao/scc@1.1.0': 158 | resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} 159 | 160 | '@types/estree@1.0.6': 161 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 162 | 163 | '@types/istanbul-lib-coverage@2.0.6': 164 | resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} 165 | 166 | '@types/json-schema@7.0.15': 167 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 168 | 169 | '@types/json5@0.0.29': 170 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 171 | 172 | '@typescript-eslint/eslint-plugin@8.12.2': 173 | resolution: {integrity: sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==} 174 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 175 | peerDependencies: 176 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 177 | eslint: ^8.57.0 || ^9.0.0 178 | typescript: '*' 179 | peerDependenciesMeta: 180 | typescript: 181 | optional: true 182 | 183 | '@typescript-eslint/parser@8.12.2': 184 | resolution: {integrity: sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==} 185 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 186 | peerDependencies: 187 | eslint: ^8.57.0 || ^9.0.0 188 | typescript: '*' 189 | peerDependenciesMeta: 190 | typescript: 191 | optional: true 192 | 193 | '@typescript-eslint/scope-manager@8.12.2': 194 | resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} 195 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 196 | 197 | '@typescript-eslint/type-utils@8.12.2': 198 | resolution: {integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==} 199 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 200 | peerDependencies: 201 | typescript: '*' 202 | peerDependenciesMeta: 203 | typescript: 204 | optional: true 205 | 206 | '@typescript-eslint/types@8.12.2': 207 | resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} 208 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 209 | 210 | '@typescript-eslint/typescript-estree@8.12.2': 211 | resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} 212 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 213 | peerDependencies: 214 | typescript: '*' 215 | peerDependenciesMeta: 216 | typescript: 217 | optional: true 218 | 219 | '@typescript-eslint/utils@8.12.2': 220 | resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} 221 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 222 | peerDependencies: 223 | eslint: ^8.57.0 || ^9.0.0 224 | 225 | '@typescript-eslint/visitor-keys@8.12.2': 226 | resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} 227 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 228 | 229 | acorn-jsx@5.3.2: 230 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 231 | peerDependencies: 232 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 233 | 234 | acorn@8.14.0: 235 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 236 | engines: {node: '>=0.4.0'} 237 | hasBin: true 238 | 239 | ajv@6.12.6: 240 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 241 | 242 | ansi-regex@5.0.1: 243 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 244 | engines: {node: '>=8'} 245 | 246 | ansi-regex@6.1.0: 247 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 248 | engines: {node: '>=12'} 249 | 250 | ansi-styles@4.3.0: 251 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 252 | engines: {node: '>=8'} 253 | 254 | ansi-styles@6.2.1: 255 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 256 | engines: {node: '>=12'} 257 | 258 | argparse@2.0.1: 259 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 260 | 261 | array-buffer-byte-length@1.0.1: 262 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} 263 | engines: {node: '>= 0.4'} 264 | 265 | array-includes@3.1.8: 266 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} 267 | engines: {node: '>= 0.4'} 268 | 269 | array.prototype.findlastindex@1.2.5: 270 | resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} 271 | engines: {node: '>= 0.4'} 272 | 273 | array.prototype.flat@1.3.2: 274 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 275 | engines: {node: '>= 0.4'} 276 | 277 | array.prototype.flatmap@1.3.2: 278 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 279 | engines: {node: '>= 0.4'} 280 | 281 | arraybuffer.prototype.slice@1.0.3: 282 | resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} 283 | engines: {node: '>= 0.4'} 284 | 285 | available-typed-arrays@1.0.7: 286 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 287 | engines: {node: '>= 0.4'} 288 | 289 | balanced-match@1.0.2: 290 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 291 | 292 | brace-expansion@1.1.11: 293 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 294 | 295 | brace-expansion@2.0.1: 296 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 297 | 298 | braces@3.0.3: 299 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 300 | engines: {node: '>=8'} 301 | 302 | c8@10.1.2: 303 | resolution: {integrity: sha512-Qr6rj76eSshu5CgRYvktW0uM0CFY0yi4Fd5D0duDXO6sYinyopmftUiJVuzBQxQcwQLor7JWDVRP+dUfCmzgJw==} 304 | engines: {node: '>=18'} 305 | hasBin: true 306 | peerDependencies: 307 | monocart-coverage-reports: ^2 308 | peerDependenciesMeta: 309 | monocart-coverage-reports: 310 | optional: true 311 | 312 | call-bind@1.0.7: 313 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 314 | engines: {node: '>= 0.4'} 315 | 316 | callsites@3.1.0: 317 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 318 | engines: {node: '>=6'} 319 | 320 | chalk@4.1.2: 321 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 322 | engines: {node: '>=10'} 323 | 324 | clean-publish@5.1.0: 325 | resolution: {integrity: sha512-Gbz8x7sL/sn0j+2B+yYEumD17WmPT6pHLN+A5nhcd0Sdh86EYblQleU+dUIICXVFalFMFBdW2aGynrVJ6k1u4Q==} 326 | engines: {node: '>= 18.0.0'} 327 | hasBin: true 328 | 329 | cliui@8.0.1: 330 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 331 | engines: {node: '>=12'} 332 | 333 | color-convert@2.0.1: 334 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 335 | engines: {node: '>=7.0.0'} 336 | 337 | color-name@1.1.4: 338 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 339 | 340 | concat-map@0.0.1: 341 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 342 | 343 | convert-source-map@2.0.0: 344 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 345 | 346 | cross-spawn@7.0.6: 347 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 348 | engines: {node: '>= 8'} 349 | 350 | cssesc@3.0.0: 351 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 352 | engines: {node: '>=4'} 353 | hasBin: true 354 | 355 | data-view-buffer@1.0.1: 356 | resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} 357 | engines: {node: '>= 0.4'} 358 | 359 | data-view-byte-length@1.0.1: 360 | resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} 361 | engines: {node: '>= 0.4'} 362 | 363 | data-view-byte-offset@1.0.0: 364 | resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} 365 | engines: {node: '>= 0.4'} 366 | 367 | debug@3.2.7: 368 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 369 | peerDependencies: 370 | supports-color: '*' 371 | peerDependenciesMeta: 372 | supports-color: 373 | optional: true 374 | 375 | debug@4.3.7: 376 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 377 | engines: {node: '>=6.0'} 378 | peerDependencies: 379 | supports-color: '*' 380 | peerDependenciesMeta: 381 | supports-color: 382 | optional: true 383 | 384 | deep-is@0.1.4: 385 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 386 | 387 | define-data-property@1.1.4: 388 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 389 | engines: {node: '>= 0.4'} 390 | 391 | define-properties@1.2.1: 392 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 393 | engines: {node: '>= 0.4'} 394 | 395 | dequal@2.0.3: 396 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 397 | engines: {node: '>=6'} 398 | 399 | diff@5.2.0: 400 | resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} 401 | engines: {node: '>=0.3.1'} 402 | 403 | doctrine@2.1.0: 404 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 405 | engines: {node: '>=0.10.0'} 406 | 407 | eastasianwidth@0.2.0: 408 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 409 | 410 | emoji-regex@8.0.0: 411 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 412 | 413 | emoji-regex@9.2.2: 414 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 415 | 416 | enhanced-resolve@5.17.1: 417 | resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} 418 | engines: {node: '>=10.13.0'} 419 | 420 | es-abstract@1.23.3: 421 | resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} 422 | engines: {node: '>= 0.4'} 423 | 424 | es-define-property@1.0.0: 425 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 426 | engines: {node: '>= 0.4'} 427 | 428 | es-errors@1.3.0: 429 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 430 | engines: {node: '>= 0.4'} 431 | 432 | es-object-atoms@1.0.0: 433 | resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} 434 | engines: {node: '>= 0.4'} 435 | 436 | es-set-tostringtag@2.0.3: 437 | resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} 438 | engines: {node: '>= 0.4'} 439 | 440 | es-shim-unscopables@1.0.2: 441 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 442 | 443 | es-to-primitive@1.2.1: 444 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 445 | engines: {node: '>= 0.4'} 446 | 447 | escalade@3.2.0: 448 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 449 | engines: {node: '>=6'} 450 | 451 | escape-string-regexp@4.0.0: 452 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 453 | engines: {node: '>=10'} 454 | 455 | eslint-compat-utils@0.5.1: 456 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 457 | engines: {node: '>=12'} 458 | peerDependencies: 459 | eslint: '>=6.0.0' 460 | 461 | eslint-config-standard@17.1.0: 462 | resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} 463 | engines: {node: '>=12.0.0'} 464 | peerDependencies: 465 | eslint: ^8.0.1 466 | eslint-plugin-import: ^2.25.2 467 | eslint-plugin-n: '^15.0.0 || ^16.0.0 ' 468 | eslint-plugin-promise: ^6.0.0 469 | 470 | eslint-import-resolver-node@0.3.9: 471 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 472 | 473 | eslint-module-utils@2.12.0: 474 | resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} 475 | engines: {node: '>=4'} 476 | peerDependencies: 477 | '@typescript-eslint/parser': '*' 478 | eslint: '*' 479 | eslint-import-resolver-node: '*' 480 | eslint-import-resolver-typescript: '*' 481 | eslint-import-resolver-webpack: '*' 482 | peerDependenciesMeta: 483 | '@typescript-eslint/parser': 484 | optional: true 485 | eslint: 486 | optional: true 487 | eslint-import-resolver-node: 488 | optional: true 489 | eslint-import-resolver-typescript: 490 | optional: true 491 | eslint-import-resolver-webpack: 492 | optional: true 493 | 494 | eslint-plugin-es-x@7.8.0: 495 | resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} 496 | engines: {node: ^14.18.0 || >=16.0.0} 497 | peerDependencies: 498 | eslint: '>=8' 499 | 500 | eslint-plugin-import@2.31.0: 501 | resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} 502 | engines: {node: '>=4'} 503 | peerDependencies: 504 | '@typescript-eslint/parser': '*' 505 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 506 | peerDependenciesMeta: 507 | '@typescript-eslint/parser': 508 | optional: true 509 | 510 | eslint-plugin-n@17.12.0: 511 | resolution: {integrity: sha512-zNAtz/erDn0v78bIY3MASSQlyaarV4IOTvP5ldHsqblRFrXriikB6ghkDTkHjUad+nMRrIbOy9euod2azjRfBg==} 512 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 513 | peerDependencies: 514 | eslint: '>=8.23.0' 515 | 516 | eslint-plugin-node-import@1.0.4: 517 | resolution: {integrity: sha512-nn6EkM7+vJCDCXZiM0FDpYSekbhlk5LNoHJm9DlVSucGrsT9WoK+qOxIEm+SwoFBeH73cMHMavioDaHsu22b0Q==} 518 | engines: {node: ^14.18.0 || ^16.0.0 || >= 18.0.0} 519 | peerDependencies: 520 | eslint: '>=7' 521 | 522 | eslint-plugin-perfectionist@3.9.1: 523 | resolution: {integrity: sha512-9WRzf6XaAxF4Oi5t/3TqKP5zUjERhasHmLFHin2Yw6ZAp/EP/EVA2dr3BhQrrHWCm5SzTMZf0FcjDnBkO2xFkA==} 524 | engines: {node: ^18.0.0 || >=20.0.0} 525 | peerDependencies: 526 | astro-eslint-parser: ^1.0.2 527 | eslint: '>=8.0.0' 528 | svelte: '>=3.0.0' 529 | svelte-eslint-parser: ^0.41.1 530 | vue-eslint-parser: '>=9.0.0' 531 | peerDependenciesMeta: 532 | astro-eslint-parser: 533 | optional: true 534 | svelte: 535 | optional: true 536 | svelte-eslint-parser: 537 | optional: true 538 | vue-eslint-parser: 539 | optional: true 540 | 541 | eslint-plugin-prefer-let@4.0.0: 542 | resolution: {integrity: sha512-X4ep5PMO1320HKaNC9DM5+p6XvOhwv+RcqGjhv3aiw9iAtHhiFtdIUB5l0Zya0iM22ys2BGKzrNI9Xpw/ZHooQ==} 543 | engines: {node: '>=0.10.0'} 544 | 545 | eslint-plugin-promise@7.1.0: 546 | resolution: {integrity: sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==} 547 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 548 | peerDependencies: 549 | eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 550 | 551 | eslint-scope@8.2.0: 552 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 553 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 554 | 555 | eslint-visitor-keys@3.4.3: 556 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 557 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 558 | 559 | eslint-visitor-keys@4.2.0: 560 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 561 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 562 | 563 | eslint@9.13.0: 564 | resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} 565 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 566 | hasBin: true 567 | peerDependencies: 568 | jiti: '*' 569 | peerDependenciesMeta: 570 | jiti: 571 | optional: true 572 | 573 | espree@10.3.0: 574 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 575 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 576 | 577 | esquery@1.6.0: 578 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 579 | engines: {node: '>=0.10'} 580 | 581 | esrecurse@4.3.0: 582 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 583 | engines: {node: '>=4.0'} 584 | 585 | estraverse@5.3.0: 586 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 587 | engines: {node: '>=4.0'} 588 | 589 | esutils@2.0.3: 590 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 591 | engines: {node: '>=0.10.0'} 592 | 593 | fast-deep-equal@3.1.3: 594 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 595 | 596 | fast-glob@3.3.2: 597 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 598 | engines: {node: '>=8.6.0'} 599 | 600 | fast-json-stable-stringify@2.1.0: 601 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 602 | 603 | fast-levenshtein@2.0.6: 604 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 605 | 606 | fastq@1.17.1: 607 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 608 | 609 | file-entry-cache@8.0.0: 610 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 611 | engines: {node: '>=16.0.0'} 612 | 613 | fill-range@7.1.1: 614 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 615 | engines: {node: '>=8'} 616 | 617 | find-up@5.0.0: 618 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 619 | engines: {node: '>=10'} 620 | 621 | flat-cache@4.0.1: 622 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 623 | engines: {node: '>=16'} 624 | 625 | flatted@3.3.1: 626 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 627 | 628 | for-each@0.3.3: 629 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 630 | 631 | foreground-child@3.3.0: 632 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 633 | engines: {node: '>=14'} 634 | 635 | function-bind@1.1.2: 636 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 637 | 638 | function.prototype.name@1.1.6: 639 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 640 | engines: {node: '>= 0.4'} 641 | 642 | functions-have-names@1.2.3: 643 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 644 | 645 | get-caller-file@2.0.5: 646 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 647 | engines: {node: 6.* || 8.* || >= 10.*} 648 | 649 | get-intrinsic@1.2.4: 650 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 651 | engines: {node: '>= 0.4'} 652 | 653 | get-symbol-description@1.0.2: 654 | resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} 655 | engines: {node: '>= 0.4'} 656 | 657 | get-tsconfig@4.8.1: 658 | resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} 659 | 660 | glob-parent@5.1.2: 661 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 662 | engines: {node: '>= 6'} 663 | 664 | glob-parent@6.0.2: 665 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 666 | engines: {node: '>=10.13.0'} 667 | 668 | glob@10.4.5: 669 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 670 | hasBin: true 671 | 672 | globals@14.0.0: 673 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 674 | engines: {node: '>=18'} 675 | 676 | globals@15.11.0: 677 | resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} 678 | engines: {node: '>=18'} 679 | 680 | globalthis@1.0.4: 681 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 682 | engines: {node: '>= 0.4'} 683 | 684 | gopd@1.0.1: 685 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 686 | 687 | graceful-fs@4.2.11: 688 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 689 | 690 | graphemer@1.4.0: 691 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 692 | 693 | has-bigints@1.0.2: 694 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 695 | 696 | has-flag@4.0.0: 697 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 698 | engines: {node: '>=8'} 699 | 700 | has-property-descriptors@1.0.2: 701 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 702 | 703 | has-proto@1.0.3: 704 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 705 | engines: {node: '>= 0.4'} 706 | 707 | has-symbols@1.0.3: 708 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 709 | engines: {node: '>= 0.4'} 710 | 711 | has-tostringtag@1.0.2: 712 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 713 | engines: {node: '>= 0.4'} 714 | 715 | hasown@2.0.2: 716 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 717 | engines: {node: '>= 0.4'} 718 | 719 | html-escaper@2.0.2: 720 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 721 | 722 | ignore@5.3.2: 723 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 724 | engines: {node: '>= 4'} 725 | 726 | import-fresh@3.3.0: 727 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 728 | engines: {node: '>=6'} 729 | 730 | imurmurhash@0.1.4: 731 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 732 | engines: {node: '>=0.8.19'} 733 | 734 | internal-slot@1.0.7: 735 | resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} 736 | engines: {node: '>= 0.4'} 737 | 738 | is-array-buffer@3.0.4: 739 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 740 | engines: {node: '>= 0.4'} 741 | 742 | is-bigint@1.0.4: 743 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 744 | 745 | is-boolean-object@1.1.2: 746 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 747 | engines: {node: '>= 0.4'} 748 | 749 | is-callable@1.2.7: 750 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 751 | engines: {node: '>= 0.4'} 752 | 753 | is-core-module@2.15.1: 754 | resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} 755 | engines: {node: '>= 0.4'} 756 | 757 | is-data-view@1.0.1: 758 | resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} 759 | engines: {node: '>= 0.4'} 760 | 761 | is-date-object@1.0.5: 762 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 763 | engines: {node: '>= 0.4'} 764 | 765 | is-extglob@2.1.1: 766 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 767 | engines: {node: '>=0.10.0'} 768 | 769 | is-fullwidth-code-point@3.0.0: 770 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 771 | engines: {node: '>=8'} 772 | 773 | is-glob@4.0.3: 774 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 775 | engines: {node: '>=0.10.0'} 776 | 777 | is-negative-zero@2.0.3: 778 | resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} 779 | engines: {node: '>= 0.4'} 780 | 781 | is-number-object@1.0.7: 782 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 783 | engines: {node: '>= 0.4'} 784 | 785 | is-number@7.0.0: 786 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 787 | engines: {node: '>=0.12.0'} 788 | 789 | is-regex@1.1.4: 790 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 791 | engines: {node: '>= 0.4'} 792 | 793 | is-shared-array-buffer@1.0.3: 794 | resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} 795 | engines: {node: '>= 0.4'} 796 | 797 | is-string@1.0.7: 798 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 799 | engines: {node: '>= 0.4'} 800 | 801 | is-symbol@1.0.4: 802 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 803 | engines: {node: '>= 0.4'} 804 | 805 | is-typed-array@1.1.13: 806 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} 807 | engines: {node: '>= 0.4'} 808 | 809 | is-weakref@1.0.2: 810 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 811 | 812 | isarray@2.0.5: 813 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 814 | 815 | isexe@2.0.0: 816 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 817 | 818 | istanbul-lib-coverage@3.2.2: 819 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 820 | engines: {node: '>=8'} 821 | 822 | istanbul-lib-report@3.0.1: 823 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 824 | engines: {node: '>=10'} 825 | 826 | istanbul-reports@3.1.7: 827 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} 828 | engines: {node: '>=8'} 829 | 830 | jackspeak@3.4.3: 831 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 832 | 833 | js-yaml@4.1.0: 834 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 835 | hasBin: true 836 | 837 | json-buffer@3.0.1: 838 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 839 | 840 | json-schema-traverse@0.4.1: 841 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 842 | 843 | json-stable-stringify-without-jsonify@1.0.1: 844 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 845 | 846 | json5@1.0.2: 847 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 848 | hasBin: true 849 | 850 | keyv@4.5.4: 851 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 852 | 853 | kleur@4.1.5: 854 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 855 | engines: {node: '>=6'} 856 | 857 | levn@0.4.1: 858 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 859 | engines: {node: '>= 0.8.0'} 860 | 861 | lilconfig@3.1.2: 862 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} 863 | engines: {node: '>=14'} 864 | 865 | locate-path@6.0.0: 866 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 867 | engines: {node: '>=10'} 868 | 869 | lodash.merge@4.6.2: 870 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 871 | 872 | lru-cache@10.4.3: 873 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 874 | 875 | make-dir@4.0.0: 876 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 877 | engines: {node: '>=10'} 878 | 879 | merge2@1.4.1: 880 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 881 | engines: {node: '>= 8'} 882 | 883 | micromatch@4.0.8: 884 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 885 | engines: {node: '>=8.6'} 886 | 887 | minimatch@3.1.2: 888 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 889 | 890 | minimatch@9.0.5: 891 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 892 | engines: {node: '>=16 || 14 >=14.17'} 893 | 894 | minimist@1.2.8: 895 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 896 | 897 | minipass@7.1.2: 898 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 899 | engines: {node: '>=16 || 14 >=14.17'} 900 | 901 | mri@1.2.0: 902 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 903 | engines: {node: '>=4'} 904 | 905 | ms@2.1.3: 906 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 907 | 908 | nanoid@3.3.8: 909 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 910 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 911 | hasBin: true 912 | 913 | natural-compare-lite@1.4.0: 914 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 915 | 916 | natural-compare@1.4.0: 917 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 918 | 919 | object-inspect@1.13.2: 920 | resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} 921 | engines: {node: '>= 0.4'} 922 | 923 | object-keys@1.1.1: 924 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 925 | engines: {node: '>= 0.4'} 926 | 927 | object.assign@4.1.5: 928 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 929 | engines: {node: '>= 0.4'} 930 | 931 | object.fromentries@2.0.8: 932 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 933 | engines: {node: '>= 0.4'} 934 | 935 | object.groupby@1.0.3: 936 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} 937 | engines: {node: '>= 0.4'} 938 | 939 | object.values@1.2.0: 940 | resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} 941 | engines: {node: '>= 0.4'} 942 | 943 | optionator@0.9.4: 944 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 945 | engines: {node: '>= 0.8.0'} 946 | 947 | p-limit@3.1.0: 948 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 949 | engines: {node: '>=10'} 950 | 951 | p-locate@5.0.0: 952 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 953 | engines: {node: '>=10'} 954 | 955 | package-json-from-dist@1.0.1: 956 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 957 | 958 | parent-module@1.0.1: 959 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 960 | engines: {node: '>=6'} 961 | 962 | path-exists@4.0.0: 963 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 964 | engines: {node: '>=8'} 965 | 966 | path-key@3.1.1: 967 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 968 | engines: {node: '>=8'} 969 | 970 | path-parse@1.0.7: 971 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 972 | 973 | path-scurry@1.11.1: 974 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 975 | engines: {node: '>=16 || 14 >=14.18'} 976 | 977 | picocolors@1.1.1: 978 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 979 | 980 | picomatch@2.3.1: 981 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 982 | engines: {node: '>=8.6'} 983 | 984 | possible-typed-array-names@1.0.0: 985 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} 986 | engines: {node: '>= 0.4'} 987 | 988 | postcss-selector-parser@7.0.0: 989 | resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} 990 | engines: {node: '>=4'} 991 | 992 | postcss@8.4.47: 993 | resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} 994 | engines: {node: ^10 || ^12 || >=14} 995 | 996 | prelude-ls@1.2.1: 997 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 998 | engines: {node: '>= 0.8.0'} 999 | 1000 | punycode@2.3.1: 1001 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1002 | engines: {node: '>=6'} 1003 | 1004 | queue-microtask@1.2.3: 1005 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1006 | 1007 | regexp.prototype.flags@1.5.3: 1008 | resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} 1009 | engines: {node: '>= 0.4'} 1010 | 1011 | require-directory@2.1.1: 1012 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1013 | engines: {node: '>=0.10.0'} 1014 | 1015 | requireindex@1.2.0: 1016 | resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} 1017 | engines: {node: '>=0.10.5'} 1018 | 1019 | resolve-from@4.0.0: 1020 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1021 | engines: {node: '>=4'} 1022 | 1023 | resolve-pkg-maps@1.0.0: 1024 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1025 | 1026 | resolve@1.22.8: 1027 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 1028 | hasBin: true 1029 | 1030 | reusify@1.0.4: 1031 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1032 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1033 | 1034 | run-parallel@1.2.0: 1035 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1036 | 1037 | sade@1.8.1: 1038 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1039 | engines: {node: '>=6'} 1040 | 1041 | safe-array-concat@1.1.2: 1042 | resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} 1043 | engines: {node: '>=0.4'} 1044 | 1045 | safe-regex-test@1.0.3: 1046 | resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} 1047 | engines: {node: '>= 0.4'} 1048 | 1049 | semver@6.3.1: 1050 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1051 | hasBin: true 1052 | 1053 | semver@7.6.3: 1054 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1055 | engines: {node: '>=10'} 1056 | hasBin: true 1057 | 1058 | set-function-length@1.2.2: 1059 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 1060 | engines: {node: '>= 0.4'} 1061 | 1062 | set-function-name@2.0.2: 1063 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 1064 | engines: {node: '>= 0.4'} 1065 | 1066 | shebang-command@2.0.0: 1067 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1068 | engines: {node: '>=8'} 1069 | 1070 | shebang-regex@3.0.0: 1071 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1072 | engines: {node: '>=8'} 1073 | 1074 | side-channel@1.0.6: 1075 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 1076 | engines: {node: '>= 0.4'} 1077 | 1078 | signal-exit@4.1.0: 1079 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1080 | engines: {node: '>=14'} 1081 | 1082 | source-map-js@1.2.1: 1083 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1084 | engines: {node: '>=0.10.0'} 1085 | 1086 | string-width@4.2.3: 1087 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1088 | engines: {node: '>=8'} 1089 | 1090 | string-width@5.1.2: 1091 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1092 | engines: {node: '>=12'} 1093 | 1094 | string.prototype.trim@1.2.9: 1095 | resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} 1096 | engines: {node: '>= 0.4'} 1097 | 1098 | string.prototype.trimend@1.0.8: 1099 | resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} 1100 | 1101 | string.prototype.trimstart@1.0.8: 1102 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 1103 | engines: {node: '>= 0.4'} 1104 | 1105 | strip-ansi@6.0.1: 1106 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1107 | engines: {node: '>=8'} 1108 | 1109 | strip-ansi@7.1.0: 1110 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1111 | engines: {node: '>=12'} 1112 | 1113 | strip-bom@3.0.0: 1114 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1115 | engines: {node: '>=4'} 1116 | 1117 | strip-json-comments@3.1.1: 1118 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1119 | engines: {node: '>=8'} 1120 | 1121 | supports-color@7.2.0: 1122 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1123 | engines: {node: '>=8'} 1124 | 1125 | supports-preserve-symlinks-flag@1.0.0: 1126 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1127 | engines: {node: '>= 0.4'} 1128 | 1129 | tapable@2.2.1: 1130 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 1131 | engines: {node: '>=6'} 1132 | 1133 | test-exclude@7.0.1: 1134 | resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} 1135 | engines: {node: '>=18'} 1136 | 1137 | text-table@0.2.0: 1138 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1139 | 1140 | to-regex-range@5.0.1: 1141 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1142 | engines: {node: '>=8.0'} 1143 | 1144 | ts-api-utils@1.4.0: 1145 | resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} 1146 | engines: {node: '>=16'} 1147 | peerDependencies: 1148 | typescript: '>=4.2.0' 1149 | 1150 | tsconfig-paths@3.15.0: 1151 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 1152 | 1153 | type-check@0.4.0: 1154 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1155 | engines: {node: '>= 0.8.0'} 1156 | 1157 | typed-array-buffer@1.0.2: 1158 | resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} 1159 | engines: {node: '>= 0.4'} 1160 | 1161 | typed-array-byte-length@1.0.1: 1162 | resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} 1163 | engines: {node: '>= 0.4'} 1164 | 1165 | typed-array-byte-offset@1.0.2: 1166 | resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} 1167 | engines: {node: '>= 0.4'} 1168 | 1169 | typed-array-length@1.0.6: 1170 | resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} 1171 | engines: {node: '>= 0.4'} 1172 | 1173 | typescript-eslint@8.12.2: 1174 | resolution: {integrity: sha512-UbuVUWSrHVR03q9CWx+JDHeO6B/Hr9p4U5lRH++5tq/EbFq1faYZe50ZSBePptgfIKLEti0aPQ3hFgnPVcd8ZQ==} 1175 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1176 | peerDependencies: 1177 | typescript: '*' 1178 | peerDependenciesMeta: 1179 | typescript: 1180 | optional: true 1181 | 1182 | typescript@5.5.3: 1183 | resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} 1184 | engines: {node: '>=14.17'} 1185 | hasBin: true 1186 | 1187 | unbox-primitive@1.0.2: 1188 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 1189 | 1190 | uri-js@4.4.1: 1191 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1192 | 1193 | util-deprecate@1.0.2: 1194 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1195 | 1196 | uvu@0.5.6: 1197 | resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} 1198 | engines: {node: '>=8'} 1199 | hasBin: true 1200 | 1201 | v8-to-istanbul@9.3.0: 1202 | resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} 1203 | engines: {node: '>=10.12.0'} 1204 | 1205 | which-boxed-primitive@1.0.2: 1206 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 1207 | 1208 | which-typed-array@1.1.15: 1209 | resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} 1210 | engines: {node: '>= 0.4'} 1211 | 1212 | which@2.0.2: 1213 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1214 | engines: {node: '>= 8'} 1215 | hasBin: true 1216 | 1217 | word-wrap@1.2.5: 1218 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1219 | engines: {node: '>=0.10.0'} 1220 | 1221 | wrap-ansi@7.0.0: 1222 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1223 | engines: {node: '>=10'} 1224 | 1225 | wrap-ansi@8.1.0: 1226 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1227 | engines: {node: '>=12'} 1228 | 1229 | y18n@5.0.8: 1230 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 1231 | engines: {node: '>=10'} 1232 | 1233 | yargs-parser@21.1.1: 1234 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 1235 | engines: {node: '>=12'} 1236 | 1237 | yargs@17.7.2: 1238 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 1239 | engines: {node: '>=12'} 1240 | 1241 | yocto-queue@0.1.0: 1242 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1243 | engines: {node: '>=10'} 1244 | 1245 | snapshots: 1246 | 1247 | '@bcoe/v8-coverage@0.2.3': {} 1248 | 1249 | '@eslint-community/eslint-utils@4.4.1(eslint@9.13.0)': 1250 | dependencies: 1251 | eslint: 9.13.0 1252 | eslint-visitor-keys: 3.4.3 1253 | 1254 | '@eslint-community/regexpp@4.12.1': {} 1255 | 1256 | '@eslint/config-array@0.18.0': 1257 | dependencies: 1258 | '@eslint/object-schema': 2.1.4 1259 | debug: 4.3.7 1260 | minimatch: 3.1.2 1261 | transitivePeerDependencies: 1262 | - supports-color 1263 | 1264 | '@eslint/core@0.7.0': {} 1265 | 1266 | '@eslint/eslintrc@3.1.0': 1267 | dependencies: 1268 | ajv: 6.12.6 1269 | debug: 4.3.7 1270 | espree: 10.3.0 1271 | globals: 14.0.0 1272 | ignore: 5.3.2 1273 | import-fresh: 3.3.0 1274 | js-yaml: 4.1.0 1275 | minimatch: 3.1.2 1276 | strip-json-comments: 3.1.1 1277 | transitivePeerDependencies: 1278 | - supports-color 1279 | 1280 | '@eslint/js@9.13.0': {} 1281 | 1282 | '@eslint/object-schema@2.1.4': {} 1283 | 1284 | '@eslint/plugin-kit@0.2.3': 1285 | dependencies: 1286 | levn: 0.4.1 1287 | 1288 | '@humanfs/core@0.19.1': {} 1289 | 1290 | '@humanfs/node@0.16.6': 1291 | dependencies: 1292 | '@humanfs/core': 0.19.1 1293 | '@humanwhocodes/retry': 0.3.1 1294 | 1295 | '@humanwhocodes/module-importer@1.0.1': {} 1296 | 1297 | '@humanwhocodes/retry@0.3.1': {} 1298 | 1299 | '@isaacs/cliui@8.0.2': 1300 | dependencies: 1301 | string-width: 5.1.2 1302 | string-width-cjs: string-width@4.2.3 1303 | strip-ansi: 7.1.0 1304 | strip-ansi-cjs: strip-ansi@6.0.1 1305 | wrap-ansi: 8.1.0 1306 | wrap-ansi-cjs: wrap-ansi@7.0.0 1307 | 1308 | '@istanbuljs/schema@0.1.3': {} 1309 | 1310 | '@jridgewell/resolve-uri@3.1.2': {} 1311 | 1312 | '@jridgewell/sourcemap-codec@1.5.0': {} 1313 | 1314 | '@jridgewell/trace-mapping@0.3.25': 1315 | dependencies: 1316 | '@jridgewell/resolve-uri': 3.1.2 1317 | '@jridgewell/sourcemap-codec': 1.5.0 1318 | 1319 | '@logux/eslint-config@53.4.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0)(typescript@5.5.3)': 1320 | dependencies: 1321 | '@eslint/eslintrc': 3.1.0 1322 | eslint: 9.13.0 1323 | eslint-config-standard: 17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0))(eslint-plugin-n@17.12.0(eslint@9.13.0))(eslint-plugin-promise@7.1.0(eslint@9.13.0))(eslint@9.13.0) 1324 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0) 1325 | eslint-plugin-n: 17.12.0(eslint@9.13.0) 1326 | eslint-plugin-perfectionist: 3.9.1(eslint@9.13.0)(typescript@5.5.3) 1327 | eslint-plugin-prefer-let: 4.0.0 1328 | eslint-plugin-promise: 7.1.0(eslint@9.13.0) 1329 | typescript-eslint: 8.12.2(eslint@9.13.0)(typescript@5.5.3) 1330 | transitivePeerDependencies: 1331 | - '@typescript-eslint/parser' 1332 | - astro-eslint-parser 1333 | - eslint-import-resolver-typescript 1334 | - eslint-import-resolver-webpack 1335 | - supports-color 1336 | - svelte-eslint-parser 1337 | - typescript 1338 | - vue-eslint-parser 1339 | 1340 | '@nodelib/fs.scandir@2.1.5': 1341 | dependencies: 1342 | '@nodelib/fs.stat': 2.0.5 1343 | run-parallel: 1.2.0 1344 | 1345 | '@nodelib/fs.stat@2.0.5': {} 1346 | 1347 | '@nodelib/fs.walk@1.2.8': 1348 | dependencies: 1349 | '@nodelib/fs.scandir': 2.1.5 1350 | fastq: 1.17.1 1351 | 1352 | '@pkgjs/parseargs@0.11.0': 1353 | optional: true 1354 | 1355 | '@rtsao/scc@1.1.0': {} 1356 | 1357 | '@types/estree@1.0.6': {} 1358 | 1359 | '@types/istanbul-lib-coverage@2.0.6': {} 1360 | 1361 | '@types/json-schema@7.0.15': {} 1362 | 1363 | '@types/json5@0.0.29': {} 1364 | 1365 | '@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0)(typescript@5.5.3)': 1366 | dependencies: 1367 | '@eslint-community/regexpp': 4.12.1 1368 | '@typescript-eslint/parser': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 1369 | '@typescript-eslint/scope-manager': 8.12.2 1370 | '@typescript-eslint/type-utils': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 1371 | '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 1372 | '@typescript-eslint/visitor-keys': 8.12.2 1373 | eslint: 9.13.0 1374 | graphemer: 1.4.0 1375 | ignore: 5.3.2 1376 | natural-compare: 1.4.0 1377 | ts-api-utils: 1.4.0(typescript@5.5.3) 1378 | optionalDependencies: 1379 | typescript: 5.5.3 1380 | transitivePeerDependencies: 1381 | - supports-color 1382 | 1383 | '@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3)': 1384 | dependencies: 1385 | '@typescript-eslint/scope-manager': 8.12.2 1386 | '@typescript-eslint/types': 8.12.2 1387 | '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.5.3) 1388 | '@typescript-eslint/visitor-keys': 8.12.2 1389 | debug: 4.3.7 1390 | eslint: 9.13.0 1391 | optionalDependencies: 1392 | typescript: 5.5.3 1393 | transitivePeerDependencies: 1394 | - supports-color 1395 | 1396 | '@typescript-eslint/scope-manager@8.12.2': 1397 | dependencies: 1398 | '@typescript-eslint/types': 8.12.2 1399 | '@typescript-eslint/visitor-keys': 8.12.2 1400 | 1401 | '@typescript-eslint/type-utils@8.12.2(eslint@9.13.0)(typescript@5.5.3)': 1402 | dependencies: 1403 | '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.5.3) 1404 | '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 1405 | debug: 4.3.7 1406 | ts-api-utils: 1.4.0(typescript@5.5.3) 1407 | optionalDependencies: 1408 | typescript: 5.5.3 1409 | transitivePeerDependencies: 1410 | - eslint 1411 | - supports-color 1412 | 1413 | '@typescript-eslint/types@8.12.2': {} 1414 | 1415 | '@typescript-eslint/typescript-estree@8.12.2(typescript@5.5.3)': 1416 | dependencies: 1417 | '@typescript-eslint/types': 8.12.2 1418 | '@typescript-eslint/visitor-keys': 8.12.2 1419 | debug: 4.3.7 1420 | fast-glob: 3.3.2 1421 | is-glob: 4.0.3 1422 | minimatch: 9.0.5 1423 | semver: 7.6.3 1424 | ts-api-utils: 1.4.0(typescript@5.5.3) 1425 | optionalDependencies: 1426 | typescript: 5.5.3 1427 | transitivePeerDependencies: 1428 | - supports-color 1429 | 1430 | '@typescript-eslint/utils@8.12.2(eslint@9.13.0)(typescript@5.5.3)': 1431 | dependencies: 1432 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) 1433 | '@typescript-eslint/scope-manager': 8.12.2 1434 | '@typescript-eslint/types': 8.12.2 1435 | '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.5.3) 1436 | eslint: 9.13.0 1437 | transitivePeerDependencies: 1438 | - supports-color 1439 | - typescript 1440 | 1441 | '@typescript-eslint/visitor-keys@8.12.2': 1442 | dependencies: 1443 | '@typescript-eslint/types': 8.12.2 1444 | eslint-visitor-keys: 3.4.3 1445 | 1446 | acorn-jsx@5.3.2(acorn@8.14.0): 1447 | dependencies: 1448 | acorn: 8.14.0 1449 | 1450 | acorn@8.14.0: {} 1451 | 1452 | ajv@6.12.6: 1453 | dependencies: 1454 | fast-deep-equal: 3.1.3 1455 | fast-json-stable-stringify: 2.1.0 1456 | json-schema-traverse: 0.4.1 1457 | uri-js: 4.4.1 1458 | 1459 | ansi-regex@5.0.1: {} 1460 | 1461 | ansi-regex@6.1.0: {} 1462 | 1463 | ansi-styles@4.3.0: 1464 | dependencies: 1465 | color-convert: 2.0.1 1466 | 1467 | ansi-styles@6.2.1: {} 1468 | 1469 | argparse@2.0.1: {} 1470 | 1471 | array-buffer-byte-length@1.0.1: 1472 | dependencies: 1473 | call-bind: 1.0.7 1474 | is-array-buffer: 3.0.4 1475 | 1476 | array-includes@3.1.8: 1477 | dependencies: 1478 | call-bind: 1.0.7 1479 | define-properties: 1.2.1 1480 | es-abstract: 1.23.3 1481 | es-object-atoms: 1.0.0 1482 | get-intrinsic: 1.2.4 1483 | is-string: 1.0.7 1484 | 1485 | array.prototype.findlastindex@1.2.5: 1486 | dependencies: 1487 | call-bind: 1.0.7 1488 | define-properties: 1.2.1 1489 | es-abstract: 1.23.3 1490 | es-errors: 1.3.0 1491 | es-object-atoms: 1.0.0 1492 | es-shim-unscopables: 1.0.2 1493 | 1494 | array.prototype.flat@1.3.2: 1495 | dependencies: 1496 | call-bind: 1.0.7 1497 | define-properties: 1.2.1 1498 | es-abstract: 1.23.3 1499 | es-shim-unscopables: 1.0.2 1500 | 1501 | array.prototype.flatmap@1.3.2: 1502 | dependencies: 1503 | call-bind: 1.0.7 1504 | define-properties: 1.2.1 1505 | es-abstract: 1.23.3 1506 | es-shim-unscopables: 1.0.2 1507 | 1508 | arraybuffer.prototype.slice@1.0.3: 1509 | dependencies: 1510 | array-buffer-byte-length: 1.0.1 1511 | call-bind: 1.0.7 1512 | define-properties: 1.2.1 1513 | es-abstract: 1.23.3 1514 | es-errors: 1.3.0 1515 | get-intrinsic: 1.2.4 1516 | is-array-buffer: 3.0.4 1517 | is-shared-array-buffer: 1.0.3 1518 | 1519 | available-typed-arrays@1.0.7: 1520 | dependencies: 1521 | possible-typed-array-names: 1.0.0 1522 | 1523 | balanced-match@1.0.2: {} 1524 | 1525 | brace-expansion@1.1.11: 1526 | dependencies: 1527 | balanced-match: 1.0.2 1528 | concat-map: 0.0.1 1529 | 1530 | brace-expansion@2.0.1: 1531 | dependencies: 1532 | balanced-match: 1.0.2 1533 | 1534 | braces@3.0.3: 1535 | dependencies: 1536 | fill-range: 7.1.1 1537 | 1538 | c8@10.1.2: 1539 | dependencies: 1540 | '@bcoe/v8-coverage': 0.2.3 1541 | '@istanbuljs/schema': 0.1.3 1542 | find-up: 5.0.0 1543 | foreground-child: 3.3.0 1544 | istanbul-lib-coverage: 3.2.2 1545 | istanbul-lib-report: 3.0.1 1546 | istanbul-reports: 3.1.7 1547 | test-exclude: 7.0.1 1548 | v8-to-istanbul: 9.3.0 1549 | yargs: 17.7.2 1550 | yargs-parser: 21.1.1 1551 | 1552 | call-bind@1.0.7: 1553 | dependencies: 1554 | es-define-property: 1.0.0 1555 | es-errors: 1.3.0 1556 | function-bind: 1.1.2 1557 | get-intrinsic: 1.2.4 1558 | set-function-length: 1.2.2 1559 | 1560 | callsites@3.1.0: {} 1561 | 1562 | chalk@4.1.2: 1563 | dependencies: 1564 | ansi-styles: 4.3.0 1565 | supports-color: 7.2.0 1566 | 1567 | clean-publish@5.1.0: 1568 | dependencies: 1569 | cross-spawn: 7.0.6 1570 | fast-glob: 3.3.2 1571 | lilconfig: 3.1.2 1572 | micromatch: 4.0.8 1573 | 1574 | cliui@8.0.1: 1575 | dependencies: 1576 | string-width: 4.2.3 1577 | strip-ansi: 6.0.1 1578 | wrap-ansi: 7.0.0 1579 | 1580 | color-convert@2.0.1: 1581 | dependencies: 1582 | color-name: 1.1.4 1583 | 1584 | color-name@1.1.4: {} 1585 | 1586 | concat-map@0.0.1: {} 1587 | 1588 | convert-source-map@2.0.0: {} 1589 | 1590 | cross-spawn@7.0.6: 1591 | dependencies: 1592 | path-key: 3.1.1 1593 | shebang-command: 2.0.0 1594 | which: 2.0.2 1595 | 1596 | cssesc@3.0.0: {} 1597 | 1598 | data-view-buffer@1.0.1: 1599 | dependencies: 1600 | call-bind: 1.0.7 1601 | es-errors: 1.3.0 1602 | is-data-view: 1.0.1 1603 | 1604 | data-view-byte-length@1.0.1: 1605 | dependencies: 1606 | call-bind: 1.0.7 1607 | es-errors: 1.3.0 1608 | is-data-view: 1.0.1 1609 | 1610 | data-view-byte-offset@1.0.0: 1611 | dependencies: 1612 | call-bind: 1.0.7 1613 | es-errors: 1.3.0 1614 | is-data-view: 1.0.1 1615 | 1616 | debug@3.2.7: 1617 | dependencies: 1618 | ms: 2.1.3 1619 | 1620 | debug@4.3.7: 1621 | dependencies: 1622 | ms: 2.1.3 1623 | 1624 | deep-is@0.1.4: {} 1625 | 1626 | define-data-property@1.1.4: 1627 | dependencies: 1628 | es-define-property: 1.0.0 1629 | es-errors: 1.3.0 1630 | gopd: 1.0.1 1631 | 1632 | define-properties@1.2.1: 1633 | dependencies: 1634 | define-data-property: 1.1.4 1635 | has-property-descriptors: 1.0.2 1636 | object-keys: 1.1.1 1637 | 1638 | dequal@2.0.3: {} 1639 | 1640 | diff@5.2.0: {} 1641 | 1642 | doctrine@2.1.0: 1643 | dependencies: 1644 | esutils: 2.0.3 1645 | 1646 | eastasianwidth@0.2.0: {} 1647 | 1648 | emoji-regex@8.0.0: {} 1649 | 1650 | emoji-regex@9.2.2: {} 1651 | 1652 | enhanced-resolve@5.17.1: 1653 | dependencies: 1654 | graceful-fs: 4.2.11 1655 | tapable: 2.2.1 1656 | 1657 | es-abstract@1.23.3: 1658 | dependencies: 1659 | array-buffer-byte-length: 1.0.1 1660 | arraybuffer.prototype.slice: 1.0.3 1661 | available-typed-arrays: 1.0.7 1662 | call-bind: 1.0.7 1663 | data-view-buffer: 1.0.1 1664 | data-view-byte-length: 1.0.1 1665 | data-view-byte-offset: 1.0.0 1666 | es-define-property: 1.0.0 1667 | es-errors: 1.3.0 1668 | es-object-atoms: 1.0.0 1669 | es-set-tostringtag: 2.0.3 1670 | es-to-primitive: 1.2.1 1671 | function.prototype.name: 1.1.6 1672 | get-intrinsic: 1.2.4 1673 | get-symbol-description: 1.0.2 1674 | globalthis: 1.0.4 1675 | gopd: 1.0.1 1676 | has-property-descriptors: 1.0.2 1677 | has-proto: 1.0.3 1678 | has-symbols: 1.0.3 1679 | hasown: 2.0.2 1680 | internal-slot: 1.0.7 1681 | is-array-buffer: 3.0.4 1682 | is-callable: 1.2.7 1683 | is-data-view: 1.0.1 1684 | is-negative-zero: 2.0.3 1685 | is-regex: 1.1.4 1686 | is-shared-array-buffer: 1.0.3 1687 | is-string: 1.0.7 1688 | is-typed-array: 1.1.13 1689 | is-weakref: 1.0.2 1690 | object-inspect: 1.13.2 1691 | object-keys: 1.1.1 1692 | object.assign: 4.1.5 1693 | regexp.prototype.flags: 1.5.3 1694 | safe-array-concat: 1.1.2 1695 | safe-regex-test: 1.0.3 1696 | string.prototype.trim: 1.2.9 1697 | string.prototype.trimend: 1.0.8 1698 | string.prototype.trimstart: 1.0.8 1699 | typed-array-buffer: 1.0.2 1700 | typed-array-byte-length: 1.0.1 1701 | typed-array-byte-offset: 1.0.2 1702 | typed-array-length: 1.0.6 1703 | unbox-primitive: 1.0.2 1704 | which-typed-array: 1.1.15 1705 | 1706 | es-define-property@1.0.0: 1707 | dependencies: 1708 | get-intrinsic: 1.2.4 1709 | 1710 | es-errors@1.3.0: {} 1711 | 1712 | es-object-atoms@1.0.0: 1713 | dependencies: 1714 | es-errors: 1.3.0 1715 | 1716 | es-set-tostringtag@2.0.3: 1717 | dependencies: 1718 | get-intrinsic: 1.2.4 1719 | has-tostringtag: 1.0.2 1720 | hasown: 2.0.2 1721 | 1722 | es-shim-unscopables@1.0.2: 1723 | dependencies: 1724 | hasown: 2.0.2 1725 | 1726 | es-to-primitive@1.2.1: 1727 | dependencies: 1728 | is-callable: 1.2.7 1729 | is-date-object: 1.0.5 1730 | is-symbol: 1.0.4 1731 | 1732 | escalade@3.2.0: {} 1733 | 1734 | escape-string-regexp@4.0.0: {} 1735 | 1736 | eslint-compat-utils@0.5.1(eslint@9.13.0): 1737 | dependencies: 1738 | eslint: 9.13.0 1739 | semver: 7.6.3 1740 | 1741 | eslint-config-standard@17.1.0(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0))(eslint-plugin-n@17.12.0(eslint@9.13.0))(eslint-plugin-promise@7.1.0(eslint@9.13.0))(eslint@9.13.0): 1742 | dependencies: 1743 | eslint: 9.13.0 1744 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0) 1745 | eslint-plugin-n: 17.12.0(eslint@9.13.0) 1746 | eslint-plugin-promise: 7.1.0(eslint@9.13.0) 1747 | 1748 | eslint-import-resolver-node@0.3.9: 1749 | dependencies: 1750 | debug: 3.2.7 1751 | is-core-module: 2.15.1 1752 | resolve: 1.22.8 1753 | transitivePeerDependencies: 1754 | - supports-color 1755 | 1756 | eslint-module-utils@2.12.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint@9.13.0): 1757 | dependencies: 1758 | debug: 3.2.7 1759 | optionalDependencies: 1760 | '@typescript-eslint/parser': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 1761 | eslint: 9.13.0 1762 | eslint-import-resolver-node: 0.3.9 1763 | transitivePeerDependencies: 1764 | - supports-color 1765 | 1766 | eslint-plugin-es-x@7.8.0(eslint@9.13.0): 1767 | dependencies: 1768 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) 1769 | '@eslint-community/regexpp': 4.12.1 1770 | eslint: 9.13.0 1771 | eslint-compat-utils: 0.5.1(eslint@9.13.0) 1772 | 1773 | eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0): 1774 | dependencies: 1775 | '@rtsao/scc': 1.1.0 1776 | array-includes: 3.1.8 1777 | array.prototype.findlastindex: 1.2.5 1778 | array.prototype.flat: 1.3.2 1779 | array.prototype.flatmap: 1.3.2 1780 | debug: 3.2.7 1781 | doctrine: 2.1.0 1782 | eslint: 9.13.0 1783 | eslint-import-resolver-node: 0.3.9 1784 | eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint@9.13.0) 1785 | hasown: 2.0.2 1786 | is-core-module: 2.15.1 1787 | is-glob: 4.0.3 1788 | minimatch: 3.1.2 1789 | object.fromentries: 2.0.8 1790 | object.groupby: 1.0.3 1791 | object.values: 1.2.0 1792 | semver: 6.3.1 1793 | string.prototype.trimend: 1.0.8 1794 | tsconfig-paths: 3.15.0 1795 | optionalDependencies: 1796 | '@typescript-eslint/parser': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 1797 | transitivePeerDependencies: 1798 | - eslint-import-resolver-typescript 1799 | - eslint-import-resolver-webpack 1800 | - supports-color 1801 | 1802 | eslint-plugin-n@17.12.0(eslint@9.13.0): 1803 | dependencies: 1804 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) 1805 | enhanced-resolve: 5.17.1 1806 | eslint: 9.13.0 1807 | eslint-plugin-es-x: 7.8.0(eslint@9.13.0) 1808 | get-tsconfig: 4.8.1 1809 | globals: 15.11.0 1810 | ignore: 5.3.2 1811 | minimatch: 9.0.5 1812 | semver: 7.6.3 1813 | 1814 | eslint-plugin-node-import@1.0.4(eslint@9.13.0): 1815 | dependencies: 1816 | eslint: 9.13.0 1817 | 1818 | eslint-plugin-perfectionist@3.9.1(eslint@9.13.0)(typescript@5.5.3): 1819 | dependencies: 1820 | '@typescript-eslint/types': 8.12.2 1821 | '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 1822 | eslint: 9.13.0 1823 | minimatch: 9.0.5 1824 | natural-compare-lite: 1.4.0 1825 | transitivePeerDependencies: 1826 | - supports-color 1827 | - typescript 1828 | 1829 | eslint-plugin-prefer-let@4.0.0: 1830 | dependencies: 1831 | requireindex: 1.2.0 1832 | 1833 | eslint-plugin-promise@7.1.0(eslint@9.13.0): 1834 | dependencies: 1835 | eslint: 9.13.0 1836 | 1837 | eslint-scope@8.2.0: 1838 | dependencies: 1839 | esrecurse: 4.3.0 1840 | estraverse: 5.3.0 1841 | 1842 | eslint-visitor-keys@3.4.3: {} 1843 | 1844 | eslint-visitor-keys@4.2.0: {} 1845 | 1846 | eslint@9.13.0: 1847 | dependencies: 1848 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) 1849 | '@eslint-community/regexpp': 4.12.1 1850 | '@eslint/config-array': 0.18.0 1851 | '@eslint/core': 0.7.0 1852 | '@eslint/eslintrc': 3.1.0 1853 | '@eslint/js': 9.13.0 1854 | '@eslint/plugin-kit': 0.2.3 1855 | '@humanfs/node': 0.16.6 1856 | '@humanwhocodes/module-importer': 1.0.1 1857 | '@humanwhocodes/retry': 0.3.1 1858 | '@types/estree': 1.0.6 1859 | '@types/json-schema': 7.0.15 1860 | ajv: 6.12.6 1861 | chalk: 4.1.2 1862 | cross-spawn: 7.0.6 1863 | debug: 4.3.7 1864 | escape-string-regexp: 4.0.0 1865 | eslint-scope: 8.2.0 1866 | eslint-visitor-keys: 4.2.0 1867 | espree: 10.3.0 1868 | esquery: 1.6.0 1869 | esutils: 2.0.3 1870 | fast-deep-equal: 3.1.3 1871 | file-entry-cache: 8.0.0 1872 | find-up: 5.0.0 1873 | glob-parent: 6.0.2 1874 | ignore: 5.3.2 1875 | imurmurhash: 0.1.4 1876 | is-glob: 4.0.3 1877 | json-stable-stringify-without-jsonify: 1.0.1 1878 | lodash.merge: 4.6.2 1879 | minimatch: 3.1.2 1880 | natural-compare: 1.4.0 1881 | optionator: 0.9.4 1882 | text-table: 0.2.0 1883 | transitivePeerDependencies: 1884 | - supports-color 1885 | 1886 | espree@10.3.0: 1887 | dependencies: 1888 | acorn: 8.14.0 1889 | acorn-jsx: 5.3.2(acorn@8.14.0) 1890 | eslint-visitor-keys: 4.2.0 1891 | 1892 | esquery@1.6.0: 1893 | dependencies: 1894 | estraverse: 5.3.0 1895 | 1896 | esrecurse@4.3.0: 1897 | dependencies: 1898 | estraverse: 5.3.0 1899 | 1900 | estraverse@5.3.0: {} 1901 | 1902 | esutils@2.0.3: {} 1903 | 1904 | fast-deep-equal@3.1.3: {} 1905 | 1906 | fast-glob@3.3.2: 1907 | dependencies: 1908 | '@nodelib/fs.stat': 2.0.5 1909 | '@nodelib/fs.walk': 1.2.8 1910 | glob-parent: 5.1.2 1911 | merge2: 1.4.1 1912 | micromatch: 4.0.8 1913 | 1914 | fast-json-stable-stringify@2.1.0: {} 1915 | 1916 | fast-levenshtein@2.0.6: {} 1917 | 1918 | fastq@1.17.1: 1919 | dependencies: 1920 | reusify: 1.0.4 1921 | 1922 | file-entry-cache@8.0.0: 1923 | dependencies: 1924 | flat-cache: 4.0.1 1925 | 1926 | fill-range@7.1.1: 1927 | dependencies: 1928 | to-regex-range: 5.0.1 1929 | 1930 | find-up@5.0.0: 1931 | dependencies: 1932 | locate-path: 6.0.0 1933 | path-exists: 4.0.0 1934 | 1935 | flat-cache@4.0.1: 1936 | dependencies: 1937 | flatted: 3.3.1 1938 | keyv: 4.5.4 1939 | 1940 | flatted@3.3.1: {} 1941 | 1942 | for-each@0.3.3: 1943 | dependencies: 1944 | is-callable: 1.2.7 1945 | 1946 | foreground-child@3.3.0: 1947 | dependencies: 1948 | cross-spawn: 7.0.6 1949 | signal-exit: 4.1.0 1950 | 1951 | function-bind@1.1.2: {} 1952 | 1953 | function.prototype.name@1.1.6: 1954 | dependencies: 1955 | call-bind: 1.0.7 1956 | define-properties: 1.2.1 1957 | es-abstract: 1.23.3 1958 | functions-have-names: 1.2.3 1959 | 1960 | functions-have-names@1.2.3: {} 1961 | 1962 | get-caller-file@2.0.5: {} 1963 | 1964 | get-intrinsic@1.2.4: 1965 | dependencies: 1966 | es-errors: 1.3.0 1967 | function-bind: 1.1.2 1968 | has-proto: 1.0.3 1969 | has-symbols: 1.0.3 1970 | hasown: 2.0.2 1971 | 1972 | get-symbol-description@1.0.2: 1973 | dependencies: 1974 | call-bind: 1.0.7 1975 | es-errors: 1.3.0 1976 | get-intrinsic: 1.2.4 1977 | 1978 | get-tsconfig@4.8.1: 1979 | dependencies: 1980 | resolve-pkg-maps: 1.0.0 1981 | 1982 | glob-parent@5.1.2: 1983 | dependencies: 1984 | is-glob: 4.0.3 1985 | 1986 | glob-parent@6.0.2: 1987 | dependencies: 1988 | is-glob: 4.0.3 1989 | 1990 | glob@10.4.5: 1991 | dependencies: 1992 | foreground-child: 3.3.0 1993 | jackspeak: 3.4.3 1994 | minimatch: 9.0.5 1995 | minipass: 7.1.2 1996 | package-json-from-dist: 1.0.1 1997 | path-scurry: 1.11.1 1998 | 1999 | globals@14.0.0: {} 2000 | 2001 | globals@15.11.0: {} 2002 | 2003 | globalthis@1.0.4: 2004 | dependencies: 2005 | define-properties: 1.2.1 2006 | gopd: 1.0.1 2007 | 2008 | gopd@1.0.1: 2009 | dependencies: 2010 | get-intrinsic: 1.2.4 2011 | 2012 | graceful-fs@4.2.11: {} 2013 | 2014 | graphemer@1.4.0: {} 2015 | 2016 | has-bigints@1.0.2: {} 2017 | 2018 | has-flag@4.0.0: {} 2019 | 2020 | has-property-descriptors@1.0.2: 2021 | dependencies: 2022 | es-define-property: 1.0.0 2023 | 2024 | has-proto@1.0.3: {} 2025 | 2026 | has-symbols@1.0.3: {} 2027 | 2028 | has-tostringtag@1.0.2: 2029 | dependencies: 2030 | has-symbols: 1.0.3 2031 | 2032 | hasown@2.0.2: 2033 | dependencies: 2034 | function-bind: 1.1.2 2035 | 2036 | html-escaper@2.0.2: {} 2037 | 2038 | ignore@5.3.2: {} 2039 | 2040 | import-fresh@3.3.0: 2041 | dependencies: 2042 | parent-module: 1.0.1 2043 | resolve-from: 4.0.0 2044 | 2045 | imurmurhash@0.1.4: {} 2046 | 2047 | internal-slot@1.0.7: 2048 | dependencies: 2049 | es-errors: 1.3.0 2050 | hasown: 2.0.2 2051 | side-channel: 1.0.6 2052 | 2053 | is-array-buffer@3.0.4: 2054 | dependencies: 2055 | call-bind: 1.0.7 2056 | get-intrinsic: 1.2.4 2057 | 2058 | is-bigint@1.0.4: 2059 | dependencies: 2060 | has-bigints: 1.0.2 2061 | 2062 | is-boolean-object@1.1.2: 2063 | dependencies: 2064 | call-bind: 1.0.7 2065 | has-tostringtag: 1.0.2 2066 | 2067 | is-callable@1.2.7: {} 2068 | 2069 | is-core-module@2.15.1: 2070 | dependencies: 2071 | hasown: 2.0.2 2072 | 2073 | is-data-view@1.0.1: 2074 | dependencies: 2075 | is-typed-array: 1.1.13 2076 | 2077 | is-date-object@1.0.5: 2078 | dependencies: 2079 | has-tostringtag: 1.0.2 2080 | 2081 | is-extglob@2.1.1: {} 2082 | 2083 | is-fullwidth-code-point@3.0.0: {} 2084 | 2085 | is-glob@4.0.3: 2086 | dependencies: 2087 | is-extglob: 2.1.1 2088 | 2089 | is-negative-zero@2.0.3: {} 2090 | 2091 | is-number-object@1.0.7: 2092 | dependencies: 2093 | has-tostringtag: 1.0.2 2094 | 2095 | is-number@7.0.0: {} 2096 | 2097 | is-regex@1.1.4: 2098 | dependencies: 2099 | call-bind: 1.0.7 2100 | has-tostringtag: 1.0.2 2101 | 2102 | is-shared-array-buffer@1.0.3: 2103 | dependencies: 2104 | call-bind: 1.0.7 2105 | 2106 | is-string@1.0.7: 2107 | dependencies: 2108 | has-tostringtag: 1.0.2 2109 | 2110 | is-symbol@1.0.4: 2111 | dependencies: 2112 | has-symbols: 1.0.3 2113 | 2114 | is-typed-array@1.1.13: 2115 | dependencies: 2116 | which-typed-array: 1.1.15 2117 | 2118 | is-weakref@1.0.2: 2119 | dependencies: 2120 | call-bind: 1.0.7 2121 | 2122 | isarray@2.0.5: {} 2123 | 2124 | isexe@2.0.0: {} 2125 | 2126 | istanbul-lib-coverage@3.2.2: {} 2127 | 2128 | istanbul-lib-report@3.0.1: 2129 | dependencies: 2130 | istanbul-lib-coverage: 3.2.2 2131 | make-dir: 4.0.0 2132 | supports-color: 7.2.0 2133 | 2134 | istanbul-reports@3.1.7: 2135 | dependencies: 2136 | html-escaper: 2.0.2 2137 | istanbul-lib-report: 3.0.1 2138 | 2139 | jackspeak@3.4.3: 2140 | dependencies: 2141 | '@isaacs/cliui': 8.0.2 2142 | optionalDependencies: 2143 | '@pkgjs/parseargs': 0.11.0 2144 | 2145 | js-yaml@4.1.0: 2146 | dependencies: 2147 | argparse: 2.0.1 2148 | 2149 | json-buffer@3.0.1: {} 2150 | 2151 | json-schema-traverse@0.4.1: {} 2152 | 2153 | json-stable-stringify-without-jsonify@1.0.1: {} 2154 | 2155 | json5@1.0.2: 2156 | dependencies: 2157 | minimist: 1.2.8 2158 | 2159 | keyv@4.5.4: 2160 | dependencies: 2161 | json-buffer: 3.0.1 2162 | 2163 | kleur@4.1.5: {} 2164 | 2165 | levn@0.4.1: 2166 | dependencies: 2167 | prelude-ls: 1.2.1 2168 | type-check: 0.4.0 2169 | 2170 | lilconfig@3.1.2: {} 2171 | 2172 | locate-path@6.0.0: 2173 | dependencies: 2174 | p-locate: 5.0.0 2175 | 2176 | lodash.merge@4.6.2: {} 2177 | 2178 | lru-cache@10.4.3: {} 2179 | 2180 | make-dir@4.0.0: 2181 | dependencies: 2182 | semver: 7.6.3 2183 | 2184 | merge2@1.4.1: {} 2185 | 2186 | micromatch@4.0.8: 2187 | dependencies: 2188 | braces: 3.0.3 2189 | picomatch: 2.3.1 2190 | 2191 | minimatch@3.1.2: 2192 | dependencies: 2193 | brace-expansion: 1.1.11 2194 | 2195 | minimatch@9.0.5: 2196 | dependencies: 2197 | brace-expansion: 2.0.1 2198 | 2199 | minimist@1.2.8: {} 2200 | 2201 | minipass@7.1.2: {} 2202 | 2203 | mri@1.2.0: {} 2204 | 2205 | ms@2.1.3: {} 2206 | 2207 | nanoid@3.3.8: {} 2208 | 2209 | natural-compare-lite@1.4.0: {} 2210 | 2211 | natural-compare@1.4.0: {} 2212 | 2213 | object-inspect@1.13.2: {} 2214 | 2215 | object-keys@1.1.1: {} 2216 | 2217 | object.assign@4.1.5: 2218 | dependencies: 2219 | call-bind: 1.0.7 2220 | define-properties: 1.2.1 2221 | has-symbols: 1.0.3 2222 | object-keys: 1.1.1 2223 | 2224 | object.fromentries@2.0.8: 2225 | dependencies: 2226 | call-bind: 1.0.7 2227 | define-properties: 1.2.1 2228 | es-abstract: 1.23.3 2229 | es-object-atoms: 1.0.0 2230 | 2231 | object.groupby@1.0.3: 2232 | dependencies: 2233 | call-bind: 1.0.7 2234 | define-properties: 1.2.1 2235 | es-abstract: 1.23.3 2236 | 2237 | object.values@1.2.0: 2238 | dependencies: 2239 | call-bind: 1.0.7 2240 | define-properties: 1.2.1 2241 | es-object-atoms: 1.0.0 2242 | 2243 | optionator@0.9.4: 2244 | dependencies: 2245 | deep-is: 0.1.4 2246 | fast-levenshtein: 2.0.6 2247 | levn: 0.4.1 2248 | prelude-ls: 1.2.1 2249 | type-check: 0.4.0 2250 | word-wrap: 1.2.5 2251 | 2252 | p-limit@3.1.0: 2253 | dependencies: 2254 | yocto-queue: 0.1.0 2255 | 2256 | p-locate@5.0.0: 2257 | dependencies: 2258 | p-limit: 3.1.0 2259 | 2260 | package-json-from-dist@1.0.1: {} 2261 | 2262 | parent-module@1.0.1: 2263 | dependencies: 2264 | callsites: 3.1.0 2265 | 2266 | path-exists@4.0.0: {} 2267 | 2268 | path-key@3.1.1: {} 2269 | 2270 | path-parse@1.0.7: {} 2271 | 2272 | path-scurry@1.11.1: 2273 | dependencies: 2274 | lru-cache: 10.4.3 2275 | minipass: 7.1.2 2276 | 2277 | picocolors@1.1.1: {} 2278 | 2279 | picomatch@2.3.1: {} 2280 | 2281 | possible-typed-array-names@1.0.0: {} 2282 | 2283 | postcss-selector-parser@7.0.0: 2284 | dependencies: 2285 | cssesc: 3.0.0 2286 | util-deprecate: 1.0.2 2287 | 2288 | postcss@8.4.47: 2289 | dependencies: 2290 | nanoid: 3.3.8 2291 | picocolors: 1.1.1 2292 | source-map-js: 1.2.1 2293 | 2294 | prelude-ls@1.2.1: {} 2295 | 2296 | punycode@2.3.1: {} 2297 | 2298 | queue-microtask@1.2.3: {} 2299 | 2300 | regexp.prototype.flags@1.5.3: 2301 | dependencies: 2302 | call-bind: 1.0.7 2303 | define-properties: 1.2.1 2304 | es-errors: 1.3.0 2305 | set-function-name: 2.0.2 2306 | 2307 | require-directory@2.1.1: {} 2308 | 2309 | requireindex@1.2.0: {} 2310 | 2311 | resolve-from@4.0.0: {} 2312 | 2313 | resolve-pkg-maps@1.0.0: {} 2314 | 2315 | resolve@1.22.8: 2316 | dependencies: 2317 | is-core-module: 2.15.1 2318 | path-parse: 1.0.7 2319 | supports-preserve-symlinks-flag: 1.0.0 2320 | 2321 | reusify@1.0.4: {} 2322 | 2323 | run-parallel@1.2.0: 2324 | dependencies: 2325 | queue-microtask: 1.2.3 2326 | 2327 | sade@1.8.1: 2328 | dependencies: 2329 | mri: 1.2.0 2330 | 2331 | safe-array-concat@1.1.2: 2332 | dependencies: 2333 | call-bind: 1.0.7 2334 | get-intrinsic: 1.2.4 2335 | has-symbols: 1.0.3 2336 | isarray: 2.0.5 2337 | 2338 | safe-regex-test@1.0.3: 2339 | dependencies: 2340 | call-bind: 1.0.7 2341 | es-errors: 1.3.0 2342 | is-regex: 1.1.4 2343 | 2344 | semver@6.3.1: {} 2345 | 2346 | semver@7.6.3: {} 2347 | 2348 | set-function-length@1.2.2: 2349 | dependencies: 2350 | define-data-property: 1.1.4 2351 | es-errors: 1.3.0 2352 | function-bind: 1.1.2 2353 | get-intrinsic: 1.2.4 2354 | gopd: 1.0.1 2355 | has-property-descriptors: 1.0.2 2356 | 2357 | set-function-name@2.0.2: 2358 | dependencies: 2359 | define-data-property: 1.1.4 2360 | es-errors: 1.3.0 2361 | functions-have-names: 1.2.3 2362 | has-property-descriptors: 1.0.2 2363 | 2364 | shebang-command@2.0.0: 2365 | dependencies: 2366 | shebang-regex: 3.0.0 2367 | 2368 | shebang-regex@3.0.0: {} 2369 | 2370 | side-channel@1.0.6: 2371 | dependencies: 2372 | call-bind: 1.0.7 2373 | es-errors: 1.3.0 2374 | get-intrinsic: 1.2.4 2375 | object-inspect: 1.13.2 2376 | 2377 | signal-exit@4.1.0: {} 2378 | 2379 | source-map-js@1.2.1: {} 2380 | 2381 | string-width@4.2.3: 2382 | dependencies: 2383 | emoji-regex: 8.0.0 2384 | is-fullwidth-code-point: 3.0.0 2385 | strip-ansi: 6.0.1 2386 | 2387 | string-width@5.1.2: 2388 | dependencies: 2389 | eastasianwidth: 0.2.0 2390 | emoji-regex: 9.2.2 2391 | strip-ansi: 7.1.0 2392 | 2393 | string.prototype.trim@1.2.9: 2394 | dependencies: 2395 | call-bind: 1.0.7 2396 | define-properties: 1.2.1 2397 | es-abstract: 1.23.3 2398 | es-object-atoms: 1.0.0 2399 | 2400 | string.prototype.trimend@1.0.8: 2401 | dependencies: 2402 | call-bind: 1.0.7 2403 | define-properties: 1.2.1 2404 | es-object-atoms: 1.0.0 2405 | 2406 | string.prototype.trimstart@1.0.8: 2407 | dependencies: 2408 | call-bind: 1.0.7 2409 | define-properties: 1.2.1 2410 | es-object-atoms: 1.0.0 2411 | 2412 | strip-ansi@6.0.1: 2413 | dependencies: 2414 | ansi-regex: 5.0.1 2415 | 2416 | strip-ansi@7.1.0: 2417 | dependencies: 2418 | ansi-regex: 6.1.0 2419 | 2420 | strip-bom@3.0.0: {} 2421 | 2422 | strip-json-comments@3.1.1: {} 2423 | 2424 | supports-color@7.2.0: 2425 | dependencies: 2426 | has-flag: 4.0.0 2427 | 2428 | supports-preserve-symlinks-flag@1.0.0: {} 2429 | 2430 | tapable@2.2.1: {} 2431 | 2432 | test-exclude@7.0.1: 2433 | dependencies: 2434 | '@istanbuljs/schema': 0.1.3 2435 | glob: 10.4.5 2436 | minimatch: 9.0.5 2437 | 2438 | text-table@0.2.0: {} 2439 | 2440 | to-regex-range@5.0.1: 2441 | dependencies: 2442 | is-number: 7.0.0 2443 | 2444 | ts-api-utils@1.4.0(typescript@5.5.3): 2445 | dependencies: 2446 | typescript: 5.5.3 2447 | 2448 | tsconfig-paths@3.15.0: 2449 | dependencies: 2450 | '@types/json5': 0.0.29 2451 | json5: 1.0.2 2452 | minimist: 1.2.8 2453 | strip-bom: 3.0.0 2454 | 2455 | type-check@0.4.0: 2456 | dependencies: 2457 | prelude-ls: 1.2.1 2458 | 2459 | typed-array-buffer@1.0.2: 2460 | dependencies: 2461 | call-bind: 1.0.7 2462 | es-errors: 1.3.0 2463 | is-typed-array: 1.1.13 2464 | 2465 | typed-array-byte-length@1.0.1: 2466 | dependencies: 2467 | call-bind: 1.0.7 2468 | for-each: 0.3.3 2469 | gopd: 1.0.1 2470 | has-proto: 1.0.3 2471 | is-typed-array: 1.1.13 2472 | 2473 | typed-array-byte-offset@1.0.2: 2474 | dependencies: 2475 | available-typed-arrays: 1.0.7 2476 | call-bind: 1.0.7 2477 | for-each: 0.3.3 2478 | gopd: 1.0.1 2479 | has-proto: 1.0.3 2480 | is-typed-array: 1.1.13 2481 | 2482 | typed-array-length@1.0.6: 2483 | dependencies: 2484 | call-bind: 1.0.7 2485 | for-each: 0.3.3 2486 | gopd: 1.0.1 2487 | has-proto: 1.0.3 2488 | is-typed-array: 1.1.13 2489 | possible-typed-array-names: 1.0.0 2490 | 2491 | typescript-eslint@8.12.2(eslint@9.13.0)(typescript@5.5.3): 2492 | dependencies: 2493 | '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0)(typescript@5.5.3))(eslint@9.13.0)(typescript@5.5.3) 2494 | '@typescript-eslint/parser': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 2495 | '@typescript-eslint/utils': 8.12.2(eslint@9.13.0)(typescript@5.5.3) 2496 | optionalDependencies: 2497 | typescript: 5.5.3 2498 | transitivePeerDependencies: 2499 | - eslint 2500 | - supports-color 2501 | 2502 | typescript@5.5.3: {} 2503 | 2504 | unbox-primitive@1.0.2: 2505 | dependencies: 2506 | call-bind: 1.0.7 2507 | has-bigints: 1.0.2 2508 | has-symbols: 1.0.3 2509 | which-boxed-primitive: 1.0.2 2510 | 2511 | uri-js@4.4.1: 2512 | dependencies: 2513 | punycode: 2.3.1 2514 | 2515 | util-deprecate@1.0.2: {} 2516 | 2517 | uvu@0.5.6: 2518 | dependencies: 2519 | dequal: 2.0.3 2520 | diff: 5.2.0 2521 | kleur: 4.1.5 2522 | sade: 1.8.1 2523 | 2524 | v8-to-istanbul@9.3.0: 2525 | dependencies: 2526 | '@jridgewell/trace-mapping': 0.3.25 2527 | '@types/istanbul-lib-coverage': 2.0.6 2528 | convert-source-map: 2.0.0 2529 | 2530 | which-boxed-primitive@1.0.2: 2531 | dependencies: 2532 | is-bigint: 1.0.4 2533 | is-boolean-object: 1.1.2 2534 | is-number-object: 1.0.7 2535 | is-string: 1.0.7 2536 | is-symbol: 1.0.4 2537 | 2538 | which-typed-array@1.1.15: 2539 | dependencies: 2540 | available-typed-arrays: 1.0.7 2541 | call-bind: 1.0.7 2542 | for-each: 0.3.3 2543 | gopd: 1.0.1 2544 | has-tostringtag: 1.0.2 2545 | 2546 | which@2.0.2: 2547 | dependencies: 2548 | isexe: 2.0.0 2549 | 2550 | word-wrap@1.2.5: {} 2551 | 2552 | wrap-ansi@7.0.0: 2553 | dependencies: 2554 | ansi-styles: 4.3.0 2555 | string-width: 4.2.3 2556 | strip-ansi: 6.0.1 2557 | 2558 | wrap-ansi@8.1.0: 2559 | dependencies: 2560 | ansi-styles: 6.2.1 2561 | string-width: 5.1.2 2562 | strip-ansi: 7.1.0 2563 | 2564 | y18n@5.0.8: {} 2565 | 2566 | yargs-parser@21.1.1: {} 2567 | 2568 | yargs@17.7.2: 2569 | dependencies: 2570 | cliui: 8.0.1 2571 | escalade: 3.2.0 2572 | get-caller-file: 2.0.5 2573 | require-directory: 2.1.1 2574 | string-width: 4.2.3 2575 | y18n: 5.0.8 2576 | yargs-parser: 21.1.1 2577 | 2578 | yocto-queue@0.1.0: {} 2579 | --------------------------------------------------------------------------------