Skip to content

Commit 680c57c

Browse files
committed
Improve arborist debug
1 parent 282b406 commit 680c57c

File tree

4 files changed

+40
-24
lines changed

4 files changed

+40
-24
lines changed

src/commands/fix/npm-fix.mts

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@ import type {
1919
InstallOptions,
2020
InstallerResult,
2121
} from './agent-fix.mts'
22-
import type { NodeClass } from '../../shadow/npm/arborist/types.mts'
22+
import type {
23+
ArboristInstance,
24+
NodeClass,
25+
} from '../../shadow/npm/arborist/types.mts'
2326
import type { CResult } from '../../types.mts'
2427
import type { EnvDetails } from '../../utils/package-environment.mts'
28+
import type { AlertsByPurl } from '../../utils/socket-package-alert.mts'
2529
import type { PackageJson } from '@socketsecurity/registry/lib/packages'
2630

2731
async function install(
@@ -120,28 +124,40 @@ export async function npmFix(
120124
})
121125

122126
let actualTree: NodeClass | undefined
123-
let alertsMap
127+
let alertsMap: AlertsByPurl | undefined
124128
try {
125129
if (purls.length) {
126130
alertsMap = await getAlertsMapFromPurls(purls, getFixAlertsMapOptions())
127131
} else {
128-
const arb = new Arborist({
129-
path: pkgEnvDetails.pkgPath,
130-
...flatConfig,
131-
...SAFE_WITH_SAVE_ARBORIST_REIFY_OPTIONS_OVERRIDES,
132-
})
133-
actualTree = await arb.reify()
134-
// Calling arb.reify() creates the arb.diff object, nulls-out arb.idealTree,
135-
// and populates arb.actualTree.
132+
let arb: ArboristInstance | undefined
133+
try {
134+
arb = new Arborist({
135+
path: pkgEnvDetails.pkgPath,
136+
...flatConfig,
137+
...SAFE_WITH_SAVE_ARBORIST_REIFY_OPTIONS_OVERRIDES,
138+
})
139+
// Calling arb.reify() creates the arb.diff object, nulls-out arb.idealTree,
140+
// and populates arb.actualTree.
141+
actualTree = await arb.reify()
142+
} catch (e) {
143+
spinner?.stop()
144+
debugFn('error', 'caught: await arb.reify() error')
145+
debugDir('inspect', { error: e })
146+
return {
147+
ok: false,
148+
message: 'Arborist error',
149+
cause: (e as Error)?.message || 'Unknown Arborist error.',
150+
}
151+
}
136152
alertsMap = await getAlertsMapFromArborist(arb, getFixAlertsMapOptions())
137153
}
138154
} catch (e) {
139155
spinner?.stop()
140-
debugFn('error', 'caught: PURL API')
156+
debugFn('error', 'caught: Socket batch PURL API error')
141157
debugDir('inspect', { error: e })
142158
return {
143159
ok: false,
144-
message: 'API Error',
160+
message: 'Socket API error',
145161
cause: (e as Error)?.message || 'Unknown Socket batch PURL API error.',
146162
}
147163
}

src/commands/fix/pnpm-fix.mts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,11 @@ export async function pnpmFix(
152152
: await getAlertsMapFromPnpmLockfile(lockfile, getFixAlertsMapOptions())
153153
} catch (e) {
154154
spinner?.stop()
155-
debugFn('error', 'caught: PURL API')
155+
debugFn('error', 'caught: Socket batch PURL API error')
156156
debugDir('inspect', { error: e })
157157
return {
158158
ok: false,
159-
message: 'API Error',
159+
message: 'Socket API error',
160160
cause: (e as Error)?.message || 'Unknown Socket batch PURL API error.',
161161
}
162162
}

src/commands/scan/fetch-report-data.mts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,16 +134,16 @@ export async function fetchScanData(
134134
updateScan('failure; unknown blocking error occurred')
135135
return {
136136
ok: false as const,
137-
message: 'Unexpected Socket API error',
138-
cause: `We encountered an unexpected error while requesting the Scan from the API: ${e?.message || '(no error message found)'}${e?.cause ? ` (cause: ${e.cause})` : ''}`,
137+
message: 'Socket API error',
138+
cause: `Error requesting scan: ${e?.message || '(no error message found)'}${e?.cause ? ` (cause: ${e.cause})` : ''}`,
139139
}
140140
}),
141141
fetchSecurityPolicy().catch(e => {
142142
updatePolicy('failure; unknown blocking error occurred')
143143
return {
144144
ok: false as const,
145-
message: 'Unexpected Socket API error',
146-
cause: `We encountered an unexpected error while requesting the policy from the Socket API: ${e?.message || '(no error message found)'}${e?.cause ? ` (cause: ${e.cause})` : ''}`,
145+
message: 'Socket API error',
146+
cause: `Error requesting policy: ${e?.message || '(no error message found)'}${e?.cause ? ` (cause: ${e.cause})` : ''}`,
147147
}
148148
}),
149149
]).finally(() => {

src/utils/package-environment.mts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ export async function detectAndValidatePackageEnvironment(
433433
const minVersion = constants.minimumVersionByAgent.get(agent)!
434434
return {
435435
ok: false,
436-
message: 'Version Mismatch',
436+
message: 'Version mismatch',
437437
cause: cmdPrefixMessage(
438438
cmdName,
439439
`Requires ${agent} >=${minVersion}. Current version: ${agentVersion}.`,
@@ -444,7 +444,7 @@ export async function detectAndValidatePackageEnvironment(
444444
const minVersion = constants.maintainedNodeVersions.last
445445
return {
446446
ok: false,
447-
message: 'Version Mismatch',
447+
message: 'Version mismatch',
448448
cause: cmdPrefixMessage(
449449
cmdName,
450450
`Requires Node >=${minVersion}. Current version: ${nodeVersion}.`,
@@ -454,7 +454,7 @@ export async function detectAndValidatePackageEnvironment(
454454
if (!details.pkgSupports.agent) {
455455
return {
456456
ok: false,
457-
message: 'Engine Mismatch',
457+
message: 'Engine mismatch',
458458
cause: cmdPrefixMessage(
459459
cmdName,
460460
`Package engine "${agent}" requires ${pkgRequirements.agent}. Current version: ${agentVersion}`,
@@ -464,7 +464,7 @@ export async function detectAndValidatePackageEnvironment(
464464
if (!details.pkgSupports.node) {
465465
return {
466466
ok: false,
467-
message: 'Version Mismatch',
467+
message: 'Version mismatch',
468468
cause: cmdPrefixMessage(
469469
cmdName,
470470
`Package engine "node" requires ${pkgRequirements.node}. Current version: ${nodeVersion}`,
@@ -475,14 +475,14 @@ export async function detectAndValidatePackageEnvironment(
475475
if (details.lockName === undefined || details.lockSrc === undefined) {
476476
return {
477477
ok: false,
478-
message: 'Missing Lock File',
478+
message: 'Missing lockfile',
479479
cause: cmdPrefixMessage(cmdName, `No ${lockName} found`),
480480
}
481481
}
482482
if (details.lockSrc.trim() === '') {
483483
return {
484484
ok: false,
485-
message: 'Empty Lock File',
485+
message: 'Empty lockfile',
486486
cause: cmdPrefixMessage(cmdName, `${lockName} is empty`),
487487
}
488488
}

0 commit comments

Comments
 (0)