Skip to content

Commit 9f3390a

Browse files
committed
Update direct dependencies with the fix command too
1 parent df780e2 commit 9f3390a

File tree

2 files changed

+35
-15
lines changed

2 files changed

+35
-15
lines changed

src/commands/fix/run-fix.ts

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { getManifestData } from '@socketsecurity/registry'
22
import { runScript } from '@socketsecurity/registry/lib/npm'
3-
import { fetchPackagePackument } from '@socketsecurity/registry/lib/packages'
3+
import {
4+
fetchPackagePackument,
5+
readPackageJson
6+
} from '@socketsecurity/registry/lib/packages'
47
import { Spinner } from '@socketsecurity/registry/lib/spinner'
58

69
import constants from '../../constants'
@@ -15,13 +18,24 @@ import {
1518
getPackagesAlerts,
1619
updateNode
1720
} from '../../shadow/arborist/lib/arborist/reify'
21+
// import { detect } from '../../utils/package-manager-detector'
22+
23+
import type { SafeNode } from '../../shadow/arborist/lib/node'
1824

1925
const { NPM } = constants
2026

27+
function isTopLevel(tree: SafeNode, node: SafeNode): boolean {
28+
return tree.children.get(node.name) === node
29+
}
30+
2131
export async function runFix() {
2232
const spinner = new Spinner().start()
33+
const cwd = process.cwd()
34+
const editablePkgJson = await readPackageJson(cwd, { editable: true })
35+
// const agentDetails = await detect()
36+
2337
const arb = new SafeArborist({
24-
path: process.cwd(),
38+
path: cwd,
2539
...SAFE_ARBORIST_REIFY_OPTIONS_OVERRIDES
2640
})
2741
await arb.reify()
@@ -80,6 +94,24 @@ export async function runFix() {
8094
await runScript('test', [], { stdio: 'pipe' })
8195
spinner.info(`Patched ${name} ${oldVersion} -> ${node.version}`)
8296
spinner.start()
97+
if (isTopLevel(tree, node)) {
98+
for (const depField of [
99+
'dependencies',
100+
'optionalDependencies',
101+
'peerDependencies'
102+
]) {
103+
const oldVersion = (
104+
editablePkgJson.content[depField] as any
105+
)?.[name]
106+
if (oldVersion) {
107+
const decorator = /^[~^]/.exec(oldVersion)?.[0] ?? ''
108+
;(editablePkgJson as any).content[depField][name] =
109+
`${decorator}${node.version}`
110+
}
111+
}
112+
}
113+
// eslint-disable-next-line no-await-in-loop
114+
await editablePkgJson.save()
83115
} catch {
84116
spinner.error(`Reverting ${name} to ${oldVersion}`)
85117
spinner.start()
@@ -95,18 +127,7 @@ export async function runFix() {
95127
}
96128
}
97129
}
98-
99-
// await arb.reify({
100-
// audit: false,
101-
// dryRun: false,
102-
// fund: false,
103-
// ignoreScripts: false,
104-
// progress: false,
105-
// save: true,
106-
// saveBundle: false,
107-
// silent: true
108-
// })
109-
const arb2 = new Arborist()
130+
const arb2 = new Arborist({ path: cwd })
110131
arb2.idealTree = arb.idealTree
111132
await arb2.reify()
112133
spinner.stop()

src/shadow/arborist/lib/arborist/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import type {
55
Arborist as BaseArborist,
66
AuditReport as BaseAuditReport,
77
Diff as BaseDiff,
8-
Link,
98
ReifyOptions
109
} from '@npmcli/arborist'
1110

0 commit comments

Comments
 (0)