Skip to content

Commit 303a60d

Browse files
authored
Make getOverridesData helper and fix override value lookup (#672)
1 parent ad6e860 commit 303a60d

File tree

3 files changed

+41
-26
lines changed

3 files changed

+41
-26
lines changed

src/commands/fix/agent-fix.mts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
resolvePackageName,
1515
} from '@socketsecurity/registry/lib/packages'
1616
import { naturalCompare } from '@socketsecurity/registry/lib/sorts'
17+
import { isNonEmptyString } from '@socketsecurity/registry/lib/strings'
1718

1819
import { getActiveBranchesForPackage } from './fix-branch-helpers.mts'
1920
import { getActualTree } from './get-actual-tree.mts'
@@ -47,7 +48,7 @@ import { getPurlObject } from '../../utils/purl.mts'
4748
import { applyRange } from '../../utils/semver.mts'
4849
import { getCveInfoFromAlertsMap } from '../../utils/socket-package-alert.mts'
4950
import { idToPurl } from '../../utils/spec.mts'
50-
import { overridesDataByAgent } from '../optimize/get-overrides-by-agent.mts'
51+
import { getOverridesData } from '../optimize/get-overrides-by-agent.mts'
5152

5253
import type { CiEnv } from './fix-env-helpers.mts'
5354
import type { PrMatch } from './open-pr.mts'
@@ -146,8 +147,6 @@ export async function agentFix(
146147
(a, b) => naturalCompare(a[0], b[0]),
147148
)
148149

149-
const getOverridesData = overridesDataByAgent.get(pkgEnvDetails.agent)!
150-
151150
const cleanupInfoEntriesLoop = () => {
152151
logger.dedent()
153152
spinner?.dedent()
@@ -324,18 +323,17 @@ export async function agentFix(
324323
continue infosLoop
325324
}
326325

327-
const oldOverrides = getOverridesData(
326+
const { overrides: oldOverrides } = getOverridesData(
328327
pkgEnvDetails,
329328
editablePkgJson.content,
330329
)
331-
const overrideKey = `${name}@${vulnerableVersionRange}`
332-
333-
const newVersionRange = applyRange(
334-
(oldOverrides as any)?.[overrideKey] ?? oldVersion,
335-
newVersion,
336-
rangeStyle,
337-
)
338-
const newId = `${name}@${newVersionRange}`
330+
let refRange = oldOverrides?.[`${name}@${vulnerableVersionRange}`]
331+
if (!isNonEmptyString(refRange)) {
332+
refRange = oldOverrides?.[name]
333+
}
334+
if (!isNonEmptyString(refRange)) {
335+
refRange = oldVersion
336+
}
339337

340338
// eslint-disable-next-line no-await-in-loop
341339
await beforeInstall(
@@ -346,7 +344,6 @@ export async function agentFix(
346344
vulnerableVersionRange,
347345
options,
348346
)
349-
350347
updatePackageJsonFromNode(
351348
editablePkgJson,
352349
actualTree,
@@ -370,6 +367,8 @@ export async function agentFix(
370367
workspaceLogCallCount = logger.logCallCount
371368
}
372369

370+
const newId = `${name}@${applyRange(refRange, newVersion, rangeStyle)}`
371+
373372
spinner?.start()
374373
spinner?.info(`Installing ${newId} in ${workspace}.`)
375374

src/commands/optimize/add-overrides.mts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ import { Spinner } from '@socketsecurity/registry/lib/spinner'
1010

1111
import { depsIncludesByAgent } from './deps-includes-by-agent.mts'
1212
import { getDependencyEntries } from './get-dependency-entries.mts'
13-
import { overridesDataByAgent } from './get-overrides-by-agent.mts'
13+
import {
14+
getOverridesData,
15+
getOverridesDataNpm,
16+
getOverridesDataYarnClassic,
17+
} from './get-overrides-by-agent.mts'
1418
import { lockfileIncludesByAgent } from './lockfile-includes-by-agent.mts'
1519
import { lsByAgent } from './ls-by-agent.mts'
1620
import { CMD_NAME } from './shared.mts'
@@ -43,7 +47,7 @@ type AddOverridesState = {
4347
warnedPnpmWorkspaceRequiresNpm: boolean
4448
}
4549

46-
const { NPM, PNPM, YARN_CLASSIC } = constants
50+
const { NPM, PNPM } = constants
4751

4852
const manifestNpmOverrides = getManifestData(NPM)
4953

@@ -95,11 +99,11 @@ export async function addOverrides(
9599

96100
const overridesDataObjects = [] as GetOverridesResult[]
97101
if (isWorkspace || pkgEnvDetails.editablePkgJson.content['private']) {
98-
overridesDataObjects.push(overridesDataByAgent.get(agent)!(pkgEnvDetails))
102+
overridesDataObjects.push(getOverridesData(pkgEnvDetails))
99103
} else {
100104
overridesDataObjects.push(
101-
overridesDataByAgent.get(NPM)!(pkgEnvDetails),
102-
overridesDataByAgent.get(YARN_CLASSIC)!(pkgEnvDetails),
105+
getOverridesDataNpm(pkgEnvDetails),
106+
getOverridesDataYarnClassic(pkgEnvDetails),
103107
)
104108
}
105109

src/commands/optimize/get-overrides-by-agent.mts

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,23 @@ export type GetOverrides = (
7979

8080
export type GetOverridesResult = { type: Agent; overrides: Overrides }
8181

82-
export const overridesDataByAgent = new Map<Agent, GetOverrides>([
83-
[BUN, getOverridesDataBun],
84-
[NPM, getOverridesDataNpm],
85-
[PNPM, getOverridesDataPnpm],
86-
[VLT, getOverridesDataVlt],
87-
[YARN_BERRY, getOverridesDataYarn],
88-
[YARN_CLASSIC, getOverridesDataYarnClassic],
89-
] as ReadonlyArray<[Agent, GetOverrides]>)
82+
export function getOverridesData(
83+
pkgEnvDetails: EnvDetails,
84+
pkgJson?: PackageJson | undefined,
85+
): GetOverridesResult {
86+
switch (pkgEnvDetails.agent) {
87+
case BUN:
88+
return getOverridesDataBun(pkgEnvDetails, pkgJson)
89+
case PNPM:
90+
return getOverridesDataPnpm(pkgEnvDetails, pkgJson)
91+
case VLT:
92+
return getOverridesDataVlt(pkgEnvDetails, pkgJson)
93+
case YARN_BERRY:
94+
return getOverridesDataYarn(pkgEnvDetails, pkgJson)
95+
case YARN_CLASSIC:
96+
return getOverridesDataYarnClassic(pkgEnvDetails, pkgJson)
97+
case NPM:
98+
default:
99+
return getOverridesDataNpm(pkgEnvDetails, pkgJson)
100+
}
101+
}

0 commit comments

Comments
 (0)