Merge pull request #26844 from aramissennyeydd/react-types-peer-dependencies

move react types to a dev dependency and peer dependency
This commit is contained in:
Fredrik Adelöw
2024-10-01 11:02:49 +02:00
committed by GitHub
58 changed files with 1295 additions and 145 deletions
+49
View File
@@ -0,0 +1,49 @@
---
'@backstage/plugin-signals-react': patch
'@backstage/plugin-signals': patch
'@backstage/plugin-api-docs-module-protoc-gen-doc': patch
'@backstage/plugin-techdocs-module-addons-contrib': patch
'@backstage/plugin-catalog-unprocessed-entities': patch
'@backstage/plugin-scaffolder-node-test-utils': patch
'@backstage/plugin-techdocs-addons-test-utils': patch
'@backstage/frontend-plugin-api': patch
'@backstage/frontend-test-utils': patch
'@backstage/integration-react': patch
'@backstage/plugin-kubernetes-cluster': patch
'@backstage/frontend-app-api': patch
'@backstage/core-compat-api': patch
'@backstage/core-components': patch
'@backstage/core-plugin-api': patch
'@backstage/plugin-kubernetes-react': patch
'@backstage/plugin-permission-react': patch
'@backstage/plugin-scaffolder-react': patch
'@backstage/version-bridge': patch
'@backstage/plugin-app-visualizer': patch
'@backstage/plugin-catalog-import': patch
'@backstage/plugin-techdocs-react': patch
'@backstage/app-defaults': patch
'@backstage/core-app-api': patch
'@backstage/plugin-catalog-graph': patch
'@backstage/plugin-catalog-react': patch
'@backstage/plugin-config-schema': patch
'@backstage/plugin-notifications': patch
'@backstage/plugin-user-settings': patch
'@backstage/plugin-search-react': patch
'@backstage/test-utils': patch
'@backstage/dev-utils': patch
'@backstage/plugin-auth-react': patch
'@backstage/plugin-home-react': patch
'@backstage/plugin-kubernetes': patch
'@backstage/plugin-scaffolder': patch
'@backstage/plugin-org-react': patch
'@backstage/plugin-api-docs': patch
'@backstage/plugin-devtools': patch
'@backstage/plugin-techdocs': patch
'@backstage/plugin-catalog': patch
'@backstage/theme': patch
'@backstage/plugin-search': patch
'@backstage/plugin-home': patch
'@backstage/plugin-org': patch
---
Move `@types/react` to a peer dependency.
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/repo-tools': minor
---
Adds a new command `backstage-repo-tools peer-deps` for validating your usage of peer dependencies in your plugins. It currently supports react related peer dependencies. It also has a `--fix` mode for quickly fixing any issues that it finds.
+3
View File
@@ -90,6 +90,9 @@ jobs:
- name: verify local dependency ranges
run: node scripts/verify-local-dependencies.js
- name: verify peer dependency ranges
run: yarn lint:peer-deps
- name: check for missing repo fixes
run: yarn fix --check
+1
View File
@@ -31,6 +31,7 @@
"lint": "backstage-cli repo lint --since origin/master",
"lint:all": "backstage-cli repo lint",
"lint:docs": "node ./scripts/check-docs-quality",
"lint:peer-deps": "backstage-repo-tools peer-deps",
"lint:type-deps": "backstage-repo-tools type-deps",
"new": "backstage-cli new --scope backstage --baseVersion 0.0.0 --no-private",
"prepare": "husky",
+10 -1
View File
@@ -49,11 +49,20 @@
"@backstage/test-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@types/react": "^16.13.1 || ^17.0.0"
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -1
View File
@@ -47,12 +47,22 @@
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@types/react": "^18.0.0",
"cross-fetch": "^4.0.0",
"msw": "^1.0.0"
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+10 -1
View File
@@ -51,7 +51,6 @@
"@backstage/types": "workspace:^",
"@backstage/version-bridge": "workspace:^",
"@types/prop-types": "^15.7.3",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"history": "^5.0.0",
"i18next": "^22.4.15",
"lodash": "^4.17.21",
@@ -68,17 +67,27 @@
"@testing-library/react": "^16.0.0",
"@testing-library/react-hooks": "^8.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"@types/zen-observable": "^0.8.0",
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-beta": "npm:react-router@6.0.0-beta.0",
"react-router-dom": "^6.3.0",
"react-router-dom-beta": "npm:react-router-dom@6.0.0-beta.0",
"react-router-dom-stable": "npm:react-router-dom@^6.3.0",
"react-router-stable": "npm:react-router@^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+11 -1
View File
@@ -34,7 +34,6 @@
"@backstage/core-plugin-api": "workspace:^",
"@backstage/frontend-plugin-api": "workspace:^",
"@backstage/version-bridge": "workspace:^",
"@types/react": "^16.13.1 || ^17.0.0",
"lodash": "^4.17.21"
},
"devDependencies": {
@@ -50,10 +49,21 @@
"@oriflame/backstage-plugin-score-card": "^0.8.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0",
"zod": "^3.22.4"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -65,7 +65,6 @@
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@react-hookz/web": "^24.0.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"@types/react-sparklines": "^1.7.0",
"ansi-regex": "^6.0.1",
"classnames": "^2.2.6",
@@ -108,6 +107,7 @@
"@types/d3-zoom": "^3.0.1",
"@types/dagre": "^0.7.44",
"@types/google-protobuf": "^3.7.2",
"@types/react": "^18.0.0",
"@types/react-helmet": "^6.1.0",
"@types/react-syntax-highlighter": "^15.0.0",
"@types/react-virtualized-auto-sizer": "^1.0.1",
@@ -115,12 +115,21 @@
"@types/zen-observable": "^0.8.0",
"cross-fetch": "^4.0.0",
"history": "^5.0.0",
"msw": "^1.0.0"
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+11 -2
View File
@@ -53,7 +53,6 @@
"@backstage/errors": "workspace:^",
"@backstage/types": "workspace:^",
"@backstage/version-bridge": "workspace:^",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"history": "^5.0.0"
},
"devDependencies": {
@@ -63,11 +62,21 @@
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0"
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+10 -1
View File
@@ -46,7 +46,6 @@
"@backstage/theme": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-use": "^17.2.4"
},
"devDependencies": {
@@ -56,11 +55,21 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0",
"zen-observable": "^0.10.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+12 -2
View File
@@ -40,7 +40,6 @@
"@backstage/frontend-plugin-api": "workspace:^",
"@backstage/types": "workspace:^",
"@backstage/version-bridge": "workspace:^",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"lodash": "^4.17.21",
"zod": "^3.22.4"
},
@@ -49,11 +48,22 @@
"@backstage/plugin-app": "workspace:^",
"@backstage/test-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+15 -4
View File
@@ -36,17 +36,28 @@
"@backstage/frontend-app-api": "workspace:^",
"@backstage/frontend-plugin-api": "workspace:^",
"@backstage/plugin-app": "workspace:^",
"@react-hookz/web": "^24.0.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0"
"@react-hookz/web": "^24.0.0"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@backstage/core-plugin-api": "workspace:^",
"@backstage/test-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0 || ^18.0.0"
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+12 -2
View File
@@ -36,7 +36,6 @@
"@backstage/types": "workspace:^",
"@backstage/version-bridge": "workspace:^",
"@material-ui/core": "^4.12.4",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"lodash": "^4.17.21",
"zod": "^3.22.4",
"zod-to-json-schema": "^3.21.4"
@@ -48,10 +47,21 @@
"@backstage/test-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"history": "^5.3.0"
"@types/react": "^18.0.0",
"history": "^5.3.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -1
View File
@@ -43,11 +43,21 @@
"devDependencies": {
"@backstage/cli": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@types/react": "*"
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@testing-library/react": "^16.0.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+12 -3
View File
@@ -37,8 +37,7 @@
"@backstage/core-plugin-api": "workspace:^",
"@backstage/integration": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@types/react": "^16.13.1 || ^17.0.0"
"@material-ui/icons": "^4.9.1"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
@@ -47,11 +46,21 @@
"@backstage/test-utils": "workspace:^",
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"msw": "^1.0.0"
"@types/react": "^18.0.0",
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11
View File
@@ -14,6 +14,7 @@ Options:
Commands:
api-reports [options] [paths...]
type-deps
peer-deps [options]
generate-catalog-info [options]
knip-reports [options] [paths...]
package [command]
@@ -156,6 +157,16 @@ Options:
-h, --help
```
### `backstage-repo-tools peer-deps`
```
Usage: backstage-repo-tools peer-deps [options]
Options:
--fix
-h, --help
```
### `backstage-repo-tools repo`
```
@@ -224,6 +224,14 @@ export function registerCommands(program: Command) {
.description('Find inconsistencies in types of all packages and plugins')
.action(lazy(() => import('./type-deps/type-deps').then(m => m.default)));
program
.command('peer-deps')
.description(
'Ensure your packages are using the correct peer dependency format.',
)
.option('--fix', 'Fix the issues found')
.action(lazy(() => import('./peer-deps/peer-deps').then(m => m.default)));
program
.command('generate-catalog-info')
.option(
@@ -0,0 +1,238 @@
/*
* Copyright 2024 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { resolve as resolvePath } from 'path';
import { getPackages, Package } from '@manypkg/get-packages';
import { writeFileSync } from 'fs';
type ExtendedPackageJSON = Package['packageJson'] & {
peerDependenciesMeta?: Record<string, { optional?: boolean }>;
backstage?: {
role: string;
};
};
const desiredLocalVersionsOfDependencies = {
'@types/react': '^18.0.0',
react: '^18.0.2',
'react-dom': '^18.0.2',
'react-router-dom': '^6.3.0',
};
const peerDependencies = {
'@types/react': '^16.13.1 || ^17.0.0 || ^18.0.0',
react: '^16.13.1 || ^17.0.0 || ^18.0.0',
'react-dom': '^16.13.1 || ^17.0.0 || ^18.0.0',
'react-router-dom': '6.0.0-beta.0 || ^6.3.0',
};
const groupsOfPeerDependencies = [['@types/react', 'react', 'react-dom']];
const optionalPeerDependencies = new Set(['@types/react']);
const isOptional = (dep: string) => {
return optionalPeerDependencies.has(dep);
};
const isMarkedAsOptional = (dep: string, packageJson: ExtendedPackageJSON) => {
return packageJson.peerDependenciesMeta?.[dep]?.optional;
};
const isDevDependency = (dep: string, packageJson: ExtendedPackageJSON) => {
return !!packageJson.devDependencies?.[dep];
};
const isProdDependency = (dep: string, packageJson: ExtendedPackageJSON) => {
return !!packageJson.dependencies?.[dep];
};
const isPeerDependency = (dep: string, packageJson: ExtendedPackageJSON) => {
return !!packageJson.peerDependencies?.[dep];
};
const isStandaloneApplication = (packageJson: ExtendedPackageJSON) => {
return ['cli', 'frontend', 'backend'].includes(
packageJson.backstage?.role || '',
);
};
const matchesDependency = (dep: string, packageJson: ExtendedPackageJSON) => {
return (
packageJson.devDependencies &&
packageJson.devDependencies[dep] ===
desiredLocalVersionsOfDependencies[
dep as keyof typeof desiredLocalVersionsOfDependencies
]
);
};
const matchesPeerDependency = (
dep: string,
packageJson: ExtendedPackageJSON,
) => {
return (
packageJson.peerDependencies &&
packageJson.peerDependencies[dep] ===
peerDependencies[dep as keyof typeof peerDependencies]
);
};
export default async ({ fix }: { fix: boolean }) => {
let failed = false;
const attemptToApplyFix = (fn: () => void) => {
if (fix) {
fn();
} else {
failed = true;
}
};
const { packages } = await getPackages(resolvePath('.'));
const packagesWithRelevantDependencies = [];
for (const pkg of packages) {
if (isStandaloneApplication(pkg.packageJson as ExtendedPackageJSON)) {
// Standalone applications are not expected to have peer dependencies.
continue;
}
const dependencies = {
...pkg.packageJson.dependencies,
...pkg.packageJson.devDependencies,
...pkg.packageJson.peerDependencies,
};
for (const dep in peerDependencies) {
// Check against all packages that use dependencies that are in the peerDependencies list.
if (dependencies?.[dep]) {
packagesWithRelevantDependencies.push(pkg);
break;
}
}
}
for (const pkg of packagesWithRelevantDependencies) {
const packageJson = pkg.packageJson as ExtendedPackageJSON;
for (const dep of Object.keys(peerDependencies)) {
// Validate that the peer dependencies are present.
if (isPeerDependency(dep, packageJson)) {
if (isOptional(dep) && !isMarkedAsOptional(dep, packageJson)) {
console.error(
`Optional peer dependency ${dep} in ${pkg.packageJson.name} is not marked as optional`,
);
attemptToApplyFix(() => {
packageJson.peerDependenciesMeta =
packageJson.peerDependenciesMeta || {};
packageJson.peerDependenciesMeta[dep] = { optional: true };
});
} else if (!isOptional(dep) && isMarkedAsOptional(dep, packageJson)) {
console.error(
`Peer dependency ${dep} in ${pkg.packageJson.name} is marked as optional but should not be`,
);
attemptToApplyFix(() => {
packageJson.peerDependenciesMeta =
packageJson.peerDependenciesMeta || {};
delete packageJson.peerDependenciesMeta[dep];
});
}
if (!isDevDependency(dep, packageJson)) {
console.error(
`Peer dependency ${dep} in ${pkg.packageJson.name} is not listed as a devDependency`,
);
attemptToApplyFix(() => {
delete packageJson.dependencies?.[dep];
packageJson.devDependencies = packageJson.devDependencies || {};
packageJson.devDependencies[dep] =
desiredLocalVersionsOfDependencies[
dep as keyof typeof desiredLocalVersionsOfDependencies
];
});
} else if (isProdDependency(dep, packageJson)) {
console.error(
`Peer dependency ${dep} in ${pkg.packageJson.name} is listed as a dependency`,
);
attemptToApplyFix(() => {
delete packageJson.dependencies?.[dep];
});
}
const groups = groupsOfPeerDependencies.filter(group =>
group.includes(dep),
);
if (groups.length) {
for (const group of groups) {
for (const groupDep of group) {
if (!isPeerDependency(groupDep, packageJson)) {
console.error(
`Peer dependency ${groupDep} in ${pkg.packageJson.name} is missing`,
);
attemptToApplyFix(() => {
packageJson.peerDependencies =
packageJson.peerDependencies || {};
packageJson.peerDependencies[groupDep] =
peerDependencies[groupDep as keyof typeof peerDependencies];
});
}
}
}
}
if (!matchesDependency(dep, packageJson)) {
console.error(
`Incorrect dependency ${dep} in ${pkg.packageJson.name}`,
);
attemptToApplyFix(() => {
packageJson.devDependencies = packageJson.devDependencies || {};
packageJson.devDependencies[dep] =
desiredLocalVersionsOfDependencies[
dep as keyof typeof desiredLocalVersionsOfDependencies
];
});
}
if (!matchesPeerDependency(dep, packageJson)) {
console.error(
`Incorrect peer dependency ${dep} in ${pkg.packageJson.name}`,
);
attemptToApplyFix(() => {
packageJson.peerDependencies = packageJson.peerDependencies || {};
packageJson.peerDependencies[dep] =
peerDependencies[dep as keyof typeof peerDependencies];
});
}
} else {
console.error(
`Missing peer dependency ${dep} in ${pkg.packageJson.name}`,
);
attemptToApplyFix(() => {
packageJson.peerDependencies = packageJson.peerDependencies || {};
packageJson.peerDependencies[dep] =
peerDependencies[dep as keyof typeof peerDependencies];
});
}
}
if (fix) {
writeFileSync(
resolvePath(pkg.dir, 'package.json'),
`${JSON.stringify(packageJson, null, 2)}\n`,
);
}
}
if (failed) {
console.error('Some packages have incorrect peer dependencies');
process.exit(1);
}
};
@@ -202,6 +202,14 @@ function findTypeDepErrors(typeDeps: string[], pkg: Package) {
}
for (const dep of deps) {
// Allow implicit declarations of these dependencies. For some packages, they may
// not be declared as a `reference types="..."` or `import ... from '@types/...'
// in the declaration file.
// Example being app-visualizer, it exports a plugin which comes from `@backstage/frontend-plugin-api`,
// the react types come from that package, but are not explicitly declared in the declaration file.
if (['@types/react'].includes(dep)) {
continue;
}
errors.push(
mkErr('WrongDepError', `Should be dev dep ${dep}`, {
dep,
+11 -2
View File
@@ -58,7 +58,6 @@
"@backstage/types": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"cross-fetch": "^4.0.0",
"i18next": "^22.4.15",
"zen-observable": "^0.10.0"
@@ -66,12 +65,22 @@
"devDependencies": {
"@backstage/cli": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"msw": "^1.0.0"
"@types/react": "^18.0.0",
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@testing-library/react": "^16.0.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -45,12 +45,21 @@
"@mui/styles": "^5.14.18",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@types/react": "^16.13.1 || ^17.0.0"
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@material-ui/core": "^4.12.2",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0"
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -4
View File
@@ -35,17 +35,24 @@
"start": "backstage-cli package start",
"test": "backstage-cli package test"
},
"dependencies": {
"@types/react": "^16.13.1 || ^17.0.0"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
@@ -37,16 +37,25 @@
"test": "backstage-cli package test"
},
"dependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"grpc-docs": "^1.1.2"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@testing-library/jest-dom": "^6.0.0"
"@testing-library/jest-dom": "^6.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -67,7 +67,6 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"graphiql": "3.1.1",
"graphql": "^16.0.0",
"graphql-config": "^5.0.2",
@@ -85,11 +84,21 @@
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/highlightjs": "^10.1.0",
"@types/swagger-ui-react": "^4.18.0"
"@types/react": "^18.0.0",
"@types/swagger-ui-react": "^4.18.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+12 -3
View File
@@ -38,15 +38,24 @@
"@backstage/core-plugin-api": "workspace:^",
"@backstage/frontend-plugin-api": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@types/react": "^16.13.1 || ^17.0.0"
"@material-ui/icons": "^4.9.1"
},
"devDependencies": {
"@backstage/cli": "workspace:^"
"@backstage/cli": "workspace:^",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -45,7 +45,6 @@
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "^4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-use": "^17.2.4"
},
"devDependencies": {
@@ -55,11 +54,21 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"msw": "^1.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0"
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+15 -4
View File
@@ -42,8 +42,7 @@
"@backstage/core-plugin-api": "workspace:^",
"@backstage/errors": "workspace:^",
"@material-ui/core": "^4.9.13",
"@react-hookz/web": "^24.0.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0"
"@react-hookz/web": "^24.0.0"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
@@ -51,9 +50,21 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"msw": "^1.0.0"
"@types/react": "^18.0.0",
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0 || ^18.0.0"
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -60,7 +60,6 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"classnames": "^2.3.1",
"lodash": "^4.17.15",
"p-limit": "^3.1.0",
@@ -76,11 +75,21 @@
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0"
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -70,7 +70,6 @@
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@octokit/rest": "^19.0.3",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"git-url-parse": "^14.0.0",
"js-base64": "^3.6.0",
"lodash": "^4.17.21",
@@ -88,12 +87,22 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"msw": "^1.0.0"
"@types/react": "^18.0.0",
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+10 -1
View File
@@ -74,7 +74,6 @@
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@react-hookz/web": "^24.0.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"classnames": "^2.2.6",
"lodash": "^4.17.21",
"material-ui-popup-state": "^1.9.3",
@@ -94,12 +93,22 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"@types/zen-observable": "^0.8.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0",
"react-test-renderer": "^16.13.1"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
@@ -44,7 +44,6 @@
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "^4.0.0-alpha.60",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"luxon": "^3.5.0",
"react-use": "^17.2.4"
},
@@ -52,11 +51,21 @@
"@backstage/cli": "workspace:^",
"@backstage/dev-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+10 -1
View File
@@ -77,7 +77,6 @@
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@mui/utils": "^5.14.15",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"dataloader": "^2.0.0",
"expiry-map": "^2.0.0",
"history": "^5.0.0",
@@ -98,12 +97,22 @@
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/pluralize": "^0.0.33",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0",
"swr": "^2.2.5"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+11 -2
View File
@@ -44,7 +44,6 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"jsonschema": "^1.2.6",
"react-use": "^17.2.4",
"zen-observable": "^0.10.0"
@@ -54,11 +53,21 @@
"@backstage/dev-utils": "workspace:^",
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+10 -1
View File
@@ -67,12 +67,21 @@
"devDependencies": {
"@backstage/cli": "workspace:^",
"@backstage/dev-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0"
"@testing-library/jest-dom": "^6.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+10 -1
View File
@@ -50,11 +50,20 @@
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@types/react": "^16.13.1 || ^17.0.0"
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+12 -3
View File
@@ -46,16 +46,25 @@
"@backstage/core-plugin-api": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@rjsf/utils": "5.21.1",
"@types/react": "^16.13.1 || ^17.0.0"
"@rjsf/utils": "5.21.1"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@types/react-grid-layout": "^1.3.2"
"@types/react": "^18.0.0",
"@types/react-grid-layout": "^1.3.2",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -74,7 +74,6 @@
"@rjsf/material-ui": "5.21.1",
"@rjsf/utils": "5.21.1",
"@rjsf/validator-ajv8": "5.21.1",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"lodash": "^4.17.21",
"luxon": "^3.4.3",
"react-grid-layout": "1.3.4",
@@ -90,12 +89,22 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/react-grid-layout": "^1.3.2"
"@types/react": "^18.0.0",
"@types/react-grid-layout": "^1.3.2",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+11 -2
View File
@@ -51,7 +51,6 @@
"@kubernetes-models/base": "^5.0.0",
"@material-ui/core": "^4.12.2",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"cronstrue": "^2.2.0",
"js-yaml": "^4.0.0",
"kubernetes-models": "^4.1.0",
@@ -65,11 +64,21 @@
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@types/node": "^16.11.26"
"@types/node": "^16.11.26",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+14 -3
View File
@@ -53,7 +53,6 @@
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.11.3",
"@material-ui/lab": "^4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"cronstrue": "^2.32.0",
"js-yaml": "^4.1.0",
"kubernetes-models": "^4.3.1",
@@ -70,11 +69,23 @@
"@backstage/test-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"jest-websocket-mock": "^2.5.0",
"msw": "^1.3.1"
"msw": "^1.3.1",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0 || ^18.0.0"
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+11 -2
View File
@@ -70,7 +70,6 @@
"@kubernetes-models/base": "^5.0.0",
"@kubernetes/client-node": "0.20.0",
"@material-ui/core": "^4.12.2",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"cronstrue": "^2.2.0",
"js-yaml": "^4.0.0",
"kubernetes-models": "^4.1.0",
@@ -86,11 +85,21 @@
"@backstage/test-utils": "workspace:^",
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+13 -3
View File
@@ -48,7 +48,6 @@
"@material-ui/core": "^4.9.13",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "^4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0",
"lodash": "^4.17.21",
"material-ui-confirm": "^3.0.12",
"notistack": "^3.0.1",
@@ -64,10 +63,21 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"msw": "^1.0.0"
"@types/react": "^18.0.0",
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -48,7 +48,6 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-use": "^17.2.4"
},
"devDependencies": {
@@ -58,11 +57,21 @@
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0"
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -61,7 +61,6 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"lodash": "^4.17.21",
"p-limit": "^3.1.0",
"pluralize": "^8.0.0",
@@ -81,11 +80,21 @@
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0"
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -45,18 +45,27 @@
"@backstage/config": "workspace:^",
"@backstage/core-plugin-api": "workspace:^",
"@backstage/plugin-permission-common": "workspace:^",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"swr": "^2.0.0"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@backstage/test-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
@@ -47,6 +47,20 @@
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@types/react": "*"
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+10 -1
View File
@@ -78,7 +78,6 @@
"@rjsf/utils": "5.21.1",
"@rjsf/validator-ajv8": "5.21.1",
"@types/json-schema": "^7.0.9",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"ajv-errors": "^3.0.0",
"classnames": "^2.2.6",
"flatted": "3.3.1",
@@ -107,11 +106,21 @@
"@testing-library/user-event": "^14.0.0",
"@types/humanize-duration": "^3.18.1",
"@types/luxon": "^3.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0",
"swr": "^2.0.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+10 -1
View File
@@ -85,7 +85,6 @@
"@rjsf/material-ui": "5.21.1",
"@rjsf/utils": "5.21.1",
"@rjsf/validator-ajv8": "5.21.1",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"@uiw/react-codemirror": "^4.9.3",
"classnames": "^2.2.6",
"git-url-parse": "^14.0.0",
@@ -118,14 +117,24 @@
"@testing-library/user-event": "^14.0.0",
"@types/humanize-duration": "^3.18.1",
"@types/json-schema": "^7.0.9",
"@types/react": "^18.0.0",
"@types/react-resizable": "^3.0.8",
"@types/react-window": "^1.8.8",
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0",
"swr": "^2.0.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -66,7 +66,6 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"lodash": "^4.17.21",
"qs": "^6.9.4",
"react-use": "^17.3.2"
@@ -80,11 +79,21 @@
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0"
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -70,7 +70,6 @@
"@backstage/version-bridge": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"qs": "^6.9.4",
"react-use": "^17.2.4"
},
@@ -83,12 +82,22 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"history": "^5.0.0"
"@types/react": "^18.0.0",
"history": "^5.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+14 -2
View File
@@ -47,9 +47,21 @@
"@backstage/cli": "workspace:^",
"@backstage/test-utils": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0"
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+14 -2
View File
@@ -57,10 +57,22 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/react": "^18.0.0",
"jest-websocket-mock": "^2.5.0",
"msw": "^1.0.0"
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"react": "^16.13.1 || ^17.0.0"
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
@@ -49,18 +49,27 @@
"@backstage/plugin-techdocs": "workspace:^",
"@backstage/plugin-techdocs-react": "workspace:^",
"@backstage/test-utils": "workspace:^",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"testing-library__dom": "^7.29.4-beta.1"
},
"devDependencies": {
"@backstage/cli": "workspace:^",
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0"
"@testing-library/jest-dom": "^6.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@testing-library/react": "^16.0.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
@@ -57,11 +57,20 @@
"@testing-library/dom": "^10.0.0",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@types/react": "^16.13.1 || ^17.0.0"
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -52,7 +52,6 @@
"@backstage/version-bridge": "workspace:^",
"@material-ui/core": "^4.12.2",
"@material-ui/styles": "^4.11.0",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"jss": "~10.10.0",
"lodash": "^4.17.21",
"react-helmet": "6.1.0",
@@ -63,11 +62,21 @@
"@backstage/test-utils": "workspace:^",
"@backstage/theme": "workspace:^",
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0"
"@testing-library/react": "^16.0.0",
"@types/react": "^18.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
}
}
+11 -2
View File
@@ -80,7 +80,6 @@
"@material-ui/lab": "4.0.0-alpha.61",
"@material-ui/styles": "^4.10.0",
"@microsoft/fetch-event-source": "^2.0.1",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"dompurify": "^3.0.0",
"git-url-parse": "^14.0.0",
"jss": "~10.10.0",
@@ -99,12 +98,22 @@
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"@types/dompurify": "^3.0.0",
"canvas": "^2.10.2"
"@types/react": "^18.0.0",
"canvas": "^2.10.2",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": "config.d.ts"
}
+11 -2
View File
@@ -69,7 +69,6 @@
"@material-ui/core": "^4.12.2",
"@material-ui/icons": "^4.9.1",
"@material-ui/lab": "4.0.0-alpha.61",
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-use": "^17.2.4",
"zen-observable": "^0.10.0"
},
@@ -82,13 +81,23 @@
"@testing-library/jest-dom": "^6.0.0",
"@testing-library/react": "^16.0.0",
"@testing-library/user-event": "^14.0.0",
"msw": "^1.0.0"
"@types/react": "^18.0.0",
"msw": "^1.0.0",
"react": "^18.0.2",
"react-dom": "^18.0.2",
"react-router-dom": "^6.3.0"
},
"peerDependencies": {
"@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
}
},
"configSchema": {
"$schema": "https://backstage.io/schema/config-v1",
"title": "@backstage/user-settings",
+415 -50
View File
File diff suppressed because it is too large Load Diff