Skip to content

Commit

Permalink
feat: handle parent/child overrides ('pkgA>pkgB')
Browse files Browse the repository at this point in the history
  • Loading branch information
westrik committed Mar 29, 2024
1 parent db9bab3 commit 3cd735b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 6 deletions.
29 changes: 23 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,21 +57,31 @@ const sortGitHooks = sortObjectBy(gitHooks)

const sortObjectBySemver = sortObjectBy((a, b) => {
const parseNameAndVersionRange = (specifier) => {
const atMatches = [...specifier.matchAll('@')]
const [nameAndVersion, childName] = specifier.split('>')
const atMatches = [...nameAndVersion.matchAll('@')]
if (
!atMatches.length ||
(atMatches.length === 1 && atMatches[0].index === 0)
) {
return { name: specifier }
return { name: specifier, childName }
}
const splitIndex = atMatches.pop().index
return {
name: specifier.substring(0, splitIndex),
range: specifier.substring(splitIndex + 1),
name: nameAndVersion.substring(0, splitIndex),
range: nameAndVersion.substring(splitIndex + 1),
childName,
}
}
const { name: aName, range: aRange } = parseNameAndVersionRange(a)
const { name: bName, range: bRange } = parseNameAndVersionRange(b)
const {
name: aName,
range: aRange,
childDep: aChildDep,
} = parseNameAndVersionRange(a)
const {
name: bName,
range: bRange,
childDep: bChildDep,
} = parseNameAndVersionRange(b)

if (aName !== bName) {
return aName.localeCompare(bName)
Expand All @@ -82,6 +92,13 @@ const sortObjectBySemver = sortObjectBy((a, b) => {
if (!bRange) {
return 1
}
if (aRange === bRange && (aChildDep || bChildDep)) {
if (aChildDep) {
return aChildDep.localeCompare(bChildDep)
} else {
return -1
}
}
return semver.compare(semver.minVersion(aRange), semver.minVersion(bRange))
})

Expand Down
6 changes: 6 additions & 0 deletions tests/fields.js
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,9 @@ test('pnpm', macro.sortObject, {
'@react-stately/select@~3.1.3': '3.1.3',
'@react-stately/selection@~3.7.0': '3.7.0',
'@react-stately/select@3': '3.3.1',
'@react-aria/selection@3.10.1>@react-stately/selection': '3.10.3',
'@react-aria/selection@3.10.1>@react-aria/focus': '3.8.0',
'@react-aria/selection@3.5.1>@react-stately/selection': '3.10.3',
},
patchedDependencies: {
'esbuild-sass-plugin@1.20.0': 'foo.patch',
Expand All @@ -293,6 +296,9 @@ test('pnpm', macro.sortObject, {
expect: {
allowNonAppliedPatches: true,
overrides: {
'@react-aria/selection@3.5.1>@react-stately/selection': '3.10.3',
'@react-aria/selection@3.10.1>@react-aria/focus': '3.8.0',
'@react-aria/selection@3.10.1>@react-stately/selection': '3.10.3',
'@react-stately/select@3': '3.3.1',
'@react-stately/select@~3.1.3': '3.1.3',
'@react-stately/selection@~3.7.0': '3.7.0',
Expand Down

0 comments on commit 3cd735b

Please sign in to comment.