From 41fd493d887936b9d72e8b3be7046c058950a935 Mon Sep 17 00:00:00 2001 From: Peter van der Zee Date: Thu, 20 Mar 2025 16:33:50 +0100 Subject: [PATCH 1/2] Apply handle pattern to info --- src/commands/info/cmd-info.ts | 4 ++-- src/commands/info/fetch-package-info.ts | 15 ++++++++++++++- ...-package-info.ts => handle-package-info.ts} | 18 +++--------------- ...-package-info.ts => output-package-info.ts} | 8 ++++---- 4 files changed, 23 insertions(+), 22 deletions(-) rename src/commands/info/{get-package-info.ts => handle-package-info.ts} (71%) rename src/commands/info/{log-package-info.ts => output-package-info.ts} (95%) 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..ecb9e8e9 100644 --- a/src/commands/info/fetch-package-info.ts +++ b/src/commands/info/fetch-package-info.ts @@ -1,4 +1,5 @@ -import { PackageData } from './get-package-info' +import { PackageData } from './handle-package-info' +import constants from '../../constants' import { getSeverityCount } from '../../utils/alert/severity' import { handleApiCall, handleUnsuccessfulApiResponse } from '../../utils/api' import { getPublicToken, setupSdk } from '../../utils/sdk' @@ -9,6 +10,16 @@ export async function fetchPackageInfo( 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 +29,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..312e574e 100644 --- a/src/commands/info/log-package-info.ts +++ b/src/commands/info/output-package-info.ts @@ -5,7 +5,7 @@ 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 { PackageData } from './handle-package-info' import { SEVERITY, formatSeverityCount } from '../../utils/alert/severity' import { ColorOrMarkdown } from '../../utils/color-or-markdown' import { @@ -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') } From fef2b656d30f8f4af2e96ac4c22bfbdd288e18ce Mon Sep 17 00:00:00 2001 From: Peter van der Zee Date: Thu, 20 Mar 2025 16:47:16 +0100 Subject: [PATCH 2/2] Typed import --- src/commands/info/fetch-package-info.ts | 3 ++- src/commands/info/output-package-info.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/commands/info/fetch-package-info.ts b/src/commands/info/fetch-package-info.ts index ecb9e8e9..8fc62edd 100644 --- a/src/commands/info/fetch-package-info.ts +++ b/src/commands/info/fetch-package-info.ts @@ -1,9 +1,10 @@ -import { PackageData } from './handle-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, diff --git a/src/commands/info/output-package-info.ts b/src/commands/info/output-package-info.ts index 312e574e..d25aa0f9 100644 --- a/src/commands/info/output-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 './handle-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