diff --git a/apps/api-documenter/package.json b/apps/api-documenter/package.json index d3d38fb44db..f65393eff0d 100644 --- a/apps/api-documenter/package.json +++ b/apps/api-documenter/package.json @@ -49,18 +49,18 @@ }, "dependencies": { "@microsoft/api-extractor-model": "workspace:*", - "@microsoft/tsdoc": "~0.17.0", + "@microsoft/tsdoc": "catalog:", "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "js-yaml": "~4.3.2", - "resolve": "~1.22.1" + "js-yaml": "catalog:", + "resolve": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/js-yaml": "4.0.9", - "@types/resolve": "1.20.2", - "eslint": "~9.37.0", + "@types/js-yaml": "catalog:", + "@types/resolve": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": [ diff --git a/apps/api-extractor/package.json b/apps/api-extractor/package.json index 8719ce5ab14..8f08059530e 100644 --- a/apps/api-extractor/package.json +++ b/apps/api-extractor/package.json @@ -67,25 +67,25 @@ }, "dependencies": { "@microsoft/api-extractor-model": "workspace:*", - "@microsoft/tsdoc-config": "~0.18.2", - "@microsoft/tsdoc": "~0.17.0", + "@microsoft/tsdoc-config": "catalog:", + "@microsoft/tsdoc": "catalog:", "@rushstack/node-core-library": "workspace:*", "@rushstack/rig-package": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "diff": "~8.0.2", - "minimatch": "10.2.3", - "resolve": "~1.22.1", - "semver": "~7.7.4", + "diff": "catalog:", + "minimatch": "catalog:", + "resolve": "catalog:", + "semver": "catalog:", "source-map": "~0.6.1", "typescript": "6.0.3" }, "devDependencies": { "@rushstack/heft": "1.3.4", - "@types/resolve": "1.20.2", - "@types/semver": "7.7.1", + "@types/resolve": "catalog:", + "@types/semver": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-eslint-config": "workspace:*" }, "sideEffects": [ diff --git a/apps/cpu-profile-summarizer/package.json b/apps/cpu-profile-summarizer/package.json index 5acaf43a351..6f090a4ebc9 100644 --- a/apps/cpu-profile-summarizer/package.json +++ b/apps/cpu-profile-summarizer/package.json @@ -27,7 +27,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/apps/heft/package.json b/apps/heft/package.json index f65c09aa684..f629ac332f0 100644 --- a/apps/heft/package.json +++ b/apps/heft/package.json @@ -66,19 +66,19 @@ "@rushstack/rig-package": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "@types/tapable": "1.0.6", - "fast-glob": "~3.3.1", - "git-repo-info": "~2.1.0", - "ignore": "~5.1.6", + "@types/tapable": "catalog:", + "fast-glob": "catalog:", + "git-repo-info": "catalog:", + "ignore": "catalog:", "tapable": "1.1.3", - "watchpack": "2.4.0" + "watchpack": "catalog:" }, "devDependencies": { "@microsoft/api-extractor": "workspace:*", "@rushstack/heft": "1.3.4", - "@types/watchpack": "2.4.0", + "@types/watchpack": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "sideEffects": [ "lib-commonjs/start.js", diff --git a/apps/lockfile-explorer-web/package.json b/apps/lockfile-explorer-web/package.json index bb22f5bd43f..c3a4b3d6d2e 100644 --- a/apps/lockfile-explorer-web/package.json +++ b/apps/lockfile-explorer-web/package.json @@ -12,20 +12,20 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "@reduxjs/toolkit": "~2.11.2", + "@reduxjs/toolkit": "catalog:", "@rushstack/rush-themed-ui": "workspace:*", - "prism-react-renderer": "~2.4.1", - "react-dom": "~19.2.3", - "react-redux": "~9.2.0", - "react": "~19.2.3", - "redux": "~5.0.1", - "tslib": "~2.8.1" + "prism-react-renderer": "catalog:", + "react-dom": "catalog:", + "react-redux": "catalog:", + "react": "catalog:", + "redux": "catalog:", + "tslib": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "eslint": "~9.37.0", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "eslint": "catalog:", "local-web-rig": "workspace:*", "typescript": "5.8.2" }, diff --git a/apps/lockfile-explorer/package.json b/apps/lockfile-explorer/package.json index ae9f40e384e..b6ee2cf3e8a 100644 --- a/apps/lockfile-explorer/package.json +++ b/apps/lockfile-explorer/package.json @@ -53,27 +53,27 @@ "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/lockfile-explorer-web": "workspace:*", - "@types/cors": "~2.8.12", - "@types/express": "4.17.21", - "@types/js-yaml": "4.0.9", - "eslint": "~9.37.0", + "@types/cors": "catalog:", + "@types/express": "catalog:", + "@types/js-yaml": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", "@pnpm/lockfile.types": "1002.0.1", - "@pnpm/types": "1000.8.0", - "@types/semver": "7.7.1" + "@pnpm/types": "catalog:", + "@types/semver": "catalog:" }, "dependencies": { - "tslib": "~2.8.1", + "tslib": "catalog:", "@microsoft/rush-lib": "workspace:*", "@pnpm/dependency-path-lockfile-pre-v9": "npm:@pnpm/dependency-path@~2.1.2", "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-sdk": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "cors": "~2.8.5", - "express": "4.21.1", - "js-yaml": "~4.3.2", - "semver": "~7.7.4" + "cors": "catalog:", + "express": "catalog:", + "js-yaml": "catalog:", + "semver": "catalog:" }, "exports": { "./lib/*.schema.json": "./lib-commonjs/*.schema.json", diff --git a/apps/playwright-browser-tunnel/package.json b/apps/playwright-browser-tunnel/package.json index 89d5bc79d4d..59942bea2a7 100644 --- a/apps/playwright-browser-tunnel/package.json +++ b/apps/playwright-browser-tunnel/package.json @@ -48,19 +48,19 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "string-argv": "~0.3.1", - "ws": "~8.21.0", - "playwright": "1.62.1" + "string-argv": "catalog:", + "ws": "catalog:", + "playwright": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "@types/semver": "7.7.1", - "@types/ws": "8.18.1", - "playwright-core": "~1.62.1", - "@playwright/test": "~1.62.1", - "@types/node": "20.17.19" + "@types/semver": "catalog:", + "@types/ws": "catalog:", + "playwright-core": "catalog:", + "@playwright/test": "catalog:", + "@types/node": "catalog:" }, "peerDependencies": { "playwright-core": ">=1.56.1 <2.0.0" diff --git a/apps/rundown/package.json b/apps/rundown/package.json index 31ca9ba2a0f..6bae5edf28b 100644 --- a/apps/rundown/package.json +++ b/apps/rundown/package.json @@ -24,11 +24,11 @@ "dependencies": { "@rushstack/node-core-library": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "string-argv": "~0.3.1" + "string-argv": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/apps/rush-cli-client/package.json b/apps/rush-cli-client/package.json index 89bf241c467..477347e4ba4 100644 --- a/apps/rush-cli-client/package.json +++ b/apps/rush-cli-client/package.json @@ -39,7 +39,7 @@ "@rushstack/rush-amazon-s3-build-cache-plugin": "workspace:*", "@rushstack/rush-azure-storage-build-cache-plugin": "workspace:*", "@rushstack/rush-http-build-cache-plugin": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" } } diff --git a/apps/rush-mcp-server/package.json b/apps/rush-mcp-server/package.json index 3ea1c682d92..bf1aa362e2f 100644 --- a/apps/rush-mcp-server/package.json +++ b/apps/rush-mcp-server/package.json @@ -59,15 +59,15 @@ "@rushstack/terminal": "workspace:*", "@rushstack/rush-sdk": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "@modelcontextprotocol/sdk": "~1.10.2", - "zod": "~3.25.76" + "@modelcontextprotocol/sdk": "catalog:", + "zod": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "typescript": "~5.8.2", - "@types/node": "20.17.19" + "typescript": "catalog:", + "@types/node": "catalog:" }, "sideEffects": [ "lib-commonjs/start.js", diff --git a/apps/rush-serve-dashboard/package.json b/apps/rush-serve-dashboard/package.json index df19cbc9db8..360207a592e 100644 --- a/apps/rush-serve-dashboard/package.json +++ b/apps/rush-serve-dashboard/package.json @@ -11,11 +11,11 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "tslib": "~2.8.1" + "tslib": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-web-rig": "workspace:*" }, "sideEffects": [ diff --git a/apps/rush/package.json b/apps/rush/package.json index a4fbab856f3..7e9fa8cec40 100644 --- a/apps/rush/package.json +++ b/apps/rush/package.json @@ -41,17 +41,17 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-reporter": "workspace:*", "@rushstack/terminal": "workspace:*", - "semver": "~7.7.4" + "semver": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", "@rushstack/rush-amazon-s3-build-cache-plugin": "workspace:*", "@rushstack/rush-azure-storage-build-cache-plugin": "workspace:*", "@rushstack/rush-http-build-cache-plugin": "workspace:*", "@rushstack/rush-serve-plugin": "workspace:*", - "@types/semver": "7.7.1" + "@types/semver": "catalog:" }, "exports": { "./lib/*": { diff --git a/apps/trace-import/package.json b/apps/trace-import/package.json index 6738523c4e7..d8435d021c3 100644 --- a/apps/trace-import/package.json +++ b/apps/trace-import/package.json @@ -25,15 +25,15 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "resolve": "~1.22.1", - "semver": "~7.7.4", - "typescript": "~5.8.2" + "resolve": "catalog:", + "semver": "catalog:", + "typescript": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/resolve": "1.20.2", - "@types/semver": "7.7.1", - "eslint": "~9.37.0", + "@types/resolve": "catalog:", + "@types/semver": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/apps/zipsync/package.json b/apps/zipsync/package.json index 1ef7b631432..adf6f218920 100644 --- a/apps/zipsync/package.json +++ b/apps/zipsync/package.json @@ -24,12 +24,12 @@ "dependencies": { "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "typescript": "~5.8.2", + "typescript": "catalog:", "@rushstack/lookup-by-path": "workspace:*" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "main": "./lib-commonjs/index.js", diff --git a/build-tests-samples/heft-node-basic-tutorial/package.json b/build-tests-samples/heft-node-basic-tutorial/package.json index d2f8675a942..34291231933 100644 --- a/build-tests-samples/heft-node-basic-tutorial/package.json +++ b/build-tests-samples/heft-node-basic-tutorial/package.json @@ -15,10 +15,10 @@ "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests-samples/heft-node-jest-tutorial/package.json b/build-tests-samples/heft-node-jest-tutorial/package.json index 044a914768d..0f07c505e78 100644 --- a/build-tests-samples/heft-node-jest-tutorial/package.json +++ b/build-tests-samples/heft-node-jest-tutorial/package.json @@ -14,10 +14,10 @@ "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests-samples/heft-node-rig-tutorial/package.json b/build-tests-samples/heft-node-rig-tutorial/package.json index 84412af9589..22b07d8d4e7 100644 --- a/build-tests-samples/heft-node-rig-tutorial/package.json +++ b/build-tests-samples/heft-node-rig-tutorial/package.json @@ -14,8 +14,8 @@ "local-eslint-config": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/heft-node-rig": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "eslint": "~9.37.0" + "@types/jest": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:" } } diff --git a/build-tests-samples/heft-serverless-stack-tutorial/package.json b/build-tests-samples/heft-serverless-stack-tutorial/package.json index 0eb38492889..7d4473cf85b 100644 --- a/build-tests-samples/heft-serverless-stack-tutorial/package.json +++ b/build-tests-samples/heft-serverless-stack-tutorial/package.json @@ -13,23 +13,23 @@ "_phase:test": "heft run --only test -- --clean" }, "devDependencies": { - "@aws-sdk/client-sso-oidc": "^3.567.0", - "@aws-sdk/client-sts": "^3.567.0", + "@aws-sdk/client-sso-oidc": "catalog:", + "@aws-sdk/client-sts": "catalog:", "@rushstack/heft": "workspace:*", "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-serverless-stack-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@serverless-stack/aws-lambda-ric": "^2.0.12", - "@serverless-stack/cli": "1.18.4", - "@serverless-stack/resources": "1.18.4", - "@types/aws-lambda": "8.10.93", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "aws-cdk-lib": "2.189.1", - "constructs": "~10.0.98", - "eslint": "~9.37.0", + "@serverless-stack/aws-lambda-ric": "catalog:", + "@serverless-stack/cli": "catalog:", + "@serverless-stack/resources": "catalog:", + "@types/aws-lambda": "catalog:", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "aws-cdk-lib": "catalog:", + "constructs": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests-samples/heft-storybook-v6-react-tutorial-storykit/package.json b/build-tests-samples/heft-storybook-v6-react-tutorial-storykit/package.json index 83f9a52f58d..2580bdbe25b 100644 --- a/build-tests-samples/heft-storybook-v6-react-tutorial-storykit/package.json +++ b/build-tests-samples/heft-storybook-v6-react-tutorial-storykit/package.json @@ -31,33 +31,33 @@ "_phase:build": "heft run --only build -- --clean" }, "dependencies": { - "@babel/core": "~7.20.0", - "@storybook/addon-actions": "~6.4.18", - "@storybook/addon-essentials": "~6.4.18", - "@storybook/addon-links": "~6.4.18", + "@babel/core": "catalog:", + "@storybook/addon-actions": "catalog:", + "@storybook/addon-essentials": "catalog:", + "@storybook/addon-links": "catalog:", "@storybook/cli": "~6.4.18", - "@storybook/components": "~6.4.18", - "@storybook/core-events": "~6.4.18", + "@storybook/components": "catalog:", + "@storybook/core-events": "catalog:", "@storybook/react": "~6.4.18", - "@storybook/theming": "~6.4.18", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", + "@storybook/theming": "catalog:", + "@types/jest": "catalog:", + "@types/node": "catalog:", "@types/react-dom": "17.0.25", "@types/react": "17.0.74", - "@types/webpack-env": "1.18.8", - "babel-loader": "~8.2.3", + "@types/webpack-env": "catalog:", + "babel-loader": "catalog:", "css-loader": "~5.2.7", - "jest": "~29.3.1", + "jest": "catalog:", "react-dom": "~17.0.2", "react": "~17.0.2", "style-loader": "~2.0.0", "terser-webpack-plugin": "~3.0.8", - "typescript": "~5.8.2", + "typescript": "catalog:", "webpack": "~4.47.0" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-web-rig": "workspace:*" } } diff --git a/build-tests-samples/heft-storybook-v6-react-tutorial/package.json b/build-tests-samples/heft-storybook-v6-react-tutorial/package.json index 4bc6a70f023..f0795a70bac 100644 --- a/build-tests-samples/heft-storybook-v6-react-tutorial/package.json +++ b/build-tests-samples/heft-storybook-v6-react-tutorial/package.json @@ -14,10 +14,10 @@ "dependencies": { "react-dom": "~17.0.2", "react": "~17.0.2", - "tslib": "~2.8.1" + "tslib": "catalog:" }, "devDependencies": { - "@babel/core": "~7.20.0", + "@babel/core": "catalog:", "@rushstack/heft": "workspace:*", "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", @@ -26,19 +26,19 @@ "@rushstack/heft-webpack4-plugin": "workspace:*", "@rushstack/webpack4-module-minifier-plugin": "workspace:*", "@storybook/react": "~6.4.18", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", + "@types/jest": "catalog:", + "@types/node": "catalog:", "@types/react": "17.0.74", "@types/react-dom": "17.0.25", - "@types/webpack-env": "1.18.8", + "@types/webpack-env": "catalog:", "css-loader": "~5.2.7", - "eslint": "~9.37.0", + "eslint": "catalog:", "heft-storybook-v6-react-tutorial-storykit": "workspace:*", "html-webpack-plugin": "~4.5.2", "local-eslint-config": "workspace:*", "source-map-loader": "~1.1.3", "style-loader": "~2.0.0", - "typescript": "~5.8.2", + "typescript": "catalog:", "webpack": "~4.47.0" } } diff --git a/build-tests-samples/heft-storybook-v9-react-tutorial-storykit/package.json b/build-tests-samples/heft-storybook-v9-react-tutorial-storykit/package.json index fd0b2858e4c..71ea0757382 100644 --- a/build-tests-samples/heft-storybook-v9-react-tutorial-storykit/package.json +++ b/build-tests-samples/heft-storybook-v9-react-tutorial-storykit/package.json @@ -31,30 +31,30 @@ "_phase:build": "heft run --only build -- --clean" }, "dependencies": { - "@babel/core": "~7.20.0", - "@storybook/cli": "~9.1.6", - "@storybook/react": "~9.1.6", - "@storybook/react-webpack5": "~9.1.6", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "@types/react-dom": "19.2.3", - "@types/react": "19.2.7", - "@types/webpack-env": "1.18.8", - "babel-loader": "~8.2.3", + "@babel/core": "catalog:", + "@storybook/cli": "catalog:", + "@storybook/react": "catalog:", + "@storybook/react-webpack5": "catalog:", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "@types/react-dom": "catalog:", + "@types/react": "catalog:", + "@types/webpack-env": "catalog:", + "babel-loader": "catalog:", "css-loader": "~5.2.7", - "jest": "~29.3.1", - "react-dom": "~19.2.3", - "react": "~19.2.3", + "jest": "catalog:", + "react-dom": "catalog:", + "react": "catalog:", "style-loader": "~2.0.0", "terser-webpack-plugin": "~3.0.8", - "typescript": "~5.8.2", - "webpack": "~5.105.2", - "storybook": "~9.1.6", - "@testing-library/dom": "~7.21.4" + "typescript": "catalog:", + "webpack": "catalog:", + "storybook": "catalog:", + "@testing-library/dom": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-web-rig": "workspace:*" } } diff --git a/build-tests-samples/heft-storybook-v9-react-tutorial/package.json b/build-tests-samples/heft-storybook-v9-react-tutorial/package.json index 73511728e84..bd2482c97db 100644 --- a/build-tests-samples/heft-storybook-v9-react-tutorial/package.json +++ b/build-tests-samples/heft-storybook-v9-react-tutorial/package.json @@ -12,12 +12,12 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "react-dom": "~19.2.3", - "react": "~19.2.3", - "tslib": "~2.8.1" + "react-dom": "catalog:", + "react": "catalog:", + "tslib": "catalog:" }, "devDependencies": { - "@babel/core": "~7.20.0", + "@babel/core": "catalog:", "@rushstack/heft": "workspace:*", "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", @@ -25,24 +25,24 @@ "@rushstack/heft-typescript-plugin": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", "@rushstack/webpack5-module-minifier-plugin": "workspace:*", - "@storybook/react-webpack5": "~9.1.6", - "@storybook/react": "~9.1.6", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@types/webpack-env": "1.18.8", + "@storybook/react-webpack5": "catalog:", + "@storybook/react": "catalog:", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@types/webpack-env": "catalog:", "css-loader": "~5.2.7", - "eslint": "~9.37.0", + "eslint": "catalog:", "heft-storybook-v9-react-tutorial-storykit": "workspace:*", - "html-webpack-plugin": "~5.5.0", + "html-webpack-plugin": "catalog:", "local-eslint-config": "workspace:*", "source-map-loader": "~1.1.3", "style-loader": "~2.0.0", - "typescript": "~5.8.2", - "webpack": "~5.105.2", - "storybook": "~9.1.6", - "@testing-library/dom": "~7.21.4", + "typescript": "catalog:", + "webpack": "catalog:", + "storybook": "catalog:", + "@testing-library/dom": "catalog:", "@rushstack/module-minifier": "workspace:*", "@rushstack/node-core-library": "workspace:*" } diff --git a/build-tests-samples/heft-web-rig-app-tutorial/package.json b/build-tests-samples/heft-web-rig-app-tutorial/package.json index b9370f0dbe0..ecce01b2cae 100644 --- a/build-tests-samples/heft-web-rig-app-tutorial/package.json +++ b/build-tests-samples/heft-web-rig-app-tutorial/package.json @@ -11,17 +11,17 @@ }, "dependencies": { "heft-web-rig-library-tutorial": "workspace:*", - "react": "~19.2.3", - "react-dom": "~19.2.3", - "tslib": "~2.8.1" + "react": "catalog:", + "react-dom": "catalog:", + "tslib": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/heft-web-rig": "workspace:*", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*" } } diff --git a/build-tests-samples/heft-web-rig-library-tutorial/package.json b/build-tests-samples/heft-web-rig-library-tutorial/package.json index 593026c0aa8..e9b3dc1ba32 100644 --- a/build-tests-samples/heft-web-rig-library-tutorial/package.json +++ b/build-tests-samples/heft-web-rig-library-tutorial/package.json @@ -13,17 +13,17 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "react": "~19.2.3", - "react-dom": "~19.2.3", - "tslib": "~2.8.1" + "react": "catalog:", + "react-dom": "catalog:", + "tslib": "catalog:" }, "devDependencies": { "@rushstack/heft-web-rig": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/react-dom": "19.2.3", - "@types/react": "19.2.7", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/react-dom": "catalog:", + "@types/react": "catalog:", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*" } } diff --git a/build-tests-samples/heft-webpack-basic-tutorial/package.json b/build-tests-samples/heft-webpack-basic-tutorial/package.json index 9935de8db91..d04f166ae68 100644 --- a/build-tests-samples/heft-webpack-basic-tutorial/package.json +++ b/build-tests-samples/heft-webpack-basic-tutorial/package.json @@ -10,9 +10,9 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "react-dom": "~19.2.3", - "react": "~19.2.3", - "tslib": "~2.8.1" + "react-dom": "catalog:", + "react": "catalog:", + "tslib": "catalog:" }, "devDependencies": { "@rushstack/heft-jest-plugin": "workspace:*", @@ -20,17 +20,17 @@ "@rushstack/heft-typescript-plugin": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/jest": "30.0.0", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@types/webpack-env": "1.18.8", - "css-loader": "~6.6.0", - "eslint": "~9.37.0", - "html-webpack-plugin": "~5.5.0", + "@types/jest": "catalog:", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@types/webpack-env": "catalog:", + "css-loader": "catalog:", + "eslint": "catalog:", + "html-webpack-plugin": "catalog:", "local-eslint-config": "workspace:*", - "source-map-loader": "~3.0.1", - "style-loader": "~3.3.1", - "typescript": "~5.8.2", - "webpack": "~5.105.2" + "source-map-loader": "catalog:", + "style-loader": "catalog:", + "typescript": "catalog:", + "webpack": "catalog:" } } diff --git a/build-tests-samples/packlets-tutorial/package.json b/build-tests-samples/packlets-tutorial/package.json index 3aa2baa2241..0f50848f71f 100644 --- a/build-tests-samples/packlets-tutorial/package.json +++ b/build-tests-samples/packlets-tutorial/package.json @@ -14,8 +14,8 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "eslint": "~8.57.0", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests-subspace/rush-lib-test/package.json b/build-tests-subspace/rush-lib-test/package.json index 13104c9f069..42ad48656fb 100644 --- a/build-tests-subspace/rush-lib-test/package.json +++ b/build-tests-subspace/rush-lib-test/package.json @@ -15,7 +15,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "eslint": "~9.25.1", "local-node-rig": "workspace:*" }, diff --git a/build-tests-subspace/rush-sdk-test/package.json b/build-tests-subspace/rush-sdk-test/package.json index 1b1197952cc..a18a58b6ec7 100644 --- a/build-tests-subspace/rush-sdk-test/package.json +++ b/build-tests-subspace/rush-sdk-test/package.json @@ -15,7 +15,7 @@ "devDependencies": { "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "eslint": "~9.25.1", "local-node-rig": "workspace:*" }, diff --git a/build-tests-subspace/typescript-newest-test/package.json b/build-tests-subspace/typescript-newest-test/package.json index 42455e7ed18..401b3f9a86e 100644 --- a/build-tests-subspace/typescript-newest-test/package.json +++ b/build-tests-subspace/typescript-newest-test/package.json @@ -35,7 +35,7 @@ "@rushstack/heft": "workspace:*", "eslint": "~9.25.1", "local-node-rig": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" }, "dependenciesMeta": { "@rushstack/heft": { diff --git a/build-tests-subspace/typescript-v4-test/package.json b/build-tests-subspace/typescript-v4-test/package.json index 0da7a11deb1..61e477d4ef5 100644 --- a/build-tests-subspace/typescript-v4-test/package.json +++ b/build-tests-subspace/typescript-v4-test/package.json @@ -15,7 +15,7 @@ "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", "typescript": "~4.9.5", - "tslint": "~5.20.1", + "tslint": "catalog:", "eslint": "~9.25.1" }, "dependenciesMeta": { diff --git a/build-tests/api-documenter-scenarios/package.json b/build-tests/api-documenter-scenarios/package.json index 413243f376b..aa5cabe8055 100644 --- a/build-tests/api-documenter-scenarios/package.json +++ b/build-tests/api-documenter-scenarios/package.json @@ -28,7 +28,7 @@ "@microsoft/api-extractor": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", "run-scenarios-helpers": "workspace:*" } diff --git a/build-tests/api-documenter-test/package.json b/build-tests/api-documenter-test/package.json index 59890f2be8e..ce8818009cd 100644 --- a/build-tests/api-documenter-test/package.json +++ b/build-tests/api-documenter-test/package.json @@ -37,7 +37,7 @@ "@microsoft/api-extractor": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" } } diff --git a/build-tests/api-extractor-scenarios/package.json b/build-tests/api-extractor-scenarios/package.json index a0cd1de6461..fe44f4a39da 100644 --- a/build-tests/api-extractor-scenarios/package.json +++ b/build-tests/api-extractor-scenarios/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "@microsoft/api-extractor": "workspace:*", - "@microsoft/teams-js": "1.3.0-beta.4", + "@microsoft/teams-js": "catalog:", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", diff --git a/build-tests/api-extractor-test-01/package.json b/build-tests/api-extractor-test-01/package.json index cd5cf7c1792..010d54a3fd3 100644 --- a/build-tests/api-extractor-test-01/package.json +++ b/build-tests/api-extractor-test-01/package.json @@ -31,9 +31,9 @@ "_phase:build": "heft run --only build -- --clean" }, "dependencies": { - "@types/jest": "30.0.0", - "@types/long": "4.0.0", - "long": "^4.0.0" + "@types/jest": "catalog:", + "@types/long": "catalog:", + "long": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", diff --git a/build-tests/api-extractor-test-02/package.json b/build-tests/api-extractor-test-02/package.json index 3d702adf843..bee62bae067 100644 --- a/build-tests/api-extractor-test-02/package.json +++ b/build-tests/api-extractor-test-02/package.json @@ -31,10 +31,10 @@ "_phase:build": "heft run --only build -- --clean" }, "dependencies": { - "@types/long": "4.0.0", - "@types/semver": "7.7.1", + "@types/long": "catalog:", + "@types/semver": "catalog:", "api-extractor-test-01": "workspace:*", - "semver": "~7.7.4" + "semver": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", diff --git a/build-tests/eslint-7-11-test/package.json b/build-tests/eslint-7-11-test/package.json index 236aaa2169d..7ce6a454894 100644 --- a/build-tests/eslint-7-11-test/package.json +++ b/build-tests/eslint-7-11-test/package.json @@ -34,10 +34,10 @@ "devDependencies": { "@rushstack/eslint-config": "3.7.1", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "@typescript-eslint/parser": "~6.19.0", "eslint": "7.11.0", "local-node-rig": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/eslint-7-7-test/package.json b/build-tests/eslint-7-7-test/package.json index 33b4a44737c..d49bef93ca7 100644 --- a/build-tests/eslint-7-7-test/package.json +++ b/build-tests/eslint-7-7-test/package.json @@ -34,10 +34,10 @@ "devDependencies": { "@rushstack/eslint-config": "3.7.1", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "@typescript-eslint/parser": "~6.19.0", "eslint": "7.7.0", "local-node-rig": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/eslint-7-test/package.json b/build-tests/eslint-7-test/package.json index aebf9a26cac..ab934b7890e 100644 --- a/build-tests/eslint-7-test/package.json +++ b/build-tests/eslint-7-test/package.json @@ -34,10 +34,10 @@ "devDependencies": { "@rushstack/eslint-config": "3.7.1", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "@typescript-eslint/parser": "~6.19.0", "eslint": "~7.30.0", "local-node-rig": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/eslint-8-test/package.json b/build-tests/eslint-8-test/package.json index b431562561c..5a5d12bf453 100644 --- a/build-tests/eslint-8-test/package.json +++ b/build-tests/eslint-8-test/package.json @@ -34,10 +34,10 @@ "devDependencies": { "@rushstack/eslint-config": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", - "@typescript-eslint/parser": "~8.56.1", + "@types/node": "catalog:", + "@typescript-eslint/parser": "catalog:", "eslint": "~8.57.0", "local-node-rig": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/eslint-9-test/package.json b/build-tests/eslint-9-test/package.json index 085c1165292..ace0c08ef77 100644 --- a/build-tests/eslint-9-test/package.json +++ b/build-tests/eslint-9-test/package.json @@ -35,9 +35,9 @@ "devDependencies": { "@rushstack/heft": "workspace:*", "local-node-rig": "workspace:*", - "@types/node": "20.17.19", - "@typescript-eslint/parser": "~8.56.1", - "eslint": "~9.37.0", - "typescript": "~5.8.2" + "@types/node": "catalog:", + "@typescript-eslint/parser": "catalog:", + "eslint": "catalog:", + "typescript": "catalog:" } } diff --git a/build-tests/eslint-bulk-suppressions-test-flat/package.json b/build-tests/eslint-bulk-suppressions-test-flat/package.json index a3b74d88134..726388e9655 100644 --- a/build-tests/eslint-bulk-suppressions-test-flat/package.json +++ b/build-tests/eslint-bulk-suppressions-test-flat/package.json @@ -11,9 +11,9 @@ "@rushstack/eslint-patch": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "@typescript-eslint/parser": "~8.56.1", - "eslint": "~9.37.0", + "@typescript-eslint/parser": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/eslint-bulk-suppressions-test-legacy/package.json b/build-tests/eslint-bulk-suppressions-test-legacy/package.json index e848729288f..29caa65ffeb 100644 --- a/build-tests/eslint-bulk-suppressions-test-legacy/package.json +++ b/build-tests/eslint-bulk-suppressions-test-legacy/package.json @@ -12,11 +12,11 @@ "@rushstack/eslint-patch": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "@typescript-eslint/parser": "~8.56.1", + "@typescript-eslint/parser": "catalog:", "eslint": "~8.57.0", "eslint-8.23": "npm:eslint@8.23.1", "eslint-oldest": "npm:eslint@8.6.0", "local-node-rig": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/eslint-bulk-suppressions-test/package.json b/build-tests/eslint-bulk-suppressions-test/package.json index b5e8dec61db..505b9cad9f9 100644 --- a/build-tests/eslint-bulk-suppressions-test/package.json +++ b/build-tests/eslint-bulk-suppressions-test/package.json @@ -12,9 +12,9 @@ "@rushstack/eslint-patch": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "@typescript-eslint/parser": "~8.56.1", + "@typescript-eslint/parser": "catalog:", "eslint": "~8.57.0", "local-node-rig": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/esm-node-import-test/package.json b/build-tests/esm-node-import-test/package.json index 1420121453c..8f4d943aa8c 100644 --- a/build-tests/esm-node-import-test/package.json +++ b/build-tests/esm-node-import-test/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" } } diff --git a/build-tests/hashed-folder-copy-plugin-webpack5-test/package.json b/build-tests/hashed-folder-copy-plugin-webpack5-test/package.json index 3261d033cae..f801a89eba1 100644 --- a/build-tests/hashed-folder-copy-plugin-webpack5-test/package.json +++ b/build-tests/hashed-folder-copy-plugin-webpack5-test/package.json @@ -14,10 +14,10 @@ "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", - "@types/webpack-env": "1.18.8", - "html-webpack-plugin": "~5.5.0", - "typescript": "~5.8.2", - "webpack-bundle-analyzer": "~4.5.0", - "webpack": "~5.105.2" + "@types/webpack-env": "catalog:", + "html-webpack-plugin": "catalog:", + "typescript": "catalog:", + "webpack-bundle-analyzer": "catalog:", + "webpack": "catalog:" } } diff --git a/build-tests/heft-example-lifecycle-plugin/package.json b/build-tests/heft-example-lifecycle-plugin/package.json index 06fc79053ae..ed38d543dff 100644 --- a/build-tests/heft-example-lifecycle-plugin/package.json +++ b/build-tests/heft-example-lifecycle-plugin/package.json @@ -14,9 +14,9 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/heft-example-plugin-01/package.json b/build-tests/heft-example-plugin-01/package.json index 66e72848852..08106c29b9d 100644 --- a/build-tests/heft-example-plugin-01/package.json +++ b/build-tests/heft-example-plugin-01/package.json @@ -17,10 +17,10 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/node": "20.17.19", - "@types/tapable": "1.0.6", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "@types/tapable": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/heft-example-plugin-02/package.json b/build-tests/heft-example-plugin-02/package.json index 9f8a6da74cc..82e4e84712c 100644 --- a/build-tests/heft-example-plugin-02/package.json +++ b/build-tests/heft-example-plugin-02/package.json @@ -22,10 +22,10 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "heft-example-plugin-01": "workspace:*", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/heft-fastify-test/package.json b/build-tests/heft-fastify-test/package.json index 4d5f783758d..1ac4aaf7207 100644 --- a/build-tests/heft-fastify-test/package.json +++ b/build-tests/heft-fastify-test/package.json @@ -15,13 +15,13 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" }, "dependencies": { - "fastify": "~3.16.1" + "fastify": "catalog:" } } diff --git a/build-tests/heft-jest-preset-test/package.json b/build-tests/heft-jest-preset-test/package.json index d96626daeba..14d6832e037 100644 --- a/build-tests/heft-jest-preset-test/package.json +++ b/build-tests/heft-jest-preset-test/package.json @@ -10,14 +10,14 @@ "_phase:test": "heft run --only test -- --clean && node ./config/verify-coverage.js" }, "devDependencies": { - "@jest/types": "30.3.0", + "@jest/types": "catalog:", "@rushstack/heft": "workspace:*", "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/heft-jest-reporters-test/package.json b/build-tests/heft-jest-reporters-test/package.json index 11156f770fc..fdb09686c68 100644 --- a/build-tests/heft-jest-reporters-test/package.json +++ b/build-tests/heft-jest-reporters-test/package.json @@ -10,16 +10,16 @@ "_phase:test": "heft run --only test -- --clean" }, "devDependencies": { - "@jest/reporters": "~30.3.0", - "@jest/types": "30.3.0", + "@jest/reporters": "catalog:", + "@jest/types": "catalog:", "@rushstack/heft": "workspace:*", "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/heft-json-schema-typings-plugin-test/package.json b/build-tests/heft-json-schema-typings-plugin-test/package.json index 5b36aa15f14..3a40a65ecab 100644 --- a/build-tests/heft-json-schema-typings-plugin-test/package.json +++ b/build-tests/heft-json-schema-typings-plugin-test/package.json @@ -13,7 +13,7 @@ "@rushstack/heft-json-schema-typings-plugin": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/build-tests/heft-minimal-rig-test/package.json b/build-tests/heft-minimal-rig-test/package.json index 8b4c68d9859..c431524ff24 100644 --- a/build-tests/heft-minimal-rig-test/package.json +++ b/build-tests/heft-minimal-rig-test/package.json @@ -9,7 +9,7 @@ "_phase:build": "" }, "dependencies": { - "typescript": "~5.8.2", + "typescript": "catalog:", "@microsoft/api-extractor": "workspace:*", "@rushstack/heft-api-extractor-plugin": "workspace:*", "@rushstack/heft-jest-plugin": "workspace:*", diff --git a/build-tests/heft-minimal-rig-usage-test/package.json b/build-tests/heft-minimal-rig-usage-test/package.json index 645bf2f314b..e72ad6bf7a8 100644 --- a/build-tests/heft-minimal-rig-usage-test/package.json +++ b/build-tests/heft-minimal-rig-usage-test/package.json @@ -12,8 +12,8 @@ "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/heft-jest-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", + "@types/jest": "catalog:", + "@types/node": "catalog:", "heft-minimal-rig-test": "workspace:*" } } diff --git a/build-tests/heft-node-everything-esm-module-test/package.json b/build-tests/heft-node-everything-esm-module-test/package.json index d5047720980..d8ac5f314bf 100644 --- a/build-tests/heft-node-everything-esm-module-test/package.json +++ b/build-tests/heft-node-everything-esm-module-test/package.json @@ -19,13 +19,13 @@ "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-static-asset-typings-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", "heft-example-plugin-01": "workspace:*", "heft-example-plugin-02": "workspace:*", "local-eslint-config": "workspace:*", - "tslint": "~5.20.1", - "typescript": "~5.8.2" + "tslint": "catalog:", + "typescript": "catalog:" } } diff --git a/build-tests/heft-node-everything-test/package.json b/build-tests/heft-node-everything-test/package.json index c3f7da1fe32..10d9a7ac8aa 100644 --- a/build-tests/heft-node-everything-test/package.json +++ b/build-tests/heft-node-everything-test/package.json @@ -20,14 +20,14 @@ "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", "heft-example-lifecycle-plugin": "workspace:*", "heft-example-plugin-01": "workspace:*", "heft-example-plugin-02": "workspace:*", "local-eslint-config": "workspace:*", - "tslint": "~5.20.1", - "typescript": "~5.8.2" + "tslint": "catalog:", + "typescript": "catalog:" } } diff --git a/build-tests/heft-parameter-plugin-test/package.json b/build-tests/heft-parameter-plugin-test/package.json index 32e408f7aab..1b46daaaec4 100644 --- a/build-tests/heft-parameter-plugin-test/package.json +++ b/build-tests/heft-parameter-plugin-test/package.json @@ -15,9 +15,9 @@ "@rushstack/heft-typescript-plugin": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", + "@types/jest": "catalog:", + "@types/node": "catalog:", "heft-parameter-plugin": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/heft-parameter-plugin/package.json b/build-tests/heft-parameter-plugin/package.json index a6f8ca86524..99d139d564f 100644 --- a/build-tests/heft-parameter-plugin/package.json +++ b/build-tests/heft-parameter-plugin/package.json @@ -13,10 +13,10 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" }, "dependencies": { "@rushstack/node-core-library": "workspace:*" diff --git a/build-tests/heft-rspack-everything-test/package.json b/build-tests/heft-rspack-everything-test/package.json index 62e05f4e2ab..6bfc99b54fa 100644 --- a/build-tests/heft-rspack-everything-test/package.json +++ b/build-tests/heft-rspack-everything-test/package.json @@ -20,11 +20,11 @@ "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-sdk": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2", - "@rspack/core": "~1.6.0-beta.0" + "typescript": "catalog:", + "@rspack/core": "catalog:" } } diff --git a/build-tests/heft-sass-test/package.json b/build-tests/heft-sass-test/package.json index 02d9fe4395b..6f785469383 100644 --- a/build-tests/heft-sass-test/package.json +++ b/build-tests/heft-sass-test/package.json @@ -19,24 +19,24 @@ "@rushstack/heft-webpack4-plugin": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/webpack4-module-minifier-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "@types/react-dom": "19.2.3", - "@types/react": "19.2.7", - "@types/webpack-env": "1.18.8", - "autoprefixer": "~10.4.2", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "@types/react-dom": "catalog:", + "@types/react": "catalog:", + "@types/webpack-env": "catalog:", + "autoprefixer": "catalog:", "css-loader": "~5.2.7", - "eslint": "~9.37.0", + "eslint": "catalog:", "html-webpack-plugin": "~4.5.2", "postcss-loader": "~4.1.0", - "postcss": "~8.5.10", - "react-dom": "~19.2.3", - "react": "~19.2.3", + "postcss": "catalog:", + "react-dom": "catalog:", + "react": "catalog:", "style-loader": "~2.0.0", - "typescript": "~5.8.2", + "typescript": "catalog:", "webpack": "~4.47.0" }, "dependencies": { - "buttono": "~1.0.2" + "buttono": "catalog:" } } diff --git a/build-tests/heft-swc-test/package.json b/build-tests/heft-swc-test/package.json index 807350604ae..28e3de74c6e 100644 --- a/build-tests/heft-swc-test/package.json +++ b/build-tests/heft-swc-test/package.json @@ -17,10 +17,10 @@ "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "typescript": "~5.8.2" + "typescript": "catalog:" } } diff --git a/build-tests/heft-typescript-composite-test/package.json b/build-tests/heft-typescript-composite-test/package.json index fe878efcf44..2478134e8ca 100644 --- a/build-tests/heft-typescript-composite-test/package.json +++ b/build-tests/heft-typescript-composite-test/package.json @@ -14,11 +14,11 @@ "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/jest": "catalog:", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "local-eslint-config": "workspace:*", - "tslint": "~5.20.1", - "typescript": "~5.8.2" + "tslint": "catalog:", + "typescript": "catalog:" } } diff --git a/build-tests/heft-typescript-v2-test/package.json b/build-tests/heft-typescript-v2-test/package.json index 2f8e7b572e5..455af237348 100644 --- a/build-tests/heft-typescript-v2-test/package.json +++ b/build-tests/heft-typescript-v2-test/package.json @@ -19,7 +19,7 @@ "@rushstack/heft-typescript-plugin": "workspace:*", "@types/jest": "ts2.9", "@types/node": "ts2.9", - "tslint": "~5.20.1", + "tslint": "catalog:", "typescript": "~2.9.2" } } diff --git a/build-tests/heft-typescript-v3-test/package.json b/build-tests/heft-typescript-v3-test/package.json index 8f8fb7a56e1..c4f31927743 100644 --- a/build-tests/heft-typescript-v3-test/package.json +++ b/build-tests/heft-typescript-v3-test/package.json @@ -19,7 +19,7 @@ "@rushstack/heft-typescript-plugin": "workspace:*", "@types/jest": "ts3.9", "@types/node": "ts3.9", - "tslint": "~5.20.1", + "tslint": "catalog:", "typescript": "~3.9.10" } } diff --git a/build-tests/heft-typescript-v4-test/package.json b/build-tests/heft-typescript-v4-test/package.json index c83bc2fab3f..e602a7e4a50 100644 --- a/build-tests/heft-typescript-v4-test/package.json +++ b/build-tests/heft-typescript-v4-test/package.json @@ -22,7 +22,7 @@ "@types/jest": "ts4.9", "@types/node": "ts4.9", "eslint": "~8.57.0", - "tslint": "~5.20.1", + "tslint": "catalog:", "typescript": "~4.9.5" } } diff --git a/build-tests/heft-web-rig-library-test/package.json b/build-tests/heft-web-rig-library-test/package.json index 037696daccd..bfa71708ed5 100644 --- a/build-tests/heft-web-rig-library-test/package.json +++ b/build-tests/heft-web-rig-library-test/package.json @@ -13,6 +13,6 @@ "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/heft-web-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" } } diff --git a/build-tests/heft-webpack4-everything-test/package.json b/build-tests/heft-webpack4-everything-test/package.json index 9e17f24f09b..f66b068c3ee 100644 --- a/build-tests/heft-webpack4-everything-test/package.json +++ b/build-tests/heft-webpack4-everything-test/package.json @@ -20,15 +20,15 @@ "@rushstack/module-minifier": "workspace:*", "@rushstack/node-core-library": "workspace:*", "@rushstack/webpack4-module-minifier-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", - "file-loader": "~6.0.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", + "file-loader": "catalog:", "local-eslint-config": "workspace:*", "source-map-loader": "~1.1.3", - "tslint": "~5.20.1", - "typescript": "~5.8.2", + "tslint": "catalog:", + "typescript": "catalog:", "webpack": "~4.47.0" } } diff --git a/build-tests/heft-webpack5-everything-test/package.json b/build-tests/heft-webpack5-everything-test/package.json index 61ef576df2e..3f7a7409ba4 100644 --- a/build-tests/heft-webpack5-everything-test/package.json +++ b/build-tests/heft-webpack5-everything-test/package.json @@ -23,15 +23,15 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-sdk": "workspace:*", "@rushstack/webpack5-module-minifier-plugin": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", - "html-webpack-plugin": "~5.5.0", + "@types/jest": "catalog:", + "@types/node": "catalog:", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", + "html-webpack-plugin": "catalog:", "local-eslint-config": "workspace:*", - "source-map-loader": "~3.0.1", - "tslint": "~5.20.1", - "typescript": "~5.8.2", - "webpack": "~5.105.2" + "source-map-loader": "catalog:", + "tslint": "catalog:", + "typescript": "catalog:", + "webpack": "catalog:" } } diff --git a/build-tests/localization-plugin-test-01/package.json b/build-tests/localization-plugin-test-01/package.json index 0543b91625f..3e787efe655 100644 --- a/build-tests/localization-plugin-test-01/package.json +++ b/build-tests/localization-plugin-test-01/package.json @@ -14,12 +14,12 @@ "@rushstack/set-webpack-public-path-plugin": "^4.1.16", "@rushstack/webpack4-localization-plugin": "workspace:*", "@rushstack/webpack4-module-minifier-plugin": "workspace:*", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "html-webpack-plugin": "~4.5.2", "local-node-rig": "workspace:*", "webpack": "~4.47.0", - "webpack-bundle-analyzer": "~4.5.0", + "webpack-bundle-analyzer": "catalog:", "webpack-dev-server": "~4.9.3" }, "exports": { diff --git a/build-tests/localization-plugin-test-02/package.json b/build-tests/localization-plugin-test-02/package.json index 5fdc6e99a5d..5880b662b78 100644 --- a/build-tests/localization-plugin-test-02/package.json +++ b/build-tests/localization-plugin-test-02/package.json @@ -15,12 +15,12 @@ "@rushstack/set-webpack-public-path-plugin": "^4.1.16", "@rushstack/webpack4-localization-plugin": "workspace:*", "@rushstack/webpack4-module-minifier-plugin": "workspace:*", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "html-webpack-plugin": "~4.5.2", "local-node-rig": "workspace:*", "webpack": "~4.47.0", - "webpack-bundle-analyzer": "~4.5.0", + "webpack-bundle-analyzer": "catalog:", "webpack-dev-server": "~4.9.3" }, "exports": { diff --git a/build-tests/localization-plugin-test-03/package.json b/build-tests/localization-plugin-test-03/package.json index aee6c5bff74..e428d0de334 100644 --- a/build-tests/localization-plugin-test-03/package.json +++ b/build-tests/localization-plugin-test-03/package.json @@ -15,14 +15,14 @@ "@rushstack/set-webpack-public-path-plugin": "^4.1.16", "@rushstack/webpack4-localization-plugin": "workspace:*", "@rushstack/webpack4-module-minifier-plugin": "workspace:*", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "html-webpack-plugin": "~4.5.2", "local-node-rig": "workspace:*", - "ts-loader": "6.0.0", - "typescript": "~5.8.2", + "ts-loader": "catalog:", + "typescript": "catalog:", "webpack": "~4.47.0", - "webpack-bundle-analyzer": "~4.5.0", + "webpack-bundle-analyzer": "catalog:", "webpack-dev-server": "~4.9.3" }, "exports": { diff --git a/build-tests/package-extractor-test-01/package.json b/build-tests/package-extractor-test-01/package.json index 0868658e9d2..1c16413681e 100644 --- a/build-tests/package-extractor-test-01/package.json +++ b/build-tests/package-extractor-test-01/package.json @@ -11,6 +11,6 @@ }, "devDependencies": { "package-extractor-test-03": "workspace:*", - "@types/node": "20.17.19" + "@types/node": "catalog:" } } diff --git a/build-tests/run-scenarios-helpers/package.json b/build-tests/run-scenarios-helpers/package.json index 0ecf9ea3efc..5918966cf1c 100644 --- a/build-tests/run-scenarios-helpers/package.json +++ b/build-tests/run-scenarios-helpers/package.json @@ -32,7 +32,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "dependencies": { diff --git a/build-tests/rush-amazon-s3-build-cache-plugin-integration-test/package.json b/build-tests/rush-amazon-s3-build-cache-plugin-integration-test/package.json index 8318c777711..004697265a2 100644 --- a/build-tests/rush-amazon-s3-build-cache-plugin-integration-test/package.json +++ b/build-tests/rush-amazon-s3-build-cache-plugin-integration-test/package.json @@ -16,10 +16,10 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-amazon-s3-build-cache-plugin": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/http-proxy": "~1.17.8", - "@types/node": "20.17.19", - "eslint": "~9.37.0", - "http-proxy": "~1.18.1", + "@types/http-proxy": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", + "http-proxy": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/build-tests/rush-lib-declaration-paths-test/package.json b/build-tests/rush-lib-declaration-paths-test/package.json index d5fe4b307b3..449216cc074 100644 --- a/build-tests/rush-lib-declaration-paths-test/package.json +++ b/build-tests/rush-lib-declaration-paths-test/package.json @@ -13,8 +13,8 @@ "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/build-tests/rush-project-change-analyzer-test/package.json b/build-tests/rush-project-change-analyzer-test/package.json index eed4151ea5d..8b42063c7cc 100644 --- a/build-tests/rush-project-change-analyzer-test/package.json +++ b/build-tests/rush-project-change-analyzer-test/package.json @@ -15,8 +15,8 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/build-tests/rush-redis-cobuild-plugin-integration-test/package.json b/build-tests/rush-redis-cobuild-plugin-integration-test/package.json index d444fec1651..2e52e4cd7a3 100644 --- a/build-tests/rush-redis-cobuild-plugin-integration-test/package.json +++ b/build-tests/rush-redis-cobuild-plugin-integration-test/package.json @@ -15,10 +15,10 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-redis-cobuild-plugin": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/http-proxy": "~1.17.8", - "@types/node": "20.17.19", - "eslint": "~9.37.0", - "http-proxy": "~1.18.1", + "@types/http-proxy": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", + "http-proxy": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/build-tests/rushd-wire-e2e-test/package.json b/build-tests/rushd-wire-e2e-test/package.json index 43e086562f4..f00bf59fab0 100644 --- a/build-tests/rushd-wire-e2e-test/package.json +++ b/build-tests/rushd-wire-e2e-test/package.json @@ -17,7 +17,7 @@ "@rushstack/rush-daemon-transport": "workspace:*", "@rushstack/rush-terminal-renderer": "workspace:*", "@rushstack/terminal": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" } } diff --git a/build-tests/set-webpack-public-path-plugin-test/package.json b/build-tests/set-webpack-public-path-plugin-test/package.json index ad22692b7c5..4c4913b076c 100644 --- a/build-tests/set-webpack-public-path-plugin-test/package.json +++ b/build-tests/set-webpack-public-path-plugin-test/package.json @@ -16,10 +16,10 @@ "@rushstack/module-minifier": "workspace:*", "@rushstack/set-webpack-public-path-plugin": "workspace:*", "@rushstack/webpack5-module-minifier-plugin": "workspace:*", - "@types/webpack-env": "1.18.8", + "@types/webpack-env": "catalog:", "eslint": "~8.57.0", - "html-webpack-plugin": "~5.5.0", - "typescript": "~5.8.2", - "webpack": "~5.105.2" + "html-webpack-plugin": "catalog:", + "typescript": "catalog:", + "webpack": "catalog:" } } diff --git a/build-tests/webpack-local-version-test/package.json b/build-tests/webpack-local-version-test/package.json index c77095bd4d5..edb30959824 100644 --- a/build-tests/webpack-local-version-test/package.json +++ b/build-tests/webpack-local-version-test/package.json @@ -13,10 +13,10 @@ "@rushstack/heft-typescript-plugin": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/webpack-env": "1.18.8", + "@types/webpack-env": "catalog:", "eslint": "~9.25.1", - "html-webpack-plugin": "~5.5.0", - "typescript": "~5.8.2", + "html-webpack-plugin": "catalog:", + "typescript": "catalog:", "webpack": "~5.105.0" } } diff --git a/common/changes/@microsoft/api-documenter/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@microsoft/api-documenter/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..97858bb2952 --- /dev/null +++ b/common/changes/@microsoft/api-documenter/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/api-documenter" + } + ], + "packageName": "@microsoft/api-documenter", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@microsoft/api-extractor-model/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@microsoft/api-extractor-model/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..ed19098e6c8 --- /dev/null +++ b/common/changes/@microsoft/api-extractor-model/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/api-extractor-model" + } + ], + "packageName": "@microsoft/api-extractor-model", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@microsoft/api-extractor-model/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@microsoft/api-extractor-model/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..73df3ad8c38 --- /dev/null +++ b/common/changes/@microsoft/api-extractor-model/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/api-extractor-model" + } + ], + "packageName": "@microsoft/api-extractor-model", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@microsoft/api-extractor/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@microsoft/api-extractor/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..c3ea4eadf11 --- /dev/null +++ b/common/changes/@microsoft/api-extractor/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/api-extractor" + } + ], + "packageName": "@microsoft/api-extractor", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@microsoft/api-extractor/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@microsoft/api-extractor/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..4c3de9ac036 --- /dev/null +++ b/common/changes/@microsoft/api-extractor/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/api-extractor" + } + ], + "packageName": "@microsoft/api-extractor", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@microsoft/load-themed-styles/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@microsoft/load-themed-styles/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..ee4bbd1d535 --- /dev/null +++ b/common/changes/@microsoft/load-themed-styles/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/load-themed-styles" + } + ], + "packageName": "@microsoft/load-themed-styles", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@microsoft/loader-load-themed-styles/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@microsoft/loader-load-themed-styles/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..fc9609bf717 --- /dev/null +++ b/common/changes/@microsoft/loader-load-themed-styles/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/loader-load-themed-styles" + } + ], + "packageName": "@microsoft/loader-load-themed-styles", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@microsoft/rush/bmiddha-catalog-aware-preferred-versions_2026-10-13-01-00.json b/common/changes/@microsoft/rush/bmiddha-catalog-aware-preferred-versions_2026-10-13-01-00.json new file mode 100644 index 00000000000..470636089e8 --- /dev/null +++ b/common/changes/@microsoft/rush/bmiddha-catalog-aware-preferred-versions_2026-10-13-01-00.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Resolve PNPM catalog references (such as \"catalog:\" or \"catalog:tools\") to the catalog versions when Rush calculates implicitly preferred versions. This fixes a \"TypeError: Invalid comparator\" crash in \"rush install\" when a package in the \"preferredVersions\" of common-versions.json is referenced through a catalog, and restores the narrowing of transitive dependency ranges for those packages. \"rush install\" also no longer crashes when a preferred version can't be compared as a SemVer range.", + "type": "patch" + } + ], + "packageName": "@microsoft/rush", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@microsoft/rush/bmiddha-catalog-aware-rush-add_2026-10-14-20-37.json b/common/changes/@microsoft/rush/bmiddha-catalog-aware-rush-add_2026-10-14-20-37.json new file mode 100644 index 00000000000..ccf48f8a0f7 --- /dev/null +++ b/common/changes/@microsoft/rush/bmiddha-catalog-aware-rush-add_2026-10-14-20-37.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Make \"rush add\" and \"rush upgrade-interactive\" aware of PNPM catalogs. \"rush add\" now writes a catalog reference (such as \"catalog:\" or \"catalog:tools\") instead of a version when a catalog of the project's subspace has an entry for the package that matches the requested version (or when no version is specified), and accepts explicit catalog references such as \"rush add -p example@catalog:tools\". With \"--make-consistent\", the catalog entry in pnpm-config.json is updated instead of replacing catalog references with versions. A project's existing catalog reference is never replaced with a version. \"rush upgrade-interactive\" now lists dependencies that are referenced through a catalog, and upgrades them by updating the catalog entry. When the updated pnpm-config.json is shared with other subspaces, Rush prints the \"rush update --subspace\" commands that are needed to update their shrinkwrap files.", + "type": "minor" + } + ], + "packageName": "@microsoft/rush", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@microsoft/rush/bmiddha-catalog-aware-version-checks_2026-10-14-00-00.json b/common/changes/@microsoft/rush/bmiddha-catalog-aware-version-checks_2026-10-14-00-00.json new file mode 100644 index 00000000000..aa380bf66a2 --- /dev/null +++ b/common/changes/@microsoft/rush/bmiddha-catalog-aware-version-checks_2026-10-14-00-00.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Make version consistency checks (\"rush check\", \"ensureConsistentVersions\", and \"--make-consistent\") aware of PNPM catalog references. A \"catalog:\" or \"catalog:\" specifier is now compared using the version that it resolves to in the catalogs of the project's subspace, so it is no longer reported as inconsistent with the same literal version or with \"preferredVersions\". \"rush check\" annotates versions that come from a catalog, and \"rush check --json\" adds an optional \"catalogReferences\" field. \"--make-consistent\" no longer replaces catalog references in other projects with literal versions.", + "type": "patch" + } + ], + "packageName": "@microsoft/rush", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@microsoft/rush/bmiddha-catalog-config-fallback_2026-10-13-00-00.json b/common/changes/@microsoft/rush/bmiddha-catalog-config-fallback_2026-10-13-00-00.json new file mode 100644 index 00000000000..0007288af03 --- /dev/null +++ b/common/changes/@microsoft/rush/bmiddha-catalog-config-fallback_2026-10-13-00-00.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Fix PNPM catalog handling for subspaces that do not have their own pnpm-config.json. The repo-state.json catalog hash, catalog change detection, and the \"rush-pnpm update\" catalog sync now use common/config/rush/pnpm-config.json as a fallback, the same way \"rush install\" does. When the catalogs in a pnpm-config.json shared by several subspaces are synced, entries are only added or updated, and Rush lists the other subspaces that need \"rush update\".", + "type": "patch" + } + ], + "packageName": "@microsoft/rush", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@microsoft/rush/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@microsoft/rush/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..a4e9a181a50 --- /dev/null +++ b/common/changes/@microsoft/rush/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/rush" + } + ], + "packageName": "@microsoft/rush", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@microsoft/rush/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-28.json b/common/changes/@microsoft/rush/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-28.json new file mode 100644 index 00000000000..8fcfc4579f7 --- /dev/null +++ b/common/changes/@microsoft/rush/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-28.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Resolve PNPM \"catalog:\" references in the manifests of projects that are injected from other subspaces, using the catalogs of the subspace that contains each project, because PNPM only resolves catalog references for the projects of its own workspace.", + "type": "patch" + } + ], + "packageName": "@microsoft/rush", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@microsoft/rush/pnpm12-injected-frozen-lockfile_2026-10-14-18-22.json b/common/changes/@microsoft/rush/pnpm12-injected-frozen-lockfile_2026-10-14-18-22.json new file mode 100644 index 00000000000..19aa02ea93d --- /dev/null +++ b/common/changes/@microsoft/rush/pnpm12-injected-frozen-lockfile_2026-10-14-18-22.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Use \"--prefer-frozen-lockfile\" instead of \"--frozen-lockfile\" for \"rush install\" with PNPM 12 or newer when a subspace has injected workspace dependencies, because native PNPM's frozen lockfile check rejects injected workspace dependencies outside the PNPM workspace root.", + "type": "patch" + } + ], + "packageName": "@microsoft/rush", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@microsoft/webpack5-load-themed-styles-loader/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@microsoft/webpack5-load-themed-styles-loader/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..a372ffd154d --- /dev/null +++ b/common/changes/@microsoft/webpack5-load-themed-styles-loader/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@microsoft/webpack5-load-themed-styles-loader" + } + ], + "packageName": "@microsoft/webpack5-load-themed-styles-loader", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/cpu-profile-summarizer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/cpu-profile-summarizer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..9bf0008da3b --- /dev/null +++ b/common/changes/@rushstack/cpu-profile-summarizer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/cpu-profile-summarizer" + } + ], + "packageName": "@rushstack/cpu-profile-summarizer", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/credential-cache/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/credential-cache/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..6f65eba3338 --- /dev/null +++ b/common/changes/@rushstack/credential-cache/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/credential-cache" + } + ], + "packageName": "@rushstack/credential-cache", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/debug-certificate-manager/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/debug-certificate-manager/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..065e12877a9 --- /dev/null +++ b/common/changes/@rushstack/debug-certificate-manager/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/debug-certificate-manager" + } + ], + "packageName": "@rushstack/debug-certificate-manager", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-bulk/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/eslint-bulk/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..bfaf07c6bac --- /dev/null +++ b/common/changes/@rushstack/eslint-bulk/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-bulk" + } + ], + "packageName": "@rushstack/eslint-bulk", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-config/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/eslint-config/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..01f6fd829e5 --- /dev/null +++ b/common/changes/@rushstack/eslint-config/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-config" + } + ], + "packageName": "@rushstack/eslint-config", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-config/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/eslint-config/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..03fed369eb9 --- /dev/null +++ b/common/changes/@rushstack/eslint-config/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-config" + } + ], + "packageName": "@rushstack/eslint-config", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/eslint-patch/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/eslint-patch/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..b5e98c9a135 --- /dev/null +++ b/common/changes/@rushstack/eslint-patch/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-patch" + } + ], + "packageName": "@rushstack/eslint-patch", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin-packlets/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/eslint-plugin-packlets/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..1c6d0516981 --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin-packlets/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin-packlets" + } + ], + "packageName": "@rushstack/eslint-plugin-packlets", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin-packlets/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/eslint-plugin-packlets/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..7767dc2b903 --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin-packlets/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin-packlets" + } + ], + "packageName": "@rushstack/eslint-plugin-packlets", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/eslint-plugin-security/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/eslint-plugin-security/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..bc445e4d35a --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin-security/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin-security" + } + ], + "packageName": "@rushstack/eslint-plugin-security", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin-security/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/eslint-plugin-security/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..3f286ab9a14 --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin-security/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin-security" + } + ], + "packageName": "@rushstack/eslint-plugin-security", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/eslint-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/eslint-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..b170c23b701 --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin" + } + ], + "packageName": "@rushstack/eslint-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/eslint-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..fab2ae647d1 --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin" + } + ], + "packageName": "@rushstack/eslint-plugin", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/hashed-folder-copy-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/hashed-folder-copy-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..ff18c3381da --- /dev/null +++ b/common/changes/@rushstack/hashed-folder-copy-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/hashed-folder-copy-plugin" + } + ], + "packageName": "@rushstack/hashed-folder-copy-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-api-extractor-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-api-extractor-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..eeeb345503a --- /dev/null +++ b/common/changes/@rushstack/heft-api-extractor-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-api-extractor-plugin" + } + ], + "packageName": "@rushstack/heft-api-extractor-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-api-extractor-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/heft-api-extractor-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..6dd82f1f27a --- /dev/null +++ b/common/changes/@rushstack/heft-api-extractor-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-api-extractor-plugin" + } + ], + "packageName": "@rushstack/heft-api-extractor-plugin", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/heft-config-file/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-config-file/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..f7ecbac3c81 --- /dev/null +++ b/common/changes/@rushstack/heft-config-file/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-config-file" + } + ], + "packageName": "@rushstack/heft-config-file", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-config-file/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/heft-config-file/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..e9126567187 --- /dev/null +++ b/common/changes/@rushstack/heft-config-file/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-config-file" + } + ], + "packageName": "@rushstack/heft-config-file", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/heft-dev-cert-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-dev-cert-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..bbc4de3133a --- /dev/null +++ b/common/changes/@rushstack/heft-dev-cert-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-dev-cert-plugin" + } + ], + "packageName": "@rushstack/heft-dev-cert-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-isolated-typescript-transpile-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-isolated-typescript-transpile-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..c1fadea2333 --- /dev/null +++ b/common/changes/@rushstack/heft-isolated-typescript-transpile-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-isolated-typescript-transpile-plugin" + } + ], + "packageName": "@rushstack/heft-isolated-typescript-transpile-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-jest-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-jest-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..642d17be188 --- /dev/null +++ b/common/changes/@rushstack/heft-jest-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-jest-plugin" + } + ], + "packageName": "@rushstack/heft-jest-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-jest-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/heft-jest-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..c1394a0a830 --- /dev/null +++ b/common/changes/@rushstack/heft-jest-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-jest-plugin" + } + ], + "packageName": "@rushstack/heft-jest-plugin", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/heft-json-schema-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-json-schema-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..4fef192ab20 --- /dev/null +++ b/common/changes/@rushstack/heft-json-schema-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-json-schema-typings-plugin" + } + ], + "packageName": "@rushstack/heft-json-schema-typings-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-lint-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-lint-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..bd90fab6ae9 --- /dev/null +++ b/common/changes/@rushstack/heft-lint-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-lint-plugin" + } + ], + "packageName": "@rushstack/heft-lint-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-lint-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/heft-lint-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..81e781833d4 --- /dev/null +++ b/common/changes/@rushstack/heft-lint-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-lint-plugin" + } + ], + "packageName": "@rushstack/heft-lint-plugin", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/heft-localization-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-localization-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..2045ac0f51d --- /dev/null +++ b/common/changes/@rushstack/heft-localization-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-localization-typings-plugin" + } + ], + "packageName": "@rushstack/heft-localization-typings-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-node-rig/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/heft-node-rig/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..ec1c0a8f773 --- /dev/null +++ b/common/changes/@rushstack/heft-node-rig/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-node-rig" + } + ], + "packageName": "@rushstack/heft-node-rig", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/heft-rspack-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-rspack-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..4475c2277e1 --- /dev/null +++ b/common/changes/@rushstack/heft-rspack-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-rspack-plugin" + } + ], + "packageName": "@rushstack/heft-rspack-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-sass-load-themed-styles-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-sass-load-themed-styles-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..1752e942d83 --- /dev/null +++ b/common/changes/@rushstack/heft-sass-load-themed-styles-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-sass-load-themed-styles-plugin" + } + ], + "packageName": "@rushstack/heft-sass-load-themed-styles-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-sass-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-sass-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..c27e4531349 --- /dev/null +++ b/common/changes/@rushstack/heft-sass-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-sass-plugin" + } + ], + "packageName": "@rushstack/heft-sass-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-serverless-stack-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-serverless-stack-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..45e7e357d74 --- /dev/null +++ b/common/changes/@rushstack/heft-serverless-stack-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-serverless-stack-plugin" + } + ], + "packageName": "@rushstack/heft-serverless-stack-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-static-asset-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-static-asset-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..1c939c3b6fa --- /dev/null +++ b/common/changes/@rushstack/heft-static-asset-typings-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-static-asset-typings-plugin" + } + ], + "packageName": "@rushstack/heft-static-asset-typings-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-storybook-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-storybook-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..c692ceed297 --- /dev/null +++ b/common/changes/@rushstack/heft-storybook-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-storybook-plugin" + } + ], + "packageName": "@rushstack/heft-storybook-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-typescript-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-typescript-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..682f718f228 --- /dev/null +++ b/common/changes/@rushstack/heft-typescript-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-typescript-plugin" + } + ], + "packageName": "@rushstack/heft-typescript-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-typescript-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/heft-typescript-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..541c0827f1c --- /dev/null +++ b/common/changes/@rushstack/heft-typescript-plugin/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-typescript-plugin" + } + ], + "packageName": "@rushstack/heft-typescript-plugin", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/heft-vscode-extension-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft-vscode-extension-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..63792070eda --- /dev/null +++ b/common/changes/@rushstack/heft-vscode-extension-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-vscode-extension-plugin" + } + ], + "packageName": "@rushstack/heft-vscode-extension-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-vscode-extension-rig/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/heft-vscode-extension-rig/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..fb2c5ab1274 --- /dev/null +++ b/common/changes/@rushstack/heft-vscode-extension-rig/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-vscode-extension-rig" + } + ], + "packageName": "@rushstack/heft-vscode-extension-rig", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-web-rig/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/heft-web-rig/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..f659c98e331 --- /dev/null +++ b/common/changes/@rushstack/heft-web-rig/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-web-rig" + } + ], + "packageName": "@rushstack/heft-web-rig", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-webpack4-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/heft-webpack4-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..3a5ea6aaf58 --- /dev/null +++ b/common/changes/@rushstack/heft-webpack4-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-webpack4-plugin" + } + ], + "packageName": "@rushstack/heft-webpack4-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft-webpack5-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/heft-webpack5-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..04c9ed1cd67 --- /dev/null +++ b/common/changes/@rushstack/heft-webpack5-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft-webpack5-plugin" + } + ], + "packageName": "@rushstack/heft-webpack5-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json b/common/changes/@rushstack/heft/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json new file mode 100644 index 00000000000..954de14871b --- /dev/null +++ b/common/changes/@rushstack/heft/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-15.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft" + } + ], + "packageName": "@rushstack/heft", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/heft/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/heft/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..7295d41cec8 --- /dev/null +++ b/common/changes/@rushstack/heft/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/heft" + } + ], + "packageName": "@rushstack/heft", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/loader-raw-script/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/loader-raw-script/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..4ce5ef31adf --- /dev/null +++ b/common/changes/@rushstack/loader-raw-script/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/loader-raw-script" + } + ], + "packageName": "@rushstack/loader-raw-script", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/localization-utilities/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/localization-utilities/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..c392df8a74e --- /dev/null +++ b/common/changes/@rushstack/localization-utilities/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/localization-utilities" + } + ], + "packageName": "@rushstack/localization-utilities", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/lockfile-explorer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/lockfile-explorer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..35e3ab788e3 --- /dev/null +++ b/common/changes/@rushstack/lockfile-explorer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/lockfile-explorer" + } + ], + "packageName": "@rushstack/lockfile-explorer", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/lookup-by-path/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/lookup-by-path/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..5019d4670a0 --- /dev/null +++ b/common/changes/@rushstack/lookup-by-path/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/lookup-by-path" + } + ], + "packageName": "@rushstack/lookup-by-path", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/mcp-server/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/mcp-server/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..37e0f328f76 --- /dev/null +++ b/common/changes/@rushstack/mcp-server/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/mcp-server" + } + ], + "packageName": "@rushstack/mcp-server", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/module-minifier/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/module-minifier/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..772770e1849 --- /dev/null +++ b/common/changes/@rushstack/module-minifier/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/module-minifier" + } + ], + "packageName": "@rushstack/module-minifier", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/node-core-library/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/node-core-library/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..ad9a03946c4 --- /dev/null +++ b/common/changes/@rushstack/node-core-library/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/node-core-library" + } + ], + "packageName": "@rushstack/node-core-library", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/node-core-library/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/node-core-library/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..86d55393d19 --- /dev/null +++ b/common/changes/@rushstack/node-core-library/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/node-core-library" + } + ], + "packageName": "@rushstack/node-core-library", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/npm-check-fork/bmiddha-catalog-aware-rush-add_2026-10-14-20-37.json b/common/changes/@rushstack/npm-check-fork/bmiddha-catalog-aware-rush-add_2026-10-14-20-37.json new file mode 100644 index 00000000000..f2c9378ba17 --- /dev/null +++ b/common/changes/@rushstack/npm-check-fork/bmiddha-catalog-aware-rush-add_2026-10-14-20-37.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "packageName": "@rushstack/npm-check-fork", + "comment": "Use the \"cwdPackageJson\" option when it is provided, instead of always reading package.json from the \"cwd\" folder. The default options are no longer modified by each call.", + "type": "patch" + } + ], + "packageName": "@rushstack/npm-check-fork", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/npm-check-fork/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/npm-check-fork/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..87389c94bd5 --- /dev/null +++ b/common/changes/@rushstack/npm-check-fork/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/npm-check-fork" + } + ], + "packageName": "@rushstack/npm-check-fork", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/npm-check-fork/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/npm-check-fork/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..2e0614d34f4 --- /dev/null +++ b/common/changes/@rushstack/npm-check-fork/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/npm-check-fork" + } + ], + "packageName": "@rushstack/npm-check-fork", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/operation-graph/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/operation-graph/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..46c15f92a11 --- /dev/null +++ b/common/changes/@rushstack/operation-graph/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/operation-graph" + } + ], + "packageName": "@rushstack/operation-graph", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/package-deps-hash/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/package-deps-hash/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..79b715694dc --- /dev/null +++ b/common/changes/@rushstack/package-deps-hash/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/package-deps-hash" + } + ], + "packageName": "@rushstack/package-deps-hash", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/package-extractor/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/package-extractor/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..451ab09ad56 --- /dev/null +++ b/common/changes/@rushstack/package-extractor/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/package-extractor" + } + ], + "packageName": "@rushstack/package-extractor", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/package-extractor/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/package-extractor/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..dfeecacd573 --- /dev/null +++ b/common/changes/@rushstack/package-extractor/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/package-extractor" + } + ], + "packageName": "@rushstack/package-extractor", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/playwright-browser-tunnel/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/playwright-browser-tunnel/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..4493a150f9a --- /dev/null +++ b/common/changes/@rushstack/playwright-browser-tunnel/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/playwright-browser-tunnel" + } + ], + "packageName": "@rushstack/playwright-browser-tunnel", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/problem-matcher/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/problem-matcher/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..1ab8f7c29a1 --- /dev/null +++ b/common/changes/@rushstack/problem-matcher/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/problem-matcher" + } + ], + "packageName": "@rushstack/problem-matcher", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rig-package/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rig-package/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..8a4fdb61385 --- /dev/null +++ b/common/changes/@rushstack/rig-package/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rig-package" + } + ], + "packageName": "@rushstack/rig-package", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rig-package/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/rig-package/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..e72e927b992 --- /dev/null +++ b/common/changes/@rushstack/rig-package/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rig-package" + } + ], + "packageName": "@rushstack/rig-package", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/rundown/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rundown/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..0b476587ac6 --- /dev/null +++ b/common/changes/@rushstack/rundown/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rundown" + } + ], + "packageName": "@rushstack/rundown", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-cli-client/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-cli-client/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..0a6d75f91e4 --- /dev/null +++ b/common/changes/@rushstack/rush-cli-client/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-cli-client" + } + ], + "packageName": "@rushstack/rush-cli-client", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-client-core/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-client-core/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..f0e1732f5d5 --- /dev/null +++ b/common/changes/@rushstack/rush-client-core/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-client-core" + } + ], + "packageName": "@rushstack/rush-client-core", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-daemon-protocol/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-daemon-protocol/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..76327d1fd26 --- /dev/null +++ b/common/changes/@rushstack/rush-daemon-protocol/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-daemon-protocol" + } + ], + "packageName": "@rushstack/rush-daemon-protocol", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-daemon-transport/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-daemon-transport/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..a42fa29add9 --- /dev/null +++ b/common/changes/@rushstack/rush-daemon-transport/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-daemon-transport" + } + ], + "packageName": "@rushstack/rush-daemon-transport", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-daemon/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-daemon/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..aa175d69959 --- /dev/null +++ b/common/changes/@rushstack/rush-daemon/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-daemon" + } + ], + "packageName": "@rushstack/rush-daemon", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-mcp-docs-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-mcp-docs-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..11083a3ba50 --- /dev/null +++ b/common/changes/@rushstack/rush-mcp-docs-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-mcp-docs-plugin" + } + ], + "packageName": "@rushstack/rush-mcp-docs-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-published-versions-json-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-published-versions-json-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..537171c8480 --- /dev/null +++ b/common/changes/@rushstack/rush-published-versions-json-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-published-versions-json-plugin" + } + ], + "packageName": "@rushstack/rush-published-versions-json-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-reporter/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-reporter/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..73b9444dfa1 --- /dev/null +++ b/common/changes/@rushstack/rush-reporter/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-reporter" + } + ], + "packageName": "@rushstack/rush-reporter", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/rush-reporter/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/rush-reporter/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..4bbdac8a540 --- /dev/null +++ b/common/changes/@rushstack/rush-reporter/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-reporter" + } + ], + "packageName": "@rushstack/rush-reporter", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/rush-terminal-renderer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/rush-terminal-renderer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..839fd9b6110 --- /dev/null +++ b/common/changes/@rushstack/rush-terminal-renderer/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/rush-terminal-renderer" + } + ], + "packageName": "@rushstack/rush-terminal-renderer", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/set-webpack-public-path-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/set-webpack-public-path-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..c0cdc16b5ba --- /dev/null +++ b/common/changes/@rushstack/set-webpack-public-path-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/set-webpack-public-path-plugin" + } + ], + "packageName": "@rushstack/set-webpack-public-path-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/stream-collator/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/stream-collator/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..bbf99064f25 --- /dev/null +++ b/common/changes/@rushstack/stream-collator/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/stream-collator" + } + ], + "packageName": "@rushstack/stream-collator", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/terminal/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/terminal/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..c3c8d60997b --- /dev/null +++ b/common/changes/@rushstack/terminal/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/terminal" + } + ], + "packageName": "@rushstack/terminal", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/terminal/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/terminal/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..4dc55d88d2f --- /dev/null +++ b/common/changes/@rushstack/terminal/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/terminal" + } + ], + "packageName": "@rushstack/terminal", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/trace-import/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/trace-import/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..06e75e8ca53 --- /dev/null +++ b/common/changes/@rushstack/trace-import/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/trace-import" + } + ], + "packageName": "@rushstack/trace-import", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/tree-pattern/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/tree-pattern/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..6b5b77f0a44 --- /dev/null +++ b/common/changes/@rushstack/tree-pattern/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/tree-pattern" + } + ], + "packageName": "@rushstack/tree-pattern", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/ts-command-line/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/ts-command-line/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..cbcf905334b --- /dev/null +++ b/common/changes/@rushstack/ts-command-line/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/ts-command-line" + } + ], + "packageName": "@rushstack/ts-command-line", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/ts-command-line/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json b/common/changes/@rushstack/ts-command-line/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json new file mode 100644 index 00000000000..0299c4ce66e --- /dev/null +++ b/common/changes/@rushstack/ts-command-line/bmiddha-resolve-catalogs-in-injected-deps_2026-10-15-05-31.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/ts-command-line" + } + ], + "packageName": "@rushstack/ts-command-line", + "email": "223556219+Copilot@users.noreply.github.com" +} diff --git a/common/changes/@rushstack/typings-generator/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/typings-generator/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..76c168197d8 --- /dev/null +++ b/common/changes/@rushstack/typings-generator/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/typings-generator" + } + ], + "packageName": "@rushstack/typings-generator", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/webpack-embedded-dependencies-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/webpack-embedded-dependencies-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..0b23ca6c252 --- /dev/null +++ b/common/changes/@rushstack/webpack-embedded-dependencies-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/webpack-embedded-dependencies-plugin" + } + ], + "packageName": "@rushstack/webpack-embedded-dependencies-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/webpack-plugin-utilities/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/webpack-plugin-utilities/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..2d64b8bfab5 --- /dev/null +++ b/common/changes/@rushstack/webpack-plugin-utilities/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/webpack-plugin-utilities" + } + ], + "packageName": "@rushstack/webpack-plugin-utilities", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/webpack-preserve-dynamic-require-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/webpack-preserve-dynamic-require-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..a4665718c6d --- /dev/null +++ b/common/changes/@rushstack/webpack-preserve-dynamic-require-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/webpack-preserve-dynamic-require-plugin" + } + ], + "packageName": "@rushstack/webpack-preserve-dynamic-require-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/webpack-workspace-resolve-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/webpack-workspace-resolve-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..700321e1ad2 --- /dev/null +++ b/common/changes/@rushstack/webpack-workspace-resolve-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/webpack-workspace-resolve-plugin" + } + ], + "packageName": "@rushstack/webpack-workspace-resolve-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/webpack4-localization-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/webpack4-localization-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..c575fb92f0c --- /dev/null +++ b/common/changes/@rushstack/webpack4-localization-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/webpack4-localization-plugin" + } + ], + "packageName": "@rushstack/webpack4-localization-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/webpack4-module-minifier-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/webpack4-module-minifier-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..da0c5b50114 --- /dev/null +++ b/common/changes/@rushstack/webpack4-module-minifier-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/webpack4-module-minifier-plugin" + } + ], + "packageName": "@rushstack/webpack4-module-minifier-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/webpack5-localization-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/webpack5-localization-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..b0246017bf1 --- /dev/null +++ b/common/changes/@rushstack/webpack5-localization-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/webpack5-localization-plugin" + } + ], + "packageName": "@rushstack/webpack5-localization-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/webpack5-module-minifier-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/webpack5-module-minifier-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..9df7953bd79 --- /dev/null +++ b/common/changes/@rushstack/webpack5-module-minifier-plugin/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/webpack5-module-minifier-plugin" + } + ], + "packageName": "@rushstack/webpack5-module-minifier-plugin", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/worker-pool/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/worker-pool/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..5c32337bf2d --- /dev/null +++ b/common/changes/@rushstack/worker-pool/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/worker-pool" + } + ], + "packageName": "@rushstack/worker-pool", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/zipsync/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json b/common/changes/@rushstack/zipsync/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json new file mode 100644 index 00000000000..e2a30971e50 --- /dev/null +++ b/common/changes/@rushstack/zipsync/bmiddha-migrate-rushstack-to-pnpm-catalogs_2026-10-14-21-25-16.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/zipsync" + } + ], + "packageName": "@rushstack/zipsync", + "email": "5100938+bmiddha@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/config/rush/pnpm-config.json b/common/config/rush/pnpm-config.json index 95be7286441..08fa31a2529 100644 --- a/common/config/rush/pnpm-config.json +++ b/common/config/rush/pnpm-config.json @@ -536,43 +536,38 @@ }, /** - * The `globalNeverBuiltDependencies` setting suppresses the `preinstall`, `install`, and `postinstall` - * lifecycle events for the specified NPM dependencies. This is useful for scripts with poor practices - * such as downloading large binaries without retries or attempting to invoke OS tools such as - * a C++ compiler. (PNPM's terminology refers to these lifecycle events as "building" a package; - * it has nothing to do with build system operations such as `rush build` or `rushx build`.) - * The settings are copied into the `pnpm.neverBuiltDependencies` field of the `common/temp/package.json` - * file that is generated by Rush during installation. - * - * PNPM documentation: https://pnpm.io/package_json#pnpmneverbuiltdependencies - */ - "globalNeverBuiltDependencies": [ - // The postinstall script redundantly downloads the platform binding, which PNPM installs as an optional dependency. - "unrs-resolver" - ], - - /** - * The `globalOnlyBuiltDependencies` setting specifies which dependencies are permitted to run - * build scripts (`preinstall`, `install`, and `postinstall` lifecycle events). This is the inverse - * of `globalNeverBuiltDependencies`. In PNPM 10.x, build scripts are disabled by default for - * security, so this setting is required to explicitly permit specific packages to run their - * build scripts. The settings are written to the `onlyBuiltDependencies` field of the + * The `globalAllowBuilds` setting controls which dependencies are permitted to run build scripts + * (`preinstall`, `install`, and `postinstall` lifecycle events). (PNPM's terminology refers to these + * lifecycle events as "building" a package; it has nothing to do with build system operations such as + * `rush build` or `rushx build`.) A value of `true` allows the package's build scripts, and `false` + * explicitly denies them. PNPM 11 and newer fail the installation if a dependency has build scripts + * that are not listed here. The settings are written to the `allowBuilds` field of the * `pnpm-workspace.yaml` file that is generated by Rush during installation. * - * (SUPPORTED ONLY IN PNPM 10.1.0 AND NEWER) + * This setting replaces `globalNeverBuiltDependencies` and `globalOnlyBuiltDependencies`, which + * PNPM 11 removed. * - * PNPM documentation: https://pnpm.io/settings#onlybuiltdependencies + * (SUPPORTED ONLY IN PNPM 11.0.0 AND NEWER) * - * Example: - * "globalOnlyBuiltDependencies": [ - * "esbuild", - * "playwright", - * "@swc/core" - * ] + * PNPM documentation: https://pnpm.io/settings#allowbuilds */ - // "globalOnlyBuiltDependencies": [ - // "esbuild" - // ], + "globalAllowBuilds": { + // These scripts install or validate native binaries. PNPM 10 ran them because + // `globalNeverBuiltDependencies` allowed every package that it did not list. + "@swc/core": true, + "@vscode/vsce-sign": true, + "esbuild": true, + "fsevents": true, + "keytar": true, + + // These postinstall scripts only print banners or deprecation notices. + "aws-sdk": false, + "core-js": false, + "core-js-pure": false, + + // The postinstall script redundantly downloads the platform binding, which PNPM installs as an optional dependency. + "unrs-resolver": false + }, /** * The `globalIgnoredOptionalDependencies` setting suppresses the installation of optional NPM @@ -614,6 +609,242 @@ */ "globalPatchedDependencies": {}, + /** + * The "globalCatalogs" setting provides named catalogs of dependency versions. A project can reference + * an entry from the default catalog with the `catalog:` protocol (e.g. `"typescript": "catalog:"`), + * or from a named catalog with `catalog:`. PNPM replaces these references with the catalog + * version when a package is packed or published. + * + * Projects in both subspaces of this repo share these catalogs. A project whose version intentionally + * differs from the catalog (for example, an "allowedAlternativeVersions" entry in common-versions.json) + * keeps a literal version specifier. Peer dependencies and decoupled local dependencies also stay literal. + * + * "@types/vscode" must also stay literal, because "vsce" validates that devDependency as a semver range + * when packaging a VS Code extension. + * + * Projects that a "build-tests-subspace" project installs as an injected dependency, directly or + * transitively (for example "@microsoft/rush-lib", "@rushstack/heft", and "@rushstack/node-core-library"), + * may also use "catalog:". PNPM installs those projects into the other subspace as "file:" dependencies, + * and the Rush subspace pnpmfile shim replaces their catalog references with the versions from these + * catalogs. + * + * Use "rush add" or "rush upgrade-interactive" to update catalog entries. + * + * PNPM documentation: https://pnpm.io/catalogs + */ + "globalCatalogs": { + "default": { + "@aws-sdk/client-sso-oidc": "^3.567.0", + "@aws-sdk/client-sts": "^3.567.0", + "@azure/identity": "~4.13.1", + "@azure/storage-blob": "~12.31.0", + "@babel/core": "~7.20.0", + "@fluentui/react": "~8.125.3", + "@fluentui/react-components": "~9.72.9", + "@inquirer/checkbox": "~5.1.3", + "@inquirer/confirm": "~6.0.11", + "@inquirer/input": "~5.0.11", + "@inquirer/search": "~4.1.7", + "@inquirer/select": "~5.1.3", + "@jest/core": "~30.3.0", + "@jest/reporters": "~30.3.0", + "@jest/transform": "~30.3.0", + "@jest/types": "30.3.0", + "@jridgewell/sourcemap-codec": "~1.5.5", + "@microsoft/teams-js": "1.3.0-beta.4", + "@microsoft/tsdoc": "~0.17.0", + "@microsoft/tsdoc-config": "~0.18.2", + "@modelcontextprotocol/sdk": "~1.10.2", + "@playwright/test": "~1.62.1", + "@pnpm/link-bins": "~5.3.7", + "@pnpm/types": "1000.8.0", + "@radix-ui/colors": "~3.0.0", + "@radix-ui/react-checkbox": "~1.3.3", + "@radix-ui/react-icons": "~1.3.2", + "@radix-ui/react-scroll-area": "~1.2.10", + "@radix-ui/react-tabs": "~1.1.13", + "@redis/client": "~5.8.2", + "@reduxjs/toolkit": "~2.11.2", + "@rspack/core": "~1.6.0-beta.0", + "@rspack/dev-server": "^1.1.4", + "@serverless-stack/aws-lambda-ric": "^2.0.12", + "@serverless-stack/cli": "1.18.4", + "@serverless-stack/resources": "1.18.4", + "@storybook/addon-actions": "~6.4.18", + "@storybook/addon-essentials": "~6.4.18", + "@storybook/addon-links": "~6.4.18", + "@storybook/cli": "~9.1.6", + "@storybook/components": "~6.4.18", + "@storybook/core-events": "~6.4.18", + "@storybook/react": "~9.1.6", + "@storybook/react-webpack5": "~9.1.6", + "@storybook/theming": "~6.4.18", + "@swc/core": "1.7.10", + "@testing-library/dom": "~7.21.4", + "@types/argparse": "1.0.38", + "@types/aws-lambda": "8.10.93", + "@types/compression": "~1.7.2", + "@types/cors": "~2.8.12", + "@types/eslint": "9.6.1", + "@types/estree": "1.0.8", + "@types/express": "4.17.21", + "@types/fs-extra": "7.0.0", + "@types/glob": "7.1.1", + "@types/http-proxy": "~1.17.8", + "@types/jest": "30.0.0", + "@types/jju": "1.4.1", + "@types/js-yaml": "4.0.9", + "@types/json-stable-stringify-without-jsonify": "1.0.2", + "@types/loader-utils": "1.1.3", + "@types/long": "4.0.0", + "@types/mocha": "10.0.6", + "@types/node": "20.17.19", + "@types/node-forge": "1.3.14", + "@types/npm-package-arg": "6.1.0", + "@types/npm-packlist": "~1.1.1", + "@types/object-hash": "~3.0.6", + "@types/react": "19.2.7", + "@types/react-dom": "19.2.3", + "@types/react-redux": "~7.1.22", + "@types/read-package-tree": "5.1.0", + "@types/resolve": "1.20.2", + "@types/semver": "7.7.1", + "@types/serialize-javascript": "5.0.4", + "@types/ssri": "~7.1.0", + "@types/strict-uri-encode": "2.0.0", + "@types/supports-color": "8.1.3", + "@types/tapable": "1.0.6", + "@types/watchpack": "2.4.0", + "@types/webpack": "4.41.32", + "@types/webpack-env": "1.18.8", + "@types/webpack-sources": "1.4.2", + "@types/ws": "8.18.1", + "@types/xmldoc": "1.1.4", + "@typescript-eslint/eslint-plugin": "~8.56.1", + "@typescript-eslint/parser": "~8.56.1", + "@typescript-eslint/rule-tester": "~8.56.1", + "@typescript-eslint/types": "~8.56.1", + "@typescript-eslint/typescript-estree": "~8.56.1", + "@typescript-eslint/utils": "~8.56.1", + "@vscode/test-electron": "^1.6.2", + "@vscode/vsce": "3.2.1", + "@yarnpkg/lockfile": "~1.0.2", + "ajv": "~8.20.0", + "ajv-draft-04": "~1.0.0", + "ajv-formats": "~3.0.1", + "argparse": "~1.0.9", + "autoprefixer": "~10.4.2", + "aws-cdk-lib": "2.189.1", + "babel-loader": "~8.2.3", + "buttono": "~1.0.2", + "chokidar": "~3.6.0", + "compression": "~1.7.4", + "constructs": "~10.0.98", + "cors": "~2.8.5", + "css-loader": "~6.6.0", + "css-minimizer-webpack-plugin": "~3.4.1", + "dependency-path": "~9.2.8", + "diff": "~8.0.2", + "dotenv": "~16.4.7", + "eslint": "~9.37.0", + "eslint-import-resolver-node": "0.3.9", + "eslint-plugin-header": "~3.1.1", + "eslint-plugin-headers": "~1.2.1", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-jsdoc": "50.6.11", + "eslint-plugin-promise": "~7.2.1", + "eslint-plugin-react": "~7.37.5", + "eslint-plugin-react-hooks": "5.2.0", + "eslint-plugin-tsdoc": "~0.5.3", + "express": "4.21.1", + "fast-glob": "~3.3.1", + "fastify": "~3.16.1", + "file-loader": "~6.0.0", + "fs-extra": "~11.3.0", + "git-repo-info": "~2.1.0", + "glob": "~7.0.5", + "html-webpack-plugin": "~5.5.0", + "http-proxy": "~1.18.1", + "http2-express-bridge": "~1.0.7", + "https-proxy-agent": "~5.0.0", + "ignore": "~5.1.6", + "import-lazy": "~4.0.0", + "jest": "~29.3.1", + "jest-config": "~30.3.0", + "jest-environment-jsdom": "~30.3.0", + "jest-environment-node": "~30.3.0", + "jest-junit": "12.3.0", + "jest-resolve": "~30.3.0", + "jest-snapshot": "~30.3.0", + "jest-watch-select-projects": "2.0.0", + "jju": "~1.4.0", + "js-yaml": "~4.3.2", + "json-schema-to-typescript": "~15.0.4", + "json-stable-stringify-without-jsonify": "1.0.1", + "jsonpath-plus": "~10.3.0", + "jszip": "~3.8.0", + "loader-utils": "1.4.2", + "long": "^4.0.0", + "memfs": "4.12.0", + "mini-css-extract-plugin": "~2.5.3", + "minimatch": "10.2.3", + "mocha": "^10.1.0", + "node-forge": "~1.4.0", + "npm-package-arg": "~6.1.0", + "npm-packlist": "~5.1.3", + "object-hash": "3.0.0", + "playwright": "1.62.1", + "playwright-core": "~1.62.1", + "pnpm-sync-lib": "0.3.4", + "postcss": "~8.5.10", + "postcss-loader": "~6.2.1", + "postcss-modules": "~6.0.0", + "prism-react-renderer": "~2.4.1", + "pseudolocale": "~1.1.0", + "react": "~19.2.3", + "react-dom": "~19.2.3", + "react-hook-form": "~7.69.0", + "react-redux": "~9.2.0", + "read-package-tree": "~5.1.5", + "redux": "~5.0.1", + "resolve": "~1.22.1", + "resolve-pkg-maps": "~1.0.0", + "rxjs": "~6.6.7", + "sass": "~1.49.7", + "sass-embedded": "~1.85.1", + "sass-loader": "~12.4.0", + "semver": "~7.7.4", + "serialize-javascript": "~7.1.3", + "source-map": "~0.7.3", + "source-map-loader": "~3.0.1", + "ssri": "~8.0.0", + "storybook": "~9.1.6", + "strict-uri-encode": "~2.0.0", + "string-argv": "~0.3.1", + "style-loader": "~3.3.1", + "supports-color": "~8.1.1", + "tapable": "2.3.0", + "tar": "~7.5.6", + "terser": "^5.9.0", + "terser-webpack-plugin": "~5.3.1", + "true-case-path": "~2.2.1", + "ts-loader": "6.0.0", + "tslib": "~2.8.1", + "tslint": "~5.20.1", + "typescript": "~5.8.2", + "url-loader": "~4.1.1", + "watchpack": "2.4.0", + "webpack": "~5.105.2", + "webpack-bundle-analyzer": "~4.5.0", + "webpack-dev-server": "^5.1.0", + "webpack-merge": "~5.8.0", + "webpack-sources": "~1.4.3", + "ws": "~8.21.0", + "xmldoc": "~1.1.2", + "zod": "~3.25.76" + } + }, + /** * (USE AT YOUR OWN RISK) This is a free-form property bag that will be copied into * the `common/temp/package.json` file that is generated by Rush during installation. diff --git a/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml b/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml index 08f760e7c08..9cf61e583b1 100644 --- a/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml +++ b/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml @@ -4,17 +4,37 @@ settings: autoInstallPeers: false excludeLinksFromLockfile: false +catalogs: + default: + '@types/node': + specifier: 20.17.19 + version: 20.17.19 + '@types/webpack-env': + specifier: 1.18.8 + version: 1.18.8 + html-webpack-plugin: + specifier: ~5.5.0 + version: 5.5.4 + tslint: + specifier: ~5.20.1 + version: 5.20.1 + typescript: + specifier: ~5.8.2 + version: 5.8.3 + overrides: - package-json: ^7 '@types/estree': 1.0.8 '@types/react@17.0.74>@types/scheduler': 0.16.8 - loader-utils@^2.0.0: 2.0.4 fast-xml-parser@^5.3.3: 5.3.5 + loader-utils@^2.0.0: 2.0.4 + package-json: ^7 packageExtensionsChecksum: sha256-8fXYR9X9qRA57SZJJSADz6C9KMP6QQYYut4DHyehah0= pnpmfileChecksum: sha256-FceiOBivXBfnQ6+mNFF4or5E/6NvJXB3oz3cjl5O7OM= +untrackedPnpmfileReadPackageHook: true + importers: .: {} @@ -23,7 +43,7 @@ importers: dependencies: '@microsoft/rush-lib': specifier: file:../../libraries/rush-lib - version: file:../../../libraries/rush-lib(@types/node@20.17.19) + version: file:../../../libraries/rush-lib(@types/node@20.17.19)(supports-color@8.1.1) '@rushstack/terminal': specifier: file:../../libraries/terminal version: file:../../../libraries/terminal(@types/node@20.17.19) @@ -41,14 +61,14 @@ importers: specifier: file:../../apps/heft version: file:../../../apps/heft(@types/node@20.17.19) '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: specifier: ~9.25.1 - version: 9.25.1 + version: 9.25.1(supports-color@8.1.1) local-node-rig: specifier: file:../../rigs/local-node-rig - version: file:../../../rigs/local-node-rig + version: file:../../../rigs/local-node-rig(supports-color@8.1.1) ../../../build-tests-subspace/rush-sdk-test: dependencies: @@ -67,19 +87,19 @@ importers: devDependencies: '@microsoft/rush-lib': specifier: file:../../libraries/rush-lib - version: file:../../../libraries/rush-lib(@types/node@20.17.19) + version: file:../../../libraries/rush-lib(@types/node@20.17.19)(supports-color@8.1.1) '@rushstack/heft': specifier: file:../../apps/heft version: file:../../../apps/heft(@types/node@20.17.19) '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: specifier: ~9.25.1 - version: 9.25.1 + version: 9.25.1(supports-color@8.1.1) local-node-rig: specifier: file:../../rigs/local-node-rig - version: file:../../../rigs/local-node-rig + version: file:../../../rigs/local-node-rig(supports-color@8.1.1) ../../../build-tests-subspace/typescript-newest-test: dependenciesMeta: @@ -93,12 +113,12 @@ importers: version: file:../../../apps/heft(@types/node@20.17.19) eslint: specifier: ~9.25.1 - version: 9.25.1 + version: 9.25.1(supports-color@8.1.1) local-node-rig: specifier: file:../../rigs/local-node-rig - version: file:../../../rigs/local-node-rig + version: file:../../../rigs/local-node-rig(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.3 ../../../build-tests-subspace/typescript-v4-test: @@ -114,7 +134,7 @@ importers: devDependencies: '@rushstack/eslint-config': specifier: file:../../eslint/eslint-config - version: file:../../../eslint/eslint-config(eslint@9.25.1)(typescript@4.9.5) + version: file:../../../eslint/eslint-config(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) '@rushstack/heft': specifier: file:../../apps/heft version: file:../../../apps/heft(@types/node@20.17.19) @@ -126,9 +146,9 @@ importers: version: file:../../../heft-plugins/heft-typescript-plugin(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/node@20.17.19) eslint: specifier: ~9.25.1 - version: 9.25.1 + version: 9.25.1(supports-color@8.1.1) tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@4.9.5) typescript: specifier: ~4.9.5 @@ -149,16 +169,16 @@ importers: specifier: link:../../heft-plugins/heft-webpack5-plugin version: link:../../heft-plugins/heft-webpack5-plugin '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: specifier: ~9.25.1 - version: 9.25.1 + version: 9.25.1(supports-color@8.1.1) html-webpack-plugin: - specifier: ~5.5.0 + specifier: 'catalog:' version: 5.5.4(webpack@5.105.4) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.3 webpack: specifier: ~5.105.0 @@ -332,13 +352,13 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} '@emnapi/core@1.9.2': - resolution: {integrity: sha1-OHAmXs/8c1LQHq1i2Ng9g1ii0DQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/core/-/core-1.9.2.tgz} + resolution: {integrity: sha1-OHAmXs/8c1LQHq1i2Ng9g1ii0DQ=} '@emnapi/runtime@1.9.2': - resolution: {integrity: sha1-i0aaPbFggXytsd6QUCEanR6oT6I=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/runtime/-/runtime-1.9.2.tgz} + resolution: {integrity: sha1-i0aaPbFggXytsd6QUCEanR6oT6I=} '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha1-KP7SGhuhznl8RKBwq8lNQvOuhUg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz} + resolution: {integrity: sha1-KP7SGhuhznl8RKBwq8lNQvOuhUg=} '@es-joy/jsdoccomment@0.49.0': resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} @@ -636,13 +656,13 @@ packages: engines: {node: '>=20.9.0'} '@microsoft/tsdoc-config@0.18.2': - resolution: {integrity: sha1-NMgHbmDtCq19k/gcVGW/OsJLwpA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/tsdoc-config/-/tsdoc-config-0.18.2.tgz} + resolution: {integrity: sha1-NMgHbmDtCq19k/gcVGW/OsJLwpA=} '@microsoft/tsdoc@0.17.0': - resolution: {integrity: sha1-YbSmP0i1g6PWDReTGEoaLNnRF14=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/tsdoc/-/tsdoc-0.17.0.tgz} + resolution: {integrity: sha1-YbSmP0i1g6PWDReTGEoaLNnRF14=} '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha1-PniouW5sM6bFF+GJTvvVOFp8tvI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz} + resolution: {integrity: sha1-PniouW5sM6bFF+GJTvvVOFp8tvI=} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -657,7 +677,7 @@ packages: engines: {node: '>= 8'} '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} + resolution: {integrity: sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM=} engines: {node: '>=14'} '@pkgr/core@0.2.9': @@ -665,11 +685,11 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@pnpm/constants@1001.3.1': - resolution: {integrity: sha1-viYLiQIckXK1VhLGnPDoWNBLfD0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/constants/-/constants-1001.3.1.tgz} + resolution: {integrity: sha1-viYLiQIckXK1VhLGnPDoWNBLfD0=} engines: {node: '>=18.12'} '@pnpm/constants@7.1.1': - resolution: {integrity: sha1-PbJhQl/hVCWqITorAD9PYMk3i0M=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/constants/-/constants-7.1.1.tgz} + resolution: {integrity: sha1-PbJhQl/hVCWqITorAD9PYMk3i0M=} engines: {node: '>=16.14'} '@pnpm/crypto.base32-hash@1.0.1': @@ -677,43 +697,43 @@ packages: engines: {node: '>=14.6'} '@pnpm/crypto.base32-hash@2.0.0': - resolution: {integrity: sha1-MxmVlH6jyHOQ8yQ+JlIV1Tl8RsM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/crypto.base32-hash/-/crypto.base32-hash-2.0.0.tgz} + resolution: {integrity: sha1-MxmVlH6jyHOQ8yQ+JlIV1Tl8RsM=} engines: {node: '>=16.14'} '@pnpm/crypto.base32-hash@3.0.1': - resolution: {integrity: sha1-10Om1yuXF16gAUZHVKjztoxV2Bk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/crypto.base32-hash/-/crypto.base32-hash-3.0.1.tgz} + resolution: {integrity: sha1-10Om1yuXF16gAUZHVKjztoxV2Bk=} engines: {node: '>=18.12'} '@pnpm/crypto.hash@1000.1.1': - resolution: {integrity: sha1-YOYV8guiwzPAv4KYZ1uTZ/WxRUc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/crypto.hash/-/crypto.hash-1000.1.1.tgz} + resolution: {integrity: sha1-YOYV8guiwzPAv4KYZ1uTZ/WxRUc=} engines: {node: '>=18.12'} '@pnpm/crypto.hash@1000.2.2': - resolution: {integrity: sha1-6oo1fFgk3CXTq29pdSta2/yEWE0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/crypto.hash/-/crypto.hash-1000.2.2.tgz} + resolution: {integrity: sha1-6oo1fFgk3CXTq29pdSta2/yEWE0=} engines: {node: '>=18.12'} '@pnpm/crypto.polyfill@1.0.0': - resolution: {integrity: sha1-Jva+zF9tkPGDz2aSkUyxeZk+EEI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/crypto.polyfill/-/crypto.polyfill-1.0.0.tgz} + resolution: {integrity: sha1-Jva+zF9tkPGDz2aSkUyxeZk+EEI=} engines: {node: '>=18.12'} '@pnpm/crypto.polyfill@1000.1.0': - resolution: {integrity: sha1-r48nmjCe/1eAH6vWgtpA/ZoE5aA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/crypto.polyfill/-/crypto.polyfill-1000.1.0.tgz} + resolution: {integrity: sha1-r48nmjCe/1eAH6vWgtpA/ZoE5aA=} engines: {node: '>=18.12'} '@pnpm/dependency-path@1000.0.9': - resolution: {integrity: sha1-BycnqFkF4RIQeAXmERrlHekMYYA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/dependency-path/-/dependency-path-1000.0.9.tgz} + resolution: {integrity: sha1-BycnqFkF4RIQeAXmERrlHekMYYA=} engines: {node: '>=18.12'} '@pnpm/dependency-path@1001.1.10': - resolution: {integrity: sha1-UUVZbGiAa+GBl15GEWrCxSxijFE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/dependency-path/-/dependency-path-1001.1.10.tgz} + resolution: {integrity: sha1-UUVZbGiAa+GBl15GEWrCxSxijFE=} engines: {node: '>=18.12'} '@pnpm/dependency-path@2.1.8': - resolution: {integrity: sha1-l06jxmckkWzPFTGpCKyMIGvgyPQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/dependency-path/-/dependency-path-2.1.8.tgz} + resolution: {integrity: sha1-l06jxmckkWzPFTGpCKyMIGvgyPQ=} engines: {node: '>=16.14'} '@pnpm/dependency-path@5.1.7': - resolution: {integrity: sha1-QfX0+QujGOTzmSll8AQMpGEvXYE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/dependency-path/-/dependency-path-5.1.7.tgz} + resolution: {integrity: sha1-QfX0+QujGOTzmSll8AQMpGEvXYE=} engines: {node: '>=18.12'} '@pnpm/error@1.4.0': @@ -721,27 +741,27 @@ packages: engines: {node: '>=10.16'} '@pnpm/error@1000.1.0': - resolution: {integrity: sha1-+FjGoy+zZSjiaYs9eBALwyX1U3M=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/error/-/error-1000.1.0.tgz} + resolution: {integrity: sha1-+FjGoy+zZSjiaYs9eBALwyX1U3M=} engines: {node: '>=18.12'} '@pnpm/error@5.0.3': - resolution: {integrity: sha1-TbufSssLMMNzs8pQJM30lfA/Q4A=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/error/-/error-5.0.3.tgz} + resolution: {integrity: sha1-TbufSssLMMNzs8pQJM30lfA/Q4A=} engines: {node: '>=16.14'} '@pnpm/git-utils@1.0.0': - resolution: {integrity: sha1-hHFKdppjcWCRYk/+juQi146jl6k=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/git-utils/-/git-utils-1.0.0.tgz} + resolution: {integrity: sha1-hHFKdppjcWCRYk/+juQi146jl6k=} engines: {node: '>=16.14'} '@pnpm/git-utils@1000.0.0': - resolution: {integrity: sha1-TrbKY79t7kgv6/lPfoa41Q0KX4Q=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/git-utils/-/git-utils-1000.0.0.tgz} + resolution: {integrity: sha1-TrbKY79t7kgv6/lPfoa41Q0KX4Q=} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.0.0': - resolution: {integrity: sha1-p7ipKN/u8oXZfR2xBzyTbcPAb7s=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/graceful-fs/-/graceful-fs-1000.0.0.tgz} + resolution: {integrity: sha1-p7ipKN/u8oXZfR2xBzyTbcPAb7s=} engines: {node: '>=18.12'} '@pnpm/graceful-fs@1000.1.0': - resolution: {integrity: sha1-zIvSiDOSXvmejTnfWhg5K89DSIU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/graceful-fs/-/graceful-fs-1000.1.0.tgz} + resolution: {integrity: sha1-zIvSiDOSXvmejTnfWhg5K89DSIU=} engines: {node: '>=18.12'} '@pnpm/link-bins@5.3.25': @@ -749,39 +769,39 @@ packages: engines: {node: '>=10.16'} '@pnpm/lockfile-file@8.1.8': - resolution: {integrity: sha1-XNY28vDj/ZipBcI7chdQHGb3aDs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile-file/-/lockfile-file-8.1.8.tgz} + resolution: {integrity: sha1-XNY28vDj/ZipBcI7chdQHGb3aDs=} engines: {node: '>=16.14'} peerDependencies: '@pnpm/logger': ^5.0.0 '@pnpm/lockfile-types@5.1.5': - resolution: {integrity: sha1-FLhcl23c90dPWmopNRy1eZWdDsg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile-types/-/lockfile-types-5.1.5.tgz} + resolution: {integrity: sha1-FLhcl23c90dPWmopNRy1eZWdDsg=} engines: {node: '>=16.14'} '@pnpm/lockfile.fs@1001.1.32': - resolution: {integrity: sha1-BBG6O7B1WDMUqhh3YXPsXO36nOU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile.fs/-/lockfile.fs-1001.1.32.tgz} + resolution: {integrity: sha1-BBG6O7B1WDMUqhh3YXPsXO36nOU=} engines: {node: '>=18.12'} peerDependencies: '@pnpm/logger': ^1001.0.1 '@pnpm/lockfile.merger@1001.0.20': - resolution: {integrity: sha1-SBTSTDjHFxQ7SG17EEVZA52O2IQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile.merger/-/lockfile.merger-1001.0.20.tgz} + resolution: {integrity: sha1-SBTSTDjHFxQ7SG17EEVZA52O2IQ=} engines: {node: '>=18.12'} '@pnpm/lockfile.types@1001.1.0': - resolution: {integrity: sha1-rhsx7V+7Du0y0CpfVlG8zilTW6E=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile.types/-/lockfile.types-1001.1.0.tgz} + resolution: {integrity: sha1-rhsx7V+7Du0y0CpfVlG8zilTW6E=} engines: {node: '>=18.12'} '@pnpm/lockfile.types@1002.1.0': - resolution: {integrity: sha1-LWryNllSeNyOewe/ocl+d/pm6N8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile.types/-/lockfile.types-1002.1.0.tgz} + resolution: {integrity: sha1-LWryNllSeNyOewe/ocl+d/pm6N8=} engines: {node: '>=18.12'} '@pnpm/lockfile.types@900.0.0': - resolution: {integrity: sha1-r+ZWP2++XpHWqF3bg40QOViZjN0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile.types/-/lockfile.types-900.0.0.tgz} + resolution: {integrity: sha1-r+ZWP2++XpHWqF3bg40QOViZjN0=} engines: {node: '>=18.12'} '@pnpm/lockfile.utils@1004.0.3': - resolution: {integrity: sha1-PrM6x58fTrvIWcmpa2nZ/9kjX5k=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile.utils/-/lockfile.utils-1004.0.3.tgz} + resolution: {integrity: sha1-PrM6x58fTrvIWcmpa2nZ/9kjX5k=} engines: {node: '>=18.12'} '@pnpm/logger@1001.0.1': @@ -793,11 +813,11 @@ packages: engines: {node: '>=12.17'} '@pnpm/merge-lockfile-changes@5.0.7': - resolution: {integrity: sha1-uWZNtLSWrwCxoBAeGQUyMw4eGxI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/merge-lockfile-changes/-/merge-lockfile-changes-5.0.7.tgz} + resolution: {integrity: sha1-uWZNtLSWrwCxoBAeGQUyMw4eGxI=} engines: {node: '>=16.14'} '@pnpm/object.key-sorting@1000.0.1': - resolution: {integrity: sha1-MA2B+9Entoq+IKjsDVMyWDICIYk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/object.key-sorting/-/object.key-sorting-1000.0.1.tgz} + resolution: {integrity: sha1-MA2B+9Entoq+IKjsDVMyWDICIYk=} engines: {node: '>=18.12'} '@pnpm/package-bins@4.1.0': @@ -805,19 +825,19 @@ packages: engines: {node: '>=10.16'} '@pnpm/patching.types@1000.1.0': - resolution: {integrity: sha1-1AOzl0N4A7hZx/sullgMiXtitx4=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/patching.types/-/patching.types-1000.1.0.tgz} + resolution: {integrity: sha1-1AOzl0N4A7hZx/sullgMiXtitx4=} engines: {node: '>=18.12'} '@pnpm/patching.types@900.0.0': - resolution: {integrity: sha1-orATANvm8Ur2BJkdc7XFPzSzAvY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/patching.types/-/patching.types-900.0.0.tgz} + resolution: {integrity: sha1-orATANvm8Ur2BJkdc7XFPzSzAvY=} engines: {node: '>=18.12'} '@pnpm/pick-fetcher@1001.0.0': - resolution: {integrity: sha1-T7eVB/B0u3efRvqjKr/4ek3e/88=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/pick-fetcher/-/pick-fetcher-1001.0.0.tgz} + resolution: {integrity: sha1-T7eVB/B0u3efRvqjKr/4ek3e/88=} engines: {node: '>=18.12'} '@pnpm/ramda@0.28.1': - resolution: {integrity: sha1-DzKrxSddWGoD4Nwd2QoAmsZo/zM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/ramda/-/ramda-0.28.1.tgz} + resolution: {integrity: sha1-DzKrxSddWGoD4Nwd2QoAmsZo/zM=} '@pnpm/read-modules-dir@2.0.3': resolution: {integrity: sha512-i9OgRvSlxrTS9a2oXokhDxvQzDtfqtsooJ9jaGoHkznue5aFCTSrNZFQ6M18o8hC03QWfnxaKi0BtOvNkKu2+A==} @@ -832,47 +852,47 @@ packages: engines: {node: '>=10.16'} '@pnpm/resolver-base@1005.4.1': - resolution: {integrity: sha1-JkFSbk9LRuarrp4jR3k+ZEMGWyQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/resolver-base/-/resolver-base-1005.4.1.tgz} + resolution: {integrity: sha1-JkFSbk9LRuarrp4jR3k+ZEMGWyQ=} engines: {node: '>=18.12'} '@pnpm/types@1000.6.0': - resolution: {integrity: sha1-gli2kl9i04FsrGwDDElHfsTL8NY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-1000.6.0.tgz} + resolution: {integrity: sha1-gli2kl9i04FsrGwDDElHfsTL8NY=} engines: {node: '>=18.12'} '@pnpm/types@1000.7.0': - resolution: {integrity: sha1-g1Hkb73+JfgP7Jdb/fWNDKStYkw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-1000.7.0.tgz} + resolution: {integrity: sha1-g1Hkb73+JfgP7Jdb/fWNDKStYkw=} engines: {node: '>=18.12'} '@pnpm/types@1001.3.0': - resolution: {integrity: sha1-4LP3EZ/jQ7SD9tA2jHfpk2SQIHM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-1001.3.0.tgz} + resolution: {integrity: sha1-4LP3EZ/jQ7SD9tA2jHfpk2SQIHM=} engines: {node: '>=18.12'} '@pnpm/types@12.2.0': - resolution: {integrity: sha1-lE+xjtDRF9Vw7YY1jsydbz3T5sI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-12.2.0.tgz} + resolution: {integrity: sha1-lE+xjtDRF9Vw7YY1jsydbz3T5sI=} engines: {node: '>=18.12'} '@pnpm/types@6.4.0': - resolution: {integrity: sha1-MSw78LQ7ADUIyyG9OBVAbqDztmk=, tarball: https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-6.4.0.tgz} + resolution: {integrity: sha1-MSw78LQ7ADUIyyG9OBVAbqDztmk=} engines: {node: '>=10.16'} '@pnpm/types@8.9.0': - resolution: {integrity: sha1-ljbV8GQnk0MvcmCbeUWMqb4EmwI=, tarball: https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-8.9.0.tgz} + resolution: {integrity: sha1-ljbV8GQnk0MvcmCbeUWMqb4EmwI=} engines: {node: '>=14.6'} '@pnpm/types@9.4.2': - resolution: {integrity: sha1-CjTDxB1UUkYdjYlYN0pyf5xGz7I=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-9.4.2.tgz} + resolution: {integrity: sha1-CjTDxB1UUkYdjYlYN0pyf5xGz7I=} engines: {node: '>=16.14'} '@pnpm/types@900.0.0': - resolution: {integrity: sha1-og6LnKAgZjsCLATRKM0Ve492oFo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-900.0.0.tgz} + resolution: {integrity: sha1-og6LnKAgZjsCLATRKM0Ve492oFo=} engines: {node: '>=18.12'} '@pnpm/util.lex-comparator@1.0.0': - resolution: {integrity: sha1-bRfa0vGiPhN/04QCs6FBmWnk0JA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/util.lex-comparator/-/util.lex-comparator-1.0.0.tgz} + resolution: {integrity: sha1-bRfa0vGiPhN/04QCs6FBmWnk0JA=} engines: {node: '>=12.22.0'} '@pnpm/util.lex-comparator@3.0.2': - resolution: {integrity: sha1-UmhowKypnOlGZkWM+MKLlyBx0Nw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/util.lex-comparator/-/util.lex-comparator-3.0.2.tgz} + resolution: {integrity: sha1-UmhowKypnOlGZkWM+MKLlyBx0Nw=} engines: {node: '>=18.12'} '@pnpm/write-project-manifest@1.1.7': @@ -1070,7 +1090,7 @@ packages: resolution: {integrity: sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==} '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha1-7N3TIFzx4tUnRkn/Du3SmR7X9BQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tybys/wasm-util/-/wasm-util-0.10.1.tgz} + resolution: {integrity: sha1-7N3TIFzx4tUnRkn/Du3SmR7X9BQ=} '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -1201,107 +1221,108 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha1-n1sEUDCI5qNUKV6OqP48uZ5Dr4E=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz} + resolution: {integrity: sha1-n1sEUDCI5qNUKV6OqP48uZ5Dr4E=} cpu: [arm] os: [android] '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha1-dBSIVDG9cXi5ia7cTSXMyzhlvJ8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz} + resolution: {integrity: sha1-dBSIVDG9cXi5ia7cTSXMyzhlvJ8=} cpu: [arm64] os: [android] '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha1-tKhVb0IXH7nJ97rII1BF6Cqgy98=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz} + resolution: {integrity: sha1-tKhVb0IXH7nJ97rII1BF6Cqgy98=} cpu: [arm64] os: [darwin] '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha1-/U2BJXsT9NGgg4kKahfADeVx8Nw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz} + resolution: {integrity: sha1-/U2BJXsT9NGgg4kKahfADeVx8Nw=} cpu: [x64] os: [darwin] '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha1-0lEwhNDzfEB3V+IvMr2SSnjP2Zs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz} + resolution: {integrity: sha1-0lEwhNDzfEB3V+IvMr2SSnjP2Zs=} cpu: [x64] os: [freebsd] '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha1-hE0mBdBXSI13+rCXBfKGa4YWTgo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz} + resolution: {integrity: sha1-hE0mBdBXSI13+rCXBfKGa4YWTgo=} cpu: [arm] os: [linux] '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha1-IEiSmVzvtr0dAX1S0JcZO8Yd2tM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz} + resolution: {integrity: sha1-IEiSmVzvtr0dAX1S0JcZO8Yd2tM=} cpu: [arm] os: [linux] '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha1-Aj6ww6rEYGahC+ej82Lns087350=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz} + resolution: {integrity: sha1-Aj6ww6rEYGahC+ej82Lns087350=} cpu: [arm64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha1-nm+auwZCTjFApgrJlhOXhvXZm+A=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz} + resolution: {integrity: sha1-nm+auwZCTjFApgrJlhOXhvXZm+A=} cpu: [arm64] os: [linux] libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha1-sRFBfxfJ0bAu++yOCDmPDFUnu0Q=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz} + resolution: {integrity: sha1-sRFBfxfJ0bAu++yOCDmPDFUnu0Q=} cpu: [ppc64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha1-kv+/AnSK8+mYc5RcmoperQHVCKk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz} + resolution: {integrity: sha1-kv+/AnSK8+mYc5RcmoperQHVCKk=} cpu: [riscv64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha1-C+xvElj8OQ5rMF6f9EJWyyB94WU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz} + resolution: {integrity: sha1-C+xvElj8OQ5rMF6f9EJWyyB94WU=} cpu: [riscv64] os: [linux] libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha1-V3hDoITFlS9ZBncGM8z7idrJvJQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz} + resolution: {integrity: sha1-V3hDoITFlS9ZBncGM8z7idrJvJQ=} cpu: [s390x] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha1-NvsxjuvdaQ9toyrF4EmadvqIGTU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz} + resolution: {integrity: sha1-NvsxjuvdaQ9toyrF4EmadvqIGTU=} cpu: [x64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha1-v7mvdfeD+Y9qIsQkQhTv5N8YU9Y=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz} + resolution: {integrity: sha1-v7mvdfeD+Y9qIsQkQhTv5N8YU9Y=} cpu: [x64] os: [linux] libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha1-dSw1ndh1aEsnQpUA2IIm18xy9x0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz} + resolution: {integrity: sha1-dSw1ndh1aEsnQpUA2IIm18xy9x0=} engines: {node: '>=14.0.0'} cpu: [wasm32] '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha1-zlc15gDkwvu0Cc0FGzt9pKOZrzU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz} + resolution: {integrity: sha1-zlc15gDkwvu0Cc0FGzt9pKOZrzU=} cpu: [arm64] os: [win32] '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha1-cvxXvHxk7Fw94NZO4NGBAxe8YKY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz} + resolution: {integrity: sha1-cvxXvHxk7Fw94NZO4NGBAxe8YKY=} cpu: [ia32] os: [win32] '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha1-U4seEDv42YZOe4XMlvqNb7bEB3c=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz} + resolution: {integrity: sha1-U4seEDv42YZOe4XMlvqNb7bEB3c=} cpu: [x64] os: [win32] @@ -1364,23 +1385,23 @@ packages: engines: {node: '>=10.13'} '@zkochan/js-yaml@0.0.11': - resolution: {integrity: sha1-T2aH2CGxW1MG1Z391Mu32K5wHI0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@zkochan/js-yaml/-/js-yaml-0.0.11.tgz} + resolution: {integrity: sha1-T2aH2CGxW1MG1Z391Mu32K5wHI0=} hasBin: true '@zkochan/js-yaml@0.0.6': - resolution: {integrity: sha1-l18LMG5wXii4BooHc3+kbT/ASCY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz} + resolution: {integrity: sha1-l18LMG5wXii4BooHc3+kbT/ASCY=} hasBin: true '@zkochan/rimraf@2.1.3': - resolution: {integrity: sha1-EHTLctbkmXJ1KFsEKWo0O2rHBGs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@zkochan/rimraf/-/rimraf-2.1.3.tgz} + resolution: {integrity: sha1-EHTLctbkmXJ1KFsEKWo0O2rHBGs=} engines: {node: '>=12.10'} '@zkochan/rimraf@3.0.2': - resolution: {integrity: sha1-3ym2W/PS/D4ON3Q/G8/jhVn40bo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@zkochan/rimraf/-/rimraf-3.0.2.tgz} + resolution: {integrity: sha1-3ym2W/PS/D4ON3Q/G8/jhVn40bo=} engines: {node: '>=18.12'} '@zkochan/which@2.0.3': - resolution: {integrity: sha1-okOQNZOQ04wVH6YHgbNiC8WhMtA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@zkochan/which/-/which-2.0.3.tgz} + resolution: {integrity: sha1-okOQNZOQ04wVH6YHgbNiC8WhMtA=} engines: {node: '>= 8'} hasBin: true @@ -1706,7 +1727,7 @@ packages: engines: {node: '>= 12.0.0'} comver-to-semver@1.0.0: - resolution: {integrity: sha1-bD86+dehFVu9fteFtA9PSocGYZU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/comver-to-semver/-/comver-to-semver-1.0.0.tgz} + resolution: {integrity: sha1-bD86+dehFVu9fteFtA9PSocGYZU=} engines: {node: '>=12.17'} concat-map@0.0.1: @@ -1845,7 +1866,7 @@ packages: engines: {node: '>=12'} emoji-regex@8.0.0: - resolution: {integrity: sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/emoji-regex/-/emoji-regex-8.0.0.tgz} + resolution: {integrity: sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=} emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -1969,7 +1990,7 @@ packages: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 eslint-plugin-tsdoc@0.5.3: - resolution: {integrity: sha1-njMIsLlZvA332GU8+DbAHvtdcrI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.5.3.tgz} + resolution: {integrity: sha1-njMIsLlZvA332GU8+DbAHvtdcrI=} peerDependencies: eslint: '>=7' peerDependenciesMeta: @@ -2143,7 +2164,7 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: - resolution: {integrity: sha1-ysZAd4XQNnWipeGlMFxpezR9kNY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fsevents/-/fsevents-2.3.3.tgz} + resolution: {integrity: sha1-ysZAd4XQNnWipeGlMFxpezR9kNY=} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -2170,7 +2191,7 @@ packages: engines: {node: '>= 0.4'} get-npm-tarball-url@2.1.0: - resolution: {integrity: sha1-y9a7JYhGIrwxkcdhRmyTrIM0MhM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz} + resolution: {integrity: sha1-y9a7JYhGIrwxkcdhRmyTrIM0MhM=} engines: {node: '>=12.17'} get-package-type@0.1.0: @@ -2234,7 +2255,7 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graceful-fs@4.2.4: - resolution: {integrity: sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/graceful-fs/-/graceful-fs-4.2.4.tgz} + resolution: {integrity: sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=} has-bigints@1.1.0: resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} @@ -2392,7 +2413,7 @@ packages: engines: {node: '>= 0.4'} is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz} + resolution: {integrity: sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=} engines: {node: '>=8'} is-generator-fn@2.1.0: @@ -2424,7 +2445,7 @@ packages: engines: {node: '>=0.12.0'} is-plain-obj@2.1.0: - resolution: {integrity: sha1-ReQuN/zPH0Dajl927iFRWEDAkoc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/is-plain-obj/-/is-plain-obj-2.1.0.tgz} + resolution: {integrity: sha1-ReQuN/zPH0Dajl927iFRWEDAkoc=} engines: {node: '>=8'} is-regex@1.2.1: @@ -2645,7 +2666,7 @@ packages: hasBin: true js-yaml@4.3.2: - resolution: {integrity: sha1-jkT7FKJkPFlya7FXh7XxUSyz0/s=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/js-yaml/-/js-yaml-4.3.2.tgz} + resolution: {integrity: sha1-jkT7FKJkPFlya7FXh7XxUSyz0/s=} hasBin: true jsdoc-type-pratt-parser@4.1.0: @@ -3067,7 +3088,7 @@ packages: engines: {node: '>=8'} path-name@1.0.0: - resolution: {integrity: sha1-jKBjpj3nmC36lXYO2v/RAhRJTyQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/path-name/-/path-name-1.0.0.tgz} + resolution: {integrity: sha1-jKBjpj3nmC36lXYO2v/RAhRJTyQ=} path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -3199,10 +3220,10 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rfc4648@1.5.4: - resolution: {integrity: sha1-EXTAr7pyQjoLcMOG7P64CqYbBco=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/rfc4648/-/rfc4648-1.5.4.tgz} + resolution: {integrity: sha1-EXTAr7pyQjoLcMOG7P64CqYbBco=} rimraf@3.0.2: - resolution: {integrity: sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/rimraf/-/rimraf-3.0.2.tgz} + resolution: {integrity: sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true @@ -3224,7 +3245,7 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safe-execa@0.1.2: - resolution: {integrity: sha1-L7sKbxoAx6RexwM/gmWXV/kb6Mc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/safe-execa/-/safe-execa-0.1.2.tgz} + resolution: {integrity: sha1-L7sKbxoAx6RexwM/gmWXV/kb6Mc=} engines: {node: '>=12'} safe-push-apply@1.0.0: @@ -3304,7 +3325,7 @@ packages: engines: {node: '>=8'} sort-keys@4.2.0: - resolution: {integrity: sha1-a3Y4zuQsUG//jBzs3nN20hMVvhg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sort-keys/-/sort-keys-4.2.0.tgz} + resolution: {integrity: sha1-a3Y4zuQsUG//jBzs3nN20hMVvhg=} engines: {node: '>=8'} source-map-support@0.5.13: @@ -3343,7 +3364,7 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} ssri@10.0.5: - resolution: {integrity: sha1-5J781uNjhRlstRXToq1sPwJl74w=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ssri/-/ssri-10.0.5.tgz} + resolution: {integrity: sha1-5J781uNjhRlstRXToq1sPwJl74w=} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} ssri@8.0.1: @@ -3371,7 +3392,7 @@ packages: engines: {node: '>=10'} string-width@4.2.3: - resolution: {integrity: sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/string-width/-/string-width-4.2.3.tgz} + resolution: {integrity: sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=} engines: {node: '>=8'} string-width@5.1.2: @@ -3529,7 +3550,7 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} tslib@2.8.1: - resolution: {integrity: sha1-YS7+TtI11Wfoq6Xypfq3AoCt6D8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/tslib/-/tslib-2.8.1.tgz} + resolution: {integrity: sha1-YS7+TtI11Wfoq6Xypfq3AoCt6D8=} tslint@5.20.1: resolution: {integrity: sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==} @@ -3589,7 +3610,7 @@ packages: hasBin: true typescript@6.0.3: - resolution: {integrity: sha1-kCUdwAeRbpcnhsuU100VsYVXfSE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/typescript/-/typescript-6.0.3.tgz} + resolution: {integrity: sha1-kCUdwAeRbpcnhsuU100VsYVXfSE=} engines: {node: '>=14.17'} hasBin: true @@ -3624,6 +3645,7 @@ packages: uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-to-istanbul@9.3.0: @@ -3687,7 +3709,7 @@ packages: engines: {node: '>=0.10.0'} wrap-ansi@7.0.0: - resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/wrap-ansi/-/wrap-ansi-7.0.0.tgz} + resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=} engines: {node: '>=10'} wrap-ansi@8.1.0: @@ -3698,7 +3720,7 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} write-file-atomic@3.0.3: - resolution: {integrity: sha1-Vr1cWlxwSBzRnFcb05q5ZaXeVug=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/write-file-atomic/-/write-file-atomic-3.0.3.tgz} + resolution: {integrity: sha1-Vr1cWlxwSBzRnFcb05q5ZaXeVug=} write-file-atomic@5.0.1: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} @@ -3740,20 +3762,20 @@ snapshots: '@babel/compat-data@7.29.0': {} - '@babel/core@7.29.0': + '@babel/core@7.29.0(supports-color@8.1.1)': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helpers': 7.29.2 '@babel/parser': 7.29.2 '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -3778,19 +3800,19 @@ snapshots: '@babel/helper-globals@7.28.0': {} - '@babel/helper-module-imports@7.28.6': + '@babel/helper-module-imports@7.28.6(supports-color@8.1.1)': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.29.0(supports-color@8.1.1) + '@babel/helper-module-imports': 7.28.6(supports-color@8.1.1) '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -3811,89 +3833,89 @@ snapshots: dependencies: '@babel/types': 7.29.0 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/template@7.28.6': @@ -3902,7 +3924,7 @@ snapshots: '@babel/parser': 7.29.2 '@babel/types': 7.29.0 - '@babel/traverse@7.29.0': + '@babel/traverse@7.29.0(supports-color@8.1.1)': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 @@ -3910,7 +3932,7 @@ snapshots: '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/types': 7.29.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -3943,30 +3965,30 @@ snapshots: esquery: 1.7.0 jsdoc-type-pratt-parser: 4.1.0 - '@eslint-community/eslint-utils@4.9.1(eslint@9.25.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@9.25.1(supports-color@8.1.1))': dependencies: - eslint: 9.25.1 + eslint: 9.25.1(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.37.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@9.37.0(supports-color@8.1.1))': dependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.20.1': + '@eslint/config-array@0.20.1(supports-color@8.1.1)': dependencies: '@eslint/object-schema': 2.1.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.5 transitivePeerDependencies: - supports-color - '@eslint/config-array@0.21.2': + '@eslint/config-array@0.21.2(supports-color@8.1.1)': dependencies: '@eslint/object-schema': 2.1.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -3989,10 +4011,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5': + '@eslint/eslintrc@3.3.5(supports-color@8.1.1)': dependencies: ajv: 6.14.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -4122,13 +4144,13 @@ snapshots: jest-util: 30.3.0 slash: 3.0.0 - '@jest/core@30.3.0': + '@jest/core@30.3.0(supports-color@8.1.1)': dependencies: '@jest/console': 30.3.0 '@jest/pattern': 30.0.1 - '@jest/reporters': 30.3.0 + '@jest/reporters': 30.3.0(supports-color@8.1.1) '@jest/test-result': 30.3.0(@types/node@20.17.19) - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@types/node': 20.17.19 ansi-escapes: 4.3.2 @@ -4137,15 +4159,15 @@ snapshots: exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.3.0 - jest-config: 30.3.0(@types/node@20.17.19) + jest-config: 30.3.0(@types/node@20.17.19)(supports-color@8.1.1) jest-haste-map: 30.3.0 jest-message-util: 30.3.0 jest-regex-util: 30.0.1 jest-resolve: 30.3.0 - jest-resolve-dependencies: 30.3.0 - jest-runner: 30.3.0 - jest-runtime: 30.3.0 - jest-snapshot: 30.3.0 + jest-resolve-dependencies: 30.3.0(supports-color@8.1.1) + jest-runner: 30.3.0(supports-color@8.1.1) + jest-runtime: 30.3.0(supports-color@8.1.1) + jest-snapshot: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 jest-validate: 30.3.0 jest-watcher: 30.3.0 @@ -4170,10 +4192,10 @@ snapshots: dependencies: '@jest/get-type': 30.1.0 - '@jest/expect@30.3.0': + '@jest/expect@30.3.0(supports-color@8.1.1)': dependencies: expect: 30.3.0 - jest-snapshot: 30.3.0 + jest-snapshot: 30.3.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -4188,10 +4210,10 @@ snapshots: '@jest/get-type@30.1.0': {} - '@jest/globals@30.3.0': + '@jest/globals@30.3.0(supports-color@8.1.1)': dependencies: '@jest/environment': 30.3.0 - '@jest/expect': 30.3.0 + '@jest/expect': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 jest-mock: 30.3.0 transitivePeerDependencies: @@ -4202,12 +4224,12 @@ snapshots: '@types/node': 20.17.19 jest-regex-util: 30.0.1 - '@jest/reporters@30.3.0': + '@jest/reporters@30.3.0(supports-color@8.1.1)': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 30.3.0 '@jest/test-result': 30.3.0(@types/node@20.17.19) - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.4 @@ -4218,9 +4240,9 @@ snapshots: glob: 10.5.0 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 + istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 + istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.2.0 jest-message-util: 30.3.0 jest-util: 30.3.0 @@ -4268,12 +4290,12 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@jest/transform@30.3.0': + '@jest/transform@30.3.0(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 7.0.1 + babel-plugin-istanbul: 7.0.1(supports-color@8.1.1) chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 @@ -4355,7 +4377,7 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@microsoft/rush-lib@file:../../../libraries/rush-lib(@types/node@20.17.19)': + '@microsoft/rush-lib@file:../../../libraries/rush-lib(@types/node@20.17.19)(supports-color@8.1.1)': dependencies: '@inquirer/checkbox': 5.1.3(@types/node@20.17.19) '@inquirer/confirm': 6.0.11(@types/node@20.17.19) @@ -4383,7 +4405,7 @@ snapshots: dotenv: 16.4.7 fast-glob: 3.3.3 git-repo-info: 2.1.1 - https-proxy-agent: 5.0.1 + https-proxy-agent: 5.0.1(supports-color@8.1.1) ignore: 5.1.9 js-yaml: 4.3.2 npm-package-arg: 6.1.1 @@ -4716,94 +4738,94 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@rushstack/eslint-config@file:../../../eslint/eslint-config(eslint@9.25.1)(typescript@4.9.5)': + '@rushstack/eslint-config@file:../../../eslint/eslint-config(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@rushstack/eslint-patch': file:../../../eslint/eslint-patch - '@rushstack/eslint-plugin': file:../../../eslint/eslint-plugin(eslint@9.25.1)(typescript@4.9.5) - '@rushstack/eslint-plugin-packlets': file:../../../eslint/eslint-plugin-packlets(eslint@9.25.1)(typescript@4.9.5) - '@rushstack/eslint-plugin-security': file:../../../eslint/eslint-plugin-security(eslint@9.25.1)(typescript@4.9.5) - '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.25.1)(typescript@4.9.5))(eslint@9.25.1)(typescript@4.9.5) - '@typescript-eslint/parser': 8.56.1(eslint@9.25.1)(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@9.25.1)(typescript@4.9.5) - eslint: 9.25.1 - eslint-plugin-promise: 7.2.1(eslint@9.25.1) - eslint-plugin-react: 7.37.5(eslint@9.25.1) - eslint-plugin-tsdoc: 0.5.3(eslint@9.25.1)(typescript@4.9.5) + '@rushstack/eslint-plugin': file:../../../eslint/eslint-plugin(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@rushstack/eslint-plugin-packlets': file:../../../eslint/eslint-plugin-packlets(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@rushstack/eslint-plugin-security': file:../../../eslint/eslint-plugin-security(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5))(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + eslint: 9.25.1(supports-color@8.1.1) + eslint-plugin-promise: 7.2.1(eslint@9.25.1(supports-color@8.1.1)) + eslint-plugin-react: 7.37.5(eslint@9.25.1(supports-color@8.1.1)) + eslint-plugin-tsdoc: 0.5.3(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@rushstack/eslint-config@file:../../../eslint/eslint-config(eslint@9.37.0)(typescript@5.8.3)': + '@rushstack/eslint-config@file:../../../eslint/eslint-config(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3)': dependencies: '@rushstack/eslint-patch': file:../../../eslint/eslint-patch - '@rushstack/eslint-plugin': file:../../../eslint/eslint-plugin(eslint@9.37.0)(typescript@5.8.3) - '@rushstack/eslint-plugin-packlets': file:../../../eslint/eslint-plugin-packlets(eslint@9.37.0)(typescript@5.8.3) - '@rushstack/eslint-plugin-security': file:../../../eslint/eslint-plugin-security(eslint@9.37.0)(typescript@5.8.3) - '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.3))(eslint@9.37.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.56.1(eslint@9.37.0)(typescript@5.8.3) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.3) - eslint: 9.37.0 - eslint-plugin-promise: 7.2.1(eslint@9.37.0) - eslint-plugin-react: 7.37.5(eslint@9.37.0) - eslint-plugin-tsdoc: 0.5.3(eslint@9.37.0)(typescript@5.8.3) + '@rushstack/eslint-plugin': file:../../../eslint/eslint-plugin(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + '@rushstack/eslint-plugin-packlets': file:../../../eslint/eslint-plugin-packlets(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + '@rushstack/eslint-plugin-security': file:../../../eslint/eslint-plugin-security(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3))(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + eslint: 9.37.0(supports-color@8.1.1) + eslint-plugin-promise: 7.2.1(eslint@9.37.0(supports-color@8.1.1)) + eslint-plugin-react: 7.37.5(eslint@9.37.0(supports-color@8.1.1)) + eslint-plugin-tsdoc: 0.5.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color '@rushstack/eslint-patch@file:../../../eslint/eslint-patch': {} - '@rushstack/eslint-plugin-packlets@file:../../../eslint/eslint-plugin-packlets(eslint@9.25.1)(typescript@4.9.5)': + '@rushstack/eslint-plugin-packlets@file:../../../eslint/eslint-plugin-packlets(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@rushstack/tree-pattern': file:../../../libraries/tree-pattern - '@typescript-eslint/utils': 8.56.1(eslint@9.25.1)(typescript@4.9.5) - eslint: 9.25.1 + '@typescript-eslint/utils': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + eslint: 9.25.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-packlets@file:../../../eslint/eslint-plugin-packlets(eslint@9.37.0)(typescript@5.8.3)': + '@rushstack/eslint-plugin-packlets@file:../../../eslint/eslint-plugin-packlets(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3)': dependencies: '@rushstack/tree-pattern': file:../../../libraries/tree-pattern - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.3) - eslint: 9.37.0 + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + eslint: 9.37.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-security@file:../../../eslint/eslint-plugin-security(eslint@9.25.1)(typescript@4.9.5)': + '@rushstack/eslint-plugin-security@file:../../../eslint/eslint-plugin-security(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@rushstack/tree-pattern': file:../../../libraries/tree-pattern - '@typescript-eslint/utils': 8.56.1(eslint@9.25.1)(typescript@4.9.5) - eslint: 9.25.1 + '@typescript-eslint/utils': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + eslint: 9.25.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-security@file:../../../eslint/eslint-plugin-security(eslint@9.37.0)(typescript@5.8.3)': + '@rushstack/eslint-plugin-security@file:../../../eslint/eslint-plugin-security(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3)': dependencies: '@rushstack/tree-pattern': file:../../../libraries/tree-pattern - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.3) - eslint: 9.37.0 + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + eslint: 9.37.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin@file:../../../eslint/eslint-plugin(eslint@9.25.1)(typescript@4.9.5)': + '@rushstack/eslint-plugin@file:../../../eslint/eslint-plugin(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@rushstack/tree-pattern': file:../../../libraries/tree-pattern - '@typescript-eslint/utils': 8.56.1(eslint@9.25.1)(typescript@4.9.5) - eslint: 9.25.1 + '@typescript-eslint/utils': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + eslint: 9.25.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin@file:../../../eslint/eslint-plugin(eslint@9.37.0)(typescript@5.8.3)': + '@rushstack/eslint-plugin@file:../../../eslint/eslint-plugin(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3)': dependencies: '@rushstack/tree-pattern': file:../../../libraries/tree-pattern - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.3) - eslint: 9.37.0 + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + eslint: 9.37.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript @@ -4825,18 +4847,18 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@rushstack/heft-jest-plugin@file:../../../heft-plugins/heft-jest-plugin(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(jest-environment-node@30.3.0)': + '@rushstack/heft-jest-plugin@file:../../../heft-plugins/heft-jest-plugin(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(jest-environment-node@30.3.0)(supports-color@8.1.1)': dependencies: - '@jest/core': 30.3.0 - '@jest/reporters': 30.3.0 - '@jest/transform': 30.3.0 + '@jest/core': 30.3.0(supports-color@8.1.1) + '@jest/reporters': 30.3.0(supports-color@8.1.1) + '@jest/transform': 30.3.0(supports-color@8.1.1) '@rushstack/heft': file:../../../apps/heft(@types/node@20.17.19) '@rushstack/heft-config-file': file:../../../libraries/heft-config-file(@types/node@20.17.19) '@rushstack/node-core-library': file:../../../libraries/node-core-library(@types/node@20.17.19) '@rushstack/terminal': file:../../../libraries/terminal(@types/node@20.17.19) - jest-config: 30.3.0(@types/node@20.17.19) + jest-config: 30.3.0(@types/node@20.17.19)(supports-color@8.1.1) jest-resolve: 30.3.0 - jest-snapshot: 30.3.0 + jest-snapshot: 30.3.0(supports-color@8.1.1) optionalDependencies: '@types/jest': 30.0.0 jest-environment-node: 30.3.0 @@ -4857,17 +4879,17 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@rushstack/heft-node-rig@file:../../../rigs/heft-node-rig(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/node@20.17.19)': + '@rushstack/heft-node-rig@file:../../../rigs/heft-node-rig(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/node@20.17.19)(supports-color@8.1.1)': dependencies: '@microsoft/api-extractor': file:../../../apps/api-extractor(@types/node@20.17.19) - '@rushstack/eslint-config': file:../../../eslint/eslint-config(eslint@9.37.0)(typescript@5.8.3) + '@rushstack/eslint-config': file:../../../eslint/eslint-config(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) '@rushstack/heft': file:../../../apps/heft(@types/node@20.17.19) '@rushstack/heft-api-extractor-plugin': file:../../../heft-plugins/heft-api-extractor-plugin(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/node@20.17.19) - '@rushstack/heft-jest-plugin': file:../../../heft-plugins/heft-jest-plugin(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(jest-environment-node@30.3.0) + '@rushstack/heft-jest-plugin': file:../../../heft-plugins/heft-jest-plugin(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(jest-environment-node@30.3.0)(supports-color@8.1.1) '@rushstack/heft-lint-plugin': file:../../../heft-plugins/heft-lint-plugin(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/node@20.17.19) '@rushstack/heft-typescript-plugin': file:../../../heft-plugins/heft-typescript-plugin(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/node@20.17.19) '@types/jest': 30.0.0 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) jest-environment-node: 30.3.0 typescript: 5.8.3 transitivePeerDependencies: @@ -5120,15 +5142,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.25.1)(typescript@4.9.5))(eslint@9.25.1)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5))(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.1(eslint@9.25.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) '@typescript-eslint/scope-manager': 8.56.1(typescript@4.9.5) - '@typescript-eslint/type-utils': 8.56.1(eslint@9.25.1)(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@9.25.1)(typescript@4.9.5) + '@typescript-eslint/type-utils': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 8.56.1(typescript@4.9.5) - eslint: 9.25.1 + eslint: 9.25.1(supports-color@8.1.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@4.9.5) @@ -5136,15 +5158,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.3))(eslint@9.37.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3))(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.1(eslint@9.37.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.56.1(typescript@5.8.3) - '@typescript-eslint/type-utils': 8.56.1(eslint@9.37.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.56.1(typescript@5.8.3) - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.8.3) @@ -5152,44 +5174,44 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.1(eslint@9.25.1)(typescript@4.9.5)': + '@typescript-eslint/parser@8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@typescript-eslint/scope-manager': 8.56.1(typescript@4.9.5) '@typescript-eslint/types': 8.56.1(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 8.56.1(typescript@4.9.5) - debug: 4.4.3 - eslint: 9.25.1 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.25.1(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.56.1(typescript@5.8.3) '@typescript-eslint/types': 8.56.1(typescript@5.8.3) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.56.1(typescript@5.8.3) - debug: 4.4.3 - eslint: 9.37.0 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.37.0(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@4.9.5)': + '@typescript-eslint/project-service@8.56.1(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@4.9.5) '@typescript-eslint/types': 8.56.1(typescript@4.9.5) - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@5.8.3)': + '@typescript-eslint/project-service@8.56.1(supports-color@8.1.1)(typescript@5.8.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.8.3) '@typescript-eslint/types': 8.56.1(typescript@5.8.3) - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -5216,25 +5238,25 @@ snapshots: dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.56.1(eslint@9.25.1)(typescript@4.9.5)': + '@typescript-eslint/type-utils@8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@typescript-eslint/types': 8.56.1(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@9.25.1)(typescript@4.9.5) - debug: 4.4.3 - eslint: 9.25.1 + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.25.1(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.56.1(eslint@9.37.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 8.56.1(typescript@5.8.3) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.3) - debug: 4.4.3 - eslint: 9.37.0 + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.37.0(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -5248,13 +5270,13 @@ snapshots: dependencies: typescript: 5.8.3 - '@typescript-eslint/typescript-estree@8.56.1(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@8.56.1(supports-color@8.1.1)(typescript@4.9.5)': dependencies: - '@typescript-eslint/project-service': 8.56.1(typescript@4.9.5) + '@typescript-eslint/project-service': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@4.9.5) '@typescript-eslint/types': 8.56.1(typescript@4.9.5) '@typescript-eslint/visitor-keys': 8.56.1(typescript@4.9.5) - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 @@ -5263,13 +5285,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.56.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.56.1(supports-color@8.1.1)(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.56.1(typescript@5.8.3) + '@typescript-eslint/project-service': 8.56.1(supports-color@8.1.1)(typescript@5.8.3) '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.8.3) '@typescript-eslint/types': 8.56.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.56.1(typescript@5.8.3) - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 @@ -5278,24 +5300,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.1(eslint@9.25.1)(typescript@4.9.5)': + '@typescript-eslint/utils@8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.25.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.25.1(supports-color@8.1.1)) '@typescript-eslint/scope-manager': 8.56.1(typescript@4.9.5) '@typescript-eslint/types': 8.56.1(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - eslint: 9.25.1 + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) + eslint: 9.25.1(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.1(eslint@9.37.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0(supports-color@8.1.1)) '@typescript-eslint/scope-manager': 8.56.1(typescript@5.8.3) '@typescript-eslint/types': 8.56.1(typescript@5.8.3) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.3) - eslint: 9.37.0 + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.3) + eslint: 9.37.0(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -5491,9 +5513,9 @@ snapshots: acorn@8.16.0: {} - agent-base@6.0.2: + agent-base@6.0.2(supports-color@8.1.1): dependencies: - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -5647,25 +5669,25 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - babel-jest@30.3.0(@babel/core@7.29.0): + babel-jest@30.3.0(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 - '@jest/transform': 30.3.0 + '@babel/core': 7.29.0(supports-color@8.1.1) + '@jest/transform': 30.3.0(supports-color@8.1.1) '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.1 - babel-preset-jest: 30.3.0(@babel/core@7.29.0) + babel-plugin-istanbul: 7.0.1(supports-color@8.1.1) + babel-preset-jest: 30.3.0(@babel/core@7.29.0(supports-color@8.1.1)) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-plugin-istanbul@7.0.1: + babel-plugin-istanbul@7.0.1(supports-color@8.1.1): dependencies: '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 6.0.3 + istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) test-exclude: 6.0.0 transitivePeerDependencies: - supports-color @@ -5674,30 +5696,30 @@ snapshots: dependencies: '@types/babel__core': 7.20.5 - babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) - - babel-preset-jest@30.3.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0(supports-color@8.1.1)): + dependencies: + '@babel/core': 7.29.0(supports-color@8.1.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0(supports-color@8.1.1)) + + babel-preset-jest@30.3.0(@babel/core@7.29.0(supports-color@8.1.1)): + dependencies: + '@babel/core': 7.29.0(supports-color@8.1.1) babel-plugin-jest-hoist: 30.3.0 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0(supports-color@8.1.1)) balanced-match@1.0.2: {} @@ -5880,9 +5902,11 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.3: + debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 debuglog@1.0.1: {} @@ -6106,21 +6130,21 @@ snapshots: is-core-module: 2.16.1 resolve: 1.22.11 - eslint-module-utils@2.12.1(eslint@9.37.0): + eslint-module-utils@2.12.1(eslint@9.37.0(supports-color@8.1.1)): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-header@3.1.1(eslint@9.37.0): + eslint-plugin-header@3.1.1(eslint@9.37.0(supports-color@8.1.1)): dependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-headers@1.2.1(eslint@9.37.0): + eslint-plugin-headers@1.2.1(eslint@9.37.0(supports-color@8.1.1)): dependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-import@2.32.0(eslint@9.37.0): + eslint-plugin-import@2.32.0(eslint@9.37.0(supports-color@8.1.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -6129,9 +6153,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint@9.37.0) + eslint-module-utils: 2.12.1(eslint@9.37.0(supports-color@8.1.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -6143,14 +6167,14 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 - eslint-plugin-jsdoc@50.6.11(eslint@9.37.0): + eslint-plugin-jsdoc@50.6.11(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) espree: 10.4.0 esquery: 1.7.0 parse-imports-exports: 0.2.4 @@ -6159,21 +6183,21 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-promise@7.2.1(eslint@9.25.1): + eslint-plugin-promise@7.2.1(eslint@9.25.1(supports-color@8.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.25.1) - eslint: 9.25.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.25.1(supports-color@8.1.1)) + eslint: 9.25.1(supports-color@8.1.1) - eslint-plugin-promise@7.2.1(eslint@9.37.0): + eslint-plugin-promise@7.2.1(eslint@9.37.0(supports-color@8.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0) - eslint: 9.37.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0(supports-color@8.1.1)) + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-react-hooks@5.2.0(eslint@9.37.0): + eslint-plugin-react-hooks@5.2.0(eslint@9.37.0(supports-color@8.1.1)): dependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-react@7.37.5(eslint@9.25.1): + eslint-plugin-react@7.37.5(eslint@9.25.1(supports-color@8.1.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -6181,7 +6205,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 9.25.1 + eslint: 9.25.1(supports-color@8.1.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -6195,7 +6219,7 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-react@7.37.5(eslint@9.37.0): + eslint-plugin-react@7.37.5(eslint@9.37.0(supports-color@8.1.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -6203,7 +6227,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -6217,24 +6241,24 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-tsdoc@0.5.3(eslint@9.25.1)(typescript@4.9.5): + eslint-plugin-tsdoc@0.5.3(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5): dependencies: '@microsoft/tsdoc': 0.17.0 '@microsoft/tsdoc-config': 0.18.2 - '@typescript-eslint/utils': 8.56.1(eslint@9.25.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.56.1(eslint@9.25.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) optionalDependencies: - eslint: 9.25.1 + eslint: 9.25.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-tsdoc@0.5.3(eslint@9.37.0)(typescript@5.8.3): + eslint-plugin-tsdoc@0.5.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3): dependencies: '@microsoft/tsdoc': 0.17.0 '@microsoft/tsdoc-config': 0.18.2 - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) optionalDependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript @@ -6255,14 +6279,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@9.25.1: + eslint@9.25.1(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.25.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.25.1(supports-color@8.1.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.20.1 + '@eslint/config-array': 0.20.1(supports-color@8.1.1) '@eslint/config-helpers': 0.2.3 '@eslint/core': 0.13.0 - '@eslint/eslintrc': 3.3.5 + '@eslint/eslintrc': 3.3.5(supports-color@8.1.1) '@eslint/js': 9.25.1 '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.7 @@ -6273,7 +6297,7 @@ snapshots: ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -6295,14 +6319,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.37.0: + eslint@9.37.0(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0(supports-color@8.1.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 + '@eslint/config-array': 0.21.2(supports-color@8.1.1) '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.16.0 - '@eslint/eslintrc': 3.3.5 + '@eslint/eslintrc': 3.3.5(supports-color@8.1.1) '@eslint/js': 9.37.0 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.7 @@ -6313,7 +6337,7 @@ snapshots: ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -6625,10 +6649,10 @@ snapshots: domutils: 2.8.0 entities: 2.2.0 - https-proxy-agent@5.0.1: + https-proxy-agent@5.0.1(supports-color@8.1.1): dependencies: - agent-base: 6.0.2 - debug: 4.4.3 + agent-base: 6.0.2(supports-color@8.1.1) + debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -6804,9 +6828,9 @@ snapshots: istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@6.0.3: + istanbul-lib-instrument@6.0.3(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/parser': 7.29.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -6820,10 +6844,10 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.6: + istanbul-lib-source-maps@5.0.6(supports-color@8.1.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -6854,10 +6878,10 @@ snapshots: jest-util: 30.3.0 p-limit: 3.1.0 - jest-circus@30.3.0: + jest-circus@30.3.0(supports-color@8.1.1): dependencies: '@jest/environment': 30.3.0 - '@jest/expect': 30.3.0 + '@jest/expect': 30.3.0(supports-color@8.1.1) '@jest/test-result': 30.3.0(@types/node@20.17.19) '@jest/types': 30.3.0 '@types/node': 20.17.19 @@ -6868,8 +6892,8 @@ snapshots: jest-each: 30.3.0 jest-matcher-utils: 30.3.0 jest-message-util: 30.3.0 - jest-runtime: 30.3.0 - jest-snapshot: 30.3.0 + jest-runtime: 30.3.0(supports-color@8.1.1) + jest-snapshot: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 p-limit: 3.1.0 pretty-format: 30.3.0 @@ -6880,25 +6904,25 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.3.0(@types/node@20.17.19): + jest-config@30.3.0(@types/node@20.17.19)(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@jest/get-type': 30.1.0 '@jest/pattern': 30.0.1 '@jest/test-sequencer': 30.3.0(@types/node@20.17.19) '@jest/types': 30.3.0 - babel-jest: 30.3.0(@babel/core@7.29.0) + babel-jest: 30.3.0(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) chalk: 4.1.2 ci-info: 4.4.0 deepmerge: 4.3.1 glob: 10.5.0 graceful-fs: 4.2.11 - jest-circus: 30.3.0 + jest-circus: 30.3.0(supports-color@8.1.1) jest-docblock: 30.2.0 jest-environment-node: 30.3.0 jest-regex-util: 30.0.1 jest-resolve: 30.3.0 - jest-runner: 30.3.0 + jest-runner: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 jest-validate: 30.3.0 parse-json: 5.2.0 @@ -6998,10 +7022,10 @@ snapshots: jest-regex-util@30.0.1: {} - jest-resolve-dependencies@30.3.0: + jest-resolve-dependencies@30.3.0(supports-color@8.1.1): dependencies: jest-regex-util: 30.0.1 - jest-snapshot: 30.3.0 + jest-snapshot: 30.3.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -7016,12 +7040,12 @@ snapshots: slash: 3.0.0 unrs-resolver: 1.11.1 - jest-runner@30.3.0: + jest-runner@30.3.0(supports-color@8.1.1): dependencies: '@jest/console': 30.3.0 '@jest/environment': 30.3.0 '@jest/test-result': 30.3.0(@types/node@20.17.19) - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@types/node': 20.17.19 chalk: 4.1.2 @@ -7034,7 +7058,7 @@ snapshots: jest-leak-detector: 30.3.0 jest-message-util: 30.3.0 jest-resolve: 30.3.0 - jest-runtime: 30.3.0 + jest-runtime: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 jest-watcher: 30.3.0 jest-worker: 30.3.0 @@ -7043,14 +7067,14 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runtime@30.3.0: + jest-runtime@30.3.0(supports-color@8.1.1): dependencies: '@jest/environment': 30.3.0 '@jest/fake-timers': 30.3.0 - '@jest/globals': 30.3.0 + '@jest/globals': 30.3.0(supports-color@8.1.1) '@jest/source-map': 30.0.1 '@jest/test-result': 30.3.0(@types/node@20.17.19) - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@types/node': 20.17.19 chalk: 4.1.2 @@ -7063,26 +7087,26 @@ snapshots: jest-mock: 30.3.0 jest-regex-util: 30.0.1 jest-resolve: 30.3.0 - jest-snapshot: 30.3.0 + jest-snapshot: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - jest-snapshot@30.3.0: + jest-snapshot@30.3.0(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/generator': 7.29.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) '@babel/types': 7.29.0 '@jest/expect-utils': 30.3.0 '@jest/get-type': 30.1.0 '@jest/snapshot-utils': 30.3.0 - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0(supports-color@8.1.1)) chalk: 4.1.2 expect: 30.3.0 graceful-fs: 4.2.11 @@ -7232,35 +7256,35 @@ snapshots: loader-runner@4.3.1: {} - local-eslint-config@file:../../../eslint/local-eslint-config(eslint@9.37.0)(typescript@5.8.3): + local-eslint-config@file:../../../eslint/local-eslint-config(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3): dependencies: - '@rushstack/eslint-config': file:../../../eslint/eslint-config(eslint@9.37.0)(typescript@5.8.3) + '@rushstack/eslint-config': file:../../../eslint/eslint-config(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) '@rushstack/eslint-patch': file:../../../eslint/eslint-patch - '@rushstack/eslint-plugin': file:../../../eslint/eslint-plugin(eslint@9.37.0)(typescript@5.8.3) - '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.3))(eslint@9.37.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.56.1(eslint@9.37.0)(typescript@5.8.3) - eslint: 9.37.0 + '@rushstack/eslint-plugin': file:../../../eslint/eslint-plugin(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3))(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) + eslint: 9.37.0(supports-color@8.1.1) eslint-import-resolver-node: 0.3.9 - eslint-plugin-header: 3.1.1(eslint@9.37.0) - eslint-plugin-headers: 1.2.1(eslint@9.37.0) - eslint-plugin-import: 2.32.0(eslint@9.37.0) - eslint-plugin-jsdoc: 50.6.11(eslint@9.37.0) - eslint-plugin-react-hooks: 5.2.0(eslint@9.37.0) + eslint-plugin-header: 3.1.1(eslint@9.37.0(supports-color@8.1.1)) + eslint-plugin-headers: 1.2.1(eslint@9.37.0(supports-color@8.1.1)) + eslint-plugin-import: 2.32.0(eslint@9.37.0(supports-color@8.1.1)) + eslint-plugin-jsdoc: 50.6.11(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1) + eslint-plugin-react-hooks: 5.2.0(eslint@9.37.0(supports-color@8.1.1)) typescript: 5.8.3 transitivePeerDependencies: - supports-color - local-node-rig@file:../../../rigs/local-node-rig: + local-node-rig@file:../../../rigs/local-node-rig(supports-color@8.1.1): dependencies: '@microsoft/api-extractor': file:../../../apps/api-extractor(@types/node@20.17.19) '@rushstack/eslint-patch': file:../../../eslint/eslint-patch '@rushstack/heft': file:../../../apps/heft(@types/node@20.17.19) - '@rushstack/heft-node-rig': file:../../../rigs/heft-node-rig(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/node@20.17.19) + '@rushstack/heft-node-rig': file:../../../rigs/heft-node-rig(@rushstack/heft@file:../../../apps/heft(@types/node@20.17.19))(@types/node@20.17.19)(supports-color@8.1.1) '@types/jest': 30.0.0 '@types/node': 20.17.19 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) jest-junit: 12.3.0 - local-eslint-config: file:../../../eslint/local-eslint-config(eslint@9.37.0)(typescript@5.8.3) + local-eslint-config: file:../../../eslint/local-eslint-config(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - babel-plugin-macros @@ -8259,7 +8283,7 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 - '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 2.0.0 validate-npm-package-license@3.0.4: diff --git a/common/config/subspaces/build-tests-subspace/repo-state.json b/common/config/subspaces/build-tests-subspace/repo-state.json index 1449961bcde..5e51f8b9e43 100644 --- a/common/config/subspaces/build-tests-subspace/repo-state.json +++ b/common/config/subspaces/build-tests-subspace/repo-state.json @@ -1,6 +1,7 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "18a657d83020df41f6602b7c9087b7253cfee8e0", + "pnpmShrinkwrapHash": "f8fb832e9b92a5c0f91084049d31c486a6ecbb76", "preferredVersionsHash": "550b4cee0bef4e97db6c6aad726df5149d20e7d9", - "packageJsonInjectedDependenciesHash": "293debc6ed16567f5567a7748229a73be6647cc6" + "packageJsonInjectedDependenciesHash": "293debc6ed16567f5567a7748229a73be6647cc6", + "pnpmCatalogsHash": "c5d957ff55ba36f235fa5ba998ada38fbb7437e3" } diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index 13b7ce39782..00e46c11ae1 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -4,17 +4,643 @@ settings: autoInstallPeers: false excludeLinksFromLockfile: false +catalogs: + default: + '@aws-sdk/client-sso-oidc': + specifier: ^3.567.0 + version: 3.1023.0 + '@aws-sdk/client-sts': + specifier: ^3.567.0 + version: 3.1023.0 + '@azure/identity': + specifier: ~4.13.1 + version: 4.13.1 + '@azure/storage-blob': + specifier: ~12.31.0 + version: 12.31.0 + '@babel/core': + specifier: ~7.20.0 + version: 7.20.12 + '@fluentui/react': + specifier: ~8.125.3 + version: 8.125.5 + '@fluentui/react-components': + specifier: ~9.72.9 + version: 9.72.11 + '@inquirer/checkbox': + specifier: ~5.1.3 + version: 5.1.3 + '@inquirer/confirm': + specifier: ~6.0.11 + version: 6.0.11 + '@inquirer/input': + specifier: ~5.0.11 + version: 5.0.11 + '@inquirer/search': + specifier: ~4.1.7 + version: 4.1.7 + '@inquirer/select': + specifier: ~5.1.3 + version: 5.1.3 + '@jest/core': + specifier: ~30.3.0 + version: 30.3.0 + '@jest/reporters': + specifier: ~30.3.0 + version: 30.3.0 + '@jest/transform': + specifier: ~30.3.0 + version: 30.3.0 + '@jest/types': + specifier: 30.3.0 + version: 30.3.0 + '@jridgewell/sourcemap-codec': + specifier: ~1.5.5 + version: 1.5.5 + '@microsoft/teams-js': + specifier: 1.3.0-beta.4 + version: 1.3.0-beta.4 + '@microsoft/tsdoc': + specifier: ~0.17.0 + version: 0.17.0 + '@microsoft/tsdoc-config': + specifier: ~0.18.2 + version: 0.18.2 + '@modelcontextprotocol/sdk': + specifier: ~1.10.2 + version: 1.10.2 + '@playwright/test': + specifier: ~1.62.1 + version: 1.62.1 + '@pnpm/link-bins': + specifier: ~5.3.7 + version: 5.3.25 + '@pnpm/types': + specifier: 1000.8.0 + version: 1000.8.0 + '@radix-ui/colors': + specifier: ~3.0.0 + version: 3.0.0 + '@radix-ui/react-checkbox': + specifier: ~1.3.3 + version: 1.3.3 + '@radix-ui/react-icons': + specifier: ~1.3.2 + version: 1.3.2 + '@radix-ui/react-scroll-area': + specifier: ~1.2.10 + version: 1.2.10 + '@radix-ui/react-tabs': + specifier: ~1.1.13 + version: 1.1.13 + '@redis/client': + specifier: ~5.8.2 + version: 5.8.3 + '@reduxjs/toolkit': + specifier: ~2.11.2 + version: 2.11.2 + '@rspack/core': + specifier: ~1.6.0-beta.0 + version: 1.6.8 + '@rspack/dev-server': + specifier: ^1.1.4 + version: 1.2.1 + '@serverless-stack/aws-lambda-ric': + specifier: ^2.0.12 + version: 2.0.13 + '@serverless-stack/cli': + specifier: 1.18.4 + version: 1.18.4 + '@serverless-stack/resources': + specifier: 1.18.4 + version: 1.18.4 + '@storybook/addon-actions': + specifier: ~6.4.18 + version: 6.4.22 + '@storybook/addon-essentials': + specifier: ~6.4.18 + version: 6.4.22 + '@storybook/addon-links': + specifier: ~6.4.18 + version: 6.4.22 + '@storybook/cli': + specifier: ~9.1.6 + version: 9.1.20 + '@storybook/components': + specifier: ~6.4.18 + version: 6.4.22 + '@storybook/core-events': + specifier: ~6.4.18 + version: 6.4.22 + '@storybook/react': + specifier: ~9.1.6 + version: 9.1.20 + '@storybook/react-webpack5': + specifier: ~9.1.6 + version: 9.1.20 + '@storybook/theming': + specifier: ~6.4.18 + version: 6.4.22 + '@swc/core': + specifier: 1.7.10 + version: 1.7.10 + '@testing-library/dom': + specifier: ~7.21.4 + version: 7.21.8 + '@types/argparse': + specifier: 1.0.38 + version: 1.0.38 + '@types/aws-lambda': + specifier: 8.10.93 + version: 8.10.93 + '@types/compression': + specifier: ~1.7.2 + version: 1.7.5 + '@types/cors': + specifier: ~2.8.12 + version: 2.8.19 + '@types/eslint': + specifier: 9.6.1 + version: 9.6.1 + '@types/express': + specifier: 4.17.21 + version: 4.17.21 + '@types/fs-extra': + specifier: 7.0.0 + version: 7.0.0 + '@types/glob': + specifier: 7.1.1 + version: 7.1.1 + '@types/http-proxy': + specifier: ~1.17.8 + version: 1.17.17 + '@types/jest': + specifier: 30.0.0 + version: 30.0.0 + '@types/jju': + specifier: 1.4.1 + version: 1.4.1 + '@types/js-yaml': + specifier: 4.0.9 + version: 4.0.9 + '@types/json-stable-stringify-without-jsonify': + specifier: 1.0.2 + version: 1.0.2 + '@types/loader-utils': + specifier: 1.1.3 + version: 1.1.3 + '@types/long': + specifier: 4.0.0 + version: 4.0.0 + '@types/mocha': + specifier: 10.0.6 + version: 10.0.6 + '@types/node': + specifier: 20.17.19 + version: 20.17.19 + '@types/node-forge': + specifier: 1.3.14 + version: 1.3.14 + '@types/npm-package-arg': + specifier: 6.1.0 + version: 6.1.0 + '@types/npm-packlist': + specifier: ~1.1.1 + version: 1.1.2 + '@types/object-hash': + specifier: ~3.0.6 + version: 3.0.6 + '@types/react': + specifier: 19.2.7 + version: 19.2.7 + '@types/react-dom': + specifier: 19.2.3 + version: 19.2.3 + '@types/react-redux': + specifier: ~7.1.22 + version: 7.1.34 + '@types/read-package-tree': + specifier: 5.1.0 + version: 5.1.0 + '@types/resolve': + specifier: 1.20.2 + version: 1.20.2 + '@types/semver': + specifier: 7.7.1 + version: 7.7.1 + '@types/serialize-javascript': + specifier: 5.0.4 + version: 5.0.4 + '@types/ssri': + specifier: ~7.1.0 + version: 7.1.5 + '@types/strict-uri-encode': + specifier: 2.0.0 + version: 2.0.0 + '@types/supports-color': + specifier: 8.1.3 + version: 8.1.3 + '@types/tapable': + specifier: 1.0.6 + version: 1.0.6 + '@types/watchpack': + specifier: 2.4.0 + version: 2.4.0 + '@types/webpack': + specifier: 4.41.32 + version: 4.41.32 + '@types/webpack-env': + specifier: 1.18.8 + version: 1.18.8 + '@types/webpack-sources': + specifier: 1.4.2 + version: 1.4.2 + '@types/ws': + specifier: 8.18.1 + version: 8.18.1 + '@types/xmldoc': + specifier: 1.1.4 + version: 1.1.4 + '@typescript-eslint/eslint-plugin': + specifier: ~8.56.1 + version: 8.56.1 + '@typescript-eslint/parser': + specifier: ~8.56.1 + version: 8.56.1 + '@typescript-eslint/rule-tester': + specifier: ~8.56.1 + version: 8.56.1 + '@typescript-eslint/types': + specifier: ~8.56.1 + version: 8.56.1 + '@typescript-eslint/typescript-estree': + specifier: ~8.56.1 + version: 8.56.1 + '@typescript-eslint/utils': + specifier: ~8.56.1 + version: 8.56.1 + '@vscode/test-electron': + specifier: ^1.6.2 + version: 1.6.2 + '@vscode/vsce': + specifier: 3.2.1 + version: 3.2.1 + '@yarnpkg/lockfile': + specifier: ~1.0.2 + version: 1.0.2 + ajv: + specifier: ~8.20.0 + version: 8.20.0 + ajv-draft-04: + specifier: ~1.0.0 + version: 1.0.0 + ajv-formats: + specifier: ~3.0.1 + version: 3.0.1 + argparse: + specifier: ~1.0.9 + version: 1.0.10 + autoprefixer: + specifier: ~10.4.2 + version: 10.4.27 + aws-cdk-lib: + specifier: 2.189.1 + version: 2.189.1 + babel-loader: + specifier: ~8.2.3 + version: 8.2.5 + buttono: + specifier: ~1.0.2 + version: 1.0.4 + chokidar: + specifier: ~3.6.0 + version: 3.6.0 + compression: + specifier: ~1.7.4 + version: 1.7.5 + constructs: + specifier: ~10.0.98 + version: 10.0.130 + cors: + specifier: ~2.8.5 + version: 2.8.6 + css-loader: + specifier: ~6.6.0 + version: 6.6.0 + css-minimizer-webpack-plugin: + specifier: ~3.4.1 + version: 3.4.1 + dependency-path: + specifier: ~9.2.8 + version: 9.2.8 + diff: + specifier: ~8.0.2 + version: 8.0.4 + dotenv: + specifier: ~16.4.7 + version: 16.4.7 + eslint: + specifier: ~9.37.0 + version: 9.37.0 + eslint-import-resolver-node: + specifier: 0.3.9 + version: 0.3.9 + eslint-plugin-header: + specifier: ~3.1.1 + version: 3.1.1 + eslint-plugin-headers: + specifier: ~1.2.1 + version: 1.2.1 + eslint-plugin-import: + specifier: 2.32.0 + version: 2.32.0 + eslint-plugin-jsdoc: + specifier: 50.6.11 + version: 50.6.11 + eslint-plugin-promise: + specifier: ~7.2.1 + version: 7.2.1 + eslint-plugin-react: + specifier: ~7.37.5 + version: 7.37.5 + eslint-plugin-react-hooks: + specifier: 5.2.0 + version: 5.2.0 + eslint-plugin-tsdoc: + specifier: ~0.5.3 + version: 0.5.3 + express: + specifier: 4.21.1 + version: 4.21.1 + fast-glob: + specifier: ~3.3.1 + version: 3.3.3 + fastify: + specifier: ~3.16.1 + version: 3.16.2 + file-loader: + specifier: ~6.0.0 + version: 6.0.0 + fs-extra: + specifier: ~11.3.0 + version: 11.3.4 + git-repo-info: + specifier: ~2.1.0 + version: 2.1.1 + glob: + specifier: ~7.0.5 + version: 7.0.6 + html-webpack-plugin: + specifier: ~5.5.0 + version: 5.5.4 + http-proxy: + specifier: ~1.18.1 + version: 1.18.1 + http2-express-bridge: + specifier: ~1.0.7 + version: 1.0.7 + https-proxy-agent: + specifier: ~5.0.0 + version: 5.0.1 + ignore: + specifier: ~5.1.6 + version: 5.1.9 + import-lazy: + specifier: ~4.0.0 + version: 4.0.0 + jest: + specifier: ~29.3.1 + version: 29.3.1 + jest-config: + specifier: ~30.3.0 + version: 30.3.0 + jest-environment-jsdom: + specifier: ~30.3.0 + version: 30.3.0 + jest-environment-node: + specifier: ~30.3.0 + version: 30.3.0 + jest-junit: + specifier: 12.3.0 + version: 12.3.0 + jest-resolve: + specifier: ~30.3.0 + version: 30.3.0 + jest-snapshot: + specifier: ~30.3.0 + version: 30.3.0 + jest-watch-select-projects: + specifier: 2.0.0 + version: 2.0.0 + jju: + specifier: ~1.4.0 + version: 1.4.0 + js-yaml: + specifier: ~4.3.2 + version: 4.3.2 + json-schema-to-typescript: + specifier: ~15.0.4 + version: 15.0.4 + json-stable-stringify-without-jsonify: + specifier: 1.0.1 + version: 1.0.1 + jsonpath-plus: + specifier: ~10.3.0 + version: 10.3.0 + jszip: + specifier: ~3.8.0 + version: 3.8.0 + loader-utils: + specifier: 1.4.2 + version: 1.4.2 + long: + specifier: ^4.0.0 + version: 4.0.0 + memfs: + specifier: 4.12.0 + version: 4.12.0 + mini-css-extract-plugin: + specifier: ~2.5.3 + version: 2.5.3 + minimatch: + specifier: 10.2.3 + version: 10.2.3 + mocha: + specifier: ^10.1.0 + version: 10.8.2 + node-forge: + specifier: ~1.4.0 + version: 1.4.0 + npm-package-arg: + specifier: ~6.1.0 + version: 6.1.1 + npm-packlist: + specifier: ~5.1.3 + version: 5.1.3 + object-hash: + specifier: 3.0.0 + version: 3.0.0 + playwright: + specifier: 1.62.1 + version: 1.62.1 + playwright-core: + specifier: ~1.62.1 + version: 1.62.1 + pnpm-sync-lib: + specifier: 0.3.4 + version: 0.3.4 + postcss: + specifier: ~8.5.10 + version: 8.5.12 + postcss-loader: + specifier: ~6.2.1 + version: 6.2.1 + postcss-modules: + specifier: ~6.0.0 + version: 6.0.1 + prism-react-renderer: + specifier: ~2.4.1 + version: 2.4.1 + pseudolocale: + specifier: ~1.1.0 + version: 1.1.0 + react: + specifier: ~19.2.3 + version: 19.2.4 + react-dom: + specifier: ~19.2.3 + version: 19.2.4 + react-hook-form: + specifier: ~7.69.0 + version: 7.69.0 + react-redux: + specifier: ~9.2.0 + version: 9.2.0 + read-package-tree: + specifier: ~5.1.5 + version: 5.1.6 + redux: + specifier: ~5.0.1 + version: 5.0.1 + resolve: + specifier: ~1.22.1 + version: 1.22.11 + resolve-pkg-maps: + specifier: ~1.0.0 + version: 1.0.0 + rxjs: + specifier: ~6.6.7 + version: 6.6.7 + sass: + specifier: ~1.49.7 + version: 1.49.11 + sass-embedded: + specifier: ~1.85.1 + version: 1.85.1 + sass-loader: + specifier: ~12.4.0 + version: 12.4.0 + semver: + specifier: ~7.7.4 + version: 7.7.4 + serialize-javascript: + specifier: ~7.1.3 + version: 7.1.3 + source-map: + specifier: ~0.7.3 + version: 0.7.6 + source-map-loader: + specifier: ~3.0.1 + version: 3.0.2 + ssri: + specifier: ~8.0.0 + version: 8.0.1 + storybook: + specifier: ~9.1.6 + version: 9.1.20 + strict-uri-encode: + specifier: ~2.0.0 + version: 2.0.0 + string-argv: + specifier: ~0.3.1 + version: 0.3.2 + style-loader: + specifier: ~3.3.1 + version: 3.3.4 + supports-color: + specifier: ~8.1.1 + version: 8.1.1 + tapable: + specifier: 2.3.0 + version: 2.3.0 + tar: + specifier: ~7.5.6 + version: 7.5.13 + terser: + specifier: ^5.9.0 + version: 5.46.1 + terser-webpack-plugin: + specifier: ~5.3.1 + version: 5.3.17 + true-case-path: + specifier: ~2.2.1 + version: 2.2.1 + ts-loader: + specifier: 6.0.0 + version: 6.0.0 + tslib: + specifier: ~2.8.1 + version: 2.8.1 + tslint: + specifier: ~5.20.1 + version: 5.20.1 + typescript: + specifier: ~5.8.2 + version: 5.8.2 + url-loader: + specifier: ~4.1.1 + version: 4.1.1 + watchpack: + specifier: 2.4.0 + version: 2.4.0 + webpack: + specifier: ~5.105.2 + version: 5.105.4 + webpack-bundle-analyzer: + specifier: ~4.5.0 + version: 4.5.0 + webpack-dev-server: + specifier: ^5.1.0 + version: 5.2.3 + webpack-merge: + specifier: ~5.8.0 + version: 5.8.0 + webpack-sources: + specifier: ~1.4.3 + version: 1.4.3 + ws: + specifier: ~8.21.0 + version: 8.21.0 + xmldoc: + specifier: ~1.1.2 + version: 1.1.4 + zod: + specifier: ~3.25.76 + version: 3.25.76 + overrides: - package-json: ^7 '@types/estree': 1.0.8 '@types/react@17.0.74>@types/scheduler': 0.16.8 - loader-utils@^2.0.0: 2.0.4 fast-xml-parser@^5.3.3: 5.3.5 + loader-utils@^2.0.0: 2.0.4 + package-json: ^7 packageExtensionsChecksum: sha256-8fXYR9X9qRA57SZJJSADz6C9KMP6QQYYut4DHyehah0= pnpmfileChecksum: sha256-FceiOBivXBfnQ6+mNFF4or5E/6NvJXB3oz3cjl5O7OM= +untrackedPnpmfileReadPackageHook: true + importers: .: {} @@ -25,7 +651,7 @@ importers: specifier: workspace:* version: link:../../libraries/api-extractor-model '@microsoft/tsdoc': - specifier: ~0.17.0 + specifier: 'catalog:' version: 0.17.0 '@rushstack/node-core-library': specifier: workspace:* @@ -37,24 +663,24 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line js-yaml: - specifier: ~4.3.2 + specifier: 'catalog:' version: 4.3.2 resolve: - specifier: ~1.22.1 + specifier: 'catalog:' version: 1.22.11 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../heft '@types/js-yaml': - specifier: 4.0.9 + specifier: 'catalog:' version: 4.0.9 '@types/resolve': - specifier: 1.20.2 + specifier: 'catalog:' version: 1.20.2 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -65,10 +691,10 @@ importers: specifier: workspace:* version: link:../../libraries/api-extractor-model '@microsoft/tsdoc': - specifier: ~0.17.0 + specifier: 'catalog:' version: 0.17.0 '@microsoft/tsdoc-config': - specifier: ~0.18.2 + specifier: 'catalog:' version: 0.18.2 '@rushstack/node-core-library': specifier: workspace:* @@ -83,16 +709,16 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line diff: - specifier: ~8.0.2 + specifier: 'catalog:' version: 8.0.4 minimatch: - specifier: 10.2.3 + specifier: 'catalog:' version: 10.2.3 resolve: - specifier: ~1.22.1 + specifier: 'catalog:' version: 1.22.11 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 source-map: specifier: ~0.6.1 @@ -105,17 +731,17 @@ importers: specifier: 1.3.4 version: 1.3.4(@types/node@22.9.3) '@types/resolve': - specifier: 1.20.2 + specifier: 'catalog:' version: 1.20.2 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config @@ -133,8 +759,8 @@ importers: specifier: workspace:* version: link:../heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -160,22 +786,22 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 fast-glob: - specifier: ~3.3.1 + specifier: 'catalog:' version: 3.3.3 git-repo-info: - specifier: ~2.1.0 + specifier: 'catalog:' version: 2.1.1 ignore: - specifier: ~5.1.6 + specifier: 'catalog:' version: 5.1.9 tapable: specifier: 1.1.3 version: 1.1.3 watchpack: - specifier: 2.4.0 + specifier: 'catalog:' version: 2.4.0 devDependencies: '@microsoft/api-extractor': @@ -185,14 +811,14 @@ importers: specifier: 1.3.4 version: 1.3.4(@types/node@22.9.3) '@types/watchpack': - specifier: 2.4.0 + specifier: 'catalog:' version: 2.4.0 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../apps/lockfile-explorer: dependencies: @@ -215,26 +841,26 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line cors: - specifier: ~2.8.5 + specifier: 'catalog:' version: 2.8.6 express: - specifier: 4.21.1 + specifier: 'catalog:' version: 4.21.1 js-yaml: - specifier: ~4.3.2 + specifier: 'catalog:' version: 4.3.2 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@pnpm/lockfile.types': specifier: 1002.0.1 version: 1002.0.1 '@pnpm/types': - specifier: 1000.8.0 + specifier: 'catalog:' version: 1000.8.0 '@rushstack/heft': specifier: workspace:* @@ -243,20 +869,20 @@ importers: specifier: workspace:* version: link:../lockfile-explorer-web '@types/cors': - specifier: ~2.8.12 + specifier: 'catalog:' version: 2.8.19 '@types/express': - specifier: 4.17.21 + specifier: 'catalog:' version: 4.17.21 '@types/js-yaml': - specifier: 4.0.9 + specifier: 'catalog:' version: 4.0.9 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -264,42 +890,42 @@ importers: ../../../apps/lockfile-explorer-web: dependencies: '@reduxjs/toolkit': - specifier: ~2.11.2 + specifier: 'catalog:' version: 2.11.2(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1))(react@19.2.4) '@rushstack/rush-themed-ui': specifier: workspace:* version: link:../../libraries/rush-themed-ui prism-react-renderer: - specifier: ~2.4.1 + specifier: 'catalog:' version: 2.4.1(react@19.2.4) react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) react-redux: - specifier: ~9.2.0 + specifier: 'catalog:' version: 9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1) redux: - specifier: ~5.0.1 + specifier: 'catalog:' version: 5.0.1 tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../heft '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-web-rig: specifier: workspace:* version: link:../../rigs/local-web-rig @@ -319,38 +945,38 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line playwright: - specifier: 1.62.1 + specifier: 'catalog:' version: 1.62.1 string-argv: - specifier: ~0.3.1 + specifier: 'catalog:' version: 0.3.2 ws: - specifier: ~8.21.0 + specifier: 'catalog:' version: 8.21.0 devDependencies: '@playwright/test': - specifier: ~1.62.1 + specifier: 'catalog:' version: 1.62.1 '@rushstack/heft': specifier: workspace:* version: link:../heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 '@types/ws': - specifier: 8.18.1 + specifier: 'catalog:' version: 8.18.1 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig playwright-core: - specifier: ~1.62.1 + specifier: 'catalog:' version: 1.62.1 ../../../apps/rundown: @@ -362,15 +988,15 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line string-argv: - specifier: ~0.3.1 + specifier: 'catalog:' version: 0.3.2 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -390,7 +1016,7 @@ importers: specifier: workspace:* version: link:../../libraries/terminal semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@rushstack/heft': @@ -409,11 +1035,11 @@ importers: specifier: workspace:* version: link:../../rush-plugins/rush-serve-plugin '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -461,8 +1087,8 @@ importers: specifier: workspace:* version: link:../../rush-plugins/rush-http-build-cache-plugin eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -470,8 +1096,8 @@ importers: ../../../apps/rush-mcp-server: dependencies: '@modelcontextprotocol/sdk': - specifier: ~1.10.2 - version: 1.10.2 + specifier: 'catalog:' + version: 1.10.2(supports-color@8.1.1) '@rushstack/node-core-library': specifier: workspace:* version: link:../../libraries/node-core-library @@ -485,37 +1111,37 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line zod: - specifier: ~3.25.76 + specifier: 'catalog:' version: 3.25.76 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../apps/rush-serve-dashboard: dependencies: tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-web-rig: specifier: workspace:* version: link:../../rigs/local-web-rig @@ -532,27 +1158,27 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line resolve: - specifier: ~1.22.1 + specifier: 'catalog:' version: 1.22.11 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../heft '@types/resolve': - specifier: 1.20.2 + specifier: 'catalog:' version: 1.20.2 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -569,15 +1195,15 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -597,19 +1223,19 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests-samples/heft-node-jest-tutorial: @@ -627,19 +1253,19 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests-samples/heft-node-rig-tutorial: @@ -651,14 +1277,14 @@ importers: specifier: workspace:* version: link:../../rigs/heft-node-rig '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config @@ -666,10 +1292,10 @@ importers: ../../../build-tests-samples/heft-serverless-stack-tutorial: devDependencies: '@aws-sdk/client-sso-oidc': - specifier: ^3.567.0 + specifier: 'catalog:' version: 3.1023.0 '@aws-sdk/client-sts': - specifier: ^3.567.0 + specifier: 'catalog:' version: 3.1023.0 '@rushstack/heft': specifier: workspace:* @@ -687,37 +1313,37 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@serverless-stack/aws-lambda-ric': - specifier: ^2.0.12 - version: 2.0.13 + specifier: 'catalog:' + version: 2.0.13(supports-color@8.1.1) '@serverless-stack/cli': - specifier: 1.18.4 - version: 1.18.4(constructs@10.0.130) + specifier: 'catalog:' + version: 1.18.4(constructs@10.0.130)(supports-color@8.1.1) '@serverless-stack/resources': - specifier: 1.18.4 - version: 1.18.4 + specifier: 'catalog:' + version: 1.18.4(supports-color@8.1.1) '@types/aws-lambda': - specifier: 8.10.93 + specifier: 'catalog:' version: 8.10.93 '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 aws-cdk-lib: - specifier: 2.189.1 + specifier: 'catalog:' version: 2.189.1(constructs@10.0.130) constructs: - specifier: ~10.0.98 + specifier: 'catalog:' version: 10.0.130 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests-samples/heft-storybook-v6-react-tutorial: @@ -729,12 +1355,12 @@ importers: specifier: ~17.0.2 version: 17.0.2(react@17.0.2) tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@babel/core': - specifier: ~7.20.0 - version: 7.20.12 + specifier: 'catalog:' + version: 7.20.12(supports-color@8.1.1) '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft @@ -758,12 +1384,12 @@ importers: version: link:../../webpack/webpack4-module-minifier-plugin '@storybook/react': specifier: ~6.4.18 - version: 6.4.22(@babel/core@7.20.12)(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1) + version: 6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1) '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/react': specifier: 17.0.74 @@ -772,14 +1398,14 @@ importers: specifier: 17.0.25 version: 17.0.25 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 css-loader: specifier: ~5.2.7 version: 5.2.7(webpack@4.47.0) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) heft-storybook-v6-react-tutorial-storykit: specifier: workspace:* version: link:../heft-storybook-v6-react-tutorial-storykit @@ -796,7 +1422,7 @@ importers: specifier: ~2.0.0 version: 2.0.0(webpack@4.47.0) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: specifier: ~4.47.0 @@ -821,37 +1447,37 @@ importers: ../../../build-tests-samples/heft-storybook-v6-react-tutorial-storykit: dependencies: '@babel/core': - specifier: ~7.20.0 - version: 7.20.12 + specifier: 'catalog:' + version: 7.20.12(supports-color@8.1.1) '@storybook/addon-actions': - specifier: ~6.4.18 - version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + specifier: 'catalog:' + version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/addon-essentials': - specifier: ~6.4.18 - version: 6.4.22(@babel/core@7.20.12)(@storybook/react@6.4.22(@babel/core@7.20.12)(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1))(@types/react@17.0.74)(babel-loader@8.2.5(@babel/core@7.20.12)(webpack@4.47.0))(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0) + specifier: 'catalog:' + version: 6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@storybook/react@6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1))(@types/react@17.0.74)(babel-loader@8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@4.47.0))(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0) '@storybook/addon-links': - specifier: ~6.4.18 - version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + specifier: 'catalog:' + version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/cli': specifier: ~6.4.18 - version: 6.4.22(eslint@9.37.0)(jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + version: 6.4.22(eslint@9.37.0(supports-color@8.1.1))(jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) '@storybook/components': - specifier: ~6.4.18 - version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + specifier: 'catalog:' + version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/core-events': - specifier: ~6.4.18 + specifier: 'catalog:' version: 6.4.22 '@storybook/react': specifier: ~6.4.18 - version: 6.4.22(@babel/core@7.20.12)(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1) + version: 6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1) '@storybook/theming': - specifier: ~6.4.18 - version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + specifier: 'catalog:' + version: 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/react': specifier: 17.0.74 @@ -860,17 +1486,17 @@ importers: specifier: 17.0.25 version: 17.0.25 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 babel-loader: - specifier: ~8.2.3 - version: 8.2.5(@babel/core@7.20.12)(webpack@4.47.0) + specifier: 'catalog:' + version: 8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@4.47.0) css-loader: specifier: ~5.2.7 version: 5.2.7(webpack@4.47.0) jest: - specifier: ~29.3.1 - version: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0) + specifier: 'catalog:' + version: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) react: specifier: ~17.0.2 version: 17.0.2 @@ -884,7 +1510,7 @@ importers: specifier: ~3.0.8 version: 3.0.8(webpack@4.47.0) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: specifier: ~4.47.0 @@ -894,8 +1520,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-web-rig: specifier: workspace:* version: link:../../rigs/local-web-rig @@ -903,18 +1529,18 @@ importers: ../../../build-tests-samples/heft-storybook-v9-react-tutorial: dependencies: react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@babel/core': - specifier: ~7.20.0 - version: 7.20.12 + specifier: 'catalog:' + version: 7.20.12(supports-color@8.1.1) '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft @@ -943,59 +1569,59 @@ importers: specifier: workspace:* version: link:../../webpack/webpack5-module-minifier-plugin '@storybook/react': - specifier: ~9.1.6 - version: 9.1.20(@types/node@20.17.19)(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2) + specifier: 'catalog:' + version: 9.1.20(@types/node@20.17.19)(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(typescript@5.8.2) '@storybook/react-webpack5': - specifier: ~9.1.6 - version: 9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/node@20.17.19)(@types/react@19.2.7)(@types/webpack@4.41.32)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2) + specifier: 'catalog:' + version: 9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.7.10(@swc/helpers@0.5.21))(@types/node@20.17.19)(@types/react@19.2.7)(@types/webpack@4.41.32)(esbuild@0.28.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)(uglify-js@3.19.3) '@testing-library/dom': - specifier: ~7.21.4 + specifier: 'catalog:' version: 7.21.8 '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 css-loader: specifier: ~5.2.7 - version: 5.2.7(webpack@5.105.4) + version: 5.2.7(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) heft-storybook-v9-react-tutorial-storykit: specifier: workspace:* version: link:../heft-storybook-v9-react-tutorial-storykit html-webpack-plugin: - specifier: ~5.5.0 - version: 5.5.4(webpack@5.105.4) + specifier: 'catalog:' + version: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config source-map-loader: specifier: ~1.1.3 - version: 1.1.3(webpack@5.105.4) + version: 1.1.3(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) storybook: - specifier: ~9.1.6 - version: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + specifier: 'catalog:' + version: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) style-loader: specifier: ~2.0.0 - version: 2.0.0(webpack@5.105.4) + version: 2.0.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../build-tests-samples/heft-storybook-v9-react-tutorial-app: dependencies: @@ -1019,72 +1645,72 @@ importers: ../../../build-tests-samples/heft-storybook-v9-react-tutorial-storykit: dependencies: '@babel/core': - specifier: ~7.20.0 - version: 7.20.12 + specifier: 'catalog:' + version: 7.20.12(supports-color@8.1.1) '@storybook/cli': - specifier: ~9.1.6 - version: 9.1.20(@babel/preset-env@7.29.2(@babel/core@7.20.12))(@testing-library/dom@7.21.8)(prettier@3.8.1) + specifier: 'catalog:' + version: 9.1.20(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) '@storybook/react': - specifier: ~9.1.6 - version: 9.1.20(@types/node@20.17.19)(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2) + specifier: 'catalog:' + version: 9.1.20(@types/node@20.17.19)(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(typescript@5.8.2) '@storybook/react-webpack5': - specifier: ~9.1.6 - version: 9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/node@20.17.19)(@types/react@19.2.7)(@types/webpack@4.41.32)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2) + specifier: 'catalog:' + version: 9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.7.10(@swc/helpers@0.5.21))(@types/node@20.17.19)(@types/react@19.2.7)(@types/webpack@4.41.32)(esbuild@0.28.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)(uglify-js@3.19.3) '@testing-library/dom': - specifier: ~7.21.4 + specifier: 'catalog:' version: 7.21.8 '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 babel-loader: - specifier: ~8.2.3 - version: 8.2.5(@babel/core@7.20.12)(webpack@5.105.4) + specifier: 'catalog:' + version: 8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) css-loader: specifier: ~5.2.7 - version: 5.2.7(webpack@5.105.4) + version: 5.2.7(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) jest: - specifier: ~29.3.1 - version: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0) + specifier: 'catalog:' + version: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) storybook: - specifier: ~9.1.6 - version: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + specifier: 'catalog:' + version: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) style-loader: specifier: ~2.0.0 - version: 2.0.0(webpack@5.105.4) + version: 2.0.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) terser-webpack-plugin: specifier: ~3.0.8 - version: 3.0.8(webpack@5.105.4) + version: 3.0.8(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-web-rig: specifier: workspace:* version: link:../../rigs/local-web-rig @@ -1095,13 +1721,13 @@ importers: specifier: workspace:* version: link:../heft-web-rig-library-tutorial react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@rushstack/heft': @@ -1111,17 +1737,17 @@ importers: specifier: workspace:* version: link:../../rigs/heft-web-rig '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config @@ -1129,13 +1755,13 @@ importers: ../../../build-tests-samples/heft-web-rig-library-tutorial: dependencies: react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@rushstack/heft': @@ -1145,17 +1771,17 @@ importers: specifier: workspace:* version: link:../../rigs/heft-web-rig '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config @@ -1163,13 +1789,13 @@ importers: ../../../build-tests-samples/heft-webpack-basic-tutorial: dependencies: react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@rushstack/heft': @@ -1188,41 +1814,41 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-webpack5-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 css-loader: - specifier: ~6.6.0 - version: 6.6.0(webpack@5.105.4) + specifier: 'catalog:' + version: 6.6.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: - specifier: ~5.5.0 - version: 5.5.4(webpack@5.105.4) + specifier: 'catalog:' + version: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config source-map-loader: - specifier: ~3.0.1 - version: 3.0.2(webpack@5.105.4) + specifier: 'catalog:' + version: 3.0.2(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) style-loader: - specifier: ~3.3.1 - version: 3.3.4(webpack@5.105.4) + specifier: 'catalog:' + version: 3.3.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../build-tests-samples/packlets-tutorial: devDependencies: @@ -1239,13 +1865,13 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: specifier: ~8.57.0 - version: 8.57.1 + version: 8.57.1(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/api-documenter-scenarios: @@ -1263,8 +1889,8 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -1287,8 +1913,8 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -1376,7 +2002,7 @@ importers: specifier: workspace:* version: link:../../apps/api-extractor '@microsoft/teams-js': - specifier: 1.3.0-beta.4 + specifier: 'catalog:' version: 1.3.0-beta.4 '@rushstack/heft': specifier: workspace:* @@ -1409,13 +2035,13 @@ importers: ../../../build-tests/api-extractor-test-01: dependencies: '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/long': - specifier: 4.0.0 + specifier: 'catalog:' version: 4.0.0 long: - specifier: ^4.0.0 + specifier: 'catalog:' version: 4.0.0 devDependencies: '@rushstack/heft': @@ -1428,16 +2054,16 @@ importers: ../../../build-tests/api-extractor-test-02: dependencies: '@types/long': - specifier: 4.0.0 + specifier: 'catalog:' version: 4.0.0 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 api-extractor-test-01: specifier: workspace:* version: link:../api-extractor-test-01 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@rushstack/heft': @@ -1486,72 +2112,72 @@ importers: devDependencies: '@rushstack/eslint-config': specifier: 3.7.1 - version: 3.7.1(eslint@7.11.0)(typescript@5.8.2) + version: 3.7.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@typescript-eslint/parser': specifier: ~6.19.0 - version: 6.19.1(eslint@7.11.0)(typescript@5.8.2) + version: 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: specifier: 7.11.0 - version: 7.11.0 + version: 7.11.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/eslint-7-7-test: devDependencies: '@rushstack/eslint-config': specifier: 3.7.1 - version: 3.7.1(eslint@7.7.0)(typescript@5.8.2) + version: 3.7.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@typescript-eslint/parser': specifier: ~6.19.0 - version: 6.19.1(eslint@7.7.0)(typescript@5.8.2) + version: 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: specifier: 7.7.0 - version: 7.7.0 + version: 7.7.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/eslint-7-test: devDependencies: '@rushstack/eslint-config': specifier: 3.7.1 - version: 3.7.1(eslint@7.30.0)(typescript@5.8.2) + version: 3.7.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@typescript-eslint/parser': specifier: ~6.19.0 - version: 6.19.1(eslint@7.30.0)(typescript@5.8.2) + version: 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: specifier: ~7.30.0 - version: 7.30.0 + version: 7.30.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/eslint-8-test: @@ -1563,19 +2189,19 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@8.57.1)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: specifier: ~8.57.0 - version: 8.57.1 + version: 8.57.1(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/eslint-9-test: @@ -1584,19 +2210,19 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/eslint-bulk-suppressions-test: @@ -1617,16 +2243,16 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@8.57.1)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: specifier: ~8.57.0 - version: 8.57.1 + version: 8.57.1(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/eslint-bulk-suppressions-test-flat: @@ -1644,16 +2270,16 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/eslint-bulk-suppressions-test-legacy: @@ -1663,7 +2289,7 @@ importers: version: link:../../eslint/eslint-bulk '@rushstack/eslint-config': specifier: 3.7.1 - version: 3.7.1(eslint@8.57.1)(typescript@5.8.2) + version: 3.7.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@rushstack/eslint-patch': specifier: workspace:* version: link:../../eslint/eslint-patch @@ -1674,22 +2300,22 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@8.57.1)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: specifier: ~8.57.0 - version: 8.57.1 + version: 8.57.1(supports-color@8.1.1) eslint-8.23: specifier: npm:eslint@8.23.1 - version: eslint@8.23.1 + version: eslint@8.23.1(supports-color@8.1.1) eslint-oldest: specifier: npm:eslint@8.6.0 - version: eslint@8.6.0 + version: eslint@8.6.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/esm-node-import-test: @@ -1702,8 +2328,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -1726,19 +2352,19 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-webpack5-plugin '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 html-webpack-plugin: - specifier: ~5.5.0 - version: 5.5.4(webpack@5.105.4) + specifier: 'catalog:' + version: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) webpack-bundle-analyzer: - specifier: ~4.5.0 + specifier: 'catalog:' version: 4.5.0 ../../../build-tests/heft-copy-files-test: @@ -1759,16 +2385,16 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-example-plugin-01: @@ -1787,19 +2413,19 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-example-plugin-02: @@ -1814,11 +2440,11 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) heft-example-plugin-01: specifier: workspace:* version: link:../heft-example-plugin-01 @@ -1826,14 +2452,14 @@ importers: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-fastify-test: dependencies: fastify: - specifier: ~3.16.1 - version: 3.16.2 + specifier: 'catalog:' + version: 3.16.2(supports-color@8.1.1) devDependencies: '@rushstack/heft': specifier: workspace:* @@ -1845,25 +2471,25 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-jest-preset-test: devDependencies: '@jest/types': - specifier: 30.3.0 + specifier: 'catalog:' version: 30.3.0 '@rushstack/heft': specifier: workspace:* @@ -1878,25 +2504,25 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-jest-reporters-test: devDependencies: '@jest/reporters': - specifier: ~30.3.0 - version: 30.3.0 + specifier: 'catalog:' + version: 30.3.0(supports-color@8.1.1) '@jest/types': - specifier: 30.3.0 + specifier: 'catalog:' version: 30.3.0 '@rushstack/heft': specifier: workspace:* @@ -1911,19 +2537,19 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-json-schema-typings-plugin-test: @@ -1938,8 +2564,8 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -1962,7 +2588,7 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-minimal-rig-usage-test: @@ -1974,10 +2600,10 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-jest-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 heft-minimal-rig-test: specifier: workspace:* @@ -2007,14 +2633,14 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) heft-example-plugin-01: specifier: workspace:* version: link:../heft-example-plugin-01 @@ -2025,10 +2651,10 @@ importers: specifier: workspace:* version: link:../../eslint/local-eslint-config tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@5.8.2) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-node-everything-test: @@ -2055,14 +2681,14 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) heft-example-lifecycle-plugin: specifier: workspace:* version: link:../heft-example-lifecycle-plugin @@ -2076,10 +2702,10 @@ importers: specifier: workspace:* version: link:../../eslint/local-eslint-config tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@5.8.2) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-parameter-plugin: @@ -2098,16 +2724,16 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-parameter-plugin-test: @@ -2128,22 +2754,22 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 heft-parameter-plugin: specifier: workspace:* version: link:../heft-parameter-plugin typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-rspack-everything-test: devDependencies: '@rspack/core': - specifier: ~1.6.0-beta.0 + specifier: 'catalog:' version: 1.6.8(@swc/helpers@0.5.21) '@rushstack/heft': specifier: workspace:* @@ -2173,25 +2799,25 @@ importers: specifier: workspace:* version: link:../../libraries/rush-sdk '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-sass-test: dependencies: buttono: - specifier: ~1.0.2 + specifier: 'catalog:' version: 1.0.4 devDependencies: '@rushstack/heft': @@ -2219,29 +2845,29 @@ importers: specifier: workspace:* version: link:../../webpack/webpack4-module-minifier-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 autoprefixer: - specifier: ~10.4.2 + specifier: 'catalog:' version: 10.4.27(postcss@8.5.12) css-loader: specifier: ~5.2.7 version: 5.2.7(webpack@4.47.0) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: specifier: ~4.5.2 version: 4.5.2(webpack@4.47.0) @@ -2249,22 +2875,22 @@ importers: specifier: workspace:* version: link:../../eslint/local-eslint-config postcss: - specifier: ~8.5.10 + specifier: 'catalog:' version: 8.5.12 postcss-loader: specifier: ~4.1.0 version: 4.1.0(postcss@8.5.12)(webpack@4.47.0) react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) style-loader: specifier: ~2.0.0 version: 2.0.0(webpack@4.47.0) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: specifier: ~4.47.0 @@ -2288,19 +2914,19 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-typescript-composite-test: @@ -2318,22 +2944,22 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@5.8.2) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../build-tests/heft-typescript-v2-test: @@ -2363,7 +2989,7 @@ importers: specifier: ts2.9 version: 14.0.1 tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@2.9.2) typescript: specifier: ~2.9.2 @@ -2396,7 +3022,7 @@ importers: specifier: ts3.9 version: 17.0.41 tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@3.9.10) typescript: specifier: ~3.9.10 @@ -2409,7 +3035,7 @@ importers: version: link:../../apps/api-extractor '@rushstack/eslint-config': specifier: 4.9.0 - version: 4.9.0(eslint@8.57.1)(typescript@4.9.5) + version: 4.9.0(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) '@rushstack/eslint-patch': specifier: workspace:* version: link:../../eslint/eslint-patch @@ -2436,9 +3062,9 @@ importers: version: 22.9.3 eslint: specifier: ~8.57.0 - version: 8.57.1 + version: 8.57.1(supports-color@8.1.1) tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@4.9.5) typescript: specifier: ~4.9.5 @@ -2453,8 +3079,8 @@ importers: specifier: workspace:* version: link:../../rigs/heft-web-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../build-tests/heft-webpack4-everything-test: devDependencies: @@ -2489,19 +3115,19 @@ importers: specifier: workspace:* version: link:../../webpack/webpack4-module-minifier-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) file-loader: - specifier: ~6.0.0 + specifier: 'catalog:' version: 6.0.0(webpack@4.47.0) local-eslint-config: specifier: workspace:* @@ -2510,10 +3136,10 @@ importers: specifier: ~1.1.3 version: 1.1.3(webpack@4.47.0) tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@5.8.2) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: specifier: ~4.47.0 @@ -2555,35 +3181,35 @@ importers: specifier: workspace:* version: link:../../webpack/webpack5-module-minifier-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: - specifier: ~5.5.0 - version: 5.5.4(webpack@5.105.4) + specifier: 'catalog:' + version: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config source-map-loader: - specifier: ~3.0.1 - version: 3.0.2(webpack@5.105.4) + specifier: 'catalog:' + version: 3.0.2(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@5.8.2) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../build-tests/localization-plugin-test-01: dependencies: @@ -2603,11 +3229,11 @@ importers: specifier: workspace:* version: link:../../webpack/webpack4-module-minifier-plugin '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: specifier: ~4.5.2 version: 4.5.2(webpack@4.47.0) @@ -2618,11 +3244,11 @@ importers: specifier: ~4.47.0 version: 4.47.0 webpack-bundle-analyzer: - specifier: ~4.5.0 + specifier: 'catalog:' version: 4.5.0 webpack-dev-server: specifier: ~4.9.3 - version: 4.9.3(@types/webpack@4.41.32)(webpack@4.47.0) + version: 4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0) ../../../build-tests/localization-plugin-test-02: dependencies: @@ -2645,11 +3271,11 @@ importers: specifier: workspace:* version: link:../../webpack/webpack4-module-minifier-plugin '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: specifier: ~4.5.2 version: 4.5.2(webpack@4.47.0) @@ -2660,11 +3286,11 @@ importers: specifier: ~4.47.0 version: 4.47.0 webpack-bundle-analyzer: - specifier: ~4.5.0 + specifier: 'catalog:' version: 4.5.0 webpack-dev-server: specifier: ~4.9.3 - version: 4.9.3(@types/webpack@4.41.32)(webpack@4.47.0) + version: 4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0) ../../../build-tests/localization-plugin-test-03: dependencies: @@ -2687,11 +3313,11 @@ importers: specifier: workspace:* version: link:../../webpack/webpack4-module-minifier-plugin '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: specifier: ~4.5.2 version: 4.5.2(webpack@4.47.0) @@ -2699,20 +3325,20 @@ importers: specifier: workspace:* version: link:../../rigs/local-node-rig ts-loader: - specifier: 6.0.0 + specifier: 'catalog:' version: 6.0.0(typescript@5.8.2) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: specifier: ~4.47.0 version: 4.47.0 webpack-bundle-analyzer: - specifier: ~4.5.0 + specifier: 'catalog:' version: 4.5.0 webpack-dev-server: specifier: ~4.9.3 - version: 4.9.3(@types/webpack@4.41.32)(webpack@4.47.0) + version: 4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0) ../../../build-tests/package-extractor-test-01: dependencies: @@ -2721,7 +3347,7 @@ importers: version: link:../package-extractor-test-02 devDependencies: '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 package-extractor-test-03: specifier: workspace:* @@ -2764,8 +3390,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -2788,17 +3414,17 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/http-proxy': - specifier: ~1.17.8 + specifier: 'catalog:' version: 1.17.17 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) http-proxy: - specifier: ~1.18.1 - version: 1.18.1 + specifier: 'catalog:' + version: 1.18.1(debug@4.4.3(supports-color@8.1.1)) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -2816,11 +3442,11 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -2874,11 +3500,11 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -2901,17 +3527,17 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/http-proxy': - specifier: ~1.17.8 + specifier: 'catalog:' version: 1.17.17 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) http-proxy: - specifier: ~1.18.1 - version: 1.18.1 + specifier: 'catalog:' + version: 1.18.1(debug@4.4.3(supports-color@8.1.1)) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -2940,8 +3566,8 @@ importers: specifier: workspace:* version: link:../../libraries/terminal eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -2970,20 +3596,20 @@ importers: specifier: workspace:* version: link:../../webpack/webpack5-module-minifier-plugin '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: specifier: ~8.57.0 - version: 8.57.1 + version: 8.57.1(supports-color@8.1.1) html-webpack-plugin: - specifier: ~5.5.0 - version: 5.5.4(webpack@5.105.4) + specifier: 'catalog:' + version: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../eslint/eslint-bulk: devDependencies: @@ -2994,11 +3620,11 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3018,26 +3644,26 @@ importers: specifier: workspace:* version: link:../eslint-plugin-security '@typescript-eslint/eslint-plugin': - specifier: ~8.56.1 - version: 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.2))(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/typescript-estree': - specifier: ~8.56.1 - version: 8.56.1(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/utils': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint-plugin-promise: - specifier: ~7.2.1 - version: 7.2.1(eslint@9.37.0) + specifier: 'catalog:' + version: 7.2.1(eslint@9.37.0(supports-color@8.1.1)) eslint-plugin-react: - specifier: ~7.37.5 - version: 7.37.5(eslint@9.37.0) + specifier: 'catalog:' + version: 7.37.5(eslint@9.37.0(supports-color@8.1.1)) eslint-plugin-tsdoc: - specifier: ~0.5.3 - version: 0.5.3(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 0.5.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) devDependencies: '@rushstack/heft': specifier: 1.3.4 @@ -3046,10 +3672,10 @@ importers: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../eslint/eslint-patch: @@ -3064,22 +3690,22 @@ importers: specifier: npm:@types/eslint@9.6.1 version: '@types/eslint@9.6.1' '@typescript-eslint/types': - specifier: ~8.56.1 + specifier: 'catalog:' version: 8.56.1(typescript@5.8.2) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) eslint-8: specifier: npm:eslint@~8.57.0 - version: eslint@8.57.1 + version: eslint@8.57.1(supports-color@8.1.1) eslint-9: specifier: npm:eslint@~9.25.1 - version: eslint@9.25.1 + version: eslint@9.25.1(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../eslint/eslint-plugin: @@ -3088,29 +3714,29 @@ importers: specifier: workspace:* version: link:../../libraries/tree-pattern '@typescript-eslint/utils': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) devDependencies: '@rushstack/heft': specifier: 1.3.4 version: 1.3.4(@types/node@22.9.3) '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/rule-tester': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/types': - specifier: ~8.56.1 + specifier: 'catalog:' version: 8.56.1(typescript@5.8.2) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../eslint/eslint-plugin-packlets: @@ -3119,23 +3745,23 @@ importers: specifier: workspace:* version: link:../../libraries/tree-pattern '@typescript-eslint/utils': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) devDependencies: '@rushstack/heft': specifier: 1.3.4 version: 1.3.4(@types/node@22.9.3) '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../eslint/eslint-plugin-security: @@ -3144,29 +3770,29 @@ importers: specifier: workspace:* version: link:../../libraries/tree-pattern '@typescript-eslint/utils': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) devDependencies: '@rushstack/heft': specifier: 1.3.4 version: 1.3.4(@types/node@22.9.3) '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/rule-tester': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/typescript-estree': - specifier: ~8.56.1 - version: 8.56.1(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(supports-color@8.1.1)(typescript@5.8.2) decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../eslint/local-eslint-config: @@ -3181,29 +3807,29 @@ importers: specifier: workspace:* version: link:../eslint-plugin '@typescript-eslint/eslint-plugin': - specifier: ~8.56.1 - version: 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.2))(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint-import-resolver-node: - specifier: 0.3.9 + specifier: 'catalog:' version: 0.3.9 eslint-plugin-header: - specifier: ~3.1.1 - version: 3.1.1(eslint@9.37.0) + specifier: 'catalog:' + version: 3.1.1(eslint@9.37.0(supports-color@8.1.1)) eslint-plugin-headers: - specifier: ~1.2.1 - version: 1.2.1(eslint@9.37.0) + specifier: 'catalog:' + version: 1.2.1(eslint@9.37.0(supports-color@8.1.1)) eslint-plugin-import: - specifier: 2.32.0 - version: 2.32.0(eslint@9.37.0) + specifier: 'catalog:' + version: 2.32.0(eslint@9.37.0(supports-color@8.1.1)) eslint-plugin-jsdoc: - specifier: 50.6.11 - version: 50.6.11(eslint@9.37.0) + specifier: 'catalog:' + version: 50.6.11(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1) eslint-plugin-react-hooks: - specifier: 5.2.0 - version: 5.2.0(eslint@9.37.0) + specifier: 'catalog:' + version: 5.2.0(eslint@9.37.0(supports-color@8.1.1)) devDependencies: '@rushstack/heft': specifier: 1.3.4 @@ -3212,10 +3838,10 @@ importers: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../heft-plugins/heft-api-extractor-plugin: @@ -3224,7 +3850,7 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@microsoft/api-extractor': @@ -3237,14 +3863,14 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../heft-plugins/heft-dev-cert-plugin: dependencies: @@ -3259,8 +3885,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3274,10 +3900,10 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@swc/core': - specifier: 1.7.10 + specifier: 'catalog:' version: 1.7.10(@swc/helpers@0.5.21) '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 tapable: specifier: 1.1.3 @@ -3290,8 +3916,8 @@ importers: specifier: workspace:* version: link:../heft-typescript-plugin eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3299,14 +3925,14 @@ importers: ../../../heft-plugins/heft-jest-plugin: dependencies: '@jest/core': - specifier: ~30.3.0 - version: 30.3.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)) + specifier: 'catalog:' + version: 30.3.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(supports-color@8.1.1) '@jest/reporters': - specifier: ~30.3.0 - version: 30.3.0 + specifier: 'catalog:' + version: 30.3.0(supports-color@8.1.1) '@jest/transform': - specifier: ~30.3.0 - version: 30.3.0 + specifier: 'catalog:' + version: 30.3.0(supports-color@8.1.1) '@rushstack/heft-config-file': specifier: workspace:* version: link:../../libraries/heft-config-file @@ -3317,38 +3943,38 @@ importers: specifier: workspace:* version: link:../../libraries/terminal jest-config: - specifier: ~30.3.0 - version: 30.3.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)) + specifier: 'catalog:' + version: 30.3.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(supports-color@8.1.1) jest-resolve: - specifier: ~30.3.0 + specifier: 'catalog:' version: 30.3.0 jest-snapshot: - specifier: ~30.3.0 - version: 30.3.0 + specifier: 'catalog:' + version: 30.3.0(supports-color@8.1.1) devDependencies: '@jest/types': - specifier: 30.3.0 + specifier: 'catalog:' version: 30.3.0 '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) jest-environment-jsdom: - specifier: ~30.3.0 - version: 30.3.0 + specifier: 'catalog:' + version: 30.3.0(supports-color@8.1.1) jest-environment-node: - specifier: ~30.3.0 + specifier: 'catalog:' version: 30.3.0 jest-watch-select-projects: - specifier: 2.0.0 + specifier: 'catalog:' version: 2.0.0 ../../../heft-plugins/heft-json-schema-typings-plugin: @@ -3360,7 +3986,7 @@ importers: specifier: workspace:* version: link:../../libraries/typings-generator json-schema-to-typescript: - specifier: ~15.0.4 + specifier: 'catalog:' version: 15.0.4 devDependencies: '@rushstack/heft': @@ -3370,8 +3996,8 @@ importers: specifier: workspace:* version: link:../../libraries/terminal eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3382,10 +4008,10 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library json-stable-stringify-without-jsonify: - specifier: 1.0.1 + specifier: 'catalog:' version: 1.0.1 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@rushstack/heft': @@ -3398,31 +4024,31 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/eslint': - specifier: 9.6.1 + specifier: 'catalog:' version: 9.6.1 '@types/eslint-8': specifier: npm:@types/eslint@8.56.10 version: '@types/eslint@8.56.10' '@types/json-stable-stringify-without-jsonify': - specifier: 1.0.2 + specifier: 'catalog:' version: 1.0.2 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) eslint-8: specifier: npm:eslint@~8.57.0 - version: eslint@8.57.1 + version: eslint@8.57.1(supports-color@8.1.1) tslint: - specifier: ~5.20.1 + specifier: 'catalog:' version: 5.20.1(typescript@5.8.2) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../heft-plugins/heft-localization-typings-plugin: @@ -3435,8 +4061,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3444,8 +4070,8 @@ importers: ../../../heft-plugins/heft-rspack-plugin: dependencies: '@rspack/dev-server': - specifier: ^1.1.4 - version: 1.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/webpack@4.41.32)(webpack@5.105.4) + specifier: 'catalog:' + version: 1.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) '@rushstack/debug-certificate-manager': specifier: workspace:* version: link:../../libraries/debug-certificate-manager @@ -3453,17 +4079,17 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library tapable: - specifier: 2.3.0 + specifier: 'catalog:' version: 2.3.0 watchpack: - specifier: 2.4.0 + specifier: 'catalog:' version: 2.4.0 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) devDependencies: '@rspack/core': - specifier: ~1.6.0-beta.0 + specifier: 'catalog:' version: 1.6.8(@swc/helpers@0.5.21) '@rushstack/heft': specifier: workspace:* @@ -3472,11 +4098,11 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/watchpack': - specifier: 2.4.0 + specifier: 'catalog:' version: 2.4.0 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3494,8 +4120,8 @@ importers: specifier: workspace:* version: link:../heft-sass-plugin eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3506,19 +4132,19 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 postcss: - specifier: ~8.5.10 + specifier: 'catalog:' version: 8.5.12 postcss-modules: - specifier: ~6.0.0 + specifier: 'catalog:' version: 6.0.1(postcss@8.5.12) resolve-pkg-maps: - specifier: ~1.0.0 + specifier: 'catalog:' version: 1.0.0 sass-embedded: - specifier: ~1.85.1 + specifier: 'catalog:' version: 1.85.1 tapable: specifier: 1.1.3 @@ -3534,8 +4160,8 @@ importers: specifier: workspace:* version: link:../../libraries/terminal eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3556,8 +4182,8 @@ importers: specifier: workspace:* version: link:../heft-webpack5-plugin eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3581,8 +4207,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3609,8 +4235,8 @@ importers: specifier: workspace:* version: link:../heft-webpack5-plugin eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3624,10 +4250,10 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 tapable: specifier: 1.1.3 @@ -3640,16 +4266,16 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../heft-plugins/heft-vscode-extension-plugin: @@ -3661,15 +4287,15 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@vscode/vsce': - specifier: 3.2.1 - version: 3.2.1 + specifier: 'catalog:' + version: 3.2.1(supports-color@8.1.1) devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3683,17 +4309,17 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 tapable: specifier: 1.1.3 version: 1.1.3 watchpack: - specifier: 2.4.0 + specifier: 'catalog:' version: 2.4.0 webpack-dev-server: specifier: ~4.9.3 - version: 4.9.3(@types/webpack@4.41.32)(webpack@4.47.0) + version: 4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0) devDependencies: '@rushstack/heft': specifier: workspace:* @@ -3702,14 +4328,14 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/watchpack': - specifier: 2.4.0 + specifier: 'catalog:' version: 2.4.0 '@types/webpack': - specifier: 4.41.32 + specifier: 'catalog:' version: 4.41.32 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3726,17 +4352,17 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 tapable: specifier: 1.1.3 version: 1.1.3 watchpack: - specifier: 2.4.0 + specifier: 'catalog:' version: 2.4.0 webpack-dev-server: - specifier: ^5.1.0 - version: 5.2.3(@types/webpack@4.41.32)(webpack@5.105.4) + specifier: 'catalog:' + version: 5.2.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) devDependencies: '@rushstack/heft': specifier: workspace:* @@ -3745,25 +4371,25 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/watchpack': - specifier: 2.4.0 + specifier: 'catalog:' version: 2.4.0 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../libraries/api-extractor-model: dependencies: '@microsoft/tsdoc': - specifier: ~0.17.0 + specifier: 'catalog:' version: 0.17.0 '@microsoft/tsdoc-config': - specifier: ~0.18.2 + specifier: 'catalog:' version: 0.18.2 '@rushstack/node-core-library': specifier: workspace:* @@ -3776,8 +4402,8 @@ importers: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../libraries/credential-cache: dependencies: @@ -3789,8 +4415,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3804,18 +4430,18 @@ importers: specifier: workspace:* version: link:../terminal node-forge: - specifier: ~1.4.0 + specifier: 'catalog:' version: 1.4.0 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/node-forge': - specifier: 1.3.14 + specifier: 'catalog:' version: 1.3.14 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3832,7 +4458,7 @@ importers: specifier: workspace:* version: link:../terminal jsonpath-plus: - specifier: ~10.3.0 + specifier: 'catalog:' version: 10.3.0 devDependencies: '@rushstack/heft': @@ -3842,8 +4468,8 @@ importers: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../libraries/load-themed-styles: devDependencies: @@ -3851,8 +4477,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-web-rig: specifier: workspace:* version: link:../../rigs/local-web-rig @@ -3869,21 +4495,21 @@ importers: specifier: workspace:* version: link:../typings-generator pseudolocale: - specifier: ~1.1.0 + specifier: 'catalog:' version: 1.1.0 xmldoc: - specifier: ~1.1.2 + specifier: 'catalog:' version: 1.1.4 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/xmldoc': - specifier: 1.1.4 + specifier: 'catalog:' version: 1.1.4 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3894,8 +4520,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3906,27 +4532,27 @@ importers: specifier: workspace:* version: link:../worker-pool serialize-javascript: - specifier: ~7.1.3 + specifier: 'catalog:' version: 7.1.3 source-map: - specifier: ~0.7.3 + specifier: 'catalog:' version: 0.7.6 terser: - specifier: ^5.9.0 + specifier: 'catalog:' version: 5.46.1 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/serialize-javascript': - specifier: 5.0.4 + specifier: 'catalog:' version: 5.0.4 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -3934,28 +4560,28 @@ importers: ../../../libraries/node-core-library: dependencies: ajv: - specifier: ~8.20.0 + specifier: 'catalog:' version: 8.20.0 ajv-draft-04: - specifier: ~1.0.0 + specifier: 'catalog:' version: 1.0.0(ajv@8.20.0) ajv-formats: - specifier: ~3.0.1 + specifier: 'catalog:' version: 3.0.1(ajv@8.20.0) fs-extra: - specifier: ~11.3.0 + specifier: 'catalog:' version: 11.3.4 import-lazy: - specifier: ~4.0.0 + specifier: 'catalog:' version: 4.0.0 jju: - specifier: ~1.4.0 + specifier: 'catalog:' version: 1.4.0 resolve: - specifier: ~1.22.1 + specifier: 'catalog:' version: 1.22.11 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@rushstack/heft': @@ -3965,23 +4591,23 @@ importers: specifier: workspace:* version: link:../problem-matcher '@types/fs-extra': - specifier: 7.0.0 + specifier: 'catalog:' version: 7.0.0 '@types/jju': - specifier: 1.4.1 + specifier: 'catalog:' version: 1.4.1 '@types/resolve': - specifier: 1.20.2 + specifier: 'catalog:' version: 1.20.2 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../libraries/npm-check-fork: dependencies: @@ -3989,18 +4615,18 @@ importers: specifier: workspace:* version: link:../node-core-library semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4021,8 +4647,8 @@ importers: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../libraries/package-deps-hash: dependencies: @@ -4034,8 +4660,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4043,7 +4669,7 @@ importers: ../../../libraries/package-extractor: dependencies: '@pnpm/link-bins': - specifier: ~5.3.7 + specifier: 'catalog:' version: 5.3.25 '@rushstack/node-core-library': specifier: workspace:* @@ -4055,19 +4681,19 @@ importers: specifier: workspace:* version: link:../ts-command-line ignore: - specifier: ~5.1.6 + specifier: 'catalog:' version: 5.1.9 jszip: - specifier: ~3.8.0 + specifier: 'catalog:' version: 3.8.0 minimatch: - specifier: 10.2.3 + specifier: 'catalog:' version: 10.2.3 npm-packlist: - specifier: ~5.1.3 + specifier: 'catalog:' version: 5.1.3 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@rushstack/heft': @@ -4080,23 +4706,23 @@ importers: specifier: workspace:* version: link:../../webpack/preserve-dynamic-require-plugin '@types/glob': - specifier: 7.1.1 + specifier: 'catalog:' version: 7.1.1 '@types/npm-packlist': - specifier: ~1.1.1 + specifier: 'catalog:' version: 1.1.2 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../libraries/problem-matcher: devDependencies: @@ -4107,58 +4733,58 @@ importers: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../libraries/reporter: dependencies: semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../libraries/rig-package: dependencies: jju: - specifier: ~1.4.0 + specifier: 'catalog:' version: 1.4.0 resolve: - specifier: ~1.22.1 + specifier: 'catalog:' version: 1.22.11 devDependencies: '@rushstack/heft': specifier: 1.3.4 version: 1.3.4(@types/node@22.9.3) '@types/jju': - specifier: 1.4.1 + specifier: 'catalog:' version: 1.4.1 '@types/resolve': - specifier: 1.20.2 + specifier: 'catalog:' version: 1.20.2 ajv: - specifier: ~8.20.0 + specifier: 'catalog:' version: 8.20.0 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../libraries/rush-client-core: dependencies: @@ -4176,8 +4802,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4219,8 +4845,8 @@ importers: specifier: workspace:* version: link:../../rush-plugins/rush-http-build-cache-plugin eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4231,8 +4857,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4247,8 +4873,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4256,22 +4882,22 @@ importers: ../../../libraries/rush-lib: dependencies: '@inquirer/checkbox': - specifier: ~5.1.3 + specifier: 'catalog:' version: 5.1.3(@types/node@22.9.3) '@inquirer/confirm': - specifier: ~6.0.11 + specifier: 'catalog:' version: 6.0.11(@types/node@22.9.3) '@inquirer/input': - specifier: ~5.0.11 + specifier: 'catalog:' version: 5.0.11(@types/node@22.9.3) '@inquirer/search': - specifier: ~4.1.7 + specifier: 'catalog:' version: 4.1.7(@types/node@22.9.3) '@inquirer/select': - specifier: ~5.1.3 + specifier: 'catalog:' version: 5.1.3(@types/node@22.9.3) '@pnpm/link-bins': - specifier: ~5.3.7 + specifier: 'catalog:' version: 5.3.25 '@rushstack/credential-cache': specifier: workspace:* @@ -4319,61 +4945,61 @@ importers: specifier: workspace:* version: link:../ts-command-line '@yarnpkg/lockfile': - specifier: ~1.0.2 + specifier: 'catalog:' version: 1.0.2 dependency-path: - specifier: ~9.2.8 + specifier: 'catalog:' version: 9.2.8 dotenv: - specifier: ~16.4.7 + specifier: 'catalog:' version: 16.4.7 fast-glob: - specifier: ~3.3.1 + specifier: 'catalog:' version: 3.3.3 git-repo-info: - specifier: ~2.1.0 + specifier: 'catalog:' version: 2.1.1 https-proxy-agent: - specifier: ~5.0.0 - version: 5.0.1 + specifier: 'catalog:' + version: 5.0.1(supports-color@8.1.1) ignore: - specifier: ~5.1.6 + specifier: 'catalog:' version: 5.1.9 js-yaml: - specifier: ~4.3.2 + specifier: 'catalog:' version: 4.3.2 npm-package-arg: - specifier: ~6.1.0 + specifier: 'catalog:' version: 6.1.1 object-hash: - specifier: 3.0.0 + specifier: 'catalog:' version: 3.0.0 pnpm-sync-lib: - specifier: 0.3.4 + specifier: 'catalog:' version: 0.3.4 read-package-tree: - specifier: ~5.1.5 + specifier: 'catalog:' version: 5.1.6 rxjs: - specifier: ~6.6.7 + specifier: 'catalog:' version: 6.6.7 semver: - specifier: ~7.7.4 + specifier: 'catalog:' version: 7.7.4 ssri: - specifier: ~8.0.0 + specifier: 'catalog:' version: 8.0.1 strict-uri-encode: - specifier: ~2.0.0 + specifier: 'catalog:' version: 2.0.0 tapable: specifier: 2.2.1 version: 2.2.1 tar: - specifier: ~7.5.6 + specifier: 'catalog:' version: 7.5.13 true-case-path: - specifier: ~2.2.1 + specifier: 'catalog:' version: 2.2.1 devDependencies: '@pnpm/lockfile.types-900': @@ -4395,38 +5021,38 @@ importers: specifier: workspace:* version: link:../../webpack/preserve-dynamic-require-plugin '@types/js-yaml': - specifier: 4.0.9 + specifier: 'catalog:' version: 4.0.9 '@types/npm-package-arg': - specifier: 6.1.0 + specifier: 'catalog:' version: 6.1.0 '@types/object-hash': - specifier: ~3.0.6 + specifier: 'catalog:' version: 3.0.6 '@types/read-package-tree': - specifier: 5.1.0 + specifier: 'catalog:' version: 5.1.0 '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 '@types/ssri': - specifier: ~7.1.0 + specifier: 'catalog:' version: 7.1.5 '@types/strict-uri-encode': - specifier: 2.0.0 + specifier: 'catalog:' version: 2.0.0 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../libraries/rush-pnpm-kit-v10: dependencies: @@ -4531,20 +5157,20 @@ importers: specifier: workspace:* version: link:../../webpack/preserve-dynamic-require-plugin '@types/semver': - specifier: 7.7.1 + specifier: 'catalog:' version: 7.7.1 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../libraries/rush-terminal-renderer: dependencies: @@ -4565,8 +5191,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4574,39 +5200,39 @@ importers: ../../../libraries/rush-themed-ui: dependencies: react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) devDependencies: '@radix-ui/colors': - specifier: ~3.0.0 + specifier: 'catalog:' version: 3.0.0 '@radix-ui/react-checkbox': - specifier: ~1.3.3 + specifier: 'catalog:' version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-icons': - specifier: ~1.3.2 + specifier: 'catalog:' version: 1.3.2(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react@19.2.4) '@radix-ui/react-scroll-area': - specifier: ~1.2.10 + specifier: 'catalog:' version: 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@radix-ui/react-tabs': - specifier: ~1.1.13 + specifier: 'catalog:' version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-web-rig: specifier: workspace:* version: link:../../rigs/local-web-rig @@ -4621,8 +5247,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4640,8 +5266,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4655,20 +5281,20 @@ importers: specifier: workspace:* version: link:../problem-matcher supports-color: - specifier: ~8.1.1 + specifier: 'catalog:' version: 8.1.1 devDependencies: '@rushstack/heft': specifier: 1.3.4 version: 1.3.4(@types/node@22.9.3) '@types/supports-color': - specifier: 8.1.3 + specifier: 'catalog:' version: 8.1.3 decoupled-local-node-rig: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 + specifier: 'catalog:' version: 9.37.0(supports-color@8.1.1) ../../../libraries/tree-pattern: @@ -4680,8 +5306,8 @@ importers: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../libraries/ts-command-line: dependencies: @@ -4689,13 +5315,13 @@ importers: specifier: workspace:* version: link:../terminal '@types/argparse': - specifier: 1.0.38 + specifier: 'catalog:' version: 1.0.38 argparse: - specifier: ~1.0.9 + specifier: 'catalog:' version: 1.0.10 string-argv: - specifier: ~0.3.1 + specifier: 'catalog:' version: 0.3.2 devDependencies: '@rushstack/heft': @@ -4708,13 +5334,13 @@ importers: specifier: workspace:* version: link:../../rigs/decoupled-local-node-rig eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) ../../../libraries/typings-generator: dependencies: '@jridgewell/sourcemap-codec': - specifier: ~1.5.5 + specifier: 'catalog:' version: 1.5.5 '@rushstack/node-core-library': specifier: workspace:* @@ -4723,18 +5349,18 @@ importers: specifier: workspace:* version: link:../terminal chokidar: - specifier: ~3.6.0 + specifier: 'catalog:' version: 3.6.0 fast-glob: - specifier: ~3.3.1 + specifier: 'catalog:' version: 3.3.3 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4745,8 +5371,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4760,24 +5386,24 @@ importers: specifier: workspace:* version: link:../../libraries/api-extractor-model '@microsoft/tsdoc': - specifier: ~0.17.0 + specifier: 'catalog:' version: 0.17.0 '@rushstack/node-core-library': specifier: workspace:* version: link:../../libraries/node-core-library js-yaml: - specifier: ~4.3.2 + specifier: 'catalog:' version: 4.3.2 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/js-yaml': - specifier: 4.0.9 + specifier: 'catalog:' version: 4.0.9 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4806,15 +5432,15 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line diff: - specifier: ~8.0.2 + specifier: 'catalog:' version: 8.0.4 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -4826,57 +5452,57 @@ importers: version: 7.60.0(@types/node@20.17.19) '@rushstack/eslint-config': specifier: 4.9.0 - version: 4.9.0(eslint@9.37.0)(typescript@5.8.2) + version: 4.9.0(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@rushstack/eslint-patch': specifier: 1.16.1 version: 1.16.1 '@rushstack/eslint-plugin': specifier: 0.24.0 - version: 0.24.0(eslint@9.37.0)(typescript@5.8.2) + version: 0.24.0(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@rushstack/heft': specifier: 1.3.4 version: 1.3.4(@types/node@20.17.19) '@rushstack/heft-node-rig': specifier: 2.11.55 - version: 2.11.55(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0) + version: 2.11.55(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(jest-environment-jsdom@30.3.0(supports-color@8.1.1))(supports-color@8.1.1) '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@typescript-eslint/eslint-plugin': - specifier: ~8.56.1 - version: 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.2))(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/parser': - specifier: ~8.56.1 - version: 8.56.1(eslint@9.37.0)(typescript@5.8.2) + specifier: 'catalog:' + version: 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) eslint-import-resolver-node: - specifier: 0.3.9 + specifier: 'catalog:' version: 0.3.9 eslint-plugin-header: - specifier: ~3.1.1 - version: 3.1.1(eslint@9.37.0) + specifier: 'catalog:' + version: 3.1.1(eslint@9.37.0(supports-color@8.1.1)) eslint-plugin-headers: - specifier: ~1.2.1 - version: 1.2.1(eslint@9.37.0) + specifier: 'catalog:' + version: 1.2.1(eslint@9.37.0(supports-color@8.1.1)) eslint-plugin-import: - specifier: 2.32.0 - version: 2.32.0(eslint@9.37.0) + specifier: 'catalog:' + version: 2.32.0(eslint@9.37.0(supports-color@8.1.1)) eslint-plugin-jsdoc: - specifier: 50.6.11 - version: 50.6.11(eslint@9.37.0) + specifier: 'catalog:' + version: 50.6.11(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1) eslint-plugin-react-hooks: - specifier: 5.2.0 - version: 5.2.0(eslint@9.37.0) + specifier: 'catalog:' + version: 5.2.0(eslint@9.37.0(supports-color@8.1.1)) jest-junit: - specifier: 12.3.0 + specifier: 'catalog:' version: 12.3.0 typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../rigs/heft-node-rig: @@ -4900,16 +5526,16 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-typescript-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) jest-environment-node: - specifier: ~30.3.0 + specifier: 'catalog:' version: 30.3.0 typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 devDependencies: '@rushstack/heft': @@ -4934,16 +5560,16 @@ importers: specifier: workspace:* version: link:../../webpack/preserve-dynamic-require-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) jest-environment-node: - specifier: ~30.3.0 + specifier: 'catalog:' version: 30.3.0 typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 devDependencies: '@rushstack/heft': @@ -4980,64 +5606,64 @@ importers: specifier: workspace:* version: link:../../heft-plugins/heft-webpack5-plugin '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 autoprefixer: - specifier: ~10.4.2 + specifier: 'catalog:' version: 10.4.27(postcss@8.5.12) css-loader: - specifier: ~6.6.0 - version: 6.6.0(webpack@5.105.4) + specifier: 'catalog:' + version: 6.6.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) css-minimizer-webpack-plugin: - specifier: ~3.4.1 - version: 3.4.1(webpack@5.105.4) + specifier: 'catalog:' + version: 3.4.1(clean-css@5.3.3)(csso@4.2.0)(esbuild@0.28.0)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: - specifier: ~5.5.0 - version: 5.5.4(webpack@5.105.4) + specifier: 'catalog:' + version: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) jest-environment-jsdom: - specifier: ~30.3.0 - version: 30.3.0 + specifier: 'catalog:' + version: 30.3.0(supports-color@8.1.1) mini-css-extract-plugin: - specifier: ~2.5.3 - version: 2.5.3(webpack@5.105.4) + specifier: 'catalog:' + version: 2.5.3(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) postcss: - specifier: ~8.5.10 + specifier: 'catalog:' version: 8.5.12 postcss-loader: - specifier: ~6.2.1 - version: 6.2.1(postcss@8.5.12)(webpack@5.105.4) + specifier: 'catalog:' + version: 6.2.1(postcss@8.5.12)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) sass: - specifier: ~1.49.7 + specifier: 'catalog:' version: 1.49.11 sass-loader: - specifier: ~12.4.0 - version: 12.4.0(sass@1.49.11)(webpack@5.105.4) + specifier: 'catalog:' + version: 12.4.0(sass@1.49.11)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) source-map-loader: - specifier: ~3.0.1 - version: 3.0.2(webpack@5.105.4) + specifier: 'catalog:' + version: 3.0.2(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) style-loader: - specifier: ~3.3.1 - version: 3.3.4(webpack@5.105.4) + specifier: 'catalog:' + version: 3.3.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) terser-webpack-plugin: - specifier: ~5.3.1 - version: 5.3.17(webpack@5.105.4) + specifier: 'catalog:' + version: 5.3.17(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 url-loader: - specifier: ~4.1.1 - version: 4.1.1(file-loader@6.2.0(webpack@5.105.4))(webpack@5.105.4) + specifier: 'catalog:' + version: 4.1.1(file-loader@6.2.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)))(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) webpack-bundle-analyzer: - specifier: ~4.5.0 + specifier: 'catalog:' version: 4.5.0 webpack-merge: - specifier: ~5.8.0 + specifier: 'catalog:' version: 5.8.0 devDependencies: '@rushstack/heft': @@ -5059,22 +5685,22 @@ importers: specifier: workspace:* version: link:../heft-node-rig '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) jest-junit: - specifier: 12.3.0 + specifier: 'catalog:' version: 12.3.0 local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../rigs/local-web-rig: @@ -5092,22 +5718,22 @@ importers: specifier: workspace:* version: link:../heft-web-rig '@types/jest': - specifier: 30.0.0 + specifier: 'catalog:' version: 30.0.0 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) jest-junit: - specifier: 12.3.0 + specifier: 'catalog:' version: 12.3.0 local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config typescript: - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.2 ../../../rush-plugins/rush-amazon-s3-build-cache-plugin: @@ -5125,8 +5751,8 @@ importers: specifier: workspace:* version: link:../../libraries/terminal https-proxy-agent: - specifier: ~5.0.0 - version: 5.0.1 + specifier: 'catalog:' + version: 5.0.1(supports-color@8.1.1) devDependencies: '@microsoft/rush-lib': specifier: workspace:* @@ -5135,8 +5761,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5144,11 +5770,11 @@ importers: ../../../rush-plugins/rush-azure-storage-build-cache-plugin: dependencies: '@azure/identity': - specifier: ~4.13.1 - version: 4.13.1 + specifier: 'catalog:' + version: 4.13.1(supports-color@8.1.1) '@azure/storage-blob': - specifier: ~12.31.0 - version: 12.31.0 + specifier: 'catalog:' + version: 12.31.0(supports-color@8.1.1) '@rushstack/credential-cache': specifier: workspace:* version: link:../../libraries/credential-cache @@ -5169,8 +5795,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5194,8 +5820,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5222,8 +5848,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5240,8 +5866,8 @@ importers: specifier: workspace:* version: link:../../libraries/rush-sdk https-proxy-agent: - specifier: ~5.0.0 - version: 5.0.1 + specifier: 'catalog:' + version: 5.0.1(supports-color@8.1.1) devDependencies: '@microsoft/rush-lib': specifier: workspace:* @@ -5253,8 +5879,8 @@ importers: specifier: workspace:* version: link:../../libraries/terminal eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5275,8 +5901,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5294,8 +5920,8 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-eslint-config: specifier: workspace:* version: link:../../eslint/local-eslint-config @@ -5322,8 +5948,8 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5331,7 +5957,7 @@ importers: ../../../rush-plugins/rush-redis-cobuild-plugin: dependencies: '@redis/client': - specifier: ~5.8.2 + specifier: 'catalog:' version: 5.8.3 '@rushstack/node-core-library': specifier: workspace:* @@ -5350,8 +5976,8 @@ importers: specifier: workspace:* version: link:../../libraries/terminal eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5378,11 +6004,11 @@ importers: specifier: workspace:* version: link:../../webpack/webpack-workspace-resolve-plugin '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5411,19 +6037,19 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line compression: - specifier: ~1.7.4 + specifier: 'catalog:' version: 1.7.5 cors: - specifier: ~2.8.5 + specifier: 'catalog:' version: 2.8.6 express: - specifier: 4.21.1 + specifier: 'catalog:' version: 4.21.1 http2-express-bridge: - specifier: ~1.0.7 + specifier: 'catalog:' version: 1.0.7(@types/express@4.17.21) ws: - specifier: ~8.21.0 + specifier: 'catalog:' version: 8.21.0 devDependencies: '@rushstack/heft': @@ -5436,29 +6062,29 @@ importers: specifier: workspace:* version: link:../../apps/rush-serve-dashboard '@types/compression': - specifier: ~1.7.2 + specifier: 'catalog:' version: 1.7.5(@types/express@4.17.21) '@types/cors': - specifier: ~2.8.12 + specifier: 'catalog:' version: 2.8.19 '@types/express': - specifier: 4.17.21 + specifier: 'catalog:' version: 4.17.21 '@types/ws': - specifier: 8.18.1 + specifier: 'catalog:' version: 8.18.1 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: - specifier: ~5.5.0 - version: 5.5.4(webpack@5.105.4) + specifier: 'catalog:' + version: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../vscode-extensions/debug-certificate-manager-vscode-extension: dependencies: @@ -5475,7 +6101,7 @@ importers: specifier: workspace:* version: link:../vscode-shared tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@rushstack/heft': @@ -5485,13 +6111,13 @@ importers: specifier: workspace:* version: link:../../rigs/heft-vscode-extension-rig '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/vscode': specifier: 1.103.0 version: 1.103.0 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 ../../../vscode-extensions/playwright-local-browser-server-vscode-extension: @@ -5509,10 +6135,10 @@ importers: specifier: workspace:* version: link:../vscode-shared playwright-core: - specifier: ~1.62.1 + specifier: 'catalog:' version: 1.62.1 tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@rushstack/heft': @@ -5525,43 +6151,43 @@ importers: specifier: workspace:* version: link:../../rigs/heft-vscode-extension-rig '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/vscode': specifier: 1.103.0 version: 1.103.0 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 ../../../vscode-extensions/rush-vscode-command-webview: dependencies: '@fluentui/react': - specifier: ~8.125.3 + specifier: 'catalog:' version: 8.125.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@fluentui/react-components': - specifier: ~9.72.9 + specifier: 'catalog:' version: 9.72.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(scheduler@0.27.0) '@reduxjs/toolkit': - specifier: ~2.11.2 + specifier: 'catalog:' version: 2.11.2(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1))(react@19.2.4) react: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4 react-dom: - specifier: ~19.2.3 + specifier: 'catalog:' version: 19.2.4(react@19.2.4) react-hook-form: - specifier: ~7.69.0 + specifier: 'catalog:' version: 7.69.0(react@19.2.4) react-redux: - specifier: ~9.2.0 + specifier: 'catalog:' version: 9.2.0(@types/react@19.2.7)(react@19.2.4)(redux@5.0.1) redux: - specifier: ~5.0.1 + specifier: 'catalog:' version: 5.0.1 tslib: - specifier: ~2.8.1 + specifier: 'catalog:' version: 2.8.1 devDependencies: '@rushstack/heft': @@ -5571,31 +6197,31 @@ importers: specifier: workspace:* version: link:../../libraries/ts-command-line '@types/react': - specifier: 19.2.7 + specifier: 'catalog:' version: 19.2.7 '@types/react-dom': - specifier: 19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.7) '@types/react-redux': - specifier: ~7.1.22 + specifier: 'catalog:' version: 7.1.34 '@types/vscode': specifier: 1.103.0 version: 1.103.0 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) html-webpack-plugin: - specifier: ~5.5.0 - version: 5.5.4(webpack@5.105.4) + specifier: 'catalog:' + version: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) local-web-rig: specifier: workspace:* version: link:../../rigs/local-web-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) webpack-bundle-analyzer: - specifier: ~4.5.0 + specifier: 'catalog:' version: 4.5.0 ../../../vscode-extensions/rush-vscode-extension: @@ -5626,28 +6252,28 @@ importers: specifier: workspace:* version: link:../../rigs/heft-vscode-extension-rig '@types/glob': - specifier: 7.1.1 + specifier: 'catalog:' version: 7.1.1 '@types/mocha': - specifier: 10.0.6 + specifier: 'catalog:' version: 10.0.6 '@types/vscode': specifier: 1.103.0 version: 1.103.0 '@types/webpack-env': - specifier: 1.18.8 + specifier: 'catalog:' version: 1.18.8 '@vscode/test-electron': - specifier: ^1.6.2 - version: 1.6.2 + specifier: 'catalog:' + version: 1.6.2(supports-color@8.1.1) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) glob: - specifier: ~7.0.5 + specifier: 'catalog:' version: 7.0.6 mocha: - specifier: ^10.1.0 + specifier: 'catalog:' version: 10.8.2 ../../../vscode-extensions/vscode-shared: @@ -5666,7 +6292,7 @@ importers: specifier: workspace:* version: link:../../rigs/heft-node-rig '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/vscode': specifier: 1.103.0 @@ -5681,7 +6307,7 @@ importers: specifier: workspace:* version: link:../webpack-plugin-utilities fast-glob: - specifier: ~3.3.1 + specifier: 'catalog:' version: 3.3.3 devDependencies: '@rushstack/heft': @@ -5691,22 +6317,22 @@ importers: specifier: 1.0.8 version: 1.0.8 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig memfs: - specifier: 4.12.0 + specifier: 'catalog:' version: 4.12.0 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/loader-load-themed-styles: dependencies: loader-utils: - specifier: 1.4.2 + specifier: 'catalog:' version: 1.4.2 devDependencies: '@microsoft/load-themed-styles': @@ -5716,14 +6342,14 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/loader-utils': - specifier: 1.1.3 + specifier: 'catalog:' version: 1.1.3 '@types/webpack': - specifier: 4.41.32 + specifier: 'catalog:' version: 4.41.32 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5731,15 +6357,15 @@ importers: ../../../webpack/loader-raw-script: dependencies: loader-utils: - specifier: 1.4.2 + specifier: 'catalog:' version: 1.4.2 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5750,14 +6376,14 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/set-webpack-public-path-plugin: dependencies: @@ -5772,20 +6398,20 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig memfs: - specifier: 4.12.0 + specifier: 'catalog:' version: 4.12.0 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/webpack-deep-imports-plugin: dependencies: @@ -5797,14 +6423,14 @@ importers: specifier: workspace:* version: link:../../apps/heft eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/webpack-embedded-dependencies-plugin: dependencies: @@ -5819,17 +6445,17 @@ importers: specifier: workspace:* version: link:../webpack-plugin-utilities eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig memfs: - specifier: 4.12.0 + specifier: 'catalog:' version: 4.12.0 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/webpack-plugin-utilities: dependencies: @@ -5837,27 +6463,27 @@ importers: specifier: 1.0.8 version: 1.0.8 memfs: - specifier: 4.12.0 + specifier: 'catalog:' version: 4.12.0 webpack-merge: - specifier: ~5.8.0 + specifier: 'catalog:' version: 5.8.0 devDependencies: '@rushstack/heft': specifier: workspace:* version: link:../../apps/heft '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/webpack-workspace-resolve-plugin: dependencies: @@ -5869,20 +6495,20 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig memfs: - specifier: 4.12.0 + specifier: 'catalog:' version: 4.12.0 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/webpack4-localization-plugin: dependencies: @@ -5896,13 +6522,13 @@ importers: specifier: workspace:* version: link:../../libraries/terminal '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 loader-utils: - specifier: 1.4.2 + specifier: 'catalog:' version: 1.4.2 minimatch: - specifier: 10.2.3 + specifier: 'catalog:' version: 10.2.3 devDependencies: '@rushstack/heft': @@ -5912,17 +6538,17 @@ importers: specifier: ^4.1.16 version: 4.1.16(@types/node@20.17.19)(@types/webpack@4.41.32)(webpack@4.47.0) '@types/loader-utils': - specifier: 1.1.3 + specifier: 'catalog:' version: 1.1.3 '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/webpack': - specifier: 4.41.32 + specifier: 'catalog:' version: 4.41.32 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5939,7 +6565,7 @@ importers: specifier: workspace:* version: link:../../libraries/worker-pool '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 tapable: specifier: 1.1.3 @@ -5949,17 +6575,17 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 '@types/webpack': - specifier: 4.41.32 + specifier: 'catalog:' version: 4.41.32 '@types/webpack-sources': - specifier: 1.4.2 + specifier: 'catalog:' version: 1.4.2 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig @@ -5967,7 +6593,7 @@ importers: specifier: ~4.47.0 version: 4.47.0 webpack-sources: - specifier: ~1.4.3 + specifier: 'catalog:' version: 1.4.3 ../../../webpack/webpack5-load-themed-styles-loader: @@ -5982,20 +6608,20 @@ importers: specifier: workspace:* version: link:../../libraries/node-core-library css-loader: - specifier: ~6.6.0 - version: 6.6.0(webpack@5.105.4) + specifier: 'catalog:' + version: 6.6.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig memfs: - specifier: 4.12.0 + specifier: 'catalog:' version: 4.12.0 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/webpack5-localization-plugin: dependencies: @@ -6013,20 +6639,20 @@ importers: specifier: workspace:* version: link:../../apps/heft '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig memfs: - specifier: 4.12.0 + specifier: 'catalog:' version: 4.12.0 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) ../../../webpack/webpack5-module-minifier-plugin: dependencies: @@ -6037,7 +6663,7 @@ importers: specifier: 1.0.8 version: 1.0.8 '@types/tapable': - specifier: 1.0.6 + specifier: 'catalog:' version: 1.0.6 tapable: specifier: 2.2.1 @@ -6050,20 +6676,20 @@ importers: specifier: workspace:* version: link:../../libraries/module-minifier '@types/node': - specifier: 20.17.19 + specifier: 'catalog:' version: 20.17.19 eslint: - specifier: ~9.37.0 - version: 9.37.0 + specifier: 'catalog:' + version: 9.37.0(supports-color@8.1.1) local-node-rig: specifier: workspace:* version: link:../../rigs/local-node-rig memfs: - specifier: 4.12.0 + specifier: 'catalog:' version: 4.12.0 webpack: - specifier: ~5.105.2 - version: 5.105.4 + specifier: 'catalog:' + version: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) packages: @@ -7076,7 +7702,7 @@ packages: hasBin: true '@colors/colors@1.5.0': - resolution: {integrity: sha1-u1BFecHK6SPmV2pPXaQ9Jfl729k=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@colors/colors/-/colors-1.5.0.tgz} + resolution: {integrity: sha1-u1BFecHK6SPmV2pPXaQ9Jfl729k=} engines: {node: '>=0.1.90'} '@csstools/color-helpers@5.1.0': @@ -7116,13 +7742,13 @@ packages: engines: {node: '>=10.0.0'} '@emnapi/core@1.9.2': - resolution: {integrity: sha1-OHAmXs/8c1LQHq1i2Ng9g1ii0DQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/core/-/core-1.9.2.tgz} + resolution: {integrity: sha1-OHAmXs/8c1LQHq1i2Ng9g1ii0DQ=} '@emnapi/runtime@1.9.2': - resolution: {integrity: sha1-i0aaPbFggXytsd6QUCEanR6oT6I=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/runtime/-/runtime-1.9.2.tgz} + resolution: {integrity: sha1-i0aaPbFggXytsd6QUCEanR6oT6I=} '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha1-KP7SGhuhznl8RKBwq8lNQvOuhUg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz} + resolution: {integrity: sha1-KP7SGhuhznl8RKBwq8lNQvOuhUg=} '@emotion/cache@10.0.29': resolution: {integrity: sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==} @@ -7197,319 +7823,319 @@ packages: engines: {node: '>=16'} '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha1-gPy+NhMOWLdnBRHoiLjoiiWe12w=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz} + resolution: {integrity: sha1-gPy+NhMOWLdnBRHoiLjoiiWe12w=} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.28.0': - resolution: {integrity: sha1-eiicFY4py/WeoK/IPMgPBtHIlAI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz} + resolution: {integrity: sha1-eiicFY4py/WeoK/IPMgPBtHIlAI=} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha1-iqSWX40KeYLcIXNL9mATI6Ztp1I=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz} + resolution: {integrity: sha1-iqSWX40KeYLcIXNL9mATI6Ztp1I=} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.28.0': - resolution: {integrity: sha1-uIKNnt+jqSZgZE643m5PPCA9exc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz} + resolution: {integrity: sha1-uIKNnt+jqSZgZE643m5PPCA9exc=} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha1-MAcSEB9/UPHSYnoWLm4JsQm2dno=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/android-arm/-/android-arm-0.25.12.tgz} + resolution: {integrity: sha1-MAcSEB9/UPHSYnoWLm4JsQm2dno=} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-arm@0.28.0': - resolution: {integrity: sha1-XsGEdgXgW12+XfkNuf9+PkxY3Kc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/android-arm/-/android-arm-0.28.0.tgz} + resolution: {integrity: sha1-XsGEdgXgW12+XfkNuf9+PkxY3Kc=} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha1-h9+ycWEgK9yVjvSLthsJx1j67hY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/android-x64/-/android-x64-0.25.12.tgz} + resolution: {integrity: sha1-h9+ycWEgK9yVjvSLthsJx1j67hY=} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/android-x64@0.28.0': - resolution: {integrity: sha1-OQZCF1uI74K61MzgP4qxP+mxkS4=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/android-x64/-/android-x64-0.28.0.tgz} + resolution: {integrity: sha1-OQZCF1uI74K61MzgP4qxP+mxkS4=} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha1-eRl4mOwf90XSHAceHHzDyALwwf0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz} + resolution: {integrity: sha1-eRl4mOwf90XSHAceHHzDyALwwf0=} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.28.0': - resolution: {integrity: sha1-rkUyWWDVlQzWlR5PlzlvTh/32NM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz} + resolution: {integrity: sha1-rkUyWWDVlQzWlR5PlzlvTh/32NM=} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha1-FGQAqFYhM/RcTS6tzzfd0JcYB54=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz} + resolution: {integrity: sha1-FGQAqFYhM/RcTS6tzzfd0JcYB54=} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.28.0': - resolution: {integrity: sha1-wHkkfViba5lEllnZTwaVG4S/8uQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz} + resolution: {integrity: sha1-wHkkfViba5lEllnZTwaVG4S/8uQ=} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha1-HF+bpyBuFY/SskxZ+i0si7R8oP4=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz} + resolution: {integrity: sha1-HF+bpyBuFY/SskxZ+i0si7R8oP4=} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.28.0': - resolution: {integrity: sha1-RcRWIVpIZZPJSQApcgLcEciAo3o=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz} + resolution: {integrity: sha1-RcRWIVpIZZPJSQApcgLcEciAo3o=} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha1-6mMfSja+qsS5J5+g/MbKKerusrM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz} + resolution: {integrity: sha1-6mMfSja+qsS5J5+g/MbKKerusrM=} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.28.0': - resolution: {integrity: sha1-A5lJTByF5DiOm3BAvWDUjypbDSw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz} + resolution: {integrity: sha1-A5lJTByF5DiOm3BAvWDUjypbDSw=} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha1-4QZrzlg5TxsRQd7shVel8KIvWXc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz} + resolution: {integrity: sha1-4QZrzlg5TxsRQd7shVel8KIvWXc=} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.28.0': - resolution: {integrity: sha1-1tnwnvDeVBFr9Fmk1TysfglS/jk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz} + resolution: {integrity: sha1-1tnwnvDeVBFr9Fmk1TysfglS/jk=} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha1-RSzWayCTLQi9xTqLYcDjC69DSLk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz} + resolution: {integrity: sha1-RSzWayCTLQi9xTqLYcDjC69DSLk=} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.28.0': - resolution: {integrity: sha1-e0L/qEwoiulP3EMcGyionjw7kng=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz} + resolution: {integrity: sha1-e0L/qEwoiulP3EMcGyionjw7kng=} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha1-sk+KzEW89UGSx/LzvhtT5lUer+A=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz} + resolution: {integrity: sha1-sk+KzEW89UGSx/LzvhtT5lUer+A=} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.28.0': - resolution: {integrity: sha1-3rFdES7Y3WBTRra5U9I6If+BJT8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz} + resolution: {integrity: sha1-3rFdES7Y3WBTRra5U9I6If+BJT8=} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.14.54': - resolution: {integrity: sha1-3ipL5ni9TQ0f+7hubed5zeWZkCg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz} + resolution: {integrity: sha1-3ipL5ni9TQ0f+7hubed5zeWZkCg=} engines: {node: '>=12'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha1-+c//p/yDIlcfvEyLMmjK8VvYGtA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz} + resolution: {integrity: sha1-+c//p/yDIlcfvEyLMmjK8VvYGtA=} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.28.0': - resolution: {integrity: sha1-gfuJ0H7sx5sVfephAzdXcm/ODKQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz} + resolution: {integrity: sha1-gfuJ0H7sx5sVfephAzdXcm/ODKQ=} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha1-V1oUvXRkT/q4ka3H1+YNJ1KW8s0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz} + resolution: {integrity: sha1-V1oUvXRkT/q4ka3H1+YNJ1KW8s0=} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.28.0': - resolution: {integrity: sha1-0OQmkbP/evn7Ihe3D8AfNDvbYrs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz} + resolution: {integrity: sha1-0OQmkbP/evn7Ihe3D8AfNDvbYrs=} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha1-dbmccKlfvV93OddpK+/mBgFZGGk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz} + resolution: {integrity: sha1-dbmccKlfvV93OddpK+/mBgFZGGk=} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.28.0': - resolution: {integrity: sha1-OJ8+XpjxfUd8RnzIcTbhoHburYc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz} + resolution: {integrity: sha1-OJ8+XpjxfUd8RnzIcTbhoHburYc=} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha1-LjJZRAMhpE553fdTXDJQV9qHXNY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz} + resolution: {integrity: sha1-LjJZRAMhpE553fdTXDJQV9qHXNY=} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.28.0': - resolution: {integrity: sha1-djvWDVmyQr4S2h5n1XKfMCTGBfo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz} + resolution: {integrity: sha1-djvWDVmyQr4S2h5n1XKfMCTGBfo=} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha1-F2dsq7/lko2lsqDW311YzQjbJmM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz} + resolution: {integrity: sha1-F2dsq7/lko2lsqDW311YzQjbJmM=} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.28.0': - resolution: {integrity: sha1-qsYGFjSHLkZ33mk7zoAw1zsf0FU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz} + resolution: {integrity: sha1-qsYGFjSHLkZ33mk7zoAw1zsf0FU=} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha1-BYN3VoXKggZtBMNQfwlSTTzXowY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz} + resolution: {integrity: sha1-BYN3VoXKggZtBMNQfwlSTTzXowY=} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.28.0': - resolution: {integrity: sha1-TykXdHGI/ndjK87GWy2EtCJBl3k=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz} + resolution: {integrity: sha1-TykXdHGI/ndjK87GWy2EtCJBl3k=} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha1-8ExAScsuJS/paxb+2Q9wdGsT9KQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz} + resolution: {integrity: sha1-8ExAScsuJS/paxb+2Q9wdGsT9KQ=} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-arm64@0.28.0': - resolution: {integrity: sha1-gU3wrlegw4aBRJG4OX7rqCCUqUc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz} + resolution: {integrity: sha1-gU3wrlegw4aBRJG4OX7rqCCUqUc=} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha1-d9oNCg2CbXySHuo9QCklSLJYoHY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz} + resolution: {integrity: sha1-d9oNCg2CbXySHuo9QCklSLJYoHY=} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.28.0': - resolution: {integrity: sha1-4BvffmD6GgjkbUbZYLDZu4rCEK8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz} + resolution: {integrity: sha1-4BvffmD6GgjkbUbZYLDZu4rCEK8=} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha1-Ypb1hnrt7yioGyKrIAnHhqlS3M0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz} + resolution: {integrity: sha1-Ypb1hnrt7yioGyKrIAnHhqlS3M0=} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-arm64@0.28.0': - resolution: {integrity: sha1-ShXDaqzKaNLVpMkLcQwGdZ9MH/o=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz} + resolution: {integrity: sha1-ShXDaqzKaNLVpMkLcQwGdZ9MH/o=} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha1-+NIzAzYOJ7Fs8GWyO7/0PBQUJnk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz} + resolution: {integrity: sha1-+NIzAzYOJ7Fs8GWyO7/0PBQUJnk=} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.28.0': - resolution: {integrity: sha1-R15hAUmKjszjAI18OIER16J8F70=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz} + resolution: {integrity: sha1-R15hAUmKjszjAI18OIER16J8F70=} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha1-SeC3aHRKOSS+DX/ZfdbOmykj2I0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz} + resolution: {integrity: sha1-SeC3aHRKOSS+DX/ZfdbOmykj2I0=} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/openharmony-arm64@0.28.0': - resolution: {integrity: sha1-z9w5V/C3pp8b3hKarRf8wvb6Az4=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz} + resolution: {integrity: sha1-z9w5V/C3pp8b3hKarRf8wvb6Az4=} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha1-pu19Z3jWflKMgfsWWyP0kRubE9Y=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz} + resolution: {integrity: sha1-pu19Z3jWflKMgfsWWyP0kRubE9Y=} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.28.0': - resolution: {integrity: sha1-oBPIVv7KzRw67Jhciv4dHLAXSX0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz} + resolution: {integrity: sha1-oBPIVv7KzRw67Jhciv4dHLAXSX0=} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha1-msFMN44bZTrxfQjn0840yu9YcyM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz} + resolution: {integrity: sha1-msFMN44bZTrxfQjn0840yu9YcyM=} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.28.0': - resolution: {integrity: sha1-6uBeDzUnHK04mLQxaNPpo7uvR+U=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz} + resolution: {integrity: sha1-6uBeDzUnHK04mLQxaNPpo7uvR+U=} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha1-kYlC3LuzXMFPyjmvuRteaj0Scmc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz} + resolution: {integrity: sha1-kYlC3LuzXMFPyjmvuRteaj0Scmc=} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.28.0': - resolution: {integrity: sha1-BhYevFv3XAjWn+s8ayJWBRWROZg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz} + resolution: {integrity: sha1-BhYevFv3XAjWn+s8ayJWBRWROZg=} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha1-m9rYF2vngRrRSNH4dyNZBB9GxsU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz} + resolution: {integrity: sha1-m9rYF2vngRrRSNH4dyNZBB9GxsU=} engines: {node: '>=18'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.28.0': - resolution: {integrity: sha1-BNkNV1K0zmXStqwl66CP92JP4Hw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz} + resolution: {integrity: sha1-BNkNV1K0zmXStqwl66CP92JP4Hw=} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -8714,11 +9340,11 @@ packages: resolution: {integrity: sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==} '@microsoft/api-extractor-model@7.33.15': - resolution: {integrity: sha512-UpCnItIJwu03iNTWtJVKv8Qbf0MXN7WLQZUail9cpAQmnZiIX36YPRRoRxz0pocwytzUpmJhstsLkyW5tsaHBA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/api-extractor-model/-/api-extractor-model-7.33.15.tgz} + resolution: {integrity: sha512-UpCnItIJwu03iNTWtJVKv8Qbf0MXN7WLQZUail9cpAQmnZiIX36YPRRoRxz0pocwytzUpmJhstsLkyW5tsaHBA==} engines: {node: '>=20.9.0'} '@microsoft/api-extractor@7.60.0': - resolution: {integrity: sha512-z744eKZNJ75h4WlsJiEa8oqbRUfczNe5MexweXe9kcm/phhZBZqfkDZCzHR5dDf8FdZvNapYK/wRPnSUAKuoug==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/api-extractor/-/api-extractor-7.60.0.tgz} + resolution: {integrity: sha512-z744eKZNJ75h4WlsJiEa8oqbRUfczNe5MexweXe9kcm/phhZBZqfkDZCzHR5dDf8FdZvNapYK/wRPnSUAKuoug==} engines: {node: '>=20.9.0'} hasBin: true @@ -8730,16 +9356,16 @@ packages: deprecated: Package no longer supported. Use at your own risk '@microsoft/tsdoc-config@0.17.0': - resolution: {integrity: sha1-gmBRUrPB0/XNShFpe8KYQ3SE1V0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/tsdoc-config/-/tsdoc-config-0.17.0.tgz} + resolution: {integrity: sha1-gmBRUrPB0/XNShFpe8KYQ3SE1V0=} '@microsoft/tsdoc-config@0.18.2': - resolution: {integrity: sha1-NMgHbmDtCq19k/gcVGW/OsJLwpA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/tsdoc-config/-/tsdoc-config-0.18.2.tgz} + resolution: {integrity: sha1-NMgHbmDtCq19k/gcVGW/OsJLwpA=} '@microsoft/tsdoc@0.15.0': - resolution: {integrity: sha1-8ppV3xfLbofPurzjP/ahSp+FB20=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz} + resolution: {integrity: sha1-8ppV3xfLbofPurzjP/ahSp+FB20=} '@microsoft/tsdoc@0.17.0': - resolution: {integrity: sha1-YbSmP0i1g6PWDReTGEoaLNnRF14=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@microsoft/tsdoc/-/tsdoc-0.17.0.tgz} + resolution: {integrity: sha1-YbSmP0i1g6PWDReTGEoaLNnRF14=} '@modelcontextprotocol/sdk@1.10.2': resolution: {integrity: sha512-rb6AMp2DR4SN+kc6L1ta2NCpApyA9WYNx3CrTSZvGxq9wH71bRur+zRqPfg0vQ9mjywR7qZdX2RGHOPq3ss+tA==} @@ -8768,10 +9394,10 @@ packages: engines: {node: '>=4'} '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha1-PniouW5sM6bFF+GJTvvVOFp8tvI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz} + resolution: {integrity: sha1-PniouW5sM6bFF+GJTvvVOFp8tvI=} '@napi-rs/wasm-runtime@1.0.7': - resolution: {integrity: sha1-3P6pmnXwYgmiNfPZQeNGClHpsUw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz} + resolution: {integrity: sha1-3P6pmnXwYgmiNfPZQeNGClHpsUw=} '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} @@ -8836,7 +9462,7 @@ packages: engines: {node: '>=20.0.0'} '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} + resolution: {integrity: sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM=} engines: {node: '>=14'} '@pkgr/core@0.2.9': @@ -8844,7 +9470,7 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@playwright/test@1.62.1': - resolution: {integrity: sha1-aOGq9uSA4ZI5Nt7mxm+uGSHTplo=, tarball: https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@playwright/test/-/test-1.62.1.tgz} + resolution: {integrity: sha1-aOGq9uSA4ZI5Nt7mxm+uGSHTplo=} engines: {node: '>=20'} hasBin: true @@ -8965,7 +9591,7 @@ packages: '@pnpm/logger': ^5.0.0 '@pnpm/lockfile-types@5.1.5': - resolution: {integrity: sha1-FLhcl23c90dPWmopNRy1eZWdDsg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile-types/-/lockfile-types-5.1.5.tgz} + resolution: {integrity: sha1-FLhcl23c90dPWmopNRy1eZWdDsg=} engines: {node: '>=16.14'} '@pnpm/lockfile.fs@1001.1.32': @@ -8979,7 +9605,7 @@ packages: engines: {node: '>=18.12'} '@pnpm/lockfile.types@1001.1.0': - resolution: {integrity: sha1-rhsx7V+7Du0y0CpfVlG8zilTW6E=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/lockfile.types/-/lockfile.types-1001.1.0.tgz} + resolution: {integrity: sha1-rhsx7V+7Du0y0CpfVlG8zilTW6E=} engines: {node: '>=18.12'} '@pnpm/lockfile.types@1002.0.1': @@ -9031,7 +9657,7 @@ packages: engines: {node: '>=18.12'} '@pnpm/ramda@0.28.1': - resolution: {integrity: sha1-DzKrxSddWGoD4Nwd2QoAmsZo/zM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/ramda/-/ramda-0.28.1.tgz} + resolution: {integrity: sha1-DzKrxSddWGoD4Nwd2QoAmsZo/zM=} '@pnpm/read-modules-dir@2.0.3': resolution: {integrity: sha512-i9OgRvSlxrTS9a2oXokhDxvQzDtfqtsooJ9jaGoHkznue5aFCTSrNZFQ6M18o8hC03QWfnxaKi0BtOvNkKu2+A==} @@ -9058,7 +9684,7 @@ packages: engines: {node: '>=18.12'} '@pnpm/types@1000.7.0': - resolution: {integrity: sha1-g1Hkb73+JfgP7Jdb/fWNDKStYkw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pnpm/types/-/types-1000.7.0.tgz} + resolution: {integrity: sha1-g1Hkb73+JfgP7Jdb/fWNDKStYkw=} engines: {node: '>=18.12'} '@pnpm/types@1000.8.0': @@ -9108,7 +9734,7 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} '@pothos/core@3.41.2': - resolution: {integrity: sha1-ruJt4pccOHJDU0S8NM4Kv5qUVL0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@pothos/core/-/core-3.41.2.tgz} + resolution: {integrity: sha1-ruJt4pccOHJDU0S8NM4Kv5qUVL0=} peerDependencies: graphql: '>=15.1.0' @@ -9349,61 +9975,61 @@ packages: engines: {node: '>=14.0.0'} '@rollup/rollup-linux-x64-gnu@4.53.3': - resolution: {integrity: sha1-/Q3qO7mqB+cINXnyXhwihaRsufo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz} + resolution: {integrity: sha1-/Q3qO7mqB+cINXnyXhwihaRsufo=} cpu: [x64] os: [linux] libc: [glibc] '@rspack/binding-darwin-arm64@1.6.8': - resolution: {integrity: sha1-Uph8DLxIeiQL3GsaMYODctrd7is=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.6.8.tgz} + resolution: {integrity: sha1-Uph8DLxIeiQL3GsaMYODctrd7is=} cpu: [arm64] os: [darwin] '@rspack/binding-darwin-x64@1.6.8': - resolution: {integrity: sha1-E8gBzoIQ0Rt7C8Sse/A27DKGKTU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.6.8.tgz} + resolution: {integrity: sha1-E8gBzoIQ0Rt7C8Sse/A27DKGKTU=} cpu: [x64] os: [darwin] '@rspack/binding-linux-arm64-gnu@1.6.8': - resolution: {integrity: sha1-1wMhrFu9W8EB3potoBxvuYRgFWU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.6.8.tgz} + resolution: {integrity: sha1-1wMhrFu9W8EB3potoBxvuYRgFWU=} cpu: [arm64] os: [linux] libc: [glibc] '@rspack/binding-linux-arm64-musl@1.6.8': - resolution: {integrity: sha1-T5GWtiM2Sc5D5khaXScU7zjfxgM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.6.8.tgz} + resolution: {integrity: sha1-T5GWtiM2Sc5D5khaXScU7zjfxgM=} cpu: [arm64] os: [linux] libc: [musl] '@rspack/binding-linux-x64-gnu@1.6.8': - resolution: {integrity: sha1-t45/YrQVezHhgf6J0xmmAXgqgCs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.6.8.tgz} + resolution: {integrity: sha1-t45/YrQVezHhgf6J0xmmAXgqgCs=} cpu: [x64] os: [linux] libc: [glibc] '@rspack/binding-linux-x64-musl@1.6.8': - resolution: {integrity: sha1-xXj3MNip+rhm5KFZIEV++df9X1g=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.6.8.tgz} + resolution: {integrity: sha1-xXj3MNip+rhm5KFZIEV++df9X1g=} cpu: [x64] os: [linux] libc: [musl] '@rspack/binding-wasm32-wasi@1.6.8': - resolution: {integrity: sha1-dtI1iewxrWurZ4TaiffMQsffAnU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.6.8.tgz} + resolution: {integrity: sha1-dtI1iewxrWurZ4TaiffMQsffAnU=} cpu: [wasm32] '@rspack/binding-win32-arm64-msvc@1.6.8': - resolution: {integrity: sha1-tCy6SrdYjOcvDBPJaNPWLophq0Y=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.6.8.tgz} + resolution: {integrity: sha1-tCy6SrdYjOcvDBPJaNPWLophq0Y=} cpu: [arm64] os: [win32] '@rspack/binding-win32-ia32-msvc@1.6.8': - resolution: {integrity: sha1-KTojRIxqEfJamru5iWEwWcfaPsQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.6.8.tgz} + resolution: {integrity: sha1-KTojRIxqEfJamru5iWEwWcfaPsQ=} cpu: [ia32] os: [win32] '@rspack/binding-win32-x64-msvc@1.6.8': - resolution: {integrity: sha1-9f0/AbZpTuCMvDgsO9QtZJCrlEY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.6.8.tgz} + resolution: {integrity: sha1-9f0/AbZpTuCMvDgsO9QtZJCrlEY=} cpu: [x64] os: [win32] @@ -9438,7 +10064,7 @@ packages: typescript: '>=4.7.0' '@rushstack/eslint-config@4.9.0': - resolution: {integrity: sha512-JTjl4PizjRiDsT/0VFx4JdRHSGz2pB4NzGdc9mvG0+k2K0eTYs7b4PSortNfH4TlVToQLL1bBV4hOeD+tzv2MQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/eslint-config/-/eslint-config-4.9.0.tgz} + resolution: {integrity: sha512-JTjl4PizjRiDsT/0VFx4JdRHSGz2pB4NzGdc9mvG0+k2K0eTYs7b4PSortNfH4TlVToQLL1bBV4hOeD+tzv2MQ==} engines: {node: '>=20.9.0'} peerDependencies: eslint: ^8.57.0 || ^9.25.1 @@ -9451,7 +10077,7 @@ packages: resolution: {integrity: sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==} '@rushstack/eslint-plugin-packlets@0.15.3': - resolution: {integrity: sha1-redKXjYHPy0gMo+Y+2bJLD29KbA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/eslint-plugin-packlets/-/eslint-plugin-packlets-0.15.3.tgz} + resolution: {integrity: sha1-redKXjYHPy0gMo+Y+2bJLD29KbA=} engines: {node: '>=20.9.0'} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -9462,7 +10088,7 @@ packages: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 '@rushstack/eslint-plugin-security@0.14.3': - resolution: {integrity: sha1-QqGUT73qz9QYe6TKIF3O7dkzBD0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/eslint-plugin-security/-/eslint-plugin-security-0.14.3.tgz} + resolution: {integrity: sha1-QqGUT73qz9QYe6TKIF3O7dkzBD0=} engines: {node: '>=20.9.0'} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -9478,23 +10104,23 @@ packages: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 '@rushstack/eslint-plugin@0.24.0': - resolution: {integrity: sha512-AubPj8tXQb8A69CxhdwURMI3h0NZW2oOkXERMW1ByxoF8pljck9eLK/k0J9NroeE7XpaBjg3M6RoEu34+5KY7w==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/eslint-plugin/-/eslint-plugin-0.24.0.tgz} + resolution: {integrity: sha512-AubPj8tXQb8A69CxhdwURMI3h0NZW2oOkXERMW1ByxoF8pljck9eLK/k0J9NroeE7XpaBjg3M6RoEu34+5KY7w==} engines: {node: '>=20.9.0'} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 '@rushstack/heft-api-extractor-plugin@1.3.31': - resolution: {integrity: sha512-uulBff64cfeDvJEA2Hy0HEtjyiPFnSy7XFieheu39KFFuSdrlxwYVp3AXsTS3aj9ItkzQptt7b+Jcnz0U16Mfg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-api-extractor-plugin/-/heft-api-extractor-plugin-1.3.31.tgz} + resolution: {integrity: sha512-uulBff64cfeDvJEA2Hy0HEtjyiPFnSy7XFieheu39KFFuSdrlxwYVp3AXsTS3aj9ItkzQptt7b+Jcnz0U16Mfg==} engines: {node: '>=20.9.0'} peerDependencies: '@rushstack/heft': 1.3.4 '@rushstack/heft-config-file@0.20.17': - resolution: {integrity: sha512-zg2kIyWSZs3yauGi6f6auvkwJKO9+SMpG0T/siMiMLsEL1cvV6iRzzoQcyDGzx3vPwiDhwbMtWsNs3hs9vQWwg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-config-file/-/heft-config-file-0.20.17.tgz} + resolution: {integrity: sha512-zg2kIyWSZs3yauGi6f6auvkwJKO9+SMpG0T/siMiMLsEL1cvV6iRzzoQcyDGzx3vPwiDhwbMtWsNs3hs9vQWwg==} engines: {node: '>=20.9.0'} '@rushstack/heft-jest-plugin@2.0.21': - resolution: {integrity: sha512-lMjE9MDqsFLpdVo9qGOr5wsz2MGXO9r/TS3L7z0Ec7zDRubmXvtpJYSGRB5/1q4ZpfOzRfNI2KNSqK5yDIQz6w==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-jest-plugin/-/heft-jest-plugin-2.0.21.tgz} + resolution: {integrity: sha512-lMjE9MDqsFLpdVo9qGOr5wsz2MGXO9r/TS3L7z0Ec7zDRubmXvtpJYSGRB5/1q4ZpfOzRfNI2KNSqK5yDIQz6w==} engines: {node: '>=20.9.0'} peerDependencies: '@rushstack/heft': ^1.3.4 @@ -9510,24 +10136,24 @@ packages: optional: true '@rushstack/heft-lint-plugin@1.4.1': - resolution: {integrity: sha512-BPJKxIbqLPVyQshyK2nUi5jZlOSam9h/iU57kQbdDzSSR0eGXscIyoMqVkU+wWeTiCWhHzgII2jqnjpBkHx79Q==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-lint-plugin/-/heft-lint-plugin-1.4.1.tgz} + resolution: {integrity: sha512-BPJKxIbqLPVyQshyK2nUi5jZlOSam9h/iU57kQbdDzSSR0eGXscIyoMqVkU+wWeTiCWhHzgII2jqnjpBkHx79Q==} engines: {node: '>=20.9.0'} peerDependencies: '@rushstack/heft': 1.3.4 '@rushstack/heft-node-rig@2.11.55': - resolution: {integrity: sha512-Dx/iLn3hiSxVOWvfO/fMuO6uhBHaqL2QD2KNx0Frq8U77Q9pdE/tga21NT+/fTY6uWYWLWYRz8BZdw8bjh5ttg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-node-rig/-/heft-node-rig-2.11.55.tgz} + resolution: {integrity: sha512-Dx/iLn3hiSxVOWvfO/fMuO6uhBHaqL2QD2KNx0Frq8U77Q9pdE/tga21NT+/fTY6uWYWLWYRz8BZdw8bjh5ttg==} peerDependencies: '@rushstack/heft': ^1.3.4 '@rushstack/heft-typescript-plugin@1.3.26': - resolution: {integrity: sha512-BgFObHOtBtoNRun1s6Fi24tOKTyMGfukUs1oKvcb96SWlfgKgj3w59uGhS7q1+QbpkaPYdHzeeL9ZrR7xMlkhg==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft-typescript-plugin/-/heft-typescript-plugin-1.3.26.tgz} + resolution: {integrity: sha512-BgFObHOtBtoNRun1s6Fi24tOKTyMGfukUs1oKvcb96SWlfgKgj3w59uGhS7q1+QbpkaPYdHzeeL9ZrR7xMlkhg==} engines: {node: '>=20.9.0'} peerDependencies: '@rushstack/heft': 1.3.4 '@rushstack/heft@1.3.4': - resolution: {integrity: sha512-UQ7DwADui229AZG7GJgNmoMNOqSq49HaXcFtjgF+TmJbNPES84/0YwFkyUg9YicV0cEl9+3hTfKg6Wpzr3xcgQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/heft/-/heft-1.3.4.tgz} + resolution: {integrity: sha512-UQ7DwADui229AZG7GJgNmoMNOqSq49HaXcFtjgF+TmJbNPES84/0YwFkyUg9YicV0cEl9+3hTfKg6Wpzr3xcgQ==} engines: {node: '>=20.9.0'} hasBin: true @@ -9540,7 +10166,7 @@ packages: optional: true '@rushstack/node-core-library@5.25.1': - resolution: {integrity: sha512-ozoRDwIx3jStOYpx86rFyXH4SaUR+DVT6HubQ59avLplJkWXSm5InztYH7RrOzzq9PJXTdq9/+lKX06SfkLVsA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/node-core-library/-/node-core-library-5.25.1.tgz} + resolution: {integrity: sha512-ozoRDwIx3jStOYpx86rFyXH4SaUR+DVT6HubQ59avLplJkWXSm5InztYH7RrOzzq9PJXTdq9/+lKX06SfkLVsA==} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -9549,7 +10175,7 @@ packages: optional: true '@rushstack/operation-graph@0.7.5': - resolution: {integrity: sha512-jtXI+3KetcWZAbganAUkzZu5c/lzwkmfBWC9k5TPmCDhlrpdegCJ92B5jcOngT/iDFhoQv3tP0CNETGGvUBFRQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/operation-graph/-/operation-graph-0.7.5.tgz} + resolution: {integrity: sha512-jtXI+3KetcWZAbganAUkzZu5c/lzwkmfBWC9k5TPmCDhlrpdegCJ92B5jcOngT/iDFhoQv3tP0CNETGGvUBFRQ==} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -9558,7 +10184,7 @@ packages: optional: true '@rushstack/problem-matcher@0.2.1': - resolution: {integrity: sha1-6fbKwt1qiC1g52qNRGK30ktPF+U=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/problem-matcher/-/problem-matcher-0.2.1.tgz} + resolution: {integrity: sha1-6fbKwt1qiC1g52qNRGK30ktPF+U=} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -9566,7 +10192,7 @@ packages: optional: true '@rushstack/rig-package@0.7.4': - resolution: {integrity: sha512-SHZdzc9b2ptUb5uvRWALtAceD/QKZ4UAnZjcaKviTMPmHBnW14gs7XDocn6sDv2EqgnxxFPFkpV7/I3cUijCbw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/rig-package/-/rig-package-0.7.4.tgz} + resolution: {integrity: sha512-SHZdzc9b2ptUb5uvRWALtAceD/QKZ4UAnZjcaKviTMPmHBnW14gs7XDocn6sDv2EqgnxxFPFkpV7/I3cUijCbw==} engines: {node: '>=20.9.0'} '@rushstack/set-webpack-public-path-plugin@4.1.16': @@ -9578,7 +10204,7 @@ packages: optional: true '@rushstack/terminal@0.24.7': - resolution: {integrity: sha512-o8J9nHOIwfYb0s0eG2WYhx7ed3YIvBXQHVFxYdXCmVdBOkTkdArJcgVzRS8ewUepmlic4nGgJPjKIVaNKSqEnA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/terminal/-/terminal-0.24.7.tgz} + resolution: {integrity: sha512-o8J9nHOIwfYb0s0eG2WYhx7ed3YIvBXQHVFxYdXCmVdBOkTkdArJcgVzRS8ewUepmlic4nGgJPjKIVaNKSqEnA==} engines: {node: '>=20.9.0'} peerDependencies: '@types/node': '*' @@ -9587,13 +10213,13 @@ packages: optional: true '@rushstack/tree-pattern@0.3.4': - resolution: {integrity: sha1-f5N/XPx8dNxIP/8GNMKoTSRiHFw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/tree-pattern/-/tree-pattern-0.3.4.tgz} + resolution: {integrity: sha1-f5N/XPx8dNxIP/8GNMKoTSRiHFw=} '@rushstack/tree-pattern@0.4.1': - resolution: {integrity: sha1-cRI62zQgksnfv93gMf9SsR3OQxo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/tree-pattern/-/tree-pattern-0.4.1.tgz} + resolution: {integrity: sha1-cRI62zQgksnfv93gMf9SsR3OQxo=} '@rushstack/ts-command-line@5.3.17': - resolution: {integrity: sha512-pIwhWawZXAT0nTXwvcE/InQ7uaVAgSeIzILMb2mBrI01Hz1yEvxrhV2+DE2Fzux8aZY9OJTdLsI+sk9kZDuAJw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@rushstack/ts-command-line/-/ts-command-line-5.3.17.tgz} + resolution: {integrity: sha512-pIwhWawZXAT0nTXwvcE/InQ7uaVAgSeIzILMb2mBrI01Hz1yEvxrhV2+DE2Fzux8aZY9OJTdLsI+sk9kZDuAJw==} engines: {node: '>=20.9.0'} '@rushstack/webpack-plugin-utilities@0.3.16': @@ -10257,65 +10883,65 @@ packages: react-dom: ^16.8.0 || ^17.0.0 '@swc/core-darwin-arm64@1.7.10': - resolution: {integrity: sha1-PuU+21AbI7EERqmNH21tSH2Iodk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.10.tgz} + resolution: {integrity: sha1-PuU+21AbI7EERqmNH21tSH2Iodk=} engines: {node: '>=10'} cpu: [arm64] os: [darwin] '@swc/core-darwin-x64@1.7.10': - resolution: {integrity: sha1-cdNUFYDjbr73bTfwCBxJp/Gv6tY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-darwin-x64/-/core-darwin-x64-1.7.10.tgz} + resolution: {integrity: sha1-cdNUFYDjbr73bTfwCBxJp/Gv6tY=} engines: {node: '>=10'} cpu: [x64] os: [darwin] '@swc/core-linux-arm-gnueabihf@1.7.10': - resolution: {integrity: sha1-ez86gp2R+FmlAP5gfmgUiY7oGdk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.10.tgz} + resolution: {integrity: sha1-ez86gp2R+FmlAP5gfmgUiY7oGdk=} engines: {node: '>=10'} cpu: [arm] os: [linux] '@swc/core-linux-arm64-gnu@1.7.10': - resolution: {integrity: sha512-SPWsgWHfdWKKjLrYlvhxcdBJ7Ruy6crJbPoE9NfD95eJEjMnS2yZTqj2ChFsY737WeyhWYlHzgYhYOVCp83YwQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.10.tgz} + resolution: {integrity: sha512-SPWsgWHfdWKKjLrYlvhxcdBJ7Ruy6crJbPoE9NfD95eJEjMnS2yZTqj2ChFsY737WeyhWYlHzgYhYOVCp83YwQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [glibc] '@swc/core-linux-arm64-musl@1.7.10': - resolution: {integrity: sha512-PUi50bkNqnBL3Z/Zq6jSfwgN9A/taA6u2Zou0tjDJi7oVdpjdr7SxNgCGzMJ/nNg5D/IQn1opM1jktMvpsPAuQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.10.tgz} + resolution: {integrity: sha512-PUi50bkNqnBL3Z/Zq6jSfwgN9A/taA6u2Zou0tjDJi7oVdpjdr7SxNgCGzMJ/nNg5D/IQn1opM1jktMvpsPAuQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [musl] '@swc/core-linux-x64-gnu@1.7.10': - resolution: {integrity: sha1-EBpx3PkiTrLO7HgaJUqTd0xl/zE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.10.tgz} + resolution: {integrity: sha1-EBpx3PkiTrLO7HgaJUqTd0xl/zE=} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [glibc] '@swc/core-linux-x64-musl@1.7.10': - resolution: {integrity: sha1-b8Grv32BgzQ76Ur64L9ZaumNQEg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.10.tgz} + resolution: {integrity: sha1-b8Grv32BgzQ76Ur64L9ZaumNQEg=} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [musl] '@swc/core-win32-arm64-msvc@1.7.10': - resolution: {integrity: sha1-XW7P2kzF6D7IZZEZ8WB7FmP3Cm0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.10.tgz} + resolution: {integrity: sha1-XW7P2kzF6D7IZZEZ8WB7FmP3Cm0=} engines: {node: '>=10'} cpu: [arm64] os: [win32] '@swc/core-win32-ia32-msvc@1.7.10': - resolution: {integrity: sha1-N/MXfaU7KLLcjIOu/vwgIFBk688=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.10.tgz} + resolution: {integrity: sha1-N/MXfaU7KLLcjIOu/vwgIFBk688=} engines: {node: '>=10'} cpu: [ia32] os: [win32] '@swc/core-win32-x64-msvc@1.7.10': - resolution: {integrity: sha1-KBQzXAAylcSoCOwbnPGepU+a1uU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.10.tgz} + resolution: {integrity: sha1-KBQzXAAylcSoCOwbnPGepU+a1uU=} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -10364,7 +10990,7 @@ packages: resolution: {integrity: sha512-yw0omUrxGp8+gEAuieZFeXB4bCqFvmyCDL3GOBv+Q6+cK0m5824ViHZKPgK5DYG1ijN/lbi1hP3UVKywPN7rbQ==} '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha1-7N3TIFzx4tUnRkn/Du3SmR7X9BQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@tybys/wasm-util/-/wasm-util-0.10.1.tgz} + resolution: {integrity: sha1-7N3TIFzx4tUnRkn/Du3SmR7X9BQ=} '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} @@ -10573,7 +11199,7 @@ packages: resolution: {integrity: sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA==} '@types/node@14.18.63': - resolution: {integrity: sha1-F4j6jag427X56plLg0J4IF22yis=, tarball: https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@types/node/-/node-14.18.63.tgz} + resolution: {integrity: sha1-F4j6jag427X56plLg0J4IF22yis=} '@types/node@17.0.41': resolution: {integrity: sha512-xA6drNNeqb5YyV5fO3OAEsnXLfO7uF0whiOfPTz5AeDo8KeZFmODKnvwPymMNO8qE/an8pVY/O50tig2SQCrGw==} @@ -10878,107 +11504,108 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@unrs/resolver-binding-android-arm-eabi@1.11.1': - resolution: {integrity: sha1-n1sEUDCI5qNUKV6OqP48uZ5Dr4E=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz} + resolution: {integrity: sha1-n1sEUDCI5qNUKV6OqP48uZ5Dr4E=} cpu: [arm] os: [android] '@unrs/resolver-binding-android-arm64@1.11.1': - resolution: {integrity: sha1-dBSIVDG9cXi5ia7cTSXMyzhlvJ8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz} + resolution: {integrity: sha1-dBSIVDG9cXi5ia7cTSXMyzhlvJ8=} cpu: [arm64] os: [android] '@unrs/resolver-binding-darwin-arm64@1.11.1': - resolution: {integrity: sha1-tKhVb0IXH7nJ97rII1BF6Cqgy98=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz} + resolution: {integrity: sha1-tKhVb0IXH7nJ97rII1BF6Cqgy98=} cpu: [arm64] os: [darwin] '@unrs/resolver-binding-darwin-x64@1.11.1': - resolution: {integrity: sha1-/U2BJXsT9NGgg4kKahfADeVx8Nw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz} + resolution: {integrity: sha1-/U2BJXsT9NGgg4kKahfADeVx8Nw=} cpu: [x64] os: [darwin] '@unrs/resolver-binding-freebsd-x64@1.11.1': - resolution: {integrity: sha1-0lEwhNDzfEB3V+IvMr2SSnjP2Zs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz} + resolution: {integrity: sha1-0lEwhNDzfEB3V+IvMr2SSnjP2Zs=} cpu: [x64] os: [freebsd] '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': - resolution: {integrity: sha1-hE0mBdBXSI13+rCXBfKGa4YWTgo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz} + resolution: {integrity: sha1-hE0mBdBXSI13+rCXBfKGa4YWTgo=} cpu: [arm] os: [linux] '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': - resolution: {integrity: sha1-IEiSmVzvtr0dAX1S0JcZO8Yd2tM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz} + resolution: {integrity: sha1-IEiSmVzvtr0dAX1S0JcZO8Yd2tM=} cpu: [arm] os: [linux] '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': - resolution: {integrity: sha1-Aj6ww6rEYGahC+ej82Lns087350=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz} + resolution: {integrity: sha1-Aj6ww6rEYGahC+ej82Lns087350=} cpu: [arm64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': - resolution: {integrity: sha1-nm+auwZCTjFApgrJlhOXhvXZm+A=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz} + resolution: {integrity: sha1-nm+auwZCTjFApgrJlhOXhvXZm+A=} cpu: [arm64] os: [linux] libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': - resolution: {integrity: sha1-sRFBfxfJ0bAu++yOCDmPDFUnu0Q=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz} + resolution: {integrity: sha1-sRFBfxfJ0bAu++yOCDmPDFUnu0Q=} cpu: [ppc64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': - resolution: {integrity: sha1-kv+/AnSK8+mYc5RcmoperQHVCKk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz} + resolution: {integrity: sha1-kv+/AnSK8+mYc5RcmoperQHVCKk=} cpu: [riscv64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': - resolution: {integrity: sha1-C+xvElj8OQ5rMF6f9EJWyyB94WU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz} + resolution: {integrity: sha1-C+xvElj8OQ5rMF6f9EJWyyB94WU=} cpu: [riscv64] os: [linux] libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': - resolution: {integrity: sha1-V3hDoITFlS9ZBncGM8z7idrJvJQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz} + resolution: {integrity: sha1-V3hDoITFlS9ZBncGM8z7idrJvJQ=} cpu: [s390x] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': - resolution: {integrity: sha1-NvsxjuvdaQ9toyrF4EmadvqIGTU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz} + resolution: {integrity: sha1-NvsxjuvdaQ9toyrF4EmadvqIGTU=} cpu: [x64] os: [linux] libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': - resolution: {integrity: sha1-v7mvdfeD+Y9qIsQkQhTv5N8YU9Y=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz} + resolution: {integrity: sha1-v7mvdfeD+Y9qIsQkQhTv5N8YU9Y=} cpu: [x64] os: [linux] libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': - resolution: {integrity: sha1-dSw1ndh1aEsnQpUA2IIm18xy9x0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz} + resolution: {integrity: sha1-dSw1ndh1aEsnQpUA2IIm18xy9x0=} engines: {node: '>=14.0.0'} cpu: [wasm32] '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': - resolution: {integrity: sha1-zlc15gDkwvu0Cc0FGzt9pKOZrzU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz} + resolution: {integrity: sha1-zlc15gDkwvu0Cc0FGzt9pKOZrzU=} cpu: [arm64] os: [win32] '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': - resolution: {integrity: sha1-cvxXvHxk7Fw94NZO4NGBAxe8YKY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz} + resolution: {integrity: sha1-cvxXvHxk7Fw94NZO4NGBAxe8YKY=} cpu: [ia32] os: [win32] '@unrs/resolver-binding-win32-x64-msvc@1.11.1': - resolution: {integrity: sha1-U4seEDv42YZOe4XMlvqNb7bEB3c=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz} + resolution: {integrity: sha1-U4seEDv42YZOe4XMlvqNb7bEB3c=} cpu: [x64] os: [win32] @@ -11010,47 +11637,47 @@ packages: engines: {node: '>=8.9.3'} '@vscode/vsce-sign-alpine-arm64@2.0.6': - resolution: {integrity: sha1-LNJEyvXo7FQ/QvuR1N87kzZByPo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz} + resolution: {integrity: sha1-LNJEyvXo7FQ/QvuR1N87kzZByPo=} cpu: [arm64] os: [alpine] '@vscode/vsce-sign-alpine-x64@2.0.6': - resolution: {integrity: sha1-sOgKR5IAHGbif+7iwR6CGtH6FoA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz} + resolution: {integrity: sha1-sOgKR5IAHGbif+7iwR6CGtH6FoA=} cpu: [x64] os: [alpine] '@vscode/vsce-sign-darwin-arm64@2.0.6': - resolution: {integrity: sha1-S4+hq1XygKmZhb48BvtzDleBDM4=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz} + resolution: {integrity: sha1-S4+hq1XygKmZhb48BvtzDleBDM4=} cpu: [arm64] os: [darwin] '@vscode/vsce-sign-darwin-x64@2.0.6': - resolution: {integrity: sha1-0skYbZUFSYJyy93YODuwOOvPWCA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz} + resolution: {integrity: sha1-0skYbZUFSYJyy93YODuwOOvPWCA=} cpu: [x64] os: [darwin] '@vscode/vsce-sign-linux-arm64@2.0.6': - resolution: {integrity: sha1-s9hWAUQEC5INjG7dQ3QxS1glVIE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz} + resolution: {integrity: sha1-s9hWAUQEC5INjG7dQ3QxS1glVIE=} cpu: [arm64] os: [linux] '@vscode/vsce-sign-linux-arm@2.0.6': - resolution: {integrity: sha1-CifEKkrbN+lu7HjNe/o4jNTp++8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz} + resolution: {integrity: sha1-CifEKkrbN+lu7HjNe/o4jNTp++8=} cpu: [arm] os: [linux] '@vscode/vsce-sign-linux-x64@2.0.6': - resolution: {integrity: sha1-reEcru7VJPwWvWxDykmuoAKV3ow=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz} + resolution: {integrity: sha1-reEcru7VJPwWvWxDykmuoAKV3ow=} cpu: [x64] os: [linux] '@vscode/vsce-sign-win32-arm64@2.0.6': - resolution: {integrity: sha1-BoiWgUjgPrOSR5yEkcclBnIb7/w=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz} + resolution: {integrity: sha1-BoiWgUjgPrOSR5yEkcclBnIb7/w=} cpu: [arm64] os: [win32] '@vscode/vsce-sign-win32-x64@2.0.6': - resolution: {integrity: sha1-dEMO/0HSaBjCP5gmsEXYx1cy6us=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz} + resolution: {integrity: sha1-dEMO/0HSaBjCP5gmsEXYx1cy6us=} cpu: [x64] os: [win32] @@ -11175,11 +11802,11 @@ packages: engines: {node: '>=10.13'} '@zkochan/js-yaml@0.0.11': - resolution: {integrity: sha1-T2aH2CGxW1MG1Z391Mu32K5wHI0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@zkochan/js-yaml/-/js-yaml-0.0.11.tgz} + resolution: {integrity: sha1-T2aH2CGxW1MG1Z391Mu32K5wHI0=} hasBin: true '@zkochan/js-yaml@0.0.6': - resolution: {integrity: sha1-l18LMG5wXii4BooHc3+kbT/ASCY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz} + resolution: {integrity: sha1-l18LMG5wXii4BooHc3+kbT/ASCY=} hasBin: true '@zkochan/rimraf@2.1.3': @@ -11191,7 +11818,7 @@ packages: engines: {node: '>=18.12'} '@zkochan/which@2.0.3': - resolution: {integrity: sha1-okOQNZOQ04wVH6YHgbNiC8WhMtA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/@zkochan/which/-/which-2.0.3.tgz} + resolution: {integrity: sha1-okOQNZOQ04wVH6YHgbNiC8WhMtA=} engines: {node: '>= 8'} hasBin: true @@ -11312,10 +11939,10 @@ packages: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} ajv@8.12.0: - resolution: {integrity: sha1-0aBScyPiL1NWLFZ8AJkVd9++GdE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ajv/-/ajv-8.12.0.tgz} + resolution: {integrity: sha1-0aBScyPiL1NWLFZ8AJkVd9++GdE=} ajv@8.18.0: - resolution: {integrity: sha1-iGQYa2c40APrOpMxcrs4M+EM77w=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ajv/-/ajv-8.18.0.tgz} + resolution: {integrity: sha1-iGQYa2c40APrOpMxcrs4M+EM77w=} ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} @@ -11337,12 +11964,10 @@ packages: ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} - engines: {'0': node >= 0.8.0} hasBin: true ansi-html@0.0.9: resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} - engines: {'0': node >= 0.8.0} hasBin: true ansi-regex@2.1.1: @@ -11831,7 +12456,7 @@ packages: resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} bindings@1.5.0: - resolution: {integrity: sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/bindings/-/bindings-1.5.0.tgz} + resolution: {integrity: sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=} bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -12097,7 +12722,7 @@ packages: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} cheerio@1.2.0: - resolution: {integrity: sha1-8jt3fEkCHq10ddzzOQ01Naf4ltY=, tarball: https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/cheerio/-/cheerio-1.2.0.tgz} + resolution: {integrity: sha1-8jt3fEkCHq10ddzzOQ01Naf4ltY=} engines: {node: '>=20.18.1'} chokidar@2.1.8: @@ -12276,7 +12901,7 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} commander@4.1.1: - resolution: {integrity: sha1-n9YCvZNilOnp70aj9NaWQESxgGg=, tarball: https://ms-feed-17.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/commander/-/commander-4.1.1.tgz} + resolution: {integrity: sha1-n9YCvZNilOnp70aj9NaWQESxgGg=} engines: {node: '>= 6'} commander@6.2.1: @@ -12292,7 +12917,7 @@ packages: engines: {node: '>= 12'} commander@9.5.0: - resolution: {integrity: sha1-vAjR61zt98y3l6lhmdQce8PmDTA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/commander/-/commander-9.5.0.tgz} + resolution: {integrity: sha1-vAjR61zt98y3l6lhmdQce8PmDTA=} engines: {node: ^12.20.0 || >=14} comment-parser@1.4.1: @@ -12333,7 +12958,6 @@ packages: concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} conf@10.2.0: resolution: {integrity: sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg==} @@ -12478,7 +13102,7 @@ packages: hasBin: true cross-spawn@6.0.6: - resolution: {integrity: sha1-MNDvoHEt2361p24ehyG/+vprXVc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/cross-spawn/-/cross-spawn-6.0.6.tgz} + resolution: {integrity: sha1-MNDvoHEt2361p24ehyG/+vprXVc=} engines: {node: '>=4.8'} cross-spawn@7.0.6: @@ -13003,10 +13627,10 @@ packages: engines: {node: '>= 0.8'} encoding-sniffer@0.2.1: - resolution: {integrity: sha1-OW7JesIs5aA3ukSvGZKsnUanuBk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz} + resolution: {integrity: sha1-OW7JesIs5aA3ukSvGZKsnUanuBk=} encoding@0.1.13: - resolution: {integrity: sha1-VldK/deR9UqOmyeFwFgqLSYhD6k=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/encoding/-/encoding-0.1.13.tgz} + resolution: {integrity: sha1-VldK/deR9UqOmyeFwFgqLSYhD6k=} end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} @@ -13038,7 +13662,7 @@ packages: engines: {node: '>=0.12'} entities@7.0.1: - resolution: {integrity: sha1-JuioiInbY0F9y5oeeaPxvJK1l2s=, tarball: https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/entities/-/entities-7.0.1.tgz} + resolution: {integrity: sha1-JuioiInbY0F9y5oeeaPxvJK1l2s=} engines: {node: '>=0.12'} env-paths@2.2.1: @@ -13118,97 +13742,97 @@ packages: resolution: {integrity: sha512-Twf7I2v4/1tLoIXMT8HlqaBSS5H2wQTs2wx3MNYCI8K1R1/clXyCazrcVCPm/FuO9cyV8+leEaZOWD5C253NDg==} esbuild-android-64@0.14.54: - resolution: {integrity: sha1-UF9BgyiEMTu6/7J3BLi8qi2GFr4=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz} + resolution: {integrity: sha1-UF9BgyiEMTu6/7J3BLi8qi2GFr4=} engines: {node: '>=12'} cpu: [x64] os: [android] esbuild-android-arm64@0.14.54: - resolution: {integrity: sha1-jOadfKuklkbgCZaP5XVKIamHF3E=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz} + resolution: {integrity: sha1-jOadfKuklkbgCZaP5XVKIamHF3E=} engines: {node: '>=12'} cpu: [arm64] os: [android] esbuild-darwin-64@0.14.54: - resolution: {integrity: sha1-JLpnuajLiQo8CNkBj4h8wiHN2iU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz} + resolution: {integrity: sha1-JLpnuajLiQo8CNkBj4h8wiHN2iU=} engines: {node: '>=12'} cpu: [x64] os: [darwin] esbuild-darwin-arm64@0.14.54: - resolution: {integrity: sha1-P3zbeIiO4F5IjSUKK9qrH6Zxv3M=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz} + resolution: {integrity: sha1-P3zbeIiO4F5IjSUKK9qrH6Zxv3M=} engines: {node: '>=12'} cpu: [arm64] os: [darwin] esbuild-freebsd-64@0.14.54: - resolution: {integrity: sha1-CSUPmXpW7UZQ8+GXnJBf/EC76U0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz} + resolution: {integrity: sha1-CSUPmXpW7UZQ8+GXnJBf/EC76U0=} engines: {node: '>=12'} cpu: [x64] os: [freebsd] esbuild-freebsd-arm64@0.14.54: - resolution: {integrity: sha1-uvtG7QT8X5fL2wFthpR6eVefjkg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz} + resolution: {integrity: sha1-uvtG7QT8X5fL2wFthpR6eVefjkg=} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] esbuild-linux-32@0.14.54: - resolution: {integrity: sha1-4qjEqO/cNVQFMlAz/OvrlB94H+U=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz} + resolution: {integrity: sha1-4qjEqO/cNVQFMlAz/OvrlB94H+U=} engines: {node: '>=12'} cpu: [ia32] os: [linux] esbuild-linux-64@0.14.54: - resolution: {integrity: sha1-3l/boclWZs9yNp9StAsDvnEiZlI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz} + resolution: {integrity: sha1-3l/boclWZs9yNp9StAsDvnEiZlI=} engines: {node: '>=12'} cpu: [x64] os: [linux] esbuild-linux-arm64@0.14.54: - resolution: {integrity: sha1-2uTNQq6Xh0aLalwVjaTIToOwzos=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz} + resolution: {integrity: sha1-2uTNQq6Xh0aLalwVjaTIToOwzos=} engines: {node: '>=12'} cpu: [arm64] os: [linux] esbuild-linux-arm@0.14.54: - resolution: {integrity: sha1-osHf9tDyHb6PxpmKEiZ1Uz3fzVk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz} + resolution: {integrity: sha1-osHf9tDyHb6PxpmKEiZ1Uz3fzVk=} engines: {node: '>=12'} cpu: [arm] os: [linux] esbuild-linux-mips64le@0.14.54: - resolution: {integrity: sha1-2ZGOnky5cvjW2ujoZVv57hMe2jQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz} + resolution: {integrity: sha1-2ZGOnky5cvjW2ujoZVv57hMe2jQ=} engines: {node: '>=12'} cpu: [mips64el] os: [linux] esbuild-linux-ppc64le@0.14.54: - resolution: {integrity: sha1-P5oPbUEHP7GmQGgIRcfeUplfE34=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz} + resolution: {integrity: sha1-P5oPbUEHP7GmQGgIRcfeUplfE34=} engines: {node: '>=12'} cpu: [ppc64] os: [linux] esbuild-linux-riscv64@0.14.54: - resolution: {integrity: sha1-YYhTwCgXimGDe8eZ0gE9RpXkUcg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz} + resolution: {integrity: sha1-YYhTwCgXimGDe8eZ0gE9RpXkUcg=} engines: {node: '>=12'} cpu: [riscv64] os: [linux] esbuild-linux-s390x@0.14.54: - resolution: {integrity: sha1-0YhcTFp2u7Wg/hguLIxg654p8qY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz} + resolution: {integrity: sha1-0YhcTFp2u7Wg/hguLIxg654p8qY=} engines: {node: '>=12'} cpu: [s390x] os: [linux] esbuild-netbsd-64@0.14.54: - resolution: {integrity: sha1-aa6Rei/yQbffHb8iuvBL0zA0noE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz} + resolution: {integrity: sha1-aa6Rei/yQbffHb8iuvBL0zA0noE=} engines: {node: '>=12'} cpu: [x64] os: [netbsd] esbuild-openbsd-64@0.14.54: - resolution: {integrity: sha1-20yElSh6NQpnkN4i7eokelfF1Hs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz} + resolution: {integrity: sha1-20yElSh6NQpnkN4i7eokelfF1Hs=} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -13225,25 +13849,25 @@ packages: esbuild: '*' esbuild-sunos-64@0.14.54: - resolution: {integrity: sha1-VCh+49pz04RLchwhvIDB3H4b99o=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz} + resolution: {integrity: sha1-VCh+49pz04RLchwhvIDB3H4b99o=} engines: {node: '>=12'} cpu: [x64] os: [sunos] esbuild-windows-32@0.14.54: - resolution: {integrity: sha1-+Kr5pWZ2MLQPD7OqN78Bu9NAzjE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz} + resolution: {integrity: sha1-+Kr5pWZ2MLQPD7OqN78Bu9NAzjE=} engines: {node: '>=12'} cpu: [ia32] os: [win32] esbuild-windows-64@0.14.54: - resolution: {integrity: sha1-v1S1G9PpsPGIb/2yJKQXYDHqCvQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz} + resolution: {integrity: sha1-v1S1G9PpsPGIb/2yJKQXYDHqCvQ=} engines: {node: '>=12'} cpu: [x64] os: [win32] esbuild-windows-arm64@0.14.54: - resolution: {integrity: sha1-k30VZ1oV5LDk+v26o6Aad2or6YI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz} + resolution: {integrity: sha1-k30VZ1oV5LDk+v26o6Aad2or6YI=} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -13360,7 +13984,7 @@ packages: resolution: {integrity: sha512-0MuFdBrrJVBjT/gyhkP2BqpD0np1NxNLfQ38xXDlSs/KVVpKI2A6vN7jx2Rve/CyUsvOsMGwp9KKrinv7q9g3A==} eslint-plugin-tsdoc@0.5.3: - resolution: {integrity: sha1-njMIsLlZvA332GU8+DbAHvtdcrI=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.5.3.tgz} + resolution: {integrity: sha1-njMIsLlZvA332GU8+DbAHvtdcrI=} peerDependencies: eslint: '>=7' peerDependenciesMeta: @@ -13543,11 +14167,11 @@ packages: resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} execa@1.0.0: - resolution: {integrity: sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/execa/-/execa-1.0.0.tgz} + resolution: {integrity: sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=} engines: {node: '>=6'} execa@5.1.1: - resolution: {integrity: sha1-+ArZy/Qpj3vR1MlVXCHpN0HEEd0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/execa/-/execa-5.1.1.tgz} + resolution: {integrity: sha1-+ArZy/Qpj3vR1MlVXCHpN0HEEd0=} engines: {node: '>=10'} exit-x@0.2.2: @@ -13618,7 +14242,7 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-glob@2.2.7: - resolution: {integrity: sha1-aVOFfDr6R1//ku5gFdUtpwpM050=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fast-glob/-/fast-glob-2.2.7.tgz} + resolution: {integrity: sha1-aVOFfDr6R1//ku5gFdUtpwpM050=} engines: {node: '>=4.0.0'} fast-glob@3.3.3: @@ -13729,7 +14353,7 @@ packages: resolution: {integrity: sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==} file-uri-to-path@1.0.0: - resolution: {integrity: sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz} + resolution: {integrity: sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=} fill-range@4.0.0: resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} @@ -13898,7 +14522,7 @@ packages: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} fs-extra@10.1.0: - resolution: {integrity: sha1-Aoc8+8QITd4SfqpfmQXu8jJdGr8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fs-extra/-/fs-extra-10.1.0.tgz} + resolution: {integrity: sha1-Aoc8+8QITd4SfqpfmQXu8jJdGr8=} engines: {node: '>=12'} fs-extra@11.3.4: @@ -13906,11 +14530,11 @@ packages: engines: {node: '>=14.14'} fs-extra@7.0.1: - resolution: {integrity: sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fs-extra/-/fs-extra-7.0.1.tgz} + resolution: {integrity: sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=} engines: {node: '>=6 <7 || >=8'} fs-extra@8.1.0: - resolution: {integrity: sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fs-extra/-/fs-extra-8.1.0.tgz} + resolution: {integrity: sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA=} engines: {node: '>=6 <7 || >=8'} fs-extra@9.1.0: @@ -13935,18 +14559,18 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@1.2.13: - resolution: {integrity: sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fsevents/-/fsevents-1.2.13.tgz} + resolution: {integrity: sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=} engines: {node: '>= 4.0'} os: [darwin] deprecated: Upgrade to fsevents v2 to mitigate potential security issues fsevents@2.3.2: - resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fsevents/-/fsevents-2.3.2.tgz} + resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] fsevents@2.3.3: - resolution: {integrity: sha1-ysZAd4XQNnWipeGlMFxpezR9kNY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/fsevents/-/fsevents-2.3.3.tgz} + resolution: {integrity: sha1-ysZAd4XQNnWipeGlMFxpezR9kNY=} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -14017,15 +14641,15 @@ packages: engines: {node: '>= 0.4'} get-stream@4.1.0: - resolution: {integrity: sha1-wbJVV189wh1Zv8ec09K0axw6VLU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/get-stream/-/get-stream-4.1.0.tgz} + resolution: {integrity: sha1-wbJVV189wh1Zv8ec09K0axw6VLU=} engines: {node: '>=6'} get-stream@5.2.0: - resolution: {integrity: sha1-SWaheV7lrOZecGxLe+txJX1uItM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/get-stream/-/get-stream-5.2.0.tgz} + resolution: {integrity: sha1-SWaheV7lrOZecGxLe+txJX1uItM=} engines: {node: '>=8'} get-stream@6.0.1: - resolution: {integrity: sha1-omLY7vZ6ztV8KFKtYWdSakPL97c=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/get-stream/-/get-stream-6.0.1.tgz} + resolution: {integrity: sha1-omLY7vZ6ztV8KFKtYWdSakPL97c=} engines: {node: '>=10'} get-symbol-description@1.1.0: @@ -14159,7 +14783,7 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} graphql@16.13.2: - resolution: {integrity: sha1-TStz31eWsgHxvCdl9dcGf2ictV8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/graphql/-/graphql-16.13.2.tgz} + resolution: {integrity: sha1-TStz31eWsgHxvCdl9dcGf2ictV8=} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} gzip-size@6.0.0: @@ -14327,7 +14951,7 @@ packages: webpack: ^5.20.0 htmlparser2@10.1.0: - resolution: {integrity: sha1-/j8uEsc7bkYtThA5XbnBEZ5NauQ=, tarball: https://ms-feed-17.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/htmlparser2/-/htmlparser2-10.1.0.tgz} + resolution: {integrity: sha1-/j8uEsc7bkYtThA5XbnBEZ5NauQ=} htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} @@ -14395,7 +15019,7 @@ packages: engines: {node: '>= 14'} human-signals@2.1.0: - resolution: {integrity: sha1-3JH8ukLk0G5Kuu0zs+ejwC9RTqA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/human-signals/-/human-signals-2.1.0.tgz} + resolution: {integrity: sha1-3JH8ukLk0G5Kuu0zs+ejwC9RTqA=} engines: {node: '>=10.17.0'} humanize-ms@1.2.1: @@ -14410,7 +15034,7 @@ packages: engines: {node: '>=0.10.0'} iconv-lite@0.6.3: - resolution: {integrity: sha1-pS+AvzjaGVLrXGgXkHGYcaGnJQE=, tarball: https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/iconv-lite/-/iconv-lite-0.6.3.tgz} + resolution: {integrity: sha1-pS+AvzjaGVLrXGgXkHGYcaGnJQE=} engines: {node: '>=0.10.0'} iconv-lite@0.7.2: @@ -14476,7 +15100,7 @@ packages: engines: {node: '>=6'} import-lazy@2.1.0: - resolution: {integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/import-lazy/-/import-lazy-2.1.0.tgz} + resolution: {integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=} engines: {node: '>=4'} import-lazy@4.0.0: @@ -14792,11 +15416,11 @@ packages: engines: {node: '>= 0.4'} is-stream@1.1.0: - resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/is-stream/-/is-stream-1.1.0.tgz} + resolution: {integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ=} engines: {node: '>=0.10.0'} is-stream@2.0.1: - resolution: {integrity: sha1-+sHj1TuXrVqdCunO8jifWBClwHc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/is-stream/-/is-stream-2.0.1.tgz} + resolution: {integrity: sha1-+sHj1TuXrVqdCunO8jifWBClwHc=} engines: {node: '>=8'} is-string@1.1.1: @@ -14869,7 +15493,7 @@ packages: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} isexe@2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/isexe/-/isexe-2.0.0.tgz} + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} isobject@2.1.0: resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} @@ -15019,7 +15643,7 @@ packages: optional: true jest-environment-node@29.7.0: - resolution: {integrity: sha1-C5PhEd2o7BILyDAObR+5V24WQ3Y=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/jest-environment-node/-/jest-environment-node-29.7.0.tgz} + resolution: {integrity: sha1-C5PhEd2o7BILyDAObR+5V24WQ3Y=} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} jest-environment-node@30.3.0: @@ -15350,7 +15974,7 @@ packages: resolution: {integrity: sha512-o5kvLbuTF+o326CMVYpjlaykxqYP9DphFQZ2ZpgrvBouyvOxyEB7oqe8nOLFpiV5VCtz0D3pt8gXQYWpLpBnmA==} keytar@7.9.0: - resolution: {integrity: sha1-TGIlcI9RtQy/d8Wq6BchlkwpGMs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/keytar/-/keytar-7.9.0.tgz} + resolution: {integrity: sha1-TGIlcI9RtQy/d8Wq6BchlkwpGMs=} keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -15499,7 +16123,7 @@ packages: resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} lodash.get@4.4.2: - resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=, tarball: https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/lodash.get/-/lodash.get-4.4.2.tgz} + resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=} deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. lodash.includes@4.3.0: @@ -15713,7 +16337,7 @@ packages: engines: {node: '>=18'} merge-stream@2.0.0: - resolution: {integrity: sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/merge-stream/-/merge-stream-2.0.0.tgz} + resolution: {integrity: sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=} merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -15765,7 +16389,7 @@ packages: hasBin: true mimic-fn@2.1.0: - resolution: {integrity: sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/mimic-fn/-/mimic-fn-2.1.0.tgz} + resolution: {integrity: sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=} engines: {node: '>=6'} mimic-fn@3.1.0: @@ -15811,7 +16435,7 @@ packages: engines: {node: '>=10'} minimatch@9.0.3: - resolution: {integrity: sha1-puAMPeRMOlQr+q5wq/wiQgptqCU=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/minimatch/-/minimatch-9.0.3.tgz} + resolution: {integrity: sha1-puAMPeRMOlQr+q5wq/wiQgptqCU=} engines: {node: '>=16 || 14 >=14.17'} minimatch@9.0.9: @@ -15918,7 +16542,7 @@ packages: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} nan@2.26.2: - resolution: {integrity: sha1-Ll4ldkIkxze5iXeQtXwylNTc7pw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/nan/-/nan-2.26.2.tgz} + resolution: {integrity: sha1-Ll4ldkIkxze5iXeQtXwylNTc7pw=} nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} @@ -16068,11 +16692,11 @@ packages: hasBin: true npm-run-path@2.0.2: - resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/npm-run-path/-/npm-run-path-2.0.2.tgz} + resolution: {integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=} engines: {node: '>=4'} npm-run-path@4.0.1: - resolution: {integrity: sha1-t+zR5e1T2o43pV4cImnguX7XSOo=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/npm-run-path/-/npm-run-path-4.0.1.tgz} + resolution: {integrity: sha1-t+zR5e1T2o43pV4cImnguX7XSOo=} engines: {node: '>=8'} npmlog@4.1.2: @@ -16183,7 +16807,7 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} onetime@5.1.2: - resolution: {integrity: sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/onetime/-/onetime-5.1.2.tgz} + resolution: {integrity: sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=} engines: {node: '>=6'} open@10.2.0: @@ -16360,7 +16984,7 @@ packages: resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} parse5-parser-stream@7.1.2: - resolution: {integrity: sha1-18IOrcN5aNJy4sAmYP/5LdJ+YOE=, tarball: https://ms-feed-17.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz} + resolution: {integrity: sha1-18IOrcN5aNJy4sAmYP/5LdJ+YOE=} parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -16402,7 +17026,7 @@ packages: engines: {node: '>=0.10.0'} path-key@2.0.1: - resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/path-key/-/path-key-2.0.1.tgz} + resolution: {integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=} engines: {node: '>=4'} path-key@3.1.1: @@ -16410,7 +17034,7 @@ packages: engines: {node: '>=8'} path-name@1.0.0: - resolution: {integrity: sha1-jKBjpj3nmC36lXYO2v/RAhRJTyQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/path-name/-/path-name-1.0.0.tgz} + resolution: {integrity: sha1-jKBjpj3nmC36lXYO2v/RAhRJTyQ=} path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -16519,12 +17143,12 @@ packages: engines: {node: '>=16.0.0'} playwright-core@1.62.1: - resolution: {integrity: sha1-Eg9noZGBv9GDxg+pA8DZkzC1Z4U=, tarball: https://ms-feed-17.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/playwright-core/-/playwright-core-1.62.1.tgz} + resolution: {integrity: sha1-Eg9noZGBv9GDxg+pA8DZkzC1Z4U=} engines: {node: '>=20'} hasBin: true playwright@1.62.1: - resolution: {integrity: sha1-hEe2dV6K7IWjy3IHyCPj7S/GZwA=, tarball: https://ms-feed-2.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/playwright/-/playwright-1.62.1.tgz} + resolution: {integrity: sha1-hEe2dV6K7IWjy3IHyCPj7S/GZwA=} engines: {node: '>=20'} hasBin: true @@ -17004,7 +17628,7 @@ packages: resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==} ramda@0.28.0: - resolution: {integrity: sha1-rNeFaQEAM36LBjyrNHABm+QnzJc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/ramda/-/ramda-0.28.0.tgz} + resolution: {integrity: sha1-rNeFaQEAM36LBjyrNHABm+QnzJc=} randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -17378,7 +18002,7 @@ packages: engines: {node: '>=8'} resolve-pkg-maps@1.0.0: - resolution: {integrity: sha1-YWs9wsVwVrVYjDHN9LPWTbEzcg8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz} + resolution: {integrity: sha1-YWs9wsVwVrVYjDHN9LPWTbEzcg8=} resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} @@ -17488,7 +18112,7 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safe-execa@0.1.2: - resolution: {integrity: sha1-L7sKbxoAx6RexwM/gmWXV/kb6Mc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/safe-execa/-/safe-execa-0.1.2.tgz} + resolution: {integrity: sha1-L7sKbxoAx6RexwM/gmWXV/kb6Mc=} engines: {node: '>=12'} safe-push-apply@1.0.0: @@ -17506,7 +18130,7 @@ packages: resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} safer-buffer@2.1.2: - resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=, tarball: https://ms-feed-17.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/safer-buffer/-/safer-buffer-2.1.2.tgz} + resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=} sane@4.1.0: resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} @@ -17515,121 +18139,121 @@ packages: hasBin: true sass-embedded-android-arm64@1.85.1: - resolution: {integrity: sha512-27oRheqNA3SJM2hAxpVbs7mCKUwKPWmEEhyiNFpBINb5ELVLg+Ck5RsGg+SJmo130ul5YX0vinmVB5uPWc8X5w==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.85.1.tgz} + resolution: {integrity: sha512-27oRheqNA3SJM2hAxpVbs7mCKUwKPWmEEhyiNFpBINb5ELVLg+Ck5RsGg+SJmo130ul5YX0vinmVB5uPWc8X5w==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [android] sass-embedded-android-arm@1.85.1: - resolution: {integrity: sha1-87zVn7BcKTGuoSaUlqCYj4C5Nq8=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-android-arm/-/sass-embedded-android-arm-1.85.1.tgz} + resolution: {integrity: sha1-87zVn7BcKTGuoSaUlqCYj4C5Nq8=} engines: {node: '>=14.0.0'} cpu: [arm] os: [android] sass-embedded-android-ia32@1.85.1: - resolution: {integrity: sha1-C0jPGwoVfAZtjWyPTHz102trIps=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.85.1.tgz} + resolution: {integrity: sha1-C0jPGwoVfAZtjWyPTHz102trIps=} engines: {node: '>=14.0.0'} cpu: [ia32] os: [android] sass-embedded-android-riscv64@1.85.1: - resolution: {integrity: sha512-IP6OijpJ8Mqo7XqCe0LsuZVbAxEFVboa0kXqqR5K55LebEplsTIA2GnmRyMay3Yr/2FVGsZbCb6Wlgkw23eCiA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.85.1.tgz} + resolution: {integrity: sha512-IP6OijpJ8Mqo7XqCe0LsuZVbAxEFVboa0kXqqR5K55LebEplsTIA2GnmRyMay3Yr/2FVGsZbCb6Wlgkw23eCiA==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [android] sass-embedded-android-x64@1.85.1: - resolution: {integrity: sha1-xTkYMMuzw3jlF3vA4D6Up4LNHME=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-android-x64/-/sass-embedded-android-x64-1.85.1.tgz} + resolution: {integrity: sha1-xTkYMMuzw3jlF3vA4D6Up4LNHME=} engines: {node: '>=14.0.0'} cpu: [x64] os: [android] sass-embedded-darwin-arm64@1.85.1: - resolution: {integrity: sha1-eay7aGfQFolvhDlxvfoKx24QHfg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.1.tgz} + resolution: {integrity: sha1-eay7aGfQFolvhDlxvfoKx24QHfg=} engines: {node: '>=14.0.0'} cpu: [arm64] os: [darwin] sass-embedded-darwin-x64@1.85.1: - resolution: {integrity: sha512-J4UFHUiyI9Z+mwYMwz11Ky9TYr3hY1fCxeQddjNGL/+ovldtb0yAIHvoVM0BGprQDm5JqhtUk8KyJ3RMJqpaAA==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.85.1.tgz} + resolution: {integrity: sha512-J4UFHUiyI9Z+mwYMwz11Ky9TYr3hY1fCxeQddjNGL/+ovldtb0yAIHvoVM0BGprQDm5JqhtUk8KyJ3RMJqpaAA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [darwin] sass-embedded-linux-arm64@1.85.1: - resolution: {integrity: sha1-XHtcJ0lTKZZjClUS0OG/bYRyrNM=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.85.1.tgz} + resolution: {integrity: sha1-XHtcJ0lTKZZjClUS0OG/bYRyrNM=} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] sass-embedded-linux-arm@1.85.1: - resolution: {integrity: sha512-X0fDh95nNSw1wfRlnkE4oscoEA5Au4nnk785s9jghPFkTBg+A+5uB6trCjf0fM22+Iw6kiP4YYmDdw3BqxAKLQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.85.1.tgz} + resolution: {integrity: sha512-X0fDh95nNSw1wfRlnkE4oscoEA5Au4nnk785s9jghPFkTBg+A+5uB6trCjf0fM22+Iw6kiP4YYmDdw3BqxAKLQ==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] sass-embedded-linux-ia32@1.85.1: - resolution: {integrity: sha1-8bpT8DQ4ljWv6cEFm8Nqd5NkIbg=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.85.1.tgz} + resolution: {integrity: sha1-8bpT8DQ4ljWv6cEFm8Nqd5NkIbg=} engines: {node: '>=14.0.0'} cpu: [ia32] os: [linux] sass-embedded-linux-musl-arm64@1.85.1: - resolution: {integrity: sha512-FLkIT0p18XOkR6wryJ13LqGBDsrYev2dRk9dtiU18NCpNXruKsdBQ1ZnWHVKB3h1dA9lFyEEisC0sooKdNfeOQ==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.85.1.tgz} + resolution: {integrity: sha512-FLkIT0p18XOkR6wryJ13LqGBDsrYev2dRk9dtiU18NCpNXruKsdBQ1ZnWHVKB3h1dA9lFyEEisC0sooKdNfeOQ==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] sass-embedded-linux-musl-arm@1.85.1: - resolution: {integrity: sha1-Qo5eKZqf9N/SC1eGHSRAQotfvfY=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.85.1.tgz} + resolution: {integrity: sha1-Qo5eKZqf9N/SC1eGHSRAQotfvfY=} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] sass-embedded-linux-musl-ia32@1.85.1: - resolution: {integrity: sha512-N1093T84zQJor1yyIAdYScB5eAuQarGK1tKgZ4uTnxVlgA7Xi1lXV8Eh7ox9sDqKCaWkVQ3MjqU26vYRBeRWyw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.85.1.tgz} + resolution: {integrity: sha512-N1093T84zQJor1yyIAdYScB5eAuQarGK1tKgZ4uTnxVlgA7Xi1lXV8Eh7ox9sDqKCaWkVQ3MjqU26vYRBeRWyw==} engines: {node: '>=14.0.0'} cpu: [ia32] os: [linux] sass-embedded-linux-musl-riscv64@1.85.1: - resolution: {integrity: sha512-WRsZS/7qlfYXsa93FBpSruieuURIu7ySfFhzYfF1IbKrNAGwmbduutkHZh2ddm5/vQMvQ0Rdosgv+CslaQHMcw==, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.85.1.tgz} + resolution: {integrity: sha512-WRsZS/7qlfYXsa93FBpSruieuURIu7ySfFhzYfF1IbKrNAGwmbduutkHZh2ddm5/vQMvQ0Rdosgv+CslaQHMcw==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] sass-embedded-linux-musl-x64@1.85.1: - resolution: {integrity: sha1-tUteH2RtHwwJ2d9+Dm1JYNbtf6E=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.85.1.tgz} + resolution: {integrity: sha1-tUteH2RtHwwJ2d9+Dm1JYNbtf6E=} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] sass-embedded-linux-riscv64@1.85.1: - resolution: {integrity: sha1-Jxh3Mwf5T+uBXk4vu1qnMiao03U=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.85.1.tgz} + resolution: {integrity: sha1-Jxh3Mwf5T+uBXk4vu1qnMiao03U=} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] sass-embedded-linux-x64@1.85.1: - resolution: {integrity: sha1-BmTMiGuHgYrJ0pv06fKZ/mxj9SQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.85.1.tgz} + resolution: {integrity: sha1-BmTMiGuHgYrJ0pv06fKZ/mxj9SQ=} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] sass-embedded-win32-arm64@1.85.1: - resolution: {integrity: sha1-0Ht1X4QI193huDCNOlf7/NqdkJw=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.85.1.tgz} + resolution: {integrity: sha1-0Ht1X4QI193huDCNOlf7/NqdkJw=} engines: {node: '>=14.0.0'} cpu: [arm64] os: [win32] sass-embedded-win32-ia32@1.85.1: - resolution: {integrity: sha1-Xl8W4aMPjfMRSKr2WncimNcDfXA=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.85.1.tgz} + resolution: {integrity: sha1-Xl8W4aMPjfMRSKr2WncimNcDfXA=} engines: {node: '>=14.0.0'} cpu: [ia32] os: [win32] sass-embedded-win32-x64@1.85.1: - resolution: {integrity: sha1-dY+5bBbncmWkt/JHSkOWLXHvX/0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.85.1.tgz} + resolution: {integrity: sha1-dY+5bBbncmWkt/JHSkOWLXHvX/0=} engines: {node: '>=14.0.0'} cpu: [x64] os: [win32] @@ -17727,7 +18351,7 @@ packages: hasBin: true semver@7.5.4: - resolution: {integrity: sha1-SDmG7E7TjhxsSMNIlKkYLb/2im4=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/semver/-/semver-7.5.4.tgz} + resolution: {integrity: sha1-SDmG7E7TjhxsSMNIlKkYLb/2im4=} engines: {node: '>=10'} hasBin: true @@ -17871,10 +18495,10 @@ packages: engines: {node: '>= 0.4'} signal-exit@3.0.7: - resolution: {integrity: sha1-qaF2f4r4QVURTqq9c/mSc8j1mtk=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/signal-exit/-/signal-exit-3.0.7.tgz} + resolution: {integrity: sha1-qaF2f4r4QVURTqq9c/mSc8j1mtk=} signal-exit@4.1.0: - resolution: {integrity: sha1-lSGIwcvVRgcOLdIND0HArgUwywQ=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/signal-exit/-/signal-exit-4.1.0.tgz} + resolution: {integrity: sha1-lSGIwcvVRgcOLdIND0HArgUwywQ=} engines: {node: '>=14'} simple-concat@1.0.1: @@ -17978,7 +18602,7 @@ packages: deprecated: See https://github.com/lydell/source-map-url#deprecated source-map@0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/source-map/-/source-map-0.5.7.tgz} + resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} engines: {node: '>=0.10.0'} source-map@0.6.1: @@ -18198,7 +18822,7 @@ packages: engines: {node: '>=0.10.0'} strip-final-newline@2.0.0: - resolution: {integrity: sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/strip-final-newline/-/strip-final-newline-2.0.0.tgz} + resolution: {integrity: sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=} engines: {node: '>=6'} strip-indent@3.0.0: @@ -18675,7 +19299,7 @@ packages: hasBin: true typescript@6.0.3: - resolution: {integrity: sha1-kCUdwAeRbpcnhsuU100VsYVXfSE=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/typescript/-/typescript-6.0.3.tgz} + resolution: {integrity: sha1-kCUdwAeRbpcnhsuU100VsYVXfSE=} engines: {node: '>=14.17'} hasBin: true @@ -18686,7 +19310,7 @@ packages: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} uglify-js@3.19.3: - resolution: {integrity: sha1-gjFem7xvKyWIiFis0f/4RBA1t38=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/uglify-js/-/uglify-js-3.19.3.tgz} + resolution: {integrity: sha1-gjFem7xvKyWIiFis0f/4RBA1t38=} engines: {node: '>=0.8.0'} hasBin: true @@ -18701,7 +19325,7 @@ packages: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} undici@7.29.0: - resolution: {integrity: sha1-rg9vYuBuBXqcu3srX94rt095G48=, tarball: https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/undici/-/undici-7.29.0.tgz} + resolution: {integrity: sha1-rg9vYuBuBXqcu3srX94rt095G48=} engines: {node: '>=20.18.1'} unfetch@4.2.0: @@ -18905,15 +19529,17 @@ packages: uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@8.0.0: resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache@2.4.0: @@ -18963,7 +19589,7 @@ packages: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} watchpack-chokidar2@2.0.1: - resolution: {integrity: sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc=, tarball: https://ms-feed-25.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz} + resolution: {integrity: sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc=} watchpack@1.7.5: resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} @@ -19130,7 +19756,7 @@ packages: engines: {node: '>=0.8.0'} whatwg-encoding@3.1.1: - resolution: {integrity: sha1-0PTvdpkF1CbhaI8+NDgambYLduU=, tarball: https://ms-feed-17.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz} + resolution: {integrity: sha1-0PTvdpkF1CbhaI8+NDgambYLduU=} engines: {node: '>=18'} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation @@ -19138,7 +19764,7 @@ packages: resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} whatwg-mimetype@4.0.0: - resolution: {integrity: sha1-vBv5SphdxQOI1UqSWKxAXDyi/Ao=, tarball: https://ms-feed-12.pkgs.visualstudio.com/1es-public/_packaging/npm-public/npm/registry/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz} + resolution: {integrity: sha1-vBv5SphdxQOI1UqSWKxAXDyi/Ao=} engines: {node: '>=18'} whatwg-url@14.2.0: @@ -19866,37 +20492,37 @@ snapshots: dependencies: tslib: 2.8.1 - '@azure/core-auth@1.10.1': + '@azure/core-auth@1.10.1(supports-color@8.1.1)': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.13.1 + '@azure/core-util': 1.13.1(supports-color@8.1.1) tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/core-client@1.10.1': + '@azure/core-client@1.10.1(supports-color@8.1.1)': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.1 - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-auth': 1.10.1(supports-color@8.1.1) + '@azure/core-rest-pipeline': 1.23.0(supports-color@8.1.1) '@azure/core-tracing': 1.3.1 - '@azure/core-util': 1.13.1 - '@azure/logger': 1.3.0 + '@azure/core-util': 1.13.1(supports-color@8.1.1) + '@azure/logger': 1.3.0(supports-color@8.1.1) tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/core-http-compat@2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0)': + '@azure/core-http-compat@2.3.2(@azure/core-client@1.10.1(supports-color@8.1.1))(@azure/core-rest-pipeline@1.23.0(supports-color@8.1.1))': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-client': 1.10.1(supports-color@8.1.1) + '@azure/core-rest-pipeline': 1.23.0(supports-color@8.1.1) - '@azure/core-lro@2.7.2': + '@azure/core-lro@2.7.2(supports-color@8.1.1)': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.13.1 - '@azure/logger': 1.3.0 + '@azure/core-util': 1.13.1(supports-color@8.1.1) + '@azure/logger': 1.3.0(supports-color@8.1.1) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -19905,14 +20531,14 @@ snapshots: dependencies: tslib: 2.8.1 - '@azure/core-rest-pipeline@1.23.0': + '@azure/core-rest-pipeline@1.23.0(supports-color@8.1.1)': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.1 + '@azure/core-auth': 1.10.1(supports-color@8.1.1) '@azure/core-tracing': 1.3.1 - '@azure/core-util': 1.13.1 - '@azure/logger': 1.3.0 - '@typespec/ts-http-runtime': 0.3.4 + '@azure/core-util': 1.13.1(supports-color@8.1.1) + '@azure/logger': 1.3.0(supports-color@8.1.1) + '@typespec/ts-http-runtime': 0.3.4(supports-color@8.1.1) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -19921,10 +20547,10 @@ snapshots: dependencies: tslib: 2.8.1 - '@azure/core-util@1.13.1': + '@azure/core-util@1.13.1(supports-color@8.1.1)': dependencies: '@azure/abort-controller': 2.1.2 - '@typespec/ts-http-runtime': 0.3.4 + '@typespec/ts-http-runtime': 0.3.4(supports-color@8.1.1) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -19934,15 +20560,15 @@ snapshots: fast-xml-parser: 5.3.5 tslib: 2.8.1 - '@azure/identity@4.13.1': + '@azure/identity@4.13.1(supports-color@8.1.1)': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.1 - '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-auth': 1.10.1(supports-color@8.1.1) + '@azure/core-client': 1.10.1(supports-color@8.1.1) + '@azure/core-rest-pipeline': 1.23.0(supports-color@8.1.1) '@azure/core-tracing': 1.3.1 - '@azure/core-util': 1.13.1 - '@azure/logger': 1.3.0 + '@azure/core-util': 1.13.1(supports-color@8.1.1) + '@azure/logger': 1.3.0(supports-color@8.1.1) '@azure/msal-browser': 5.6.3 '@azure/msal-node': 5.1.2 open: 10.2.0 @@ -19950,9 +20576,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@azure/logger@1.3.0': + '@azure/logger@1.3.0(supports-color@8.1.1)': dependencies: - '@typespec/ts-http-runtime': 0.3.4 + '@typespec/ts-http-runtime': 0.3.4(supports-color@8.1.1) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -19969,34 +20595,34 @@ snapshots: jsonwebtoken: 9.0.3 uuid: 8.3.2 - '@azure/storage-blob@12.31.0': + '@azure/storage-blob@12.31.0(supports-color@8.1.1)': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.1 - '@azure/core-client': 1.10.1 - '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) - '@azure/core-lro': 2.7.2 + '@azure/core-auth': 1.10.1(supports-color@8.1.1) + '@azure/core-client': 1.10.1(supports-color@8.1.1) + '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1(supports-color@8.1.1))(@azure/core-rest-pipeline@1.23.0(supports-color@8.1.1)) + '@azure/core-lro': 2.7.2(supports-color@8.1.1) '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-rest-pipeline': 1.23.0(supports-color@8.1.1) '@azure/core-tracing': 1.3.1 - '@azure/core-util': 1.13.1 + '@azure/core-util': 1.13.1(supports-color@8.1.1) '@azure/core-xml': 1.5.0 - '@azure/logger': 1.3.0 - '@azure/storage-common': 12.3.0(@azure/core-client@1.10.1) + '@azure/logger': 1.3.0(supports-color@8.1.1) + '@azure/storage-common': 12.3.0(@azure/core-client@1.10.1(supports-color@8.1.1))(supports-color@8.1.1) events: 3.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/storage-common@12.3.0(@azure/core-client@1.10.1)': + '@azure/storage-common@12.3.0(@azure/core-client@1.10.1(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.1 - '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1)(@azure/core-rest-pipeline@1.23.0) - '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-auth': 1.10.1(supports-color@8.1.1) + '@azure/core-http-compat': 2.3.2(@azure/core-client@1.10.1(supports-color@8.1.1))(@azure/core-rest-pipeline@1.23.0(supports-color@8.1.1)) + '@azure/core-rest-pipeline': 1.23.0(supports-color@8.1.1) '@azure/core-tracing': 1.3.1 - '@azure/core-util': 1.13.1 - '@azure/logger': 1.3.0 + '@azure/core-util': 1.13.1(supports-color@8.1.1) + '@azure/logger': 1.3.0(supports-color@8.1.1) events: 3.3.0 tslib: 2.8.1 transitivePeerDependencies: @@ -20015,15 +20641,15 @@ snapshots: '@babel/compat-data@7.29.0': {} - '@babel/core@7.12.9': + '@babel/core@7.12.9(supports-color@8.1.1)': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.12.9) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.12.9(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helpers': 7.29.2 '@babel/parser': 7.29.2 '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 convert-source-map: 1.9.0 debug: 4.4.3(supports-color@8.1.1) @@ -20036,17 +20662,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.20.12': + '@babel/core@7.20.12(supports-color@8.1.1)': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helpers': 7.29.2 '@babel/parser': 7.29.2 '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 convert-source-map: 1.9.0 debug: 4.4.3(supports-color@8.1.1) @@ -20056,16 +20682,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.29.0': + '@babel/core@7.29.0(supports-color@8.1.1)': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helpers': 7.29.2 '@babel/parser': 7.29.2 '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 @@ -20096,46 +20722,46 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.20.12)': + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5(supports-color@8.1.1) '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.20.12) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/traverse': 7.29.0(supports-color@8.1.1) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)': + '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5(supports-color@8.1.1) '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/traverse': 7.29.0(supports-color@8.1.1) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.20.12)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.1.5(@babel/core@7.20.12)': + '@babel/helper-define-polyfill-provider@0.1.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-imports': 7.28.6 + '@babel/helper-module-imports': 7.28.6(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.11 @@ -20143,9 +20769,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.20.12)': + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3(supports-color@8.1.1) @@ -20156,44 +20782,44 @@ snapshots: '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.28.5': + '@babel/helper-member-expression-to-functions@7.28.5(supports-color@8.1.1)': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.28.6': + '@babel/helper-module-imports@7.28.6(supports-color@8.1.1)': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.12.9)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.12.9(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.12.9 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.12.9(supports-color@8.1.1) + '@babel/helper-module-imports': 7.28.6(supports-color@8.1.1) '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.20.12)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-module-imports': 7.28.6(supports-color@8.1.1) '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.29.0(supports-color@8.1.1) + '@babel/helper-module-imports': 7.28.6(supports-color@8.1.1) '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -20205,36 +20831,36 @@ snapshots: '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.20.12)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/helper-wrap-function': 7.28.6(supports-color@8.1.1) + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.28.6(@babel/core@7.20.12)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-member-expression-to-functions': 7.28.5(supports-color@8.1.1) '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/core': 7.29.0(supports-color@8.1.1) + '@babel/helper-member-expression-to-functions': 7.28.5(supports-color@8.1.1) '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + '@babel/helper-skip-transparent-expression-wrappers@7.27.1(supports-color@8.1.1)': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -20245,10 +20871,10 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-wrap-function@7.28.6': + '@babel/helper-wrap-function@7.28.6(supports-color@8.1.1)': dependencies: '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -20269,898 +20895,898 @@ snapshots: dependencies: '@babel/types': 7.29.0 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.20.12)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.20.12) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.20.12)': + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.20.12)': + '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.20.12) + '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.20.12)': + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) - '@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9)': + '@babel/plugin-proposal-object-rest-spread@7.12.1(@babel/core@7.12.9(supports-color@8.1.1))': dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.12.9(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.12.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9(supports-color@8.1.1)) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.12.9(supports-color@8.1.1)) - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.20.12)': + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: '@babel/compat-data': 7.29.0 - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12(supports-color@8.1.1)) - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.20.12)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.20.12)': + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.12)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.12)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.20.12)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.12)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.20.12)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.20.12)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-flow@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-syntax-flow@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.20.12)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.20.12)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9)': + '@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9(supports-color@8.1.1))': dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.12.9(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.20.12)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.12)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.20.12)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9(supports-color@8.1.1))': dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.12.9(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.12)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.20.12)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.12)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.20.12)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.20.12)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.20.12)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.20.12)': + '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.20.12) - '@babel/traverse': 7.29.0 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-module-imports': 7.28.6(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.20.12) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-classes@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.20.12) - '@babel/traverse': 7.29.0 + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/template': 7.28.6 - '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.20.12)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.20.12)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.20.12) + '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.29.0)': + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.20.12)': + '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.20.12)': + '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12) - '@babel/traverse': 7.29.0 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.20.12) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.12.9)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.12.9(supports-color@8.1.1))': dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.12.9(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.20.12)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/core': 7.29.0(supports-color@8.1.1) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.20.12)': + '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.28.6 + '@babel/helper-module-imports': 7.28.6(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.20.12) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.20.12)': + '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-spread@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-spread@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.20.12) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0) + '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@8.1.1) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.20.12)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.20.12)': + '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 - '@babel/preset-env@7.29.2(@babel/core@7.20.12)': + '@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: '@babel/compat-data': 7.29.0 - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.20.12) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.12) - '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.20.12) - '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12) - '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.20.12) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.20.12) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.20.12) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.20.12) - '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.20.12) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.20.12) - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.20.12) - babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.20.12) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.20.12) + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-async-generator-functions': 7.29.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-async-to-generator': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-class-static-block': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-computed-properties': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-dotall-regex': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.0(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-explicit-resource-management': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-exponentiation-operator': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-json-strings': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-logical-assignment-operators': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-numeric-separator': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-object-rest-spread': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-optional-catch-binding': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-private-property-in-object': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-regenerator': 7.29.0(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-regexp-modifiers': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-unicode-property-regex': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.20.12(supports-color@8.1.1)) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) core-js-compat: 3.49.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.27.1(@babel/core@7.20.12)': + '@babel/preset-flow@7.27.1(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.20.12) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) - '@babel/preset-flow@7.27.1(@babel/core@7.29.0)': + '@babel/preset-flow@7.27.1(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0(supports-color@8.1.1)) - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.20.12)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/types': 7.29.0 esutils: 2.0.3 - '@babel/preset-react@7.28.5(@babel/core@7.20.12)': + '@babel/preset-react@7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.20.12) - '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.20.12) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.28.5(@babel/core@7.20.12)': + '@babel/preset-typescript@7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.20.12) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': + '@babel/preset-typescript@7.28.5(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/register@7.28.6(@babel/core@7.20.12)': + '@babel/register@7.28.6(@babel/core@7.20.12(supports-color@8.1.1))': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 pirates: 4.0.7 source-map-support: 0.5.21 - '@babel/register@7.28.6(@babel/core@7.29.0)': + '@babel/register@7.28.6(@babel/core@7.29.0(supports-color@8.1.1))': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -21179,7 +21805,7 @@ snapshots: '@babel/parser': 7.29.2 '@babel/types': 7.29.0 - '@babel/traverse@7.29.0': + '@babel/traverse@7.29.0(supports-color@8.1.1)': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 @@ -21257,11 +21883,11 @@ snapshots: '@emotion/utils': 0.11.3 '@emotion/weak-memoize': 0.2.5 - '@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)': + '@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1)': dependencies: '@babel/runtime': 7.29.2 '@emotion/cache': 10.0.29 - '@emotion/css': 10.0.27 + '@emotion/css': 10.0.27(supports-color@8.1.1) '@emotion/serialize': 0.11.16 '@emotion/sheet': 0.9.4 '@emotion/utils': 0.11.3 @@ -21270,11 +21896,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@emotion/css@10.0.27': + '@emotion/css@10.0.27(supports-color@8.1.1)': dependencies: '@emotion/serialize': 0.11.16 '@emotion/utils': 0.11.3 - babel-plugin-emotion: 10.2.2 + babel-plugin-emotion: 10.2.2(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -21308,22 +21934,22 @@ snapshots: '@emotion/sheet@0.9.4': {} - '@emotion/styled-base@10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2))(@types/react@17.0.74)(react@17.0.2)': + '@emotion/styled-base@10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1))(@types/react@17.0.74)(react@17.0.2)': dependencies: '@babel/runtime': 7.29.2 - '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2) + '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1) '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 0.11.16 '@emotion/utils': 0.11.3 '@types/react': 17.0.74 react: 17.0.2 - '@emotion/styled@10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2))(@types/react@17.0.74)(react@17.0.2)': + '@emotion/styled@10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1))(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2) - '@emotion/styled-base': 10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2))(@types/react@17.0.74)(react@17.0.2) + '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1) + '@emotion/styled-base': 10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1))(@types/react@17.0.74)(react@17.0.2) '@types/react': 17.0.74 - babel-plugin-emotion: 10.2.2 + babel-plugin-emotion: 10.2.2(supports-color@8.1.1) react: 17.0.2 transitivePeerDependencies: - supports-color @@ -21509,24 +22135,24 @@ snapshots: '@esbuild/win32-x64@0.28.0': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@7.11.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@7.11.0(supports-color@8.1.1))': dependencies: - eslint: 7.11.0 + eslint: 7.11.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@7.30.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@7.30.0(supports-color@8.1.1))': dependencies: - eslint: 7.30.0 + eslint: 7.30.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@7.7.0)': + '@eslint-community/eslint-utils@4.9.1(eslint@7.7.0(supports-color@8.1.1))': dependencies: - eslint: 7.7.0 + eslint: 7.7.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1(supports-color@8.1.1))': dependencies: - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 '@eslint-community/eslint-utils@4.9.1(eslint@9.37.0(supports-color@8.1.1))': @@ -21534,14 +22160,9 @@ snapshots: eslint: 9.37.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.37.0)': - dependencies: - eslint: 9.37.0 - eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.20.1': + '@eslint/config-array@0.20.1(supports-color@8.1.1)': dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3(supports-color@8.1.1) @@ -21575,7 +22196,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@0.1.3': + '@eslint/eslintrc@0.1.3(supports-color@8.1.1)': dependencies: ajv: 6.14.0 debug: 4.4.3(supports-color@8.1.1) @@ -21590,7 +22211,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/eslintrc@0.4.3': + '@eslint/eslintrc@0.4.3(supports-color@8.1.1)': dependencies: ajv: 6.14.0 debug: 4.4.3(supports-color@8.1.1) @@ -21604,7 +22225,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/eslintrc@1.4.1': + '@eslint/eslintrc@1.4.1(supports-color@8.1.1)': dependencies: ajv: 6.14.0 debug: 4.4.3(supports-color@8.1.1) @@ -21618,7 +22239,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/eslintrc@2.1.4': + '@eslint/eslintrc@2.1.4(supports-color@8.1.1)': dependencies: ajv: 6.14.0 debug: 4.4.3(supports-color@8.1.1) @@ -22998,7 +23619,7 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.4.3 - '@humanwhocodes/config-array@0.10.7': + '@humanwhocodes/config-array@0.10.7(supports-color@8.1.1)': dependencies: '@humanwhocodes/object-schema': 1.2.1 debug: 4.4.3(supports-color@8.1.1) @@ -23006,7 +23627,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@humanwhocodes/config-array@0.13.0': + '@humanwhocodes/config-array@0.13.0(supports-color@8.1.1)': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.4.3(supports-color@8.1.1) @@ -23014,7 +23635,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@humanwhocodes/config-array@0.5.0': + '@humanwhocodes/config-array@0.5.0(supports-color@8.1.1)': dependencies: '@humanwhocodes/object-schema': 1.2.1 debug: 4.4.3(supports-color@8.1.1) @@ -23022,7 +23643,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@humanwhocodes/config-array@0.9.5': + '@humanwhocodes/config-array@0.9.5(supports-color@8.1.1)': dependencies: '@humanwhocodes/object-schema': 1.2.1 debug: 4.4.3(supports-color@8.1.1) @@ -23143,12 +23764,12 @@ snapshots: jest-util: 30.3.0 slash: 3.0.0 - '@jest/core@29.5.0(babel-plugin-macros@3.1.0)': + '@jest/core@29.5.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1)': dependencies: '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 + '@jest/reporters': 29.7.0(supports-color@8.1.1) '@jest/test-result': 29.7.0(@types/node@22.9.3) - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 '@types/node': 22.9.3 ansi-escapes: 4.3.2 @@ -23157,15 +23778,15 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 + jest-resolve-dependencies: 29.7.0(supports-color@8.1.1) + jest-runner: 29.7.0(supports-color@8.1.1) + jest-runtime: 29.7.0(supports-color@8.1.1) + jest-snapshot: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 jest-validate: 29.7.0 jest-watcher: 29.7.0 @@ -23178,12 +23799,12 @@ snapshots: - supports-color - ts-node - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1)': dependencies: '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 + '@jest/reporters': 29.7.0(supports-color@8.1.1) '@jest/test-result': 29.7.0(@types/node@22.9.3) - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 '@types/node': 22.9.3 ansi-escapes: 4.3.2 @@ -23192,15 +23813,15 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 + jest-resolve-dependencies: 29.7.0(supports-color@8.1.1) + jest-runner: 29.7.0(supports-color@8.1.1) + jest-runtime: 29.7.0(supports-color@8.1.1) + jest-snapshot: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 jest-validate: 29.7.0 jest-watcher: 29.7.0 @@ -23213,13 +23834,13 @@ snapshots: - supports-color - ts-node - '@jest/core@30.3.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))': + '@jest/core@30.3.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: '@jest/console': 30.3.0 '@jest/pattern': 30.0.1 - '@jest/reporters': 30.3.0 + '@jest/reporters': 30.3.0(supports-color@8.1.1) '@jest/test-result': 30.3.0(@types/node@22.9.3) - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@types/node': 22.9.3 ansi-escapes: 4.3.2 @@ -23228,15 +23849,15 @@ snapshots: exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.3.0 - jest-config: 30.3.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)) + jest-config: 30.3.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(supports-color@8.1.1) jest-haste-map: 30.3.0 jest-message-util: 30.3.0 jest-regex-util: 30.0.1 jest-resolve: 30.3.0 - jest-resolve-dependencies: 30.3.0 - jest-runner: 30.3.0 - jest-runtime: 30.3.0 - jest-snapshot: 30.3.0 + jest-resolve-dependencies: 30.3.0(supports-color@8.1.1) + jest-runner: 30.3.0(supports-color@8.1.1) + jest-runtime: 30.3.0(supports-color@8.1.1) + jest-snapshot: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 jest-validate: 30.3.0 jest-watcher: 30.3.0 @@ -23250,7 +23871,7 @@ snapshots: '@jest/diff-sequences@30.3.0': {} - '@jest/environment-jsdom-abstract@30.3.0(jsdom@26.1.0)': + '@jest/environment-jsdom-abstract@30.3.0(jsdom@26.1.0(supports-color@8.1.1))': dependencies: '@jest/environment': 30.3.0 '@jest/fake-timers': 30.3.0 @@ -23259,7 +23880,7 @@ snapshots: '@types/node': 22.9.3 jest-mock: 30.3.0 jest-util: 30.3.0 - jsdom: 26.1.0 + jsdom: 26.1.0(supports-color@8.1.1) '@jest/environment@29.7.0': dependencies: @@ -23283,17 +23904,17 @@ snapshots: dependencies: '@jest/get-type': 30.1.0 - '@jest/expect@29.7.0': + '@jest/expect@29.7.0(supports-color@8.1.1)': dependencies: expect: 29.7.0 - jest-snapshot: 29.7.0 + jest-snapshot: 29.7.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@jest/expect@30.3.0': + '@jest/expect@30.3.0(supports-color@8.1.1)': dependencies: expect: 30.3.0 - jest-snapshot: 30.3.0 + jest-snapshot: 30.3.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -23317,19 +23938,19 @@ snapshots: '@jest/get-type@30.1.0': {} - '@jest/globals@29.7.0': + '@jest/globals@29.7.0(supports-color@8.1.1)': dependencies: '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 + '@jest/expect': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 jest-mock: 29.7.0 transitivePeerDependencies: - supports-color - '@jest/globals@30.3.0': + '@jest/globals@30.3.0(supports-color@8.1.1)': dependencies: '@jest/environment': 30.3.0 - '@jest/expect': 30.3.0 + '@jest/expect': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 jest-mock: 30.3.0 transitivePeerDependencies: @@ -23340,12 +23961,12 @@ snapshots: '@types/node': 22.9.3 jest-regex-util: 30.0.1 - '@jest/reporters@29.7.0': + '@jest/reporters@29.7.0(supports-color@8.1.1)': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 '@jest/test-result': 29.7.0(@types/node@22.9.3) - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.4 @@ -23356,9 +23977,9 @@ snapshots: glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 + istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 + istanbul-lib-source-maps: 4.0.1(supports-color@8.1.1) istanbul-reports: 3.2.0 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -23370,12 +23991,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@30.3.0': + '@jest/reporters@30.3.0(supports-color@8.1.1)': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 30.3.0 '@jest/test-result': 30.3.0(@types/node@22.9.3) - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@jridgewell/trace-mapping': 0.3.31 '@types/istanbul-lib-coverage': 2.0.4 @@ -23386,9 +24007,9 @@ snapshots: glob: 10.5.0 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 + istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 + istanbul-lib-source-maps: 5.0.6(supports-color@8.1.1) istanbul-reports: 3.2.0 jest-message-util: 30.3.0 jest-util: 30.3.0 @@ -23506,11 +24127,11 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@jest/transform@26.6.2': + '@jest/transform@26.6.2(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@jest/types': 26.6.2 - babel-plugin-istanbul: 6.1.1 + babel-plugin-istanbul: 6.1.1(supports-color@8.1.1) chalk: 4.1.2 convert-source-map: 1.9.0 fast-json-stable-stringify: 2.1.0 @@ -23526,12 +24147,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/transform@29.7.0': + '@jest/transform@29.7.0(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 6.1.1 + babel-plugin-istanbul: 6.1.1(supports-color@8.1.1) chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 @@ -23546,12 +24167,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/transform@30.3.0': + '@jest/transform@30.3.0(supports-color@8.1.1)': dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@jridgewell/trace-mapping': 0.3.31 - babel-plugin-istanbul: 7.0.1 + babel-plugin-istanbul: 7.0.1(supports-color@8.1.1) chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 @@ -23771,22 +24392,22 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@mdx-js/loader@1.6.22(react@17.0.2)': + '@mdx-js/loader@1.6.22(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@mdx-js/mdx': 1.6.22 + '@mdx-js/mdx': 1.6.22(supports-color@8.1.1) '@mdx-js/react': 1.6.22(react@17.0.2) loader-utils: 2.0.4 transitivePeerDependencies: - react - supports-color - '@mdx-js/mdx@1.6.22': + '@mdx-js/mdx@1.6.22(supports-color@8.1.1)': dependencies: - '@babel/core': 7.12.9 - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9) + '@babel/core': 7.12.9(supports-color@8.1.1) + '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9(supports-color@8.1.1)) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.12.9(supports-color@8.1.1)) '@mdx-js/util': 1.6.22 - babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9) + babel-plugin-apply-mdx-type-prop: 1.6.22(@babel/core@7.12.9(supports-color@8.1.1)) babel-plugin-extract-import-names: 1.6.22 camelcase-css: 2.0.1 detab: 2.0.4 @@ -23794,7 +24415,7 @@ snapshots: lodash.uniq: 4.5.0 mdast-util-to-hast: 10.0.1 remark-footnotes: 2.0.0 - remark-mdx: 1.6.22 + remark-mdx: 1.6.22(supports-color@8.1.1) remark-parse: 8.0.3 remark-squeeze-paragraphs: 4.0.0 style-to-object: 0.3.0 @@ -23858,14 +24479,14 @@ snapshots: '@microsoft/tsdoc@0.17.0': {} - '@modelcontextprotocol/sdk@1.10.2': + '@modelcontextprotocol/sdk@1.10.2(supports-color@8.1.1)': dependencies: content-type: 1.0.5 cors: 2.8.6 cross-spawn: 7.0.6 eventsource: 3.0.7 - express: 5.2.1 - express-rate-limit: 7.5.1(express@5.2.1) + express: 5.2.1(supports-color@8.1.1) + express-rate-limit: 7.5.1(express@5.2.1(supports-color@8.1.1)) pkce-challenge: 5.0.1 raw-body: 3.0.2 zod: 3.25.76 @@ -24042,7 +24663,7 @@ snapshots: dependencies: playwright: 1.62.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@4.41.32)(react-refresh@0.11.0)(type-fest@0.21.3)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1)(webpack@4.47.0)': + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(@types/webpack@4.41.32)(react-refresh@0.11.0)(type-fest@0.21.3)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1)(webpack@4.47.0)': dependencies: ansi-html: 0.0.9 core-js-pure: 3.49.0 @@ -24056,7 +24677,7 @@ snapshots: optionalDependencies: '@types/webpack': 4.41.32 type-fest: 0.21.3 - webpack-dev-server: 5.2.3(@types/webpack@4.41.32)(webpack@4.47.0) + webpack-dev-server: 4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0) webpack-hot-middleware: 2.26.1 '@pnpm/constants@1001.3.1': {} @@ -24620,7 +25241,7 @@ snapshots: optionalDependencies: '@swc/helpers': 0.5.21 - '@rspack/dev-server@1.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/webpack@4.41.32)(webpack@5.105.4)': + '@rspack/dev-server@1.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3))': dependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) '@types/bonjour': 3.5.13 @@ -24639,7 +25260,7 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9 + http-proxy-middleware: 2.0.9(debug@4.4.3(supports-color@8.1.1)) ipaddr.js: 2.3.0 launch-editor: 2.13.2 open: 10.2.0 @@ -24648,8 +25269,8 @@ snapshots: selfsigned: 2.4.1 serve-index: 1.9.2 sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(@types/webpack@4.41.32)(webpack@5.105.4) + spdy: 4.0.2(supports-color@8.1.1) + webpack-dev-middleware: 7.4.5(@types/webpack@4.41.32)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) ws: 8.21.0 transitivePeerDependencies: - '@types/webpack' @@ -24663,110 +25284,110 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/eslint-config@3.7.1(eslint@7.11.0)(typescript@5.8.2)': + '@rushstack/eslint-config@3.7.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/eslint-patch': 1.10.4 - '@rushstack/eslint-plugin': 0.15.2(eslint@7.11.0)(typescript@5.8.2) - '@rushstack/eslint-plugin-packlets': 0.9.2(eslint@7.11.0)(typescript@5.8.2) - '@rushstack/eslint-plugin-security': 0.8.2(eslint@7.11.0)(typescript@5.8.2) - '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.11.0)(typescript@5.8.2))(eslint@7.11.0)(typescript@5.8.2) - '@typescript-eslint/parser': 6.19.1(eslint@7.11.0)(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.11.0)(typescript@5.8.2) - eslint: 7.11.0 - eslint-plugin-promise: 6.1.1(eslint@7.11.0) - eslint-plugin-react: 7.33.2(eslint@7.11.0) + '@rushstack/eslint-plugin': 0.15.2(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-packlets': 0.9.2(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-security': 0.8.2(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/parser': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.11.0(supports-color@8.1.1) + eslint-plugin-promise: 6.1.1(eslint@7.11.0(supports-color@8.1.1)) + eslint-plugin-react: 7.33.2(eslint@7.11.0(supports-color@8.1.1)) eslint-plugin-tsdoc: 0.3.0 typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@rushstack/eslint-config@3.7.1(eslint@7.30.0)(typescript@5.8.2)': + '@rushstack/eslint-config@3.7.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/eslint-patch': 1.10.4 - '@rushstack/eslint-plugin': 0.15.2(eslint@7.30.0)(typescript@5.8.2) - '@rushstack/eslint-plugin-packlets': 0.9.2(eslint@7.30.0)(typescript@5.8.2) - '@rushstack/eslint-plugin-security': 0.8.2(eslint@7.30.0)(typescript@5.8.2) - '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.30.0)(typescript@5.8.2))(eslint@7.30.0)(typescript@5.8.2) - '@typescript-eslint/parser': 6.19.1(eslint@7.30.0)(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.30.0)(typescript@5.8.2) - eslint: 7.30.0 - eslint-plugin-promise: 6.1.1(eslint@7.30.0) - eslint-plugin-react: 7.33.2(eslint@7.30.0) + '@rushstack/eslint-plugin': 0.15.2(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-packlets': 0.9.2(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-security': 0.8.2(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/parser': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.30.0(supports-color@8.1.1) + eslint-plugin-promise: 6.1.1(eslint@7.30.0(supports-color@8.1.1)) + eslint-plugin-react: 7.33.2(eslint@7.30.0(supports-color@8.1.1)) eslint-plugin-tsdoc: 0.3.0 typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@rushstack/eslint-config@3.7.1(eslint@7.7.0)(typescript@5.8.2)': + '@rushstack/eslint-config@3.7.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/eslint-patch': 1.10.4 - '@rushstack/eslint-plugin': 0.15.2(eslint@7.7.0)(typescript@5.8.2) - '@rushstack/eslint-plugin-packlets': 0.9.2(eslint@7.7.0)(typescript@5.8.2) - '@rushstack/eslint-plugin-security': 0.8.2(eslint@7.7.0)(typescript@5.8.2) - '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.7.0)(typescript@5.8.2))(eslint@7.7.0)(typescript@5.8.2) - '@typescript-eslint/parser': 6.19.1(eslint@7.7.0)(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.7.0)(typescript@5.8.2) - eslint: 7.7.0 - eslint-plugin-promise: 6.1.1(eslint@7.7.0) - eslint-plugin-react: 7.33.2(eslint@7.7.0) + '@rushstack/eslint-plugin': 0.15.2(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-packlets': 0.9.2(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-security': 0.8.2(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/parser': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.7.0(supports-color@8.1.1) + eslint-plugin-promise: 6.1.1(eslint@7.7.0(supports-color@8.1.1)) + eslint-plugin-react: 7.33.2(eslint@7.7.0(supports-color@8.1.1)) eslint-plugin-tsdoc: 0.3.0 typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@rushstack/eslint-config@3.7.1(eslint@8.57.1)(typescript@5.8.2)': + '@rushstack/eslint-config@3.7.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/eslint-patch': 1.10.4 - '@rushstack/eslint-plugin': 0.15.2(eslint@8.57.1)(typescript@5.8.2) - '@rushstack/eslint-plugin-packlets': 0.9.2(eslint@8.57.1)(typescript@5.8.2) - '@rushstack/eslint-plugin-security': 0.8.2(eslint@8.57.1)(typescript@5.8.2) - '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1)(typescript@5.8.2) - '@typescript-eslint/parser': 6.19.1(eslint@8.57.1)(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@8.57.1)(typescript@5.8.2) - eslint: 8.57.1 - eslint-plugin-promise: 6.1.1(eslint@8.57.1) - eslint-plugin-react: 7.33.2(eslint@8.57.1) + '@rushstack/eslint-plugin': 0.15.2(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-packlets': 0.9.2(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-security': 0.8.2(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/eslint-plugin': 6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/parser': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 8.57.1(supports-color@8.1.1) + eslint-plugin-promise: 6.1.1(eslint@8.57.1(supports-color@8.1.1)) + eslint-plugin-react: 7.33.2(eslint@8.57.1(supports-color@8.1.1)) eslint-plugin-tsdoc: 0.3.0 typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@rushstack/eslint-config@4.9.0(eslint@8.57.1)(typescript@4.9.5)': + '@rushstack/eslint-config@4.9.0(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@rushstack/eslint-patch': 1.16.1 - '@rushstack/eslint-plugin': 0.24.0(eslint@8.57.1)(typescript@4.9.5) - '@rushstack/eslint-plugin-packlets': 0.15.3(eslint@8.57.1)(typescript@4.9.5) - '@rushstack/eslint-plugin-security': 0.14.3(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/parser': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 - eslint-plugin-promise: 7.2.1(eslint@8.57.1) - eslint-plugin-react: 7.37.5(eslint@8.57.1) - eslint-plugin-tsdoc: 0.5.3(eslint@8.57.1)(typescript@4.9.5) + '@rushstack/eslint-plugin': 0.24.0(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@rushstack/eslint-plugin-packlets': 0.15.3(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@rushstack/eslint-plugin-security': 0.14.3(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5))(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + eslint: 8.57.1(supports-color@8.1.1) + eslint-plugin-promise: 7.2.1(eslint@8.57.1(supports-color@8.1.1)) + eslint-plugin-react: 7.37.5(eslint@8.57.1(supports-color@8.1.1)) + eslint-plugin-tsdoc: 0.5.3(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@rushstack/eslint-config@4.9.0(eslint@9.37.0)(typescript@5.8.2)': + '@rushstack/eslint-config@4.9.0(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/eslint-patch': 1.16.1 - '@rushstack/eslint-plugin': 0.24.0(eslint@9.37.0)(typescript@5.8.2) - '@rushstack/eslint-plugin-packlets': 0.15.3(eslint@9.37.0)(typescript@5.8.2) - '@rushstack/eslint-plugin-security': 0.14.3(eslint@9.37.0)(typescript@5.8.2) - '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.2))(eslint@9.37.0)(typescript@5.8.2) - '@typescript-eslint/parser': 8.56.1(eslint@9.37.0)(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.2) - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) - eslint: 9.37.0 - eslint-plugin-promise: 7.2.1(eslint@9.37.0) - eslint-plugin-react: 7.37.5(eslint@9.37.0) - eslint-plugin-tsdoc: 0.5.3(eslint@9.37.0)(typescript@5.8.2) + '@rushstack/eslint-plugin': 0.24.0(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-packlets': 0.15.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@rushstack/eslint-plugin-security': 0.14.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/parser': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 9.37.0(supports-color@8.1.1) + eslint-plugin-promise: 7.2.1(eslint@9.37.0(supports-color@8.1.1)) + eslint-plugin-react: 7.37.5(eslint@9.37.0(supports-color@8.1.1)) + eslint-plugin-tsdoc: 0.5.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -24775,164 +25396,164 @@ snapshots: '@rushstack/eslint-patch@1.16.1': {} - '@rushstack/eslint-plugin-packlets@0.15.3(eslint@8.57.1)(typescript@4.9.5)': + '@rushstack/eslint-plugin-packlets@0.15.3(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@rushstack/tree-pattern': 0.4.1 - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + eslint: 8.57.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-packlets@0.15.3(eslint@9.37.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin-packlets@0.15.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.4.1 - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) - eslint: 9.37.0 + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 9.37.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-packlets@0.9.2(eslint@7.11.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin-packlets@0.9.2(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.11.0)(typescript@5.8.2) - eslint: 7.11.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.11.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-packlets@0.9.2(eslint@7.30.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin-packlets@0.9.2(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.30.0)(typescript@5.8.2) - eslint: 7.30.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.30.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-packlets@0.9.2(eslint@7.7.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin-packlets@0.9.2(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.7.0)(typescript@5.8.2) - eslint: 7.7.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.7.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-packlets@0.9.2(eslint@8.57.1)(typescript@5.8.2)': + '@rushstack/eslint-plugin-packlets@0.9.2(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@8.57.1)(typescript@5.8.2) - eslint: 8.57.1 + '@typescript-eslint/utils': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 8.57.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-security@0.14.3(eslint@8.57.1)(typescript@4.9.5)': + '@rushstack/eslint-plugin-security@0.14.3(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@rushstack/tree-pattern': 0.4.1 - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + eslint: 8.57.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-security@0.14.3(eslint@9.37.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin-security@0.14.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.4.1 - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) - eslint: 9.37.0 + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 9.37.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-security@0.8.2(eslint@7.11.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin-security@0.8.2(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.11.0)(typescript@5.8.2) - eslint: 7.11.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.11.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-security@0.8.2(eslint@7.30.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin-security@0.8.2(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.30.0)(typescript@5.8.2) - eslint: 7.30.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.30.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-security@0.8.2(eslint@7.7.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin-security@0.8.2(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.7.0)(typescript@5.8.2) - eslint: 7.7.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.7.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin-security@0.8.2(eslint@8.57.1)(typescript@5.8.2)': + '@rushstack/eslint-plugin-security@0.8.2(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@8.57.1)(typescript@5.8.2) - eslint: 8.57.1 + '@typescript-eslint/utils': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 8.57.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin@0.15.2(eslint@7.11.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin@0.15.2(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.11.0)(typescript@5.8.2) - eslint: 7.11.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.11.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin@0.15.2(eslint@7.30.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin@0.15.2(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.30.0)(typescript@5.8.2) - eslint: 7.30.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.30.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin@0.15.2(eslint@7.7.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin@0.15.2(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@7.7.0)(typescript@5.8.2) - eslint: 7.7.0 + '@typescript-eslint/utils': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.7.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin@0.15.2(eslint@8.57.1)(typescript@5.8.2)': + '@rushstack/eslint-plugin@0.15.2(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.3.4 - '@typescript-eslint/utils': 6.19.1(eslint@8.57.1)(typescript@5.8.2) - eslint: 8.57.1 + '@typescript-eslint/utils': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 8.57.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin@0.24.0(eslint@8.57.1)(typescript@4.9.5)': + '@rushstack/eslint-plugin@0.24.0(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@rushstack/tree-pattern': 0.4.1 - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + eslint: 8.57.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - '@rushstack/eslint-plugin@0.24.0(eslint@9.37.0)(typescript@5.8.2)': + '@rushstack/eslint-plugin@0.24.0(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@rushstack/tree-pattern': 0.4.1 - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) - eslint: 9.37.0 + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + eslint: 9.37.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript @@ -24963,21 +25584,21 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@rushstack/heft-jest-plugin@2.0.21(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)(jest-environment-node@30.3.0)': + '@rushstack/heft-jest-plugin@2.0.21(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(jest-environment-jsdom@30.3.0(supports-color@8.1.1))(jest-environment-node@30.3.0)(supports-color@8.1.1)': dependencies: - '@jest/core': 30.3.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)) - '@jest/reporters': 30.3.0 - '@jest/transform': 30.3.0 + '@jest/core': 30.3.0(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(supports-color@8.1.1) + '@jest/reporters': 30.3.0(supports-color@8.1.1) + '@jest/transform': 30.3.0(supports-color@8.1.1) '@rushstack/heft': 1.3.4(@types/node@20.17.19) '@rushstack/heft-config-file': 0.20.17(@types/node@20.17.19) '@rushstack/node-core-library': 5.25.1(@types/node@20.17.19) '@rushstack/terminal': 0.24.7(@types/node@20.17.19) - jest-config: 30.3.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)) + jest-config: 30.3.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(supports-color@8.1.1) jest-resolve: 30.3.0 - jest-snapshot: 30.3.0 + jest-snapshot: 30.3.0(supports-color@8.1.1) optionalDependencies: '@types/jest': 30.0.0 - jest-environment-jsdom: 30.3.0 + jest-environment-jsdom: 30.3.0(supports-color@8.1.1) jest-environment-node: 30.3.0 transitivePeerDependencies: - '@types/node' @@ -24996,17 +25617,17 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@rushstack/heft-node-rig@2.11.55(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)': + '@rushstack/heft-node-rig@2.11.55(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(jest-environment-jsdom@30.3.0(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: '@microsoft/api-extractor': 7.60.0(@types/node@20.17.19) - '@rushstack/eslint-config': 4.9.0(eslint@9.37.0)(typescript@5.8.2) + '@rushstack/eslint-config': 4.9.0(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@rushstack/heft': 1.3.4(@types/node@20.17.19) '@rushstack/heft-api-extractor-plugin': 1.3.31(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/node@20.17.19) - '@rushstack/heft-jest-plugin': 2.0.21(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0))(jest-environment-jsdom@30.3.0)(jest-environment-node@30.3.0) + '@rushstack/heft-jest-plugin': 2.0.21(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/jest@30.0.0)(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(jest-environment-jsdom@30.3.0(supports-color@8.1.1))(jest-environment-node@30.3.0)(supports-color@8.1.1) '@rushstack/heft-lint-plugin': 1.4.1(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/node@20.17.19) '@rushstack/heft-typescript-plugin': 1.3.26(@rushstack/heft@1.3.4(@types/node@20.17.19))(@types/node@20.17.19) '@types/jest': 30.0.0 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) jest-environment-node: 30.3.0 typescript: 5.8.2 transitivePeerDependencies: @@ -25207,18 +25828,18 @@ snapshots: '@types/webpack': 4.41.32 webpack: 4.47.0 - '@serverless-stack/aws-lambda-ric@2.0.13': + '@serverless-stack/aws-lambda-ric@2.0.13(supports-color@8.1.1)': dependencies: node-addon-api: 3.2.1 - node-gyp: 8.1.0 + node-gyp: 8.1.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@serverless-stack/cli@1.18.4(constructs@10.0.130)': + '@serverless-stack/cli@1.18.4(constructs@10.0.130)(supports-color@8.1.1)': dependencies: '@aws-cdk/aws-apigatewayv2-alpha': 2.50.0-alpha.0(aws-cdk-lib@2.50.0(constructs@10.0.130))(constructs@10.0.130) - '@serverless-stack/core': 1.18.4 - '@serverless-stack/resources': 1.18.4 + '@serverless-stack/core': 1.18.4(supports-color@8.1.1) + '@serverless-stack/resources': 1.18.4(supports-color@8.1.1) aws-cdk: 2.50.0 aws-cdk-lib: 2.50.0(constructs@10.0.130) aws-sdk: 2.1693.0 @@ -25245,9 +25866,9 @@ snapshots: - supports-color - utf-8-validate - '@serverless-stack/core@1.18.4': + '@serverless-stack/core@1.18.4(supports-color@8.1.1)': dependencies: - '@serverless-stack/aws-lambda-ric': 2.0.13 + '@serverless-stack/aws-lambda-ric': 2.0.13(supports-color@8.1.1) '@trpc/server': 9.27.4 acorn: 8.16.0 acorn-walk: 8.3.5 @@ -25273,7 +25894,7 @@ snapshots: kysely: 0.21.6 kysely-codegen: 0.6.2(kysely@0.21.6) kysely-data-api: 0.1.4(aws-sdk@2.1693.0)(kysely@0.21.6) - log4js: 6.9.1 + log4js: 6.9.1(supports-color@8.1.1) picomatch: 2.3.2 remeda: 0.0.32 semver: 7.7.4 @@ -25293,14 +25914,14 @@ snapshots: - supports-color - utf-8-validate - '@serverless-stack/resources@1.18.4': + '@serverless-stack/resources@1.18.4(supports-color@8.1.1)': dependencies: '@aws-cdk/aws-apigatewayv2-alpha': 2.50.0-alpha.0(aws-cdk-lib@2.50.0(constructs@10.0.130))(constructs@10.0.130) '@aws-cdk/aws-apigatewayv2-authorizers-alpha': 2.50.0-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.50.0-alpha.0(aws-cdk-lib@2.50.0(constructs@10.0.130))(constructs@10.0.130))(aws-cdk-lib@2.50.0(constructs@10.0.130))(constructs@10.0.130) '@aws-cdk/aws-apigatewayv2-integrations-alpha': 2.50.0-alpha.0(@aws-cdk/aws-apigatewayv2-alpha@2.50.0-alpha.0(aws-cdk-lib@2.50.0(constructs@10.0.130))(constructs@10.0.130))(aws-cdk-lib@2.50.0(constructs@10.0.130))(constructs@10.0.130) '@aws-cdk/aws-appsync-alpha': 2.50.0-alpha.0(aws-cdk-lib@2.50.0(constructs@10.0.130))(constructs@10.0.130) '@aws-sdk/client-codebuild': 3.1023.0 - '@serverless-stack/core': 1.18.4 + '@serverless-stack/core': 1.18.4(supports-color@8.1.1) archiver: 5.3.2 aws-cdk-lib: 2.50.0(constructs@10.0.130) chalk: 4.1.2 @@ -25615,14 +26236,14 @@ snapshots: '@standard-schema/utils@0.3.0': {} - '@storybook/addon-actions@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/addon-actions@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) core-js: 3.49.0 fast-deep-equal: 3.1.3 global: 4.4.0 @@ -25642,15 +26263,15 @@ snapshots: - '@types/react' - supports-color - '@storybook/addon-backgrounds@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/addon-backgrounds@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) core-js: 3.49.0 global: 4.4.0 memoizerific: 1.11.3 @@ -25664,17 +26285,17 @@ snapshots: - '@types/react' - supports-color - '@storybook/addon-controls@6.4.22(@types/react@17.0.74)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)': + '@storybook/addon-controls@6.4.22(@types/react@17.0.74)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/core-common': 6.4.22(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/core-common': 6.4.22(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/node-logger': 6.4.22 - '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) core-js: 3.49.0 lodash: 4.18.1 ts-dedent: 2.2.0 @@ -25690,32 +26311,32 @@ snapshots: - webpack-cli - webpack-command - '@storybook/addon-docs@6.4.22(@storybook/react@6.4.22(@babel/core@7.20.12)(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1))(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0)': + '@storybook/addon-docs@6.4.22(@storybook/react@6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1))(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/generator': 7.29.1 '@babel/parser': 7.29.2 - '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.20.12) - '@babel/preset-env': 7.29.2(@babel/core@7.20.12) - '@jest/transform': 26.6.2 - '@mdx-js/loader': 1.6.22(react@17.0.2) - '@mdx-js/mdx': 1.6.22 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-env': 7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@jest/transform': 26.6.2(supports-color@8.1.1) + '@mdx-js/loader': 1.6.22(react@17.0.2)(supports-color@8.1.1) + '@mdx-js/mdx': 1.6.22(supports-color@8.1.1) '@mdx-js/react': 1.6.22(react@17.0.2) - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/builder-webpack4': 6.4.22(@types/react@17.0.74)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/builder-webpack4': 6.4.22(@types/react@17.0.74)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) '@storybook/client-logger': 6.4.22 - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/core': 6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/core': 6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0) '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/csf-tools': 6.4.22 + '@storybook/csf-tools': 6.4.22(supports-color@8.1.1) '@storybook/node-logger': 6.4.22 '@storybook/postinstall': 6.4.22 - '@storybook/preview-web': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/source-loader': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/preview-web': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/source-loader': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -25739,7 +26360,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 optionalDependencies: - '@storybook/react': 6.4.22(@babel/core@7.20.12)(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1) + '@storybook/react': 6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) webpack: 4.47.0 @@ -25757,21 +26378,21 @@ snapshots: - webpack-cli - webpack-command - '@storybook/addon-essentials@6.4.22(@babel/core@7.20.12)(@storybook/react@6.4.22(@babel/core@7.20.12)(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1))(@types/react@17.0.74)(babel-loader@8.2.5(@babel/core@7.20.12)(webpack@4.47.0))(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0)': - dependencies: - '@babel/core': 7.20.12 - '@storybook/addon-actions': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/addon-backgrounds': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/addon-controls': 6.4.22(@types/react@17.0.74)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) - '@storybook/addon-docs': 6.4.22(@storybook/react@6.4.22(@babel/core@7.20.12)(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1))(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0) - '@storybook/addon-measure': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/addon-outline': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/addon-toolbars': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/addon-viewport': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addon-essentials@6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@storybook/react@6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1))(@types/react@17.0.74)(babel-loader@8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@4.47.0))(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0)': + dependencies: + '@babel/core': 7.20.12(supports-color@8.1.1) + '@storybook/addon-actions': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/addon-backgrounds': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/addon-controls': 6.4.22(@types/react@17.0.74)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) + '@storybook/addon-docs': 6.4.22(@storybook/react@6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1))(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0) + '@storybook/addon-measure': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/addon-outline': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/addon-toolbars': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/addon-viewport': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/node-logger': 6.4.22 - babel-loader: 8.2.5(@babel/core@7.20.12)(webpack@4.47.0) + babel-loader: 8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@4.47.0) core-js: 3.49.0 regenerator-runtime: 0.13.11 ts-dedent: 2.2.0 @@ -25801,9 +26422,9 @@ snapshots: - webpack-cli - webpack-command - '@storybook/addon-links@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/addon-links@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 @@ -25822,12 +26443,12 @@ snapshots: - '@types/react' - supports-color - '@storybook/addon-measure@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/addon-measure@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 core-js: 3.49.0 @@ -25839,12 +26460,12 @@ snapshots: - '@types/react' - supports-color - '@storybook/addon-outline@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/addon-outline@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 core-js: 3.49.0 @@ -25858,12 +26479,12 @@ snapshots: - '@types/react' - supports-color - '@storybook/addon-toolbars@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/addon-toolbars@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) core-js: 3.49.0 regenerator-runtime: 0.13.11 optionalDependencies: @@ -25873,14 +26494,14 @@ snapshots: - '@types/react' - supports-color - '@storybook/addon-viewport@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/addon-viewport@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/core-events': 6.4.22 - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) core-js: 3.49.0 global: 4.4.0 memoizerific: 1.11.3 @@ -25893,15 +26514,15 @@ snapshots: - '@types/react' - supports-color - '@storybook/addons@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/addons@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/channels': 6.4.22 '@storybook/client-logger': 6.4.22 '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/router': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/react': 17.0.74 '@types/webpack-env': 1.18.8 core-js: 3.49.0 @@ -25912,7 +26533,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/api@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/api@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: '@storybook/channels': 6.4.22 '@storybook/client-logger': 6.4.22 @@ -25920,7 +26541,7 @@ snapshots: '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/router': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/semver': 7.3.2 - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/react': 17.0.74 core-js: 3.49.0 fast-deep-equal: 3.1.3 @@ -25937,51 +26558,51 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/builder-webpack4@6.4.22(@types/react@17.0.74)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)': - dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.20.12) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.20.12) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.20.12) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.20.12) - '@babel/preset-env': 7.29.2(@babel/core@7.20.12) - '@babel/preset-react': 7.28.5(@babel/core@7.20.12) - '@babel/preset-typescript': 7.28.5(@babel/core@7.20.12) - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/builder-webpack4@6.4.22(@types/react@17.0.74)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)': + dependencies: + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/preset-env': 7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-react': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-typescript': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/channel-postmessage': 6.4.22 '@storybook/channels': 6.4.22 - '@storybook/client-api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/client-api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/core-common': 6.4.22(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/core-common': 6.4.22(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) '@storybook/core-events': 6.4.22 '@storybook/node-logger': 6.4.22 - '@storybook/preview-web': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/preview-web': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/router': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/ui': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/ui': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/node': 14.18.63 '@types/webpack': 4.41.32 autoprefixer: 9.8.8 - babel-loader: 8.2.5(@babel/core@7.20.12)(webpack@4.47.0) + babel-loader: 8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@4.47.0) babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.20.12) + babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) case-sensitive-paths-webpack-plugin: 2.4.0 core-js: 3.49.0 css-loader: 3.6.0(webpack@4.47.0) @@ -26020,22 +26641,22 @@ snapshots: - webpack-cli - webpack-command - '@storybook/builder-webpack5@9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/webpack@4.41.32)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2)': + '@storybook/builder-webpack5@9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.7.10(@swc/helpers@0.5.21))(@types/webpack@4.41.32)(esbuild@0.28.0)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(typescript@5.8.2)(uglify-js@3.19.3)': dependencies: - '@storybook/core-webpack': 9.1.20(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)) + '@storybook/core-webpack': 9.1.20(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1)) case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.3 - css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4) + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.2)(webpack@5.105.4) - html-webpack-plugin: 5.5.4(webpack@5.105.4) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.8.2)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) + html-webpack-plugin: 5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) magic-string: 0.30.21 - storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) - style-loader: 3.3.4(webpack@5.105.4) - terser-webpack-plugin: 5.3.17(webpack@5.105.4) + storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) + style-loader: 3.3.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) + terser-webpack-plugin: 5.3.17(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) ts-dedent: 2.2.0 - webpack: 5.105.4 - webpack-dev-middleware: 6.1.3(@types/webpack@4.41.32)(webpack@5.105.4) + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) + webpack-dev-middleware: 6.1.3(@types/webpack@4.41.32)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -26072,13 +26693,13 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - '@storybook/cli@6.4.22(eslint@9.37.0)(jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)': + '@storybook/cli@6.4.22(eslint@9.37.0(supports-color@8.1.1))(jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@babel/core': 7.20.12 - '@babel/preset-env': 7.29.2(@babel/core@7.20.12) - '@storybook/codemod': 6.4.22(@babel/preset-env@7.29.2(@babel/core@7.20.12)) - '@storybook/core-common': 6.4.22(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) - '@storybook/csf-tools': 6.4.22 + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/preset-env': 7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@storybook/codemod': 6.4.22(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(supports-color@8.1.1) + '@storybook/core-common': 6.4.22(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) + '@storybook/csf-tools': 6.4.22(supports-color@8.1.1) '@storybook/node-logger': 6.4.22 '@storybook/semver': 7.3.2 boxen: 5.1.2 @@ -26092,12 +26713,12 @@ snapshots: fs-extra: 9.1.0 get-port: 5.1.1 globby: 11.1.0 - jest: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0) - jscodeshift: 0.13.1(@babel/preset-env@7.29.2(@babel/core@7.20.12)) + jest: 29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) + jscodeshift: 0.13.1(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(supports-color@8.1.1) json5: 2.2.3 leven: 3.1.0 prompts: 2.4.2 - puppeteer-core: 2.1.1 + puppeteer-core: 2.1.1(supports-color@8.1.1) read-pkg-up: 7.0.1 shelljs: 0.8.5 strip-json-comments: 3.1.1 @@ -26113,15 +26734,15 @@ snapshots: - webpack-cli - webpack-command - '@storybook/cli@9.1.20(@babel/preset-env@7.29.2(@babel/core@7.20.12))(@testing-library/dom@7.21.8)(prettier@3.8.1)': + '@storybook/cli@9.1.20(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1)': dependencies: - '@storybook/codemod': 9.1.20(@babel/preset-env@7.29.2(@babel/core@7.20.12))(@testing-library/dom@7.21.8) + '@storybook/codemod': 9.1.20(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(@testing-library/dom@7.21.8)(supports-color@8.1.1) '@types/semver': 7.7.1 commander: 12.1.0 create-storybook: 9.1.20 giget: 1.2.5 - jscodeshift: 0.15.2(@babel/preset-env@7.29.2(@babel/core@7.20.12)) - storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + jscodeshift: 0.15.2(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(supports-color@8.1.1) + storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) ts-dedent: 2.2.0 transitivePeerDependencies: - '@babel/preset-env' @@ -26133,15 +26754,15 @@ snapshots: - utf-8-validate - vite - '@storybook/client-api@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/client-api@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/channel-postmessage': 6.4.22 '@storybook/channels': 6.4.22 '@storybook/client-logger': 6.4.22 '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/qs': 6.15.0 '@types/webpack-env': 1.18.8 core-js: 3.49.0 @@ -26166,17 +26787,17 @@ snapshots: core-js: 3.49.0 global: 4.4.0 - '@storybook/codemod@6.4.22(@babel/preset-env@7.29.2(@babel/core@7.20.12))': + '@storybook/codemod@6.4.22(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: '@babel/types': 7.29.0 - '@mdx-js/mdx': 1.6.22 + '@mdx-js/mdx': 1.6.22(supports-color@8.1.1) '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/csf-tools': 6.4.22 + '@storybook/csf-tools': 6.4.22(supports-color@8.1.1) '@storybook/node-logger': 6.4.22 core-js: 3.49.0 cross-spawn: 7.0.6 globby: 11.1.0 - jscodeshift: 0.13.1(@babel/preset-env@7.29.2(@babel/core@7.20.12)) + jscodeshift: 0.13.1(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(supports-color@8.1.1) lodash: 4.18.1 prettier: 2.3.0 recast: 0.19.1 @@ -26185,15 +26806,15 @@ snapshots: - '@babel/preset-env' - supports-color - '@storybook/codemod@9.1.20(@babel/preset-env@7.29.2(@babel/core@7.20.12))(@testing-library/dom@7.21.8)': + '@storybook/codemod@9.1.20(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(@testing-library/dom@7.21.8)(supports-color@8.1.1)': dependencies: '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.6 es-toolkit: 1.45.1 globby: 14.1.0 - jscodeshift: 0.15.2(@babel/preset-env@7.29.2(@babel/core@7.20.12)) + jscodeshift: 0.15.2(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(supports-color@8.1.1) prettier: 3.8.1 - storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) tiny-invariant: 1.3.3 transitivePeerDependencies: - '@babel/preset-env' @@ -26204,12 +26825,12 @@ snapshots: - utf-8-validate - vite - '@storybook/components@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/components@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: '@popperjs/core': 2.11.8 '@storybook/client-logger': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/color-convert': 2.0.4 '@types/overlayscrollbars': 1.12.5 '@types/react-syntax-highlighter': 11.0.5 @@ -26236,18 +26857,18 @@ snapshots: - '@types/react' - supports-color - '@storybook/core-client@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0)': + '@storybook/core-client@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/channel-postmessage': 6.4.22 '@storybook/channel-websocket': 6.4.22 - '@storybook/client-api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/client-api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/preview-web': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/ui': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/preview-web': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/ui': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.15 core-js: 3.49.0 @@ -26267,42 +26888,42 @@ snapshots: - '@types/react' - supports-color - '@storybook/core-common@6.4.22(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)': - dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.20.12) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.20.12) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.20.12) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.20.12) - '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.20.12) - '@babel/preset-env': 7.29.2(@babel/core@7.20.12) - '@babel/preset-react': 7.28.5(@babel/core@7.20.12) - '@babel/preset-typescript': 7.28.5(@babel/core@7.20.12) - '@babel/register': 7.28.6(@babel/core@7.20.12) + '@storybook/core-common@6.4.22(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)': + dependencies: + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-block-scoping': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-classes': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-transform-spread': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-env': 7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-react': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-typescript': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/register': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) '@storybook/node-logger': 6.4.22 '@storybook/semver': 7.3.2 '@types/node': 14.18.63 '@types/pretty-hrtime': 1.0.3 - babel-loader: 8.2.5(@babel/core@7.20.12)(webpack@4.47.0) + babel-loader: 8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@4.47.0) babel-plugin-macros: 3.1.0 - babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.20.12) + babel-plugin-polyfill-corejs3: 0.1.7(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) chalk: 4.1.2 core-js: 3.49.0 express: 4.21.1 file-system-cache: 1.1.0 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.37.0)(typescript@5.8.2)(webpack@4.47.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@9.37.0(supports-color@8.1.1))(typescript@5.8.2)(webpack@4.47.0) fs-extra: 9.1.0 glob: 7.2.3 handlebars: 4.7.9 @@ -26333,19 +26954,19 @@ snapshots: dependencies: core-js: 3.49.0 - '@storybook/core-server@6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)': + '@storybook/core-server@6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-webpack4': 6.4.22(@types/react@17.0.74)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) - '@storybook/core-client': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0) - '@storybook/core-common': 6.4.22(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + '@storybook/builder-webpack4': 6.4.22(@types/react@17.0.74)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) + '@storybook/core-client': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0) + '@storybook/core-common': 6.4.22(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/csf-tools': 6.4.22 - '@storybook/manager-webpack4': 6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + '@storybook/csf-tools': 6.4.22(supports-color@8.1.1) + '@storybook/manager-webpack4': 6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) '@storybook/node-logger': 6.4.22 '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/node': 14.18.63 '@types/node-fetch': 2.6.13 '@types/pretty-hrtime': 1.0.3 @@ -26358,7 +26979,7 @@ snapshots: compression: 1.7.5 core-js: 3.49.0 cpy: 8.1.2 - detect-port: 1.6.1 + detect-port: 1.6.1(supports-color@8.1.1) express: 4.21.1 file-system-cache: 1.1.0 fs-extra: 9.1.0 @@ -26392,15 +27013,15 @@ snapshots: - webpack-cli - webpack-command - '@storybook/core-webpack@9.1.20(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))': + '@storybook/core-webpack@9.1.20(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))': dependencies: - storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) ts-dedent: 2.2.0 - '@storybook/core@6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0)': + '@storybook/core@6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0)': dependencies: - '@storybook/core-client': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0) - '@storybook/core-server': 6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + '@storybook/core-client': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0) + '@storybook/core-server': 6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) webpack: 4.47.0 @@ -26418,16 +27039,16 @@ snapshots: - webpack-cli - webpack-command - '@storybook/csf-tools@6.4.22': + '@storybook/csf-tools@6.4.22(supports-color@8.1.1)': dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/generator': 7.29.1 '@babel/parser': 7.29.2 - '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.20.12) - '@babel/preset-env': 7.29.2(@babel/core@7.20.12) - '@babel/traverse': 7.29.0 + '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-env': 7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 - '@mdx-js/mdx': 1.6.22 + '@mdx-js/mdx': 1.6.22(supports-color@8.1.1) '@storybook/csf': 0.0.2--canary.87bc651.0 core-js: 3.49.0 fs-extra: 9.1.0 @@ -26446,20 +27067,20 @@ snapshots: '@storybook/global@5.0.0': {} - '@storybook/manager-webpack4@6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)': + '@storybook/manager-webpack4@6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.20.12) - '@babel/preset-react': 7.28.5(@babel/core@7.20.12) - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/core-client': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0) - '@storybook/core-common': 6.4.22(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/preset-react': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/core-client': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0) + '@storybook/core-common': 6.4.22(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) '@storybook/node-logger': 6.4.22 - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/ui': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/ui': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/node': 14.18.63 '@types/webpack': 4.41.32 - babel-loader: 8.2.5(@babel/core@7.20.12)(webpack@4.47.0) + babel-loader: 8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@4.47.0) case-sensitive-paths-webpack-plugin: 2.4.0 chalk: 4.1.2 core-js: 3.49.0 @@ -26509,21 +27130,21 @@ snapshots: dependencies: core-js: 3.49.0 - '@storybook/preset-react-webpack@9.1.20(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2)': + '@storybook/preset-react-webpack@9.1.20(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)(uglify-js@3.19.3)': dependencies: - '@storybook/core-webpack': 9.1.20(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.2)(webpack@5.105.4) + '@storybook/core-webpack': 9.1.20(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1)) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(supports-color@8.1.1)(typescript@5.8.2)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) '@types/semver': 7.7.1 find-up: 7.0.0 magic-string: 0.30.21 react: 19.2.4 - react-docgen: 7.1.1 + react-docgen: 7.1.1(supports-color@8.1.1) react-dom: 19.2.4(react@19.2.4) resolve: 1.22.11 semver: 7.7.4 - storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) tsconfig-paths: 4.2.0 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: @@ -26533,14 +27154,14 @@ snapshots: - uglify-js - webpack-cli - '@storybook/preview-web@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/preview-web@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/channel-postmessage': 6.4.22 '@storybook/client-logger': 6.4.22 '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 - '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) ansi-to-html: 0.6.15 core-js: 3.49.0 global: 4.4.0 @@ -26557,7 +27178,7 @@ snapshots: - '@types/react' - supports-color - '@storybook/react-docgen-typescript-plugin@1.0.2-canary.253f8c1.0(typescript@5.8.2)(webpack@4.47.0)': + '@storybook/react-docgen-typescript-plugin@1.0.2-canary.253f8c1.0(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0)': dependencies: debug: 4.4.3(supports-color@8.1.1) endent: 2.1.0 @@ -26571,7 +27192,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.2)(webpack@5.105.4)': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(supports-color@8.1.1)(typescript@5.8.2)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3))': dependencies: debug: 4.4.3(supports-color@8.1.1) endent: 2.1.0 @@ -26581,24 +27202,24 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@5.8.2) tslib: 2.8.1 typescript: 5.8.2 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@9.1.20(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))': + '@storybook/react-dom-shim@9.1.20(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))': dependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) - '@storybook/react-webpack5@9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/node@20.17.19)(@types/react@19.2.7)(@types/webpack@4.41.32)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2)': + '@storybook/react-webpack5@9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.7.10(@swc/helpers@0.5.21))(@types/node@20.17.19)(@types/react@19.2.7)(@types/webpack@4.41.32)(esbuild@0.28.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)(uglify-js@3.19.3)': dependencies: - '@storybook/builder-webpack5': 9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@types/webpack@4.41.32)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2) - '@storybook/preset-react-webpack': 9.1.20(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2) - '@storybook/react': 9.1.20(@types/node@20.17.19)(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2) + '@storybook/builder-webpack5': 9.1.20(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.7.10(@swc/helpers@0.5.21))(@types/webpack@4.41.32)(esbuild@0.28.0)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(typescript@5.8.2)(uglify-js@3.19.3) + '@storybook/preset-react-webpack': 9.1.20(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)(uglify-js@3.19.3) + '@storybook/react': 9.1.20(@types/node@20.17.19)(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(typescript@5.8.2) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: @@ -26612,25 +27233,25 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react@6.4.22(@babel/core@7.20.12)(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1)': + '@storybook/react@6.4.22(@babel/core@7.20.12(supports-color@8.1.1))(@types/node@20.17.19)(@types/react@17.0.74)(@types/webpack@4.41.32)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(type-fest@0.21.3)(typescript@5.8.2)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1)': dependencies: - '@babel/preset-flow': 7.27.1(@babel/core@7.20.12) - '@babel/preset-react': 7.28.5(@babel/core@7.20.12) - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@4.41.32)(react-refresh@0.11.0)(type-fest@0.21.3)(webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0))(webpack-hot-middleware@2.26.1)(webpack@4.47.0) - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/core': 6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2)(webpack@4.47.0) - '@storybook/core-common': 6.4.22(eslint@9.37.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(typescript@5.8.2) + '@babel/preset-flow': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/preset-react': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(@types/webpack@4.41.32)(react-refresh@0.11.0)(type-fest@0.21.3)(webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0))(webpack-hot-middleware@2.26.1)(webpack@4.47.0) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/core': 6.4.22(@types/react@17.0.74)(encoding@0.1.13)(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0) + '@storybook/core-common': 6.4.22(eslint@9.37.0(supports-color@8.1.1))(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)(typescript@5.8.2) '@storybook/csf': 0.0.2--canary.87bc651.0 '@storybook/node-logger': 6.4.22 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0(typescript@5.8.2)(webpack@4.47.0) + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.253f8c1.0(supports-color@8.1.1)(typescript@5.8.2)(webpack@4.47.0) '@storybook/semver': 7.3.2 - '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/store': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@types/node': 20.17.19 '@types/react': 17.0.74 '@types/webpack-env': 1.18.8 babel-plugin-add-react-displayname: 0.0.5 - babel-plugin-named-asset-import: 0.3.8(@babel/core@7.20.12) - babel-plugin-react-docgen: 4.2.1 + babel-plugin-named-asset-import: 0.3.8(@babel/core@7.20.12(supports-color@8.1.1)) + babel-plugin-react-docgen: 4.2.1(supports-color@8.1.1) core-js: 3.49.0 global: 4.4.0 lodash: 4.18.1 @@ -26643,7 +27264,7 @@ snapshots: ts-dedent: 2.2.0 webpack: 4.47.0 optionalDependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) typescript: 5.8.2 transitivePeerDependencies: - '@storybook/builder-webpack5' @@ -26663,15 +27284,15 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/react@9.1.20(@types/node@20.17.19)(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1))(typescript@5.8.2)': + '@storybook/react@9.1.20(@types/node@20.17.19)(@types/react@19.2.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1))(typescript@5.8.2)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.20(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)) + '@storybook/react-dom-shim': 9.1.20(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1)) '@types/node': 20.17.19 '@types/react': 19.2.7 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1) + storybook: 9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1) optionalDependencies: typescript: 5.8.2 @@ -26697,9 +27318,9 @@ snapshots: core-js: 3.49.0 find-up: 4.1.0 - '@storybook/source-loader@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/source-loader@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 core-js: 3.49.0 @@ -26715,9 +27336,9 @@ snapshots: - '@types/react' - supports-color - '@storybook/store@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/store@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/client-logger': 6.4.22 '@storybook/core-events': 6.4.22 '@storybook/csf': 0.0.2--canary.87bc651.0 @@ -26738,17 +27359,17 @@ snapshots: - '@types/react' - supports-color - '@storybook/theming@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/theming@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2) + '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1) '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 1.3.3 - '@emotion/styled': 10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2))(@types/react@17.0.74)(react@17.0.2) + '@emotion/styled': 10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1))(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1) '@emotion/utils': 1.4.2 '@storybook/client-logger': 6.4.22 core-js: 3.49.0 deep-object-diff: 1.1.9 - emotion-theming: 10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2))(@types/react@17.0.74)(react@17.0.2) + emotion-theming: 10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1))(@types/react@17.0.74)(react@17.0.2) global: 4.4.0 memoizerific: 1.11.3 polished: 4.3.1 @@ -26760,23 +27381,23 @@ snapshots: - '@types/react' - supports-color - '@storybook/ui@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + '@storybook/ui@6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1)': dependencies: - '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2) - '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1) + '@storybook/addons': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) + '@storybook/api': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/channels': 6.4.22 '@storybook/client-logger': 6.4.22 - '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/components': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) '@storybook/core-events': 6.4.22 '@storybook/router': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@storybook/semver': 7.3.2 - '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@storybook/theming': 6.4.22(@types/react@17.0.74)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(supports-color@8.1.1) copy-to-clipboard: 3.3.3 core-js: 3.49.0 core-js-pure: 3.49.0 downshift: 6.1.12(react@17.0.2) - emotion-theming: 10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2))(@types/react@17.0.74)(react@17.0.2) + emotion-theming: 10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1))(@types/react@17.0.74)(react@17.0.2) fuse.js: 3.6.1 global: 4.4.0 lodash: 4.18.1 @@ -27317,16 +27938,16 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.11.0)(typescript@5.8.2))(eslint@7.11.0)(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.19.1(eslint@7.11.0)(typescript@5.8.2) + '@typescript-eslint/parser': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) - '@typescript-eslint/type-utils': 6.19.1(eslint@7.11.0)(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.11.0)(typescript@5.8.2) + '@typescript-eslint/type-utils': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.11.0 + eslint: 7.11.0(supports-color@8.1.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -27337,16 +27958,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.30.0)(typescript@5.8.2))(eslint@7.30.0)(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.19.1(eslint@7.30.0)(typescript@5.8.2) + '@typescript-eslint/parser': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) - '@typescript-eslint/type-utils': 6.19.1(eslint@7.30.0)(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.30.0)(typescript@5.8.2) + '@typescript-eslint/type-utils': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.30.0 + eslint: 7.30.0(supports-color@8.1.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -27357,16 +27978,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.7.0)(typescript@5.8.2))(eslint@7.7.0)(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.19.1(eslint@7.7.0)(typescript@5.8.2) + '@typescript-eslint/parser': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) - '@typescript-eslint/type-utils': 6.19.1(eslint@7.7.0)(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.7.0)(typescript@5.8.2) + '@typescript-eslint/type-utils': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.7.0 + eslint: 7.7.0(supports-color@8.1.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -27377,16 +27998,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.57.1)(typescript@5.8.2))(eslint@8.57.1)(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@6.19.1(@typescript-eslint/parser@6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 6.19.1(eslint@8.57.1)(typescript@5.8.2) + '@typescript-eslint/parser': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) - '@typescript-eslint/type-utils': 6.19.1(eslint@8.57.1)(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@8.57.1)(typescript@5.8.2) + '@typescript-eslint/type-utils': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -27397,15 +28018,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5))(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) '@typescript-eslint/scope-manager': 8.56.1(typescript@4.9.5) - '@typescript-eslint/type-utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/type-utils': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 8.56.1(typescript@4.9.5) - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@4.9.5) @@ -27413,15 +28034,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.2))(eslint@9.37.0)(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2))(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.1(eslint@9.37.0)(typescript@5.8.2) + '@typescript-eslint/parser': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/scope-manager': 8.56.1(typescript@5.8.2) - '@typescript-eslint/type-utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) + '@typescript-eslint/type-utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 8.56.1(typescript@5.8.2) - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.8.2) @@ -27429,95 +28050,95 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.19.1(eslint@7.11.0)(typescript@5.8.2)': + '@typescript-eslint/parser@6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) '@typescript-eslint/types': 6.19.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.11.0 + eslint: 7.11.0(supports-color@8.1.1) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.19.1(eslint@7.30.0)(typescript@5.8.2)': + '@typescript-eslint/parser@6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) '@typescript-eslint/types': 6.19.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.30.0 + eslint: 7.30.0(supports-color@8.1.1) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.19.1(eslint@7.7.0)(typescript@5.8.2)': + '@typescript-eslint/parser@6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) '@typescript-eslint/types': 6.19.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.7.0 + eslint: 7.7.0(supports-color@8.1.1) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.19.1(eslint@8.57.1)(typescript@5.8.2)': + '@typescript-eslint/parser@6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) '@typescript-eslint/types': 6.19.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/parser@8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@typescript-eslint/scope-manager': 8.56.1(typescript@4.9.5) '@typescript-eslint/types': 8.56.1(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) '@typescript-eslint/visitor-keys': 8.56.1(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@5.8.2)': + '@typescript-eslint/parser@8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 8.56.1(typescript@5.8.2) '@typescript-eslint/types': 8.56.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 8.56.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.1(eslint@9.37.0)(typescript@5.8.2)': + '@typescript-eslint/parser@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 8.56.1(typescript@5.8.2) '@typescript-eslint/types': 8.56.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 8.56.1(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@4.9.5)': + '@typescript-eslint/project-service@8.56.1(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@4.9.5) '@typescript-eslint/types': 8.56.1(typescript@4.9.5) @@ -27526,7 +28147,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@5.8.2)': + '@typescript-eslint/project-service@8.56.1(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.8.2) '@typescript-eslint/types': 8.56.1(typescript@5.8.2) @@ -27535,14 +28156,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@8.56.1(eslint@9.37.0)(typescript@5.8.2)': + '@typescript-eslint/rule-tester@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@types/semver': 7.7.1 - '@typescript-eslint/parser': 8.56.1(eslint@9.37.0)(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.2) - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) + '@typescript-eslint/parser': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) ajv: 6.14.0 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 semver: 7.7.4 @@ -27579,73 +28200,73 @@ snapshots: dependencies: typescript: 5.8.2 - '@typescript-eslint/type-utils@6.19.1(eslint@7.11.0)(typescript@5.8.2)': + '@typescript-eslint/type-utils@6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.11.0)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.11.0 + eslint: 7.11.0(supports-color@8.1.1) ts-api-utils: 1.4.3(typescript@5.8.2) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.19.1(eslint@7.30.0)(typescript@5.8.2)': + '@typescript-eslint/type-utils@6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.30.0)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.30.0 + eslint: 7.30.0(supports-color@8.1.1) ts-api-utils: 1.4.3(typescript@5.8.2) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.19.1(eslint@7.7.0)(typescript@5.8.2)': + '@typescript-eslint/type-utils@6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@7.7.0)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 7.7.0 + eslint: 7.7.0(supports-color@8.1.1) ts-api-utils: 1.4.3(typescript@5.8.2) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@6.19.1(eslint@8.57.1)(typescript@5.8.2)': + '@typescript-eslint/type-utils@6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - '@typescript-eslint/utils': 6.19.1(eslint@8.57.1)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) ts-api-utils: 1.4.3(typescript@5.8.2) optionalDependencies: typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.56.1(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/type-utils@8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: '@typescript-eslint/types': 8.56.1(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.56.1(eslint@9.37.0)(typescript@5.8.2)': + '@typescript-eslint/type-utils@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 8.56.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.2) - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.2) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@5.8.2) typescript: 5.8.2 transitivePeerDependencies: @@ -27663,7 +28284,7 @@ snapshots: dependencies: typescript: 5.8.2 - '@typescript-eslint/typescript-estree@6.19.1(typescript@5.8.2)': + '@typescript-eslint/typescript-estree@6.19.1(supports-color@8.1.1)(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 6.19.1(typescript@5.8.2) '@typescript-eslint/visitor-keys': 6.19.1(typescript@5.8.2) @@ -27678,9 +28299,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.56.1(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@8.56.1(supports-color@8.1.1)(typescript@4.9.5)': dependencies: - '@typescript-eslint/project-service': 8.56.1(typescript@4.9.5) + '@typescript-eslint/project-service': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@4.9.5) '@typescript-eslint/types': 8.56.1(typescript@4.9.5) '@typescript-eslint/visitor-keys': 8.56.1(typescript@4.9.5) @@ -27693,9 +28314,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.56.1(typescript@5.8.2)': + '@typescript-eslint/typescript-estree@8.56.1(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@typescript-eslint/project-service': 8.56.1(typescript@5.8.2) + '@typescript-eslint/project-service': 8.56.1(supports-color@8.1.1)(typescript@5.8.2) '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.8.2) '@typescript-eslint/types': 8.56.1(typescript@5.8.2) '@typescript-eslint/visitor-keys': 8.56.1(typescript@5.8.2) @@ -27708,80 +28329,80 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.19.1(eslint@7.11.0)(typescript@5.8.2)': + '@typescript-eslint/utils@6.19.1(eslint@7.11.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@7.11.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@7.11.0(supports-color@8.1.1)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) '@typescript-eslint/types': 6.19.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - eslint: 7.11.0 + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.11.0(supports-color@8.1.1) semver: 7.7.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.19.1(eslint@7.30.0)(typescript@5.8.2)': + '@typescript-eslint/utils@6.19.1(eslint@7.30.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@7.30.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@7.30.0(supports-color@8.1.1)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) '@typescript-eslint/types': 6.19.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - eslint: 7.30.0 + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.30.0(supports-color@8.1.1) semver: 7.7.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.19.1(eslint@7.7.0)(typescript@5.8.2)': + '@typescript-eslint/utils@6.19.1(eslint@7.7.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@7.7.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@7.7.0(supports-color@8.1.1)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) '@typescript-eslint/types': 6.19.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - eslint: 7.7.0 + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + eslint: 7.7.0(supports-color@8.1.1) semver: 7.7.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.19.1(eslint@8.57.1)(typescript@5.8.2)': + '@typescript-eslint/utils@6.19.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1(supports-color@8.1.1)) '@types/json-schema': 7.0.15 '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 6.19.1(typescript@5.8.2) '@typescript-eslint/types': 6.19.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 6.19.1(typescript@5.8.2) - eslint: 8.57.1 + '@typescript-eslint/typescript-estree': 6.19.1(supports-color@8.1.1)(typescript@5.8.2) + eslint: 8.57.1(supports-color@8.1.1) semver: 7.7.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.56.1(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/utils@8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1(supports-color@8.1.1)) '@typescript-eslint/scope-manager': 8.56.1(typescript@4.9.5) '@typescript-eslint/types': 8.56.1(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - eslint: 8.57.1 + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@4.9.5) + eslint: 8.57.1(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.1(eslint@9.37.0)(typescript@5.8.2)': + '@typescript-eslint/utils@8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0(supports-color@8.1.1)) '@typescript-eslint/scope-manager': 8.56.1(typescript@5.8.2) '@typescript-eslint/types': 8.56.1(typescript@5.8.2) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.8.2) - eslint: 9.37.0 + '@typescript-eslint/typescript-estree': 8.56.1(supports-color@8.1.1)(typescript@5.8.2) + eslint: 9.37.0(supports-color@8.1.1) typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -27807,10 +28428,10 @@ snapshots: transitivePeerDependencies: - typescript - '@typespec/ts-http-runtime@0.3.4': + '@typespec/ts-http-runtime@0.3.4(supports-color@8.1.1)': dependencies: - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 + http-proxy-agent: 7.0.2(supports-color@8.1.1) + https-proxy-agent: 7.0.6(supports-color@8.1.1) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -27904,10 +28525,10 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vscode/test-electron@1.6.2': + '@vscode/test-electron@1.6.2(supports-color@8.1.1)': dependencies: - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 + http-proxy-agent: 4.0.1(supports-color@8.1.1) + https-proxy-agent: 5.0.1(supports-color@8.1.1) rimraf: 3.0.2 unzipper: 0.10.14 transitivePeerDependencies: @@ -27952,9 +28573,9 @@ snapshots: '@vscode/vsce-sign-win32-arm64': 2.0.6 '@vscode/vsce-sign-win32-x64': 2.0.6 - '@vscode/vsce@3.2.1': + '@vscode/vsce@3.2.1(supports-color@8.1.1)': dependencies: - '@azure/identity': 4.13.1 + '@azure/identity': 4.13.1(supports-color@8.1.1) '@vscode/vsce-sign': 2.0.9 azure-devops-node-api: 12.5.0 chalk: 2.4.2 @@ -28224,7 +28845,7 @@ snapshots: agent-base@5.1.1: {} - agent-base@6.0.2: + agent-base@6.0.2(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: @@ -28628,7 +29249,7 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - avvio@7.2.5: + avvio@7.2.5(supports-color@8.1.1): dependencies: archy: 1.0.0 debug: 4.4.3(supports-color@8.1.1) @@ -28670,69 +29291,69 @@ snapshots: tunnel: 0.0.6 typed-rest-client: 1.8.11 - babel-core@7.0.0-bridge.0(@babel/core@7.20.12): + babel-core@7.0.0-bridge.0(@babel/core@7.20.12(supports-color@8.1.1)): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) - babel-core@7.0.0-bridge.0(@babel/core@7.29.0): + babel-core@7.0.0-bridge.0(@babel/core@7.29.0(supports-color@8.1.1)): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) - babel-jest@29.7.0(@babel/core@7.20.12): + babel-jest@29.7.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 - '@jest/transform': 29.7.0 + '@babel/core': 7.20.12(supports-color@8.1.1) + '@jest/transform': 29.7.0(supports-color@8.1.1) '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.20.12) + babel-plugin-istanbul: 6.1.1(supports-color@8.1.1) + babel-preset-jest: 29.6.3(@babel/core@7.20.12(supports-color@8.1.1)) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-jest@30.3.0(@babel/core@7.29.0): + babel-jest@30.3.0(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 - '@jest/transform': 30.3.0 + '@babel/core': 7.29.0(supports-color@8.1.1) + '@jest/transform': 30.3.0(supports-color@8.1.1) '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 7.0.1 - babel-preset-jest: 30.3.0(@babel/core@7.29.0) + babel-plugin-istanbul: 7.0.1(supports-color@8.1.1) + babel-preset-jest: 30.3.0(@babel/core@7.29.0(supports-color@8.1.1)) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-loader@8.2.5(@babel/core@7.20.12)(webpack@4.47.0): + babel-loader@8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@4.47.0): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 webpack: 4.47.0 - babel-loader@8.2.5(@babel/core@7.20.12)(webpack@5.105.4): + babel-loader@8.2.5(@babel/core@7.20.12(supports-color@8.1.1))(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) babel-plugin-add-react-displayname@0.0.5: {} - babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9): + babel-plugin-apply-mdx-type-prop@1.6.22(@babel/core@7.12.9(supports-color@8.1.1)): dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.12.9(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.10.4 '@mdx-js/util': 1.6.22 - babel-plugin-emotion@10.2.2: + babel-plugin-emotion@10.2.2(supports-color@8.1.1): dependencies: - '@babel/helper-module-imports': 7.28.6 + '@babel/helper-module-imports': 7.28.6(supports-color@8.1.1) '@emotion/hash': 0.8.0 '@emotion/memoize': 0.7.4 '@emotion/serialize': 0.11.16 @@ -28749,22 +29370,22 @@ snapshots: dependencies: '@babel/helper-plugin-utils': 7.10.4 - babel-plugin-istanbul@6.1.1: + babel-plugin-istanbul@6.1.1(supports-color@8.1.1): dependencies: '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 + istanbul-lib-instrument: 5.2.1(supports-color@8.1.1) test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - babel-plugin-istanbul@7.0.1: + babel-plugin-istanbul@7.0.1(supports-color@8.1.1): dependencies: '@babel/helper-plugin-utils': 7.28.6 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 6.0.3 + istanbul-lib-instrument: 6.0.3(supports-color@8.1.1) test-exclude: 6.0.0 transitivePeerDependencies: - supports-color @@ -28792,101 +29413,101 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.11 - babel-plugin-named-asset-import@0.3.8(@babel/core@7.20.12): + babel-plugin-named-asset-import@0.3.8(@babel/core@7.20.12(supports-color@8.1.1)): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.20.12): + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1): dependencies: '@babel/compat-data': 7.29.0 - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.1.7(@babel/core@7.20.12): + babel-plugin-polyfill-corejs3@0.1.7(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.1.5(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.1.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.20.12): + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.20.12): + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.20.12) + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color - babel-plugin-react-docgen@4.2.1: + babel-plugin-react-docgen@4.2.1(supports-color@8.1.1): dependencies: ast-types: 0.14.2 lodash: 4.18.1 - react-docgen: 5.4.3 + react-docgen: 5.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color babel-plugin-syntax-jsx@6.18.0: {} - babel-preset-current-node-syntax@1.2.0(@babel/core@7.20.12): - dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.12) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.12) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.12) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.20.12) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.12) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.12) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.20.12) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.12) - - babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0): - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0) - - babel-preset-jest@29.6.3(@babel/core@7.20.12): - dependencies: - '@babel/core': 7.20.12 + babel-preset-current-node-syntax@1.2.0(@babel/core@7.20.12(supports-color@8.1.1)): + dependencies: + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.20.12(supports-color@8.1.1)) + + babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.0(supports-color@8.1.1)): + dependencies: + '@babel/core': 7.29.0(supports-color@8.1.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0(supports-color@8.1.1)) + + babel-preset-jest@29.6.3(@babel/core@7.20.12(supports-color@8.1.1)): + dependencies: + '@babel/core': 7.20.12(supports-color@8.1.1) babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.20.12) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.20.12(supports-color@8.1.1)) - babel-preset-jest@30.3.0(@babel/core@7.29.0): + babel-preset-jest@30.3.0(@babel/core@7.29.0(supports-color@8.1.1)): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) babel-plugin-jest-hoist: 30.3.0 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0(supports-color@8.1.1)) bail@1.0.5: {} @@ -28987,7 +29608,7 @@ snapshots: type-is: 1.6.18 unpipe: 1.0.0 - body-parser@2.2.2: + body-parser@2.2.2(supports-color@8.1.1): dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -29733,13 +30354,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.12 - create-jest@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0): + create-jest@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -29818,7 +30439,7 @@ snapshots: semver: 7.7.4 webpack: 4.47.0 - css-loader@5.2.7(webpack@5.105.4): + css-loader@5.2.7(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: icss-utils: 5.1.0(postcss@8.4.49) loader-utils: 2.0.4 @@ -29830,9 +30451,9 @@ snapshots: postcss-value-parser: 4.2.0 schema-utils: 3.3.0 semver: 7.7.4 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) - css-loader@6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4): + css-loader@6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: icss-utils: 5.1.0(postcss@8.5.12) postcss: 8.5.12 @@ -29844,9 +30465,9 @@ snapshots: semver: 7.7.4 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) - css-loader@6.6.0(webpack@5.105.4): + css-loader@6.6.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: icss-utils: 5.1.0(postcss@8.4.49) postcss: 8.4.49 @@ -29856,9 +30477,9 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.4.49) postcss-value-parser: 4.2.0 semver: 7.7.4 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) - css-minimizer-webpack-plugin@3.4.1(webpack@5.105.4): + css-minimizer-webpack-plugin@3.4.1(clean-css@5.3.3)(csso@4.2.0)(esbuild@0.28.0)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: cssnano: 5.1.15(postcss@8.5.12) jest-worker: 27.5.1 @@ -29866,7 +30487,11 @@ snapshots: schema-utils: 4.3.3 serialize-javascript: 6.0.2 source-map: 0.6.1 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) + optionalDependencies: + clean-css: 5.3.3 + csso: 4.2.0 + esbuild: 0.28.0 css-select@4.3.0: dependencies: @@ -30117,7 +30742,7 @@ snapshots: address: 1.2.2 debug: 2.6.9 - detect-port@1.6.1: + detect-port@1.6.1(supports-color@8.1.1): dependencies: address: 1.2.2 debug: 4.4.3(supports-color@8.1.1) @@ -30304,10 +30929,10 @@ snapshots: emojis-list@3.0.0: {} - emotion-theming@10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2))(@types/react@17.0.74)(react@17.0.2): + emotion-theming@10.3.0(@emotion/core@10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1))(@types/react@17.0.74)(react@17.0.2): dependencies: '@babel/runtime': 7.29.2 - '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2) + '@emotion/core': 10.3.1(@types/react@17.0.74)(react@17.0.2)(supports-color@8.1.1) '@emotion/weak-memoize': 0.2.5 '@types/react': 17.0.74 hoist-non-react-statics: 3.3.2 @@ -30557,14 +31182,14 @@ snapshots: esbuild-openbsd-64@0.14.54: optional: true - esbuild-register@3.6.0(esbuild@0.25.12): + esbuild-register@3.6.0(esbuild@0.25.12)(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) esbuild: 0.25.12 transitivePeerDependencies: - supports-color - esbuild-register@3.6.0(esbuild@0.28.0): + esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) esbuild: 0.28.0 @@ -30698,21 +31323,21 @@ snapshots: is-core-module: 2.16.1 resolve: 1.22.11 - eslint-module-utils@2.12.1(eslint@9.37.0): + eslint-module-utils@2.12.1(eslint@9.37.0(supports-color@8.1.1)): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-header@3.1.1(eslint@9.37.0): + eslint-plugin-header@3.1.1(eslint@9.37.0(supports-color@8.1.1)): dependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-headers@1.2.1(eslint@9.37.0): + eslint-plugin-headers@1.2.1(eslint@9.37.0(supports-color@8.1.1)): dependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-import@2.32.0(eslint@9.37.0): + eslint-plugin-import@2.32.0(eslint@9.37.0(supports-color@8.1.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -30721,9 +31346,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint@9.37.0) + eslint-module-utils: 2.12.1(eslint@9.37.0(supports-color@8.1.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -30735,14 +31360,14 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 - eslint-plugin-jsdoc@50.6.11(eslint@9.37.0): + eslint-plugin-jsdoc@50.6.11(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1): dependencies: '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) espree: 10.4.0 esquery: 1.7.0 parse-imports-exports: 0.2.4 @@ -30751,44 +31376,44 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-promise@6.1.1(eslint@7.11.0): + eslint-plugin-promise@6.1.1(eslint@7.11.0(supports-color@8.1.1)): dependencies: - eslint: 7.11.0 + eslint: 7.11.0(supports-color@8.1.1) - eslint-plugin-promise@6.1.1(eslint@7.30.0): + eslint-plugin-promise@6.1.1(eslint@7.30.0(supports-color@8.1.1)): dependencies: - eslint: 7.30.0 + eslint: 7.30.0(supports-color@8.1.1) - eslint-plugin-promise@6.1.1(eslint@7.7.0): + eslint-plugin-promise@6.1.1(eslint@7.7.0(supports-color@8.1.1)): dependencies: - eslint: 7.7.0 + eslint: 7.7.0(supports-color@8.1.1) - eslint-plugin-promise@6.1.1(eslint@8.57.1): + eslint-plugin-promise@6.1.1(eslint@8.57.1(supports-color@8.1.1)): dependencies: - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) - eslint-plugin-promise@7.2.1(eslint@8.57.1): + eslint-plugin-promise@7.2.1(eslint@8.57.1(supports-color@8.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - eslint: 8.57.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1(supports-color@8.1.1)) + eslint: 8.57.1(supports-color@8.1.1) - eslint-plugin-promise@7.2.1(eslint@9.37.0): + eslint-plugin-promise@7.2.1(eslint@9.37.0(supports-color@8.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0) - eslint: 9.37.0 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0(supports-color@8.1.1)) + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-react-hooks@5.2.0(eslint@9.37.0): + eslint-plugin-react-hooks@5.2.0(eslint@9.37.0(supports-color@8.1.1)): dependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - eslint-plugin-react@7.33.2(eslint@7.11.0): + eslint-plugin-react@7.33.2(eslint@7.11.0(supports-color@8.1.1)): dependencies: array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 7.11.0 + eslint: 7.11.0(supports-color@8.1.1) estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.5 @@ -30801,14 +31426,14 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.12 - eslint-plugin-react@7.33.2(eslint@7.30.0): + eslint-plugin-react@7.33.2(eslint@7.30.0(supports-color@8.1.1)): dependencies: array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 7.30.0 + eslint: 7.30.0(supports-color@8.1.1) estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.5 @@ -30821,14 +31446,14 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.12 - eslint-plugin-react@7.33.2(eslint@7.7.0): + eslint-plugin-react@7.33.2(eslint@7.7.0(supports-color@8.1.1)): dependencies: array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 7.7.0 + eslint: 7.7.0(supports-color@8.1.1) estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.5 @@ -30841,14 +31466,14 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.12 - eslint-plugin-react@7.33.2(eslint@8.57.1): + eslint-plugin-react@7.33.2(eslint@8.57.1(supports-color@8.1.1)): dependencies: array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.5 @@ -30861,7 +31486,7 @@ snapshots: semver: 6.3.1 string.prototype.matchall: 4.0.12 - eslint-plugin-react@7.37.5(eslint@8.57.1): + eslint-plugin-react@7.37.5(eslint@8.57.1(supports-color@8.1.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -30869,7 +31494,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -30883,7 +31508,7 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-react@7.37.5(eslint@9.37.0): + eslint-plugin-react@7.37.5(eslint@9.37.0(supports-color@8.1.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -30891,7 +31516,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.3.1 - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -30910,24 +31535,24 @@ snapshots: '@microsoft/tsdoc': 0.15.0 '@microsoft/tsdoc-config': 0.17.0 - eslint-plugin-tsdoc@0.5.3(eslint@8.57.1)(typescript@4.9.5): + eslint-plugin-tsdoc@0.5.3(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5): dependencies: '@microsoft/tsdoc': 0.17.0 '@microsoft/tsdoc-config': 0.18.2 - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.56.1(eslint@8.57.1(supports-color@8.1.1))(supports-color@8.1.1)(typescript@4.9.5) optionalDependencies: - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-tsdoc@0.5.3(eslint@9.37.0)(typescript@5.8.2): + eslint-plugin-tsdoc@0.5.3(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2): dependencies: '@microsoft/tsdoc': 0.17.0 '@microsoft/tsdoc-config': 0.18.2 - '@typescript-eslint/utils': 8.56.1(eslint@9.37.0)(typescript@5.8.2) + '@typescript-eslint/utils': 8.56.1(eslint@9.37.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.8.2) optionalDependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - typescript @@ -30956,9 +31581,9 @@ snapshots: dependencies: eslint-visitor-keys: 1.3.0 - eslint-utils@3.0.0(eslint@8.57.1): + eslint-utils@3.0.0(eslint@8.57.1(supports-color@8.1.1)): dependencies: - eslint: 8.57.1 + eslint: 8.57.1(supports-color@8.1.1) eslint-visitor-keys: 2.1.0 eslint-visitor-keys@1.3.0: {} @@ -30971,10 +31596,10 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@7.11.0: + eslint@7.11.0(supports-color@8.1.1): dependencies: '@babel/code-frame': 7.29.0 - '@eslint/eslintrc': 0.1.3 + '@eslint/eslintrc': 0.1.3(supports-color@8.1.1) ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -31013,11 +31638,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@7.30.0: + eslint@7.30.0(supports-color@8.1.1): dependencies: '@babel/code-frame': 7.12.11 - '@eslint/eslintrc': 0.4.3 - '@humanwhocodes/config-array': 0.5.0 + '@eslint/eslintrc': 0.4.3(supports-color@8.1.1) + '@humanwhocodes/config-array': 0.5.0(supports-color@8.1.1) ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -31058,7 +31683,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@7.7.0: + eslint@7.7.0(supports-color@8.1.1): dependencies: '@babel/code-frame': 7.29.0 ajv: 6.14.0 @@ -31099,10 +31724,10 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@8.23.1: + eslint@8.23.1(supports-color@8.1.1): dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.10.7 + '@eslint/eslintrc': 1.4.1(supports-color@8.1.1) + '@humanwhocodes/config-array': 0.10.7(supports-color@8.1.1) '@humanwhocodes/gitignore-to-minimatch': 1.0.2 '@humanwhocodes/module-importer': 1.0.1 ajv: 6.14.0 @@ -31112,7 +31737,7 @@ snapshots: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 - eslint-utils: 3.0.0(eslint@8.57.1) + eslint-utils: 3.0.0(eslint@8.57.1(supports-color@8.1.1)) eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.7.0 @@ -31143,13 +31768,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@8.57.1: + eslint@8.57.1(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1(supports-color@8.1.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/eslintrc': 2.1.4 + '@eslint/eslintrc': 2.1.4(supports-color@8.1.1) '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/config-array': 0.13.0(supports-color@8.1.1) '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.3.0 @@ -31186,10 +31811,10 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@8.6.0: + eslint@8.6.0(supports-color@8.1.1): dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.9.5 + '@eslint/eslintrc': 1.4.1(supports-color@8.1.1) + '@humanwhocodes/config-array': 0.9.5(supports-color@8.1.1) ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 @@ -31198,7 +31823,7 @@ snapshots: enquirer: 2.4.1 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 - eslint-utils: 3.0.0(eslint@8.57.1) + eslint-utils: 3.0.0(eslint@8.57.1(supports-color@8.1.1)) eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.7.0 @@ -31229,11 +31854,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.25.1: + eslint@9.25.1(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0(supports-color@8.1.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.20.1 + '@eslint/config-array': 0.20.1(supports-color@8.1.1) '@eslint/config-helpers': 0.2.3 '@eslint/core': 0.13.0 '@eslint/eslintrc': 3.3.5(supports-color@8.1.1) @@ -31269,46 +31894,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint@9.37.0: - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2(supports-color@8.1.1) - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.16.0 - '@eslint/eslintrc': 3.3.5(supports-color@8.1.1) - '@eslint/js': 9.37.0 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.7 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - ajv: 6.14.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@8.1.1) - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - eslint@9.37.0(supports-color@8.1.1): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.37.0(supports-color@8.1.1)) @@ -31381,9 +31966,9 @@ snapshots: estraverse@5.3.0: {} - estree-to-babel@3.2.1: + estree-to-babel@3.2.1(supports-color@8.1.1): dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 c8: 7.14.0 transitivePeerDependencies: @@ -31472,9 +32057,9 @@ snapshots: jest-mock: 30.3.0 jest-util: 30.3.0 - express-rate-limit@7.5.1(express@5.2.1): + express-rate-limit@7.5.1(express@5.2.1(supports-color@8.1.1)): dependencies: - express: 5.2.1 + express: 5.2.1(supports-color@8.1.1) express@4.21.1: dependencies: @@ -31544,10 +32129,10 @@ snapshots: utils-merge: 1.0.1 vary: 1.1.2 - express@5.2.1: + express@5.2.1(supports-color@8.1.1): dependencies: accepts: 2.0.0 - body-parser: 2.2.2 + body-parser: 2.2.2(supports-color@8.1.1) content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.2 @@ -31557,7 +32142,7 @@ snapshots: encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.1 + finalhandler: 2.1.1(supports-color@8.1.1) fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -31568,9 +32153,9 @@ snapshots: proxy-addr: 2.0.7 qs: 6.15.0 range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.1 - serve-static: 2.2.1 + router: 2.2.0(supports-color@8.1.1) + send: 1.2.1(supports-color@8.1.1) + serve-static: 2.2.1(supports-color@8.1.1) statuses: 2.0.2 type-is: 2.0.1 vary: 1.1.2 @@ -31664,12 +32249,12 @@ snapshots: fastify-warning@0.2.0: {} - fastify@3.16.2: + fastify@3.16.2(supports-color@8.1.1): dependencies: '@fastify/ajv-compiler': 1.1.0 '@fastify/proxy-addr': 3.0.0 abstract-logging: 2.0.1 - avvio: 7.2.5 + avvio: 7.2.5(supports-color@8.1.1) fast-json-stringify: 2.7.13 fastify-error: 0.3.1 fastify-warning: 0.2.0 @@ -31735,11 +32320,11 @@ snapshots: schema-utils: 3.3.0 webpack: 4.47.0 - file-loader@6.2.0(webpack@5.105.4): + file-loader@6.2.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) optional: true file-system-cache@1.1.0: @@ -31781,7 +32366,7 @@ snapshots: statuses: 2.0.2 unpipe: 1.0.0 - finalhandler@2.1.1: + finalhandler@2.1.1(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 @@ -31865,7 +32450,9 @@ snapshots: inherits: 2.0.4 readable-stream: 2.3.8 - follow-redirects@1.15.11: {} + follow-redirects@1.15.11(debug@4.4.3(supports-color@8.1.1)): + optionalDependencies: + debug: 4.4.3(supports-color@8.1.1) for-each@0.3.5: dependencies: @@ -31893,7 +32480,7 @@ snapshots: tapable: 1.1.3 worker-rpc: 0.1.1 - fork-ts-checker-webpack-plugin@6.5.3(eslint@9.37.0)(typescript@5.8.2)(webpack@4.47.0): + fork-ts-checker-webpack-plugin@6.5.3(eslint@9.37.0(supports-color@8.1.1))(typescript@5.8.2)(webpack@4.47.0): dependencies: '@babel/code-frame': 7.29.0 '@types/json-schema': 7.0.15 @@ -31911,9 +32498,9 @@ snapshots: typescript: 5.8.2 webpack: 4.47.0 optionalDependencies: - eslint: 9.37.0 + eslint: 9.37.0(supports-color@8.1.1) - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.2)(webpack@5.105.4): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.8.2)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: '@babel/code-frame': 7.29.0 chalk: 4.1.2 @@ -31928,7 +32515,7 @@ snapshots: semver: 7.7.4 tapable: 2.3.0 typescript: 5.8.2 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) form-data@4.0.5: dependencies: @@ -32494,14 +33081,14 @@ snapshots: util.promisify: 1.0.0 webpack: 4.47.0 - html-webpack-plugin@5.5.4(webpack@5.105.4): + html-webpack-plugin@5.5.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.18.1 pretty-error: 4.0.0 tapable: 2.3.0 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) htmlparser2@10.1.0: dependencies: @@ -32547,36 +33134,36 @@ snapshots: http-parser-js@0.5.10: {} - http-proxy-agent@4.0.1: + http-proxy-agent@4.0.1(supports-color@8.1.1): dependencies: '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 + agent-base: 6.0.2(supports-color@8.1.1) debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - http-proxy-agent@7.0.2: + http-proxy-agent@7.0.2(supports-color@8.1.1): dependencies: agent-base: 7.1.4 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9: + http-proxy-middleware@2.0.9(debug@4.4.3(supports-color@8.1.1)): dependencies: '@types/express': 4.17.21 '@types/http-proxy': 1.17.17 - http-proxy: 1.18.1 + http-proxy: 1.18.1(debug@4.4.3(supports-color@8.1.1)) is-glob: 4.0.3 is-plain-obj: 3.0.0 micromatch: 4.0.8 transitivePeerDependencies: - debug - http-proxy@1.18.1: + http-proxy@1.18.1(debug@4.4.3(supports-color@8.1.1)): dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.11 + follow-redirects: 1.15.11(debug@4.4.3(supports-color@8.1.1)) requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -32595,21 +33182,21 @@ snapshots: https-browserify@1.0.0: {} - https-proxy-agent@4.0.0: + https-proxy-agent@4.0.0(supports-color@8.1.1): dependencies: agent-base: 5.1.1 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - https-proxy-agent@5.0.1: + https-proxy-agent@5.0.1(supports-color@8.1.1): dependencies: - agent-base: 6.0.2 + agent-base: 6.0.2(supports-color@8.1.1) debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.6: + https-proxy-agent@7.0.6(supports-color@8.1.1): dependencies: agent-base: 7.1.4 debug: 4.4.3(supports-color@8.1.1) @@ -33018,9 +33605,9 @@ snapshots: istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@5.2.1: + istanbul-lib-instrument@5.2.1(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/parser': 7.29.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -33028,9 +33615,9 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-instrument@6.0.3: + istanbul-lib-instrument@6.0.3(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/parser': 7.29.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -33044,7 +33631,7 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: + istanbul-lib-source-maps@4.0.1(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 @@ -33052,7 +33639,7 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-source-maps@5.0.6: + istanbul-lib-source-maps@5.0.6(supports-color@8.1.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 debug: 4.4.3(supports-color@8.1.1) @@ -33103,10 +33690,10 @@ snapshots: jest-util: 30.3.0 p-limit: 3.1.0 - jest-circus@29.7.0(babel-plugin-macros@3.1.0): + jest-circus@29.7.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1): dependencies: '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 + '@jest/expect': 29.7.0(supports-color@8.1.1) '@jest/test-result': 29.7.0(@types/node@22.9.3) '@jest/types': 29.6.3 '@types/node': 22.9.3 @@ -33117,8 +33704,8 @@ snapshots: jest-each: 29.7.0 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 + jest-runtime: 29.7.0(supports-color@8.1.1) + jest-snapshot: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 p-limit: 3.1.0 pretty-format: 29.7.0 @@ -33129,10 +33716,10 @@ snapshots: - babel-plugin-macros - supports-color - jest-circus@30.3.0(babel-plugin-macros@3.1.0): + jest-circus@30.3.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1): dependencies: '@jest/environment': 30.3.0 - '@jest/expect': 30.3.0 + '@jest/expect': 30.3.0(supports-color@8.1.1) '@jest/test-result': 30.3.0(@types/node@22.9.3) '@jest/types': 30.3.0 '@types/node': 22.9.3 @@ -33143,8 +33730,8 @@ snapshots: jest-each: 30.3.0 jest-matcher-utils: 30.3.0 jest-message-util: 30.3.0 - jest-runtime: 30.3.0 - jest-snapshot: 30.3.0 + jest-runtime: 30.3.0(supports-color@8.1.1) + jest-snapshot: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 p-limit: 3.1.0 pretty-format: 30.3.0 @@ -33155,16 +33742,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0): + jest-cli@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1) '@jest/test-result': 29.7.0(@types/node@20.17.19) '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0) + create-jest: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0) + jest-config: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -33174,23 +33761,23 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0): + jest-config@29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@jest/test-sequencer': 29.7.0(@types/node@20.17.19) '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.20.12) + babel-jest: 29.7.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-circus: 29.7.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1) jest-environment-node: 29.7.0 jest-get-type: 29.6.3 jest-regex-util: 29.6.3 jest-resolve: 29.7.0 - jest-runner: 29.7.0 + jest-runner: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 jest-validate: 29.7.0 micromatch: 4.0.8 @@ -33204,23 +33791,23 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0): + jest-config@29.7.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0)(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@jest/test-sequencer': 29.7.0(@types/node@22.9.3) '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.20.12) + babel-jest: 29.7.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-circus: 29.7.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1) jest-environment-node: 29.7.0 jest-get-type: 29.6.3 jest-regex-util: 29.6.3 jest-resolve: 29.7.0 - jest-runner: 29.7.0 + jest-runner: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 jest-validate: 29.7.0 micromatch: 4.0.8 @@ -33234,25 +33821,25 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@30.3.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)): + jest-config@30.3.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@jest/get-type': 30.1.0 '@jest/pattern': 30.0.1 '@jest/test-sequencer': 30.3.0(@types/node@20.17.19) '@jest/types': 30.3.0 - babel-jest: 30.3.0(@babel/core@7.29.0) + babel-jest: 30.3.0(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) chalk: 4.1.2 ci-info: 4.4.0 deepmerge: 4.3.1 glob: 10.5.0 graceful-fs: 4.2.11 - jest-circus: 30.3.0(babel-plugin-macros@3.1.0) + jest-circus: 30.3.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1) jest-docblock: 30.2.0 jest-environment-node: 30.3.0 jest-regex-util: 30.0.1 jest-resolve: 30.3.0 - jest-runner: 30.3.0 + jest-runner: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 jest-validate: 30.3.0 parse-json: 5.2.0 @@ -33261,30 +33848,30 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 20.17.19 - esbuild-register: 3.6.0(esbuild@0.28.0) + esbuild-register: 3.6.0(esbuild@0.28.0)(supports-color@8.1.1) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@30.3.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)): + jest-config@30.3.0(@types/node@22.9.3)(babel-plugin-macros@3.1.0)(esbuild-register@3.6.0(esbuild@0.28.0)(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@jest/get-type': 30.1.0 '@jest/pattern': 30.0.1 '@jest/test-sequencer': 30.3.0(@types/node@22.9.3) '@jest/types': 30.3.0 - babel-jest: 30.3.0(@babel/core@7.29.0) + babel-jest: 30.3.0(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) chalk: 4.1.2 ci-info: 4.4.0 deepmerge: 4.3.1 glob: 10.5.0 graceful-fs: 4.2.11 - jest-circus: 30.3.0(babel-plugin-macros@3.1.0) + jest-circus: 30.3.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1) jest-docblock: 30.2.0 jest-environment-node: 30.3.0 jest-regex-util: 30.0.1 jest-resolve: 30.3.0 - jest-runner: 30.3.0 + jest-runner: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 jest-validate: 30.3.0 parse-json: 5.2.0 @@ -33293,7 +33880,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.9.3 - esbuild-register: 3.6.0(esbuild@0.28.0) + esbuild-register: 3.6.0(esbuild@0.28.0)(supports-color@8.1.1) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -33343,11 +33930,11 @@ snapshots: jest-util: 30.3.0 pretty-format: 30.3.0 - jest-environment-jsdom@30.3.0: + jest-environment-jsdom@30.3.0(supports-color@8.1.1): dependencies: '@jest/environment': 30.3.0 - '@jest/environment-jsdom-abstract': 30.3.0(jsdom@26.1.0) - jsdom: 26.1.0 + '@jest/environment-jsdom-abstract': 30.3.0(jsdom@26.1.0(supports-color@8.1.1)) + jsdom: 26.1.0(supports-color@8.1.1) transitivePeerDependencies: - bufferutil - supports-color @@ -33513,17 +34100,17 @@ snapshots: jest-regex-util@30.0.1: {} - jest-resolve-dependencies@29.7.0: + jest-resolve-dependencies@29.7.0(supports-color@8.1.1): dependencies: jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 + jest-snapshot: 29.7.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - jest-resolve-dependencies@30.3.0: + jest-resolve-dependencies@30.3.0(supports-color@8.1.1): dependencies: jest-regex-util: 30.0.1 - jest-snapshot: 30.3.0 + jest-snapshot: 30.3.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -33550,12 +34137,12 @@ snapshots: slash: 3.0.0 unrs-resolver: 1.11.1 - jest-runner@29.7.0: + jest-runner@29.7.0(supports-color@8.1.1): dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 '@jest/test-result': 29.7.0(@types/node@22.9.3) - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 '@types/node': 22.9.3 chalk: 4.1.2 @@ -33567,7 +34154,7 @@ snapshots: jest-leak-detector: 29.7.0 jest-message-util: 29.7.0 jest-resolve: 29.7.0 - jest-runtime: 29.7.0 + jest-runtime: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 jest-watcher: 29.7.0 jest-worker: 29.7.0 @@ -33576,12 +34163,12 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runner@30.3.0: + jest-runner@30.3.0(supports-color@8.1.1): dependencies: '@jest/console': 30.3.0 '@jest/environment': 30.3.0 '@jest/test-result': 30.3.0(@types/node@22.9.3) - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@types/node': 22.9.3 chalk: 4.1.2 @@ -33594,7 +34181,7 @@ snapshots: jest-leak-detector: 30.3.0 jest-message-util: 30.3.0 jest-resolve: 30.3.0 - jest-runtime: 30.3.0 + jest-runtime: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 jest-watcher: 30.3.0 jest-worker: 30.3.0 @@ -33603,14 +34190,14 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runtime@29.7.0: + jest-runtime@29.7.0(supports-color@8.1.1): dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 + '@jest/globals': 29.7.0(supports-color@8.1.1) '@jest/source-map': 29.6.3 '@jest/test-result': 29.7.0(@types/node@22.9.3) - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 '@types/node': 22.9.3 chalk: 4.1.2 @@ -33623,21 +34210,21 @@ snapshots: jest-mock: 29.7.0 jest-regex-util: 29.6.3 jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 + jest-snapshot: 29.7.0(supports-color@8.1.1) jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - jest-runtime@30.3.0: + jest-runtime@30.3.0(supports-color@8.1.1): dependencies: '@jest/environment': 30.3.0 '@jest/fake-timers': 30.3.0 - '@jest/globals': 30.3.0 + '@jest/globals': 30.3.0(supports-color@8.1.1) '@jest/source-map': 30.0.1 '@jest/test-result': 30.3.0(@types/node@22.9.3) - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 '@types/node': 22.9.3 chalk: 4.1.2 @@ -33650,7 +34237,7 @@ snapshots: jest-mock: 30.3.0 jest-regex-util: 30.0.1 jest-resolve: 30.3.0 - jest-snapshot: 30.3.0 + jest-snapshot: 30.3.0(supports-color@8.1.1) jest-util: 30.3.0 slash: 3.0.0 strip-bom: 4.0.0 @@ -33662,17 +34249,17 @@ snapshots: '@types/node': 22.9.3 graceful-fs: 4.2.11 - jest-snapshot@29.7.0: + jest-snapshot@29.7.0(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/generator': 7.29.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.20.12) - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.20.12) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) '@babel/types': 7.29.0 '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 + '@jest/transform': 29.7.0(supports-color@8.1.1) '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.20.12) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.20.12(supports-color@8.1.1)) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -33687,19 +34274,19 @@ snapshots: transitivePeerDependencies: - supports-color - jest-snapshot@30.3.0: + jest-snapshot@30.3.0(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/generator': 7.29.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) '@babel/types': 7.29.0 '@jest/expect-utils': 30.3.0 '@jest/get-type': 30.1.0 '@jest/snapshot-utils': 30.3.0 - '@jest/transform': 30.3.0 + '@jest/transform': 30.3.0(supports-color@8.1.1) '@jest/types': 30.3.0 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0(supports-color@8.1.1)) chalk: 4.1.2 expect: 30.3.0 graceful-fs: 4.2.11 @@ -33813,12 +34400,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0): + jest@29.3.1(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1): dependencies: - '@jest/core': 29.5.0(babel-plugin-macros@3.1.0) + '@jest/core': 29.5.0(babel-plugin-macros@3.1.0)(supports-color@8.1.1) '@jest/types': 29.5.0 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0) + jest-cli: 29.7.0(@types/node@20.17.19)(babel-plugin-macros@3.1.0)(supports-color@8.1.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -33844,19 +34431,19 @@ snapshots: dependencies: argparse: 2.0.1 - jscodeshift@0.13.1(@babel/preset-env@7.29.2(@babel/core@7.20.12)): + jscodeshift@0.13.1(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/parser': 7.29.2 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.12) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.20.12) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.20.12) - '@babel/preset-env': 7.29.2(@babel/core@7.20.12) - '@babel/preset-flow': 7.27.1(@babel/core@7.20.12) - '@babel/preset-typescript': 7.28.5(@babel/core@7.20.12) - '@babel/register': 7.28.6(@babel/core@7.20.12) - babel-core: 7.0.0-bridge.0(@babel/core@7.20.12) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-env': 7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-flow': 7.27.1(@babel/core@7.20.12(supports-color@8.1.1)) + '@babel/preset-typescript': 7.28.5(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/register': 7.28.6(@babel/core@7.20.12(supports-color@8.1.1)) + babel-core: 7.0.0-bridge.0(@babel/core@7.20.12(supports-color@8.1.1)) chalk: 4.1.2 flow-parser: 0.307.1 graceful-fs: 4.2.11 @@ -33869,19 +34456,19 @@ snapshots: transitivePeerDependencies: - supports-color - jscodeshift@0.15.2(@babel/preset-env@7.29.2(@babel/core@7.20.12)): + jscodeshift@0.15.2(@babel/preset-env@7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1))(supports-color@8.1.1): dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.0(supports-color@8.1.1) '@babel/parser': 7.29.2 - '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0) - '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0) - '@babel/preset-flow': 7.27.1(@babel/core@7.29.0) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) - '@babel/register': 7.28.6(@babel/core@7.29.0) - babel-core: 7.0.0-bridge.0(@babel/core@7.29.0) + '@babel/plugin-transform-class-properties': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-nullish-coalescing-operator': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/plugin-transform-private-methods': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-flow': 7.27.1(@babel/core@7.29.0(supports-color@8.1.1)) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/register': 7.28.6(@babel/core@7.29.0(supports-color@8.1.1)) + babel-core: 7.0.0-bridge.0(@babel/core@7.29.0(supports-color@8.1.1)) chalk: 4.1.2 flow-parser: 0.307.1 graceful-fs: 4.2.11 @@ -33892,20 +34479,20 @@ snapshots: temp: 0.8.4 write-file-atomic: 2.4.3 optionalDependencies: - '@babel/preset-env': 7.29.2(@babel/core@7.20.12) + '@babel/preset-env': 7.29.2(@babel/core@7.20.12(supports-color@8.1.1))(supports-color@8.1.1) transitivePeerDependencies: - supports-color jsdoc-type-pratt-parser@4.1.0: {} - jsdom@26.1.0: + jsdom@26.1.0(supports-color@8.1.1): dependencies: cssstyle: 4.6.0 data-urls: 5.0.0 decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 + http-proxy-agent: 7.0.2(supports-color@8.1.1) + https-proxy-agent: 7.0.6(supports-color@8.1.1) is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.23 parse5: 7.3.0 @@ -34202,13 +34789,13 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 - log4js@6.9.1: + log4js@6.9.1(supports-color@8.1.1): dependencies: date-format: 4.0.14 debug: 4.4.3(supports-color@8.1.1) flatted: 3.4.2 rfdc: 1.4.1 - streamroller: 3.1.5 + streamroller: 3.1.5(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -34260,13 +34847,13 @@ snapshots: dependencies: semver: 7.7.4 - make-fetch-happen@8.0.14: + make-fetch-happen@8.0.14(supports-color@8.1.1): dependencies: agentkeepalive: 4.6.0 cacache: 15.3.0 http-cache-semantics: 4.2.0 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 + http-proxy-agent: 4.0.1(supports-color@8.1.1) + https-proxy-agent: 5.0.1(supports-color@8.1.1) is-lambda: 1.0.1 lru-cache: 6.0.0 minipass: 3.3.6 @@ -34275,7 +34862,7 @@ snapshots: minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 promise-retry: 2.0.1 - socks-proxy-agent: 5.0.1 + socks-proxy-agent: 5.0.1(supports-color@8.1.1) ssri: 8.0.1 transitivePeerDependencies: - supports-color @@ -34469,10 +35056,10 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.5.3(webpack@5.105.4): + mini-css-extract-plugin@2.5.3(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: schema-utils: 4.3.3 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) minimalistic-assert@1.0.1: {} @@ -34712,12 +35299,12 @@ snapshots: node-forge@1.4.0: {} - node-gyp@8.1.0: + node-gyp@8.1.0(supports-color@8.1.1): dependencies: env-paths: 2.2.1 glob: 7.2.3 graceful-fs: 4.2.11 - make-fetch-happen: 8.0.14 + make-fetch-happen: 8.0.14(supports-color@8.1.1) nopt: 5.0.0 npmlog: 4.1.2 rimraf: 3.0.2 @@ -35367,13 +35954,13 @@ snapshots: semver: 7.7.4 webpack: 4.47.0 - postcss-loader@6.2.1(postcss@8.5.12)(webpack@5.105.4): + postcss-loader@6.2.1(postcss@8.5.12)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.5.12 semver: 7.7.4 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) postcss-merge-longhand@5.1.7(postcss@8.5.12): dependencies: @@ -35759,12 +36346,12 @@ snapshots: dependencies: escape-goat: 2.1.1 - puppeteer-core@2.1.1: + puppeteer-core@2.1.1(supports-color@8.1.1): dependencies: '@types/mime-types': 2.1.4 debug: 4.4.3(supports-color@8.1.1) extract-zip: 1.7.0 - https-proxy-agent: 4.0.0 + https-proxy-agent: 4.0.0(supports-color@8.1.1) mime: 2.6.0 mime-types: 2.1.35 progress: 2.0.3 @@ -35866,25 +36453,25 @@ snapshots: dependencies: typescript: 5.8.2 - react-docgen@5.4.3: + react-docgen@5.4.3(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.20.12(supports-color@8.1.1) '@babel/generator': 7.29.1 '@babel/runtime': 7.29.2 ast-types: 0.14.2 commander: 2.20.3 doctrine: 3.0.0 - estree-to-babel: 3.2.1 + estree-to-babel: 3.2.1(supports-color@8.1.1) neo-async: 2.6.2 node-dir: 0.1.17 strip-indent: 3.0.0 transitivePeerDependencies: - supports-color - react-docgen@7.1.1: + react-docgen@7.1.1(supports-color@8.1.1): dependencies: - '@babel/core': 7.20.12 - '@babel/traverse': 7.29.0 + '@babel/core': 7.20.12(supports-color@8.1.1) + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 @@ -36219,12 +36806,12 @@ snapshots: remark-footnotes@2.0.0: {} - remark-mdx@1.6.22: + remark-mdx@1.6.22(supports-color@8.1.1): dependencies: - '@babel/core': 7.12.9 + '@babel/core': 7.12.9(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.10.4 - '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9) - '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9) + '@babel/plugin-proposal-object-rest-spread': 7.12.1(@babel/core@7.12.9(supports-color@8.1.1)) + '@babel/plugin-syntax-jsx': 7.12.1(@babel/core@7.12.9(supports-color@8.1.1)) '@mdx-js/util': 1.6.22 is-alphabetical: 1.0.4 remark-parse: 8.0.3 @@ -36361,7 +36948,7 @@ snapshots: hash-base: 3.1.2 inherits: 2.0.4 - router@2.2.0: + router@2.2.0(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) depd: 2.0.0 @@ -36541,11 +37128,11 @@ snapshots: sass-embedded-win32-ia32: 1.85.1 sass-embedded-win32-x64: 1.85.1 - sass-loader@12.4.0(sass@1.49.11)(webpack@5.105.4): + sass-loader@12.4.0(sass@1.49.11)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: klona: 2.0.6 neo-async: 2.6.2 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) optionalDependencies: sass: 1.49.11 @@ -36679,7 +37266,7 @@ snapshots: range-parser: 1.2.1 statuses: 2.0.2 - send@1.2.1: + send@1.2.1(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) encodeurl: 2.0.0 @@ -36741,12 +37328,12 @@ snapshots: parseurl: 1.3.3 send: 0.19.2 - serve-static@2.2.1: + serve-static@2.2.1(supports-color@8.1.1): dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.1 + send: 1.2.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -36918,9 +37505,9 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.4 - socks-proxy-agent@5.0.1: + socks-proxy-agent@5.0.1(supports-color@8.1.1): dependencies: - agent-base: 6.0.2 + agent-base: 6.0.2(supports-color@8.1.1) debug: 4.4.3(supports-color@8.1.1) socks: 2.8.7 transitivePeerDependencies: @@ -36954,22 +37541,22 @@ snapshots: webpack: 4.47.0 whatwg-mimetype: 2.3.0 - source-map-loader@1.1.3(webpack@5.105.4): + source-map-loader@1.1.3(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: abab: 2.0.6 iconv-lite: 0.6.3 loader-utils: 2.0.4 schema-utils: 3.3.0 source-map: 0.6.1 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) whatwg-mimetype: 2.3.0 - source-map-loader@3.0.2(webpack@5.105.4): + source-map-loader@3.0.2(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: abab: 2.0.6 iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) source-map-resolve@0.5.3: dependencies: @@ -37018,7 +37605,7 @@ snapshots: spdx-license-ids@3.0.23: {} - spdy-transport@3.0.0: + spdy-transport@3.0.0(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) detect-node: 2.1.0 @@ -37029,13 +37616,13 @@ snapshots: transitivePeerDependencies: - supports-color - spdy@4.0.2: + spdy@4.0.2(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 - spdy-transport: 3.0.0 + spdy-transport: 3.0.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -37091,7 +37678,7 @@ snapshots: store2@2.14.4: {} - storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1): + storybook@9.1.20(@testing-library/dom@7.21.8)(prettier@3.8.1)(supports-color@8.1.1): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.9.1 @@ -37101,7 +37688,7 @@ snapshots: '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.12 - esbuild-register: 3.6.0(esbuild@0.25.12) + esbuild-register: 3.6.0(esbuild@0.25.12)(supports-color@8.1.1) recast: 0.23.11 semver: 7.7.4 ws: 8.21.0 @@ -37135,7 +37722,7 @@ snapshots: stream-shift@1.0.3: {} - streamroller@3.1.5: + streamroller@3.1.5(supports-color@8.1.1): dependencies: date-format: 4.0.14 debug: 4.4.3(supports-color@8.1.1) @@ -37295,15 +37882,15 @@ snapshots: schema-utils: 3.3.0 webpack: 4.47.0 - style-loader@2.0.0(webpack@5.105.4): + style-loader@2.0.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) - style-loader@3.3.4(webpack@5.105.4): + style-loader@3.3.4(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) style-to-object@0.3.0: dependencies: @@ -37467,7 +38054,7 @@ snapshots: webpack: 4.47.0 webpack-sources: 1.4.3 - terser-webpack-plugin@3.0.8(webpack@5.105.4): + terser-webpack-plugin@3.0.8(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: cacache: 15.3.0 find-cache-dir: 3.3.2 @@ -37477,7 +38064,7 @@ snapshots: serialize-javascript: 4.0.0 source-map: 0.6.1 terser: 4.8.1 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) webpack-sources: 1.4.3 terser-webpack-plugin@4.2.3(webpack@4.47.0): @@ -37493,13 +38080,17 @@ snapshots: webpack: 4.47.0 webpack-sources: 1.4.3 - terser-webpack-plugin@5.3.17(webpack@5.105.4): + terser-webpack-plugin@5.3.17(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.46.1 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) + optionalDependencies: + '@swc/core': 1.7.10(@swc/helpers@0.5.21) + esbuild: 0.28.0 + uglify-js: 3.19.3 terser@4.8.1: dependencies: @@ -38053,14 +38644,14 @@ snapshots: optionalDependencies: file-loader: 6.2.0(webpack@4.47.0) - url-loader@4.1.1(file-loader@6.2.0(webpack@5.105.4))(webpack@5.105.4): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)))(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) optionalDependencies: - file-loader: 6.2.0(webpack@5.105.4) + file-loader: 6.2.0(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) url@0.10.3: dependencies: @@ -38253,7 +38844,7 @@ snapshots: optionalDependencies: '@types/webpack': 4.41.32 - webpack-dev-middleware@6.1.3(@types/webpack@4.41.32)(webpack@5.105.4): + webpack-dev-middleware@6.1.3(@types/webpack@4.41.32)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -38262,9 +38853,9 @@ snapshots: schema-utils: 4.3.3 optionalDependencies: '@types/webpack': 4.41.32 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) - webpack-dev-middleware@7.4.5(@types/webpack@4.41.32)(webpack@4.47.0): + webpack-dev-middleware@7.4.5(@types/webpack@4.41.32)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: colorette: 2.0.20 memfs: 4.57.1 @@ -38274,22 +38865,9 @@ snapshots: schema-utils: 4.3.3 optionalDependencies: '@types/webpack': 4.41.32 - webpack: 4.47.0 - optional: true + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) - webpack-dev-middleware@7.4.5(@types/webpack@4.41.32)(webpack@5.105.4): - dependencies: - colorette: 2.0.20 - memfs: 4.57.1 - mime-types: 3.0.2 - on-finished: 2.4.1 - range-parser: 1.2.1 - schema-utils: 4.3.3 - optionalDependencies: - '@types/webpack': 4.41.32 - webpack: 5.105.4 - - webpack-dev-server@4.9.3(@types/webpack@4.41.32)(webpack@4.47.0): + webpack-dev-server@4.9.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@4.47.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -38310,7 +38888,7 @@ snapshots: express: 4.21.1 graceful-fs: 4.2.11 html-entities: 2.6.0 - http-proxy-middleware: 2.0.9 + http-proxy-middleware: 2.0.9(debug@4.4.3(supports-color@8.1.1)) ipaddr.js: 2.3.0 open: 8.4.2 p-retry: 4.6.2 @@ -38319,7 +38897,7 @@ snapshots: selfsigned: 2.4.1 serve-index: 1.9.2 sockjs: 0.3.24 - spdy: 4.0.2 + spdy: 4.0.2(supports-color@8.1.1) webpack: 4.47.0 webpack-dev-middleware: 5.3.4(@types/webpack@4.41.32)(webpack@4.47.0) ws: 8.21.0 @@ -38331,7 +38909,7 @@ snapshots: - supports-color - utf-8-validate - webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@4.47.0): + webpack-dev-server@5.2.3(@types/webpack@4.41.32)(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -38350,7 +38928,7 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.22.1 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9 + http-proxy-middleware: 2.0.9(debug@4.4.3(supports-color@8.1.1)) ipaddr.js: 2.3.0 launch-editor: 2.13.2 open: 10.2.0 @@ -38359,53 +38937,12 @@ snapshots: selfsigned: 5.5.0 serve-index: 1.9.2 sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(@types/webpack@4.41.32)(webpack@4.47.0) + spdy: 4.0.2(supports-color@8.1.1) + webpack-dev-middleware: 7.4.5(@types/webpack@4.41.32)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) ws: 8.21.0 optionalDependencies: '@types/webpack': 4.41.32 - webpack: 4.47.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - optional: true - - webpack-dev-server@5.2.3(@types/webpack@4.41.32)(webpack@5.105.4): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.25 - '@types/express-serve-static-core': 4.19.8 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.10 - '@types/sockjs': 0.3.36 - '@types/ws': 8.18.1 - ansi-html-community: 0.0.8 - anymatch: 3.1.3 - bonjour-service: 1.3.0 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.8.1 - connect-history-api-fallback: 2.0.0 - express: 4.22.1 - graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9 - ipaddr.js: 2.3.0 - launch-editor: 2.13.2 - open: 10.2.0 - p-retry: 6.2.1 - schema-utils: 4.3.3 - selfsigned: 5.5.0 - serve-index: 1.9.2 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(@types/webpack@4.41.32)(webpack@5.105.4) - ws: 8.21.0 - optionalDependencies: - '@types/webpack': 4.41.32 - webpack: 5.105.4 + webpack: 5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3) transitivePeerDependencies: - bufferutil - debug @@ -38471,7 +39008,7 @@ snapshots: watchpack: 1.7.5 webpack-sources: 1.4.3 - webpack@5.105.4: + webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -38495,7 +39032,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.17(webpack@5.105.4) + terser-webpack-plugin: 5.3.17(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)(webpack@5.105.4(@swc/core@1.7.10(@swc/helpers@0.5.21))(esbuild@0.28.0)(uglify-js@3.19.3)) watchpack: 2.5.1 webpack-sources: 3.3.4 transitivePeerDependencies: diff --git a/common/config/subspaces/default/repo-state.json b/common/config/subspaces/default/repo-state.json index 3d09725be2d..42ae572c98c 100644 --- a/common/config/subspaces/default/repo-state.json +++ b/common/config/subspaces/default/repo-state.json @@ -1,5 +1,6 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "a21e9138c38033203ce379c3ec1a9aa12562d3c6", - "preferredVersionsHash": "029c99bd6e65c5e1f25e2848340509811ff9753c" + "pnpmShrinkwrapHash": "d7e1f46f3c9bb4f0614d3839eb1bc5a3d03fbafe", + "preferredVersionsHash": "029c99bd6e65c5e1f25e2848340509811ff9753c", + "pnpmCatalogsHash": "c5d957ff55ba36f235fa5ba998ada38fbb7437e3" } diff --git a/common/reviews/api/rush-lib.api.md b/common/reviews/api/rush-lib.api.md index a85fdb820e4..914ae2604f6 100644 --- a/common/reviews/api/rush-lib.api.md +++ b/common/reviews/api/rush-lib.api.md @@ -1693,7 +1693,7 @@ export class PnpmOptionsConfiguration extends PackageManagerOptionsConfiguration readonly autoInstallPeers: boolean | undefined; readonly globalAllowBuilds: Record | undefined; readonly globalAllowedDeprecatedVersions: Record | undefined; - readonly globalCatalogs: Record> | undefined; + get globalCatalogs(): Record> | undefined; readonly globalIgnoredOptionalDependencies: string[] | undefined; readonly globalNeverBuiltDependencies: string[] | undefined; readonly globalOnlyBuiltDependencies: string[] | undefined; diff --git a/eslint/eslint-bulk/package.json b/eslint/eslint-bulk/package.json index 8d4b3f305ed..3b4c934b628 100755 --- a/eslint/eslint-bulk/package.json +++ b/eslint/eslint-bulk/package.json @@ -52,8 +52,8 @@ "devDependencies": { "@rushstack/eslint-patch": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": [ diff --git a/eslint/eslint-config/package.json b/eslint/eslint-config/package.json index 9a1679e1b2a..762709078c0 100644 --- a/eslint/eslint-config/package.json +++ b/eslint/eslint-config/package.json @@ -55,19 +55,19 @@ "@rushstack/eslint-plugin": "workspace:*", "@rushstack/eslint-plugin-packlets": "workspace:*", "@rushstack/eslint-plugin-security": "workspace:*", - "@typescript-eslint/eslint-plugin": "~8.56.1", - "@typescript-eslint/utils": "~8.56.1", - "@typescript-eslint/parser": "~8.56.1", - "@typescript-eslint/typescript-estree": "~8.56.1", - "eslint-plugin-promise": "~7.2.1", - "eslint-plugin-react": "~7.37.5", - "eslint-plugin-tsdoc": "~0.5.3" + "@typescript-eslint/eslint-plugin": "catalog:", + "@typescript-eslint/utils": "catalog:", + "@typescript-eslint/parser": "catalog:", + "@typescript-eslint/typescript-estree": "catalog:", + "eslint-plugin-promise": "catalog:", + "eslint-plugin-react": "catalog:", + "eslint-plugin-tsdoc": "catalog:" }, "devDependencies": { "@rushstack/heft": "1.3.4", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", - "typescript": "~5.8.2" + "eslint": "catalog:", + "typescript": "catalog:" }, "sideEffects": false } diff --git a/eslint/eslint-patch/package.json b/eslint/eslint-patch/package.json index 6de5bc0a918..ea3d0d5a5b4 100644 --- a/eslint/eslint-patch/package.json +++ b/eslint/eslint-patch/package.json @@ -74,12 +74,12 @@ "@rushstack/heft": "1.3.4", "@types/eslint-8": "npm:@types/eslint@8.56.10", "@types/eslint-9": "npm:@types/eslint@9.6.1", - "@typescript-eslint/types": "~8.56.1", + "@typescript-eslint/types": "catalog:", "decoupled-local-node-rig": "workspace:*", "eslint-8": "npm:eslint@~8.57.0", "eslint-9": "npm:eslint@~9.25.1", - "eslint": "~9.37.0", - "typescript": "~5.8.2" + "eslint": "catalog:", + "typescript": "catalog:" }, "sideEffects": [ "lib-esm/modern-module-resolution.js", diff --git a/eslint/eslint-plugin-packlets/package.json b/eslint/eslint-plugin-packlets/package.json index 00e56ab5ca7..e0bbe653772 100644 --- a/eslint/eslint-plugin-packlets/package.json +++ b/eslint/eslint-plugin-packlets/package.json @@ -51,17 +51,17 @@ }, "dependencies": { "@rushstack/tree-pattern": "workspace:*", - "@typescript-eslint/utils": "~8.56.1" + "@typescript-eslint/utils": "catalog:" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" }, "devDependencies": { "@rushstack/heft": "1.3.4", - "@typescript-eslint/parser": "~8.56.1", + "@typescript-eslint/parser": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", - "typescript": "~5.8.2" + "eslint": "catalog:", + "typescript": "catalog:" }, "sideEffects": false } diff --git a/eslint/eslint-plugin-security/package.json b/eslint/eslint-plugin-security/package.json index 5df8b75774c..5d2cd37415f 100644 --- a/eslint/eslint-plugin-security/package.json +++ b/eslint/eslint-plugin-security/package.json @@ -50,19 +50,19 @@ }, "dependencies": { "@rushstack/tree-pattern": "workspace:*", - "@typescript-eslint/utils": "~8.56.1" + "@typescript-eslint/utils": "catalog:" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" }, "devDependencies": { "@rushstack/heft": "1.3.4", - "@typescript-eslint/parser": "~8.56.1", - "@typescript-eslint/rule-tester": "~8.56.1", - "@typescript-eslint/typescript-estree": "~8.56.1", + "@typescript-eslint/parser": "catalog:", + "@typescript-eslint/rule-tester": "catalog:", + "@typescript-eslint/typescript-estree": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", - "typescript": "~5.8.2" + "eslint": "catalog:", + "typescript": "catalog:" }, "sideEffects": false } diff --git a/eslint/eslint-plugin/package.json b/eslint/eslint-plugin/package.json index 5cd93e87ddf..7f0bd4e5454 100644 --- a/eslint/eslint-plugin/package.json +++ b/eslint/eslint-plugin/package.json @@ -54,19 +54,19 @@ }, "dependencies": { "@rushstack/tree-pattern": "workspace:*", - "@typescript-eslint/utils": "~8.56.1" + "@typescript-eslint/utils": "catalog:" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" }, "devDependencies": { "@rushstack/heft": "1.3.4", - "@typescript-eslint/parser": "~8.56.1", - "@typescript-eslint/rule-tester": "~8.56.1", + "@typescript-eslint/parser": "catalog:", + "@typescript-eslint/rule-tester": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", - "typescript": "~5.8.2", - "@typescript-eslint/types": "~8.56.1" + "eslint": "catalog:", + "typescript": "catalog:", + "@typescript-eslint/types": "catalog:" }, "sideEffects": false } diff --git a/eslint/local-eslint-config/package.json b/eslint/local-eslint-config/package.json index 9019d7490fa..5de458d3102 100644 --- a/eslint/local-eslint-config/package.json +++ b/eslint/local-eslint-config/package.json @@ -12,8 +12,8 @@ "typescript": ">=4.7.0" }, "devDependencies": { - "eslint": "~9.37.0", - "typescript": "~5.8.2", + "eslint": "catalog:", + "typescript": "catalog:", "@rushstack/heft": "1.3.4", "decoupled-local-node-rig": "workspace:*" }, @@ -21,13 +21,13 @@ "@rushstack/eslint-config": "workspace:*", "@rushstack/eslint-patch": "workspace:*", "@rushstack/eslint-plugin": "workspace:*", - "@typescript-eslint/eslint-plugin": "~8.56.1", - "@typescript-eslint/parser": "~8.56.1", - "eslint-import-resolver-node": "0.3.9", - "eslint-plugin-header": "~3.1.1", - "eslint-plugin-headers": "~1.2.1", - "eslint-plugin-import": "2.32.0", - "eslint-plugin-jsdoc": "50.6.11", - "eslint-plugin-react-hooks": "5.2.0" + "@typescript-eslint/eslint-plugin": "catalog:", + "@typescript-eslint/parser": "catalog:", + "eslint-import-resolver-node": "catalog:", + "eslint-plugin-header": "catalog:", + "eslint-plugin-headers": "catalog:", + "eslint-plugin-import": "catalog:", + "eslint-plugin-jsdoc": "catalog:", + "eslint-plugin-react-hooks": "catalog:" } } diff --git a/heft-plugins/heft-api-extractor-plugin/package.json b/heft-plugins/heft-api-extractor-plugin/package.json index 96e5317851d..b2986895055 100644 --- a/heft-plugins/heft-api-extractor-plugin/package.json +++ b/heft-plugins/heft-api-extractor-plugin/package.json @@ -23,15 +23,15 @@ }, "dependencies": { "@rushstack/node-core-library": "workspace:*", - "semver": "~7.7.4" + "semver": "catalog:" }, "devDependencies": { "@microsoft/api-extractor": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/semver": "7.7.1", + "@types/semver": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "exports": { "./lib/*.schema.json": "./lib-commonjs/*.schema.json", diff --git a/heft-plugins/heft-dev-cert-plugin/package.json b/heft-plugins/heft-dev-cert-plugin/package.json index dcb0a9b24d0..0f31e189d07 100644 --- a/heft-plugins/heft-dev-cert-plugin/package.json +++ b/heft-plugins/heft-dev-cert-plugin/package.json @@ -28,7 +28,7 @@ "devDependencies": { "@microsoft/api-extractor": "workspace:*", "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/heft-plugins/heft-isolated-typescript-transpile-plugin/package.json b/heft-plugins/heft-isolated-typescript-transpile-plugin/package.json index a1f541a0ab9..2256ac1177a 100644 --- a/heft-plugins/heft-isolated-typescript-transpile-plugin/package.json +++ b/heft-plugins/heft-isolated-typescript-transpile-plugin/package.json @@ -53,14 +53,14 @@ "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "dependencies": { "@rushstack/lookup-by-path": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "@swc/core": "1.7.10", - "@types/tapable": "1.0.6", + "@swc/core": "catalog:", + "@types/tapable": "catalog:", "tapable": "1.1.3" }, "sideEffects": false diff --git a/heft-plugins/heft-jest-plugin/package.json b/heft-plugins/heft-jest-plugin/package.json index 5e03380fd56..ed1c7ef2eac 100644 --- a/heft-plugins/heft-jest-plugin/package.json +++ b/heft-plugins/heft-jest-plugin/package.json @@ -37,25 +37,25 @@ } }, "dependencies": { - "@jest/core": "~30.3.0", - "@jest/reporters": "~30.3.0", - "@jest/transform": "~30.3.0", + "@jest/core": "catalog:", + "@jest/reporters": "catalog:", + "@jest/transform": "catalog:", "@rushstack/heft-config-file": "workspace:*", "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", - "jest-config": "~30.3.0", - "jest-resolve": "~30.3.0", - "jest-snapshot": "~30.3.0" + "jest-config": "catalog:", + "jest-resolve": "catalog:", + "jest-snapshot": "catalog:" }, "devDependencies": { - "@jest/types": "30.3.0", + "@jest/types": "catalog:", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", - "jest-environment-jsdom": "~30.3.0", - "jest-environment-node": "~30.3.0", - "jest-watch-select-projects": "2.0.0" + "eslint": "catalog:", + "jest-environment-jsdom": "catalog:", + "jest-environment-node": "catalog:", + "jest-watch-select-projects": "catalog:" }, "exports": { "./includes/*.json": "./includes/*.json", diff --git a/heft-plugins/heft-json-schema-typings-plugin/package.json b/heft-plugins/heft-json-schema-typings-plugin/package.json index f732a5db373..e9631136eca 100644 --- a/heft-plugins/heft-json-schema-typings-plugin/package.json +++ b/heft-plugins/heft-json-schema-typings-plugin/package.json @@ -25,12 +25,12 @@ "dependencies": { "@rushstack/node-core-library": "workspace:*", "@rushstack/typings-generator": "workspace:*", - "json-schema-to-typescript": "~15.0.4" + "json-schema-to-typescript": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/heft-plugins/heft-lint-plugin/package.json b/heft-plugins/heft-lint-plugin/package.json index d1e6dbacfa9..4d5a375ba6a 100644 --- a/heft-plugins/heft-lint-plugin/package.json +++ b/heft-plugins/heft-lint-plugin/package.json @@ -24,22 +24,22 @@ }, "dependencies": { "@rushstack/node-core-library": "workspace:*", - "json-stable-stringify-without-jsonify": "1.0.1", - "semver": "~7.7.4" + "json-stable-stringify-without-jsonify": "catalog:", + "semver": "catalog:" }, "devDependencies": { "@rushstack/heft-typescript-plugin": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/eslint": "9.6.1", + "@types/eslint": "catalog:", "@types/eslint-8": "npm:@types/eslint@8.56.10", - "@types/json-stable-stringify-without-jsonify": "1.0.2", - "@types/semver": "7.7.1", + "@types/json-stable-stringify-without-jsonify": "catalog:", + "@types/semver": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "eslint-8": "npm:eslint@~8.57.0", - "typescript": "~5.8.2", - "tslint": "~5.20.1" + "typescript": "catalog:", + "tslint": "catalog:" }, "exports": { "./lib/*.schema.json": "./lib-commonjs/*.schema.json", diff --git a/heft-plugins/heft-localization-typings-plugin/package.json b/heft-plugins/heft-localization-typings-plugin/package.json index fa1b7460857..ddba116f0a8 100644 --- a/heft-plugins/heft-localization-typings-plugin/package.json +++ b/heft-plugins/heft-localization-typings-plugin/package.json @@ -24,7 +24,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "dependencies": { diff --git a/heft-plugins/heft-rspack-plugin/package.json b/heft-plugins/heft-rspack-plugin/package.json index 71ddb7a3de4..1f8809ee0b2 100644 --- a/heft-plugins/heft-rspack-plugin/package.json +++ b/heft-plugins/heft-rspack-plugin/package.json @@ -53,18 +53,18 @@ "dependencies": { "@rushstack/debug-certificate-manager": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "tapable": "2.3.0", - "@rspack/dev-server": "^1.1.4", - "watchpack": "2.4.0", - "webpack": "~5.105.2" + "tapable": "catalog:", + "@rspack/dev-server": "catalog:", + "watchpack": "catalog:", + "webpack": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/watchpack": "2.4.0", - "eslint": "~9.37.0", + "@types/watchpack": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "@rspack/core": "~1.6.0-beta.0" + "@rspack/core": "catalog:" }, "sideEffects": false } diff --git a/heft-plugins/heft-sass-load-themed-styles-plugin/package.json b/heft-plugins/heft-sass-load-themed-styles-plugin/package.json index f8adddc3461..bd09add307a 100644 --- a/heft-plugins/heft-sass-load-themed-styles-plugin/package.json +++ b/heft-plugins/heft-sass-load-themed-styles-plugin/package.json @@ -29,7 +29,7 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-sass-plugin": "workspace:*", "local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "exports": { "./lib/*": { diff --git a/heft-plugins/heft-sass-plugin/package.json b/heft-plugins/heft-sass-plugin/package.json index 431eb715d24..538fae504f3 100644 --- a/heft-plugins/heft-sass-plugin/package.json +++ b/heft-plugins/heft-sass-plugin/package.json @@ -51,18 +51,18 @@ }, "dependencies": { "@rushstack/node-core-library": "workspace:*", - "@types/tapable": "1.0.6", - "postcss": "~8.5.10", - "postcss-modules": "~6.0.0", - "sass-embedded": "~1.85.1", + "@types/tapable": "catalog:", + "postcss": "catalog:", + "postcss-modules": "catalog:", + "sass-embedded": "catalog:", "tapable": "1.1.3", - "resolve-pkg-maps": "~1.0.0" + "resolve-pkg-maps": "catalog:" }, "devDependencies": { "@microsoft/api-extractor": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/heft-plugins/heft-serverless-stack-plugin/package.json b/heft-plugins/heft-serverless-stack-plugin/package.json index c334ae3238b..0bb4dfef9f1 100644 --- a/heft-plugins/heft-serverless-stack-plugin/package.json +++ b/heft-plugins/heft-serverless-stack-plugin/package.json @@ -28,7 +28,7 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-webpack4-plugin": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/heft-plugins/heft-static-asset-typings-plugin/package.json b/heft-plugins/heft-static-asset-typings-plugin/package.json index 24255a981f1..ec0451711df 100644 --- a/heft-plugins/heft-static-asset-typings-plugin/package.json +++ b/heft-plugins/heft-static-asset-typings-plugin/package.json @@ -48,7 +48,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" } } diff --git a/heft-plugins/heft-storybook-plugin/package.json b/heft-plugins/heft-storybook-plugin/package.json index 39b01f54a35..9c6f848c554 100644 --- a/heft-plugins/heft-storybook-plugin/package.json +++ b/heft-plugins/heft-storybook-plugin/package.json @@ -30,7 +30,7 @@ "@rushstack/heft": "workspace:*", "@rushstack/heft-webpack4-plugin": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", "@rushstack/heft-rspack-plugin": "workspace:*" }, diff --git a/heft-plugins/heft-typescript-plugin/package.json b/heft-plugins/heft-typescript-plugin/package.json index 24287d2791f..8b470b72132 100644 --- a/heft-plugins/heft-typescript-plugin/package.json +++ b/heft-plugins/heft-typescript-plugin/package.json @@ -52,17 +52,17 @@ "dependencies": { "@rushstack/node-core-library": "workspace:*", "@rushstack/heft-config-file": "workspace:*", - "@types/tapable": "1.0.6", - "semver": "~7.7.4", + "@types/tapable": "catalog:", + "semver": "catalog:", "tapable": "1.1.3" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/semver": "7.7.1", + "@types/semver": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", - "typescript": "~5.8.2" + "eslint": "catalog:", + "typescript": "catalog:" }, "sideEffects": false } diff --git a/heft-plugins/heft-vscode-extension-plugin/package.json b/heft-plugins/heft-vscode-extension-plugin/package.json index 657a00905a8..40d6be6cfce 100644 --- a/heft-plugins/heft-vscode-extension-plugin/package.json +++ b/heft-plugins/heft-vscode-extension-plugin/package.json @@ -42,11 +42,11 @@ "dependencies": { "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", - "@vscode/vsce": "3.2.1" + "@vscode/vsce": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/heft-plugins/heft-webpack4-plugin/package.json b/heft-plugins/heft-webpack4-plugin/package.json index f97adee1a12..90a2d089111 100644 --- a/heft-plugins/heft-webpack4-plugin/package.json +++ b/heft-plugins/heft-webpack4-plugin/package.json @@ -59,17 +59,17 @@ "dependencies": { "@rushstack/debug-certificate-manager": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "@types/tapable": "1.0.6", + "@types/tapable": "catalog:", "tapable": "1.1.3", - "watchpack": "2.4.0", + "watchpack": "catalog:", "webpack-dev-server": "~4.9.3" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/watchpack": "2.4.0", - "@types/webpack": "4.41.32", - "eslint": "~9.37.0", + "@types/watchpack": "catalog:", + "@types/webpack": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", "webpack": "~4.47.0" }, diff --git a/heft-plugins/heft-webpack5-plugin/package.json b/heft-plugins/heft-webpack5-plugin/package.json index 129a04cf163..beb4ab3fb8e 100644 --- a/heft-plugins/heft-webpack5-plugin/package.json +++ b/heft-plugins/heft-webpack5-plugin/package.json @@ -53,18 +53,18 @@ "dependencies": { "@rushstack/debug-certificate-manager": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "@types/tapable": "1.0.6", + "@types/tapable": "catalog:", "tapable": "1.1.3", - "watchpack": "2.4.0", - "webpack-dev-server": "^5.1.0" + "watchpack": "catalog:", + "webpack-dev-server": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/watchpack": "2.4.0", - "eslint": "~9.37.0", + "@types/watchpack": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "webpack": "~5.105.2" + "webpack": "catalog:" }, "sideEffects": false } diff --git a/libraries/api-extractor-model/package.json b/libraries/api-extractor-model/package.json index d4b2a528725..314dfa1a1d8 100644 --- a/libraries/api-extractor-model/package.json +++ b/libraries/api-extractor-model/package.json @@ -44,14 +44,14 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "@microsoft/tsdoc": "~0.17.0", - "@microsoft/tsdoc-config": "~0.18.2", + "@microsoft/tsdoc": "catalog:", + "@microsoft/tsdoc-config": "catalog:", "@rushstack/node-core-library": "workspace:*" }, "devDependencies": { "@rushstack/heft": "1.3.4", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "sideEffects": false } diff --git a/libraries/credential-cache/package.json b/libraries/credential-cache/package.json index 4f570b2982d..419b97e4898 100644 --- a/libraries/credential-cache/package.json +++ b/libraries/credential-cache/package.json @@ -48,7 +48,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/libraries/debug-certificate-manager/package.json b/libraries/debug-certificate-manager/package.json index 6416c0c9b3a..6791eb27909 100644 --- a/libraries/debug-certificate-manager/package.json +++ b/libraries/debug-certificate-manager/package.json @@ -44,12 +44,12 @@ "dependencies": { "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", - "node-forge": "~1.4.0" + "node-forge": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/node-forge": "1.3.14", - "eslint": "~9.37.0", + "@types/node-forge": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/libraries/heft-config-file/package.json b/libraries/heft-config-file/package.json index 9ae826fc368..8af24d0f6da 100644 --- a/libraries/heft-config-file/package.json +++ b/libraries/heft-config-file/package.json @@ -48,12 +48,12 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/rig-package": "workspace:*", "@rushstack/terminal": "workspace:*", - "jsonpath-plus": "~10.3.0" + "jsonpath-plus": "catalog:" }, "devDependencies": { "@rushstack/heft": "1.3.4", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "sideEffects": false } diff --git a/libraries/load-themed-styles/package.json b/libraries/load-themed-styles/package.json index 7c3babca178..7b36aef91be 100644 --- a/libraries/load-themed-styles/package.json +++ b/libraries/load-themed-styles/package.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-web-rig": "workspace:*" }, "sideEffects": false diff --git a/libraries/localization-utilities/package.json b/libraries/localization-utilities/package.json index 48bf3f34318..9a3401f0131 100644 --- a/libraries/localization-utilities/package.json +++ b/libraries/localization-utilities/package.json @@ -47,13 +47,13 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/typings-generator": "workspace:*", - "pseudolocale": "~1.1.0", - "xmldoc": "~1.1.2" + "pseudolocale": "catalog:", + "xmldoc": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/xmldoc": "1.1.4", - "eslint": "~9.37.0", + "@types/xmldoc": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/libraries/lookup-by-path/package.json b/libraries/lookup-by-path/package.json index d04c96800da..3b7b97d599c 100644 --- a/libraries/lookup-by-path/package.json +++ b/libraries/lookup-by-path/package.json @@ -51,7 +51,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "peerDependencies": { diff --git a/libraries/module-minifier/package.json b/libraries/module-minifier/package.json index b07d28dc638..13a0ceaa3d9 100644 --- a/libraries/module-minifier/package.json +++ b/libraries/module-minifier/package.json @@ -44,15 +44,15 @@ }, "dependencies": { "@rushstack/worker-pool": "workspace:*", - "serialize-javascript": "~7.1.3", - "source-map": "~0.7.3", - "terser": "^5.9.0" + "serialize-javascript": "catalog:", + "source-map": "catalog:", + "terser": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", - "@types/serialize-javascript": "5.0.4", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "@types/serialize-javascript": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "peerDependencies": { diff --git a/libraries/node-core-library/package.json b/libraries/node-core-library/package.json index 7e8c5b10b13..1e5ea7c416a 100644 --- a/libraries/node-core-library/package.json +++ b/libraries/node-core-library/package.json @@ -43,24 +43,24 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "fs-extra": "~11.3.0", - "import-lazy": "~4.0.0", - "jju": "~1.4.0", - "resolve": "~1.22.1", - "semver": "~7.7.4", - "ajv": "~8.20.0", - "ajv-draft-04": "~1.0.0", - "ajv-formats": "~3.0.1" + "fs-extra": "catalog:", + "import-lazy": "catalog:", + "jju": "catalog:", + "resolve": "catalog:", + "semver": "catalog:", + "ajv": "catalog:", + "ajv-draft-04": "catalog:", + "ajv-formats": "catalog:" }, "devDependencies": { "@rushstack/heft": "1.3.4", "@rushstack/problem-matcher": "workspace:*", - "@types/fs-extra": "7.0.0", - "@types/jju": "1.4.1", - "@types/resolve": "1.20.2", - "@types/semver": "7.7.1", + "@types/fs-extra": "catalog:", + "@types/jju": "catalog:", + "@types/resolve": "catalog:", + "@types/semver": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "peerDependencies": { "@types/node": "*" diff --git a/libraries/npm-check-fork/package.json b/libraries/npm-check-fork/package.json index 9a297c24d3c..0ae6044a694 100644 --- a/libraries/npm-check-fork/package.json +++ b/libraries/npm-check-fork/package.json @@ -45,14 +45,14 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "semver": "~7.7.4", + "semver": "catalog:", "@rushstack/node-core-library": "workspace:*" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/semver": "7.7.1", + "@types/semver": "catalog:", "local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "sideEffects": false } diff --git a/libraries/npm-check-fork/src/NpmCheckState.ts b/libraries/npm-check-fork/src/NpmCheckState.ts index ebcbdb7de86..ef4282e689d 100644 --- a/libraries/npm-check-fork/src/NpmCheckState.ts +++ b/libraries/npm-check-fork/src/NpmCheckState.ts @@ -8,12 +8,15 @@ import { import readPackageJson from './ReadPackageJson'; export default async function initializeState(initialOptions?: INpmCheckState): Promise { - const state: INpmCheckState = Object.assign(DefaultNpmCheckOptions, initialOptions ?? {}); + const state: INpmCheckState = { ...DefaultNpmCheckOptions, ...initialOptions }; if (state.cwd) { const cwd: string = path.resolve(state.cwd); - const pkg: INpmCheckPackageJson = readPackageJson(path.join(cwd, 'package.json')); - state.cwdPackageJson = pkg; + if (!initialOptions?.cwdPackageJson) { + const pkg: INpmCheckPackageJson = readPackageJson(path.join(cwd, 'package.json')); + state.cwdPackageJson = pkg; + } + state.cwd = cwd; } diff --git a/libraries/npm-check-fork/src/interfaces/INpmCheck.ts b/libraries/npm-check-fork/src/interfaces/INpmCheck.ts index 77f2d2172f7..ddf3454d994 100644 --- a/libraries/npm-check-fork/src/interfaces/INpmCheck.ts +++ b/libraries/npm-check-fork/src/interfaces/INpmCheck.ts @@ -13,6 +13,14 @@ export interface INpmCheckPackageJson { export interface INpmCheckState { cwd: string; + /** + * The package.json contents of the project to check. If this is not provided, it is read from + * the package.json file in `cwd`. + * + * @remarks + * Provide this to check dependency version specifiers that differ from the package.json file, for example + * after resolving references such as PNPM's `catalog:` protocol to the versions that they refer to. + */ cwdPackageJson?: INpmCheckPackageJson; packages?: INpmCheckPackageSummary[]; } diff --git a/libraries/npm-check-fork/src/tests/NpmCheckState.test.ts b/libraries/npm-check-fork/src/tests/NpmCheckState.test.ts index 68ad0d0ff3f..aeff7f4ddf7 100644 --- a/libraries/npm-check-fork/src/tests/NpmCheckState.test.ts +++ b/libraries/npm-check-fork/src/tests/NpmCheckState.test.ts @@ -1,4 +1,4 @@ -import type { INpmCheckState } from '../interfaces/INpmCheck'; +import type { INpmCheckPackageJson, INpmCheckState } from '../interfaces/INpmCheck'; import initializeState from '../NpmCheckState'; describe('NpmCheckState', () => { @@ -9,4 +9,20 @@ describe('NpmCheckState', () => { expect(state.cwdPackageJson).toHaveProperty('name'); expect(state.cwdPackageJson).toHaveProperty('version'); }); + + it('should use the provided package.json instead of reading it from cwd', async () => { + const cwdPackageJson: INpmCheckPackageJson = { + name: 'provided-package', + version: '1.2.3', + dependencies: { 'example-dependency': '^1.0.0' }, + devDependencies: {} + }; + const state: INpmCheckState = await initializeState({ cwd: process.cwd(), cwdPackageJson }); + expect(state.cwd).toBe(process.cwd()); + expect(state.cwdPackageJson).toBe(cwdPackageJson); + + // The provided package.json must not leak into later calls + const laterState: INpmCheckState = await initializeState({ cwd: process.cwd() }); + expect(laterState.cwdPackageJson?.name).toBe('@rushstack/npm-check-fork'); + }); }); diff --git a/libraries/operation-graph/package.json b/libraries/operation-graph/package.json index 1487d401fd1..4b5dbb987f5 100644 --- a/libraries/operation-graph/package.json +++ b/libraries/operation-graph/package.json @@ -49,7 +49,7 @@ "devDependencies": { "@rushstack/heft": "1.3.4", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "peerDependencies": { "@types/node": "*" diff --git a/libraries/package-deps-hash/package.json b/libraries/package-deps-hash/package.json index 5ef9aff8054..51d8013de54 100644 --- a/libraries/package-deps-hash/package.json +++ b/libraries/package-deps-hash/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "dependencies": { diff --git a/libraries/package-extractor/package.json b/libraries/package-extractor/package.json index f97cc65345c..cac2485aec0 100644 --- a/libraries/package-extractor/package.json +++ b/libraries/package-extractor/package.json @@ -44,26 +44,26 @@ }, "license": "MIT", "dependencies": { - "@pnpm/link-bins": "~5.3.7", + "@pnpm/link-bins": "catalog:", "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "ignore": "~5.1.6", - "jszip": "~3.8.0", - "minimatch": "10.2.3", - "npm-packlist": "~5.1.3", - "semver": "~7.7.4" + "ignore": "catalog:", + "jszip": "catalog:", + "minimatch": "catalog:", + "npm-packlist": "catalog:", + "semver": "catalog:" }, "devDependencies": { "local-node-rig": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/webpack-preserve-dynamic-require-plugin": "workspace:*", - "@types/glob": "7.1.1", - "@types/npm-packlist": "~1.1.1", - "eslint": "~9.37.0", - "webpack": "~5.105.2", - "@types/semver": "7.7.1" + "@types/glob": "catalog:", + "@types/npm-packlist": "catalog:", + "eslint": "catalog:", + "webpack": "catalog:", + "@types/semver": "catalog:" }, "sideEffects": false } diff --git a/libraries/problem-matcher/package.json b/libraries/problem-matcher/package.json index c939012a5b6..70b56351b95 100644 --- a/libraries/problem-matcher/package.json +++ b/libraries/problem-matcher/package.json @@ -45,7 +45,7 @@ "devDependencies": { "@rushstack/heft": "1.3.4", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "peerDependencies": { "@types/node": "*" diff --git a/libraries/reporter/package.json b/libraries/reporter/package.json index 0af1bca14a2..aebb543d962 100644 --- a/libraries/reporter/package.json +++ b/libraries/reporter/package.json @@ -51,10 +51,10 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "@types/semver": "7.7.1", - "typescript": "~5.8.2" + "@types/semver": "catalog:", + "typescript": "catalog:" }, "peerDependencies": { "@types/node": "*" @@ -66,6 +66,6 @@ }, "sideEffects": false, "dependencies": { - "semver": "~7.7.4" + "semver": "catalog:" } } diff --git a/libraries/rig-package/package.json b/libraries/rig-package/package.json index fd6ddc78ccc..c71d4583b42 100644 --- a/libraries/rig-package/package.json +++ b/libraries/rig-package/package.json @@ -44,17 +44,17 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "jju": "~1.4.0", - "resolve": "~1.22.1" + "jju": "catalog:", + "resolve": "catalog:" }, "devDependencies": { "@rushstack/heft": "1.3.4", - "@types/jju": "1.4.1", - "@types/resolve": "1.20.2", - "ajv": "~8.20.0", + "@types/jju": "catalog:", + "@types/resolve": "catalog:", + "ajv": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0", - "resolve": "~1.22.1" + "eslint": "catalog:", + "resolve": "catalog:" }, "sideEffects": false } diff --git a/libraries/rush-client-core/package.json b/libraries/rush-client-core/package.json index 00c6cb82778..ad350e67f4e 100644 --- a/libraries/rush-client-core/package.json +++ b/libraries/rush-client-core/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "peerDependencies": { diff --git a/libraries/rush-daemon-protocol/package.json b/libraries/rush-daemon-protocol/package.json index 5d290811608..556e346d6f8 100644 --- a/libraries/rush-daemon-protocol/package.json +++ b/libraries/rush-daemon-protocol/package.json @@ -52,7 +52,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/libraries/rush-daemon-transport/package.json b/libraries/rush-daemon-transport/package.json index e84772305a1..1682026de86 100644 --- a/libraries/rush-daemon-transport/package.json +++ b/libraries/rush-daemon-transport/package.json @@ -55,7 +55,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "peerDependencies": { diff --git a/libraries/rush-daemon/package.json b/libraries/rush-daemon/package.json index 08204dfae9e..e635f1a23ad 100644 --- a/libraries/rush-daemon/package.json +++ b/libraries/rush-daemon/package.json @@ -59,7 +59,7 @@ "@rushstack/rush-amazon-s3-build-cache-plugin": "workspace:*", "@rushstack/rush-azure-storage-build-cache-plugin": "workspace:*", "@rushstack/rush-http-build-cache-plugin": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "peerDependencies": { diff --git a/libraries/rush-daemon/src/test/SuccessfulMutationFixture.ts b/libraries/rush-daemon/src/test/SuccessfulMutationFixture.ts index 76e77f0e11d..bd9bde0cc25 100644 --- a/libraries/rush-daemon/src/test/SuccessfulMutationFixture.ts +++ b/libraries/rush-daemon/src/test/SuccessfulMutationFixture.ts @@ -153,11 +153,15 @@ export class SuccessfulMutationFixture implements AsyncDisposable { recursive: true, verbatimSymlinks: true }); - const actualVersion: string = execFileSync( - process.execPath, - [path.join(tool, 'node_modules/pnpm/bin/pnpm.cjs'), '--version'], - { env: fixture.environment, encoding: 'utf8' } - ).trim(); + // PNPM 11 and newer replace bin/pnpm.cjs with bin/pnpm.mjs, which launches the native executable. + const pnpmBinFolder: string = path.join(tool, 'node_modules/pnpm/bin'); + const pnpmEntryPoint: string = fs.existsSync(path.join(pnpmBinFolder, 'pnpm.cjs')) + ? path.join(pnpmBinFolder, 'pnpm.cjs') + : path.join(pnpmBinFolder, 'pnpm.mjs'); + const actualVersion: string = execFileSync(process.execPath, [pnpmEntryPoint, '--version'], { + env: fixture.environment, + encoding: 'utf8' + }).trim(); if (actualVersion !== packageJson.version) throw new Error('The copied PNPM executable has an unexpected version.'); await new LastInstallFlag(tool, { node: process.versions.node }).createAsync(); diff --git a/libraries/rush-lib/package.json b/libraries/rush-lib/package.json index 7881cde11f4..a43bb6dfc88 100644 --- a/libraries/rush-lib/package.json +++ b/libraries/rush-lib/package.json @@ -42,7 +42,7 @@ }, "license": "MIT", "dependencies": { - "@pnpm/link-bins": "~5.3.7", + "@pnpm/link-bins": "catalog:", "@rushstack/credential-cache": "workspace:*", "@rushstack/heft-config-file": "workspace:*", "@rushstack/lookup-by-path": "workspace:*", @@ -58,30 +58,30 @@ "@rushstack/stream-collator": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "@yarnpkg/lockfile": "~1.0.2", - "dependency-path": "~9.2.8", - "dotenv": "~16.4.7", - "fast-glob": "~3.3.1", - "git-repo-info": "~2.1.0", - "https-proxy-agent": "~5.0.0", - "ignore": "~5.1.6", - "@inquirer/checkbox": "~5.1.3", - "@inquirer/confirm": "~6.0.11", - "@inquirer/input": "~5.0.11", - "@inquirer/search": "~4.1.7", - "@inquirer/select": "~5.1.3", - "js-yaml": "~4.3.2", - "npm-package-arg": "~6.1.0", - "object-hash": "3.0.0", - "pnpm-sync-lib": "0.3.4", - "read-package-tree": "~5.1.5", - "rxjs": "~6.6.7", - "semver": "~7.7.4", - "ssri": "~8.0.0", - "strict-uri-encode": "~2.0.0", + "@yarnpkg/lockfile": "catalog:", + "dependency-path": "catalog:", + "dotenv": "catalog:", + "fast-glob": "catalog:", + "git-repo-info": "catalog:", + "https-proxy-agent": "catalog:", + "ignore": "catalog:", + "@inquirer/checkbox": "catalog:", + "@inquirer/confirm": "catalog:", + "@inquirer/input": "catalog:", + "@inquirer/search": "catalog:", + "@inquirer/select": "catalog:", + "js-yaml": "catalog:", + "npm-package-arg": "catalog:", + "object-hash": "catalog:", + "pnpm-sync-lib": "catalog:", + "read-package-tree": "catalog:", + "rxjs": "catalog:", + "semver": "catalog:", + "ssri": "catalog:", + "strict-uri-encode": "catalog:", "tapable": "2.2.1", - "tar": "~7.5.6", - "true-case-path": "~2.2.1" + "tar": "catalog:", + "true-case-path": "catalog:" }, "devDependencies": { "@pnpm/lockfile.types-900": "npm:@pnpm/lockfile.types@~900.0.0", @@ -90,17 +90,17 @@ "@rushstack/operation-graph": "workspace:*", "@rushstack/webpack-deep-imports-plugin": "workspace:*", "@rushstack/webpack-preserve-dynamic-require-plugin": "workspace:*", - "@types/js-yaml": "4.0.9", - "@types/npm-package-arg": "6.1.0", - "@types/object-hash": "~3.0.6", - "@types/read-package-tree": "5.1.0", - "@types/semver": "7.7.1", - "@types/ssri": "~7.1.0", - "@types/strict-uri-encode": "2.0.0", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/js-yaml": "catalog:", + "@types/npm-package-arg": "catalog:", + "@types/object-hash": "catalog:", + "@types/read-package-tree": "catalog:", + "@types/semver": "catalog:", + "@types/ssri": "catalog:", + "@types/strict-uri-encode": "catalog:", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "webpack": "~5.105.2" + "webpack": "catalog:" }, "publishOnlyDependencies": { "@rushstack/rush-amazon-s3-build-cache-plugin": "workspace:*", diff --git a/libraries/rush-lib/src/api/RushConfiguration.ts b/libraries/rush-lib/src/api/RushConfiguration.ts index 2d2408a9eb5..7773b1d8b38 100644 --- a/libraries/rush-lib/src/api/RushConfiguration.ts +++ b/libraries/rush-lib/src/api/RushConfiguration.ts @@ -1378,6 +1378,11 @@ export class RushConfiguration { /** * Returns a map of all direct dependencies that only have a single semantic version specifier. * + * @remarks + * PNPM catalog references (such as `catalog:` or `catalog:tools`) are resolved to the version specifier + * from the catalog that is in effect for the subspace of the project that declares the dependency. + * Catalog references that don't resolve to a catalog entry are ignored. + * * @param subspace - The subspace to use * @param variant - The name of the current variant in use by the active command. * diff --git a/libraries/rush-lib/src/api/Subspace.ts b/libraries/rush-lib/src/api/Subspace.ts index 0f9583f9f7f..5353f6b8498 100644 --- a/libraries/rush-lib/src/api/Subspace.ts +++ b/libraries/rush-lib/src/api/Subspace.ts @@ -15,6 +15,8 @@ import { CommonVersionsConfiguration } from './CommonVersionsConfiguration'; import { RepoStateFile } from '../logic/RepoStateFile'; import type { PnpmPackageManager } from './packageManager/PnpmPackageManager'; import { PnpmOptionsConfiguration } from '../logic/pnpm/PnpmOptionsConfiguration'; +import { getEffectivePnpmCatalogs, type PnpmCatalogs } from '../logic/pnpm/EffectivePnpmOptions'; +import { tryGetPnpmCatalogVersion, tryParsePnpmCatalogName } from '../logic/pnpm/PnpmCatalogReference'; import { SubspacePnpmfileConfiguration } from '../logic/pnpm/SubspacePnpmfileConfiguration'; import type { ISubspacePnpmfileShimSettings } from '../logic/pnpm/IPnpmfile'; @@ -413,25 +415,22 @@ export class Subspace { /** * Computes a hash of the PNPM catalog definitions for this subspace. * Returns undefined if no catalogs are defined. + * + * @remarks + * The catalogs are read from the pnpm-config.json that install uses for this subspace: the subspace's + * own pnpm-config.json if it exists, otherwise `common/config/rush/pnpm-config.json`. */ public getPnpmCatalogsHash(): string | undefined { - const pnpmOptions: PnpmOptionsConfiguration | undefined = this.getPnpmOptions(); - if (!pnpmOptions) { - return undefined; - } - - const catalogData: Record = {}; - if (pnpmOptions.globalCatalogs && Object.keys(pnpmOptions.globalCatalogs).length !== 0) { - Object.assign(catalogData, pnpmOptions.globalCatalogs); - } - - // If no catalogs are defined, return undefined - if (Object.keys(catalogData).length === 0) { + const catalogs: Record> | undefined = getEffectivePnpmCatalogs( + this, + this.#rushConfiguration + ); + if (!catalogs) { return undefined; } const hash: crypto.Hash = crypto.createHash('sha1'); - hash.update(JSON.stringify(catalogData)); + hash.update(JSON.stringify(catalogs)); return hash.digest('hex'); } @@ -471,6 +470,27 @@ export class Subspace { this.#rushConfiguration.projects.map((rushProject) => rushProject.packageName) ); + const catalogsBySubspaceName: Map = new Map(); + const getOtherSubspaceCatalogs: (rushProject: RushConfigurationProject) => PnpmCatalogs | undefined = ( + rushProject: RushConfigurationProject + ) => { + // PNPM resolves the catalog references of this subspace's own projects, and the subspace pnpmfile + // shim resolves the references of projects from other subspaces using that subspace's catalogs. + if (this.contains(rushProject)) { + return undefined; + } + + const { subspace } = rushProject; + if (!catalogsBySubspaceName.has(subspace.subspaceName)) { + catalogsBySubspaceName.set( + subspace.subspaceName, + getEffectivePnpmCatalogs(subspace, this.#rushConfiguration) + ); + } + + return catalogsBySubspaceName.get(subspace.subspaceName); + }; + // get all related package.json while (relatedProjects.length > 0) { const rushProject: RushConfigurationProject = relatedProjects.pop()!; @@ -496,12 +516,15 @@ export class Subspace { } } + // A catalog reference in a project from another subspace is installed as the version from that + // subspace's catalog, so hash the resolved version to detect changes to the catalog entry. + const catalogs: PnpmCatalogs | undefined = getOtherSubspaceCatalogs(rushProject); allPackageJson.push({ name, bin, - dependencies, - peerDependencies, - optionalDependencies, + dependencies: _resolveCatalogReferences(dependencies, catalogs), + peerDependencies: _resolveCatalogReferences(peerDependencies, catalogs), + optionalDependencies: _resolveCatalogReferences(optionalDependencies, catalogs), dependenciesMeta, peerDependenciesMeta, resolutions @@ -522,3 +545,33 @@ export class Subspace { return packageJsonInjectedDependenciesHash; } } + +/** + * Returns a copy of the dependencies with the PNPM catalog references replaced by the versions from the + * catalogs, or the original object if it has no references that can be resolved. + */ +function _resolveCatalogReferences( + dependencies: Record | undefined, + catalogs: PnpmCatalogs | undefined +): Record | undefined { + if (!dependencies || !catalogs) { + return dependencies; + } + + let result: Record | undefined; + for (const [dependencyName, versionSpecifier] of Object.entries(dependencies)) { + const catalogName: string | undefined = tryParsePnpmCatalogName(versionSpecifier); + if (catalogName !== undefined) { + const catalogVersion: string | undefined = tryGetPnpmCatalogVersion( + catalogs, + catalogName, + dependencyName + ); + if (catalogVersion !== undefined) { + (result ??= { ...dependencies })[dependencyName] = catalogVersion; + } + } + } + + return result ?? dependencies; +} diff --git a/libraries/rush-lib/src/api/test/Subspace.test.ts b/libraries/rush-lib/src/api/test/Subspace.test.ts index 4087b2b9716..691951531fd 100644 --- a/libraries/rush-lib/src/api/test/Subspace.test.ts +++ b/libraries/rush-lib/src/api/test/Subspace.test.ts @@ -1,8 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. +import * as crypto from 'node:crypto'; import * as path from 'node:path'; +import type { IPackageJson } from '@rushstack/node-core-library'; + import { RushConfiguration } from '../RushConfiguration'; import { Subspace } from '../Subspace'; @@ -73,6 +76,35 @@ describe(Subspace.name, () => { expect(hashWithoutCatalogs).toBeUndefined(); expect(hashWithCatalogs).toBeDefined(); }); + + it('hashes the common catalogs when a subspace has no pnpm-config.json of its own', () => { + const rushJsonFilename: string = path.resolve( + __dirname, + '../../logic/test/repoWithSubspacesCommonCatalogs/rush.json' + ); + const rushConfiguration: RushConfiguration = + RushConfiguration.loadFromConfigurationFile(rushJsonFilename); + + // This must match the catalogs that install writes to the generated pnpm-workspace.yaml + const expectedHash: string = crypto + .createHash('sha1') + .update(JSON.stringify(rushConfiguration.pnpmOptions.globalCatalogs)) + .digest('hex'); + + expect(rushConfiguration.getSubspace('default').getPnpmCatalogsHash()).toEqual(expectedHash); + expect(rushConfiguration.getSubspace('other-subspace').getPnpmCatalogsHash()).toEqual(expectedHash); + + // A subspace with its own pnpm-config.json uses its own catalogs + const ownConfigHash: string | undefined = rushConfiguration + .getSubspace('own-config-subspace') + .getPnpmCatalogsHash(); + expect(ownConfigHash).toEqual( + crypto + .createHash('sha1') + .update(JSON.stringify({ default: { react: '^17.0.0' } })) + .digest('hex') + ); + }); }); describe(Subspace.prototype.getPackageJsonInjectedDependenciesHash.name, () => { @@ -139,5 +171,76 @@ describe(Subspace.name, () => { expect(hashAfter).toBeDefined(); expect(hashBefore).not.toBe(hashAfter); }); + + describe('with catalog references in injected projects from other subspaces', () => { + // The "catalog-consumer" project in "consumer-subspace" injects the "catalog-provider" project from the + // default subspace, which depends on "transitive-provider". Both providers reference the default + // subspace's catalogs. + const injectedSubspaceCatalogsRushJson: string = path.resolve( + __dirname, + '../../logic/pnpm/test/repoWithInjectedSubspaceCatalogs/rush.json' + ); + + it('hashes the catalog versions instead of the catalog references', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + injectedSubspaceCatalogsRushJson + ); + const consumerSubspace: Subspace = rushConfiguration.getSubspace('consumer-subspace'); + + const hashBefore: string | undefined = consumerSubspace.getPackageJsonInjectedDependenciesHash(); + + // Replace the catalog references with the versions from the default subspace's catalogs + const providerPackageJson: IPackageJson = + rushConfiguration.getProjectByName('catalog-provider')!.packageJson; + providerPackageJson.dependencies = { + ...providerPackageJson.dependencies, + lodash: '^4.17.21', + semver: '~7.5.4' + }; + providerPackageJson.optionalDependencies = { fsevents: '~2.3.2' }; + providerPackageJson.peerDependencies = { typescript: '~5.3.0' }; + rushConfiguration.getProjectByName('transitive-provider')!.packageJson.dependencies = { + lodash: '^4.17.21' + }; + + const hashAfter: string | undefined = consumerSubspace.getPackageJsonInjectedDependenciesHash(); + + expect(hashBefore).toBeDefined(); + expect(hashAfter).toBe(hashBefore); + }); + + it("changes when an entry in the injected project's subspace catalog changes", () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + injectedSubspaceCatalogsRushJson + ); + const consumerSubspace: Subspace = rushConfiguration.getSubspace('consumer-subspace'); + + const hashBefore: string | undefined = consumerSubspace.getPackageJsonInjectedDependenciesHash(); + + rushConfiguration.pnpmOptions.globalCatalogs!.default.semver = '~7.6.0'; + + const hashAfter: string | undefined = consumerSubspace.getPackageJsonInjectedDependenciesHash(); + + expect(hashBefore).toBeDefined(); + expect(hashAfter).toBeDefined(); + expect(hashAfter).not.toBe(hashBefore); + }); + + it("does not change when the consuming subspace's own catalog changes", () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + injectedSubspaceCatalogsRushJson + ); + const consumerSubspace: Subspace = rushConfiguration.getSubspace('consumer-subspace'); + + const hashBefore: string | undefined = consumerSubspace.getPackageJsonInjectedDependenciesHash(); + + consumerSubspace.getPnpmOptions()!.globalCatalogs!.default.semver = '^6.1.0'; + + const hashAfter: string | undefined = consumerSubspace.getPackageJsonInjectedDependenciesHash(); + + expect(hashBefore).toBeDefined(); + expect(hashAfter).toBe(hashBefore); + }); + }); }); }); diff --git a/libraries/rush-lib/src/api/test/VersionMismatchFinder.test.ts b/libraries/rush-lib/src/api/test/VersionMismatchFinder.test.ts index a9ea220ec72..1c507e755d5 100644 --- a/libraries/rush-lib/src/api/test/VersionMismatchFinder.test.ts +++ b/libraries/rush-lib/src/api/test/VersionMismatchFinder.test.ts @@ -1,13 +1,20 @@ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. +import * as path from 'node:path'; + +import { AnsiEscape } from '@rushstack/terminal'; + import type { RushConfigurationProject } from '../RushConfigurationProject'; import { VersionMismatchFinder } from '../../logic/versionMismatch/VersionMismatchFinder'; -import { PackageJsonEditor } from '../PackageJsonEditor'; +import { DependencyType, PackageJsonEditor } from '../PackageJsonEditor'; import { CommonVersionsConfiguration } from '../CommonVersionsConfiguration'; import type { VersionMismatchFinderEntity } from '../../logic/versionMismatch/VersionMismatchFinderEntity'; import { VersionMismatchFinderProject } from '../../logic/versionMismatch/VersionMismatchFinderProject'; import { VersionMismatchFinderCommonVersions } from '../../logic/versionMismatch/VersionMismatchFinderCommonVersions'; +import type { PnpmCatalogs } from '../../logic/pnpm/EffectivePnpmOptions'; +import { RushConfiguration } from '../RushConfiguration'; +import type { Subspace } from '../Subspace'; /* eslint-disable @typescript-eslint/no-explicit-any */ describe(VersionMismatchFinder.name, () => { @@ -443,4 +450,273 @@ describe(VersionMismatchFinder.name, () => { expect(mismatchFinder.getConsumersOfMismatch('@scope/library-1', '~3.2.1')).toEqual([projectB]); expect(mismatchFinder.getConsumersOfMismatch('@scope/library-1', '1.2.3')).toEqual([projectA]); }); + + describe('PNPM catalog references', () => { + const CATALOGS: PnpmCatalogs = { + default: { + typescript: '~5.8.2' + }, + react17: { + react: '^17.0.2' + } + }; + + function createProject( + packageName: string, + dependencies: Record, + pnpmCatalogs: PnpmCatalogs | undefined = CATALOGS + ): VersionMismatchFinderProject { + return new VersionMismatchFinderProject( + { + packageName, + packageJsonEditor: PackageJsonEditor.fromObject({ dependencies } as any, 'foo.json'), + decoupledLocalDependencies: new Set() + } as any as RushConfigurationProject, + pnpmCatalogs + ); + } + + it('finds no mismatch between a catalog reference and the same version', () => { + const projectA: VersionMismatchFinderEntity = createProject('A', { typescript: 'catalog:' }); + const projectB: VersionMismatchFinderEntity = createProject('B', { typescript: '~5.8.2' }); + + const mismatchFinder: VersionMismatchFinder = new VersionMismatchFinder([projectA, projectB]); + expect(mismatchFinder.numberOfMismatches).toEqual(0); + }); + + it('treats "catalog:" and "catalog:default" as the same reference', () => { + const projectA: VersionMismatchFinderEntity = createProject('A', { typescript: 'catalog:' }); + const projectB: VersionMismatchFinderEntity = createProject('B', { typescript: 'catalog:default' }); + + const mismatchFinder: VersionMismatchFinder = new VersionMismatchFinder([projectA, projectB]); + expect(mismatchFinder.numberOfMismatches).toEqual(0); + }); + + it('finds a mismatch between a catalog reference and a different version', () => { + const projectA: VersionMismatchFinderEntity = createProject('A', { typescript: 'catalog:' }); + const projectB: VersionMismatchFinderEntity = createProject('B', { typescript: '~5.7.0' }); + + const mismatchFinder: VersionMismatchFinder = new VersionMismatchFinder([projectA, projectB]); + expect(mismatchFinder.getMismatches()).toEqual(['typescript']); + expect(mismatchFinder.getVersionsOfMismatch('typescript')).toEqual(['~5.8.2', '~5.7.0']); + expect(mismatchFinder.getConsumersOfMismatch('typescript', '~5.8.2')).toEqual([projectA]); + expect(mismatchFinder.getConsumersOfMismatch('typescript', '~5.7.0')).toEqual([projectB]); + expect(mismatchFinder.tryGetCatalogVersionSpecifier('typescript', '~5.8.2', projectA)).toEqual( + 'catalog:' + ); + expect(mismatchFinder.tryGetCatalogVersionSpecifier('typescript', '~5.7.0', projectB)).toBeUndefined(); + }); + + it('compares a catalog reference with the preferred versions', async () => { + const commonVersionsConfiguration: CommonVersionsConfiguration = + await CommonVersionsConfiguration.loadFromFileAsync(`${__dirname}/jsonFiles/common-versions.json`); + const commonVersions: VersionMismatchFinderEntity = new VersionMismatchFinderCommonVersions( + commonVersionsConfiguration + ); + const projectA: VersionMismatchFinderEntity = createProject('A', { typescript: 'catalog:' }); + + commonVersionsConfiguration.preferredVersions.set('typescript', '~5.8.2'); + expect(new VersionMismatchFinder([commonVersions, projectA]).numberOfMismatches).toEqual(0); + + commonVersionsConfiguration.preferredVersions.set('typescript', '~5.7.0'); + const mismatchFinder: VersionMismatchFinder = new VersionMismatchFinder([commonVersions, projectA]); + expect(mismatchFinder.getMismatches()).toEqual(['typescript']); + expect(mismatchFinder.getConsumersOfMismatch('typescript', '~5.7.0')).toEqual([commonVersions]); + expect(mismatchFinder.getConsumersOfMismatch('typescript', '~5.8.2')).toEqual([projectA]); + }); + + it('resolves named catalogs and allows alternative versions of the resolved version', () => { + const projectA: VersionMismatchFinderEntity = createProject('A', { react: 'catalog:react17' }); + const projectB: VersionMismatchFinderEntity = createProject('B', { react: '^18.2.0' }); + + const mismatchFinder: VersionMismatchFinder = new VersionMismatchFinder([projectA, projectB]); + expect(mismatchFinder.getVersionsOfMismatch('react')).toEqual(['^17.0.2', '^18.2.0']); + + for (const allowedAlternativeVersion of ['^17.0.2', 'catalog:react17']) { + const alternatives: Map> = new Map([ + ['react', [allowedAlternativeVersion]] + ]); + expect(new VersionMismatchFinder([projectA, projectB], alternatives).numberOfMismatches).toEqual(0); + } + }); + + it("resolves each project's catalog references with that project's catalogs", () => { + const projectA: VersionMismatchFinderEntity = createProject('A', { typescript: 'catalog:' }); + const projectB: VersionMismatchFinderEntity = createProject( + 'B', + { typescript: 'catalog:' }, + { default: { typescript: '~5.7.0' } } + ); + + const mismatchFinder: VersionMismatchFinder = new VersionMismatchFinder([projectA, projectB]); + expect(mismatchFinder.getVersionsOfMismatch('typescript')).toEqual(['~5.8.2', '~5.7.0']); + expect(mismatchFinder.getConsumersOfMismatch('typescript', '~5.7.0')).toEqual([projectB]); + }); + + it('reports a catalog reference that does not resolve as its own version', () => { + const projectA: VersionMismatchFinderEntity = createProject('A', { typescript: 'catalog:' }); + const projectB: VersionMismatchFinderEntity = createProject('B', { typescript: 'catalog:missing' }); + const projectC: VersionMismatchFinderEntity = createProject('C', { lodash: 'catalog:' }); + const projectD: VersionMismatchFinderEntity = createProject('D', { lodash: 'catalog:default' }); + const projectE: VersionMismatchFinderEntity = createProject('E', { lodash: '^4.17.21' }, undefined); + const projectF: VersionMismatchFinderEntity = createProject('F', { lodash: 'catalog:' }, undefined); + + const mismatchFinder: VersionMismatchFinder = new VersionMismatchFinder([ + projectA, + projectB, + projectC, + projectD, + projectE, + projectF + ]); + expect(mismatchFinder.getMismatches()).toEqual(['typescript', 'lodash']); + expect(mismatchFinder.getVersionsOfMismatch('typescript')).toEqual(['~5.8.2', 'catalog:missing']); + expect(mismatchFinder.getConsumersOfMismatch('typescript', 'catalog:missing')).toEqual([projectB]); + expect(mismatchFinder.getVersionsOfMismatch('lodash')).toEqual(['catalog:', '^4.17.21']); + expect(mismatchFinder.getConsumersOfMismatch('lodash', 'catalog:')).toEqual([ + projectC, + projectD, + projectF + ]); + expect(mismatchFinder.tryGetCatalogVersionSpecifier('lodash', 'catalog:', projectD)).toEqual( + 'catalog:default' + ); + }); + + describe('reporting', () => { + function createMismatchFinder(): VersionMismatchFinder { + return new VersionMismatchFinder([ + createProject('A', { typescript: 'catalog:', lodash: 'catalog:' }), + createProject('B', { typescript: 'catalog:default' }), + createProject('C', { typescript: '~5.7.0', lodash: '^4.17.21' }), + createProject('D', { typescript: '~5.8.2', lodash: 'catalog:default' }) + ]); + } + + function captureConsoleLog(callback: () => void): string[] { + const lines: string[] = []; + const consoleLogSpy: jest.SpyInstance = jest + .spyOn(console, 'log') + .mockImplementation((message: string = '') => { + lines.push(AnsiEscape.removeCodes(message)); + }); + try { + callback(); + } finally { + consoleLogSpy.mockRestore(); + } + + return lines; + } + + it('annotates versions that come from a catalog', () => { + const lines: string[] = captureConsoleLog(() => createMismatchFinder().print()); + expect(lines).toEqual([ + 'lodash', + ' catalog: (unresolved PNPM catalog reference)', + ' - A', + ' - D (catalog:default)', + ' ^4.17.21', + ' - C', + '', + 'typescript', + ' ~5.8.2 (catalog:)', + ' - A (catalog:)', + ' - B (catalog:default)', + ' - D', + ' ~5.7.0', + ' - C', + '' + ]); + }); + + it('reports the resolved version and the catalog references as JSON', () => { + const lines: string[] = captureConsoleLog(() => createMismatchFinder().printAsJson()); + expect(JSON.parse(lines.join('\n'))).toEqual({ + mismatchedVersions: [ + { + dependencyName: 'lodash', + versions: [ + { + version: 'catalog:', + projects: ['A', 'D'], + catalogReferences: [ + { project: 'A', versionSpecifier: 'catalog:' }, + { project: 'D', versionSpecifier: 'catalog:default' } + ] + }, + { version: '^4.17.21', projects: ['C'] } + ] + }, + { + dependencyName: 'typescript', + versions: [ + { + version: '~5.8.2', + projects: ['A', 'B', 'D'], + catalogReferences: [ + { project: 'A', versionSpecifier: 'catalog:' }, + { project: 'B', versionSpecifier: 'catalog:default' } + ] + }, + { version: '~5.7.0', projects: ['C'] } + ] + } + ] + }); + }); + }); + + describe(VersionMismatchFinder.getMismatches.name, () => { + function loadRushConfiguration(repoName: string): RushConfiguration { + return RushConfiguration.loadFromConfigurationFile( + path.resolve(__dirname, '../../logic/test', repoName, 'rush.json') + ); + } + + it('resolves catalog references with the catalogs of the subspace', () => { + const rushConfiguration: RushConfiguration = loadRushConfiguration('repoWithCatalogs'); + expect(VersionMismatchFinder.getMismatches(rushConfiguration).numberOfMismatches).toEqual(0); + + rushConfiguration + .getProjectByName('c')! + .packageJsonEditor.addOrUpdateDependency('semver', '^7.0.0', DependencyType.Regular); + rushConfiguration + .getProjectByName('c')! + .packageJsonEditor.addOrUpdateDependency('typescript', '~5.3.0', DependencyType.Dev); + + const mismatchFinder: VersionMismatchFinder = VersionMismatchFinder.getMismatches(rushConfiguration); + expect(mismatchFinder.getMismatches()).toEqual(['semver']); + expect( + mismatchFinder.getConsumersOfMismatch('semver', '^7.5.4')!.map(({ friendlyName }) => friendlyName) + ).toEqual(['a', 'd']); + }); + + it.each<[string, string, string, number]>([ + ['default', 'react', '^18.0.0', 0], + ['other-subspace', 'foo', '~2.0.0', 0], + ['own-config-subspace', 'react', '^17.0.0', 0], + ['own-config-subspace', 'react', '^18.0.0', 1] + ])( + 'in subspace %s, compares %s with the preferred version %s', + (subspaceName: string, packageName: string, preferredVersion: string, expectedMismatches: number) => { + const rushConfiguration: RushConfiguration = loadRushConfiguration( + 'repoWithSubspacesCommonCatalogs' + ); + const subspace: Subspace = rushConfiguration.getSubspace(subspaceName); + subspace.getCommonVersions().preferredVersions.set(packageName, preferredVersion); + + const mismatchFinder: VersionMismatchFinder = VersionMismatchFinder.getMismatches( + rushConfiguration, + { subspace, variant: undefined } + ); + expect(mismatchFinder.numberOfMismatches).toEqual(expectedMismatches); + if (expectedMismatches > 0) { + // own-config-subspace uses its own catalogs instead of the common catalogs + expect(mismatchFinder.getVersionsOfMismatch(packageName)).toEqual([preferredVersion, '^17.0.0']); + } + } + ); + }); + }); }); diff --git a/libraries/rush-lib/src/api/test/__snapshots__/RushCommandLine.test.ts.snap b/libraries/rush-lib/src/api/test/__snapshots__/RushCommandLine.test.ts.snap index 9858a6bbf44..e28042fd3de 100644 --- a/libraries/rush-lib/src/api/test/__snapshots__/RushCommandLine.test.ts.snap +++ b/libraries/rush-lib/src/api/test/__snapshots__/RushCommandLine.test.ts.snap @@ -15,7 +15,7 @@ Object { "shortName": "-s", }, Object { - "description": "The name of the package which should be added as a dependency. A SemVer version specifier can be appended after an \\"@\\" sign. WARNING: Symbol characters are usually interpreted by your shell, so it's recommended to use quotes. For example, write \\"rush add --package \\"example@^1.2.3\\"\\" instead of \\"rush add --package example@^1.2.3\\". To add multiple packages, write \\"rush add --package foo --package bar\\".", + "description": "The name of the package which should be added as a dependency. A SemVer version specifier or a PNPM catalog reference (such as \\"catalog:\\" or \\"catalog:tools\\") can be appended after an \\"@\\" sign. WARNING: Symbol characters are usually interpreted by your shell, so it's recommended to use quotes. For example, write \\"rush add --package \\"example@^1.2.3\\"\\" instead of \\"rush add --package example@^1.2.3\\". To add multiple packages, write \\"rush add --package foo --package bar\\".", "environmentVariable": undefined, "kind": "StringList", "longName": "--package", diff --git a/libraries/rush-lib/src/cli/RushPnpmCommandLineParser.ts b/libraries/rush-lib/src/cli/RushPnpmCommandLineParser.ts index 82502d67419..1b18eb13d75 100644 --- a/libraries/rush-lib/src/cli/RushPnpmCommandLineParser.ts +++ b/libraries/rush-lib/src/cli/RushPnpmCommandLineParser.ts @@ -34,6 +34,12 @@ import { getNpmrcEnvironmentVariables } from '../utilities/npmrcUtilities'; import { InstallHelpers } from '../logic/installManager/InstallHelpers'; import type { Subspace } from '../api/Subspace'; import type { PnpmOptionsConfiguration } from '../logic/pnpm/PnpmOptionsConfiguration'; +import { + getEffectivePnpmOptions, + getOtherSubspacesSharingPnpmConfig, + mergePnpmCatalogs, + type PnpmCatalogs +} from '../logic/pnpm/EffectivePnpmOptions'; import { PnpmWorkspaceFile } from '../logic/pnpm/PnpmWorkspaceFile'; import { EnvironmentVariableNames } from '../api/EnvironmentConfiguration'; import { initializeDotEnv } from '../logic/dotenv'; @@ -751,21 +757,36 @@ export class RushPnpmCommandLineParser { // When "pnpm up" / "pnpm update" runs, PNPM writes any updated catalog versions to the // generated "catalogs" section of common/temp//pnpm-workspace.yaml. That file is // regenerated on every install, so the updated versions must be synced back to the - // "globalCatalogs" field of pnpm-config.json for the change to be persisted. - const pnpmOptions: PnpmOptionsConfiguration | undefined = this.#subspace.getPnpmOptions(); - if (pnpmOptions === undefined) { + // "globalCatalogs" field of the pnpm-config.json that install reads the catalogs from. + // If the subspace does not have a pnpm-config.json of its own, that is the common + // pnpm-config.json (see getEffectivePnpmOptions()). + const { pnpmOptions, pnpmConfigFilePath } = getEffectivePnpmOptions( + this.#subspace, + this.#rushConfiguration + ); + if (pnpmOptions.jsonFilename === undefined) { + // The legacy "pnpmOptions" field in rush.json does not support catalogs break; } - const workspaceYamlFilename: string = `${subspaceTempFolder}/pnpm-workspace.yaml`; + const workspaceYamlFilename: string = `${subspaceTempFolder}/${RushConstants.pnpmWorkspaceFileName}`; const yamlModule: typeof import('js-yaml') = await import('js-yaml'); const workspaceYamlContent: string = await FileSystem.readFileAsync(workspaceYamlFilename); - const workspaceYaml: { catalogs?: Record> } = (yamlModule.load( - workspaceYamlContent - ) ?? {}) as { catalogs?: Record> }; - const newGlobalCatalogs: Record> | undefined = workspaceYaml?.catalogs; - const currentGlobalCatalogs: Record> | undefined = - pnpmOptions.globalCatalogs; + const workspaceYaml: IPnpmWorkspaceYamlCatalogs = (yamlModule.load(workspaceYamlContent) ?? + {}) as IPnpmWorkspaceYamlCatalogs; + const currentGlobalCatalogs: PnpmCatalogs | undefined = pnpmOptions.globalCatalogs; + let newGlobalCatalogs: PnpmCatalogs | undefined = getCatalogsFromWorkspaceYaml(workspaceYaml); + + // If other subspaces also read their catalogs from this pnpm-config.json, this subspace's + // workspace cannot tell which catalog entries those subspaces use. Only add or update entries, + // and never remove an entry or a catalog that another subspace might depend on. + const subspacesSharingPnpmConfig: Subspace[] = getOtherSubspacesSharingPnpmConfig( + this.#subspace, + this.#rushConfiguration + ); + if (subspacesSharingPnpmConfig.length > 0) { + newGlobalCatalogs = mergePnpmCatalogs(currentGlobalCatalogs, newGlobalCatalogs); + } if (!Objects.areDeepEqual(currentGlobalCatalogs, newGlobalCatalogs)) { await pnpmOptions.updateGlobalCatalogsAsync(newGlobalCatalogs); @@ -775,6 +796,19 @@ export class RushPnpmCommandLineParser { `Rush refreshed the ${RushConstants.pnpmConfigFilename} and shrinkwrap file.\n` + ' Please commit this change to Git.' ); + + if (subspacesSharingPnpmConfig.length > 0) { + // The other subspaces' lockfiles and repo-state.json files still reflect the old catalogs. + // Their next "rush install" would fail the PNPM lockfile catalog check, so they must be updated too. + const updateCommands: string[] = subspacesSharingPnpmConfig.map( + (subspace: Subspace) => ` rush update --subspace ${subspace.subspaceName}` + ); + this.#terminal.writeWarningLine( + `The catalogs were updated in ${pnpmConfigFilePath}, which is also used by other subspaces.\n` + + ' Run these commands to update their shrinkwrap files, then commit those changes to Git:\n' + + updateCommands.join('\n') + ); + } } break; } @@ -830,3 +864,27 @@ export class RushPnpmCommandLineParser { } } } + +/** + * The catalog fields of a pnpm-workspace.yaml file. + */ +interface IPnpmWorkspaceYamlCatalogs { + catalog?: Record; + catalogs?: PnpmCatalogs; +} + +/** + * Reads the catalogs from a parsed pnpm-workspace.yaml file. + * + * @remarks + * PNPM accepts the default catalog either as the top-level "catalog" field or as "catalogs.default". + * Rush always writes "catalogs", but PNPM writes a new default catalog to the top-level "catalog" field. + */ +function getCatalogsFromWorkspaceYaml(workspaceYaml: IPnpmWorkspaceYamlCatalogs): PnpmCatalogs | undefined { + const { catalog, catalogs } = workspaceYaml; + if (!catalog) { + return catalogs; + } + + return { ...catalogs, default: { ...catalogs?.default, ...catalog } }; +} diff --git a/libraries/rush-lib/src/cli/actions/AddAction.ts b/libraries/rush-lib/src/cli/actions/AddAction.ts index 5eb0784c65f..2502ef4b835 100644 --- a/libraries/rush-lib/src/cli/actions/AddAction.ts +++ b/libraries/rush-lib/src/cli/actions/AddAction.ts @@ -15,6 +15,7 @@ import { SemVerStyle } from '../../logic/PackageJsonUpdaterTypes'; import { getVariantAsync } from '../../api/Variants'; +import { tryParsePnpmCatalogName } from '../../logic/pnpm/PnpmCatalogReference'; const ADD_ACTION_NAME: 'add' = 'add'; export const MAKE_CONSISTENT_FLAG_NAME: '--make-consistent' = '--make-consistent'; @@ -35,7 +36,12 @@ export class AddAction extends BaseAddAndRemoveAction { ' either the latest version or a version that won\'t break the "ensureConsistentVersions" policy). If a version' + ' range (or a workspace range) is specified, the latest version in the range will be used. The version will be' + ` automatically prepended with a tilde, unless the "${EXACT_FLAG_NAME}" or "${CARET_FLAG_NAME}" flags are used.` + - ` The "${MAKE_CONSISTENT_FLAG_NAME}" flag can be used to update all packages with the dependency.` + ` The "${MAKE_CONSISTENT_FLAG_NAME}" flag can be used to update all packages with the dependency.` + + ' When using PNPM catalogs, a catalog reference such as "catalog:" is written instead of a version if' + + ' the catalog has an entry for the package that matches the requested version (or if no version is' + + ` specified). With the "${MAKE_CONSISTENT_FLAG_NAME}" flag, the catalog entry is updated to the requested` + + ' version. A catalog can also be referenced explicitly, for example "example@catalog:" or' + + ' "example@catalog:tools".' ].join('\n'); super({ actionName: ADD_ACTION_NAME, @@ -46,7 +52,8 @@ export class AddAction extends BaseAddAndRemoveAction { allFlagDescription: 'If specified, the dependency will be added to all projects.', packageNameListParameterDescription: 'The name of the package which should be added as a dependency.' + - ' A SemVer version specifier can be appended after an "@" sign. WARNING: Symbol characters' + + ' A SemVer version specifier or a PNPM catalog reference (such as "catalog:" or "catalog:tools")' + + ' can be appended after an "@" sign. WARNING: Symbol characters' + " are usually interpreted by your shell, so it's recommended to use quotes." + ` For example, write "rush add ${PACKAGE_PARAMETER_NAME} "example@^1.2.3"" instead of "rush add ${PACKAGE_PARAMETER_NAME} example@^1.2.3".` + ` To add multiple packages, write "rush add ${PACKAGE_PARAMETER_NAME} foo ${PACKAGE_PARAMETER_NAME} bar".` @@ -115,7 +122,14 @@ export class AddAction extends BaseAddAndRemoveAction { throw new Error(`The package name "${packageName}" is not valid.`); } - if (version && version !== 'latest') { + if (version && tryParsePnpmCatalogName(version) !== undefined) { + if (!this.rushConfiguration.isPnpm) { + throw new Error( + `The version specifier "${version}" for "${packageName}" references a PNPM catalog, ` + + 'but catalogs are only supported when the package manager is PNPM.' + ); + } + } else if (version && version !== 'latest') { const specifier: DependencySpecifier = new DependencySpecifier(packageName, version); if (!semver.validRange(specifier.versionSpecifier) && !semver.valid(specifier.versionSpecifier)) { throw new Error(`The SemVer specifier "${version}" is not valid.`); diff --git a/libraries/rush-lib/src/cli/actions/test/AddAction.test.ts b/libraries/rush-lib/src/cli/actions/test/AddAction.test.ts index e41934ed1f0..026a44b9ee5 100644 --- a/libraries/rush-lib/src/cli/actions/test/AddAction.test.ts +++ b/libraries/rush-lib/src/cli/actions/test/AddAction.test.ts @@ -4,6 +4,7 @@ import '../../test/mockRushCommandLineParser'; import { LockFile } from '@rushstack/node-core-library'; +import { AnsiEscape } from '@rushstack/terminal'; import { PackageJsonUpdater } from '../../../logic/PackageJsonUpdater'; import type { IPackageJsonUpdaterRushAddOptions } from '../../../logic/PackageJsonUpdaterTypes'; @@ -105,5 +106,64 @@ describe(AddAction.name, () => { `); }); }); + + describe("'add' action with PNPM catalog references", () => { + it('passes explicit catalog references through', async () => { + const startPath: string = `${__dirname}/../../../logic/test/repoWithCatalogs`; + const parser: RushCommandLineParser = new RushCommandLineParser({ cwd: startPath }); + jest.spyOn(process, 'cwd').mockReturnValue(`${startPath}/c`); + + process.argv = [ + 'pretend-this-is-node.exe', + 'pretend-this-is-rush', + 'add', + '-p', + 'semver@catalog:', + '-p', + 'typescript@catalog:tools' + ]; + + await expect(parser.executeAsync()).resolves.toEqual(true); + expect(doRushAddMock).toHaveBeenCalledTimes(1); + const doRushAddOptions: IPackageJsonUpdaterRushAddOptions = doRushAddMock.mock.calls[0][0]; + expect(doRushAddOptions.projects.map(({ packageName }) => packageName)).toEqual(['c']); + expect(doRushAddOptions.packagesToUpdate).toMatchInlineSnapshot(` + Array [ + Object { + "packageName": "semver", + "rangeStyle": "passthrough", + "version": "catalog:", + }, + Object { + "packageName": "typescript", + "rangeStyle": "passthrough", + "version": "catalog:tools", + }, + ] + `); + }); + + it('rejects catalog references when the package manager is not PNPM', async () => { + const consoleErrorMock: jest.SpyInstance = jest.spyOn(console, 'error').mockImplementation(); + const startPath: string = `${__dirname}/addRepo`; + const parser: RushCommandLineParser = new RushCommandLineParser({ cwd: startPath }); + jest.spyOn(process, 'cwd').mockReturnValue(`${startPath}/a`); + + process.argv = ['pretend-this-is-node.exe', 'pretend-this-is-rush', 'add', '-p', 'assert@catalog:']; + + await parser.executeAsync(); + expect(process.exitCode).toEqual(1); + expect(doRushAddMock).not.toHaveBeenCalled(); + // The error message is colorized and word-wrapped + const errorOutput: string = AnsiEscape.removeCodes(consoleErrorMock.mock.calls.join('\n')).replace( + /\s+/g, + ' ' + ); + expect(errorOutput).toContain( + 'The version specifier "catalog:" for "assert" references a PNPM catalog, ' + + 'but catalogs are only supported when the package manager is PNPM.' + ); + }); + }); }); }); diff --git a/libraries/rush-lib/src/cli/test/RushPnpmCommandLineParser.test.ts b/libraries/rush-lib/src/cli/test/RushPnpmCommandLineParser.test.ts index 3d9073e2825..d251956b891 100644 --- a/libraries/rush-lib/src/cli/test/RushPnpmCommandLineParser.test.ts +++ b/libraries/rush-lib/src/cli/test/RushPnpmCommandLineParser.test.ts @@ -236,6 +236,169 @@ describe(`${RushPnpmCommandLineParser.name} catalog sync`, () => { }); }); +describe(`${RushPnpmCommandLineParser.name} catalog sync with subspaces`, () => { + const PACKAGE_ROOT: string = path.resolve(__dirname, '../../..'); + const TEST_TEMP_FOLDER: string = `${PACKAGE_ROOT}/temp/rush-pnpm-catalog-sync-subspaces-test`; + // The "default" and "other-subspace" subspaces don't have a pnpm-config.json of their own, so they use + // common/config/rush/pnpm-config.json. The "own-config-subspace" subspace has its own pnpm-config.json. + const FIXTURE_FOLDER: string = path.resolve(__dirname, '../../logic/test/repoWithSubspacesCommonCatalogs'); + const COMMON_PNPM_CONFIG_FILENAME: string = `${TEST_TEMP_FOLDER}/common/config/rush/pnpm-config.json`; + const OWN_PNPM_CONFIG_FILENAME: string = `${TEST_TEMP_FOLDER}/common/config/subspaces/own-config-subspace/pnpm-config.json`; + + interface ICatalogSyncResult { + rushConfiguration: RushConfiguration; + doRushUpdateAsync: jest.Mock; + warningOutput: string; + } + + /** + * Simulates "rush-pnpm --subspace up" after PNPM wrote the specified pnpm-workspace.yaml. + */ + async function runUpCatalogSyncAsync( + subspaceName: string, + workspaceYamlLines: string[] + ): Promise { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + `${TEST_TEMP_FOLDER}/rush.json` + ); + const subspace: Subspace = rushConfiguration.getSubspace(subspaceName); + await FileSystem.writeFileAsync( + `${subspace.getSubspaceTempFolderPath()}/pnpm-workspace.yaml`, + [...workspaceYamlLines, ''].join('\n'), + { ensureFolderExists: true } + ); + + const terminalProvider: StringBufferTerminalProvider = new StringBufferTerminalProvider(); + const doRushUpdateAsync: jest.Mock = jest.fn().mockResolvedValue(undefined); + await RushPnpmCommandLineParser._postExecuteForTestingAsync({ + commandName: 'up', + doRushUpdateAsync, + rushConfiguration, + subspace, + terminal: new Terminal(terminalProvider) + }); + + return { rushConfiguration, doRushUpdateAsync, warningOutput: terminalProvider.getWarningOutput() }; + } + + async function loadGlobalCatalogsAsync( + pnpmConfigFilename: string + ): Promise> | undefined> { + const pnpmConfig: { globalCatalogs?: Record> } = + await JsonFile.loadAsync(pnpmConfigFilename); + return pnpmConfig.globalCatalogs; + } + + beforeEach(async () => { + await FileSystem.deleteFolderAsync(TEST_TEMP_FOLDER); + await FileSystem.copyFilesAsync({ + sourcePath: FIXTURE_FOLDER, + destinationPath: TEST_TEMP_FOLDER + }); + }); + + afterEach(async () => { + await FileSystem.deleteFolderAsync(TEST_TEMP_FOLDER); + }); + + it('writes updated catalogs back to common/config/rush/pnpm-config.json for a subspace that uses it', async () => { + const ownPnpmConfigContent: string = await FileSystem.readFileAsync(OWN_PNPM_CONFIG_FILENAME); + + const { rushConfiguration, doRushUpdateAsync, warningOutput } = await runUpCatalogSyncAsync('default', [ + 'packages:', + ' - ../../../a', + ' - ../../../b', + 'catalogs:', + ' default:', + ' react: ^18.3.0', + ' foo: ~2.0.0', + ' tools:', + ' typescript: ~5.3.0' + ]); + + const expectedCatalogs: Record> = { + default: { react: '^18.3.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' } + }; + const commonPnpmConfig: { useWorkspaces?: boolean } = + await JsonFile.loadAsync(COMMON_PNPM_CONFIG_FILENAME); + expect(commonPnpmConfig.useWorkspaces).toBe(true); + expect(await loadGlobalCatalogsAsync(COMMON_PNPM_CONFIG_FILENAME)).toEqual(expectedCatalogs); + expect(await FileSystem.readFileAsync(OWN_PNPM_CONFIG_FILENAME)).toEqual(ownPnpmConfigContent); + expect(doRushUpdateAsync).toHaveBeenCalledTimes(1); + + // The in-memory options are updated too, so the "rush update" that follows (and the repo-state.json + // catalog hash of every subspace that shares the file) sees the new catalogs + expect(rushConfiguration.pnpmOptions.globalCatalogs).toEqual(expectedCatalogs); + expect(rushConfiguration.getSubspace('other-subspace').getPnpmCatalogsHash()).toEqual( + rushConfiguration.defaultSubspace.getPnpmCatalogsHash() + ); + + // The other subspace that uses the common pnpm-config.json must be updated too + expect(warningOutput).toContain('rush update --subspace other-subspace'); + expect(warningOutput).not.toContain('rush update --subspace default'); + expect(warningOutput).not.toContain('own-config-subspace'); + }); + + it('never removes catalog entries from a pnpm-config.json that is shared by several subspaces', async () => { + // This subspace's workspace only has the entries that PNPM kept; entries that other subspaces + // might use are missing + const { doRushUpdateAsync } = await runUpCatalogSyncAsync('other-subspace', [ + 'packages:', + ' - ../../../c', + ' - ../../../d', + 'catalogs:', + ' default:', + ' foo: ~2.1.0' + ]); + + expect(await loadGlobalCatalogsAsync(COMMON_PNPM_CONFIG_FILENAME)).toEqual({ + default: { react: '^18.0.0', foo: '~2.1.0' }, + tools: { typescript: '~5.3.0' } + }); + expect(doRushUpdateAsync).toHaveBeenCalledTimes(1); + }); + + it('does not modify a shared pnpm-config.json when the catalogs are unchanged', async () => { + const commonPnpmConfigContent: string = await FileSystem.readFileAsync(COMMON_PNPM_CONFIG_FILENAME); + + const { doRushUpdateAsync, warningOutput } = await runUpCatalogSyncAsync('default', [ + 'packages:', + ' - ../../../a', + ' - ../../../b', + 'catalogs:', + ' default:', + ' react: ^18.0.0', + ' foo: ~2.0.0', + ' tools:', + ' typescript: ~5.3.0' + ]); + + expect(await FileSystem.readFileAsync(COMMON_PNPM_CONFIG_FILENAME)).toEqual(commonPnpmConfigContent); + expect(doRushUpdateAsync).not.toHaveBeenCalled(); + expect(warningOutput).toEqual(''); + }); + + it("writes to the subspace's own pnpm-config.json and reads PNPM's top-level default catalog", async () => { + const commonPnpmConfigContent: string = await FileSystem.readFileAsync(COMMON_PNPM_CONFIG_FILENAME); + + const { rushConfiguration, doRushUpdateAsync, warningOutput } = await runUpCatalogSyncAsync( + 'own-config-subspace', + ['packages:', ' - ../../../e', 'catalog:', ' react: ^17.0.2'] + ); + + expect(await loadGlobalCatalogsAsync(OWN_PNPM_CONFIG_FILENAME)).toEqual({ + default: { react: '^17.0.2' } + }); + expect(rushConfiguration.getSubspace('own-config-subspace').getPnpmOptions()?.globalCatalogs).toEqual({ + default: { react: '^17.0.2' } + }); + expect(await FileSystem.readFileAsync(COMMON_PNPM_CONFIG_FILENAME)).toEqual(commonPnpmConfigContent); + expect(doRushUpdateAsync).toHaveBeenCalledTimes(1); + expect(warningOutput).not.toContain('rush update --subspace'); + }); +}); + describe(`${RushPnpmCommandLineParser.name} patch-commit patchedDependencies sync`, () => { it('reads patchedDependencies from pnpm-workspace.yaml for pnpm >= 11', async () => { const updateGlobalPatchedDependencies: jest.Mock = jest.fn(); diff --git a/libraries/rush-lib/src/cli/test/__snapshots__/CommandLineHelp.test.ts.snap b/libraries/rush-lib/src/cli/test/__snapshots__/CommandLineHelp.test.ts.snap index 0d738cff90c..0a854a40092 100644 --- a/libraries/rush-lib/src/cli/test/__snapshots__/CommandLineHelp.test.ts.snap +++ b/libraries/rush-lib/src/cli/test/__snapshots__/CommandLineHelp.test.ts.snap @@ -99,7 +99,12 @@ either the latest version or a version that won't break the is specified, the latest version in the range will be used. The version will be automatically prepended with a tilde, unless the \\"--exact\\" or \\"--caret\\" flags are used. The \\"--make-consistent\\" flag can be used to update all -packages with the dependency. +packages with the dependency. When using PNPM catalogs, a catalog reference +such as \\"catalog:\\" is written instead of a version if the catalog has an +entry for the package that matches the requested version (or if no version is +specified). With the \\"--make-consistent\\" flag, the catalog entry is updated +to the requested version. A catalog can also be referenced explicitly, for +example \\"example@catalog:\\" or \\"example@catalog:tools\\". Optional arguments: -h, --help Show this help message and exit. @@ -107,14 +112,15 @@ Optional arguments: run after updating the package.json files. -p PACKAGE, --package PACKAGE The name of the package which should be added as a - dependency. A SemVer version specifier can be - appended after an \\"@\\" sign. WARNING: Symbol - characters are usually interpreted by your shell, so - it's recommended to use quotes. For example, write - \\"rush add --package \\"example@^1.2.3\\"\\" instead of - \\"rush add --package example@^1.2.3\\". To add multiple - packages, write \\"rush add --package foo --package - bar\\". + dependency. A SemVer version specifier or a PNPM + catalog reference (such as \\"catalog:\\" or + \\"catalog:tools\\") can be appended after an \\"@\\" sign. + WARNING: Symbol characters are usually interpreted by + your shell, so it's recommended to use quotes. For + example, write \\"rush add --package \\"example@^1.2.3\\"\\" + instead of \\"rush add --package example@^1.2.3\\". To + add multiple packages, write \\"rush add --package foo + --package bar\\". --all If specified, the dependency will be added to all projects. --variant VARIANT Run command using a variant installation diff --git a/libraries/rush-lib/src/logic/DependencyAnalyzer.ts b/libraries/rush-lib/src/logic/DependencyAnalyzer.ts index 93ef26db116..9f389746bea 100644 --- a/libraries/rush-lib/src/logic/DependencyAnalyzer.ts +++ b/libraries/rush-lib/src/logic/DependencyAnalyzer.ts @@ -8,6 +8,8 @@ import { DependencyType, type PackageJsonDependency } from '../api/PackageJsonEd import type { RushConfiguration } from '../api/RushConfiguration'; import type { RushConfigurationProject } from '../api/RushConfigurationProject'; import type { Subspace } from '../api/Subspace'; +import { getEffectivePnpmCatalogs, type PnpmCatalogs } from './pnpm/EffectivePnpmOptions'; +import { tryGetPnpmCatalogVersion, tryParsePnpmCatalogName } from './pnpm/PnpmCatalogReference'; export interface IDependencyAnalysis { /** @@ -19,13 +21,32 @@ export interface IDependencyAnalysis { * A map of all direct dependencies that only have a single semantic version specifier, * unless the {@link CommonVersionsConfiguration.implicitlyPreferredVersions} option * set to `false`. + * + * @remarks + * PNPM catalog references (such as `catalog:` or `catalog:tools`) are resolved to the version + * specifier from the catalog, so the values are never catalog references. */ implicitlyPreferredVersionByPackageName: Map; /** * A map of dependency name to the set of version specifiers used in the repo. + * + * @remarks + * PNPM catalog references are resolved using the catalogs of the subspace that the declaring project + * belongs to. A catalog reference that does not resolve (because the catalog has no entry for the + * package) is ignored; PNPM reports an error for it when it installs. */ allVersionsByPackageName: Map>; + + /** + * A map of dependency name to the set of names of the PNPM catalogs that projects reference the + * dependency through, for example `default` for `catalog:` and `tools` for `catalog:tools`. + * + * @remarks + * Only catalog references that resolve are included. A dependency that no project references + * through a catalog does not have an entry. + */ + catalogNamesByPackageName: Map>; } let _dependencyAnalyzerByRushConfiguration: WeakMap | undefined; @@ -103,6 +124,25 @@ export class DependencyAnalyzer { ReadonlyArray > = commonVersionsConfiguration.allowedAlternativeVersions; + const catalogNamesByPackageName: Map> = new Map(); + + // The catalogs can differ between subspaces, so each catalog reference must be resolved using the + // catalogs of the declaring project's subspace. These are only loaded for projects that use catalogs. + const catalogsBySubspace: Map = new Map(); + const getCatalogsForProject: (project: RushConfigurationProject) => PnpmCatalogs | undefined = ( + project: RushConfigurationProject + ) => { + const projectSubspace: Subspace = project.subspace; + if (!catalogsBySubspace.has(projectSubspace)) { + catalogsBySubspace.set( + projectSubspace, + getEffectivePnpmCatalogs(projectSubspace, this.#rushConfiguration) + ); + } + + return catalogsBySubspace.get(projectSubspace); + }; + let projectsToProcess: RushConfigurationProject[] = this.#rushConfiguration.projects; if (addAction && this.#rushConfiguration.subspacesFeatureEnabled) { projectsToProcess = subspace.getProjects(); @@ -113,13 +153,32 @@ export class DependencyAnalyzer { ...project.packageJsonEditor.dependencyList, ...project.packageJsonEditor.devDependencyList ]; - for (const { name: dependencyName, version: dependencyVersion, dependencyType } of dependencies) { + for (const { name: dependencyName, version: specifiedVersion, dependencyType } of dependencies) { if (dependencyType === DependencyType.Peer) { // If this is a peer dependency, it isn't a real dependency in this context, so it shouldn't // be included in the list of dependency versions. continue; } + let dependencyVersion: string = specifiedVersion; + const catalogName: string | undefined = tryParsePnpmCatalogName(specifiedVersion); + if (catalogName !== undefined) { + // This is a PNPM catalog reference such as "catalog:" or "catalog:tools". Use the version + // from the catalog, since that is the version that PNPM installs. + const catalogVersion: string | undefined = tryGetPnpmCatalogVersion( + getCatalogsForProject(project), + catalogName, + dependencyName + ); + if (catalogVersion === undefined) { + // The catalog doesn't have an entry for this package. PNPM reports an error for this when it + // installs, so ignore it here rather than treating "catalog:" as a version specifier. + continue; + } + + dependencyVersion = catalogVersion; + } + if (dependencyVersion.startsWith('workspace:')) { // If this is a workspace protocol dependency, ignore it. continue; @@ -145,6 +204,17 @@ export class DependencyAnalyzer { } allVersionForDependency.add(dependencyVersion); + + if (catalogName !== undefined) { + let catalogNamesForDependency: Set | undefined = + catalogNamesByPackageName.get(dependencyName); + if (!catalogNamesForDependency) { + catalogNamesForDependency = new Set(); + catalogNamesByPackageName.set(dependencyName, catalogNamesForDependency); + } + + catalogNamesForDependency.add(catalogName); + } } } @@ -190,7 +260,8 @@ export class DependencyAnalyzer { return { commonVersionsConfiguration, implicitlyPreferredVersionByPackageName, - allVersionsByPackageName + allVersionsByPackageName, + catalogNamesByPackageName }; } } diff --git a/libraries/rush-lib/src/logic/InteractiveUpgrader.ts b/libraries/rush-lib/src/logic/InteractiveUpgrader.ts index ff7784fadd3..a9aa6bd1e5d 100644 --- a/libraries/rush-lib/src/logic/InteractiveUpgrader.ts +++ b/libraries/rush-lib/src/logic/InteractiveUpgrader.ts @@ -2,11 +2,16 @@ // See LICENSE in the project root for license information. import { NpmCheck, type INpmCheckState, type INpmCheckPackageSummary } from '@rushstack/npm-check-fork'; +import type { IPackageJson } from '@rushstack/node-core-library'; import { Colorize } from '@rushstack/terminal'; import type { RushConfiguration } from '../api/RushConfiguration'; import { upgradeInteractive, type IDepsToUpgradeAnswers } from '../utilities/InteractiveUpgradeUI'; import type { RushConfigurationProject } from '../api/RushConfigurationProject'; +import { getEffectivePnpmCatalogs, type PnpmCatalogs } from './pnpm/EffectivePnpmOptions'; +import { tryResolvePnpmCatalogReference, type IPnpmCatalogReference } from './pnpm/PnpmCatalogReference'; + +type NpmCheckPackageJson = NonNullable; interface IUpgradeInteractiveDeps { projects: RushConfigurationProject[]; @@ -68,9 +73,59 @@ export class InteractiveUpgrader { const { projectFolder } = rushProject; const currentState: INpmCheckState = await NpmCheck({ - cwd: projectFolder + cwd: projectFolder, + cwdPackageJson: this.#tryGetPackageJsonWithResolvedCatalogReferences(rushProject) }); return currentState.packages ?? []; } + + /** + * NpmCheck ignores dependencies whose version specifier is not a SemVer range, such as PNPM catalog + * references (`catalog:`). If the project has catalog references, returns a copy of its package.json + * with each reference replaced by the version from the catalog, so that those dependencies can be upgraded. + * The upgrade updates the catalog entry instead of the reference (see PackageJsonUpdater.doRushUpgradeAsync). + */ + #tryGetPackageJsonWithResolvedCatalogReferences( + rushProject: RushConfigurationProject + ): NpmCheckPackageJson | undefined { + const catalogs: PnpmCatalogs | undefined = getEffectivePnpmCatalogs( + rushProject.subspace, + this.#rushConfiguration + ); + if (!catalogs) { + return undefined; + } + + let hasResolvedReferences: boolean = false; + const resolveCatalogReferences: ( + dependencies: Record | undefined + ) => Record = (dependencies: Record | undefined) => { + const result: Record = {}; + for (const [packageName, versionSpecifier] of Object.entries(dependencies ?? {})) { + const catalogReference: IPnpmCatalogReference | undefined = tryResolvePnpmCatalogReference( + packageName, + versionSpecifier, + catalogs + ); + if (catalogReference?.resolvedVersion !== undefined) { + result[packageName] = catalogReference.resolvedVersion; + hasResolvedReferences = true; + } else { + result[packageName] = versionSpecifier; + } + } + + return result; + }; + + const packageJson: IPackageJson = rushProject.packageJson; + const packageJsonWithResolvedReferences: NpmCheckPackageJson = { + ...packageJson, + dependencies: resolveCatalogReferences(packageJson.dependencies), + devDependencies: resolveCatalogReferences(packageJson.devDependencies) + }; + + return hasResolvedReferences ? packageJsonWithResolvedReferences : undefined; + } } diff --git a/libraries/rush-lib/src/logic/PackageJsonUpdater.ts b/libraries/rush-lib/src/logic/PackageJsonUpdater.ts index c6e1f49cf8c..62426f2104f 100644 --- a/libraries/rush-lib/src/logic/PackageJsonUpdater.ts +++ b/libraries/rush-lib/src/logic/PackageJsonUpdater.ts @@ -31,6 +31,17 @@ import { } from './PackageJsonUpdaterTypes'; import type { Subspace } from '../api/Subspace'; import { MAKE_CONSISTENT_FLAG_NAME } from '../cli/actions/AddAction'; +import { + DEFAULT_PNPM_CATALOG_NAME, + formatPnpmCatalogSpecifier, + type IPnpmCatalogReference, + PNPM_CATALOG_PROTOCOL, + tryGetPnpmCatalogVersion, + tryParsePnpmCatalogName, + tryResolvePnpmCatalogReference +} from './pnpm/PnpmCatalogReference'; +import type { PnpmCatalogs } from './pnpm/EffectivePnpmOptions'; +import { PendingPnpmCatalogUpdates } from './pnpm/PendingPnpmCatalogUpdates'; /** * Options for adding a dependency to a particular project. @@ -95,6 +106,37 @@ export interface IUpdateProjectOptions extends IBaseUpdateProjectOptions { */ export interface IRemoveProjectOptions extends IBaseUpdateProjectOptions {} +/** + * The version of a package that "rush add" selected. + */ +interface IRushAddSelectedVersion { + /** + * The version specifier that the package resolves to. This is never a PNPM catalog reference. + */ + version: string; + /** + * The version specifier to write to package.json, which is either `version` or a PNPM catalog reference. + */ + versionSpecifier: string; + /** + * The name of the PNPM catalog that `versionSpecifier` references, if any. + */ + catalogName: string | undefined; + /** + * True if the catalog reference was specified explicitly, such as `rush add --package example@catalog:`. + */ + isExplicitCatalogReference: boolean; +} + +/** + * The changes that "rush upgrade-interactive" makes to the package.json file of a project. + */ +interface IUpgradeProjectUpdates { + project: VersionMismatchFinderEntity; + dependenciesToUpdate: Record; + devDependenciesToUpdate: Record; +} + /** * A helper class for managing the dependencies of various package.json files. * @internal @@ -103,6 +145,10 @@ export class PackageJsonUpdater { readonly #terminal: ITerminal; readonly #rushConfiguration: RushConfiguration; readonly #rushGlobalFolder: RushGlobalFolder; + /** + * Catalog references that were already reported as not updated, to avoid repeating the warning. + */ + readonly #reportedCatalogReferences: Set; public constructor( terminal: ITerminal, @@ -112,11 +158,16 @@ export class PackageJsonUpdater { this.#terminal = terminal; this.#rushConfiguration = rushConfiguration; this.#rushGlobalFolder = rushGlobalFolder; + this.#reportedCatalogReferences = new Set(); } /** * Upgrade dependencies to a particular project, or across specified projects. This is the core business logic for * "rush upgrade-interactive". + * + * @remarks + * If a project references a dependency through a PNPM catalog (such as `catalog:`), the catalog entry is + * updated instead, and the project keeps its catalog reference. This matches `pnpm update`. */ public async doRushUpgradeAsync(options: IPackageJsonUpdaterRushUpgradeOptions): Promise { const { projects, packagesToAdd, updateOtherPackages, skipUpdate, debugInstall, variant } = options; @@ -133,12 +184,47 @@ export class PackageJsonUpdater { commonVersionsConfiguration }: IDependencyAnalysis = dependencyAnalyzer.getAnalysis(undefined, variant, false); - const dependenciesToUpdate: Record = {}; - const devDependenciesToUpdate: Record = {}; - const peerDependenciesToUpdate: Record = {}; + const pendingCatalogUpdates: PendingPnpmCatalogUpdates = new PendingPnpmCatalogUpdates( + this.#rushConfiguration + ); + + const projectUpdatesByProject: Map = new Map(); + for (const project of projects) { + projectUpdatesByProject.set(project, { + project: new VersionMismatchFinderProject(project), + dependenciesToUpdate: {}, + devDependenciesToUpdate: {} + }); + } + + // The new version of each package. This is never a catalog reference. + const versionByPackageName: Map = new Map(); for (const { moduleName, latest: latestVersion, packageJson, devDependency } of packagesToAdd) { - const inferredRangeStyle: SemVerStyle = this.#cheaplyDetectSemVerRangeStyle(packageJson); + const dependencyType: DependencyType = devDependency ? DependencyType.Dev : DependencyType.Regular; + + // The projects that reference the package through a PNPM catalog get the catalog entry updated instead + const catalogReferenceByProject: Map = new Map(); + for (const [project, { project: mismatchFinderProject }] of projectUpdatesByProject) { + const catalogReference: IPnpmCatalogReference | undefined = this.#tryGetResolvedCatalogReference( + mismatchFinderProject, + moduleName, + dependencyType, + pendingCatalogUpdates.getCatalogs(project.subspace) + ); + if (catalogReference) { + catalogReferenceByProject.set(project, catalogReference); + } + } + + // Keep the range style of the catalog entry + const catalogVersions: string[] = Array.from( + catalogReferenceByProject.values(), + ({ resolvedVersion }) => resolvedVersion! + ); + const inferredRangeStyle: SemVerStyle = this.#cheaplyDetectSemVerRangeStyle( + catalogVersions[0] ?? packageJson + ); const implicitlyPreferredVersion: string | undefined = implicitlyPreferredVersionByPackageName.get(moduleName); @@ -155,72 +241,107 @@ export class PackageJsonUpdater { commonVersionsConfiguration.ensureConsistentVersions ); - if (devDependency) { - devDependenciesToUpdate[moduleName] = version; - } else { - dependenciesToUpdate[moduleName] = version; - } + versionByPackageName.set(moduleName, version); this.#terminal.writeLine( Colorize.green(`Updating projects to use `) + moduleName + '@' + Colorize.cyan(version) ); this.#terminal.writeLine(); - const existingSpecifiedVersions: Set | undefined = allVersionsByPackageName.get(moduleName); - if ( - existingSpecifiedVersions && - !existingSpecifiedVersions.has(version) && - commonVersionsConfiguration.ensureConsistentVersions && - !updateOtherPackages - ) { - // There are existing versions, and the version we're going to use is not one of them, and this repo - // requires consistent versions, and we aren't going to update other packages, so we can't proceed. + for (const [project, projectUpdates] of projectUpdatesByProject) { + const catalogReference: IPnpmCatalogReference | undefined = catalogReferenceByProject.get(project); + if (catalogReference) { + pendingCatalogUpdates.setVersion( + project.subspace, + catalogReference.catalogName, + moduleName, + version + ); + this.#terminal.writeLine( + `"${project.packageName}" references "${moduleName}" through the PNPM catalog ` + + `"${formatPnpmCatalogSpecifier(catalogReference.catalogName)}", so the catalog entry will be ` + + 'updated instead of package.json.' + ); + } else if (devDependency) { + projectUpdates.devDependenciesToUpdate[moduleName] = version; + } else { + projectUpdates.dependenciesToUpdate[moduleName] = version; + } + } - const existingVersionList: string = Array.from(existingSpecifiedVersions).join(', '); - throw new Error( - `Adding '${moduleName}@${version}' ` + - `causes mismatched dependencies. Use the "--make-consistent" flag to update other packages to use ` + - `this version, or try specify one of the existing versions (${existingVersionList}).` - ); + if (commonVersionsConfiguration.ensureConsistentVersions && !updateOtherPackages) { + if (catalogReferenceByProject.size > 0) { + // Updating a catalog entry also changes the version for every other project that references the + // entry, so check the versions that the projects will use after the change. + const allowedAlternativeVersions: ReadonlySet = new Set( + commonVersionsConfiguration.allowedAlternativeVersions.get(moduleName) + ); + const otherVersions: string[] = Array.from( + this.#getVersionsAfterUpgrade( + moduleName, + version, + dependencyType, + projectUpdatesByProject, + pendingCatalogUpdates + ) + ).filter( + (otherVersion: string) => + otherVersion !== version && !allowedAlternativeVersions.has(otherVersion) + ); + if (otherVersions.length > 0) { + this.#throwMismatchedVersionsError(moduleName, version, otherVersions); + } + } else { + const existingSpecifiedVersions: Set | undefined = allVersionsByPackageName.get(moduleName); + if (existingSpecifiedVersions && !existingSpecifiedVersions.has(version)) { + // There are existing versions, and the version we're going to use is not one of them, and this repo + // requires consistent versions, and we aren't going to update other packages, so we can't proceed. + this.#throwMismatchedVersionsError(moduleName, version, existingSpecifiedVersions); + } + } } } const allPackageUpdates: Map = new Map(); - const allDependenciesToUpdate: [string, string][] = [ - ...Object.entries(dependenciesToUpdate), - ...Object.entries(devDependenciesToUpdate), - ...Object.entries(peerDependenciesToUpdate) - ]; - for (const project of projects) { - const mismatchFinderProject: VersionMismatchFinderProject = new VersionMismatchFinderProject(project); + for (const { + project, + dependenciesToUpdate, + devDependenciesToUpdate + } of projectUpdatesByProject.values()) { + allPackageUpdates.set(project.filePath, project); - const currentProjectDepUpdate: IUpdateProjectOptions = { - project: mismatchFinderProject, + this.updateProject({ + project, dependenciesToAddOrUpdateOrRemove: dependenciesToUpdate, dependencyType: DependencyType.Regular - }; - - const currentProjectDevDepUpdate: IUpdateProjectOptions = { - project: mismatchFinderProject, + }); + this.updateProject({ + project, dependenciesToAddOrUpdateOrRemove: devDependenciesToUpdate, dependencyType: DependencyType.Dev - }; - - allPackageUpdates.set(mismatchFinderProject.filePath, mismatchFinderProject); - - this.updateProject(currentProjectDepUpdate); - this.updateProject(currentProjectDevDepUpdate); + }); } if (updateOtherPackages) { - const mismatchFinder: VersionMismatchFinder = VersionMismatchFinder.getMismatches( - this.#rushConfiguration, - options - ); - for (const update of this.#getUpdates(mismatchFinder, allDependenciesToUpdate)) { - this.updateProject(update); - allPackageUpdates.set(update.project.filePath, update.project); + for (const subspace of this.#rushConfiguration.getSubspacesForProjects(projects)) { + const mismatchFinder: VersionMismatchFinder = VersionMismatchFinder.getMismatches( + this.#rushConfiguration, + { + subspace, + variant, + pnpmCatalogs: pendingCatalogUpdates.getCatalogs(subspace) + } + ); + for (const update of this.#getUpdates( + mismatchFinder, + versionByPackageName, + subspace, + pendingCatalogUpdates + )) { + this.updateProject(update); + allPackageUpdates.set(update.project.filePath, update.project); + } } } @@ -235,24 +356,27 @@ export class PackageJsonUpdater { { concurrency: 10 } ); - if (!skipUpdate) { - if (this.#rushConfiguration.subspacesFeatureEnabled) { - const subspaceSet: ReadonlySet = this.#rushConfiguration.getSubspacesForProjects( - options.projects - ); - for (const subspace of subspaceSet) { - await this.#doUpdateAsync(debugInstall, subspace, variant); - } - } else { - await this.#doUpdateAsync(debugInstall, this.#rushConfiguration.defaultSubspace, variant); - } + const subspacesToUpdate: ReadonlySet = skipUpdate + ? new Set() + : this.#getSubspacesToUpdate(projects); + await pendingCatalogUpdates.saveAsync(this.#terminal, subspacesToUpdate); + + for (const subspace of subspacesToUpdate) { + await this.#doUpdateAsync(debugInstall, subspace, variant); } } public async doRushUpdateAsync(options: IPackageJsonUpdaterRushBaseUpdateOptions): Promise { + const pendingCatalogUpdates: PendingPnpmCatalogUpdates = new PendingPnpmCatalogUpdates( + this.#rushConfiguration + ); + let allPackageUpdates: IUpdateProjectOptions[] = []; if (options.actionName === 'add') { - allPackageUpdates = await this.#doRushAddAsync(options as IPackageJsonUpdaterRushAddOptions); + allPackageUpdates = await this.#doRushAddAsync( + options as IPackageJsonUpdaterRushAddOptions, + pendingCatalogUpdates + ); } else if (options.actionName === 'remove') { allPackageUpdates = await this.#doRushRemoveAsync(options as IPackageJsonUpdaterRushRemoveOptions); } else { @@ -271,17 +395,24 @@ export class PackageJsonUpdater { { concurrency: 10 } ); - if (!skipUpdate) { - if (this.#rushConfiguration.subspacesFeatureEnabled) { - const subspaceSet: ReadonlySet = this.#rushConfiguration.getSubspacesForProjects( - options.projects - ); - for (const subspace of subspaceSet) { - await this.#doUpdateAsync(debugInstall, subspace, variant); - } - } else { - await this.#doUpdateAsync(debugInstall, this.#rushConfiguration.defaultSubspace, variant); - } + const subspacesToUpdate: ReadonlySet = skipUpdate + ? new Set() + : this.#getSubspacesToUpdate(options.projects); + await pendingCatalogUpdates.saveAsync(this.#terminal, subspacesToUpdate); + + for (const subspace of subspacesToUpdate) { + await this.#doUpdateAsync(debugInstall, subspace, variant); + } + } + + /** + * Returns the subspaces that "rush update" runs for after the package.json files of the projects are changed. + */ + #getSubspacesToUpdate(projects: Iterable): ReadonlySet { + if (this.#rushConfiguration.subspacesFeatureEnabled) { + return this.#rushConfiguration.getSubspacesForProjects(projects); + } else { + return new Set([this.#rushConfiguration.defaultSubspace]); } } @@ -331,7 +462,8 @@ export class PackageJsonUpdater { * Adds a dependency to a particular project. The core business logic for "rush add". */ async #doRushAddAsync( - options: IPackageJsonUpdaterRushAddOptions + options: IPackageJsonUpdaterRushAddOptions, + pendingCatalogUpdates: PendingPnpmCatalogUpdates ): Promise { const { projects } = options; @@ -347,7 +479,9 @@ export class PackageJsonUpdater { const subspaceSet: ReadonlySet = this.#rushConfiguration.getSubspacesForProjects(projects); for (const subspace of subspaceSet) { // Projects for this subspace - allPackageUpdates.push(...(await this.#updateProjectsAsync(subspace, dependencyAnalyzer, options))); + allPackageUpdates.push( + ...(await this.#updateProjectsAsync(subspace, dependencyAnalyzer, options, pendingCatalogUpdates)) + ); } return allPackageUpdates; @@ -356,7 +490,8 @@ export class PackageJsonUpdater { async #updateProjectsAsync( subspace: Subspace, dependencyAnalyzer: DependencyAnalyzer, - options: IPackageJsonUpdaterRushAddOptions + options: IPackageJsonUpdaterRushAddOptions, + pendingCatalogUpdates: PendingPnpmCatalogUpdates ): Promise { const { projects, packagesToUpdate, devDependency, peerDependency, updateOtherPackages, variant } = options; @@ -366,39 +501,63 @@ export class PackageJsonUpdater { (project) => project.subspace === subspace ); - const { - allVersionsByPackageName, - implicitlyPreferredVersionByPackageName, - commonVersionsConfiguration - }: IDependencyAnalysis = dependencyAnalyzer.getAnalysis(subspace, variant, options.actionName === 'add'); + const analysis: IDependencyAnalysis = dependencyAnalyzer.getAnalysis( + subspace, + variant, + options.actionName === 'add' + ); + const { allVersionsByPackageName, commonVersionsConfiguration } = analysis; - this.#terminal.writeLine(); - const dependenciesToAddOrUpdate: Record = {}; - for (const { packageName, version: initialVersion, rangeStyle } of packagesToUpdate) { - const implicitlyPreferredVersion: string | undefined = - implicitlyPreferredVersionByPackageName.get(packageName); + const dependencyType: DependencyType | undefined = devDependency + ? DependencyType.Dev + : peerDependency + ? DependencyType.Peer + : undefined; - const explicitlyPreferredVersion: string | undefined = - commonVersionsConfiguration.preferredVersions.get(packageName); + // Each project gets its own record, because a project that references a package through a PNPM catalog + // keeps its catalog reference. + const projectUpdates: IUpdateProjectOptions[] = subspaceProjects.map((project) => ({ + project: new VersionMismatchFinderProject(project), + dependenciesToAddOrUpdateOrRemove: {}, + dependencyType + })); - const version: string = await this.#getNormalizedVersionSpecAsync( + // The version that each package resolves to. This is never a catalog reference. + const versionByPackageName: Map = new Map(); + + this.#terminal.writeLine(); + for (const packageToUpdate of packagesToUpdate) { + const { packageName } = packageToUpdate; + const selectedVersion: IRushAddSelectedVersion = await this.#getRushAddVersionAsync( + subspace, subspaceProjects, - packageName, - initialVersion, - implicitlyPreferredVersion, - explicitlyPreferredVersion, - rangeStyle, - commonVersionsConfiguration.ensureConsistentVersions + projectUpdates, + packageToUpdate, + analysis, + updateOtherPackages, + pendingCatalogUpdates ); + const { version, versionSpecifier } = selectedVersion; - dependenciesToAddOrUpdate[packageName] = version; + versionByPackageName.set(packageName, version); this.#terminal.writeLine( Colorize.green('Updating projects to use '), `${packageName}@`, - Colorize.cyan(version) + Colorize.cyan(versionSpecifier === version ? version : `${versionSpecifier} (${version})`) ); this.#terminal.writeLine(); + for (const projectUpdate of projectUpdates) { + projectUpdate.dependenciesToAddOrUpdateOrRemove[packageName] = this.#getRushAddVersionSpecifier( + projectUpdate, + packageName, + selectedVersion, + subspace, + updateOtherPackages, + pendingCatalogUpdates + ); + } + const existingSpecifiedVersions: Set | undefined = allVersionsByPackageName.get(packageName); if ( existingSpecifiedVersions && @@ -408,62 +567,565 @@ export class PackageJsonUpdater { ) { // There are existing versions, and the version we're going to use is not one of them, and this repo // requires consistent versions, and we aren't going to update other packages, so we can't proceed. + this.#throwMismatchedVersionsError(packageName, version, existingSpecifiedVersions); + } + } + + this.updateProjects(projectUpdates); + + // we need to do a mismatch check + let otherPackageUpdates: IUpdateProjectOptions[] = []; + if (updateOtherPackages) { + const mismatchFinder: VersionMismatchFinder = VersionMismatchFinder.getMismatches( + this.#rushConfiguration, + { + subspace, + variant, + pnpmCatalogs: pendingCatalogUpdates.getCatalogs(subspace) + } + ); + otherPackageUpdates = this.#getUpdates( + mismatchFinder, + versionByPackageName, + subspace, + pendingCatalogUpdates + ); + this.updateProjects(otherPackageUpdates); + } + + return [...projectUpdates, ...otherPackageUpdates]; + } + + /** + * Selects the version of a package that "rush add" adds to the projects of a subspace. + * + * @remarks + * If the PNPM catalogs of the subspace have an entry for the package, a catalog reference is selected when + * the catalog entry matches the requested version (or when no version was requested), like PNPM's + * `catalogMode: prefer` setting. If the "--make-consistent" flag was specified, the catalog entry is + * updated to the requested version. + */ + async #getRushAddVersionAsync( + subspace: Subspace, + subspaceProjects: RushConfigurationProject[], + projectUpdates: IUpdateProjectOptions[], + { packageName, version: initialVersion, rangeStyle }: IPackageForRushAdd, + { + implicitlyPreferredVersionByPackageName, + commonVersionsConfiguration, + catalogNamesByPackageName + }: IDependencyAnalysis, + updateOtherPackages: boolean, + pendingCatalogUpdates: PendingPnpmCatalogUpdates + ): Promise { + const catalogs: PnpmCatalogs | undefined = pendingCatalogUpdates.getCatalogs(subspace); + const getCatalogVersion: (catalogName: string) => string | undefined = (catalogName: string) => + tryGetPnpmCatalogVersion(catalogs, catalogName, packageName); + + const explicitCatalogName: string | undefined = + initialVersion === undefined ? undefined : tryParsePnpmCatalogName(initialVersion); + if (explicitCatalogName !== undefined) { + const versionSpecifier: string = formatPnpmCatalogSpecifier(explicitCatalogName); + const version: string = this.#getExplicitCatalogVersion( + subspace, + catalogs, + explicitCatalogName, + packageName, + initialVersion!, + pendingCatalogUpdates + ); + this.#terminal.writeLine( + Colorize.green('Assigning "') + + Colorize.cyan(versionSpecifier) + + Colorize.green(`" for "${packageName}", which is "${version}" in the PNPM catalog.`) + ); + return { + version, + versionSpecifier, + catalogName: explicitCatalogName, + isExplicitCatalogReference: true + }; + } + + const candidateCatalogNames: string[] = this.#getCatalogNamesWithPackage( + catalogs, + packageName, + subspaceProjects + ); + // Prefer the catalogs that the projects already reference the package through, then the catalogs that + // other projects reference it through + const preferredCatalogNames: Iterable[] = [ + this.#getReferencedCatalogNames(projectUpdates, packageName), + catalogNamesByPackageName.get(packageName) ?? [] + ]; + + if (candidateCatalogNames.length > 0) { + const matchingCatalogNames: string[] = + initialVersion === undefined + ? candidateCatalogNames + : candidateCatalogNames.filter((catalogName) => getCatalogVersion(catalogName) === initialVersion); + const catalogName: string | undefined = this.#trySelectCatalogName( + matchingCatalogNames, + preferredCatalogNames + ); + if (catalogName !== undefined) { + return this.#getCatalogSelectedVersion(packageName, catalogName, getCatalogVersion(catalogName)!); + } + } + + const implicitlyPreferredVersion: string | undefined = + implicitlyPreferredVersionByPackageName.get(packageName); + const explicitlyPreferredVersion: string | undefined = + commonVersionsConfiguration.preferredVersions.get(packageName); + + const version: string = await this.#getNormalizedVersionSpecAsync( + subspaceProjects, + packageName, + initialVersion, + implicitlyPreferredVersion, + explicitlyPreferredVersion, + rangeStyle, + commonVersionsConfiguration.ensureConsistentVersions + ); + + const literalVersion: IRushAddSelectedVersion = { + version, + versionSpecifier: version, + catalogName: undefined, + isExplicitCatalogReference: false + }; + if (candidateCatalogNames.length === 0) { + return literalVersion; + } - const existingVersionList: string = Array.from(existingSpecifiedVersions).join(', '); - throw new Error( - `Adding '${packageName}@${version}' ` + - `causes mismatched dependencies. Use the "${MAKE_CONSISTENT_FLAG_NAME}" flag to update other packages to use ` + - `this version, or try specify one of the existing versions (${existingVersionList}).` + const catalogNamesWithVersion: string[] = candidateCatalogNames.filter( + (catalogName) => getCatalogVersion(catalogName) === version + ); + const catalogName: string | undefined = this.#trySelectCatalogName( + catalogNamesWithVersion, + preferredCatalogNames + ); + if (catalogName !== undefined) { + return this.#getCatalogSelectedVersion(packageName, catalogName, version); + } + + const canUpdateCatalog: boolean = + catalogNamesWithVersion.length === 0 && initialVersion !== undefined && updateOtherPackages; + if (canUpdateCatalog) { + const catalogNameToUpdate: string | undefined = this.#trySelectCatalogName( + candidateCatalogNames, + preferredCatalogNames + ); + if (catalogNameToUpdate !== undefined) { + pendingCatalogUpdates.setVersion(subspace, catalogNameToUpdate, packageName, version); + this.#terminal.writeLine( + `Updating "${packageName}" in the PNPM catalog "${formatPnpmCatalogSpecifier(catalogNameToUpdate)}" ` + + `to "${version}" because the "${MAKE_CONSISTENT_FLAG_NAME}" flag was specified.` ); + return this.#getCatalogSelectedVersion(packageName, catalogNameToUpdate, version); } } - const allPackageUpdates: IUpdateProjectOptions[] = []; + const catalogList: string = candidateCatalogNames + .map((name) => `"${formatPnpmCatalogSpecifier(name)}" (${getCatalogVersion(name)})`) + .join(', '); + const isVersionMismatch: boolean = catalogNamesWithVersion.length === 0 && initialVersion !== undefined; + const reason: string = isVersionMismatch + ? `"${version}" for "${packageName}" is different from the PNPM ` + + (candidateCatalogNames.length === 1 + ? `catalog entry ${catalogList}` + : `catalog entries ${catalogList}`) + : `Rush could not choose between the PNPM catalogs ${catalogList} for "${packageName}"`; + const catalogSpecifierExample: string = + candidateCatalogNames.length === 1 + ? formatPnpmCatalogSpecifier(candidateCatalogNames[0]) + : `${PNPM_CATALOG_PROTOCOL}`; + this.#terminal.writeLine( + Colorize.yellow( + `Note: ${reason}, so the version "${version}" is assigned instead of a catalog reference. ` + + `To reference a catalog, specify "${packageName}@${catalogSpecifierExample}"` + + (isVersionMismatch && !updateOtherPackages + ? `, or use the "${MAKE_CONSISTENT_FLAG_NAME}" flag to update the catalog entry.` + : '.') + ) + ); + return literalVersion; + } - for (const project of subspaceProjects) { - const currentProjectUpdate: IUpdateProjectOptions = { - project: new VersionMismatchFinderProject(project), - dependenciesToAddOrUpdateOrRemove: dependenciesToAddOrUpdate, - dependencyType: devDependency ? DependencyType.Dev : peerDependency ? DependencyType.Peer : undefined - }; - this.updateProject(currentProjectUpdate); + #getCatalogSelectedVersion( + packageName: string, + catalogName: string, + version: string + ): IRushAddSelectedVersion { + const versionSpecifier: string = formatPnpmCatalogSpecifier(catalogName); + this.#terminal.writeLine( + Colorize.green('Assigning "') + + Colorize.cyan(versionSpecifier) + + Colorize.green(`" for "${packageName}" because it is "${version}" in the PNPM catalog.`) + ); + return { version, versionSpecifier, catalogName, isExplicitCatalogReference: false }; + } + + /** + * Returns the version from the catalog entry that an explicitly specified catalog reference refers to, + * such as `rush add --package example@catalog:tools`. + */ + #getExplicitCatalogVersion( + subspace: Subspace, + catalogs: PnpmCatalogs | undefined, + catalogName: string, + packageName: string, + versionSpecifier: string, + pendingCatalogUpdates: PendingPnpmCatalogUpdates + ): string { + if (!this.#rushConfiguration.isPnpm) { + throw new Error( + `The version specifier "${versionSpecifier}" for "${packageName}" references a PNPM catalog, ` + + 'but catalogs are only supported when the package manager is PNPM.' + ); + } - let otherPackageUpdates: IUpdateProjectOptions[] = []; + const version: string | undefined = tryGetPnpmCatalogVersion(catalogs, catalogName, packageName); + if (version !== undefined) { + return version; + } - // we need to do a mismatch check - if (updateOtherPackages) { - const mismatchFinder: VersionMismatchFinder = VersionMismatchFinder.getMismatches( - this.#rushConfiguration, - { - subspace, - variant - } + const pnpmConfigFilePath: string = pendingCatalogUpdates.getPnpmConfigFilePath(subspace); + if (!catalogs || !Object.prototype.hasOwnProperty.call(catalogs, catalogName)) { + throw new Error( + `The PNPM catalog "${catalogName}" that "${packageName}@${versionSpecifier}" references is not ` + + `defined in the "globalCatalogs" setting of ${pnpmConfigFilePath}.` + ); + } + + throw new Error( + `The PNPM catalog "${catalogName}" in ${pnpmConfigFilePath} does not have an entry for ` + + `"${packageName}". Add "${packageName}" to the catalog, or specify a version instead of ` + + `"${versionSpecifier}".` + ); + } + + /** + * Returns the names of the catalogs that have an entry for the package. Rush only references a catalog + * implicitly for packages that are not local projects linked with the "workspace:" protocol. + */ + #getCatalogNamesWithPackage( + catalogs: PnpmCatalogs | undefined, + packageName: string, + projects: RushConfigurationProject[] + ): string[] { + if (!catalogs) { + return []; + } + + if ( + this.#rushConfiguration.projectsByName.has(packageName) && + projects.some((project) => !project.decoupledLocalDependencies.has(packageName)) + ) { + return []; + } + + return Object.keys(catalogs).filter( + (catalogName) => tryGetPnpmCatalogVersion(catalogs, catalogName, packageName) !== undefined + ); + } + + /** + * Returns the names of the catalogs that the projects reference the package through. + */ + #getReferencedCatalogNames(projectUpdates: IUpdateProjectOptions[], packageName: string): Set { + const result: Set = new Set(); + for (const { project, dependencyType } of projectUpdates) { + const versionSpecifier: string | undefined = this.#tryGetExistingDependency( + project, + packageName, + dependencyType + )?.version; + const catalogName: string | undefined = + versionSpecifier === undefined ? undefined : tryParsePnpmCatalogName(versionSpecifier); + if (catalogName !== undefined) { + result.add(catalogName); + } + } + + return result; + } + + /** + * Chooses one of the catalogs. Catalogs from the first of the `preferredCatalogNames` sets that includes any + * of them are considered first. Among those, a single catalog or else the default catalog is chosen. + * Returns `undefined` if the choice is ambiguous. + */ + #trySelectCatalogName( + catalogNames: string[], + preferredCatalogNames: Iterable[] + ): string | undefined { + const selectFrom: (names: string[]) => string | undefined = (names: string[]) => { + if (names.length === 1) { + return names[0]; + } + + return names.includes(DEFAULT_PNPM_CATALOG_NAME) ? DEFAULT_PNPM_CATALOG_NAME : undefined; + }; + + if (catalogNames.length <= 1) { + return catalogNames[0]; + } + + for (const preferredNames of preferredCatalogNames) { + const preferredNameSet: ReadonlySet = new Set(preferredNames); + const preferredCatalogNamesToSelectFrom: string[] = catalogNames.filter((name) => + preferredNameSet.has(name) + ); + if (preferredCatalogNamesToSelectFrom.length > 0) { + return selectFrom(preferredCatalogNamesToSelectFrom); + } + } + + return selectFrom(catalogNames); + } + + /** + * Returns the version specifier that "rush add" writes for the package in a project. + * + * @remarks + * If the project already references the package through a PNPM catalog, the reference is kept, because + * replacing it would silently detach the project from the catalog. If the catalog entry has a different + * version, it is updated when the "--make-consistent" flag was specified; otherwise this throws. + */ + #getRushAddVersionSpecifier( + { project, dependencyType }: IUpdateProjectOptions, + packageName: string, + { version, versionSpecifier, isExplicitCatalogReference }: IRushAddSelectedVersion, + subspace: Subspace, + updateOtherPackages: boolean, + pendingCatalogUpdates: PendingPnpmCatalogUpdates + ): string { + if (isExplicitCatalogReference) { + return versionSpecifier; + } + + const existingVersionSpecifier: string | undefined = this.#tryGetExistingDependency( + project, + packageName, + dependencyType + )?.version; + if (existingVersionSpecifier === undefined) { + return versionSpecifier; + } + + const catalogReference: IPnpmCatalogReference | undefined = tryResolvePnpmCatalogReference( + packageName, + existingVersionSpecifier, + pendingCatalogUpdates.getCatalogs(subspace) + ); + if (!catalogReference) { + return versionSpecifier; + } + + if (catalogReference.resolvedVersion === undefined) { + this.#terminal.writeWarningLine( + `"${project.friendlyName}" references "${packageName}" through "${existingVersionSpecifier}", but ` + + `that PNPM catalog does not have an entry for it. Replacing the reference with "${versionSpecifier}".` + ); + return versionSpecifier; + } + + if (catalogReference.resolvedVersion === version) { + return existingVersionSpecifier; + } + + const pnpmConfigFilePath: string = pendingCatalogUpdates.getPnpmConfigFilePath(subspace); + if (updateOtherPackages) { + pendingCatalogUpdates.setVersion(subspace, catalogReference.catalogName, packageName, version); + this.#terminal.writeLine( + `Updating "${packageName}" in the PNPM catalog ` + + `"${formatPnpmCatalogSpecifier(catalogReference.catalogName)}" to "${version}" because ` + + `"${project.friendlyName}" references it.` + ); + return existingVersionSpecifier; + } + + throw new Error( + `"${project.friendlyName}" references "${packageName}" through the PNPM catalog reference ` + + `"${existingVersionSpecifier}", which is "${catalogReference.resolvedVersion}". Rush will not replace ` + + `the catalog reference with "${versionSpecifier}". Use the "${MAKE_CONSISTENT_FLAG_NAME}" flag to ` + + `update the catalog entry in ${pnpmConfigFilePath} to "${version}", or specify ` + + `"${packageName}@${existingVersionSpecifier}" to keep the catalog version.` + ); + } + + /** + * Returns the existing dependency that {@link PackageJsonUpdater.updateProject} replaces when it adds the + * package with the specified dependency type. + */ + #tryGetExistingDependency( + project: VersionMismatchFinderEntity, + packageName: string, + dependencyType: DependencyType | undefined + ): PackageJsonDependency | undefined { + switch (dependencyType) { + case undefined: + return project.tryGetDevDependency(packageName) ?? project.tryGetDependency(packageName); + case DependencyType.Dev: + return project.tryGetDevDependency(packageName); + default: + return project.tryGetDependency(packageName); + } + } + + /** + * If the project references the package through a PNPM catalog that has an entry for it, returns the + * catalog reference. A reference to a catalog without an entry for the package is reported. + */ + #tryGetResolvedCatalogReference( + project: VersionMismatchFinderEntity, + packageName: string, + dependencyType: DependencyType, + catalogs: PnpmCatalogs | undefined + ): IPnpmCatalogReference | undefined { + const versionSpecifier: string | undefined = this.#tryGetExistingDependency( + project, + packageName, + dependencyType + )?.version; + if (versionSpecifier === undefined) { + return undefined; + } + + const catalogReference: IPnpmCatalogReference | undefined = tryResolvePnpmCatalogReference( + packageName, + versionSpecifier, + catalogs + ); + if (catalogReference?.resolvedVersion === undefined) { + if (catalogReference) { + this.#terminal.writeWarningLine( + `"${project.friendlyName}" references "${packageName}" through "${versionSpecifier}", but that ` + + 'PNPM catalog does not have an entry for it. Replacing the reference with a version.' ); - otherPackageUpdates = this.#getUpdates(mismatchFinder, Object.entries(dependenciesToAddOrUpdate)); } - this.updateProjects(otherPackageUpdates); + return undefined; + } + + return catalogReference; + } - allPackageUpdates.push(currentProjectUpdate, ...otherPackageUpdates); + /** + * Returns the version specifiers that the projects in the repo will use for the package after an upgrade, + * resolving PNPM catalog references with the pending catalog changes. Peer dependencies and "workspace:" + * references are ignored, like {@link IDependencyAnalysis.allVersionsByPackageName}. + */ + #getVersionsAfterUpgrade( + packageName: string, + version: string, + dependencyType: DependencyType, + projectUpdatesByProject: ReadonlyMap, + pendingCatalogUpdates: PendingPnpmCatalogUpdates + ): Set { + const result: Set = new Set(); + for (const project of this.#rushConfiguration.projects) { + const { packageJsonEditor } = project; + for (const dependency of [ + packageJsonEditor.tryGetDependency(packageName), + packageJsonEditor.tryGetDevDependency(packageName) + ]) { + if (!dependency || dependency.dependencyType === DependencyType.Peer) { + continue; + } + + let dependencyVersion: string = dependency.version; + const catalogName: string | undefined = tryParsePnpmCatalogName(dependencyVersion); + if (catalogName !== undefined) { + const catalogVersion: string | undefined = tryGetPnpmCatalogVersion( + pendingCatalogUpdates.getCatalogs(project.subspace), + catalogName, + packageName + ); + if (catalogVersion === undefined) { + continue; + } + + dependencyVersion = catalogVersion; + } else if ( + projectUpdatesByProject.has(project) && + (dependency.dependencyType === DependencyType.Dev) === (dependencyType === DependencyType.Dev) + ) { + // The upgrade replaces this version + dependencyVersion = version; + } + + if (!dependencyVersion.startsWith('workspace:')) { + result.add(dependencyVersion); + } + } } - return allPackageUpdates; + return result; } + #throwMismatchedVersionsError( + packageName: string, + version: string, + existingVersions: Iterable + ): never { + const existingVersionList: string = Array.from(existingVersions).join(', '); + throw new Error( + `Adding '${packageName}@${version}' ` + + `causes mismatched dependencies. Use the "${MAKE_CONSISTENT_FLAG_NAME}" flag to update other packages to use ` + + `this version, or try specify one of the existing versions (${existingVersionList}).` + ); + } + + /** + * Returns the changes that make the other projects (and common-versions.json) consistent with the new versions. + * + * @remarks + * A project that references a package through a PNPM catalog keeps its catalog reference; the catalog + * entry is updated instead. + */ #getUpdates( mismatchFinder: VersionMismatchFinder, - dependenciesToUpdate: Iterable<[string, string]> + versionByPackageName: ReadonlyMap, + subspace: Subspace, + pendingCatalogUpdates: PendingPnpmCatalogUpdates ): IUpdateProjectOptions[] { const result: IUpdateProjectOptions[] = []; const { mismatches } = mismatchFinder; - for (const [packageName, version] of dependenciesToUpdate) { + for (const [packageName, version] of versionByPackageName) { const projectsByVersion: ReadonlyMap> | undefined = mismatches.get(packageName); if (projectsByVersion) { - for (const consumers of projectsByVersion.values()) { + for (const [existingVersion, consumers] of projectsByVersion) { for (const consumer of consumers) { + // Never replace a PNPM catalog reference with a literal version: that would silently detach the + // project from the catalog. Update the catalog entry instead. + const catalogVersionSpecifier: string | undefined = this.#tryGetCatalogVersionSpecifierToUpdate( + consumer, + packageName + ); + if (catalogVersionSpecifier !== undefined) { + if (existingVersion !== version) { + const catalogName: string = tryParsePnpmCatalogName(catalogVersionSpecifier)!; + if ( + tryGetPnpmCatalogVersion( + pendingCatalogUpdates.getCatalogs(subspace), + catalogName, + packageName + ) === undefined + ) { + this.#reportUnresolvedCatalogReference(consumer, packageName, catalogVersionSpecifier); + } else { + pendingCatalogUpdates.setVersion(subspace, catalogName, packageName, version); + } + } + + continue; + } + result.push({ project: consumer, dependenciesToAddOrUpdateOrRemove: { @@ -478,12 +1140,47 @@ export class PackageJsonUpdater { return result; } + /** + * If {@link PackageJsonUpdater.updateProject} would overwrite a PNPM catalog reference (such as `catalog:`) + * when it updates the package in the project, returns that version specifier. + */ + #tryGetCatalogVersionSpecifierToUpdate( + project: VersionMismatchFinderEntity, + packageName: string + ): string | undefined { + // Matches the dependency that updateProject() updates when it is not given a dependency type + const versionSpecifier: string | undefined = this.#tryGetExistingDependency( + project, + packageName, + undefined + )?.version; + return versionSpecifier !== undefined && tryParsePnpmCatalogName(versionSpecifier) !== undefined + ? versionSpecifier + : undefined; + } + + #reportUnresolvedCatalogReference( + project: VersionMismatchFinderEntity, + packageName: string, + catalogVersionSpecifier: string + ): void { + const key: string = `${project.friendlyName}\0${packageName}`; + if (this.#reportedCatalogReferences.has(key)) { + return; + } + + this.#reportedCatalogReferences.add(key); + this.#terminal.writeWarningLine( + `Not updating "${packageName}" in "${project.friendlyName}" because its PNPM catalog reference ` + + `"${catalogVersionSpecifier}" does not resolve: the catalog does not have an entry for ` + + `"${packageName}". Add the entry to the catalog in pnpm-config.json.` + ); + } + /** * Remove a dependency from a particular project. The core business logic for "rush remove". */ - async #doRushRemoveAsync( - options: IPackageJsonUpdaterRushRemoveOptions - ): Promise { + async #doRushRemoveAsync(options: IPackageJsonUpdaterRushRemoveOptions): Promise { const { projects, packagesToUpdate } = options; this.#terminal.writeLine(); @@ -803,9 +1500,7 @@ export class PackageJsonUpdater { return normalizedVersion; } - #collectAllDownstreamDependencies( - project: RushConfigurationProject - ): Set { + #collectAllDownstreamDependencies(project: RushConfigurationProject): Set { const allProjectDownstreamDependencies: Set = new Set(); diff --git a/libraries/rush-lib/src/logic/ProjectChangeAnalyzer.ts b/libraries/rush-lib/src/logic/ProjectChangeAnalyzer.ts index 2720d5504c5..08b3ac023da 100644 --- a/libraries/rush-lib/src/logic/ProjectChangeAnalyzer.ts +++ b/libraries/rush-lib/src/logic/ProjectChangeAnalyzer.ts @@ -34,8 +34,13 @@ import type { RushConfigurationProject } from '../api/RushConfigurationProject'; import { BaseProjectShrinkwrapFile } from './base/BaseProjectShrinkwrapFile'; import { PnpmShrinkwrapFile } from './pnpm/PnpmShrinkwrapFile'; import { Git } from './Git'; -import { DependencySpecifier, DependencySpecifierType } from './DependencySpecifier'; -import type { IPnpmOptionsJson, PnpmOptionsConfiguration } from './pnpm/PnpmOptionsConfiguration'; +import type { IPnpmOptionsJson } from './pnpm/PnpmOptionsConfiguration'; +import { tryParsePnpmCatalogName } from './pnpm/PnpmCatalogReference'; +import { + getCommonPnpmConfigFilePath, + getEffectivePnpmOptions, + type IEffectivePnpmOptions +} from './pnpm/EffectivePnpmOptions'; import { type IInputsSnapshotProjectMetadata, type IInputsSnapshot, @@ -620,8 +625,12 @@ export class ProjectChangeAnalyzer { } /** - * Detects changes to pnpm catalog entries in a subspace's pnpm-config.json and marks - * affected projects as changed. + * Detects changes to pnpm catalog entries in the pnpm-config.json that is in effect for a subspace + * and marks affected projects as changed. + * + * @remarks + * If the subspace has no pnpm-config.json of its own, install uses `common/config/rush/pnpm-config.json`, + * so that file is diffed instead. See {@link getEffectivePnpmOptions}. */ async #detectCatalogChangesAsync( subspace: Subspace, @@ -632,29 +641,60 @@ export class ProjectChangeAnalyzer { terminal: ITerminal, changedProjects: Set ): Promise { - const pnpmOptions: PnpmOptionsConfiguration | undefined = subspace.getPnpmOptions(); - // Default to an empty object if no global catalogs are configured, handle case of globalCatalogs being deleted - const currentCatalogs: Record> = pnpmOptions?.globalCatalogs ?? {}; + const toRepoRelativePath = (filePath: string): string => + Path.convertToSlashes(path.relative(repoRoot, filePath)); - const pnpmConfigRelativePath: string = Path.convertToSlashes( - path.relative(repoRoot, subspace.getPnpmConfigFilePath()) + const effectivePnpmOptions: IEffectivePnpmOptions = getEffectivePnpmOptions(subspace, rushConfiguration); + const subspacePnpmConfigRelativePath: string = toRepoRelativePath(subspace.getPnpmConfigFilePath()); + const commonPnpmConfigRelativePath: string = toRepoRelativePath( + getCommonPnpmConfigFilePath(rushConfiguration) ); - if (!changedFiles.has(pnpmConfigRelativePath)) { + // The catalogs for this subspace can only have changed if the subspace's own pnpm-config.json was + // added, modified, or deleted, or if the subspace falls back to the common pnpm-config.json and that + // file changed. (When subspaces are disabled, both paths are the same file.) + if ( + !changedFiles.has(subspacePnpmConfigRelativePath) && + !(effectivePnpmOptions.isFallback && changedFiles.has(commonPnpmConfigRelativePath)) + ) { return; } + // Default to an empty object if no global catalogs are configured, handle case of globalCatalogs being deleted + const currentCatalogs: Record> = effectivePnpmOptions.pnpmOptions + .globalCatalogs ?? {}; + // Determine which specific packages changed within each catalog namespace // Maps catalogNamespace (e.g. "default", "react17") → Set of changed package names let oldCatalogs: Record> | undefined; - try { - const oldPnpmConfigText: string = await this.#git.getBlobContentAsync({ - blobSpec: `${mergeCommit}:${pnpmConfigRelativePath}`, - repositoryRoot: repoRoot - }); - const oldPnpmConfig: IPnpmOptionsJson = JsonFile.parseString(oldPnpmConfigText); - oldCatalogs = oldPnpmConfig.globalCatalogs ?? {}; - } catch { + // Apply the same fallback to the merge commit: the subspace's own pnpm-config.json if it existed, + // otherwise the common pnpm-config.json. + const oldPnpmConfigCandidatePaths: Set = new Set([ + subspacePnpmConfigRelativePath, + commonPnpmConfigRelativePath + ]); + for (const oldPnpmConfigRelativePath of oldPnpmConfigCandidatePaths) { + let oldPnpmConfigText: string; + try { + oldPnpmConfigText = await this.#git.getBlobContentAsync({ + blobSpec: `${mergeCommit}:${oldPnpmConfigRelativePath}`, + repositoryRoot: repoRoot + }); + } catch { + // The file didn't exist in the merge commit; try the next candidate + continue; + } + + try { + const oldPnpmConfig: IPnpmOptionsJson = JsonFile.parseString(oldPnpmConfigText); + oldCatalogs = oldPnpmConfig.globalCatalogs ?? {}; + } catch { + // Unparseable; fall through and treat all packages as changed + } + break; + } + + if (oldCatalogs === undefined) { // Old file didn't exist or was unparseable — treat all packages in all current catalogs as changed if (rushConfiguration.subspacesFeatureEnabled) { terminal.writeWarningLine( @@ -723,10 +763,8 @@ export class ProjectChangeAnalyzer { ); for (const [depName, depVersion] of allDependencies) { - const specifier: DependencySpecifier = DependencySpecifier.parseWithCache(depName, depVersion); - if (specifier.specifierType === DependencySpecifierType.Catalog) { - // versionSpecifier holds the catalog name (empty string for "catalog:") - const catalogName: string = specifier.versionSpecifier || 'default'; + const catalogName: string | undefined = tryParsePnpmCatalogName(depVersion); + if (catalogName !== undefined) { const changedPkgs: Set | undefined = changedCatalogPackages.get(catalogName); if (changedPkgs?.has(depName)) { changedProjects.add(project); diff --git a/libraries/rush-lib/src/logic/base/BaseInstallManager.ts b/libraries/rush-lib/src/logic/base/BaseInstallManager.ts index 9ff25e2aa62..adac7984e2f 100644 --- a/libraries/rush-lib/src/logic/base/BaseInstallManager.ts +++ b/libraries/rush-lib/src/logic/base/BaseInstallManager.ts @@ -55,6 +55,7 @@ import type { IInstallManagerOptions } from './BaseInstallManagerTypes'; import { isVariableSetInNpmrcFile } from '../../utilities/npmrcUtilities'; import type { PnpmResolutionMode } from '../pnpm/PnpmOptionsConfiguration'; import { SubspacePnpmfileConfiguration } from '../pnpm/SubspacePnpmfileConfiguration'; +import { getEffectivePnpmOptions } from '../pnpm/EffectivePnpmOptions'; import type { Subspace } from '../../api/Subspace'; import { ProjectImpactGraphGenerator } from '../ProjectImpactGraphGenerator'; import { FlagFile } from '../../api/FlagFile'; @@ -426,8 +427,11 @@ export abstract class BaseInstallManager { // Add common-versions.json file to the potentially changed files list. potentiallyChangedFiles.push(subspace.getCommonVersionsFilePath(variant)); - // Add pnpm-config.json file to the potentially changed files list. - potentiallyChangedFiles.push(subspace.getPnpmConfigFilePath()); + // Add the pnpm-config.json file that is in effect for this subspace to the potentially changed files list. + // If the subspace has no pnpm-config.json of its own, this is common/config/rush/pnpm-config.json. + potentiallyChangedFiles.push( + getEffectivePnpmOptions(subspace, this.rushConfiguration).pnpmConfigFilePath + ); if (this.rushConfiguration.isPnpm) { // If the repo is using pnpmfile.js, consider that also @@ -924,7 +928,22 @@ ${gitLfsHookHandling} const { configuration: experiments } = this.rushConfiguration.experimentsConfiguration; if (experiments.usePnpmFrozenLockfileForRushInstall && !allowShrinkwrapUpdates) { - args.push('--frozen-lockfile'); + if ( + semver.gte(this.rushConfiguration.packageManagerToolVersion, '12.0.0') && + subspace.getPackageJsonInjectedDependenciesHash(options.variant) !== undefined + ) { + // Native PNPM's frozen-lockfile check reads injected workspace manifests without applying + // pnpmfile hooks, and rejects "workspace:" targets outside the PNPM workspace root. Every Rush + // project is outside common/temp, so that check always fails. Rush has already verified that + // the committed shrinkwrap satisfies all package.json files, so prefer the lockfile instead. + this._terminal.writeLine( + `PNPM ${this.rushConfiguration.packageManagerToolVersion} cannot verify injected workspace ` + + 'dependencies with "--frozen-lockfile"; using "--prefer-frozen-lockfile" instead.' + ); + args.push('--no-frozen-lockfile', '--prefer-frozen-lockfile'); + } else { + args.push('--frozen-lockfile'); + } if ( pnpmFilterArgumentValues.length > 0 && diff --git a/libraries/rush-lib/src/logic/installManager/InstallHelpers.ts b/libraries/rush-lib/src/logic/installManager/InstallHelpers.ts index 1d1eb22c5a6..6fcbb1bf649 100644 --- a/libraries/rush-lib/src/logic/installManager/InstallHelpers.ts +++ b/libraries/rush-lib/src/logic/installManager/InstallHelpers.ts @@ -20,6 +20,7 @@ import { Utilities } from '../../utilities/Utilities'; import type { IConfigurationEnvironment } from '../base/BasePackageManagerOptionsConfiguration'; import type { PnpmOptionsConfiguration } from '../pnpm/PnpmOptionsConfiguration'; import { PnpmWorkspaceFile } from '../pnpm/PnpmWorkspaceFile'; +import { getEffectivePnpmOptions } from '../pnpm/EffectivePnpmOptions'; import { merge } from '../../utilities/objectUtilities'; import { getNpmrcEnvironmentVariables } from '../../utilities/npmrcUtilities'; import type { Subspace } from '../../api/Subspace'; @@ -156,7 +157,7 @@ export class InstallHelpers { // NOTE: the pnpm setting is `trustPolicyIgnoreAfter`, but the rush pnpm setting is `trustPolicyIgnoreAfterMinutes` trustPolicyIgnoreAfterMinutes: trustPolicyIgnoreAfter, unsupportedPackageJsonSettings - } = subspace.getPnpmOptions() || rushConfiguration.pnpmOptions; + } = getEffectivePnpmOptions(subspace, rushConfiguration).pnpmOptions; const pnpmVersion: string = rushConfiguration.packageManagerToolVersion; const isPnpm11: boolean = semver.gte(pnpmVersion, '11.0.0'); diff --git a/libraries/rush-lib/src/logic/pnpm/EffectivePnpmOptions.ts b/libraries/rush-lib/src/logic/pnpm/EffectivePnpmOptions.ts new file mode 100644 index 00000000000..0a8ea3b37fe --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/EffectivePnpmOptions.ts @@ -0,0 +1,160 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import type { RushConfiguration } from '../../api/RushConfiguration'; +import type { Subspace } from '../../api/Subspace'; +import { RushConstants } from '../RushConstants'; +import type { PnpmOptionsConfiguration } from './PnpmOptionsConfiguration'; + +/** + * PNPM catalog definitions, keyed by catalog name and then by package name. + * The default catalog (referenced as `catalog:` or `catalog:default`) uses the key `default`. + */ +export type PnpmCatalogs = Record>; + +/** + * The pnpm-config.json settings that are in effect for a subspace. + */ +export interface IEffectivePnpmOptions { + /** + * The PNPM options that Rush uses when installing the subspace. + */ + readonly pnpmOptions: PnpmOptionsConfiguration; + + /** + * The absolute path of the pnpm-config.json file that `pnpmOptions` was loaded from. + * + * @remarks + * When `isFallback` is true, this is `common/config/rush/pnpm-config.json`. That file might not exist + * if the repo still uses the legacy `pnpmOptions` field in rush.json. + */ + readonly pnpmConfigFilePath: string; + + /** + * True if the subspace does not have a pnpm-config.json of its own, so the options come from + * `common/config/rush/pnpm-config.json` (or the legacy `pnpmOptions` field in rush.json). + * + * @remarks + * When the subspaces feature is disabled, the subspace's own pnpm-config.json path is + * `common/config/rush/pnpm-config.json`, so this is only true if that file does not exist. + */ + readonly isFallback: boolean; +} + +/** + * Returns the pnpm-config.json settings that are in effect for the specified subspace. + * + * @remarks + * This mirrors the fallback that install uses: the subspace's own pnpm-config.json + * (see {@link Subspace.getPnpmConfigFilePath}) if it exists, otherwise + * {@link RushConfiguration.pnpmOptions}. Every consumer of the PNPM settings for a subspace + * (install, the repo-state.json catalog hash, change detection, and `rush-pnpm` sync-back) + * must use this function so that they cannot disagree. + */ +export function getEffectivePnpmOptions( + subspace: Subspace, + rushConfiguration: RushConfiguration +): IEffectivePnpmOptions { + const subspacePnpmOptions: PnpmOptionsConfiguration | undefined = subspace.getPnpmOptions(); + if (subspacePnpmOptions) { + return { + pnpmOptions: subspacePnpmOptions, + pnpmConfigFilePath: subspace.getPnpmConfigFilePath(), + isFallback: false + }; + } + + return { + pnpmOptions: rushConfiguration.pnpmOptions, + pnpmConfigFilePath: getCommonPnpmConfigFilePath(rushConfiguration), + isFallback: true + }; +} + +/** + * Returns the PNPM catalogs that Rush writes to the generated pnpm-workspace.yaml for the + * specified subspace, or `undefined` if no catalogs are defined or the package manager is not PNPM. + */ +export function getEffectivePnpmCatalogs( + subspace: Subspace, + rushConfiguration: RushConfiguration +): PnpmCatalogs | undefined { + if (!rushConfiguration.isPnpm) { + return undefined; + } + + const { globalCatalogs } = getEffectivePnpmOptions(subspace, rushConfiguration).pnpmOptions; + if (!globalCatalogs || Object.keys(globalCatalogs).length === 0) { + return undefined; + } + + return globalCatalogs; +} + +/** + * Returns the other subspaces whose effective pnpm-config.json is the same file as the + * specified subspace's effective pnpm-config.json. The specified subspace is not included. + * + * @remarks + * This can only return a non-empty array when the subspaces feature is enabled and the specified + * subspace falls back to `common/config/rush/pnpm-config.json`. Editing the catalogs in that file + * affects every returned subspace, so each of them needs `rush update` to refresh its lockfile. + */ +export function getOtherSubspacesSharingPnpmConfig( + subspace: Subspace, + rushConfiguration: RushConfiguration +): Subspace[] { + const { pnpmConfigFilePath } = getEffectivePnpmOptions(subspace, rushConfiguration); + const result: Subspace[] = []; + if (!rushConfiguration.subspacesFeatureEnabled) { + return result; + } + + for (const otherSubspace of rushConfiguration.subspaces) { + if ( + otherSubspace !== subspace && + getEffectivePnpmOptions(otherSubspace, rushConfiguration).pnpmConfigFilePath === pnpmConfigFilePath + ) { + result.push(otherSubspace); + } + } + + return result; +} + +/** + * Returns the absolute path of `common/config/rush/pnpm-config.json`. + */ +export function getCommonPnpmConfigFilePath(rushConfiguration: RushConfiguration): string { + return `${rushConfiguration.commonRushConfigFolder}/${RushConstants.pnpmConfigFilename}`; +} + +/** + * Adds the entries of `catalogsToAdd` to `existingCatalogs` without removing any existing catalog or entry. + * If a package is in both, the version from `catalogsToAdd` wins. + * + * @remarks + * Use this instead of replacing the catalogs when the pnpm-config.json is shared by several subspaces + * (see {@link getOtherSubspacesSharingPnpmConfig}), because a subspace's workspace cannot tell which + * entries the other subspaces use. The inputs are not modified. + * + * @returns A new plain object (without the configuration file annotations that loaded catalogs have), + * or `existingCatalogs` if the result would have no catalogs. + */ +export function mergePnpmCatalogs( + existingCatalogs: PnpmCatalogs | undefined, + catalogsToAdd: PnpmCatalogs | undefined +): PnpmCatalogs | undefined { + const result: PnpmCatalogs = {}; + for (const catalogs of [existingCatalogs, catalogsToAdd]) { + for (const [catalogName, packages] of Object.entries(catalogs ?? {})) { + const mergedPackages: Record = (result[catalogName] ??= {}); + // Copy only the string keys; object spread would also copy annotation symbols + for (const [packageName, version] of Object.entries(packages)) { + mergedPackages[packageName] = version; + } + } + } + + return Object.keys(result).length > 0 ? result : existingCatalogs; +} diff --git a/libraries/rush-lib/src/logic/pnpm/IPnpmfile.ts b/libraries/rush-lib/src/logic/pnpm/IPnpmfile.ts index 50e9ddadd25..ad2346c2237 100644 --- a/libraries/rush-lib/src/logic/pnpm/IPnpmfile.ts +++ b/libraries/rush-lib/src/logic/pnpm/IPnpmfile.ts @@ -6,6 +6,7 @@ import type { IPackageJson } from '@rushstack/node-core-library'; import type { IPnpmShrinkwrapYaml } from './PnpmShrinkwrapFile'; import type { RushConfigurationProject } from '../../api/RushConfigurationProject'; +import type { PnpmCatalogs } from './EffectivePnpmOptions'; /** * The `settings` parameter passed to {@link IPnpmfileShim.hooks.readPackage} and @@ -26,6 +27,10 @@ export interface IWorkspaceProjectInfo extends Pick { packageVersion: RushConfigurationProject['packageJson']['version']; injectedDependencies: Array; + /** + * The name of the subspace that contains the project. + */ + subspaceName?: string; } /** @@ -37,6 +42,16 @@ export interface ISubspacePnpmfileShimSettings { workspaceProjects: Record; subspaceProjects: Record; userPnpmfilePath?: string; + /** + * The PNPM catalogs that are in effect for each other subspace whose projects are injected into this + * subspace, keyed by subspace name. Subspaces without catalogs are omitted. + * + * @remarks + * PNPM only resolves `catalog:` references in the manifests of its own workspace projects. Projects from + * other subspaces are installed as external packages, so the shim replaces their catalog references + * with the entries from their own subspace's catalogs. + */ + catalogsBySubspaceName?: Record; } /** diff --git a/libraries/rush-lib/src/logic/pnpm/PendingPnpmCatalogUpdates.ts b/libraries/rush-lib/src/logic/pnpm/PendingPnpmCatalogUpdates.ts new file mode 100644 index 00000000000..b845a68e19f --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/PendingPnpmCatalogUpdates.ts @@ -0,0 +1,214 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import { Colorize, type ITerminal } from '@rushstack/terminal'; + +import type { RushConfiguration } from '../../api/RushConfiguration'; +import type { Subspace } from '../../api/Subspace'; +import { + getEffectivePnpmCatalogs, + getEffectivePnpmOptions, + mergePnpmCatalogs, + type PnpmCatalogs +} from './EffectivePnpmOptions'; +import type { PnpmOptionsConfiguration } from './PnpmOptionsConfiguration'; +import { formatPnpmCatalogSpecifier, tryGetPnpmCatalogVersion } from './PnpmCatalogReference'; + +/** + * A change to the version of a PNPM catalog entry. + */ +export interface IPnpmCatalogEntryUpdate { + readonly catalogName: string; + readonly packageName: string; + readonly oldVersion: string | undefined; + readonly newVersion: string; +} + +interface IPendingPnpmConfigCatalogs { + readonly pnpmOptions: PnpmOptionsConfiguration; + readonly pnpmConfigFilePath: string; + /** + * The catalogs after the pending updates are applied. This is a plain copy of the loaded catalogs. + */ + readonly catalogs: PnpmCatalogs; + /** + * Keyed by `${catalogName}\0${packageName}` + */ + readonly updates: Map; +} + +/** + * Collects changes to the PNPM catalogs in pnpm-config.json files, so that every change can be planned + * (and validated) before any file is written. + * + * @remarks + * Changes are tracked per effective pnpm-config.json file (see {@link getEffectivePnpmOptions}), because several + * subspaces can share the same file. Catalog entries are only added or updated, never removed. + */ +export class PendingPnpmCatalogUpdates { + readonly #rushConfiguration: RushConfiguration; + readonly #pendingByPnpmConfigFilePath: Map; + + public constructor(rushConfiguration: RushConfiguration) { + this.#rushConfiguration = rushConfiguration; + this.#pendingByPnpmConfigFilePath = new Map(); + } + + /** + * True if any catalog entry will be changed by {@link PendingPnpmCatalogUpdates.saveAsync}. + */ + public get hasUpdates(): boolean { + for (const { updates } of this.#pendingByPnpmConfigFilePath.values()) { + if (updates.size > 0) { + return true; + } + } + + return false; + } + + /** + * Returns the catalogs that are in effect for the subspace, including the pending updates. + */ + public getCatalogs(subspace: Subspace): PnpmCatalogs | undefined { + if (!this.#rushConfiguration.isPnpm) { + return undefined; + } + + const { pnpmConfigFilePath } = getEffectivePnpmOptions(subspace, this.#rushConfiguration); + const pending: IPendingPnpmConfigCatalogs | undefined = + this.#pendingByPnpmConfigFilePath.get(pnpmConfigFilePath); + return pending ? pending.catalogs : getEffectivePnpmCatalogs(subspace, this.#rushConfiguration); + } + + /** + * Returns the pnpm-config.json file that stores the catalogs for the subspace. + */ + public getPnpmConfigFilePath(subspace: Subspace): string { + return getEffectivePnpmOptions(subspace, this.#rushConfiguration).pnpmConfigFilePath; + } + + /** + * Schedules setting the version of a catalog entry in the catalogs that are in effect for the subspace. + * + * @remarks + * Throws if a different version was already scheduled for the same catalog entry. + */ + public setVersion(subspace: Subspace, catalogName: string, packageName: string, version: string): void { + const pending: IPendingPnpmConfigCatalogs = this.#getOrCreatePending(subspace); + const key: string = `${catalogName}\0${packageName}`; + const existingUpdate: IPnpmCatalogEntryUpdate | undefined = pending.updates.get(key); + if (existingUpdate) { + if (existingUpdate.newVersion !== version) { + throw new Error( + `Unable to set the version of "${packageName}" in the PNPM catalog ` + + `"${formatPnpmCatalogSpecifier(catalogName)}" of ${pending.pnpmConfigFilePath} to "${version}", ` + + `because it is also being set to "${existingUpdate.newVersion}".` + ); + } + + return; + } + + const oldVersion: string | undefined = tryGetPnpmCatalogVersion( + pending.catalogs, + catalogName, + packageName + ); + if (oldVersion === version) { + return; + } + + if (!Object.prototype.hasOwnProperty.call(pending.catalogs, catalogName)) { + pending.catalogs[catalogName] = {}; + } + + pending.catalogs[catalogName][packageName] = version; + pending.updates.set(key, { catalogName, packageName, oldVersion, newVersion: version }); + } + + /** + * Writes the pending catalog changes to the pnpm-config.json files. + * + * @param subspacesToUpdate - the subspaces that the caller will run "rush update" for. Other subspaces + * that use a changed pnpm-config.json are reported, because their shrinkwrap files must be updated too. + */ + public async saveAsync(terminal: ITerminal, subspacesToUpdate: ReadonlySet): Promise { + for (const pending of this.#pendingByPnpmConfigFilePath.values()) { + const { pnpmOptions, pnpmConfigFilePath, catalogs, updates } = pending; + if (updates.size === 0) { + continue; + } + + await pnpmOptions.updateGlobalCatalogsAsync(catalogs); + + terminal.writeLine(Colorize.green('Updated PNPM catalogs in ') + pnpmConfigFilePath); + for (const { catalogName, packageName, oldVersion, newVersion } of updates.values()) { + terminal.writeLine( + ` ${formatPnpmCatalogSpecifier(catalogName)} ${packageName}: ` + + `${oldVersion ?? '(new entry)'} -> ${Colorize.cyan(newVersion)}` + ); + } + + const subspacesNotUpdated: Subspace[] = this.#getSubspacesUsingPnpmConfig(pnpmConfigFilePath).filter( + (subspace: Subspace) => !subspacesToUpdate.has(subspace) + ); + if (subspacesNotUpdated.length > 0) { + // The shrinkwrap files and repo-state.json files of these subspaces still reflect the old catalogs. + // Their next "rush install" would fail the PNPM lockfile catalog check, so they must be updated too. + const updateCommands: string[] = subspacesNotUpdated.map( + (subspace: Subspace) => ` rush update --subspace ${subspace.subspaceName}` + ); + terminal.writeWarningLine( + `The catalogs were updated in ${pnpmConfigFilePath}, which is also used by subspaces that this ` + + 'command does not update.\n' + + ' Run these commands to update their shrinkwrap files, then commit those changes to Git:\n' + + updateCommands.join('\n') + ); + } + } + } + + #getSubspacesUsingPnpmConfig(pnpmConfigFilePath: string): Subspace[] { + if (!this.#rushConfiguration.subspacesFeatureEnabled) { + return []; + } + + return this.#rushConfiguration.subspaces.filter( + (subspace: Subspace) => + getEffectivePnpmOptions(subspace, this.#rushConfiguration).pnpmConfigFilePath === pnpmConfigFilePath + ); + } + + #getOrCreatePending(subspace: Subspace): IPendingPnpmConfigCatalogs { + if (!this.#rushConfiguration.isPnpm) { + throw new Error('PNPM catalogs can only be updated when the package manager is PNPM.'); + } + + const { pnpmOptions, pnpmConfigFilePath } = getEffectivePnpmOptions(subspace, this.#rushConfiguration); + let pending: IPendingPnpmConfigCatalogs | undefined = + this.#pendingByPnpmConfigFilePath.get(pnpmConfigFilePath); + if (!pending) { + if (pnpmOptions.jsonFilename === undefined) { + throw new Error( + 'Unable to update the PNPM catalogs because the PNPM options are defined by the "pnpmOptions" ' + + `field in rush.json. Move them to ${pnpmConfigFilePath}.` + ); + } + + // Copy the catalogs, because the loaded object must not change until the file is written. + // mergePnpmCatalogs() returns its input only if there are no catalogs. + const { globalCatalogs } = pnpmOptions; + const catalogsCopy: PnpmCatalogs | undefined = mergePnpmCatalogs(globalCatalogs, undefined); + pending = { + pnpmOptions, + pnpmConfigFilePath, + catalogs: catalogsCopy && catalogsCopy !== globalCatalogs ? catalogsCopy : {}, + updates: new Map() + }; + this.#pendingByPnpmConfigFilePath.set(pnpmConfigFilePath, pending); + } + + return pending; + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/PnpmCatalogReference.ts b/libraries/rush-lib/src/logic/pnpm/PnpmCatalogReference.ts new file mode 100644 index 00000000000..1a578ceac10 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/PnpmCatalogReference.ts @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import type { PnpmCatalogs } from './EffectivePnpmOptions'; + +/** + * The prefix of a version specifier that references a PNPM catalog, e.g. `catalog:` or `catalog:tools`. + */ +export const PNPM_CATALOG_PROTOCOL: 'catalog:' = 'catalog:'; + +/** + * The name of the catalog that `catalog:` refers to. + */ +export const DEFAULT_PNPM_CATALOG_NAME: 'default' = 'default'; + +/** + * A package.json version specifier that references a PNPM catalog, and the catalog entry it resolves to. + */ +export interface IPnpmCatalogReference { + /** + * The normalized name of the referenced catalog. Both `catalog:` and `catalog:default` reference + * the catalog named `default`. + */ + readonly catalogName: string; + + /** + * The version specifier from the catalog entry for the package, for example `~5.8.2`. + * This is `undefined` if the referenced catalog does not exist or does not have an entry for the package. + * PNPM reports an error for such references when it installs. + */ + readonly resolvedVersion: string | undefined; +} + +/** + * If the version specifier references a PNPM catalog, returns the normalized name of the catalog. + * Otherwise, returns `undefined`. + * + * @remarks + * This matches how PNPM parses the catalog protocol: the catalog name is trimmed, and `catalog:` + * (with an empty name) references the `default` catalog, the same as `catalog:default`. + */ +export function tryParsePnpmCatalogName(versionSpecifier: string): string | undefined { + if (!versionSpecifier.startsWith(PNPM_CATALOG_PROTOCOL)) { + return undefined; + } + + const catalogName: string = versionSpecifier.slice(PNPM_CATALOG_PROTOCOL.length).trim(); + return catalogName || DEFAULT_PNPM_CATALOG_NAME; +} + +/** + * Returns the canonical version specifier that references the specified catalog: `catalog:` for the + * default catalog, otherwise `catalog:`. + */ +export function formatPnpmCatalogSpecifier(catalogName: string): string { + return catalogName === DEFAULT_PNPM_CATALOG_NAME + ? PNPM_CATALOG_PROTOCOL + : `${PNPM_CATALOG_PROTOCOL}${catalogName}`; +} + +/** + * Returns the version specifier of the entry for the package in the specified catalog, or `undefined` + * if that catalog does not exist or does not have an entry for the package. + */ +export function tryGetPnpmCatalogVersion( + catalogs: PnpmCatalogs | undefined, + catalogName: string, + packageName: string +): string | undefined { + // Use own-property checks so that names like "constructor" don't resolve to Object.prototype members + if (!catalogs || !Object.prototype.hasOwnProperty.call(catalogs, catalogName)) { + return undefined; + } + + const catalog: Record = catalogs[catalogName]; + if (!Object.prototype.hasOwnProperty.call(catalog, packageName)) { + return undefined; + } + + return catalog[packageName]; +} + +/** + * If the version specifier for the package references a PNPM catalog, returns the referenced catalog + * and the version specifier that the reference resolves to. Otherwise, returns `undefined`. + * + * @param packageName - the dependency package name, i.e. the key from a "dependencies" table + * @param versionSpecifier - the dependency version specifier, i.e. the value from a "dependencies" table + * @param catalogs - the catalogs that are in effect for the subspace of the project that declares the + * dependency, as returned by `getEffectivePnpmCatalogs()` + */ +export function tryResolvePnpmCatalogReference( + packageName: string, + versionSpecifier: string, + catalogs: PnpmCatalogs | undefined +): IPnpmCatalogReference | undefined { + const catalogName: string | undefined = tryParsePnpmCatalogName(versionSpecifier); + if (catalogName === undefined) { + return undefined; + } + + return { + catalogName, + resolvedVersion: tryGetPnpmCatalogVersion(catalogs, catalogName, packageName) + }; +} diff --git a/libraries/rush-lib/src/logic/pnpm/PnpmOptionsConfiguration.ts b/libraries/rush-lib/src/logic/pnpm/PnpmOptionsConfiguration.ts index 898699e671c..6d96f6d5959 100644 --- a/libraries/rush-lib/src/logic/pnpm/PnpmOptionsConfiguration.ts +++ b/libraries/rush-lib/src/logic/pnpm/PnpmOptionsConfiguration.ts @@ -215,6 +215,7 @@ export class PnpmOptionsConfiguration extends PackageManagerOptionsConfiguration readonly #json: JsonObject; readonly #commonTempFolder: string; #globalPatchedDependencies: Record | undefined; + #globalCatalogs: Record> | undefined; /** * The method used to resolve the store used by PNPM. @@ -542,7 +543,9 @@ export class PnpmOptionsConfiguration extends PackageManagerOptionsConfiguration * * PNPM documentation: https://pnpm.io/catalogs */ - public readonly globalCatalogs: Record> | undefined; + public get globalCatalogs(): Record> | undefined { + return this.#globalCatalogs; + } /** * (GENERATED BY RUSH-PNPM PATCH-COMMIT) When modifying this property, make sure you know what you are doing. @@ -608,7 +611,7 @@ export class PnpmOptionsConfiguration extends PackageManagerOptionsConfiguration this.alwaysInjectDependenciesFromOtherSubspaces = json.alwaysInjectDependenciesFromOtherSubspaces; this.alwaysFullInstall = json.alwaysFullInstall; this.pnpmLockfilePolicies = json.pnpmLockfilePolicies; - this.globalCatalogs = json.globalCatalogs; + this.#globalCatalogs = json.globalCatalogs; } /** @internal */ @@ -706,10 +709,15 @@ export class PnpmOptionsConfiguration extends PackageManagerOptionsConfiguration /** * Updates globalCatalogs field of the PNPM options in the common/config/rush/pnpm-config.json file. + * + * @remarks + * The in-memory {@link PnpmOptionsConfiguration.globalCatalogs} value is also updated, so that a + * subsequent install in the same process writes the new catalogs to pnpm-workspace.yaml. */ public async updateGlobalCatalogsAsync( catalogs: Record> | undefined ): Promise { + this.#globalCatalogs = catalogs; this.#json.globalCatalogs = catalogs; await JsonFile.saveAsync(this.#json, this.#getJsonFilenameOrThrow(), { updateExistingFile: true, diff --git a/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts b/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts index 6945bde6d69..19fe965e400 100644 --- a/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts +++ b/libraries/rush-lib/src/logic/pnpm/PnpmShrinkwrapFile.ts @@ -38,6 +38,7 @@ import { PnpmfileConfiguration } from './PnpmfileConfiguration'; import { PnpmProjectShrinkwrapFile } from './PnpmProjectShrinkwrapFile'; import type { PackageManagerOptionsConfigurationBase } from '../base/BasePackageManagerOptionsConfiguration'; import { PnpmOptionsConfiguration } from './PnpmOptionsConfiguration'; +import { getEffectivePnpmOptions } from './EffectivePnpmOptions'; import type { IPnpmfile, IPnpmfileContext } from './IPnpmfile'; import type { Subspace } from '../../api/Subspace'; import { CustomTipId, type CustomTipsConfiguration } from '../../api/CustomTipsConfiguration'; @@ -514,7 +515,10 @@ export class PnpmShrinkwrapFile extends BaseShrinkwrapFile { subspace: Subspace, terminal: ITerminal ): void { - const pnpmOptions: PnpmOptionsConfiguration = subspace.getPnpmOptions() || rushConfiguration.pnpmOptions; + const pnpmOptions: PnpmOptionsConfiguration = getEffectivePnpmOptions( + subspace, + rushConfiguration + ).pnpmOptions; const { pnpmLockfilePolicies } = pnpmOptions; let invalidPoliciesCount: number = 0; @@ -1294,8 +1298,7 @@ export class PnpmShrinkwrapFile extends BaseShrinkwrapFile { // In a package snapshot, link: paths are resolved relative to the pnpm workspace root, // which means they are already direct keys into the importer map. const targetKey: string = normalizedVersion.slice('link:'.length); - const linkedIntegrities: Map | undefined = - this.getIntegrityForImporter(targetKey); + const linkedIntegrities: Map | undefined = this.getIntegrityForImporter(targetKey); if (linkedIntegrities) { for (const [dep, integrity] of linkedIntegrities) { integrityMap.set(dep, integrity); @@ -1319,9 +1322,7 @@ export class PnpmShrinkwrapFile extends BaseShrinkwrapFile { /** * Gets the package description for a tempProject from the shrinkwrap file. */ - #getPackageDescription( - tempProjectDependencyKey: string - ): IPnpmShrinkwrapDependencyYaml | undefined { + #getPackageDescription(tempProjectDependencyKey: string): IPnpmShrinkwrapDependencyYaml | undefined { const packageDescription: IPnpmShrinkwrapDependencyYaml | undefined = this.packages.get(tempProjectDependencyKey); diff --git a/libraries/rush-lib/src/logic/pnpm/PnpmfileConfiguration.ts b/libraries/rush-lib/src/logic/pnpm/PnpmfileConfiguration.ts index 8f2c4cebebf..4cb9e6e3d93 100644 --- a/libraries/rush-lib/src/logic/pnpm/PnpmfileConfiguration.ts +++ b/libraries/rush-lib/src/logic/pnpm/PnpmfileConfiguration.ts @@ -114,8 +114,16 @@ async function _getPnpmfileShimSettingsAsync( rushConfiguration.getImplicitlyPreferredVersions(subspace, variant) ); for (const [name, version] of commonVersionsConfiguration.getAllPreferredVersions()) { - // Use the most restrictive version range available - if (!preferredVersions.has(name) || semver.subset(version, preferredVersions.get(name)!)) { + // Use the most restrictive version range available. If the two version specifiers can't be + // compared (for example, because one of them is an "npm:" alias or a git URL), the explicitly + // preferred version wins. + const implicitlyPreferredVersion: string | undefined = preferredVersions.get(name); + if ( + implicitlyPreferredVersion === undefined || + !semver.validRange(version) || + !semver.validRange(implicitlyPreferredVersion) || + semver.subset(version, implicitlyPreferredVersion) + ) { preferredVersions.set(name, version); } } diff --git a/libraries/rush-lib/src/logic/pnpm/SubspaceGlobalPnpmfileShim.ts b/libraries/rush-lib/src/logic/pnpm/SubspaceGlobalPnpmfileShim.ts index 02c143fcb31..42db3da1eb2 100644 --- a/libraries/rush-lib/src/logic/pnpm/SubspaceGlobalPnpmfileShim.ts +++ b/libraries/rush-lib/src/logic/pnpm/SubspaceGlobalPnpmfileShim.ts @@ -8,8 +8,8 @@ import path from 'node:path'; -// This file can use "import type" but otherwise should not reference any other modules, since it will -// be run from the "common/temp" directory +// This file can use "import type", but otherwise it should only import local modules that have no runtime +// dependencies (webpack bundles those into the shim), since it will be run from the "common/temp" directory import type * as TSemver from 'semver'; import type { IPackageJson } from '@rushstack/node-core-library'; @@ -22,11 +22,25 @@ import type { IWorkspaceProjectInfo } from './IPnpmfile'; import type { IPnpmShrinkwrapYaml } from './PnpmShrinkwrapFile'; +import type { PnpmCatalogs } from './EffectivePnpmOptions'; +import { tryGetPnpmCatalogVersion, tryParsePnpmCatalogName } from './PnpmCatalogReference'; -let settings: ISubspacePnpmfileShimSettings; +let settings: ISubspacePnpmfileShimSettings | undefined; let userPnpmfile: IPnpmfile | undefined; let semver: typeof TSemver | undefined; +// The manifest fields that PNPM resolves for an installed (non-workspace) package. +const INSTALLED_PACKAGE_DEPENDENCY_FIELDS: ReadonlyArray< + 'dependencies' | 'optionalDependencies' | 'peerDependencies' +> = ['dependencies', 'optionalDependencies', 'peerDependencies']; + +// Resets the internal state of the pnpmfile +export function reset(): void { + settings = undefined; + userPnpmfile = undefined; + semver = undefined; +} + // Initialize all external aspects of the pnpmfile shim. When using the shim, settings // are always expected to be available. Init must be called before running any hook that // depends on a resource obtained from or related to the settings, and will require modules @@ -52,18 +66,93 @@ function init(context: IPnpmfileContext | any): IPnpmfileContext { // Reuse the already initialized settings context.splitWorkspacePnpmfileShimSettings = settings; } + const definedSettings: ISubspacePnpmfileShimSettings = settings!; // If a userPnpmfilePath is provided, we expect it to exist - if (!userPnpmfile && settings.userPnpmfilePath) { - userPnpmfile = require(settings.userPnpmfilePath); + if (!userPnpmfile && definedSettings.userPnpmfilePath) { + userPnpmfile = require(definedSettings.userPnpmfilePath); } // If a semverPath is provided, we expect it to exist - if (!semver && settings.semverPath) { - semver = require(settings.semverPath); + if (!semver && definedSettings.semverPath) { + semver = require(definedSettings.semverPath); } // Return the normalized context return context as IPnpmfileContext; } +// PNPM only resolves "catalog:" references for its own workspace projects. A Rush project from another subspace +// is installed as an external package (for example, as an injected "file:" dependency), so replace its catalog +// references with the entries from the catalogs of the subspace that contains it. +// For example: "semver": "catalog:" --> "semver": "~7.5.4" +function resolveOtherSubspaceCatalogReferences(pkg: IPackageJson): void { + if (!settings) { + throw new Error(`splitWorkspaceGlobalPnpmfileShimSettings not initialized`); + } + + // Never rewrite this subspace's own projects: PNPM resolves their catalog references itself, and the lockfile + // importers record the original specifiers + if (!Object.prototype.hasOwnProperty.call(settings.workspaceProjects, pkg.name)) { + return; + } + + const workspaceProject: IWorkspaceProjectInfo = settings.workspaceProjects[pkg.name]; + for (const dependencyField of INSTALLED_PACKAGE_DEPENDENCY_FIELDS) { + const dependencies: Record | undefined = pkg[dependencyField]; + if (!dependencies) { + continue; + } + + for (const [dependencyName, versionSpecifier] of Object.entries(dependencies)) { + const catalogName: string | undefined = tryParsePnpmCatalogName(versionSpecifier); + if (catalogName !== undefined) { + dependencies[dependencyName] = getCatalogVersion( + workspaceProject, + dependencyName, + versionSpecifier, + catalogName + ); + } + } + } +} + +function getCatalogVersion( + workspaceProject: IWorkspaceProjectInfo, + dependencyName: string, + versionSpecifier: string, + catalogName: string +): string { + const { packageName, subspaceName } = workspaceProject; + const subspaceCatalogs: PnpmCatalogs | undefined = + subspaceName !== undefined && + settings?.catalogsBySubspaceName && + Object.prototype.hasOwnProperty.call(settings.catalogsBySubspaceName, subspaceName) + ? settings.catalogsBySubspaceName[subspaceName] + : undefined; + + const catalogVersion: string | undefined = tryGetPnpmCatalogVersion( + subspaceCatalogs, + catalogName, + dependencyName + ); + if (catalogVersion !== undefined) { + return catalogVersion; + } + + const reference: string = + `The "${packageName}" project from the "${subspaceName}" subspace is installed as an external ` + + `package, and it depends on "${dependencyName}@${versionSpecifier}". Rush resolves that reference ` + + `using the "globalCatalogs" from the pnpm-config.json of the "${subspaceName}" subspace, but`; + if (!subspaceCatalogs) { + throw new Error(`${reference} no PNPM catalogs were found for that subspace.`); + } else if (!Object.prototype.hasOwnProperty.call(subspaceCatalogs, catalogName)) { + throw new Error(`${reference} that subspace does not define a catalog named "${catalogName}".`); + } else { + throw new Error( + `${reference} the "${catalogName}" catalog of that subspace does not have an entry for "${dependencyName}".` + ); + } +} + // Rewrite rush project referenced in split workspace. // For example: "project-a": "workspace:*" --> "project-a": "link:../../project-a" function rewriteRushProjectVersions( @@ -160,6 +249,7 @@ export const hooks: IPnpmfileHooks = { // Rewrite workspace protocol to link protocol for non split workspace projects readPackage: (pkg: IPackageJson, context: IPnpmfileContext) => { context = init(context); + resolveOtherSubspaceCatalogReferences(pkg); rewriteRushProjectVersions(pkg.name, pkg.dependencies); rewriteRushProjectVersions(pkg.name, pkg.devDependencies); return userPnpmfile?.hooks?.readPackage ? userPnpmfile.hooks.readPackage(pkg, context) : pkg; diff --git a/libraries/rush-lib/src/logic/pnpm/SubspacePnpmfileConfiguration.ts b/libraries/rush-lib/src/logic/pnpm/SubspacePnpmfileConfiguration.ts index b190671a0d0..e563addaf03 100644 --- a/libraries/rush-lib/src/logic/pnpm/SubspacePnpmfileConfiguration.ts +++ b/libraries/rush-lib/src/logic/pnpm/SubspacePnpmfileConfiguration.ts @@ -13,6 +13,7 @@ import type { PnpmPackageManager } from '../../api/packageManager/PnpmPackageMan import { RushConstants } from '../RushConstants'; import type { Subspace } from '../../api/Subspace'; import type { PnpmOptionsConfiguration } from './PnpmOptionsConfiguration'; +import { getEffectivePnpmCatalogs, getEffectivePnpmOptions, type PnpmCatalogs } from './EffectivePnpmOptions'; /** * Loads PNPM's pnpmfile.js configuration, and invokes it to preprocess package.json files, @@ -75,7 +76,8 @@ export class SubspacePnpmfileConfiguration { packageName, projectRelativeFolder, packageVersion: packageJson.version, - injectedDependencies: Array.from(projectNameToInjectedDependenciesMap.get(packageName) || []) + injectedDependencies: Array.from(projectNameToInjectedDependenciesMap.get(packageName) || []), + subspaceName: project.subspace.subspaceName }; (subspace.contains(project) ? subspaceProjects : workspaceProjects)[packageName] = workspaceProjectInfo; } @@ -86,6 +88,15 @@ export class SubspacePnpmfileConfiguration { semverPath: Import.resolveModule({ modulePath: 'semver', baseFolderPath: __dirname }) }; + const catalogsBySubspaceName: Record | undefined = _getInjectedProjectCatalogs( + rushConfiguration, + subspace, + projectNameToInjectedDependenciesMap + ); + if (catalogsBySubspaceName) { + settings.catalogsBySubspaceName = catalogsBySubspaceName; + } + // common/config/subspaces//.pnpmfile.cjs const userPnpmfilePath: string = path.join( subspace.getVariantDependentSubspaceConfigFolderPath(variant), @@ -99,6 +110,39 @@ export class SubspacePnpmfileConfiguration { } } +/** + * Returns the effective PNPM catalogs of each other subspace that has a project which is injected into + * the specified subspace, keyed by subspace name, or `undefined` if there are none. + */ +function _getInjectedProjectCatalogs( + rushConfiguration: RushConfiguration, + subspace: Subspace, + projectNameToInjectedDependenciesMap: Map> +): Record | undefined { + let result: Record | undefined; + const visitedSubspaceNames: Set = new Set([subspace.subspaceName]); + for (const injectedDependencies of projectNameToInjectedDependenciesMap.values()) { + for (const injectedDependencyName of injectedDependencies) { + const injectedProject: RushConfigurationProject | undefined = + rushConfiguration.getProjectByName(injectedDependencyName); + if (!injectedProject || visitedSubspaceNames.has(injectedProject.subspace.subspaceName)) { + continue; + } + + visitedSubspaceNames.add(injectedProject.subspace.subspaceName); + const catalogs: PnpmCatalogs | undefined = getEffectivePnpmCatalogs( + injectedProject.subspace, + rushConfiguration + ); + if (catalogs) { + (result ??= {})[injectedProject.subspace.subspaceName] = catalogs; + } + } + } + + return result; +} + function _getProjectNameToInjectedDependenciesMap( rushConfiguration: RushConfiguration, subspace: Subspace @@ -142,9 +186,11 @@ function _getProjectNameToInjectedDependenciesMap( // and the dependency is not injected yet // and the dependency is in another subspace // then, make this dependency as injected dependency - const pnpmOptions: PnpmOptionsConfiguration | undefined = - subspace.getPnpmOptions() || rushConfiguration.pnpmOptions; - if (pnpmOptions && pnpmOptions.alwaysInjectDependenciesFromOtherSubspaces) { + const pnpmOptions: PnpmOptionsConfiguration = getEffectivePnpmOptions( + subspace, + rushConfiguration + ).pnpmOptions; + if (pnpmOptions.alwaysInjectDependenciesFromOtherSubspaces) { const dependencyProjects: ReadonlySet = subspaceProject.dependencyProjects; for (const dependencyProject of dependencyProjects) { const dependencyName: string = dependencyProject.packageName; diff --git a/libraries/rush-lib/src/logic/pnpm/test/EffectivePnpmOptions.test.ts b/libraries/rush-lib/src/logic/pnpm/test/EffectivePnpmOptions.test.ts new file mode 100644 index 00000000000..5c2621445b2 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/EffectivePnpmOptions.test.ts @@ -0,0 +1,227 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import * as path from 'node:path'; + +import { TestUtilities } from '@rushstack/heft-config-file'; + +import { RushConfiguration } from '../../../api/RushConfiguration'; +import type { Subspace } from '../../../api/Subspace'; +import { + getCommonPnpmConfigFilePath, + getEffectivePnpmCatalogs, + getEffectivePnpmOptions, + getOtherSubspacesSharingPnpmConfig, + type IEffectivePnpmOptions, + mergePnpmCatalogs, + type PnpmCatalogs +} from '../EffectivePnpmOptions'; + +const COMMON_CATALOGS_REPO_RUSH_JSON: string = path.resolve( + __dirname, + '../../test/repoWithSubspacesCommonCatalogs/rush.json' +); +const SUBSPACE_CATALOGS_REPO_RUSH_JSON: string = path.resolve( + __dirname, + '../../test/repoWithSubspacesCatalogs/rush.json' +); +const NO_SUBSPACES_CATALOGS_REPO_RUSH_JSON: string = path.resolve( + __dirname, + '../../../api/test/repoCatalogs/rush.json' +); +const NO_CATALOGS_REPO_RUSH_JSON: string = path.resolve(__dirname, '../../../api/test/repo/rush-pnpm.json'); +const NPM_REPO_RUSH_JSON: string = path.resolve(__dirname, '../../../api/test/repo/rush-npm.json'); + +function getSubspaceNames(subspaces: readonly Subspace[]): string[] { + return subspaces.map((subspace: Subspace) => subspace.subspaceName).sort(); +} + +describe('EffectivePnpmOptions', () => { + describe(getEffectivePnpmOptions.name, () => { + it('uses common/config/rush/pnpm-config.json when subspaces are disabled', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + NO_SUBSPACES_CATALOGS_REPO_RUSH_JSON + ); + const subspace: Subspace = rushConfiguration.defaultSubspace; + + const effective: IEffectivePnpmOptions = getEffectivePnpmOptions(subspace, rushConfiguration); + expect(effective.isFallback).toBe(false); + expect(effective.pnpmOptions).toBe(subspace.getPnpmOptions()); + expect(effective.pnpmConfigFilePath).toEqual(subspace.getPnpmConfigFilePath()); + expect(effective.pnpmConfigFilePath).toEqual(getCommonPnpmConfigFilePath(rushConfiguration)); + expect(effective.pnpmOptions.globalCatalogs).toEqual(rushConfiguration.pnpmOptions.globalCatalogs); + }); + + it("uses the subspace's own pnpm-config.json when it exists", () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + SUBSPACE_CATALOGS_REPO_RUSH_JSON + ); + const subspace: Subspace = rushConfiguration.getSubspace('project-change-analyzer-test-subspace'); + + const effective: IEffectivePnpmOptions = getEffectivePnpmOptions(subspace, rushConfiguration); + expect(effective.isFallback).toBe(false); + expect(effective.pnpmOptions).toBe(subspace.getPnpmOptions()); + expect(effective.pnpmConfigFilePath).toEqual(subspace.getPnpmConfigFilePath()); + expect(effective.pnpmConfigFilePath).not.toEqual(getCommonPnpmConfigFilePath(rushConfiguration)); + expect(TestUtilities.stripAnnotations(effective.pnpmOptions.globalCatalogs)).toEqual({ + default: { foo: '~2.0.0', bar: '^3.0.0' }, + tools: { typescript: '~5.3.0', eslint: '^8.50.0' } + }); + }); + + it('falls back to common/config/rush/pnpm-config.json for a subspace without its own pnpm-config.json', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + COMMON_CATALOGS_REPO_RUSH_JSON + ); + + for (const subspaceName of ['default', 'other-subspace']) { + const subspace: Subspace = rushConfiguration.getSubspace(subspaceName); + expect(subspace.getPnpmOptions()).toBeUndefined(); + + const effective: IEffectivePnpmOptions = getEffectivePnpmOptions(subspace, rushConfiguration); + expect(effective.isFallback).toBe(true); + expect(effective.pnpmOptions).toBe(rushConfiguration.pnpmOptions); + expect(effective.pnpmConfigFilePath).toEqual(getCommonPnpmConfigFilePath(rushConfiguration)); + expect(effective.pnpmConfigFilePath).not.toEqual(subspace.getPnpmConfigFilePath()); + } + + const ownConfigSubspace: Subspace = rushConfiguration.getSubspace('own-config-subspace'); + const ownEffective: IEffectivePnpmOptions = getEffectivePnpmOptions( + ownConfigSubspace, + rushConfiguration + ); + expect(ownEffective.isFallback).toBe(false); + expect(ownEffective.pnpmOptions).toBe(ownConfigSubspace.getPnpmOptions()); + expect(ownEffective.pnpmConfigFilePath).toEqual(ownConfigSubspace.getPnpmConfigFilePath()); + }); + }); + + describe(getEffectivePnpmCatalogs.name, () => { + it('returns the common catalogs for subspaces without their own pnpm-config.json', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + COMMON_CATALOGS_REPO_RUSH_JSON + ); + const expectedCatalogs: PnpmCatalogs = { + default: { react: '^18.0.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' } + }; + + const getCatalogs = (subspaceName: string): PnpmCatalogs | undefined => + TestUtilities.stripAnnotations( + getEffectivePnpmCatalogs(rushConfiguration.getSubspace(subspaceName), rushConfiguration) + ); + + expect(getCatalogs('default')).toEqual(expectedCatalogs); + expect(getCatalogs('other-subspace')).toEqual(expectedCatalogs); + expect(getCatalogs('own-config-subspace')).toEqual({ default: { react: '^17.0.0' } }); + }); + + it('returns undefined when no catalogs are defined', () => { + const rushConfiguration: RushConfiguration = + RushConfiguration.loadFromConfigurationFile(NO_CATALOGS_REPO_RUSH_JSON); + expect(getEffectivePnpmCatalogs(rushConfiguration.defaultSubspace, rushConfiguration)).toBeUndefined(); + }); + + it('returns undefined when the package manager is not PNPM', () => { + const rushConfiguration: RushConfiguration = + RushConfiguration.loadFromConfigurationFile(NPM_REPO_RUSH_JSON); + expect(getEffectivePnpmCatalogs(rushConfiguration.defaultSubspace, rushConfiguration)).toBeUndefined(); + }); + }); + + describe(getOtherSubspacesSharingPnpmConfig.name, () => { + it('returns the other subspaces that fall back to the common pnpm-config.json', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + COMMON_CATALOGS_REPO_RUSH_JSON + ); + + expect( + getSubspaceNames( + getOtherSubspacesSharingPnpmConfig(rushConfiguration.getSubspace('default'), rushConfiguration) + ) + ).toEqual(['other-subspace']); + expect( + getSubspaceNames( + getOtherSubspacesSharingPnpmConfig( + rushConfiguration.getSubspace('other-subspace'), + rushConfiguration + ) + ) + ).toEqual(['default']); + expect( + getOtherSubspacesSharingPnpmConfig( + rushConfiguration.getSubspace('own-config-subspace'), + rushConfiguration + ) + ).toEqual([]); + }); + + it('returns an empty array when every subspace has its own pnpm-config.json', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + SUBSPACE_CATALOGS_REPO_RUSH_JSON + ); + for (const subspace of rushConfiguration.subspaces) { + expect(getOtherSubspacesSharingPnpmConfig(subspace, rushConfiguration)).toEqual([]); + } + }); + + it('returns an empty array when subspaces are disabled', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + NO_SUBSPACES_CATALOGS_REPO_RUSH_JSON + ); + expect( + getOtherSubspacesSharingPnpmConfig(rushConfiguration.defaultSubspace, rushConfiguration) + ).toEqual([]); + }); + }); + + describe(mergePnpmCatalogs.name, () => { + it('adds and updates entries without removing any', () => { + const existingCatalogs: PnpmCatalogs = { + default: { react: '^18.0.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' } + }; + const catalogsToAdd: PnpmCatalogs = { + default: { react: '^18.3.0' }, + lint: { eslint: '^9.0.0' } + }; + + expect(mergePnpmCatalogs(existingCatalogs, catalogsToAdd)).toEqual({ + default: { react: '^18.3.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' }, + lint: { eslint: '^9.0.0' } + }); + + // The inputs are not modified + expect(existingCatalogs).toEqual({ + default: { react: '^18.0.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' } + }); + expect(catalogsToAdd).toEqual({ default: { react: '^18.3.0' }, lint: { eslint: '^9.0.0' } }); + }); + + it('handles undefined inputs', () => { + const catalogs: PnpmCatalogs = { default: { react: '^18.0.0' } }; + expect(mergePnpmCatalogs(undefined, undefined)).toBeUndefined(); + expect(mergePnpmCatalogs(undefined, {})).toBeUndefined(); + expect(mergePnpmCatalogs(catalogs, undefined)).toEqual(catalogs); + expect(mergePnpmCatalogs(undefined, catalogs)).toEqual(catalogs); + }); + + it('does not copy the configuration file annotations of loaded catalogs', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + COMMON_CATALOGS_REPO_RUSH_JSON + ); + const loadedCatalogs: PnpmCatalogs | undefined = rushConfiguration.pnpmOptions.globalCatalogs; + expect(Object.getOwnPropertySymbols(loadedCatalogs!.default)).not.toHaveLength(0); + + const mergedCatalogs: PnpmCatalogs | undefined = mergePnpmCatalogs(loadedCatalogs, { + default: { react: '^18.3.0' } + }); + expect(mergedCatalogs).toEqual({ + default: { react: '^18.3.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' } + }); + }); + }); +}); diff --git a/libraries/rush-lib/src/logic/pnpm/test/PnpmCatalogReference.test.ts b/libraries/rush-lib/src/logic/pnpm/test/PnpmCatalogReference.test.ts new file mode 100644 index 00000000000..7505e6225bd --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/PnpmCatalogReference.test.ts @@ -0,0 +1,120 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import { + DEFAULT_PNPM_CATALOG_NAME, + formatPnpmCatalogSpecifier, + tryGetPnpmCatalogVersion, + tryParsePnpmCatalogName, + tryResolvePnpmCatalogReference +} from '../PnpmCatalogReference'; +import type { PnpmCatalogs } from '../EffectivePnpmOptions'; + +const CATALOGS: PnpmCatalogs = { + default: { + typescript: '~5.8.2' + }, + tools: { + eslint: '~9.37.0' + } +}; + +describe('PnpmCatalogReference', () => { + describe(tryParsePnpmCatalogName.name, () => { + it('maps "catalog:" and "catalog:default" to the default catalog', () => { + expect(tryParsePnpmCatalogName('catalog:')).toBe(DEFAULT_PNPM_CATALOG_NAME); + expect(tryParsePnpmCatalogName('catalog:default')).toBe(DEFAULT_PNPM_CATALOG_NAME); + }); + + it('returns the name of a named catalog', () => { + expect(tryParsePnpmCatalogName('catalog:tools')).toBe('tools'); + }); + + it('trims the catalog name, like PNPM does', () => { + expect(tryParsePnpmCatalogName('catalog: tools ')).toBe('tools'); + expect(tryParsePnpmCatalogName('catalog: ')).toBe(DEFAULT_PNPM_CATALOG_NAME); + }); + + it('returns undefined for version specifiers that are not catalog references', () => { + for (const versionSpecifier of [ + '~5.8.2', + '', + 'workspace:*', + 'npm:typescript@~5.8.2', + 'file:../typescript', + 'catalog', + ' catalog:' + ]) { + expect(tryParsePnpmCatalogName(versionSpecifier)).toBeUndefined(); + } + }); + }); + + describe(formatPnpmCatalogSpecifier.name, () => { + it('formats the canonical catalog reference', () => { + expect(formatPnpmCatalogSpecifier(DEFAULT_PNPM_CATALOG_NAME)).toBe('catalog:'); + expect(formatPnpmCatalogSpecifier('tools')).toBe('catalog:tools'); + }); + + it('round-trips with tryParsePnpmCatalogName', () => { + for (const versionSpecifier of ['catalog:', 'catalog:default', 'catalog: tools ']) { + const catalogName: string = tryParsePnpmCatalogName(versionSpecifier)!; + expect(tryParsePnpmCatalogName(formatPnpmCatalogSpecifier(catalogName))).toBe(catalogName); + } + }); + }); + + describe(tryGetPnpmCatalogVersion.name, () => { + it('returns the version from the catalog entry', () => { + expect(tryGetPnpmCatalogVersion(CATALOGS, 'default', 'typescript')).toBe('~5.8.2'); + expect(tryGetPnpmCatalogVersion(CATALOGS, 'tools', 'eslint')).toBe('~9.37.0'); + }); + + it('returns undefined if the catalog or the entry does not exist', () => { + expect(tryGetPnpmCatalogVersion(CATALOGS, 'default', 'eslint')).toBeUndefined(); + expect(tryGetPnpmCatalogVersion(CATALOGS, 'nonexistent', 'typescript')).toBeUndefined(); + expect(tryGetPnpmCatalogVersion(undefined, 'default', 'typescript')).toBeUndefined(); + }); + + it('does not resolve Object.prototype members', () => { + expect(tryGetPnpmCatalogVersion(CATALOGS, 'constructor', 'name')).toBeUndefined(); + expect(tryGetPnpmCatalogVersion(CATALOGS, 'default', 'toString')).toBeUndefined(); + }); + }); + + describe(tryResolvePnpmCatalogReference.name, () => { + it('resolves catalog references', () => { + expect(tryResolvePnpmCatalogReference('typescript', 'catalog:', CATALOGS)).toEqual({ + catalogName: 'default', + resolvedVersion: '~5.8.2' + }); + expect(tryResolvePnpmCatalogReference('typescript', 'catalog:default', CATALOGS)).toEqual({ + catalogName: 'default', + resolvedVersion: '~5.8.2' + }); + expect(tryResolvePnpmCatalogReference('eslint', 'catalog:tools', CATALOGS)).toEqual({ + catalogName: 'tools', + resolvedVersion: '~9.37.0' + }); + }); + + it('reports a catalog reference that does not resolve', () => { + expect(tryResolvePnpmCatalogReference('missing', 'catalog:', CATALOGS)).toEqual({ + catalogName: 'default', + resolvedVersion: undefined + }); + expect(tryResolvePnpmCatalogReference('typescript', 'catalog:nonexistent', CATALOGS)).toEqual({ + catalogName: 'nonexistent', + resolvedVersion: undefined + }); + expect(tryResolvePnpmCatalogReference('typescript', 'catalog:', undefined)).toEqual({ + catalogName: 'default', + resolvedVersion: undefined + }); + }); + + it('returns undefined for version specifiers that are not catalog references', () => { + expect(tryResolvePnpmCatalogReference('typescript', '~5.8.2', CATALOGS)).toBeUndefined(); + }); + }); +}); diff --git a/libraries/rush-lib/src/logic/pnpm/test/PnpmShrinkwrapFile.test.ts b/libraries/rush-lib/src/logic/pnpm/test/PnpmShrinkwrapFile.test.ts index e54732aa3b6..e56fdc60eeb 100644 --- a/libraries/rush-lib/src/logic/pnpm/test/PnpmShrinkwrapFile.test.ts +++ b/libraries/rush-lib/src/logic/pnpm/test/PnpmShrinkwrapFile.test.ts @@ -769,6 +769,39 @@ snapshots: ).resolves.toBe(false); }); + it('can detect not modified when dependencies reference catalogs', async () => { + // The project's package.json and the lockfile both use "catalog:", "catalog:default", and + // "catalog:tools" specifiers, and common-versions.json has preferredVersions for some of them + const project = getMockRushProjectWithCatalogs(); + const pnpmShrinkwrapFile = getPnpmShrinkwrapFileFromFile( + `${__dirname}/yamlFiles/pnpm-lock-v9/catalogs-not-modified.yaml`, + project.rushConfiguration.defaultSubspace + ); + await expect( + pnpmShrinkwrapFile.isWorkspaceProjectModifiedAsync( + project, + project.rushConfiguration.defaultSubspace, + undefined + ) + ).resolves.toBe(false); + }); + + it('can detect modified when a dependency was changed to reference a catalog', async () => { + // The lockfile records "typescript" with the "~5.8.2" specifier, but the project now uses "catalog:" + const project = getMockRushProjectWithCatalogs(); + const pnpmShrinkwrapFile = getPnpmShrinkwrapFileFromFile( + `${__dirname}/yamlFiles/pnpm-lock-v9/catalogs-modified.yaml`, + project.rushConfiguration.defaultSubspace + ); + await expect( + pnpmShrinkwrapFile.isWorkspaceProjectModifiedAsync( + project, + project.rushConfiguration.defaultSubspace, + undefined + ) + ).resolves.toBe(true); + }); + it('can detect a devDependency that is still listed under dependencies in the importer', async () => { // Regression: moving a dep from dependencies to devDependencies should be detected as modified. const project = getMockRushProject(); @@ -879,3 +912,13 @@ function getMockRushProject2(): RushConfigurationProject { } return project; } + +function getMockRushProjectWithCatalogs(): RushConfigurationProject { + const rushFilename: string = `${__dirname}/repoWithCatalogs/rush.json`; + const rushConfiguration = RushConfiguration.loadFromConfigurationFile(rushFilename); + const project = rushConfiguration.projectsByName.get('app-a'); + if (!project) { + throw new Error(`Can not get project "app-a"`); + } + return project; +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/PnpmfileConfiguration.test.ts b/libraries/rush-lib/src/logic/pnpm/test/PnpmfileConfiguration.test.ts index 23dafd9caf1..c5779489ef7 100644 --- a/libraries/rush-lib/src/logic/pnpm/test/PnpmfileConfiguration.test.ts +++ b/libraries/rush-lib/src/logic/pnpm/test/PnpmfileConfiguration.test.ts @@ -1,9 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. +import { type IPackageJson, JsonFile, type JsonObject } from '@rushstack/node-core-library'; + import { RushConfiguration } from '../../../api/RushConfiguration'; +import type { RushConfigurationProject } from '../../../api/RushConfigurationProject'; import { PnpmfileConfiguration } from '../PnpmfileConfiguration'; -import { JsonFile, type JsonObject } from '@rushstack/node-core-library'; describe(PnpmfileConfiguration.name, () => { const repoPath: string = `${__dirname}/repo`; @@ -35,4 +37,81 @@ describe(PnpmfileConfiguration.name, () => { const shimJson: JsonObject = await JsonFile.loadAsync(shimPath); expect(shimJson.allPreferredVersions).toHaveProperty('find-up', '5.0.0'); }); + + describe('with PNPM catalogs', () => { + // The catalogs define "typescript": "~5.8.2", "tslib": "~2.3.1", and "eslint": "~9.37.0" (in the "tools" + // catalog), and common-versions.json has preferredVersions for "typescript" and "eslint". Projects reference + // these packages through "catalog:", "catalog:default", and "catalog:tools". + const catalogRushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + `${__dirname}/repoWithCatalogs/rush.json` + ); + const catalogShimPath: string = `${catalogRushConfiguration.defaultSubspace.getSubspaceTempFolderPath()}/pnpmfileSettings.json`; + + it('does not crash when a package in preferredVersions is referenced through a catalog', async () => { + const subspace = catalogRushConfiguration.defaultSubspace; + await PnpmfileConfiguration.writeCommonTempPnpmfileShimAsync( + catalogRushConfiguration, + subspace.getSubspaceTempFolderPath(), + subspace, + undefined + ); + + const shimJson: JsonObject = await JsonFile.loadAsync(catalogShimPath); + expect(shimJson.allPreferredVersions).toEqual({ + typescript: '~5.8.2', + tslib: '~2.3.1', + eslint: '~9.37.0', + // The implicitly preferred version is an "npm:" alias, which can't be compared with the explicitly + // preferred version, so the explicitly preferred version wins + 'aliased-dep': '^1.0.0', + // The explicitly preferred version is a git URL, which can't be compared with the implicitly + // preferred version, so the explicitly preferred version wins + 'git-dep': 'git+https://github.com/example/git-dep.git' + }); + }); + + it('narrows the dependency ranges of external packages to the catalog versions', async () => { + const pnpmfileConfiguration: PnpmfileConfiguration = await PnpmfileConfiguration.initializeAsync( + catalogRushConfiguration, + catalogRushConfiguration.defaultSubspace, + undefined + ); + + const transformed: IPackageJson = pnpmfileConfiguration.transform({ + name: 'some-external-package', + version: '1.0.0', + dependencies: { + typescript: '^5.0.0', + tslib: '^2.0.0', + eslint: '^9.0.0' + } + }); + expect(transformed.dependencies).toEqual({ + typescript: '~5.8.2', + tslib: '~2.3.1', + eslint: '~9.37.0' + }); + }); + + it("does not rewrite a workspace project's catalog references", async () => { + const pnpmfileConfiguration: PnpmfileConfiguration = await PnpmfileConfiguration.initializeAsync( + catalogRushConfiguration, + catalogRushConfiguration.defaultSubspace, + undefined + ); + + const project: RushConfigurationProject = catalogRushConfiguration.getProjectByName('app-a')!; + const transformed: IPackageJson = pnpmfileConfiguration.transform( + project.packageJsonEditor.saveToObject() + ); + expect(transformed.dependencies).toEqual({ + 'lib-b': 'workspace:*', + tslib: 'catalog:default', + typescript: 'catalog:' + }); + expect(transformed.devDependencies).toEqual({ + eslint: 'catalog:tools' + }); + }); + }); }); diff --git a/libraries/rush-lib/src/logic/pnpm/test/SubspaceGlobalPnpmfileShim.test.ts b/libraries/rush-lib/src/logic/pnpm/test/SubspaceGlobalPnpmfileShim.test.ts new file mode 100644 index 00000000000..053f97fa346 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/SubspaceGlobalPnpmfileShim.test.ts @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import type { IPackageJson } from '@rushstack/node-core-library'; + +import { RushConfiguration } from '../../../api/RushConfiguration'; +import type { IPnpmfileContext, ISubspacePnpmfileShimSettings } from '../IPnpmfile'; +import { hooks, reset } from '../SubspaceGlobalPnpmfileShim'; +import { SubspacePnpmfileConfiguration } from '../SubspacePnpmfileConfiguration'; + +// The "catalog-consumer" project in "consumer-subspace" injects the "catalog-provider" project from the +// default subspace, which depends on "transitive-provider" from the default subspace. The default subspace +// uses the catalogs from common/config/rush/pnpm-config.json, and "consumer-subspace" and +// "unrelated-subspace" have their own catalogs. +const INJECTED_SUBSPACE_CATALOGS_RUSH_JSON: string = `${__dirname}/repoWithInjectedSubspaceCatalogs/rush.json`; + +describe('SubspaceGlobalPnpmfileShim', () => { + let rushConfiguration: RushConfiguration; + let settings: ISubspacePnpmfileShimSettings; + + function readPackage(pkg: IPackageJson): IPackageJson { + const context: IPnpmfileContext = { + log: () => {}, + splitWorkspacePnpmfileShimSettings: settings + } as IPnpmfileContext; + return hooks.readPackage!(pkg, context); + } + + function getPackageJson(packageName: string): IPackageJson { + return JSON.parse(JSON.stringify(rushConfiguration.getProjectByName(packageName)!.packageJson)); + } + + beforeEach(() => { + reset(); + rushConfiguration = RushConfiguration.loadFromConfigurationFile(INJECTED_SUBSPACE_CATALOGS_RUSH_JSON); + settings = SubspacePnpmfileConfiguration.getSubspacePnpmfileShimSettings( + rushConfiguration, + rushConfiguration.getSubspace('consumer-subspace'), + undefined + ); + }); + + afterEach(() => { + reset(); + }); + + describe('readPackage', () => { + it("resolves catalog references of an injected project with its own subspace's catalogs", () => { + const pkg: IPackageJson = readPackage(getPackageJson('catalog-provider')); + + // The versions come from the default subspace's catalogs, not from the catalogs of "consumer-subspace" + expect(pkg.dependencies).toEqual({ + 'left-pad': '^1.3.0', + lodash: '^4.17.21', + semver: '~7.5.4', + 'transitive-provider': 'file:../transitive-provider' + }); + expect(pkg.optionalDependencies).toEqual({ fsevents: '~2.3.2' }); + expect(pkg.peerDependencies).toEqual({ typescript: '~5.3.0' }); + // PNPM does not install the devDependencies of an injected package + expect(pkg.devDependencies).toEqual({ jest: 'catalog:' }); + }); + + it('resolves catalog references of a transitively injected project', () => { + const pkg: IPackageJson = readPackage(getPackageJson('transitive-provider')); + expect(pkg.dependencies).toEqual({ lodash: '^4.17.21' }); + }); + + it("does not change the catalog references of the subspace's own projects", () => { + const pkg: IPackageJson = readPackage(getPackageJson('catalog-consumer')); + expect(pkg.dependencies).toEqual({ + lodash: 'catalog:', + 'catalog-provider': 'file:../catalog-provider' + }); + }); + + it('does not change packages that are not Rush projects', () => { + const pkg: IPackageJson = readPackage({ + name: 'external', + version: '1.0.0', + dependencies: { lodash: 'catalog:' } + }); + expect(pkg.dependencies).toEqual({ lodash: 'catalog:' }); + }); + + it('reports an error when the catalog does not have an entry for the dependency', () => { + const pkg: IPackageJson = getPackageJson('catalog-provider'); + pkg.dependencies!['missing-package'] = 'catalog:'; + expect(() => readPackage(pkg)).toThrow( + 'The "catalog-provider" project from the "default" subspace is installed as an external package, and it depends on "missing-package@catalog:". Rush resolves that reference using the "globalCatalogs" from the pnpm-config.json of the "default" subspace, but the "default" catalog of that subspace does not have an entry for "missing-package".' + ); + }); + + it('reports an error when the catalog does not exist', () => { + const pkg: IPackageJson = getPackageJson('catalog-provider'); + pkg.optionalDependencies!.fsevents = 'catalog:missing-catalog'; + expect(() => readPackage(pkg)).toThrow( + 'The "catalog-provider" project from the "default" subspace is installed as an external package, and it depends on "fsevents@catalog:missing-catalog". Rush resolves that reference using the "globalCatalogs" from the pnpm-config.json of the "default" subspace, but that subspace does not define a catalog named "missing-catalog".' + ); + }); + + it('reports an error when no catalogs are available for the subspace of the project', () => { + expect(() => readPackage(getPackageJson('unrelated'))).toThrow( + 'The "unrelated" project from the "unrelated-subspace" subspace is installed as an external package, and it depends on "lodash@catalog:". Rush resolves that reference using the "globalCatalogs" from the pnpm-config.json of the "unrelated-subspace" subspace, but no PNPM catalogs were found for that subspace.' + ); + }); + }); +}); diff --git a/libraries/rush-lib/src/logic/pnpm/test/SubspacePnpmfileConfiguration.test.ts b/libraries/rush-lib/src/logic/pnpm/test/SubspacePnpmfileConfiguration.test.ts new file mode 100644 index 00000000000..b70ee801fab --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/SubspacePnpmfileConfiguration.test.ts @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import { RushConfiguration } from '../../../api/RushConfiguration'; +import type { ISubspacePnpmfileShimSettings } from '../IPnpmfile'; +import { SubspacePnpmfileConfiguration } from '../SubspacePnpmfileConfiguration'; + +// The "catalog-consumer" project in "consumer-subspace" injects the "catalog-provider" project from the +// default subspace, which depends on "transitive-provider" from the default subspace. The default subspace +// uses the catalogs from common/config/rush/pnpm-config.json, and "consumer-subspace" and +// "unrelated-subspace" have their own catalogs. +const INJECTED_SUBSPACE_CATALOGS_RUSH_JSON: string = `${__dirname}/repoWithInjectedSubspaceCatalogs/rush.json`; + +describe(SubspacePnpmfileConfiguration.name, () => { + describe(SubspacePnpmfileConfiguration.getSubspacePnpmfileShimSettings.name, () => { + it('includes the catalogs of the subspaces of injected projects from other subspaces', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + INJECTED_SUBSPACE_CATALOGS_RUSH_JSON + ); + + const settings: ISubspacePnpmfileShimSettings = + SubspacePnpmfileConfiguration.getSubspacePnpmfileShimSettings( + rushConfiguration, + rushConfiguration.getSubspace('consumer-subspace'), + undefined + ); + + // Only the default subspace's catalogs: not the consumer's own catalogs, which PNPM resolves itself, + // and not the catalogs of "unrelated-subspace", which has no injected projects + expect(settings.catalogsBySubspaceName).toEqual({ + default: rushConfiguration.pnpmOptions.globalCatalogs + }); + + expect(settings.subspaceProjects['catalog-consumer'].subspaceName).toEqual('consumer-subspace'); + expect(settings.subspaceProjects['catalog-consumer'].injectedDependencies).toEqual([ + 'catalog-provider' + ]); + expect(settings.workspaceProjects['catalog-provider'].subspaceName).toEqual('default'); + expect(settings.workspaceProjects['catalog-provider'].injectedDependencies).toEqual([ + 'transitive-provider' + ]); + expect(settings.workspaceProjects['transitive-provider'].subspaceName).toEqual('default'); + expect(settings.workspaceProjects.unrelated.subspaceName).toEqual('unrelated-subspace'); + }); + + it('does not include catalogs when no projects from other subspaces are injected', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + INJECTED_SUBSPACE_CATALOGS_RUSH_JSON + ); + + for (const subspaceName of ['default', 'unrelated-subspace']) { + const settings: ISubspacePnpmfileShimSettings = + SubspacePnpmfileConfiguration.getSubspacePnpmfileShimSettings( + rushConfiguration, + rushConfiguration.getSubspace(subspaceName), + undefined + ); + expect(settings).not.toHaveProperty('catalogsBySubspaceName'); + } + }); + + it('does not include catalogs for injected projects from the same subspace', () => { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile( + `${__dirname}/../../../api/test/repoInjectedDeps/rush.json` + ); + + const settings: ISubspacePnpmfileShimSettings = + SubspacePnpmfileConfiguration.getSubspacePnpmfileShimSettings( + rushConfiguration, + rushConfiguration.defaultSubspace, + undefined + ); + expect(settings.subspaceProjects.consumer.injectedDependencies).toEqual(['provider']); + expect(settings).not.toHaveProperty('catalogsBySubspaceName'); + }); + }); +}); diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/apps/app-a/package.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/apps/app-a/package.json new file mode 100644 index 00000000000..dac0d8fff2e --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/apps/app-a/package.json @@ -0,0 +1,12 @@ +{ + "name": "app-a", + "version": "1.0.0", + "dependencies": { + "lib-b": "workspace:*", + "tslib": "catalog:default", + "typescript": "catalog:" + }, + "devDependencies": { + "eslint": "catalog:tools" + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/common/config/rush/common-versions.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/common/config/rush/common-versions.json new file mode 100644 index 00000000000..a37f7447be9 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/common/config/rush/common-versions.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", + "preferredVersions": { + "typescript": "~5.8.2", + "eslint": "~9.37.0", + "aliased-dep": "^1.0.0", + "git-dep": "git+https://github.com/example/git-dep.git" + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/common/config/rush/pnpm-config.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/common/config/rush/pnpm-config.json new file mode 100644 index 00000000000..bb05c081e88 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/common/config/rush/pnpm-config.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/pnpm-config.schema.json", + "useWorkspaces": true, + "globalCatalogs": { + "default": { + "typescript": "~5.8.2", + "tslib": "~2.3.1" + }, + "tools": { + "eslint": "~9.37.0" + } + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/libs/lib-b/package.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/libs/lib-b/package.json new file mode 100644 index 00000000000..0276bd17278 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/libs/lib-b/package.json @@ -0,0 +1,14 @@ +{ + "name": "lib-b", + "version": "1.0.0", + "dependencies": { + "aliased-dep": "npm:real-dep@^1.0.0", + "git-dep": "^2.0.0", + "missing-entry": "catalog:", + "tslib": "catalog:" + }, + "devDependencies": { + "missing-catalog": "catalog:nonexistent", + "typescript": "~5.8.2" + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/rush.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/rush.json new file mode 100644 index 00000000000..47863ff0caa --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithCatalogs/rush.json @@ -0,0 +1,17 @@ +{ + "pnpmVersion": "9.15.0", + "rushVersion": "5.46.1", + "projectFolderMinDepth": 1, + "projectFolderMaxDepth": 99, + + "projects": [ + { + "packageName": "app-a", + "projectFolder": "apps/app-a" + }, + { + "packageName": "lib-b", + "projectFolder": "libs/lib-b" + } + ] +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/catalog-consumer/package.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/catalog-consumer/package.json new file mode 100644 index 00000000000..b89876da931 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/catalog-consumer/package.json @@ -0,0 +1,13 @@ +{ + "name": "catalog-consumer", + "version": "1.0.0", + "dependencies": { + "lodash": "catalog:", + "catalog-provider": "workspace:*" + }, + "dependenciesMeta": { + "catalog-provider": { + "injected": true + } + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/catalog-provider/package.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/catalog-provider/package.json new file mode 100644 index 00000000000..6e167affc61 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/catalog-provider/package.json @@ -0,0 +1,19 @@ +{ + "name": "catalog-provider", + "version": "1.0.0", + "dependencies": { + "left-pad": "^1.3.0", + "lodash": "catalog:default", + "semver": "catalog:", + "transitive-provider": "workspace:*" + }, + "optionalDependencies": { + "fsevents": "catalog:" + }, + "peerDependencies": { + "typescript": "catalog:tools" + }, + "devDependencies": { + "jest": "catalog:" + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/experiments.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/experiments.json new file mode 100644 index 00000000000..a20c6d24388 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/experiments.json @@ -0,0 +1,3 @@ +{ + "exemptDecoupledDependenciesBetweenSubspaces": true +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/pnpm-config.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/pnpm-config.json new file mode 100644 index 00000000000..adc750f925e --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/pnpm-config.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/pnpm-config.schema.json", + "useWorkspaces": true, + "globalCatalogs": { + "default": { + "fsevents": "~2.3.2", + "jest": "^29.0.0", + "lodash": "^4.17.21", + "semver": "~7.5.4" + }, + "tools": { + "typescript": "~5.3.0" + } + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/subspaces.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/subspaces.json new file mode 100644 index 00000000000..e95203d5d1b --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/subspaces.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/subspaces.schema.json", + "subspacesEnabled": true, + "subspaceNames": ["consumer-subspace", "unrelated-subspace"] +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/version-policies.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/version-policies.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/rush/version-policies.json @@ -0,0 +1 @@ +[] diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/consumer-subspace/common-versions.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/consumer-subspace/common-versions.json new file mode 100644 index 00000000000..9280fe7b96d --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/consumer-subspace/common-versions.json @@ -0,0 +1,8 @@ +/** + * This configuration file specifies NPM dependency version selections that affect all projects + * in a Rush repo. More documentation is available on the Rush website: https://rushjs.io + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", + "ensureConsistentVersions": true +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/consumer-subspace/pnpm-config.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/consumer-subspace/pnpm-config.json new file mode 100644 index 00000000000..b6d29fc30af --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/consumer-subspace/pnpm-config.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/pnpm-config.schema.json", + "useWorkspaces": true, + "globalCatalogs": { + "default": { + "lodash": "^3.10.1", + "semver": "^6.0.0" + } + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/default/common-versions.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/default/common-versions.json new file mode 100644 index 00000000000..9280fe7b96d --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/default/common-versions.json @@ -0,0 +1,8 @@ +/** + * This configuration file specifies NPM dependency version selections that affect all projects + * in a Rush repo. More documentation is available on the Rush website: https://rushjs.io + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", + "ensureConsistentVersions": true +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/unrelated-subspace/common-versions.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/unrelated-subspace/common-versions.json new file mode 100644 index 00000000000..9280fe7b96d --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/unrelated-subspace/common-versions.json @@ -0,0 +1,8 @@ +/** + * This configuration file specifies NPM dependency version selections that affect all projects + * in a Rush repo. More documentation is available on the Rush website: https://rushjs.io + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", + "ensureConsistentVersions": true +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/unrelated-subspace/pnpm-config.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/unrelated-subspace/pnpm-config.json new file mode 100644 index 00000000000..07cec4c4da0 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/common/config/subspaces/unrelated-subspace/pnpm-config.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/pnpm-config.schema.json", + "useWorkspaces": true, + "globalCatalogs": { + "default": { + "lodash": "^2.4.2" + } + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/rush.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/rush.json new file mode 100644 index 00000000000..a29b8cc2a9c --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/rush.json @@ -0,0 +1,25 @@ +{ + "rushVersion": "1.0.5", + "pnpmVersion": "9.15.0", + + "projects": [ + { + "packageName": "catalog-provider", + "projectFolder": "catalog-provider" + }, + { + "packageName": "transitive-provider", + "projectFolder": "transitive-provider" + }, + { + "packageName": "catalog-consumer", + "projectFolder": "catalog-consumer", + "subspaceName": "consumer-subspace" + }, + { + "packageName": "unrelated", + "projectFolder": "unrelated", + "subspaceName": "unrelated-subspace" + } + ] +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/transitive-provider/package.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/transitive-provider/package.json new file mode 100644 index 00000000000..241ac6813bd --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/transitive-provider/package.json @@ -0,0 +1,7 @@ +{ + "name": "transitive-provider", + "version": "1.0.0", + "dependencies": { + "lodash": "catalog:" + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/unrelated/package.json b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/unrelated/package.json new file mode 100644 index 00000000000..2e8ae5e1a41 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/repoWithInjectedSubspaceCatalogs/unrelated/package.json @@ -0,0 +1,7 @@ +{ + "name": "unrelated", + "version": "1.0.0", + "dependencies": { + "lodash": "catalog:" + } +} diff --git a/libraries/rush-lib/src/logic/pnpm/test/yamlFiles/pnpm-lock-v9/catalogs-modified.yaml b/libraries/rush-lib/src/logic/pnpm/test/yamlFiles/pnpm-lock-v9/catalogs-modified.yaml new file mode 100644 index 00000000000..42402f36944 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/yamlFiles/pnpm-lock-v9/catalogs-modified.yaml @@ -0,0 +1,65 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +catalogs: + default: + tslib: + specifier: ~2.3.1 + version: 2.3.1 + typescript: + specifier: ~5.8.2 + version: 5.8.3 + tools: + eslint: + specifier: ~9.37.0 + version: 9.37.0 + +importers: + .: {} + + ../../apps/app-a: + dependencies: + lib-b: + specifier: workspace:* + version: link:../../libs/lib-b + tslib: + specifier: catalog:default + version: 2.3.1 + typescript: + specifier: ~5.8.2 + version: 5.8.3 + devDependencies: + eslint: + specifier: catalog:tools + version: 9.37.0 + +packages: + eslint@9.37.0: + resolution: + { + integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig== + } + + tslib@2.3.1: + resolution: + { + integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + } + + typescript@5.8.3: + resolution: + { + integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== + } + engines: { node: '>=14.17' } + hasBin: true + +snapshots: + eslint@9.37.0: {} + + tslib@2.3.1: {} + + typescript@5.8.3: {} diff --git a/libraries/rush-lib/src/logic/pnpm/test/yamlFiles/pnpm-lock-v9/catalogs-not-modified.yaml b/libraries/rush-lib/src/logic/pnpm/test/yamlFiles/pnpm-lock-v9/catalogs-not-modified.yaml new file mode 100644 index 00000000000..55bae5ebf38 --- /dev/null +++ b/libraries/rush-lib/src/logic/pnpm/test/yamlFiles/pnpm-lock-v9/catalogs-not-modified.yaml @@ -0,0 +1,65 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +catalogs: + default: + tslib: + specifier: ~2.3.1 + version: 2.3.1 + typescript: + specifier: ~5.8.2 + version: 5.8.3 + tools: + eslint: + specifier: ~9.37.0 + version: 9.37.0 + +importers: + .: {} + + ../../apps/app-a: + dependencies: + lib-b: + specifier: workspace:* + version: link:../../libs/lib-b + tslib: + specifier: catalog:default + version: 2.3.1 + typescript: + specifier: 'catalog:' + version: 5.8.3 + devDependencies: + eslint: + specifier: catalog:tools + version: 9.37.0 + +packages: + eslint@9.37.0: + resolution: + { + integrity: sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig== + } + + tslib@2.3.1: + resolution: + { + integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + } + + typescript@5.8.3: + resolution: + { + integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== + } + engines: { node: '>=14.17' } + hasBin: true + +snapshots: + eslint@9.37.0: {} + + tslib@2.3.1: {} + + typescript@5.8.3: {} diff --git a/libraries/rush-lib/src/logic/test/BaseInstallManager.test.ts b/libraries/rush-lib/src/logic/test/BaseInstallManager.test.ts index a42f25a86ad..53a369988e3 100644 --- a/libraries/rush-lib/src/logic/test/BaseInstallManager.test.ts +++ b/libraries/rush-lib/src/logic/test/BaseInstallManager.test.ts @@ -148,11 +148,17 @@ describe('PNPM configuration arguments', () => { jest.restoreAllMocks(); }); + interface IConfigurationArgsScenario { + frozenLockfileForInstall?: boolean; + hasInjectedDependencies?: boolean; + } + function getConfigurationArgs( pnpmVersion: string, npmrcSettings: boolean, - pnpmOptions: Partial> = {} - ): { args: string[]; warnings: string } { + pnpmOptions: Partial> = {}, + { frozenLockfileForInstall = false, hasInjectedDependencies = false }: IConfigurationArgsScenario = {} + ): { args: string[]; output: string; warnings: string } { jest.spyOn(npmrcUtilities, 'isVariableSetInNpmrcFile').mockReturnValue(npmrcSettings); const terminalProvider: StringBufferTerminalProvider = new StringBufferTerminalProvider(); const manager: FakeBaseInstallManager = Object.create(FakeBaseInstallManager.prototype); @@ -162,19 +168,65 @@ describe('PNPM configuration arguments', () => { isPnpm: true, packageManagerToolVersion: pnpmVersion, pnpmOptions: { pnpmStore: 'global', pnpmStorePath: '/repo/common/temp/pnpm-store', ...pnpmOptions }, - experimentsConfiguration: { configuration: {} } + experimentsConfiguration: { + configuration: { usePnpmFrozenLockfileForRushInstall: frozenLockfileForInstall } + } }, _terminal: new Terminal(terminalProvider) }); const args: string[] = []; manager.pushConfigurationArgs( args, - { pnpmFilterArgumentValues: [] } as unknown as IInstallManagerOptions, - { getSubspaceConfigFolderPath: () => '/repo/common/config/rush' } as Subspace + { pnpmFilterArgumentValues: [], allowShrinkwrapUpdates: false } as unknown as IInstallManagerOptions, + { + getSubspaceConfigFolderPath: () => '/repo/common/config/rush', + getPackageJsonInjectedDependenciesHash: () => (hasInjectedDependencies ? 'hash' : undefined) + } as unknown as Subspace ); - return { args, warnings: terminalProvider.getWarningOutput() }; + return { args, output: terminalProvider.getOutput(), warnings: terminalProvider.getWarningOutput() }; } + it.each([ + ['10.27.0', true], + ['12.10.1', false] + ])( + 'uses a frozen lockfile for install with PNPM %s when injected dependencies=%s', + (pnpmVersion: string, hasInjectedDependencies: boolean) => { + const { args, output } = getConfigurationArgs( + pnpmVersion, + false, + {}, + { + frozenLockfileForInstall: true, + hasInjectedDependencies + } + ); + + expect(args).toContain('--frozen-lockfile'); + expect(args).not.toContain('--no-frozen-lockfile'); + expect(args).not.toContain('--prefer-frozen-lockfile'); + expect(output).not.toContain('injected workspace dependencies'); + } + ); + + it('prefers the lockfile for install with native PNPM and injected dependencies', () => { + const { args, output, warnings } = getConfigurationArgs( + '12.10.1', + false, + {}, + { + frozenLockfileForInstall: true, + hasInjectedDependencies: true + } + ); + + expect(args).toContain('--no-frozen-lockfile'); + expect(args).toContain('--prefer-frozen-lockfile'); + expect(args).not.toContain('--frozen-lockfile'); + expect(output).toContain('cannot verify injected workspace dependencies with "--frozen-lockfile"'); + expect(warnings).toBe(''); + }); + it.each(['8.14.0', '12.11.2'])( 'uses Rush defaults when settings are absent with PNPM %s', (pnpmVersion: string) => { diff --git a/libraries/rush-lib/src/logic/test/DependencyAnalyzer.test.ts b/libraries/rush-lib/src/logic/test/DependencyAnalyzer.test.ts index 04f192fef8a..e4dcaf334e0 100644 --- a/libraries/rush-lib/src/logic/test/DependencyAnalyzer.test.ts +++ b/libraries/rush-lib/src/logic/test/DependencyAnalyzer.test.ts @@ -2,6 +2,7 @@ // See LICENSE in the project root for license information. import { RushConfiguration } from '../../api/RushConfiguration'; +import type { Subspace } from '../../api/Subspace'; import { DependencyAnalyzer, type IDependencyAnalysis } from '../DependencyAnalyzer'; describe(DependencyAnalyzer.name, () => { @@ -88,4 +89,139 @@ describe(DependencyAnalyzer.name, () => { } `); }); + + describe('PNPM catalogs', () => { + function getAnalysisForRushJson( + rushJsonPath: string, + subspaceName?: string, + addAction: boolean = false + ): IDependencyAnalysis { + const rushConfiguration: RushConfiguration = RushConfiguration.loadFromConfigurationFile(rushJsonPath); + const subspace: Subspace | undefined = subspaceName + ? rushConfiguration.getSubspace(subspaceName) + : undefined; + return DependencyAnalyzer.forRushConfiguration(rushConfiguration).getAnalysis( + subspace, + undefined, + addAction + ); + } + + it('resolves references to the default and named catalogs', () => { + const analysis: IDependencyAnalysis = getAnalysisForRushJson(`${__dirname}/repoWithCatalogs/rush.json`); + expect(analysis.allVersionsByPackageName).toEqual( + new Map([ + ['react', new Set(['^18.0.0'])], + ['semver', new Set(['^7.5.4'])], + ['typescript', new Set(['~5.3.0'])], + ['eslint', new Set(['^8.50.0'])] + ]) + ); + expect(analysis.implicitlyPreferredVersionByPackageName).toEqual( + new Map([ + ['react', '^18.0.0'], + ['semver', '^7.5.4'], + ['typescript', '~5.3.0'], + ['eslint', '^8.50.0'] + ]) + ); + expect(analysis.catalogNamesByPackageName).toEqual( + new Map([ + ['react', new Set(['default'])], + ['semver', new Set(['default'])], + ['typescript', new Set(['tools'])], + ['eslint', new Set(['tools'])] + ]) + ); + }); + + it('treats "catalog:default" like "catalog:", and ignores catalog references that do not resolve', () => { + // app-a uses "tslib": "catalog:default" and "typescript": "catalog:" + // lib-b uses "tslib": "catalog:", a literal "typescript": "~5.8.2", and references + // a catalog entry and a catalog that don't exist + const analysis: IDependencyAnalysis = getAnalysisForRushJson( + `${__dirname}/../pnpm/test/repoWithCatalogs/rush.json` + ); + expect(analysis.allVersionsByPackageName).toEqual( + new Map([ + ['tslib', new Set(['~2.3.1'])], + ['typescript', new Set(['~5.8.2'])], + ['eslint', new Set(['~9.37.0'])], + ['aliased-dep', new Set(['npm:real-dep@^1.0.0'])], + ['git-dep', new Set(['^2.0.0'])] + ]) + ); + expect(analysis.implicitlyPreferredVersionByPackageName).toEqual( + new Map([ + ['tslib', '~2.3.1'], + ['typescript', '~5.8.2'], + ['eslint', '~9.37.0'], + ['aliased-dep', 'npm:real-dep@^1.0.0'], + ['git-dep', '^2.0.0'] + ]) + ); + expect(analysis.catalogNamesByPackageName).toEqual( + new Map([ + ['tslib', new Set(['default'])], + ['typescript', new Set(['default'])], + ['eslint', new Set(['tools'])] + ]) + ); + }); + + it("resolves catalog references using the catalogs of each project's subspace", () => { + // a (default subspace) and e (own-config-subspace) both use "react": "catalog:", but the + // catalogs resolve it to different versions. c (other-subspace) falls back to the common catalogs. + const analysis: IDependencyAnalysis = getAnalysisForRushJson( + `${__dirname}/repoWithSubspacesCommonCatalogs/rush.json` + ); + expect(analysis.allVersionsByPackageName).toEqual( + new Map([ + ['react', new Set(['^18.0.0', '^17.0.0'])], + ['typescript', new Set(['~5.3.0'])], + ['foo', new Set(['~2.0.0'])], + ['lodash', new Set(['^4.17.0'])] + ]) + ); + expect(analysis.implicitlyPreferredVersionByPackageName).toEqual( + new Map([ + ['typescript', '~5.3.0'], + ['foo', '~2.0.0'], + ['lodash', '^4.17.0'] + ]) + ); + expect(analysis.catalogNamesByPackageName).toEqual( + new Map([ + ['react', new Set(['default'])], + ['typescript', new Set(['tools'])], + ['foo', new Set(['default'])] + ]) + ); + }); + + it('resolves catalog references using the subspace catalogs for "rush add"', () => { + const ownConfigAnalysis: IDependencyAnalysis = getAnalysisForRushJson( + `${__dirname}/repoWithSubspacesCommonCatalogs/rush.json`, + 'own-config-subspace', + true + ); + expect(ownConfigAnalysis.allVersionsByPackageName).toEqual(new Map([['react', new Set(['^17.0.0'])]])); + expect(ownConfigAnalysis.implicitlyPreferredVersionByPackageName).toEqual( + new Map([['react', '^17.0.0']]) + ); + + const otherAnalysis: IDependencyAnalysis = getAnalysisForRushJson( + `${__dirname}/repoWithSubspacesCommonCatalogs/rush.json`, + 'other-subspace', + true + ); + expect(otherAnalysis.implicitlyPreferredVersionByPackageName).toEqual( + new Map([ + ['foo', '~2.0.0'], + ['lodash', '^4.17.0'] + ]) + ); + expect(otherAnalysis.catalogNamesByPackageName).toEqual(new Map([['foo', new Set(['default'])]])); + }); + }); }); diff --git a/libraries/rush-lib/src/logic/test/InstallHelpers.test.ts b/libraries/rush-lib/src/logic/test/InstallHelpers.test.ts index 9f6eda0d499..faf0ed0b2dd 100644 --- a/libraries/rush-lib/src/logic/test/InstallHelpers.test.ts +++ b/libraries/rush-lib/src/logic/test/InstallHelpers.test.ts @@ -2,6 +2,7 @@ // See LICENSE in the project root for license information. import { execFileSync } from 'node:child_process'; +import * as crypto from 'node:crypto'; import * as fs from 'node:fs'; import * as os from 'node:os'; import * as path from 'node:path'; @@ -15,6 +16,8 @@ import { RushConfiguration } from '../../api/RushConfiguration'; import type { RushGlobalFolder } from '../../api/RushGlobalFolder'; import { Utilities } from '../../utilities/Utilities'; import type { PnpmWorkspaceFile } from '../pnpm/PnpmWorkspaceFile'; +import type { Subspace } from '../../api/Subspace'; +import { getEffectivePnpmCatalogs } from '../pnpm/EffectivePnpmOptions'; describe(InstallHelpers.name, () => { describe(InstallHelpers.shouldProvideNpmrcCredentialsViaEnvironment.name, () => { @@ -390,4 +393,36 @@ describe(InstallHelpers.name, () => { expect(workspaceFile?.globalPnpmfile).toBeUndefined(); }); }); + + describe(InstallHelpers.resolvePnpmSettings.name, () => { + it('writes the same catalogs that the repo-state.json catalog hash is computed from', () => { + const RUSH_JSON_FILENAME: string = `${__dirname}/repoWithSubspacesCommonCatalogs/rush.json`; + const rushConfiguration: RushConfiguration = + RushConfiguration.loadFromConfigurationFile(RUSH_JSON_FILENAME); + const terminal: Terminal = new Terminal(new StringBufferTerminalProvider()); + + const expectedCatalogsBySubspaceName: Map = new Map([ + // These subspaces don't have a pnpm-config.json, so install uses common/config/rush/pnpm-config.json + ['default', TestUtilities.stripAnnotations(rushConfiguration.pnpmOptions.globalCatalogs)], + ['other-subspace', TestUtilities.stripAnnotations(rushConfiguration.pnpmOptions.globalCatalogs)], + ['own-config-subspace', { default: { react: '^17.0.0' } }] + ]); + + for (const [subspaceName, expectedCatalogs] of expectedCatalogsBySubspaceName) { + const subspace: Subspace = rushConfiguration.getSubspace(subspaceName); + const pnpmSettings = InstallHelpers.resolvePnpmSettings(rushConfiguration, subspace, terminal); + const catalogs: Record> | undefined = + TestUtilities.stripAnnotations(pnpmSettings)?.workspaceFile.catalogs; + + expect(catalogs).toBeDefined(); + expect(catalogs).toEqual(expectedCatalogs); + expect(catalogs).toEqual( + TestUtilities.stripAnnotations(getEffectivePnpmCatalogs(subspace, rushConfiguration)) + ); + expect(subspace.getPnpmCatalogsHash()).toEqual( + crypto.createHash('sha1').update(JSON.stringify(catalogs)).digest('hex') + ); + } + }); + }); }); diff --git a/libraries/rush-lib/src/logic/test/PackageJsonUpdater.test.ts b/libraries/rush-lib/src/logic/test/PackageJsonUpdater.test.ts new file mode 100644 index 00000000000..3c692d3f18c --- /dev/null +++ b/libraries/rush-lib/src/logic/test/PackageJsonUpdater.test.ts @@ -0,0 +1,575 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. +// See LICENSE in the project root for license information. + +import * as path from 'node:path'; + +import type { INpmCheckPackageSummary } from '@rushstack/npm-check-fork'; +import { TestUtilities } from '@rushstack/heft-config-file'; +import { StringBufferTerminalProvider, Terminal } from '@rushstack/terminal'; + +import { RushConfiguration } from '../../api/RushConfiguration'; +import type { RushConfigurationProject } from '../../api/RushConfigurationProject'; +import { DependencyType } from '../../api/PackageJsonEditor'; +import { RushGlobalFolder } from '../../api/RushGlobalFolder'; +import type { Subspace } from '../../api/Subspace'; +import { type IExecuteCommandAndCaptureOutputOptions, Utilities } from '../../utilities/Utilities'; +import { InstallHelpers } from '../installManager/InstallHelpers'; +import { InstallManagerFactory } from '../InstallManagerFactory'; +import type { BaseInstallManager } from '../base/BaseInstallManager'; +import { PackageJsonUpdater } from '../PackageJsonUpdater'; +import { type IPackageJsonUpdaterRushAddOptions, SemVerStyle } from '../PackageJsonUpdaterTypes'; +import { getEffectivePnpmCatalogs, type PnpmCatalogs } from '../pnpm/EffectivePnpmOptions'; +import { PnpmOptionsConfiguration } from '../pnpm/PnpmOptionsConfiguration'; +import { PurgeManager } from '../PurgeManager'; +import { VersionMismatchFinderProject } from '../versionMismatch/VersionMismatchFinderProject'; +import { VersionMismatchFinderCommonVersions } from '../versionMismatch/VersionMismatchFinderCommonVersions'; + +interface IAddOptions { + makeConsistent?: boolean; + dev?: boolean; + skipUpdate?: boolean; +} + +describe(PackageJsonUpdater.name, () => { + let rushConfiguration: RushConfiguration; + let terminalProvider: StringBufferTerminalProvider; + let packageJsonUpdater: PackageJsonUpdater; + // The catalogs written to each pnpm-config.json file + let savedCatalogsByFilePath: Map; + // The latest version of each package in the mocked registry + let latestVersionByPackageName: Map; + let doInstallAsyncMock: jest.Mock; + + function loadRepo(repoFolderName: string): void { + rushConfiguration = RushConfiguration.loadFromConfigurationFile( + path.resolve(__dirname, repoFolderName, 'rush.json') + ); + terminalProvider = new StringBufferTerminalProvider(); + packageJsonUpdater = new PackageJsonUpdater( + new Terminal(terminalProvider), + rushConfiguration, + new RushGlobalFolder() + ); + } + + beforeEach(() => { + // Don't write the fixture files + jest.spyOn(VersionMismatchFinderProject.prototype, 'saveIfModifiedAsync').mockResolvedValue(false); + jest.spyOn(VersionMismatchFinderCommonVersions.prototype, 'saveIfModifiedAsync').mockResolvedValue(false); + + savedCatalogsByFilePath = new Map(); + jest + .spyOn(PnpmOptionsConfiguration.prototype, 'updateGlobalCatalogsAsync') + .mockImplementation(async function ( + this: PnpmOptionsConfiguration, + catalogs: PnpmCatalogs | undefined + ): Promise { + savedCatalogsByFilePath.set(this.jsonFilename!, TestUtilities.stripAnnotations(catalogs)); + }); + + // Don't query the registry + latestVersionByPackageName = new Map(); + jest.spyOn(InstallHelpers, 'ensureLocalPackageManagerAsync').mockResolvedValue(undefined); + ( + jest.spyOn(Utilities, 'executeCommandAndCaptureOutputAsync') as unknown as jest.SpyInstance< + Promise, + [IExecuteCommandAndCaptureOutputOptions] + > + ).mockImplementation(async ({ args }): Promise => { + // "view @latest version" or "view versions --json" + const packageName: string = args[1].replace(/@latest$/, ''); + const latestVersion: string | undefined = latestVersionByPackageName.get(packageName); + if (latestVersion === undefined) { + throw new Error(`Unexpected registry query: ${args.join(' ')}`); + } + + return args[2] === 'versions' ? JSON.stringify([latestVersion]) : `${latestVersion}\n`; + }); + + // Don't run "rush update" + doInstallAsyncMock = jest.fn().mockResolvedValue(undefined); + jest + .spyOn(InstallManagerFactory, 'getInstallManagerAsync') + .mockResolvedValue({ doInstallAsync: doInstallAsyncMock } as unknown as BaseInstallManager); + jest.spyOn(PurgeManager.prototype, 'startDeleteAllAsync').mockResolvedValue(undefined); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + function getProject(projectName: string): RushConfigurationProject { + return rushConfiguration.getProjectByName(projectName)!; + } + + function getVersionSpecifier(projectName: string, packageName: string): string | undefined { + return getProject(projectName).packageJsonEditor.tryGetDependency(packageName)?.version; + } + + function getDevVersionSpecifier(projectName: string, packageName: string): string | undefined { + return getProject(projectName).packageJsonEditor.tryGetDevDependency(packageName)?.version; + } + + function getCatalogs(subspace: Subspace = rushConfiguration.defaultSubspace): PnpmCatalogs { + return getEffectivePnpmCatalogs(subspace, rushConfiguration)!; + } + + function setPreferredVersion( + packageName: string, + version: string, + subspace: Subspace = rushConfiguration.defaultSubspace + ): void { + // Avoid querying the registry for the version + subspace.getCommonVersions().preferredVersions.set(packageName, version); + } + + async function addAsync( + projectNames: string[], + packagesToAdd: (string | [string, string])[], + { makeConsistent = false, dev = false, skipUpdate = true }: IAddOptions = {} + ): Promise { + const options: IPackageJsonUpdaterRushAddOptions = { + actionName: 'add', + projects: projectNames.map(getProject), + packagesToUpdate: packagesToAdd.map((packageToAdd) => + typeof packageToAdd === 'string' + ? { packageName: packageToAdd, version: undefined, rangeStyle: SemVerStyle.Tilde } + : { packageName: packageToAdd[0], version: packageToAdd[1], rangeStyle: SemVerStyle.Passthrough } + ), + updateOtherPackages: makeConsistent, + devDependency: dev, + peerDependency: false, + skipUpdate, + debugInstall: false, + variant: undefined + }; + await packageJsonUpdater.doRushUpdateAsync(options); + } + + async function upgradeAsync( + projectNames: string[], + packagesToUpgrade: Pick< + INpmCheckPackageSummary, + 'moduleName' | 'latest' | 'packageJson' | 'devDependency' + >[], + { makeConsistent = false }: IAddOptions = {} + ): Promise { + await packageJsonUpdater.doRushUpgradeAsync({ + projects: projectNames.map(getProject), + packagesToAdd: packagesToUpgrade.map( + (summary) => + ({ + homepage: '', + installed: summary.packageJson, + notInstalled: false, + mismatch: false, + ...summary + }) as INpmCheckPackageSummary + ), + updateOtherPackages: makeConsistent, + skipUpdate: true, + debugInstall: false, + variant: undefined + }); + } + + describe('"rush add" with PNPM catalogs', () => { + beforeEach(() => { + // Catalogs: default { react: ^18.0.0, semver: ^7.5.4 }, tools { typescript: ~5.3.0, eslint: ^8.50.0 } + // a: react catalog:, semver catalog:; b: typescript catalog:tools (dev); c: none; d: semver catalog:; + // e: eslint catalog:tools (dev) + loadRepo('repoWithCatalogs'); + }); + + it('references the default catalog when no version is specified', async () => { + await addAsync(['c'], ['semver']); + + expect(getVersionSpecifier('c', 'semver')).toEqual('catalog:'); + expect(savedCatalogsByFilePath.size).toEqual(0); + expect(terminalProvider.getWarningOutput()).toEqual(''); + }); + + it('references the only catalog that has the package', async () => { + await addAsync(['c'], ['typescript'], { dev: true }); + + expect(getDevVersionSpecifier('c', 'typescript')).toEqual('catalog:tools'); + expect(getVersionSpecifier('c', 'typescript')).toBeUndefined(); + }); + + it('prefers the catalog that other projects reference the package through', async () => { + getCatalogs().default.typescript = '~5.4.0'; + + await addAsync(['c'], ['typescript'], { dev: true }); + + // "b" uses "catalog:tools" + expect(getDevVersionSpecifier('c', 'typescript')).toEqual('catalog:tools'); + }); + + it('prefers the default catalog when other projects do not reference the package', async () => { + getCatalogs().default.zod = '^3.0.0'; + getCatalogs().tools.zod = '^3.1.0'; + + await addAsync(['c'], ['zod']); + + expect(getVersionSpecifier('c', 'zod')).toEqual('catalog:'); + }); + + it('assigns a version and prints a note when the catalog is ambiguous', async () => { + const catalogs: PnpmCatalogs = getCatalogs(); + catalogs.x = { zod: '^3.0.0' }; + catalogs.y = { zod: '^3.1.0' }; + latestVersionByPackageName.set('zod', '3.23.8'); + + await addAsync(['c'], ['zod']); + + expect(getVersionSpecifier('c', 'zod')).toEqual('~3.23.8'); + expect(terminalProvider.getOutput()).toContain( + 'Note: Rush could not choose between the PNPM catalogs "catalog:x" (^3.0.0), "catalog:y" (^3.1.0) for "zod", ' + + 'so the version "~3.23.8" is assigned instead of a catalog reference. ' + + 'To reference a catalog, specify "zod@catalog:".' + ); + expect(savedCatalogsByFilePath.size).toEqual(0); + }); + + it('references the catalog when the specified version matches the catalog entry', async () => { + await addAsync(['c'], [['semver', '^7.5.4']]); + + expect(getVersionSpecifier('c', 'semver')).toEqual('catalog:'); + expect(savedCatalogsByFilePath.size).toEqual(0); + }); + + it('references the catalog when the version that is found matches the catalog entry', async () => { + const catalogs: PnpmCatalogs = getCatalogs(); + catalogs.x = { zod: '^3.0.0' }; + catalogs.y = { zod: '~3.23.8' }; + latestVersionByPackageName.set('zod', '3.23.8'); + + await addAsync(['c'], ['zod']); + + expect(getVersionSpecifier('c', 'zod')).toEqual('catalog:y'); + }); + + it('assigns the specified version when it does not match the catalog entry', async () => { + setPreferredVersion('semver', '^7.6.0'); + + await addAsync(['c'], [['semver', '^7.6.0']]); + + expect(getVersionSpecifier('c', 'semver')).toEqual('^7.6.0'); + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:'); + expect(getVersionSpecifier('d', 'semver')).toEqual('catalog:'); + expect(terminalProvider.getOutput()).toContain( + 'Note: "^7.6.0" for "semver" is different from the PNPM catalog entry "catalog:" (^7.5.4), ' + + 'so the version "^7.6.0" is assigned instead of a catalog reference. ' + + 'To reference a catalog, specify "semver@catalog:", ' + + 'or use the "--make-consistent" flag to update the catalog entry.' + ); + expect(savedCatalogsByFilePath.size).toEqual(0); + }); + + it('updates the catalog entry when making versions consistent', async () => { + setPreferredVersion('semver', '^7.6.0'); + + await addAsync(['c'], [['semver', '^7.6.0']], { makeConsistent: true }); + + expect(getVersionSpecifier('c', 'semver')).toEqual('catalog:'); + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:'); + expect(getVersionSpecifier('d', 'semver')).toEqual('catalog:'); + expect(Object.fromEntries(savedCatalogsByFilePath)).toEqual({ + [rushConfiguration.defaultSubspace.getPnpmConfigFilePath()]: { + default: { react: '^18.0.0', semver: '^7.6.0' }, + tools: { typescript: '~5.3.0', eslint: '^8.50.0' } + } + }); + expect(terminalProvider.getOutput()).toContain('catalog: semver: ^7.5.4 -> ^7.6.0'); + expect(terminalProvider.getWarningOutput()).toEqual(''); + }); + + it('updates projects that use a version when making versions consistent with a catalog', async () => { + getProject('b').packageJsonEditor.addOrUpdateDependency('semver', '~7.0.0', DependencyType.Regular); + + await addAsync(['c'], [['semver', '^7.5.4']], { makeConsistent: true }); + + expect(getVersionSpecifier('b', 'semver')).toEqual('^7.5.4'); + expect(getVersionSpecifier('c', 'semver')).toEqual('catalog:'); + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:'); + expect(getVersionSpecifier('d', 'semver')).toEqual('catalog:'); + expect(savedCatalogsByFilePath.size).toEqual(0); + expect(terminalProvider.getWarningOutput()).toEqual(''); + }); + + it('updates catalog entries that other projects reference when making versions consistent', async () => { + // "e" uses "eslint": "catalog:tools" + getProject('c').packageJsonEditor.addOrUpdateDependency('eslint', '^8.0.0', DependencyType.Dev); + getCatalogs().default.eslint = '^8.0.0'; + + await addAsync(['c'], [['eslint', '^8.0.0']], { dev: true, makeConsistent: true }); + + expect(getDevVersionSpecifier('c', 'eslint')).toEqual('catalog:'); + expect(getDevVersionSpecifier('e', 'eslint')).toEqual('catalog:tools'); + expect( + TestUtilities.stripAnnotations( + savedCatalogsByFilePath.get(rushConfiguration.defaultSubspace.getPnpmConfigFilePath()) + ) + ).toMatchObject({ + default: { eslint: '^8.0.0' }, + tools: { eslint: '^8.0.0' } + }); + }); + + it.each([ + ['semver', 'catalog:', 'catalog:', false], + ['semver', 'catalog:default', 'catalog:', false], + ['typescript', 'catalog:tools', 'catalog:tools', true] + ])( + 'writes the explicitly specified catalog reference %s@%s', + async (packageName: string, versionSpecifier: string, expected: string, dev: boolean) => { + await addAsync(['c'], [[packageName, versionSpecifier]], { dev }); + + expect( + dev ? getDevVersionSpecifier('c', packageName) : getVersionSpecifier('c', packageName) + ).toEqual(expected); + expect(savedCatalogsByFilePath.size).toEqual(0); + } + ); + + it('replaces a version with an explicitly specified catalog reference', async () => { + getProject('c').packageJsonEditor.addOrUpdateDependency('semver', '~7.0.0', DependencyType.Regular); + + await addAsync(['c'], [['semver', 'catalog:']]); + + expect(getVersionSpecifier('c', 'semver')).toEqual('catalog:'); + }); + + it('reports an explicitly specified catalog that does not exist', async () => { + await expect(addAsync(['c'], [['semver', 'catalog:missing']])).rejects.toThrow( + 'The PNPM catalog "missing" that "semver@catalog:missing" references is not defined' + ); + expect(getVersionSpecifier('c', 'semver')).toBeUndefined(); + }); + + it('reports an explicitly specified catalog that does not have the package', async () => { + await expect(addAsync(['c'], [['semver', 'catalog:tools']])).rejects.toThrow( + 'does not have an entry for "semver"' + ); + expect(getVersionSpecifier('c', 'semver')).toBeUndefined(); + }); + + it('reports an explicitly specified catalog when the package manager is not PNPM', async () => { + Object.defineProperty(rushConfiguration, 'isPnpm', { value: false }); + + await expect(addAsync(['c'], [['semver', 'catalog:']])).rejects.toThrow( + 'catalogs are only supported when the package manager is PNPM' + ); + }); + + it('keeps the catalog reference of the project when the version matches', async () => { + getProject('a').packageJsonEditor.addOrUpdateDependency( + 'semver', + 'catalog:default', + DependencyType.Regular + ); + + await addAsync(['a'], [['semver', '^7.5.4']]); + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:default'); + + await addAsync(['a'], ['semver']); + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:default'); + }); + + it('prefers the catalog that the project already references', async () => { + getCatalogs().tools.semver = '^7.5.4'; + getProject('a').packageJsonEditor.addOrUpdateDependency( + 'semver', + 'catalog:tools', + DependencyType.Regular + ); + + await addAsync(['a'], ['semver']); + + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:tools'); + }); + + it('does not replace the catalog reference of the project with a different version', async () => { + setPreferredVersion('semver', '^7.6.0'); + + await expect(addAsync(['a'], [['semver', '^7.6.0']])).rejects.toThrow( + '"a" references "semver" through the PNPM catalog reference "catalog:", which is "^7.5.4". ' + + 'Rush will not replace the catalog reference with "^7.6.0".' + ); + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:'); + expect(savedCatalogsByFilePath.size).toEqual(0); + }); + + it('updates the catalog entry that the project references when making versions consistent', async () => { + setPreferredVersion('eslint', '^9.0.0'); + + await addAsync(['e'], [['eslint', '^9.0.0']], { dev: true, makeConsistent: true }); + + expect(getDevVersionSpecifier('e', 'eslint')).toEqual('catalog:tools'); + expect(savedCatalogsByFilePath.get(rushConfiguration.defaultSubspace.getPnpmConfigFilePath())).toEqual({ + default: { react: '^18.0.0', semver: '^7.5.4' }, + tools: { typescript: '~5.3.0', eslint: '^9.0.0' } + }); + }); + }); + + describe('"rush add" with subspaces that share a pnpm-config.json file', () => { + beforeEach(() => { + // common/config/rush/pnpm-config.json: default { react: ^18.0.0, foo: ~2.0.0 }, tools { typescript: ~5.3.0 } + // own-config-subspace: default { react: ^17.0.0 } + // default subspace: a (react catalog:), b (typescript catalog:tools) + // other-subspace: c (foo catalog:), d (lodash ^4.17.0) + // own-config-subspace: e (react catalog:) + loadRepo('repoWithSubspacesCommonCatalogs'); + }); + + it('reports the other subspaces that use the updated catalogs', async () => { + setPreferredVersion('react', '^18.3.0'); + + await addAsync(['b'], [['react', '^18.3.0']], { makeConsistent: true, skipUpdate: false }); + + expect(getVersionSpecifier('b', 'react')).toEqual('catalog:'); + expect(getVersionSpecifier('a', 'react')).toEqual('catalog:'); + const commonPnpmConfigFilePath: string = `${rushConfiguration.commonRushConfigFolder}/pnpm-config.json`; + expect(Object.fromEntries(savedCatalogsByFilePath)).toEqual({ + [commonPnpmConfigFilePath]: { + default: { react: '^18.3.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' } + } + }); + expect(doInstallAsyncMock).toHaveBeenCalledTimes(1); + + const warnings: string = terminalProvider.getWarningOutput(); + expect(warnings).toContain('rush update --subspace other-subspace'); + expect(warnings).not.toContain('rush update --subspace default'); + expect(warnings).not.toContain('own-config-subspace'); + }); + + it('updates the catalogs of a subspace with its own pnpm-config.json file', async () => { + const ownConfigSubspace: Subspace = rushConfiguration.getSubspace('own-config-subspace'); + setPreferredVersion('react', '^17.0.2', ownConfigSubspace); + + await addAsync(['e'], [['react', '^17.0.2']], { makeConsistent: true, skipUpdate: false }); + + expect(getVersionSpecifier('e', 'react')).toEqual('catalog:'); + expect(Object.fromEntries(savedCatalogsByFilePath)).toEqual({ + [ownConfigSubspace.getPnpmConfigFilePath()]: { default: { react: '^17.0.2' } } + }); + expect(terminalProvider.getWarningOutput()).toEqual(''); + }); + + it('reports the subspaces to update when "rush update" is skipped', async () => { + setPreferredVersion('react', '^18.3.0'); + + await addAsync(['b'], [['react', '^18.3.0']], { makeConsistent: true }); + + expect(doInstallAsyncMock).not.toHaveBeenCalled(); + const warnings: string = terminalProvider.getWarningOutput(); + expect(warnings).toContain('rush update --subspace default'); + expect(warnings).toContain('rush update --subspace other-subspace'); + }); + + it('enforces consistent versions when the catalog entry is different', async () => { + setPreferredVersion('react', '^18.3.0'); + + await expect(addAsync(['b'], [['react', '^18.3.0']])).rejects.toThrow( + "Adding 'react@^18.3.0' causes mismatched dependencies." + ); + expect(savedCatalogsByFilePath.size).toEqual(0); + }); + }); + + describe('"rush upgrade-interactive" with PNPM catalogs', () => { + it('updates the catalog entry instead of the catalog reference', async () => { + loadRepo('repoWithCatalogs'); + latestVersionByPackageName.set('semver', '7.6.3'); + + await upgradeAsync( + ['a'], + [{ moduleName: 'semver', latest: '7.6.3', packageJson: '^7.5.4', devDependency: false }] + ); + + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:'); + expect(getVersionSpecifier('d', 'semver')).toEqual('catalog:'); + expect(savedCatalogsByFilePath.get(rushConfiguration.defaultSubspace.getPnpmConfigFilePath())).toEqual({ + default: { react: '^18.0.0', semver: '^7.6.3' }, + tools: { typescript: '~5.3.0', eslint: '^8.50.0' } + }); + expect(terminalProvider.getOutput()).toContain( + '"a" references "semver" through the PNPM catalog "catalog:", so the catalog entry will be updated' + ); + }); + + it('updates the catalog entry of a dev dependency', async () => { + loadRepo('repoWithCatalogs'); + latestVersionByPackageName.set('typescript', '5.4.5'); + + await upgradeAsync( + ['b'], + [{ moduleName: 'typescript', latest: '5.4.5', packageJson: '~5.3.0', devDependency: true }] + ); + + expect(getDevVersionSpecifier('b', 'typescript')).toEqual('catalog:tools'); + expect( + savedCatalogsByFilePath.get(rushConfiguration.defaultSubspace.getPnpmConfigFilePath())?.tools + ).toEqual({ typescript: '~5.4.5', eslint: '^8.50.0' }); + }); + + it('updates the version of projects that do not reference a catalog', async () => { + loadRepo('repoWithCatalogs'); + latestVersionByPackageName.set('semver', '7.6.3'); + getProject('b').packageJsonEditor.addOrUpdateDependency('semver', '~7.0.0', DependencyType.Regular); + + await upgradeAsync( + ['a', 'b'], + [{ moduleName: 'semver', latest: '7.6.3', packageJson: '^7.5.4', devDependency: false }] + ); + + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:'); + expect(getVersionSpecifier('b', 'semver')).toEqual('^7.6.3'); + }); + + it('updates the other projects when making versions consistent', async () => { + loadRepo('repoWithCatalogs'); + latestVersionByPackageName.set('semver', '7.6.3'); + getProject('c').packageJsonEditor.addOrUpdateDependency('semver', '~7.0.0', DependencyType.Regular); + + await upgradeAsync( + ['a'], + [{ moduleName: 'semver', latest: '7.6.3', packageJson: '^7.5.4', devDependency: false }], + { makeConsistent: true } + ); + + expect(getVersionSpecifier('a', 'semver')).toEqual('catalog:'); + expect(getVersionSpecifier('c', 'semver')).toEqual('^7.6.3'); + expect(getVersionSpecifier('d', 'semver')).toEqual('catalog:'); + expect( + savedCatalogsByFilePath.get(rushConfiguration.defaultSubspace.getPnpmConfigFilePath())?.default + ).toEqual({ react: '^18.0.0', semver: '^7.6.3' }); + }); + + it('enforces consistent versions after updating the catalog entry', async () => { + loadRepo('repoWithSubspacesCommonCatalogs'); + latestVersionByPackageName.set('typescript', '5.4.5'); + + // "b" is the only project that uses typescript + await upgradeAsync( + ['b'], + [{ moduleName: 'typescript', latest: '5.4.5', packageJson: '~5.3.0', devDependency: true }] + ); + expect(getDevVersionSpecifier('b', 'typescript')).toEqual('catalog:tools'); + + loadRepo('repoWithSubspacesCommonCatalogs'); + getProject('a').packageJsonEditor.addOrUpdateDependency('typescript', '~5.3.0', DependencyType.Dev); + savedCatalogsByFilePath.clear(); + + await expect( + upgradeAsync( + ['b'], + [{ moduleName: 'typescript', latest: '5.4.5', packageJson: '~5.3.0', devDependency: true }] + ) + ).rejects.toThrow("Adding 'typescript@~5.4.5' causes mismatched dependencies."); + expect(savedCatalogsByFilePath.size).toEqual(0); + }); + }); +}); diff --git a/libraries/rush-lib/src/logic/test/ProjectChangeAnalyzer.test.ts b/libraries/rush-lib/src/logic/test/ProjectChangeAnalyzer.test.ts index 618bd4c6948..57cc15dc0c0 100644 --- a/libraries/rush-lib/src/logic/test/ProjectChangeAnalyzer.test.ts +++ b/libraries/rush-lib/src/logic/test/ProjectChangeAnalyzer.test.ts @@ -715,10 +715,7 @@ describe(ProjectChangeAnalyzer.name, () => { mockGetRepoChanges.mockReturnValue( new Map([ - [ - 'b/package.json', - { mode: 'modified', newhash: 'newhash-b', oldhash: 'oldhash-b', status: 'M' } - ] + ['b/package.json', { mode: 'modified', newhash: 'newhash-b', oldhash: 'oldhash-b', status: 'M' }] ]) ); const packageJsonByHash: Record = { @@ -1180,6 +1177,35 @@ describe(ProjectChangeAnalyzer.name, () => { expect(changedProjects.has(rushConfiguration.getProjectByName('c')!)).toBe(false); }); + it('normalizes catalog references the way PNPM does', async () => { + const rushConfiguration: RushConfiguration = getCatalogRushConfiguration(); + rushConfiguration.getProjectByName('d')!.packageJson.dependencies!.semver = 'catalog:default'; + rushConfiguration.getProjectByName('e')!.packageJson.devDependencies!.eslint = 'catalog: tools '; + mockPnpmConfigChanged(); + // semver changed in the default catalog, and eslint changed in the tools catalog + mockOldCatalogs({ + default: { react: '^18.0.0', semver: '^7.4.0' }, + tools: { typescript: '~5.3.0', eslint: '^8.40.0' } + }); + + const projectChangeAnalyzer: ProjectChangeAnalyzer = new ProjectChangeAnalyzer(rushConfiguration); + const terminal: Terminal = new Terminal(new StringBufferTerminalProvider(true)); + + const changedProjects = await projectChangeAnalyzer.getChangedProjectsAsync({ + enableFiltering: false, + includeExternalDependencies: false, + targetBranchName: 'main', + terminal + }); + + // 'd' uses "catalog:default" for semver (changed) + expect(changedProjects.has(rushConfiguration.getProjectByName('d')!)).toBe(true); + // 'e' uses "catalog: tools " for eslint (changed) + expect(changedProjects.has(rushConfiguration.getProjectByName('e')!)).toBe(true); + // 'b' uses "catalog:tools" for typescript only (unchanged) + expect(changedProjects.has(rushConfiguration.getProjectByName('b')!)).toBe(false); + }); + it('all catalog-using projects marked as changed when no old catalog existed', async () => { const rushConfiguration: RushConfiguration = getCatalogRushConfiguration(); mockPnpmConfigChanged(); @@ -1501,6 +1527,166 @@ describe(ProjectChangeAnalyzer.name, () => { expect(changedProjects.has(rushConfiguration.getProjectByName('f')!)).toBe(false); }); }); + + describe('catalog change detection for subspaces that use common/config/rush/pnpm-config.json', () => { + const COMMON_PNPM_CONFIG_PATH: string = 'common/config/rush/pnpm-config.json'; + const OWN_CONFIG_SUBSPACE_PNPM_CONFIG_PATH: string = + 'common/config/subspaces/own-config-subspace/pnpm-config.json'; + + function getCommonCatalogRushConfiguration(): RushConfiguration { + return RushConfiguration.loadFromConfigurationFile( + resolve(__dirname, 'repoWithSubspacesCommonCatalogs', 'rush.json') + ); + } + + /** + * Mocks the merge-base contents of the specified files. Any other file did not exist in the merge-base. + */ + function mockMergeBaseFiles(filesByPath: Record): void { + mockGetBlobContentAsync.mockImplementation((opts: { blobSpec: string; repositoryRoot: string }) => { + const filePath: string = opts.blobSpec.slice(opts.blobSpec.indexOf(':') + 1); + const file: object | undefined = filesByPath[filePath]; + return file + ? Promise.resolve(JSON.stringify(file)) + : Promise.reject(new Error(`Path '${filePath}' does not exist`)); + }); + } + + async function getChangedProjectNamesAsync( + rushConfiguration: RushConfiguration, + terminalProvider: StringBufferTerminalProvider = new StringBufferTerminalProvider(true) + ): Promise { + const projectChangeAnalyzer: ProjectChangeAnalyzer = new ProjectChangeAnalyzer(rushConfiguration); + const changedProjects: Set = + await projectChangeAnalyzer.getChangedProjectsAsync({ + enableFiltering: false, + includeExternalDependencies: false, + targetBranchName: 'main', + terminal: new Terminal(terminalProvider) + }); + return Array.from(changedProjects, (project: RushConfigurationProject) => project.packageName).sort(); + } + + it('detects changes to common/config/rush/pnpm-config.json for subspaces without their own pnpm-config.json', async () => { + const rushConfiguration: RushConfiguration = getCommonCatalogRushConfiguration(); + + mockGetRepoChanges.mockReturnValue( + new Map([ + [ + COMMON_PNPM_CONFIG_PATH, + { mode: 'modified', newhash: 'newhash', oldhash: 'oldhash', status: 'M' } + ] + ]) + ); + + // react was bumped in the common default catalog; foo and the tools catalog are unchanged + mockMergeBaseFiles({ + [COMMON_PNPM_CONFIG_PATH]: { + useWorkspaces: true, + globalCatalogs: { + default: { react: '^17.0.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' } + } + } + }); + + // 'a' (default subspace) uses "catalog:" for react. 'e' also uses "catalog:" for react, but + // own-config-subspace reads its catalogs from its own pnpm-config.json, so it is not affected. + expect(await getChangedProjectNamesAsync(rushConfiguration)).toEqual(['a']); + + // The mocked Git treats "main" as a commit, so it is used as the merge commit + const requestedBlobSpecs: string[] = mockGetBlobContentAsync.mock.calls.map( + ([opts]: [{ blobSpec: string }]) => opts.blobSpec + ); + expect(requestedBlobSpecs).toContain(`main:${COMMON_PNPM_CONFIG_PATH}`); + // own-config-subspace's pnpm-config.json did not change, so its catalogs are not diffed + expect(requestedBlobSpecs).not.toContain(`main:${OWN_CONFIG_SUBSPACE_PNPM_CONFIG_PATH}`); + }); + + it('detects changes to the common catalogs in every subspace that uses them', async () => { + const rushConfiguration: RushConfiguration = getCommonCatalogRushConfiguration(); + + mockGetRepoChanges.mockReturnValue( + new Map([ + [ + COMMON_PNPM_CONFIG_PATH, + { mode: 'modified', newhash: 'newhash', oldhash: 'oldhash', status: 'M' } + ] + ]) + ); + + // foo (default catalog) and typescript (tools catalog) were bumped; react is unchanged + mockMergeBaseFiles({ + [COMMON_PNPM_CONFIG_PATH]: { + useWorkspaces: true, + globalCatalogs: { + default: { react: '^18.0.0', foo: '~1.0.0' }, + tools: { typescript: '~5.2.0' } + } + } + }); + + // 'b' (default subspace) uses "catalog:tools" for typescript; 'c' (other-subspace) uses "catalog:" for foo + expect(await getChangedProjectNamesAsync(rushConfiguration)).toEqual(['b', 'c']); + }); + + it("compares against the common pnpm-config.json when a subspace's own pnpm-config.json was added", async () => { + const rushConfiguration: RushConfiguration = getCommonCatalogRushConfiguration(); + + mockGetRepoChanges.mockReturnValue( + new Map([ + [ + OWN_CONFIG_SUBSPACE_PNPM_CONFIG_PATH, + { mode: 'added', newhash: 'newhash', oldhash: '', status: 'A' } + ] + ]) + ); + + // Before own-config-subspace had a pnpm-config.json, it used the common catalogs, where react + // was already "^17.0.0". The new file only drops entries that 'e' does not use. + mockMergeBaseFiles({ + [COMMON_PNPM_CONFIG_PATH]: { + useWorkspaces: true, + globalCatalogs: { + default: { react: '^17.0.0', foo: '~2.0.0' }, + tools: { typescript: '~5.3.0' } + } + } + }); + + const terminalProvider: StringBufferTerminalProvider = new StringBufferTerminalProvider(true); + expect(await getChangedProjectNamesAsync(rushConfiguration, terminalProvider)).toEqual([]); + expect(terminalProvider.getWarningOutput()).not.toContain('was created or unparseable'); + }); + + it('assumes all catalog dependencies changed when common/config/rush/pnpm-config.json was added', async () => { + const rushConfiguration: RushConfiguration = getCommonCatalogRushConfiguration(); + + mockGetRepoChanges.mockReturnValue( + new Map([ + [COMMON_PNPM_CONFIG_PATH, { mode: 'added', newhash: 'newhash', oldhash: '', status: 'A' }] + ]) + ); + + // No pnpm-config.json existed in the merge-base + mockMergeBaseFiles({}); + + const terminalProvider: StringBufferTerminalProvider = new StringBufferTerminalProvider(true); + // 'a', 'b', and 'c' use catalogs from the common pnpm-config.json; 'd' has no catalog deps; + // 'e' uses the catalogs from own-config-subspace's pnpm-config.json, which did not change. + expect(await getChangedProjectNamesAsync(rushConfiguration, terminalProvider)).toEqual([ + 'a', + 'b', + 'c' + ]); + const warningOutput: string = terminalProvider.getWarningOutput(); + expect(warningOutput).toContain('"default" subspace pnpm-config.json was created or unparseable'); + expect(warningOutput).toContain( + '"other-subspace" subspace pnpm-config.json was created or unparseable' + ); + expect(warningOutput).not.toContain('"own-config-subspace"'); + }); + }); }); describe('isPackageJsonVersionOnlyChange', () => { diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/a/package.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/a/package.json new file mode 100644 index 00000000000..5c102c007ba --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/a/package.json @@ -0,0 +1,8 @@ +{ + "name": "a", + "version": "1.0.0", + "description": "Test package a", + "dependencies": { + "react": "catalog:" + } +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/b/package.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/b/package.json new file mode 100644 index 00000000000..f662bd13865 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/b/package.json @@ -0,0 +1,8 @@ +{ + "name": "b", + "version": "1.0.0", + "description": "Test package b", + "devDependencies": { + "typescript": "catalog:tools" + } +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/c/package.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/c/package.json new file mode 100644 index 00000000000..03d6d9935e7 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/c/package.json @@ -0,0 +1,8 @@ +{ + "name": "c", + "version": "1.0.0", + "description": "Test package c", + "dependencies": { + "foo": "catalog:" + } +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/experiments.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/experiments.json new file mode 100644 index 00000000000..a20c6d24388 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/experiments.json @@ -0,0 +1,3 @@ +{ + "exemptDecoupledDependenciesBetweenSubspaces": true +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/pnpm-config.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/pnpm-config.json new file mode 100644 index 00000000000..cede4f94767 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/pnpm-config.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/pnpm-config.schema.json", + "useWorkspaces": true, + "globalCatalogs": { + "default": { + "react": "^18.0.0", + "foo": "~2.0.0" + }, + "tools": { + "typescript": "~5.3.0" + } + } +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/subspaces.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/subspaces.json new file mode 100644 index 00000000000..9b41e2bfe21 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/subspaces.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/subspaces.schema.json", + "subspacesEnabled": true, + "subspaceNames": ["other-subspace", "own-config-subspace"] +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/version-policies.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/version-policies.json new file mode 100644 index 00000000000..fe51488c706 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/rush/version-policies.json @@ -0,0 +1 @@ +[] diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/default/common-versions.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/default/common-versions.json new file mode 100644 index 00000000000..9280fe7b96d --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/default/common-versions.json @@ -0,0 +1,8 @@ +/** + * This configuration file specifies NPM dependency version selections that affect all projects + * in a Rush repo. More documentation is available on the Rush website: https://rushjs.io + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", + "ensureConsistentVersions": true +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/other-subspace/common-versions.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/other-subspace/common-versions.json new file mode 100644 index 00000000000..9280fe7b96d --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/other-subspace/common-versions.json @@ -0,0 +1,8 @@ +/** + * This configuration file specifies NPM dependency version selections that affect all projects + * in a Rush repo. More documentation is available on the Rush website: https://rushjs.io + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", + "ensureConsistentVersions": true +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/own-config-subspace/common-versions.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/own-config-subspace/common-versions.json new file mode 100644 index 00000000000..9280fe7b96d --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/own-config-subspace/common-versions.json @@ -0,0 +1,8 @@ +/** + * This configuration file specifies NPM dependency version selections that affect all projects + * in a Rush repo. More documentation is available on the Rush website: https://rushjs.io + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/common-versions.schema.json", + "ensureConsistentVersions": true +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/own-config-subspace/pnpm-config.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/own-config-subspace/pnpm-config.json new file mode 100644 index 00000000000..949c6c7eab3 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/common/config/subspaces/own-config-subspace/pnpm-config.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/pnpm-config.schema.json", + "globalCatalogs": { + "default": { + "react": "^17.0.0" + } + } +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/d/package.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/d/package.json new file mode 100644 index 00000000000..16150472ae8 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/d/package.json @@ -0,0 +1,8 @@ +{ + "name": "d", + "version": "1.0.0", + "description": "Test package d", + "dependencies": { + "lodash": "^4.17.0" + } +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/e/package.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/e/package.json new file mode 100644 index 00000000000..55df4b0048a --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/e/package.json @@ -0,0 +1,8 @@ +{ + "name": "e", + "version": "1.0.0", + "description": "Test package e", + "dependencies": { + "react": "catalog:" + } +} diff --git a/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/rush.json b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/rush.json new file mode 100644 index 00000000000..67dfb61bef7 --- /dev/null +++ b/libraries/rush-lib/src/logic/test/repoWithSubspacesCommonCatalogs/rush.json @@ -0,0 +1,30 @@ +{ + "rushVersion": "1.0.5", + "pnpmVersion": "9.15.0", + + "projects": [ + { + "packageName": "a", + "projectFolder": "a" + }, + { + "packageName": "b", + "projectFolder": "b" + }, + { + "packageName": "c", + "projectFolder": "c", + "subspaceName": "other-subspace" + }, + { + "packageName": "d", + "projectFolder": "d", + "subspaceName": "other-subspace" + }, + { + "packageName": "e", + "projectFolder": "e", + "subspaceName": "own-config-subspace" + } + ] +} diff --git a/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinder.ts b/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinder.ts index 719924aae70..6770bb2a6c7 100644 --- a/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinder.ts +++ b/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinder.ts @@ -12,6 +12,13 @@ import { VersionMismatchFinderProject } from './VersionMismatchFinderProject'; import { VersionMismatchFinderCommonVersions } from './VersionMismatchFinderCommonVersions'; import { CustomTipId } from '../../api/CustomTipsConfiguration'; import type { Subspace } from '../../api/Subspace'; +import { getEffectivePnpmCatalogs, type PnpmCatalogs } from '../pnpm/EffectivePnpmOptions'; +import { + formatPnpmCatalogSpecifier, + type IPnpmCatalogReference, + tryParsePnpmCatalogName, + tryResolvePnpmCatalogReference +} from '../pnpm/PnpmCatalogReference'; const TRUNCATE_AFTER_PACKAGE_NAME_COUNT: number = 5; @@ -28,7 +35,13 @@ export interface IVersionMismatchFinderRushCheckOptions extends IVersionMismatch export interface IVersionMismatchFinderEnsureConsistentVersionsOptions extends IVersionMismatchFinderOptions {} -export interface IVersionMismatchFinderGetMismatchesOptions extends IVersionMismatchFinderOptions {} +export interface IVersionMismatchFinderGetMismatchesOptions extends IVersionMismatchFinderOptions { + /** + * The PNPM catalogs to resolve catalog references with. Defaults to the catalogs that are in effect + * for the subspace. Use this to account for catalog changes that have not been saved yet. + */ + pnpmCatalogs?: PnpmCatalogs; +} export interface IMismatchDependency { dependencyName: string; @@ -36,8 +49,27 @@ export interface IMismatchDependency { } export interface IMismatchDependencyVersion { + /** + * The version specifier. + * + * @remarks + * A PNPM catalog reference (such as `catalog:` or `catalog:tools`) is reported as the version from the + * catalog entry that it resolves to, because that is the version that PNPM installs. A catalog reference + * that does not resolve is reported as the catalog reference (`catalog:` for the default catalog, + * otherwise `catalog:`). + */ version: string; projects: string[]; + /** + * The projects that reference this version through a PNPM catalog, and the version specifier from each + * project's package.json. This is omitted if no project references this version through a catalog. + */ + catalogReferences?: IMismatchDependencyCatalogReference[]; +} + +export interface IMismatchDependencyCatalogReference { + project: string; + versionSpecifier: string; } export interface IMismatchDependencies { @@ -54,6 +86,11 @@ export class VersionMismatchFinder { */ #allowedAlternativeVersion: Map>; #mismatches: Map>; + /** + * For each mismatched dependency and version, the version specifier of each consumer that references + * the version through a PNPM catalog. + */ + #catalogVersionSpecifiers: Map>>; #projects: VersionMismatchFinderEntity[]; public constructor( @@ -62,6 +99,7 @@ export class VersionMismatchFinder { ) { this.#projects = projects; this.#mismatches = new Map>(); + this.#catalogVersionSpecifiers = new Map(); this.#allowedAlternativeVersion = allowedAlternativeVersions || new Map>(); this.#analyze(); } @@ -107,10 +145,14 @@ export class VersionMismatchFinder { /** * Populates a version mismatch finder object given a Rush Configuration. * Intentionally considers preferred versions. + * + * @remarks + * PNPM catalog references (such as `catalog:`) are compared by the version that they resolve to, using + * the catalogs that are in effect for the subspace. */ public static getMismatches( rushConfiguration: RushConfiguration, - options?: IVersionMismatchFinderOptions + options?: IVersionMismatchFinderGetMismatchesOptions ): VersionMismatchFinder { const { subspace = rushConfiguration.defaultSubspace, variant } = options ?? {}; const commonVersions: CommonVersionsConfiguration = subspace.getCommonVersions(variant); @@ -121,9 +163,14 @@ export class VersionMismatchFinder { // Make sure this one is first so it doesn't get truncated when a long list is printed projects.push(new VersionMismatchFinderCommonVersions(commonVersions)); + // Every project of the subspace belongs to the subspace, so they all resolve catalog references + // with the subspace's catalogs. + const pnpmCatalogs: PnpmCatalogs | undefined = + options?.pnpmCatalogs ?? getEffectivePnpmCatalogs(subspace, rushConfiguration); + // If subspace is specified, only go through projects in that subspace for (const project of subspace.getProjects()) { - projects.push(new VersionMismatchFinderProject(project)); + projects.push(new VersionMismatchFinderProject(project, pnpmCatalogs)); } return new VersionMismatchFinder(projects, commonVersions.allowedAlternativeVersions); @@ -159,6 +206,19 @@ export class VersionMismatchFinder { return mismatchedVersion; } + /** + * If the consumer references the mismatched version through a PNPM catalog, returns the version + * specifier from the consumer's package.json (such as `catalog:` or `catalog:tools`). Otherwise + * returns `undefined`. + */ + public tryGetCatalogVersionSpecifier( + mismatch: string, + version: string, + consumer: VersionMismatchFinderEntity + ): string | undefined { + return this.#catalogVersionSpecifiers.get(mismatch)?.get(version)?.get(consumer); + } + public printAsJson(): void { const mismatchDependencies: IMismatchDependency[] = []; @@ -166,13 +226,25 @@ export class VersionMismatchFinder { const mismatchDependencyVersionArray: IMismatchDependencyVersion[] = []; this.getVersionsOfMismatch(dependency)!.forEach((version: string) => { const projects: string[] = []; + const catalogReferences: IMismatchDependencyCatalogReference[] = []; this.getConsumersOfMismatch(dependency, version)!.forEach((project: VersionMismatchFinderEntity) => { projects.push(project.friendlyName); + const versionSpecifier: string | undefined = this.tryGetCatalogVersionSpecifier( + dependency, + version, + project + ); + if (versionSpecifier !== undefined) { + catalogReferences.push({ project: project.friendlyName, versionSpecifier }); + } }); const mismatchDependencyVersion: IMismatchDependencyVersion = { version: version, projects: projects }; + if (catalogReferences.length > 0) { + mismatchDependencyVersion.catalogReferences = catalogReferences; + } mismatchDependencyVersionArray.push(mismatchDependencyVersion); }); const mismatchDependency: IMismatchDependency = { @@ -196,26 +268,35 @@ export class VersionMismatchFinder { // eslint-disable-next-line no-console console.log(Colorize.yellow(dependency)); this.getVersionsOfMismatch(dependency)!.forEach((version: string) => { - // eslint-disable-next-line no-console - console.log(` ${version}`); const consumersOfMismatch: VersionMismatchFinderEntity[] = this.getConsumersOfMismatch( dependency, version )!; + // eslint-disable-next-line no-console + console.log(` ${version}${this.#getVersionAnnotation(dependency, version)}`); + let numberToPrint: number = truncateLongPackageNameLists ? TRUNCATE_AFTER_PACKAGE_NAME_COUNT : consumersOfMismatch.length; let numberRemaining: number = consumersOfMismatch.length; - for (const { friendlyName } of consumersOfMismatch) { + for (const consumer of consumersOfMismatch) { if (numberToPrint-- === 0) { break; } numberRemaining--; + const versionSpecifier: string | undefined = this.tryGetCatalogVersionSpecifier( + dependency, + version, + consumer + ); + const consumerAnnotation: string = + versionSpecifier !== undefined && versionSpecifier !== version ? ` (${versionSpecifier})` : ''; + // eslint-disable-next-line no-console - console.log(` - ${friendlyName}`); + console.log(` - ${consumer.friendlyName}${consumerAnnotation}`); } if (numberRemaining > 0) { @@ -228,6 +309,29 @@ export class VersionMismatchFinder { }); } + /** + * Describes where a mismatched version came from if any consumer references it through a PNPM catalog, + * for example ` (catalog:)` or ` (unresolved PNPM catalog reference)`. + */ + #getVersionAnnotation(dependency: string, version: string): string { + const catalogConsumers: Map | undefined = + this.#catalogVersionSpecifiers.get(dependency)?.get(version); + if (!catalogConsumers) { + return ''; + } + + if (tryParsePnpmCatalogName(version) !== undefined) { + return ' (unresolved PNPM catalog reference)'; + } + + const catalogSpecifiers: Set = new Set(); + for (const versionSpecifier of catalogConsumers.values()) { + catalogSpecifiers.add(formatPnpmCatalogSpecifier(tryParsePnpmCatalogName(versionSpecifier)!)); + } + + return ` (${Array.from(catalogSpecifiers).join(', ')})`; + } + #analyze(): void { this.#projects.forEach((project: VersionMismatchFinderEntity) => { if (!project.skipRushCheck) { @@ -240,11 +344,25 @@ export class VersionMismatchFinder { // before we get into that.) project.allDependencies.forEach((dependency: PackageJsonDependency) => { if (dependency.dependencyType !== DependencyType.Peer) { - const version: string = dependency.version!; + const versionSpecifier: string = dependency.version!; + + // Compare a PNPM catalog reference by the version that PNPM installs for it. A reference that + // does not resolve is compared as its canonical form, so that it is reported as its own version. + const catalogReference: IPnpmCatalogReference | undefined = tryResolvePnpmCatalogReference( + dependency.name, + versionSpecifier, + project.pnpmCatalogs + ); + const version: string = catalogReference + ? (catalogReference.resolvedVersion ?? formatPnpmCatalogSpecifier(catalogReference.catalogName)) + : versionSpecifier; const isCyclic: boolean = project.decoupledLocalDependencies.has(dependency.name); - if (this.#isVersionAllowedAlternative(dependency.name, version)) { + if ( + this.#isVersionAllowedAlternative(dependency.name, version) || + (catalogReference && this.#isVersionAllowedAlternative(dependency.name, versionSpecifier)) + ) { return; } @@ -265,6 +383,22 @@ export class VersionMismatchFinder { } else { consumers.push(project); } + + if (catalogReference) { + let catalogVersions: Map> | undefined = + this.#catalogVersionSpecifiers.get(name); + if (!catalogVersions) { + this.#catalogVersionSpecifiers.set(name, (catalogVersions = new Map())); + } + + let catalogConsumers: Map | undefined = + catalogVersions.get(version); + if (!catalogConsumers) { + catalogVersions.set(version, (catalogConsumers = new Map())); + } + + catalogConsumers.set(project, versionSpecifier); + } } }); } @@ -273,6 +407,7 @@ export class VersionMismatchFinder { this.#mismatches.forEach((mismatches: Map, project: string) => { if (mismatches.size <= 1) { this.#mismatches.delete(project); + this.#catalogVersionSpecifiers.delete(project); } }); } diff --git a/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderEntity.ts b/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderEntity.ts index 5b2284d97aa..4988f652926 100644 --- a/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderEntity.ts +++ b/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderEntity.ts @@ -2,23 +2,31 @@ // See LICENSE in the project root for license information. import type { PackageJsonDependency, DependencyType } from '../../api/PackageJsonEditor'; +import type { PnpmCatalogs } from '../pnpm/EffectivePnpmOptions'; export interface IVersionMismatchFinderEntityOptions { friendlyName: string; decoupledLocalDependencies: Set; skipRushCheck?: boolean; + /** + * The PNPM catalogs that resolve the entity's catalog references (such as `catalog:`), as returned by + * `getEffectivePnpmCatalogs()` for the subspace of the project. + */ + pnpmCatalogs?: PnpmCatalogs; } export abstract class VersionMismatchFinderEntity { public readonly friendlyName: string; public readonly decoupledLocalDependencies: Set; public readonly skipRushCheck: boolean | undefined; + public readonly pnpmCatalogs: PnpmCatalogs | undefined; public constructor(options: IVersionMismatchFinderEntityOptions) { - const { friendlyName, decoupledLocalDependencies, skipRushCheck } = options; + const { friendlyName, decoupledLocalDependencies, skipRushCheck, pnpmCatalogs } = options; this.friendlyName = friendlyName; this.decoupledLocalDependencies = decoupledLocalDependencies; this.skipRushCheck = skipRushCheck; + this.pnpmCatalogs = pnpmCatalogs; } public abstract get filePath(): string; diff --git a/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderProject.ts b/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderProject.ts index 78effefc747..42523032333 100644 --- a/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderProject.ts +++ b/libraries/rush-lib/src/logic/versionMismatch/VersionMismatchFinderProject.ts @@ -4,16 +4,22 @@ import { VersionMismatchFinderEntity } from './VersionMismatchFinderEntity'; import type { PackageJsonEditor, PackageJsonDependency, DependencyType } from '../../api/PackageJsonEditor'; import type { RushConfigurationProject } from '../../api/RushConfigurationProject'; +import type { PnpmCatalogs } from '../pnpm/EffectivePnpmOptions'; export class VersionMismatchFinderProject extends VersionMismatchFinderEntity { public packageName: string; #fileManager: PackageJsonEditor; - public constructor(project: RushConfigurationProject) { + /** + * @param pnpmCatalogs - the catalogs that are in effect for the project's subspace. If omitted, catalog + * references (such as `catalog:`) are compared as unresolved references. + */ + public constructor(project: RushConfigurationProject, pnpmCatalogs?: PnpmCatalogs) { super({ friendlyName: project.packageName, decoupledLocalDependencies: project.decoupledLocalDependencies, - skipRushCheck: project.skipRushCheck + skipRushCheck: project.skipRushCheck, + pnpmCatalogs }); this.#fileManager = project.packageJsonEditor; diff --git a/libraries/rush-sdk/package.json b/libraries/rush-sdk/package.json index ca6fea30fe4..ef6d1e25db7 100644 --- a/libraries/rush-sdk/package.json +++ b/libraries/rush-sdk/package.json @@ -62,11 +62,11 @@ "@rushstack/stream-collator": "workspace:*", "@rushstack/ts-command-line": "workspace:*", "@rushstack/webpack-preserve-dynamic-require-plugin": "workspace:*", - "@types/semver": "7.7.1", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/semver": "catalog:", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "webpack": "~5.105.2" + "webpack": "catalog:" }, "sideEffects": false } diff --git a/libraries/rush-terminal-renderer/package.json b/libraries/rush-terminal-renderer/package.json index c8209393c1f..11804271222 100644 --- a/libraries/rush-terminal-renderer/package.json +++ b/libraries/rush-terminal-renderer/package.json @@ -58,7 +58,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "peerDependencies": { diff --git a/libraries/rush-themed-ui/package.json b/libraries/rush-themed-ui/package.json index 295898f8994..d05fd64030c 100644 --- a/libraries/rush-themed-ui/package.json +++ b/libraries/rush-themed-ui/package.json @@ -13,19 +13,19 @@ "_phase:build": "heft run --only build -- --clean" }, "dependencies": { - "react": "~19.2.3", - "react-dom": "~19.2.3" + "react": "catalog:", + "react-dom": "catalog:" }, "devDependencies": { - "@radix-ui/colors": "~3.0.0", - "@radix-ui/react-checkbox": "~1.3.3", - "@radix-ui/react-icons": "~1.3.2", - "@radix-ui/react-scroll-area": "~1.2.10", - "@radix-ui/react-tabs": "~1.1.13", + "@radix-ui/colors": "catalog:", + "@radix-ui/react-checkbox": "catalog:", + "@radix-ui/react-icons": "catalog:", + "@radix-ui/react-scroll-area": "catalog:", + "@radix-ui/react-tabs": "catalog:", "@rushstack/heft": "workspace:*", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "eslint": "~9.37.0", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "eslint": "catalog:", "local-web-rig": "workspace:*" }, "sideEffects": false diff --git a/libraries/rushell/package.json b/libraries/rushell/package.json index 5702cd7658c..656abb29bdc 100644 --- a/libraries/rushell/package.json +++ b/libraries/rushell/package.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" } } diff --git a/libraries/stream-collator/package.json b/libraries/stream-collator/package.json index bbc14aba0a0..3b36b4b9c72 100644 --- a/libraries/stream-collator/package.json +++ b/libraries/stream-collator/package.json @@ -48,7 +48,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/libraries/terminal/package.json b/libraries/terminal/package.json index d31d13ce3e0..e8db56371e2 100644 --- a/libraries/terminal/package.json +++ b/libraries/terminal/package.json @@ -45,13 +45,13 @@ "dependencies": { "@rushstack/node-core-library": "workspace:*", "@rushstack/problem-matcher": "workspace:*", - "supports-color": "~8.1.1" + "supports-color": "catalog:" }, "devDependencies": { "@rushstack/heft": "1.3.4", - "@types/supports-color": "8.1.3", + "@types/supports-color": "catalog:", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "peerDependencies": { "@types/node": "*" diff --git a/libraries/tree-pattern/package.json b/libraries/tree-pattern/package.json index d03b6eb534f..b1d337f2dc6 100644 --- a/libraries/tree-pattern/package.json +++ b/libraries/tree-pattern/package.json @@ -45,7 +45,7 @@ "devDependencies": { "@rushstack/heft": "1.3.4", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "sideEffects": false } diff --git a/libraries/ts-command-line/package.json b/libraries/ts-command-line/package.json index bb91ee309be..c8b966f8647 100644 --- a/libraries/ts-command-line/package.json +++ b/libraries/ts-command-line/package.json @@ -44,15 +44,15 @@ "license": "MIT", "dependencies": { "@rushstack/terminal": "workspace:*", - "@types/argparse": "1.0.38", - "argparse": "~1.0.9", - "string-argv": "~0.3.1" + "@types/argparse": "catalog:", + "argparse": "catalog:", + "string-argv": "catalog:" }, "devDependencies": { "@rushstack/heft": "1.3.4", "@rushstack/node-core-library": "workspace:*", "decoupled-local-node-rig": "workspace:*", - "eslint": "~9.37.0" + "eslint": "catalog:" }, "sideEffects": false } diff --git a/libraries/typings-generator/package.json b/libraries/typings-generator/package.json index aade0228b4c..938567b25e0 100644 --- a/libraries/typings-generator/package.json +++ b/libraries/typings-generator/package.json @@ -48,15 +48,15 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "@jridgewell/sourcemap-codec": "~1.5.5", + "@jridgewell/sourcemap-codec": "catalog:", "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", - "chokidar": "~3.6.0", - "fast-glob": "~3.3.1" + "chokidar": "catalog:", + "fast-glob": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "peerDependencies": { diff --git a/libraries/worker-pool/package.json b/libraries/worker-pool/package.json index 42c264dc185..63e4612fa6d 100644 --- a/libraries/worker-pool/package.json +++ b/libraries/worker-pool/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "peerDependencies": { diff --git a/repo-scripts/doc-plugin-rush-stack/package.json b/repo-scripts/doc-plugin-rush-stack/package.json index 0636bb173df..7bb1d0b0663 100644 --- a/repo-scripts/doc-plugin-rush-stack/package.json +++ b/repo-scripts/doc-plugin-rush-stack/package.json @@ -34,14 +34,14 @@ "dependencies": { "@microsoft/api-documenter": "workspace:*", "@microsoft/api-extractor-model": "workspace:*", - "@microsoft/tsdoc": "~0.17.0", + "@microsoft/tsdoc": "catalog:", "@rushstack/node-core-library": "workspace:*", - "js-yaml": "~4.3.2" + "js-yaml": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/js-yaml": "4.0.9", - "eslint": "~9.37.0", + "@types/js-yaml": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" } } diff --git a/repo-scripts/repo-toolbox/package.json b/repo-scripts/repo-toolbox/package.json index 88bc21ecfbe..ad9720c523f 100644 --- a/repo-scripts/repo-toolbox/package.json +++ b/repo-scripts/repo-toolbox/package.json @@ -14,11 +14,11 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "diff": "~8.0.2" + "diff": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/rigs/decoupled-local-node-rig/package.json b/rigs/decoupled-local-node-rig/package.json index 7495e7f50b5..7b28104ffe6 100644 --- a/rigs/decoupled-local-node-rig/package.json +++ b/rigs/decoupled-local-node-rig/package.json @@ -15,18 +15,18 @@ "@rushstack/eslint-plugin": "0.24.0", "@rushstack/heft-node-rig": "2.11.55", "@rushstack/heft": "1.3.4", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", - "@typescript-eslint/eslint-plugin": "~8.56.1", - "@typescript-eslint/parser": "~8.56.1", - "eslint-plugin-header": "~3.1.1", - "eslint-plugin-headers": "~1.2.1", - "eslint-plugin-import": "2.32.0", - "eslint-plugin-jsdoc": "50.6.11", - "eslint-plugin-react-hooks": "5.2.0", - "eslint": "~9.37.0", - "jest-junit": "12.3.0", - "typescript": "~5.8.2", - "eslint-import-resolver-node": "0.3.9" + "@types/jest": "catalog:", + "@types/node": "catalog:", + "@typescript-eslint/eslint-plugin": "catalog:", + "@typescript-eslint/parser": "catalog:", + "eslint-plugin-header": "catalog:", + "eslint-plugin-headers": "catalog:", + "eslint-plugin-import": "catalog:", + "eslint-plugin-jsdoc": "catalog:", + "eslint-plugin-react-hooks": "catalog:", + "eslint": "catalog:", + "jest-junit": "catalog:", + "typescript": "catalog:", + "eslint-import-resolver-node": "catalog:" } } diff --git a/rigs/heft-node-rig/package.json b/rigs/heft-node-rig/package.json index 31f1f4f8afb..e3d13ad3798 100644 --- a/rigs/heft-node-rig/package.json +++ b/rigs/heft-node-rig/package.json @@ -23,10 +23,10 @@ "@rushstack/heft-jest-plugin": "workspace:*", "@rushstack/heft-lint-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", - "@types/jest": "30.0.0", - "eslint": "~9.37.0", - "jest-environment-node": "~30.3.0", - "typescript": "~5.8.2" + "@types/jest": "catalog:", + "eslint": "catalog:", + "jest-environment-node": "catalog:", + "typescript": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*" diff --git a/rigs/heft-vscode-extension-rig/package.json b/rigs/heft-vscode-extension-rig/package.json index e94465fd478..5b219a808b9 100644 --- a/rigs/heft-vscode-extension-rig/package.json +++ b/rigs/heft-vscode-extension-rig/package.json @@ -21,10 +21,10 @@ "@rushstack/heft-node-rig": "workspace:*", "@rushstack/heft-vscode-extension-plugin": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", - "@types/jest": "30.0.0", - "eslint": "~9.37.0", - "jest-environment-node": "~30.3.0", - "typescript": "~5.8.2", + "@types/jest": "catalog:", + "eslint": "catalog:", + "jest-environment-node": "catalog:", + "typescript": "catalog:", "@rushstack/webpack-preserve-dynamic-require-plugin": "workspace:*" }, "devDependencies": { diff --git a/rigs/heft-web-rig/package.json b/rigs/heft-web-rig/package.json index 14ac9add418..6ce7e2161bc 100644 --- a/rigs/heft-web-rig/package.json +++ b/rigs/heft-web-rig/package.json @@ -26,26 +26,26 @@ "@rushstack/heft-sass-plugin": "workspace:*", "@rushstack/heft-typescript-plugin": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", - "@types/jest": "30.0.0", - "autoprefixer": "~10.4.2", - "css-loader": "~6.6.0", - "css-minimizer-webpack-plugin": "~3.4.1", - "eslint": "~9.37.0", - "html-webpack-plugin": "~5.5.0", - "jest-environment-jsdom": "~30.3.0", - "mini-css-extract-plugin": "~2.5.3", - "postcss-loader": "~6.2.1", - "postcss": "~8.5.10", - "sass-loader": "~12.4.0", - "sass": "~1.49.7", - "source-map-loader": "~3.0.1", - "style-loader": "~3.3.1", - "terser-webpack-plugin": "~5.3.1", - "typescript": "~5.8.2", - "url-loader": "~4.1.1", - "webpack-bundle-analyzer": "~4.5.0", - "webpack-merge": "~5.8.0", - "webpack": "~5.105.2" + "@types/jest": "catalog:", + "autoprefixer": "catalog:", + "css-loader": "catalog:", + "css-minimizer-webpack-plugin": "catalog:", + "eslint": "catalog:", + "html-webpack-plugin": "catalog:", + "jest-environment-jsdom": "catalog:", + "mini-css-extract-plugin": "catalog:", + "postcss-loader": "catalog:", + "postcss": "catalog:", + "sass-loader": "catalog:", + "sass": "catalog:", + "source-map-loader": "catalog:", + "style-loader": "catalog:", + "terser-webpack-plugin": "catalog:", + "typescript": "catalog:", + "url-loader": "catalog:", + "webpack-bundle-analyzer": "catalog:", + "webpack-merge": "catalog:", + "webpack": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*" diff --git a/rigs/local-node-rig/package.json b/rigs/local-node-rig/package.json index 656880daa90..1845595cc86 100644 --- a/rigs/local-node-rig/package.json +++ b/rigs/local-node-rig/package.json @@ -13,11 +13,11 @@ "@rushstack/eslint-patch": "workspace:*", "@rushstack/heft-node-rig": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/jest": "30.0.0", - "@types/node": "20.17.19", + "@types/jest": "catalog:", + "@types/node": "catalog:", "local-eslint-config": "workspace:*", - "eslint": "~9.37.0", - "jest-junit": "12.3.0", - "typescript": "~5.8.2" + "eslint": "catalog:", + "jest-junit": "catalog:", + "typescript": "catalog:" } } diff --git a/rigs/local-web-rig/package.json b/rigs/local-web-rig/package.json index cce2a6dc896..146c67517d7 100644 --- a/rigs/local-web-rig/package.json +++ b/rigs/local-web-rig/package.json @@ -13,11 +13,11 @@ "@rushstack/eslint-patch": "workspace:*", "@rushstack/heft-web-rig": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/jest": "30.0.0", - "@types/webpack-env": "1.18.8", + "@types/jest": "catalog:", + "@types/webpack-env": "catalog:", "local-eslint-config": "workspace:*", - "eslint": "~9.37.0", - "jest-junit": "12.3.0", - "typescript": "~5.8.2" + "eslint": "catalog:", + "jest-junit": "catalog:", + "typescript": "catalog:" } } diff --git a/rush-plugins/rush-amazon-s3-build-cache-plugin/package.json b/rush-plugins/rush-amazon-s3-build-cache-plugin/package.json index 50bf9a80104..d5d5113888d 100644 --- a/rush-plugins/rush-amazon-s3-build-cache-plugin/package.json +++ b/rush-plugins/rush-amazon-s3-build-cache-plugin/package.json @@ -52,12 +52,12 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-sdk": "workspace:*", "@rushstack/terminal": "workspace:*", - "https-proxy-agent": "~5.0.0" + "https-proxy-agent": "catalog:" }, "devDependencies": { "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/rush-plugins/rush-azure-storage-build-cache-plugin/package.json b/rush-plugins/rush-azure-storage-build-cache-plugin/package.json index bdc4ee8a2e9..cb1c74280c4 100644 --- a/rush-plugins/rush-azure-storage-build-cache-plugin/package.json +++ b/rush-plugins/rush-azure-storage-build-cache-plugin/package.json @@ -47,8 +47,8 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "@azure/identity": "~4.13.1", - "@azure/storage-blob": "~12.31.0", + "@azure/identity": "catalog:", + "@azure/storage-blob": "catalog:", "@rushstack/credential-cache": "workspace:*", "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-sdk": "workspace:*", @@ -57,7 +57,7 @@ "devDependencies": { "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/rush-plugins/rush-bridge-cache-plugin/package.json b/rush-plugins/rush-bridge-cache-plugin/package.json index c9f1703dce1..7faa42fe5d1 100644 --- a/rush-plugins/rush-bridge-cache-plugin/package.json +++ b/rush-plugins/rush-bridge-cache-plugin/package.json @@ -54,7 +54,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/rush-plugins/rush-buildxl-graph-plugin/package.json b/rush-plugins/rush-buildxl-graph-plugin/package.json index 2ba23019ec9..f981cac9465 100644 --- a/rush-plugins/rush-buildxl-graph-plugin/package.json +++ b/rush-plugins/rush-buildxl-graph-plugin/package.json @@ -55,7 +55,7 @@ "devDependencies": { "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/rush-plugins/rush-http-build-cache-plugin/package.json b/rush-plugins/rush-http-build-cache-plugin/package.json index ae1b4f08024..b02d6b11ce0 100644 --- a/rush-plugins/rush-http-build-cache-plugin/package.json +++ b/rush-plugins/rush-http-build-cache-plugin/package.json @@ -51,13 +51,13 @@ "@rushstack/credential-cache": "workspace:*", "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-sdk": "workspace:*", - "https-proxy-agent": "~5.0.0" + "https-proxy-agent": "catalog:" }, "devDependencies": { "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/rush-plugins/rush-litewatch-plugin/package.json b/rush-plugins/rush-litewatch-plugin/package.json index ede71c66b88..21dc06429ed 100644 --- a/rush-plugins/rush-litewatch-plugin/package.json +++ b/rush-plugins/rush-litewatch-plugin/package.json @@ -21,7 +21,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "main": "./lib-commonjs/index.js", diff --git a/rush-plugins/rush-mcp-docs-plugin/package.json b/rush-plugins/rush-mcp-docs-plugin/package.json index 93494ad7c56..8afb81cf025 100644 --- a/rush-plugins/rush-mcp-docs-plugin/package.json +++ b/rush-plugins/rush-mcp-docs-plugin/package.json @@ -49,7 +49,7 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", "local-eslint-config": "workspace:*" }, diff --git a/rush-plugins/rush-published-versions-json-plugin/package.json b/rush-plugins/rush-published-versions-json-plugin/package.json index f562309ca73..eab95afb28a 100644 --- a/rush-plugins/rush-published-versions-json-plugin/package.json +++ b/rush-plugins/rush-published-versions-json-plugin/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "main": "./lib-commonjs/index.js", diff --git a/rush-plugins/rush-redis-cobuild-plugin/package.json b/rush-plugins/rush-redis-cobuild-plugin/package.json index 1c60d0e6172..cfdacbee8ff 100644 --- a/rush-plugins/rush-redis-cobuild-plugin/package.json +++ b/rush-plugins/rush-redis-cobuild-plugin/package.json @@ -48,7 +48,7 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "@redis/client": "~5.8.2", + "@redis/client": "catalog:", "@rushstack/node-core-library": "workspace:*", "@rushstack/rush-sdk": "workspace:*" }, @@ -56,7 +56,7 @@ "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/terminal": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/rush-plugins/rush-resolver-cache-plugin/package.json b/rush-plugins/rush-resolver-cache-plugin/package.json index c48108a4d2b..205a85dfd08 100644 --- a/rush-plugins/rush-resolver-cache-plugin/package.json +++ b/rush-plugins/rush-resolver-cache-plugin/package.json @@ -29,8 +29,8 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/webpack-workspace-resolve-plugin": "workspace:*", - "@types/webpack-env": "1.18.8", - "eslint": "~9.37.0", + "@types/webpack-env": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "exports": { diff --git a/rush-plugins/rush-serve-plugin/package.json b/rush-plugins/rush-serve-plugin/package.json index c2010bf2b93..2464b139ba3 100644 --- a/rush-plugins/rush-serve-plugin/package.json +++ b/rush-plugins/rush-serve-plugin/package.json @@ -28,24 +28,24 @@ "@rushstack/rush-sdk": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "compression": "~1.7.4", - "cors": "~2.8.5", - "express": "4.21.1", - "http2-express-bridge": "~1.0.7", - "ws": "~8.21.0" + "compression": "catalog:", + "cors": "catalog:", + "express": "catalog:", + "http2-express-bridge": "catalog:", + "ws": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/heft-webpack5-plugin": "workspace:*", "@rushstack/rush-serve-dashboard": "workspace:*", - "html-webpack-plugin": "~5.5.0", - "eslint": "~9.37.0", + "html-webpack-plugin": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "@types/compression": "~1.7.2", - "@types/cors": "~2.8.12", - "@types/express": "4.17.21", - "@types/ws": "8.18.1", - "webpack": "~5.105.2" + "@types/compression": "catalog:", + "@types/cors": "catalog:", + "@types/express": "catalog:", + "@types/ws": "catalog:", + "webpack": "catalog:" }, "exports": { ".": { diff --git a/rush.json b/rush.json index a034c5a7bcd..22946c899ed 100644 --- a/rush.json +++ b/rush.json @@ -26,7 +26,7 @@ * Specify one of: "pnpmVersion", "npmVersion", or "yarnVersion". See the Rush documentation * for details about these alternatives. */ - "pnpmVersion": "10.27.0", + "pnpmVersion": "12.13.0", // "npmVersion": "6.14.15", // "yarnVersion": "1.9.4", diff --git a/vscode-extensions/debug-certificate-manager-vscode-extension/package.json b/vscode-extensions/debug-certificate-manager-vscode-extension/package.json index aa5924cbaaa..a4c0b43e2ce 100644 --- a/vscode-extensions/debug-certificate-manager-vscode-extension/package.json +++ b/vscode-extensions/debug-certificate-manager-vscode-extension/package.json @@ -119,14 +119,14 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/vscode-shared": "workspace:*", - "tslib": "~2.8.1" + "tslib": "catalog:" }, "devDependencies": { "@rushstack/heft-vscode-extension-rig": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "@types/vscode": "1.103.0", - "@types/webpack-env": "1.18.8" + "@types/webpack-env": "catalog:" }, "sideEffects": false } diff --git a/vscode-extensions/playwright-local-browser-server-vscode-extension/package.json b/vscode-extensions/playwright-local-browser-server-vscode-extension/package.json index 2c1432458bf..184b792140d 100644 --- a/vscode-extensions/playwright-local-browser-server-vscode-extension/package.json +++ b/vscode-extensions/playwright-local-browser-server-vscode-extension/package.json @@ -99,16 +99,16 @@ "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", "@rushstack/vscode-shared": "workspace:*", - "playwright-core": "~1.62.1", - "tslib": "~2.8.1" + "playwright-core": "catalog:", + "tslib": "catalog:" }, "devDependencies": { "@rushstack/heft-vscode-extension-rig": "workspace:*", "@rushstack/heft-node-rig": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "@types/vscode": "1.103.0", - "@types/webpack-env": "1.18.8" + "@types/webpack-env": "catalog:" }, "sideEffects": false } diff --git a/vscode-extensions/rush-vscode-command-webview/package.json b/vscode-extensions/rush-vscode-command-webview/package.json index df97c90bcbc..37f235ebfb9 100644 --- a/vscode-extensions/rush-vscode-command-webview/package.json +++ b/vscode-extensions/rush-vscode-command-webview/package.json @@ -19,28 +19,28 @@ "start": "heft start" }, "dependencies": { - "@fluentui/react-components": "~9.72.9", - "@fluentui/react": "~8.125.3", - "@reduxjs/toolkit": "~2.11.2", - "react-dom": "~19.2.3", - "react-hook-form": "~7.69.0", - "react-redux": "~9.2.0", - "react": "~19.2.3", - "redux": "~5.0.1", - "tslib": "~2.8.1" + "@fluentui/react-components": "catalog:", + "@fluentui/react": "catalog:", + "@reduxjs/toolkit": "catalog:", + "react-dom": "catalog:", + "react-hook-form": "catalog:", + "react-redux": "catalog:", + "react": "catalog:", + "redux": "catalog:", + "tslib": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/ts-command-line": "workspace:*", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@types/react-redux": "~7.1.22", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@types/react-redux": "catalog:", "@types/vscode": "1.103.0", - "eslint": "~9.37.0", - "html-webpack-plugin": "~5.5.0", + "eslint": "catalog:", + "html-webpack-plugin": "catalog:", "local-web-rig": "workspace:*", - "webpack": "~5.105.2", - "webpack-bundle-analyzer": "~4.5.0" + "webpack": "catalog:", + "webpack-bundle-analyzer": "catalog:" }, "sideEffects": false } diff --git a/vscode-extensions/rush-vscode-extension/package.json b/vscode-extensions/rush-vscode-extension/package.json index cc524ace78e..963623969c5 100644 --- a/vscode-extensions/rush-vscode-extension/package.json +++ b/vscode-extensions/rush-vscode-extension/package.json @@ -302,15 +302,15 @@ "devDependencies": { "@microsoft/rush-lib": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/glob": "7.1.1", - "@types/mocha": "10.0.6", + "@types/glob": "catalog:", + "@types/mocha": "catalog:", "@types/vscode": "1.103.0", - "@types/webpack-env": "1.18.8", - "@vscode/test-electron": "^1.6.2", - "eslint": "~9.37.0", - "glob": "~7.0.5", + "@types/webpack-env": "catalog:", + "@vscode/test-electron": "catalog:", + "eslint": "catalog:", + "glob": "catalog:", "@rushstack/heft-vscode-extension-rig": "workspace:*", - "mocha": "^10.1.0" + "mocha": "catalog:" }, "engines": { "vscode": "^1.103.0" diff --git a/vscode-extensions/vscode-shared/package.json b/vscode-extensions/vscode-shared/package.json index afc7acdb9fd..4700125aa02 100644 --- a/vscode-extensions/vscode-shared/package.json +++ b/vscode-extensions/vscode-shared/package.json @@ -22,7 +22,7 @@ "devDependencies": { "@rushstack/heft-node-rig": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", + "@types/node": "catalog:", "@types/vscode": "1.103.0" } } diff --git a/webpack/hashed-folder-copy-plugin/package.json b/webpack/hashed-folder-copy-plugin/package.json index 105c6e0f922..7ce6ff6da39 100644 --- a/webpack/hashed-folder-copy-plugin/package.json +++ b/webpack/hashed-folder-copy-plugin/package.json @@ -57,15 +57,15 @@ "dependencies": { "@rushstack/node-core-library": "workspace:*", "@rushstack/webpack-plugin-utilities": "workspace:*", - "fast-glob": "~3.3.1" + "fast-glob": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/estree": "1.0.8", - "eslint": "~9.37.0", + "@types/estree": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "memfs": "4.12.0", - "webpack": "~5.105.2" + "memfs": "catalog:", + "webpack": "catalog:" }, "sideEffects": false } diff --git a/webpack/loader-load-themed-styles/package.json b/webpack/loader-load-themed-styles/package.json index ce6139d1b65..5c84961116f 100644 --- a/webpack/loader-load-themed-styles/package.json +++ b/webpack/loader-load-themed-styles/package.json @@ -52,14 +52,14 @@ "@microsoft/load-themed-styles": "^2.2.31" }, "dependencies": { - "loader-utils": "1.4.2" + "loader-utils": "catalog:" }, "devDependencies": { "@microsoft/load-themed-styles": "workspace:*", "@rushstack/heft": "workspace:*", - "@types/loader-utils": "1.1.3", - "@types/webpack": "4.41.32", - "eslint": "~9.37.0", + "@types/loader-utils": "catalog:", + "@types/webpack": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/webpack/loader-raw-script/package.json b/webpack/loader-raw-script/package.json index 1ae4c13b524..c5e8ac2f61b 100644 --- a/webpack/loader-raw-script/package.json +++ b/webpack/loader-raw-script/package.json @@ -43,11 +43,11 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "loader-utils": "1.4.2" + "loader-utils": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*" }, "sideEffects": false diff --git a/webpack/preserve-dynamic-require-plugin/package.json b/webpack/preserve-dynamic-require-plugin/package.json index 652f6796667..861ea5307d3 100644 --- a/webpack/preserve-dynamic-require-plugin/package.json +++ b/webpack/preserve-dynamic-require-plugin/package.json @@ -44,9 +44,9 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "webpack": "~5.105.2" + "webpack": "catalog:" }, "sideEffects": false } diff --git a/webpack/set-webpack-public-path-plugin/package.json b/webpack/set-webpack-public-path-plugin/package.json index 903e67d2afb..6815bd42075 100644 --- a/webpack/set-webpack-public-path-plugin/package.json +++ b/webpack/set-webpack-public-path-plugin/package.json @@ -56,11 +56,11 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "memfs": "4.12.0", - "webpack": "~5.105.2" + "memfs": "catalog:", + "webpack": "catalog:" }, "sideEffects": false } diff --git a/webpack/webpack-deep-imports-plugin/package.json b/webpack/webpack-deep-imports-plugin/package.json index 0e56aafcd7a..2e3bc3a5703 100644 --- a/webpack/webpack-deep-imports-plugin/package.json +++ b/webpack/webpack-deep-imports-plugin/package.json @@ -45,8 +45,8 @@ "devDependencies": { "local-node-rig": "workspace:*", "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", - "webpack": "~5.105.2" + "eslint": "catalog:", + "webpack": "catalog:" }, "sideEffects": false, "dependencies": { diff --git a/webpack/webpack-embedded-dependencies-plugin/package.json b/webpack/webpack-embedded-dependencies-plugin/package.json index 1f21ba3ee7f..aeb05ddeb1d 100644 --- a/webpack/webpack-embedded-dependencies-plugin/package.json +++ b/webpack/webpack-embedded-dependencies-plugin/package.json @@ -57,10 +57,10 @@ "devDependencies": { "@rushstack/webpack-plugin-utilities": "workspace:*", "@rushstack/heft": "workspace:*", - "eslint": "~9.37.0", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "webpack": "~5.105.2", - "memfs": "4.12.0" + "webpack": "catalog:", + "memfs": "catalog:" }, "sideEffects": false } diff --git a/webpack/webpack-plugin-utilities/package.json b/webpack/webpack-plugin-utilities/package.json index eaeef3046fc..6e09eef2957 100644 --- a/webpack/webpack-plugin-utilities/package.json +++ b/webpack/webpack-plugin-utilities/package.json @@ -44,9 +44,9 @@ "_phase:test": "heft run --only test -- --clean" }, "dependencies": { - "@types/estree": "1.0.8", - "memfs": "4.12.0", - "webpack-merge": "~5.8.0" + "@types/estree": "catalog:", + "memfs": "catalog:", + "webpack-merge": "catalog:" }, "peerDependencies": { "@types/webpack": "^4.39.8", @@ -62,10 +62,10 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/tapable": "1.0.6", - "eslint": "~9.37.0", + "@types/tapable": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "webpack": "~5.105.2" + "webpack": "catalog:" }, "sideEffects": false } diff --git a/webpack/webpack-workspace-resolve-plugin/package.json b/webpack/webpack-workspace-resolve-plugin/package.json index d81ec7cc41c..951507ccc87 100644 --- a/webpack/webpack-workspace-resolve-plugin/package.json +++ b/webpack/webpack-workspace-resolve-plugin/package.json @@ -51,11 +51,11 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "memfs": "4.12.0", - "webpack": "~5.105.2" + "memfs": "catalog:", + "webpack": "catalog:" }, "sideEffects": false, "peerDependenciesMeta": { diff --git a/webpack/webpack4-localization-plugin/package.json b/webpack/webpack4-localization-plugin/package.json index 96c18b76aa9..ac69139fe9b 100644 --- a/webpack/webpack4-localization-plugin/package.json +++ b/webpack/webpack4-localization-plugin/package.json @@ -62,17 +62,17 @@ "@rushstack/localization-utilities": "workspace:*", "@rushstack/node-core-library": "workspace:*", "@rushstack/terminal": "workspace:*", - "@types/tapable": "1.0.6", - "loader-utils": "1.4.2", - "minimatch": "10.2.3" + "@types/tapable": "catalog:", + "loader-utils": "catalog:", + "minimatch": "catalog:" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/set-webpack-public-path-plugin": "^4.1.16", - "@types/loader-utils": "1.1.3", - "@types/node": "20.17.19", - "@types/webpack": "4.41.32", - "eslint": "~9.37.0", + "@types/loader-utils": "catalog:", + "@types/node": "catalog:", + "@types/webpack": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", "webpack": "~4.47.0" }, diff --git a/webpack/webpack4-module-minifier-plugin/package.json b/webpack/webpack4-module-minifier-plugin/package.json index f58dd370d5c..d58402e32b7 100644 --- a/webpack/webpack4-module-minifier-plugin/package.json +++ b/webpack/webpack4-module-minifier-plugin/package.json @@ -63,17 +63,17 @@ "dependencies": { "@rushstack/module-minifier": "workspace:*", "@rushstack/worker-pool": "workspace:*", - "@types/tapable": "1.0.6", + "@types/tapable": "catalog:", "tapable": "1.1.3" }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", - "@types/webpack-sources": "1.4.2", - "@types/webpack": "4.41.32", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "@types/webpack-sources": "catalog:", + "@types/webpack": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "webpack-sources": "~1.4.3", + "webpack-sources": "catalog:", "webpack": "~4.47.0" }, "sideEffects": [ diff --git a/webpack/webpack5-load-themed-styles-loader/package.json b/webpack/webpack5-load-themed-styles-loader/package.json index dcf403bb9e2..ee4f5dcb9f4 100644 --- a/webpack/webpack5-load-themed-styles-loader/package.json +++ b/webpack/webpack5-load-themed-styles-loader/package.json @@ -55,11 +55,11 @@ "@microsoft/load-themed-styles": "workspace:*", "@rushstack/heft": "workspace:*", "@rushstack/node-core-library": "workspace:*", - "css-loader": "~6.6.0", - "eslint": "~9.37.0", + "css-loader": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "memfs": "4.12.0", - "webpack": "~5.105.2" + "memfs": "catalog:", + "webpack": "catalog:" }, "sideEffects": false } diff --git a/webpack/webpack5-load-themed-styles-loader/src/test/LoadThemedStylesLoader.test.ts b/webpack/webpack5-load-themed-styles-loader/src/test/LoadThemedStylesLoader.test.ts index 06b09544e36..506e23f7bce 100644 --- a/webpack/webpack5-load-themed-styles-loader/src/test/LoadThemedStylesLoader.test.ts +++ b/webpack/webpack5-load-themed-styles-loader/src/test/LoadThemedStylesLoader.test.ts @@ -8,6 +8,18 @@ import getCompiler from './testData/getCompiler'; const MATCH_GENERATED_LOADER_STRING_REGEXP: RegExp = /var\sloader\s\=\srequire\(["'](.+?)["']\)/; const MATCH_LOADER_DOT_LOADSTYLES_FUNCTION_ASYNC_VALUE_REGEXP: RegExp = /loader\.loadStyles\(.+?,\s(.+?)\)/; +const MATCH_PNPM_VIRTUAL_STORE_FOLDER_REGEXP: RegExp = /\/node_modules\/\.pnpm\/[^/]+\/node_modules\//g; + +// pnpm encodes resolved peer dependencies in virtual store folder names and shortens long names +// differently on each platform, so remove the folder name from snapshotted request paths. +function normalizePnpmVirtualStorePaths(content: string | Buffer | undefined): string | undefined { + return content + ?.toString() + .replace( + MATCH_PNPM_VIRTUAL_STORE_FOLDER_REGEXP, + '/node_modules/.pnpm//node_modules/' + ); +} // During a parallel build, getCompiler() can sometimes exceed Jest's default timeout of 5 seconds jest.setTimeout(10 * 1000); // 10 seconds @@ -102,7 +114,7 @@ describe('webpack5-load-themed-style-loader', () => { } const content = stats.toJson({ source: true }).modules?.[0].source; - expect(content).toMatchSnapshot('LoaderContent ESModule'); + expect(normalizePnpmVirtualStorePaths(content)).toMatchSnapshot('LoaderContent ESModule'); }); it('generates desired loader output snapshot', async () => { @@ -113,6 +125,6 @@ describe('webpack5-load-themed-style-loader', () => { } const content = stats.toJson({ source: true }).modules?.[0].source; - expect(content).toMatchSnapshot('LoaderContent'); + expect(normalizePnpmVirtualStorePaths(content)).toMatchSnapshot('LoaderContent'); }); }); diff --git a/webpack/webpack5-load-themed-styles-loader/src/test/__snapshots__/LoadThemedStylesLoader.test.ts.snap b/webpack/webpack5-load-themed-styles-loader/src/test/__snapshots__/LoadThemedStylesLoader.test.ts.snap index 2dea7287bda..bdf52bf1160 100644 --- a/webpack/webpack5-load-themed-styles-loader/src/test/__snapshots__/LoadThemedStylesLoader.test.ts.snap +++ b/webpack/webpack5-load-themed-styles-loader/src/test/__snapshots__/LoadThemedStylesLoader.test.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`webpack5-load-themed-style-loader generates desired loader output snapshot: LoaderContent 1`] = ` -"var content = require(\\"!!../../../../../common/temp/default/node_modules/.pnpm/css-loader@6.6.0_webpack@5.105.4/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./MockStyle1.css\\"); +"var content = require(\\"!!../../../../../common/temp/default/node_modules/.pnpm//node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./MockStyle1.css\\"); var loader = require(\\"../../../lib-commonjs/test/testData/LoadThemedStylesMock\\"); if(typeof content === \\"string\\") content = [[module.id, content]]; @@ -13,7 +13,7 @@ if(content.locals) module.exports = content.locals;" `; exports[`webpack5-load-themed-style-loader generates desired output for esModule option set to "true" as a snapshot: LoaderContent ESModule 1`] = ` -"import content from \\"!!../../../../../common/temp/default/node_modules/.pnpm/css-loader@6.6.0_webpack@5.105.4/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./MockStyle1.css\\"; +"import content from \\"!!../../../../../common/temp/default/node_modules/.pnpm//node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./MockStyle1.css\\"; import { loadStyles } from \\"../../../lib-commonjs/test/testData/LoadThemedStylesMock\\"; if(typeof content === \\"string\\") content = [[module.id, content]]; diff --git a/webpack/webpack5-localization-plugin/package.json b/webpack/webpack5-localization-plugin/package.json index d68e09bec4e..3d4e6c04057 100644 --- a/webpack/webpack5-localization-plugin/package.json +++ b/webpack/webpack5-localization-plugin/package.json @@ -53,11 +53,11 @@ }, "devDependencies": { "@rushstack/heft": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "memfs": "4.12.0", - "webpack": "~5.105.2" + "memfs": "catalog:", + "webpack": "catalog:" }, "peerDependenciesMeta": { "@types/node": { diff --git a/webpack/webpack5-module-minifier-plugin/package.json b/webpack/webpack5-module-minifier-plugin/package.json index 841e838e638..ef9d6a60e1d 100644 --- a/webpack/webpack5-module-minifier-plugin/package.json +++ b/webpack/webpack5-module-minifier-plugin/package.json @@ -49,18 +49,18 @@ }, "dependencies": { "@rushstack/worker-pool": "workspace:*", - "@types/tapable": "1.0.6", - "@types/estree": "1.0.8", + "@types/tapable": "catalog:", + "@types/estree": "catalog:", "tapable": "2.2.1" }, "devDependencies": { "@rushstack/heft": "workspace:*", "@rushstack/module-minifier": "workspace:*", - "@types/node": "20.17.19", - "eslint": "~9.37.0", + "@types/node": "catalog:", + "eslint": "catalog:", "local-node-rig": "workspace:*", - "memfs": "4.12.0", - "webpack": "~5.105.2" + "memfs": "catalog:", + "webpack": "catalog:" }, "sideEffects": false, "peerDependenciesMeta": {