( id: PackageManagerId, depGroups: DependencyGroup[], auditLevelMapping: AuditSeverity, packageJsonPath: PackageJsonPath, )
| 93 | } |
| 94 | |
| 95 | async function processAudit( |
| 96 | id: PackageManagerId, |
| 97 | depGroups: DependencyGroup[], |
| 98 | auditLevelMapping: AuditSeverity, |
| 99 | packageJsonPath: PackageJsonPath, |
| 100 | ) { |
| 101 | const pm = packageManagers[id]; |
| 102 | const supportedAuditDepGroups = |
| 103 | pm.audit.supportedDepGroups ?? dependencyGroups; |
| 104 | const compatibleAuditDepGroups = depGroups.filter(group => |
| 105 | supportedAuditDepGroups.includes(group), |
| 106 | ); |
| 107 | |
| 108 | logger.info( |
| 109 | `Auditing packages for ${pluralizeToken('dependency group', compatibleAuditDepGroups.length)} (${compatibleAuditDepGroups.join(', ')}) ...`, |
| 110 | ); |
| 111 | |
| 112 | const auditResults = await asyncSequential( |
| 113 | compatibleAuditDepGroups, |
| 114 | async (depGroup): Promise<[DependencyGroup, AuditResult]> => { |
| 115 | const { stdout } = await executeProcess({ |
| 116 | command: pm.command, |
| 117 | args: pm.audit.getCommandArgs(depGroup), |
| 118 | cwd: packageJsonPath ? path.dirname(packageJsonPath) : process.cwd(), |
| 119 | ignoreExitCode: pm.audit.ignoreExitCode, |
| 120 | }); |
| 121 | return [depGroup, pm.audit.unifyResult(stdout)]; |
| 122 | }, |
| 123 | ); |
| 124 | |
| 125 | const resultsMap = objectFromEntries(auditResults); |
| 126 | const uniqueResults = pm.audit.postProcessResult?.(resultsMap) ?? resultsMap; |
| 127 | |
| 128 | logAuditSummary(uniqueResults); |
| 129 | |
| 130 | return compatibleAuditDepGroups.map(depGroup => |
| 131 | auditResultToAuditOutput( |
| 132 | // eslint-disable-next-line @typescript-eslint/no-non-null-assertion |
| 133 | uniqueResults[depGroup]!, |
| 134 | id, |
| 135 | depGroup, |
| 136 | auditLevelMapping, |
| 137 | ), |
| 138 | ); |
| 139 | } |
| 140 | |
| 141 | function logAuditSummary( |
| 142 | results: Partial<Record<DependencyGroup, AuditResult>>, |
no test coverage detected