diff --git a/src/commands/info/cmd-info.ts b/src/commands/info/cmd-info.ts index 64d9fde2..24f27a87 100644 --- a/src/commands/info/cmd-info.ts +++ b/src/commands/info/cmd-info.ts @@ -2,7 +2,7 @@ import colors from 'yoctocolors-cjs' import { logger } from '@socketsecurity/registry/lib/logger' -import { getPackageInfo } from './get-package-info' +import { handlePackageInfo } from './handle-package-info' import constants from '../../constants' import { commonFlags, outputFlags, validationFlags } from '../../flags' import { meowOrExit } from '../../utils/meow-with-subcommands' @@ -77,7 +77,7 @@ async function run( return } - await getPackageInfo({ + await handlePackageInfo({ commandName: `${parentName} ${config.commandName}`, includeAllIssues: Boolean(all), outputKind: json ? 'json' : markdown ? 'markdown' : 'print', diff --git a/src/commands/info/fetch-package-info.ts b/src/commands/info/fetch-package-info.ts index bdfb17c0..8fc62edd 100644 --- a/src/commands/info/fetch-package-info.ts +++ b/src/commands/info/fetch-package-info.ts @@ -1,14 +1,26 @@ -import { PackageData } from './get-package-info' +import constants from '../../constants' import { getSeverityCount } from '../../utils/alert/severity' import { handleApiCall, handleUnsuccessfulApiResponse } from '../../utils/api' import { getPublicToken, setupSdk } from '../../utils/sdk' +import type { PackageData } from './handle-package-info' + export async function fetchPackageInfo( pkgName: string, pkgVersion: string, includeAllIssues: boolean ): Promise { const socketSdk = await setupSdk(getPublicToken()) + + // Lazily access constants.spinner. + const { spinner } = constants + + spinner.start( + pkgVersion === 'latest' + ? `Looking up data for the latest version of ${pkgName}` + : `Looking up data for version ${pkgVersion} of ${pkgName}` + ) + const result = await handleApiCall( socketSdk.getIssuesByNPMPackage(pkgName, pkgVersion), 'looking up package' @@ -18,6 +30,8 @@ export async function fetchPackageInfo( 'looking up package score' ) + spinner.successAndStop('Data fetched') + if (result.success === false) { return handleUnsuccessfulApiResponse('getIssuesByNPMPackage', result) } diff --git a/src/commands/info/get-package-info.ts b/src/commands/info/handle-package-info.ts similarity index 71% rename from src/commands/info/get-package-info.ts rename to src/commands/info/handle-package-info.ts index 5a0fadde..abaf8243 100644 --- a/src/commands/info/get-package-info.ts +++ b/src/commands/info/handle-package-info.ts @@ -3,8 +3,7 @@ import process from 'node:process' import { hasKeys } from '@socketsecurity/registry/lib/objects' import { fetchPackageInfo } from './fetch-package-info' -import { logPackageInfo } from './log-package-info' -import constants from '../../constants' +import { outputPackageInfo } from './output-package-info' import type { SocketSdkAlert } from '../../utils/alert/severity' import type { SocketSdkReturnType } from '@socketsecurity/sdk' @@ -15,7 +14,7 @@ export interface PackageData { score: SocketSdkReturnType<'getScoreByNPMPackage'>['data'] } -export async function getPackageInfo({ +export async function handlePackageInfo({ commandName, includeAllIssues, outputKind, @@ -30,25 +29,14 @@ export async function getPackageInfo({ pkgVersion: string strict: boolean }) { - // Lazily access constants.spinner. - const { spinner } = constants - - spinner.start( - pkgVersion === 'latest' - ? `Looking up data for the latest version of ${pkgName}` - : `Looking up data for version ${pkgVersion} of ${pkgName}` - ) - const packageData = await fetchPackageInfo( pkgName, pkgVersion, includeAllIssues ) - spinner.successAndStop('Data fetched') - if (packageData) { - logPackageInfo(packageData, { + outputPackageInfo(packageData, { name: commandName, includeAllIssues, outputKind, diff --git a/src/commands/info/log-package-info.ts b/src/commands/info/output-package-info.ts similarity index 95% rename from src/commands/info/log-package-info.ts rename to src/commands/info/output-package-info.ts index 42c6916c..d25aa0f9 100644 --- a/src/commands/info/log-package-info.ts +++ b/src/commands/info/output-package-info.ts @@ -5,7 +5,6 @@ import constants from '@socketsecurity/registry/lib/constants' import { logger } from '@socketsecurity/registry/lib/logger' import { hasKeys } from '@socketsecurity/registry/lib/objects' -import { PackageData } from './get-package-info' import { SEVERITY, formatSeverityCount } from '../../utils/alert/severity' import { ColorOrMarkdown } from '../../utils/color-or-markdown' import { @@ -13,6 +12,7 @@ import { getSocketDevPackageOverviewUrl } from '../../utils/socket-url' +import type { PackageData } from './handle-package-info' import type { SocketSdkReturnType } from '@socketsecurity/sdk' const { NPM } = constants @@ -26,7 +26,7 @@ function formatScore(score: number): string { return colors.red(`${score}`) } -function logPackageIssuesDetails( +function outputPackageIssuesDetails( packageData: SocketSdkReturnType<'getIssuesByNPMPackage'>['data'], outputMarkdown: boolean ) { @@ -65,7 +65,7 @@ function logPackageIssuesDetails( } } -export function logPackageInfo( +export function outputPackageInfo( { data, score, severityCount }: PackageData, { name, @@ -112,7 +112,7 @@ export function logPackageInfo( logger.log( `Package has these issues: ${formatSeverityCount(severityCount)}\n` ) - logPackageIssuesDetails(data, outputKind === 'markdown') + outputPackageIssuesDetails(data, outputKind === 'markdown') } else { logger.log('Package has no issues') }