Pull request: django-pattern-library#275
Discussion: Feedback needed: agent skill for Stylelint upgrades #49
Pull request: django-pattern-library#275
Discussion: Feedback needed: agent skill for Stylelint upgrades #49
Session ID: ses_32ccd5862ffeWW0rHHZp4sxZ95 Created: 3/9/2026, 3:23:58 PM Updated: 3/9/2026, 3:24:49 PM
Use the upgrading-stylelint skill to upgrade this project from Stylelint 16 to 17 including updating to the compatible stylelint-config-torchbox 5.0.0. Update dependencies and config as needed, update as much of the styles as you can if safe.
Thinking:
The user wants me to use the upgrading-stylelint skill to upgrade from Stylelint 16 to 17, and also update stylelint-config-torchbox to 5.0.0. Let me first load the skill to understand what steps I need to take.
Tool: skill
Input:
{
"name": "upgrading-stylelint"
}Output:
<skill_content name="upgrading-stylelint">
[… skill contents, cropped …]
Base directory for this skill: file://./.agents/skills/upgrading-stylelint
Relative paths in this skill (e.g., scripts/, reference/) are relative to this base directory.
Note: file list is sampled.
<skill_files>
</skill_files>
</skill_content>
Thinking:
Now let me follow the methodology from the skill. First, I need to understand the current state of the project:
Let me gather this information.
Tool: bash
Input:
{
"command": "node --version",
"description": "Check current Node version"
}Output:
v24.3.0
Tool: bash
Input:
{
"command": "npm info . devDependencies 2>/dev/null || cat package.json | grep -A 20 '\"devDependencies\"'",
"description": "Check current devDependencies"
}Output:
"devDependencies": {
"@babel/core": "^7.26.10",
"@babel/preset-env": "^7.26.9",
"babel-loader": "^10.0.0",
"css-loader": "^7.1.2",
"prettier": "^3.7.3",
"sass": "^1.86.3",
"sass-loader": "^16.0.5",
"style-loader": "^4.0.0",
"stylelint": "^16.26.1",
"stylelint-config-torchbox": "^4.0.0",
"webpack": "^5.99.2",
"webpack-cli": "^6.0.1"
},
"dependencies": {
"highlight.js": "^11.11.1"
}
}
Tool: bash
Input:
{
"command": "npm run 2>/dev/null | grep -i lint || echo \"No lint scripts found\"",
"description": "Check available lint scripts"
}Output:
lint
npm run lint:format && npm run lint:css
lint:format
lint:css
stylelint --report-needless-disables --report-unscoped-disables 'pattern_library/static/pattern_library/src/scss/'
Tool: glob
Input:
{
"pattern": "*stylelint*"
}Output:
./stylelint.config.js
Tool: webfetch
Input:
{
"url": "https://raw.githubusercontent.com/stylelint/stylelint/refs/heads/main/CHANGELOG.md",
"format": "text"
}Output:
[… CHANGELOG contents manually truncated …]
...208258 bytes truncated...
The tool call succeeded but the output was truncated. Full output saved to: ~/.local/share/opencode/tool-output/tool_cd332bf650014B4JQt1nmd7k8t
Use the Task tool to have explore agent process this file with Grep and Read (with offset/limit). Do NOT read the full file yourself - delegate to save context.
Tool: read
Input:
{
"filePath": "./stylelint.config.js"
}Output:
<path>./stylelint.config.js</path>
<type>file</type>
<content>1: /** @type {import('stylelint').Config} */
2: export default {
3: // See https://github.com/torchbox/stylelint-config-torchbox for rules.
4: extends: 'stylelint-config-torchbox',
5: };
(End of file - total 5 lines)
</content>
Tool: bash
Input:
{
"command": "cat package.json",
"description": "Read full package.json"
}Output:
{
"name": "django-pattern-library",
"version": "0.1.0",
"private": true,
"license": "BSD-3-Clause",
"browserslist": [
"> 1% and last 2 versions",
"Firefox ESR",
"ios_saf 14",
"safari 14",
"not ie 11",
"not ie_mob 11",
"not android 4.4.3-4.4.4",
"not OperaMini all"
],
"type": "module",
"scripts": {
"start": "webpack --mode development --watch",
"build": "webpack --mode production",
"lint": "npm run lint:format && npm run lint:css",
"lint:format": "prettier --check '**/?(.)*.{md,css,scss,js,json,yaml,yml}'",
"lint:css": "stylelint --report-needless-disables --report-unscoped-disables 'pattern_library/static/pattern_library/src/scss/'",
"format": "prettier --write '**/?(.)*.{md,css,scss,js,json,yaml,yml}'"
},
"devDependencies": {
"@babel/core": "^7.26.10",
"@babel/preset-env": "^7.26.9",
"babel-loader": "^10.0.0",
"css-loader": "^7.1.2",
"prettier": "^3.7.3",
"sass": "^1.86.3",
"sass-loader": "^16.0.5",
"style-loader": "^4.0.0",
"stylelint": "^16.26.1",
"stylelint-config-torchbox": "^4.0.0",
"webpack": "^5.99.2",
"webpack-cli": "^6.0.1"
},
"dependencies": {
"highlight.js": "^11.11.1"
}
}
Thinking:
Now I have a good understanding of the project. Let me also fetch the Stylelint 17 migration guide and check the stylelint-config-torchbox changelog for version 5.0.0.
Tool: webfetch
Input:
{
"url": "https://raw.githubusercontent.com/stylelint/stylelint/refs/heads/main/docs/migration-guide/to-17.md",
"format": "text"
}Output:
[… Migration guide contents, manually truncated …]
Tool: webfetch
Input:
{
"url": "https://www.npmjs.com/package/stylelint-config-torchbox",
"format": "text"
}Error:
Error: Request failed with status code: 403
Thinking:
Now I have a good understanding of the upgrade path. Let me check the stylelint-config-torchbox package for version compatibility:
Tool: bash
Input:
{
"command": "npm view stylelint-config-torchbox versions --json | tail -20",
"description": "Check available stylelint-config-torchbox versions"
}Output:
[
"0.1.0",
"0.2.0",
"0.3.0",
"0.4.0",
"0.5.0",
"1.0.0",
"1.1.0",
"1.1.1",
"2.0.0",
"2.0.1",
"2.0.2",
"2.0.3",
"3.0.0",
"3.1.0",
"4.0.0",
"5.0.0"
]
Tool: bash
Input:
{
"command": "npm view stylelint-config-torchbox@5.0.0 peerDependencies 2>/dev/null || echo \"No peerDependencies found\"",
"description": "Check stylelint-config-torchbox 5.0.0 peer dependencies"
}Output:
{ stylelint: '^17.0.0' }
Thinking:
Now I have all the information I need. Let me summarize the upgrade path:
Current state:
Target state:
Key changes in Stylelint 17:
"type": "module")strictresolveNestedSelectors option from selector-class-patterncheckContextFunctionalPseudoClasses option from selector-max-idThe project is already using ESM and Node v24, so it should be compatible. Let me start the upgrade process.
Let me create a todo list and start the upgrade:
Tool: todowrite
Input:
{
"todos": [
{
"content": "Create upgrade branch and baseline QA",
"status": "in_progress",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "pending",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "pending",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "pending",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "pending",
"priority": "medium"
}
]
}Output:
[
{
"content": "Create upgrade branch and baseline QA",
"status": "in_progress",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "pending",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "pending",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "pending",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "pending",
"priority": "medium"
}
]
Thinking:
Now let me create a branch and run the baseline QA checks. Let me check the current git status and run linting to establish a baseline.
Tool: bash
Input:
{
"command": "git status",
"description": "Check git status"
}Output:
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
Untracked files:
(use "git add <file>..." to include in what will be committed)
.agents/
skills-lock.json
tests/templates/patterns/atoms/sprites/sprites.yaml
nothing added to commit but untracked files present (use "git add" to track)
Tool: bash
Input:
{
"command": "npm run lint:css 2>&1",
"description": "Run baseline CSS linting"
}Output:
> django-pattern-library@0.1.0 lint:css
> stylelint --report-needless-disables --report-unscoped-disables 'pattern_library/static/pattern_library/src/scss/'
Thinking:
Good - the baseline linting passes with no errors. Now let me create a branch and upgrade the dependencies.
Tool: bash
Input:
{
"command": "git checkout -b upgrade-stylelint-17",
"description": "Create upgrade branch"
}Output:
Switched to a new branch 'upgrade-stylelint-17'
Tool: todowrite
Input:
{
"todos": [
{
"content": "Create upgrade branch and baseline QA",
"status": "completed",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "in_progress",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "pending",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "pending",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "pending",
"priority": "medium"
}
]
}Output:
[
{
"content": "Create upgrade branch and baseline QA",
"status": "completed",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "in_progress",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "pending",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "pending",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "pending",
"priority": "medium"
}
]
Tool: bash
Input:
{
"command": "npm install --save-dev stylelint@^17.0.0 stylelint-config-torchbox@^5.0.0 2>&1",
"description": "Upgrade stylelint and config",
"timeout": 120000
}Output:
added 11 packages, removed 7 packages, changed 37 packages, and audited 379 packages in 3s
5 vulnerabilities (1 low, 1 moderate, 3 high)
To address all issues, run:
npm audit fix
Run `npm audit` for details.
Thinking:
Dependencies upgraded. Now let me run linting to check for any issues.
Tool: todowrite
Input:
{
"todos": [
{
"content": "Create upgrade branch and baseline QA",
"status": "completed",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "completed",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "in_progress",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "pending",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "pending",
"priority": "medium"
}
]
}Output:
[
{
"content": "Create upgrade branch and baseline QA",
"status": "completed",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "completed",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "in_progress",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "pending",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "pending",
"priority": "medium"
}
]
Tool: bash
Input:
{
"command": "npm run lint:css 2>&1",
"description": "Run CSS linting after upgrade"
}Output:
> django-pattern-library@0.1.0 lint:css
> stylelint --report-needless-disables --report-unscoped-disables 'pattern_library/static/pattern_library/src/scss/'
pattern_library/static/pattern_library/src/scss/hljs/_a11y-dark.scss
5:1 ✖ Needless disable for "selector-class-pattern" --report-needless-disables
27:1 ✖ Expected ".hljs-built_in" to match pattern "/^[a-z]+(-[a-z0-9]+)*(__[a-z0-9]+(-[a-z0-9]+)*)?(--[a-z0-9]+(-[a-z0-9]+)*)?$/" scss/selector-class-pattern
81:5 ✖ Expected ".hljs-built_in" to match pattern "/^[a-z]+(-[a-z0-9]+)*(__[a-z0-9]+(-[a-z0-9]+)*)?(--[a-z0-9]+(-[a-z0-9]+)*)?$/" scss/selector-class-pattern
pattern_library/static/pattern_library/src/scss/hljs/_a11y-light.scss
5:1 ✖ Needless disable for "selector-class-pattern" --report-needless-disables
27:1 ✖ Expected ".hljs-built_in" to match pattern "/^[a-z]+(-[a-z0-9]+)*(__[a-z0-9]+(-[a-z0-9]+)*)?(--[a-z0-9]+(-[a-z0-9]+)*)?$/" scss/selector-class-pattern
81:5 ✖ Expected ".hljs-built_in" to match pattern "/^[a-z]+(-[a-z0-9]+)*(__[a-z0-9]+(-[a-z0-9]+)*)?(--[a-z0-9]+(-[a-z0-9]+)*)?$/" scss/selector-class-pattern
✖ 6 problems (6 errors, 0 warnings)
Thinking:
The linting revealed 6 new errors in the hljs theme files. The issues are:
.hljs-built_in not matching the BEM patternThese are third-party hljs theme files that use non-BEM class naming (.hljs-built_in has an underscore which isn't valid BEM). The files already have stylelint-disable comments at the top, but one is needless and the pattern is now being enforced with scss/selector-class-pattern instead of the standard selector-class-pattern.
Let me read these files to understand the disable comments better and fix them.
Tool: read
Input:
{
"filePath": "./pattern_library/static/pattern_library/src/scss/hljs/_a11y-dark.scss"
}Output:
<path>./pattern_library/static/pattern_library/src/scss/hljs/_a11y-dark.scss</path>
<type>file</type>
<content>1: // a11y-dark theme
2: // Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
3: // @author: ericwbailey
4:
5: // stylelint-disable selector-class-pattern, scale-unlimited/declaration-strict-value
6:
7: /* Comment */
8: .hljs-comment,
9: .hljs-quote {
10: color: #d4d0ab;
11: }
12:
13: /* Red */
14: .hljs-variable,
15: .hljs-template-variable,
16: .hljs-tag,
17: .hljs-name,
18: .hljs-selector-id,
19: .hljs-selector-class,
20: .hljs-regexp,
21: .hljs-deletion {
22: color: #ffa07a;
23: }
24:
25: /* Orange */
26: .hljs-number,
27: .hljs-built_in,
28: .hljs-builtin-name,
29: .hljs-literal,
30: .hljs-type,
31: .hljs-params,
32: .hljs-meta,
33: .hljs-link {
34: color: #f5ab35;
35: }
36:
37: /* Yellow */
38: .hljs-attribute {
39: color: #ffd700;
40: }
41:
42: /* Green */
43: .hljs-string,
44: .hljs-symbol,
45: .hljs-bullet,
46: .hljs-addition {
47: color: #abe338;
48: }
49:
50: /* Blue */
51: .hljs-title,
52: .hljs-section {
53: color: #00e0e0;
54: }
55:
56: /* Purple */
57: .hljs-keyword,
58: .hljs-selector-tag {
59: color: #dcc6e0;
60: }
61:
62: .hljs {
63: display: block;
64: overflow-x: auto;
65: background: #2b2b2b;
66: color: #f8f8f2;
67: padding: 0.5em;
68: }
69:
70: .hljs-emphasis {
71: font-style: italic;
72: }
73:
74: .hljs-strong {
75: font-weight: bold;
76: }
77:
78: @media screen and (-ms-high-contrast: active) {
79: .hljs-addition,
80: .hljs-attribute,
81: .hljs-built_in,
82: .hljs-builtin-name,
83: .hljs-bullet,
84: .hljs-comment,
85: .hljs-link,
86: .hljs-literal,
87: .hljs-meta,
88: .hljs-number,
89: .hljs-params,
90: .hljs-string,
91: .hljs-symbol,
92: .hljs-type,
93: .hljs-quote {
94: color: highlight;
95: }
96:
97: .hljs-keyword,
98: .hljs-selector-tag {
99: font-weight: bold;
100: }
101: }
(End of file - total 101 lines)
</content>
Tool: read
Input:
{
"filePath": "./pattern_library/static/pattern_library/src/scss/hljs/_a11y-light.scss"
}Output:
<path>./pattern_library/static/pattern_library/src/scss/hljs/_a11y-light.scss</path>
<type>file</type>
<content>1: // a11y-light theme
2: // Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
3: // @author: ericwbailey
4:
5: // stylelint-disable selector-class-pattern, scale-unlimited/declaration-strict-value
6:
7: /* Comment */
8: .hljs-comment,
9: .hljs-quote {
10: color: #696969;
11: }
12:
13: /* Red */
14: .hljs-variable,
15: .hljs-template-variable,
16: .hljs-tag,
17: .hljs-name,
18: .hljs-selector-id,
19: .hljs-selector-class,
20: .hljs-regexp,
21: .hljs-deletion {
22: color: #d91e18;
23: }
24:
25: /* Orange */
26: .hljs-number,
27: .hljs-built_in,
28: .hljs-builtin-name,
29: .hljs-literal,
30: .hljs-type,
31: .hljs-params,
32: .hljs-meta,
33: .hljs-link {
34: color: #aa5d00;
35: }
36:
37: /* Yellow */
38: .hljs-attribute {
39: color: #aa5d00;
40: }
41:
42: /* Green */
43: .hljs-string,
44: .hljs-symbol,
45: .hljs-bullet,
46: .hljs-addition {
47: color: #008000;
48: }
49:
50: /* Blue */
51: .hljs-title,
52: .hljs-section {
53: color: #007faa;
54: }
55:
56: /* Purple */
57: .hljs-keyword,
58: .hljs-selector-tag {
59: color: #7928a1;
60: }
61:
62: .hljs {
63: display: block;
64: overflow-x: auto;
65: background: #fefefe;
66: color: #545454;
67: padding: 0.5em;
68: }
69:
70: .hljs-emphasis {
71: font-style: italic;
72: }
73:
74: .hljs-strong {
75: font-weight: bold;
76: }
77:
78: @media screen and (-ms-high-contrast: active) {
79: .hljs-addition,
80: .hljs-attribute,
81: .hljs-built_in,
82: .hljs-builtin-name,
83: .hljs-bullet,
84: .hljs-comment,
85: .hljs-link,
86: .hljs-literal,
87: .hljs-meta,
88: .hljs-number,
89: .hljs-params,
90: .hljs-string,
91: .hljs-symbol,
92: .hljs-type,
93: .hljs-quote {
94: color: highlight;
95: }
96:
97: .hljs-keyword,
98: .hljs-selector-tag {
99: font-weight: bold;
100: }
101: }
(End of file - total 101 lines)
</content>
Thinking:
The issues are:
Needless disable for "selector-class-pattern" - The stylelint-disable comment on line 5 is now considered needless because the file has disabled the rule but the rule is now scss/selector-class-pattern not selector-class-pattern.
.hljs-built_in doesn't match the pattern - The class .hljs-built_in contains an underscore which doesn't match the BEM-like pattern expected by the config.
The first issue is because the stylelint-disable comment references selector-class-pattern but the actual rule being applied is scss/selector-class-pattern (from the SCSS config). I need to update the disable comments to reference the correct rule name.
The second issue is that .hljs-built_in uses underscores which are not allowed by the selector pattern. This is third-party code from highlight.js themes, so we should either:
Let me fix both files by updating the disable comments to use scss/selector-class-pattern instead of selector-class-pattern.
Tool: edit
Input:
{
"filePath": "./pattern_library/static/pattern_library/src/scss/hljs/_a11y-dark.scss",
"oldString": "// stylelint-disable selector-class-pattern, scale-unlimited/declaration-strict-value",
"newString": "// stylelint-disable scss/selector-class-pattern, scale-unlimited/declaration-strict-value"
}Output:
Edit applied successfully.
Tool: edit
Input:
{
"filePath": "./pattern_library/static/pattern_library/src/scss/hljs/_a11y-light.scss",
"oldString": "// stylelint-disable selector-class-pattern, scale-unlimited/declaration-strict-value",
"newString": "// stylelint-disable scss/selector-class-pattern, scale-unlimited/declaration-strict-value"
}Output:
Edit applied successfully.
Thinking:
The issue is that the disable comment was using selector-class-pattern but the actual rule being triggered is scss/selector-class-pattern (from the SCSS plugin). This is because stylelint-config-torchbox uses the SCSS plugin. Let me verify by running linting again.
Tool: bash
Input:
{
"command": "npm run lint:css 2>&1",
"description": "Run CSS linting after fixes"
}Output:
> django-pattern-library@0.1.0 lint:css
> stylelint --report-needless-disables --report-unscoped-disables 'pattern_library/static/pattern_library/src/scss/'
Thinking:
Linting passes now. Let me verify all QA checks.
Tool: todowrite
Input:
{
"todos": [
{
"content": "Create upgrade branch and baseline QA",
"status": "completed",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "completed",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "completed",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "in_progress",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "pending",
"priority": "medium"
}
]
}Output:
[
{
"content": "Create upgrade branch and baseline QA",
"status": "completed",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "completed",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "completed",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "in_progress",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "pending",
"priority": "medium"
}
]
Tool: bash
Input:
{
"command": "npm run lint 2>&1",
"description": "Run full linting suite"
}Output:
> django-pattern-library@0.1.0 lint
> npm run lint:format && npm run lint:css
> django-pattern-library@0.1.0 lint:format
> prettier --check '**/?(.)*.{md,css,scss,js,json,yaml,yml}'
Checking formatting...
All matched files use Prettier code style!
> django-pattern-library@0.1.0 lint:css
> stylelint --report-needless-disables --report-unscoped-disables 'pattern_library/static/pattern_library/src/scss/'
Thinking:
All QA checks pass. Let me now commit the changes and produce the upgrade report.
Tool: bash
Input:
{
"command": "git diff package.json",
"description": "Show package.json changes"
}Output:
diff --git i/package.json w/package.json
index 794d92a..e64c96b 100644
--- i/package.json
+++ w/package.json
@@ -31,8 +31,8 @@
"sass": "^1.86.3",
"sass-loader": "^16.0.5",
"style-loader": "^4.0.0",
- "stylelint": "^16.26.1",
- "stylelint-config-torchbox": "^4.0.0",
+ "stylelint": "^17.4.0",
+ "stylelint-config-torchbox": "^5.0.0",
"webpack": "^5.99.2",
"webpack-cli": "^6.0.1"
},
Tool: bash
Input:
{
"command": "git diff",
"description": "Show all changes"
}Output:
diff --git i/package-lock.json w/package-lock.json
index 02f1dc3..72b979a 100644
--- i/package-lock.json
+++ w/package-lock.json
@@ -20,8 +20,8 @@
"sass": "^1.86.3",
"sass-loader": "^16.0.5",
"style-loader": "^4.0.0",
- "stylelint": "^16.26.1",
- "stylelint-config-torchbox": "^4.0.0",
+ "stylelint": "^17.4.0",
+ "stylelint-config-torchbox": "^5.0.0",
"webpack": "^5.99.2",
"webpack-cli": "^6.0.1"
}
@@ -1449,33 +1449,57 @@
}
},
"node_modules/@cacheable/memory": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.6.tgz",
- "integrity": "sha512-7e8SScMocHxcAb8YhtkbMhGG+EKLRIficb1F5sjvhSYsWTZGxvg4KIDp8kgxnV2PUJ3ddPe6J9QESjKvBWRDkg==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.8.tgz",
+ "integrity": "sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@cacheable/utils": "^2.3.2",
- "@keyv/bigmap": "^1.3.0",
- "hookified": "^1.13.0",
- "keyv": "^5.5.4"
+ "@cacheable/utils": "^2.4.0",
+ "@keyv/bigmap": "^1.3.1",
+ "hookified": "^1.15.1",
+ "keyv": "^5.6.0"
}
},
"node_modules/@cacheable/utils": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.2.tgz",
- "integrity": "sha512-8kGE2P+HjfY8FglaOiW+y8qxcaQAfAhVML+i66XJR3YX5FtyDqn6Txctr3K2FrbxLKixRRYYBWMbuGciOhYNDg==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.0.tgz",
+ "integrity": "sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hashery": "^1.2.0",
- "keyv": "^5.5.4"
+ "hashery": "^1.5.0",
+ "keyv": "^5.6.0"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz",
+ "integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0"
}
},
"node_modules/@csstools/css-parser-algorithms": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
- "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz",
+ "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==",
"dev": true,
"funding": [
{
@@ -1489,16 +1513,16 @@
],
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "@csstools/css-tokenizer": "^3.0.4"
+ "@csstools/css-tokenizer": "^4.0.0"
}
},
"node_modules/@csstools/css-syntax-patches-for-csstree": {
- "version": "1.0.20",
- "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.20.tgz",
- "integrity": "sha512-8BHsjXfSciZxjmHQOuVdW2b8WLUPts9a+mfL13/PzEviufUEW2xnvQuOlKs9dRBHgRqJ53SF/DUoK9+MZk72oQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.0.tgz",
+ "integrity": "sha512-H4tuz2nhWgNKLt1inYpoVCfbJbMwX/lQKp3g69rrrIMIYlFD9+zTykOKhNR8uGrAmbS/kT9n6hTFkmDkxLgeTA==",
"dev": true,
"funding": [
{
@@ -1510,15 +1534,12 @@
"url": "https://opencollective.com/csstools"
}
],
- "license": "MIT-0",
- "engines": {
- "node": ">=18"
- }
+ "license": "MIT-0"
},
"node_modules/@csstools/css-tokenizer": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
- "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz",
+ "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==",
"dev": true,
"funding": [
{
@@ -1532,13 +1553,13 @@
],
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=20.19.0"
}
},
"node_modules/@csstools/media-query-list-parser": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz",
- "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.0.tgz",
+ "integrity": "sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==",
"dev": true,
"funding": [
{
@@ -1552,17 +1573,17 @@
],
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.5",
- "@csstools/css-tokenizer": "^3.0.4"
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-tokenizer": "^4.0.0"
}
},
- "node_modules/@csstools/selector-specificity": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
- "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+ "node_modules/@csstools/selector-resolve-nested": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.0.tgz",
+ "integrity": "sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==",
"dev": true,
"funding": [
{
@@ -1576,10 +1597,33 @@
],
"license": "MIT-0",
"engines": {
- "node": ">=18"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "postcss-selector-parser": "^7.0.0"
+ "postcss-selector-parser": "^7.1.1"
+ }
+ },
+ "node_modules/@csstools/selector-specificity": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-6.0.0.tgz",
+ "integrity": "sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=20.19.0"
+ },
+ "peerDependencies": {
+ "postcss-selector-parser": "^7.1.1"
}
},
"node_modules/@discoveryjs/json-ext": {
@@ -1591,17 +1635,6 @@
"node": ">=14.17.0"
}
},
- "node_modules/@dual-bundle/import-meta-resolve": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz",
- "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/JounQin"
- }
- },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
@@ -1661,20 +1694,20 @@
}
},
"node_modules/@keyv/bigmap": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.0.tgz",
- "integrity": "sha512-KT01GjzV6AQD5+IYrcpoYLkCu1Jod3nau1Z7EsEuViO3TZGRacSbO9MfHmbJ1WaOXFtWLxPVj169cn2WNKPkIg==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz",
+ "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hashery": "^1.2.0",
- "hookified": "^1.13.0"
+ "hashery": "^1.4.0",
+ "hookified": "^1.15.0"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
- "keyv": "^5.5.4"
+ "keyv": "^5.6.0"
}
},
"node_modules/@keyv/serialize": {
@@ -2018,6 +2051,19 @@
"url": "https://opencollective.com/parcel"
}
},
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@types/eslint": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
@@ -2351,16 +2397,6 @@
"dev": true,
"license": "Python-2.0"
},
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@@ -2426,13 +2462,6 @@
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
- "node_modules/balanced-match": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
- "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/braces": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
@@ -2484,17 +2513,17 @@
"dev": true
},
"node_modules/cacheable": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.0.tgz",
- "integrity": "sha512-HHiAvOBmlcR2f3SQ7kdlYD8+AUJG+wlFZ/Ze8tl1Vzvz0MdOh8IYA/EFU4ve8t1/sZ0j4MGi7ST5MoTwHessQA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.3.tgz",
+ "integrity": "sha512-iffYMX4zxKp54evOH27fm92hs+DeC1DhXmNVN8Tr94M/iZIV42dqTHSR2Ik4TOSPyOAwKr7Yu3rN9ALoLkbWyQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@cacheable/memory": "^2.0.6",
- "@cacheable/utils": "^2.3.2",
- "hookified": "^1.13.0",
- "keyv": "^5.5.4",
- "qified": "^0.5.2"
+ "@cacheable/memory": "^2.0.8",
+ "@cacheable/utils": "^2.4.0",
+ "hookified": "^1.15.0",
+ "keyv": "^5.6.0",
+ "qified": "^0.6.0"
}
},
"node_modules/callsites": {
@@ -2665,13 +2694,13 @@
}
},
"node_modules/css-functions-list": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz",
- "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.3.3.tgz",
+ "integrity": "sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=12 || >=16"
+ "node": ">=12"
}
},
"node_modules/css-loader": {
@@ -2778,19 +2807,6 @@
"node": ">=0.10"
}
},
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/electron-to-chromium": {
"version": "1.5.134",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.134.tgz",
@@ -2974,9 +2990,9 @@
}
},
"node_modules/fastq": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -2984,13 +3000,13 @@
}
},
"node_modules/file-entry-cache": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.1.tgz",
- "integrity": "sha512-TPVFSDE7q91Dlk1xpFLvFllf8r0HyOMOlnWy7Z2HBku5H3KhIeOGInexrIeg2D64DosVB/JXkrrk6N/7Wriq4A==",
+ "version": "11.1.2",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz",
+ "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==",
"dev": true,
"license": "MIT",
"dependencies": {
- "flat-cache": "^6.1.19"
+ "flat-cache": "^6.1.20"
}
},
"node_modules/fill-range": {
@@ -3031,21 +3047,21 @@
}
},
"node_modules/flat-cache": {
- "version": "6.1.19",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.19.tgz",
- "integrity": "sha512-l/K33newPTZMTGAnnzaiqSl6NnH7Namh8jBNjrgjprWxGmZUuxx/sJNIRaijOh3n7q7ESbhNZC+pvVZMFdeU4A==",
+ "version": "6.1.20",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.20.tgz",
+ "integrity": "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "cacheable": "^2.2.0",
+ "cacheable": "^2.3.2",
"flatted": "^3.3.3",
- "hookified": "^1.13.0"
+ "hookified": "^1.15.0"
}
},
"node_modules/flatted": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
- "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz",
+ "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==",
"dev": true,
"license": "ISC"
},
@@ -3067,6 +3083,19 @@
"node": ">=6.9.0"
}
},
+ "node_modules/get-east-asian-width": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz",
+ "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -3137,36 +3166,26 @@
}
},
"node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.1.tgz",
+ "integrity": "sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "fast-glob": "^3.3.3",
+ "ignore": "^7.0.5",
+ "is-path-inside": "^4.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.4.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/globby/node_modules/ignore": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
- "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/globjoin": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
@@ -3190,13 +3209,13 @@
}
},
"node_modules/hashery": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.3.0.tgz",
- "integrity": "sha512-fWltioiy5zsSAs9ouEnvhsVJeAXRybGCNNv0lvzpzNOSDbULXRy7ivFWwCCv4I5Am6kSo75hmbsCduOoc2/K4w==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.0.tgz",
+ "integrity": "sha512-nhQ6ExaOIqti2FDWoEMWARUqIKyjr2VcZzXShrI+A3zpeiuPWzx6iPftt44LhP74E5sW36B75N6VHbvRtpvO6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hookified": "^1.13.0"
+ "hookified": "^1.14.0"
},
"engines": {
"node": ">=20"
@@ -3223,20 +3242,20 @@
}
},
"node_modules/hookified": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.13.0.tgz",
- "integrity": "sha512-6sPYUY8olshgM/1LDNW4QZQN0IqgKhtl/1C8koNZBJrKLBk3AZl6chQtNwpNztvfiApHMEwMHek5rv993PRbWw==",
+ "version": "1.15.1",
+ "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz",
+ "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==",
"dev": true,
"license": "MIT"
},
"node_modules/html-tags": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
- "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-5.1.0.tgz",
+ "integrity": "sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=20.10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -3316,6 +3335,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/import-meta-resolve": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz",
+ "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -3404,6 +3434,19 @@
"node": ">=0.12.0"
}
},
+ "node_modules/is-path-inside": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz",
+ "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -3501,9 +3544,9 @@
}
},
"node_modules/keyv": {
- "version": "5.5.4",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.4.tgz",
- "integrity": "sha512-eohl3hKTiVyD1ilYdw9T0OiB4hnjef89e3dMYKz+mVKDzj+5IteTseASUsOB+EU9Tf6VNTCjDePcP6wkDGmLKQ==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
+ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3580,9 +3623,9 @@
}
},
"node_modules/mathml-tag-names": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
- "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-4.0.0.tgz",
+ "integrity": "sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -3598,13 +3641,13 @@
"license": "CC0-1.0"
},
"node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-14.1.0.tgz",
+ "integrity": "sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=18"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -3808,16 +3851,6 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -4057,10 +4090,11 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
- "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -4102,13 +4136,13 @@
}
},
"node_modules/qified": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/qified/-/qified-0.5.2.tgz",
- "integrity": "sha512-7gJ6mxcQb9vUBOtbKm5mDevbe2uRcOEVp1g4gb/Q+oLntB3HY8eBhOYRxFI2mlDFlY1e4DOSCptzxarXRvzxCA==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/qified/-/qified-0.6.0.tgz",
+ "integrity": "sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "hookified": "^1.13.0"
+ "hookified": "^1.14.0"
},
"engines": {
"node": ">=20"
@@ -4498,13 +4532,16 @@
}
},
"node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/slice-ansi": {
@@ -4598,9 +4635,9 @@
}
},
"node_modules/stylelint": {
- "version": "16.26.1",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz",
- "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==",
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-17.4.0.tgz",
+ "integrity": "sha512-3kQ2/cHv3Zt8OBg+h2B8XCx9evEABQIrv4hh3uXahGz/ZEHrTR80zxBiK2NfXNaSoyBzxO1pjsz1Vhdzwn5XSw==",
"dev": true,
"funding": [
{
@@ -4614,57 +4651,55 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.5",
- "@csstools/css-syntax-patches-for-csstree": "^1.0.19",
- "@csstools/css-tokenizer": "^3.0.4",
- "@csstools/media-query-list-parser": "^4.0.3",
- "@csstools/selector-specificity": "^5.0.0",
- "@dual-bundle/import-meta-resolve": "^4.2.1",
- "balanced-match": "^2.0.0",
+ "@csstools/css-calc": "^3.1.1",
+ "@csstools/css-parser-algorithms": "^4.0.0",
+ "@csstools/css-syntax-patches-for-csstree": "^1.0.27",
+ "@csstools/css-tokenizer": "^4.0.0",
+ "@csstools/media-query-list-parser": "^5.0.0",
+ "@csstools/selector-resolve-nested": "^4.0.0",
+ "@csstools/selector-specificity": "^6.0.0",
"colord": "^2.9.3",
"cosmiconfig": "^9.0.0",
- "css-functions-list": "^3.2.3",
+ "css-functions-list": "^3.3.3",
"css-tree": "^3.1.0",
"debug": "^4.4.3",
"fast-glob": "^3.3.3",
"fastest-levenshtein": "^1.0.16",
- "file-entry-cache": "^11.1.1",
+ "file-entry-cache": "^11.1.2",
"global-modules": "^2.0.0",
- "globby": "^11.1.0",
+ "globby": "^16.1.0",
"globjoin": "^0.1.4",
- "html-tags": "^3.3.1",
+ "html-tags": "^5.1.0",
"ignore": "^7.0.5",
+ "import-meta-resolve": "^4.2.0",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
- "known-css-properties": "^0.37.0",
- "mathml-tag-names": "^2.1.3",
- "meow": "^13.2.0",
+ "mathml-tag-names": "^4.0.0",
+ "meow": "^14.0.0",
"micromatch": "^4.0.8",
"normalize-path": "^3.0.0",
"picocolors": "^1.1.1",
"postcss": "^8.5.6",
- "postcss-resolve-nested-selector": "^0.1.6",
"postcss-safe-parser": "^7.0.1",
- "postcss-selector-parser": "^7.1.0",
+ "postcss-selector-parser": "^7.1.1",
"postcss-value-parser": "^4.2.0",
- "resolve-from": "^5.0.0",
- "string-width": "^4.2.3",
- "supports-hyperlinks": "^3.2.0",
+ "string-width": "^8.1.1",
+ "supports-hyperlinks": "^4.4.0",
"svg-tags": "^1.0.0",
"table": "^6.9.0",
- "write-file-atomic": "^5.0.1"
+ "write-file-atomic": "^7.0.0"
},
"bin": {
"stylelint": "bin/stylelint.mjs"
},
"engines": {
- "node": ">=18.12.0"
+ "node": ">=20.19.0"
}
},
"node_modules/stylelint-config-recommended": {
- "version": "17.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-17.0.0.tgz",
- "integrity": "sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==",
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-18.0.0.tgz",
+ "integrity": "sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==",
"dev": true,
"funding": [
{
@@ -4678,29 +4713,29 @@
],
"license": "MIT",
"engines": {
- "node": ">=18.12.0"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "stylelint": "^16.23.0"
+ "stylelint": "^17.0.0"
}
},
"node_modules/stylelint-config-recommended-scss": {
- "version": "16.0.2",
- "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-16.0.2.tgz",
- "integrity": "sha512-aUTHhPPWCvFyWaxtckJlCPaXTDFsp4pKO8evXNCsW9OwsaUWyMd6jvcUhSmfGWPrTddvzNqK4rS/UuSLcbVGdQ==",
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-17.0.0.tgz",
+ "integrity": "sha512-VkVD9r7jfUT/dq3mA3/I1WXXk2U71rO5wvU2yIil9PW5o1g3UM7Xc82vHmuVJHV7Y8ok5K137fmW5u3HbhtTOA==",
"dev": true,
"license": "MIT",
"dependencies": {
"postcss-scss": "^4.0.9",
- "stylelint-config-recommended": "^17.0.0",
- "stylelint-scss": "^6.12.1"
+ "stylelint-config-recommended": "^18.0.0",
+ "stylelint-scss": "^7.0.0"
},
"engines": {
"node": ">=20"
},
"peerDependencies": {
"postcss": "^8.3.3",
- "stylelint": "^16.24.0"
+ "stylelint": "^17.0.0"
},
"peerDependenciesMeta": {
"postcss": {
@@ -4709,9 +4744,9 @@
}
},
"node_modules/stylelint-config-standard": {
- "version": "39.0.1",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-39.0.1.tgz",
- "integrity": "sha512-b7Fja59EYHRNOTa3aXiuWnhUWXFU2Nfg6h61bLfAb5GS5fX3LMUD0U5t4S8N/4tpHQg3Acs2UVPR9jy2l1g/3A==",
+ "version": "40.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-40.0.0.tgz",
+ "integrity": "sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==",
"dev": true,
"funding": [
{
@@ -4725,31 +4760,31 @@
],
"license": "MIT",
"dependencies": {
- "stylelint-config-recommended": "^17.0.0"
+ "stylelint-config-recommended": "^18.0.0"
},
"engines": {
- "node": ">=18.12.0"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "stylelint": "^16.23.0"
+ "stylelint": "^17.0.0"
}
},
"node_modules/stylelint-config-standard-scss": {
- "version": "16.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-16.0.0.tgz",
- "integrity": "sha512-/FHECLUu+med/e6OaPFpprG86ShC4SYT7Tzb2PTVdDjJsehhFBOioSlWqYFqJxmGPIwO3AMBxNo+kY3dxrbczA==",
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-17.0.0.tgz",
+ "integrity": "sha512-uLJS6xgOCBw5EMsDW7Ukji8l28qRoMnkRch15s0qwZpskXvWt9oPzMmcYM307m9GN4MxuWLsQh4I6hU9yI53cQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "stylelint-config-recommended-scss": "^16.0.1",
- "stylelint-config-standard": "^39.0.0"
+ "stylelint-config-recommended-scss": "^17.0.0",
+ "stylelint-config-standard": "^40.0.0"
},
"engines": {
"node": ">=20"
},
"peerDependencies": {
"postcss": "^8.3.3",
- "stylelint": "^16.23.1"
+ "stylelint": "^17.0.0"
},
"peerDependenciesMeta": {
"postcss": {
@@ -4758,71 +4793,71 @@
}
},
"node_modules/stylelint-config-torchbox": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-config-torchbox/-/stylelint-config-torchbox-4.0.0.tgz",
- "integrity": "sha512-2F5gCxtCWmw3lmf09s/I7Fz5ybJKY2U699qcaML8cWm5F+ME/GuM6rU8DZnravSDRgqVXi7+jFV3ubt7UA2ggw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-config-torchbox/-/stylelint-config-torchbox-5.0.0.tgz",
+ "integrity": "sha512-+xb84riylAmTxLlKmlkA5Pa7oRaKOjQVhnqca6ygaMmsrW/h/nWOdsVSu0QnYiU5M7uGL1Owc+vgoZiAEclAGg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "stylelint-config-standard-scss": "^16.0.0",
- "stylelint-declaration-strict-value": "^1.10.11",
- "stylelint-order": "^7.0.0"
+ "stylelint-config-standard-scss": "^17.0.0",
+ "stylelint-declaration-strict-value": "^1.11.1",
+ "stylelint-order": "^7.0.1"
},
"peerDependencies": {
- "stylelint": "^16.23.1"
+ "stylelint": "^17.0.0"
}
},
"node_modules/stylelint-declaration-strict-value": {
- "version": "1.10.11",
- "resolved": "https://registry.npmjs.org/stylelint-declaration-strict-value/-/stylelint-declaration-strict-value-1.10.11.tgz",
- "integrity": "sha512-oVQvhZlFZAiDz9r2BPFZLtTGm1A2JVhdKObKAJoTjFfR4F/NpApC4bMBTxf4sZS76Na3njYKVOaAaKSZ4+FU+g==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/stylelint-declaration-strict-value/-/stylelint-declaration-strict-value-1.11.1.tgz",
+ "integrity": "sha512-DYihiMuKGk9AeCYp+c3PMy6Z+Qu6yb6wRLeXQJZVMdXV+QOqs7P+Xj6jt8RVTgFJfII+cEQaFI5uWu08WwlkOA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=18.12.0"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "stylelint": ">=7 <=16"
+ "stylelint": ">=16 <=17"
}
},
"node_modules/stylelint-order": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-7.0.0.tgz",
- "integrity": "sha512-rSWxx0KscYfxU02wEskKXES9lkRzuuONMMNkZ7SUc6uiF3tDKm7e+sE0Ax/SBlG4TUf1sp1R6f3/SlsPGmzthg==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-7.0.1.tgz",
+ "integrity": "sha512-GWPei1zBVDDjxM+/BmcSCiOcHNd8rSqW6FUZtqQGlTRpD0Z5nSzspzWD8rtKif5KPdzUG68DApKEV/y/I9VbTw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "postcss": "^8.5.3",
+ "postcss": "^8.5.6",
"postcss-sorting": "^9.1.0"
},
"engines": {
"node": ">=20.19.0"
},
"peerDependencies": {
- "stylelint": "^16.18.0"
+ "stylelint": "^16.18.0 || ^17.0.0"
}
},
"node_modules/stylelint-scss": {
- "version": "6.12.1",
- "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.12.1.tgz",
- "integrity": "sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-7.0.0.tgz",
+ "integrity": "sha512-H88kCC+6Vtzj76NsC8rv6x/LW8slBzIbyeSjsKVlS+4qaEJoDrcJR4L+8JdrR2ORdTscrBzYWiiT2jq6leYR1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"css-tree": "^3.0.1",
"is-plain-object": "^5.0.0",
- "known-css-properties": "^0.36.0",
- "mdn-data": "^2.21.0",
+ "known-css-properties": "^0.37.0",
+ "mdn-data": "^2.25.0",
"postcss-media-query-parser": "^0.2.3",
"postcss-resolve-nested-selector": "^0.1.6",
- "postcss-selector-parser": "^7.1.0",
+ "postcss-selector-parser": "^7.1.1",
"postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": ">=18.12.0"
+ "node": ">=20.19.0"
},
"peerDependencies": {
- "stylelint": "^16.0.2"
+ "stylelint": "^16.8.2 || ^17.0.0"
}
},
"node_modules/stylelint-scss/node_modules/is-plain-object": {
@@ -4835,20 +4870,26 @@
"node": ">=0.10.0"
}
},
- "node_modules/stylelint-scss/node_modules/known-css-properties": {
- "version": "0.36.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz",
- "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/stylelint-scss/node_modules/mdn-data": {
- "version": "2.25.0",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.25.0.tgz",
- "integrity": "sha512-T2LPsjgUE/tgMmRXREVmwsux89DwWfNjiynOeXuLd2mX6jphGQ2YE3Ukz7LQ2VOFKiVZU/Ee1GqzHiipZCjymw==",
+ "version": "2.27.1",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
+ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
"dev": true,
"license": "CC0-1.0"
},
+ "node_modules/stylelint/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
"node_modules/stylelint/node_modules/is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
@@ -4859,6 +4900,39 @@
"node": ">=0.10.0"
}
},
+ "node_modules/stylelint/node_modules/string-width": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz",
+ "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stylelint/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/supports-color": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -4875,33 +4949,46 @@
}
},
"node_modules/supports-hyperlinks": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz",
- "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.4.0.tgz",
+ "integrity": "sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
+ "has-flag": "^5.0.1",
+ "supports-color": "^10.2.2"
},
"engines": {
- "node": ">=14.18"
+ "node": ">=20"
},
"funding": {
"url": "https://github.com/chalk/supports-hyperlinks?sponsor=1"
}
},
- "node_modules/supports-hyperlinks/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/supports-hyperlinks/node_modules/has-flag": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz",
+ "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
"engines": {
- "node": ">=8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz",
+ "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
"node_modules/supports-preserve-symlinks-flag": {
@@ -5058,6 +5145,19 @@
"node": ">=4"
}
},
+ "node_modules/unicorn-magic": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz",
+ "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/update-browserslist-db": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
@@ -5249,17 +5349,16 @@
"dev": true
},
"node_modules/write-file-atomic": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
- "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz",
+ "integrity": "sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==",
"dev": true,
"license": "ISC",
"dependencies": {
- "imurmurhash": "^0.1.4",
"signal-exit": "^4.0.1"
},
"engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/yallist": {
diff --git i/package.json w/package.json
index 794d92a..e64c96b 100644
--- i/package.json
+++ w/package.json
@@ -31,8 +31,8 @@
"sass": "^1.86.3",
"sass-loader": "^16.0.5",
"style-loader": "^4.0.0",
- "stylelint": "^16.26.1",
- "stylelint-config-torchbox": "^4.0.0",
+ "stylelint": "^17.4.0",
+ "stylelint-config-torchbox": "^5.0.0",
"webpack": "^5.99.2",
"webpack-cli": "^6.0.1"
},
diff --git i/pattern_library/static/pattern_library/src/scss/hljs/_a11y-dark.scss w/pattern_library/static/pattern_library/src/scss/hljs/_a11y-dark.scss
index 20bf2f4..0242cb0 100644
--- i/pattern_library/static/pattern_library/src/scss/hljs/_a11y-dark.scss
+++ w/pattern_library/static/pattern_library/src/scss/hljs/_a11y-dark.scss
@@ -2,7 +2,7 @@
// Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
// @author: ericwbailey
-// stylelint-disable selector-class-pattern, scale-unlimited/declaration-strict-value
+// stylelint-disable scss/selector-class-pattern, scale-unlimited/declaration-strict-value
/* Comment */
.hljs-comment,
diff --git i/pattern_library/static/pattern_library/src/scss/hljs/_a11y-light.scss w/pattern_library/static/pattern_library/src/scss/hljs/_a11y-light.scss
index 73616b9..d781942 100644
--- i/pattern_library/static/pattern_library/src/scss/hljs/_a11y-light.scss
+++ w/pattern_library/static/pattern_library/src/scss/hljs/_a11y-light.scss
@@ -2,7 +2,7 @@
// Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css
// @author: ericwbailey
-// stylelint-disable selector-class-pattern, scale-unlimited/declaration-strict-value
+// stylelint-disable scss/selector-class-pattern, scale-unlimited/declaration-strict-value
/* Comment */
.hljs-comment,
Thinking:
The changes look good. Let me commit them.
Tool: todowrite
Input:
{
"todos": [
{
"content": "Create upgrade branch and baseline QA",
"status": "completed",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "completed",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "completed",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "completed",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "completed",
"priority": "medium"
}
]
}Output:
[
{
"content": "Create upgrade branch and baseline QA",
"status": "completed",
"priority": "high"
},
{
"content": "Upgrade dependencies (stylelint 17, stylelint-config-torchbox 5.0.0)",
"status": "completed",
"priority": "high"
},
{
"content": "Run linting and fix any new issues",
"status": "completed",
"priority": "high"
},
{
"content": "Verify QA checks pass",
"status": "completed",
"priority": "high"
},
{
"content": "Produce upgrade report",
"status": "completed",
"priority": "medium"
}
]
Thinking:
The upgrade is complete. Let me provide a summary report.
Successfully upgraded from Stylelint 16 to 17 with stylelint-config-torchbox 5.0.0.
Dependencies:
stylelint: ^16.26.1 → ^17.4.0stylelint-config-torchbox: ^4.0.0 → ^5.0.0Stylesheet fixes:
hljs/_a11y-dark.scss and hljs/_a11y-light.scss to use scss/selector-class-pattern instead of selector-class-pattern (stylelint-scss 7.x rule rename)strict (use --fix=lax for previous behavior)resolveNestedSelectors option, checkContextFunctionalPseudoClasses optionAll QA checks pass:
npm run lint:format ✓npm run lint:css ✓Branch: upgrade-stylelint-17 is ready for review.