diff --git a/.changeset/nervous-dancers-argue.md b/.changeset/nervous-dancers-argue.md new file mode 100644 index 0000000000..65cf574433 --- /dev/null +++ b/.changeset/nervous-dancers-argue.md @@ -0,0 +1,5 @@ +--- +"@definitelytyped/definitions-parser": patch +--- + +Fix dependent packages showing up as changed in getAffectedPackages diff --git a/packages/definitions-parser/src/get-affected-packages.ts b/packages/definitions-parser/src/get-affected-packages.ts index 6c696fae21..b9ccba4f9f 100644 --- a/packages/definitions-parser/src/get-affected-packages.ts +++ b/packages/definitions-parser/src/get-affected-packages.ts @@ -16,8 +16,9 @@ export async function getAffectedPackages( definitelyTypedPath: string ): Promise<{ errors: string[] } | PreparePackagesResult> { const errors = []; + // No ... prefix; we only want packages that were actually edited. const changedPackageDirectories = await execAndThrowErrors( - `pnpm ls -r --depth -1 --parseable --filter '...@types/**[${sourceRemote}/${sourceBranch}]'`, + `pnpm ls -r --depth -1 --parseable --filter '@types/**[${sourceRemote}/${sourceBranch}]'`, definitelyTypedPath ); @@ -29,7 +30,10 @@ export async function getAffectedPackages( const { additions, deletions } = git; const addedPackageDirectories = mapDefined(additions, (id) => id.typesDirectoryName); const allDependentDirectories = []; - const filters = [`--filter '...[${sourceRemote}/${sourceBranch}]'`]; + // Start the filter off with all packages that were touched along with those that depend on them. + const filters = [`--filter '...@types/**[${sourceRemote}/${sourceBranch}]'`]; + // For packages that have been deleted, they won't appear in the graph anymore; look for packages + // that still depend on the package (but via npm) and manually add them. for (const d of deletions) { for (const dep of await allPackages.allTypings()) { for (const [name, version] of dep.allPackageJsonDependencies()) {