@@ -62,27 +62,27 @@ const {
6262const formatter = new ColorOrMarkdown ( false )
6363
6464function findBestPatchVersion (
65- name : string ,
65+ node : SafeNode ,
6666 availableVersions : string [ ] ,
67- currentMajorVersion : number ,
6867 vulnerableVersionRange ?: string ,
6968 _firstPatchedVersionIdentifier ?: string
7069) : string | null {
71- const manifestData = getManifestData ( NPM , name )
72- // Filter versions that are within the current major version and are not in the vulnerable range
73- const eligibleVersions =
74- manifestData && manifestData . name === manifestData . package
75- ? availableVersions
76- : availableVersions . filter (
77- version =>
78- semver . major ( version ) === currentMajorVersion &&
79- ( ! vulnerableVersionRange ||
80- ! semver . satisfies ( version , vulnerableVersionRange ) )
81- )
82- if ( eligibleVersions . length === 0 ) {
83- return null
70+ const manifestData = getManifestData ( NPM , node . name )
71+ let eligibleVersions
72+ if ( manifestData && manifestData . name === manifestData . package ) {
73+ const major = semver . major ( manifestData . version )
74+ eligibleVersions = availableVersions . filter ( v => semver . major ( v ) === major )
75+ } else {
76+ const major = semver . major ( node . version )
77+ eligibleVersions = availableVersions . filter (
78+ v =>
79+ // Filter for versions that are within the current major version
80+ // and are not in the vulnerable range
81+ semver . major ( v ) === major &&
82+ ( ! vulnerableVersionRange ||
83+ ! semver . satisfies ( v , vulnerableVersionRange ) )
84+ )
8485 }
85- // Use semver to find the max satisfying version.
8686 return semver . maxSatisfying ( eligibleVersions , '*' )
8787}
8888
@@ -114,15 +114,15 @@ type GetPackageAlertsOptions = {
114114}
115115
116116async function getPackagesAlerts (
117- details : PackageDetail [ ] ,
117+ arb : SafeArborist ,
118118 options ?: GetPackageAlertsOptions
119119) : Promise < SocketPackageAlert [ ] > {
120- let { length : remaining } = details
121120 const IPC = await getIPC ( )
122121 const runningFixCmd = ! ! IPC [ SOCKET_CLI_IN_FIX_CMD ]
123122 const needInfoOn = getPackagesToQueryFromDiff ( arb . diff , {
124123 includeUnchanged : runningFixCmd
125124 } )
125+ let { length : remaining } = needInfoOn
126126 const packageAlerts : SocketPackageAlert [ ] = [ ]
127127 if ( ! remaining ) {
128128 return packageAlerts
@@ -142,14 +142,13 @@ async function getPackagesAlerts(
142142 spinner ?. start ( getText ( ) )
143143 try {
144144 for await ( const artifact of batchScan (
145- arrayUnique ( details . map ( d => d . node . pkgid ) )
145+ arrayUnique ( needInfoOn . map ( d => d . node . pkgid ) )
146146 ) ) {
147147 if ( ! artifact . name || ! artifact . version || ! artifact . alerts ?. length ) {
148148 continue
149149 }
150- const { version } = artifact
151150 const name = resolvePackageName ( < any > artifact )
152- const id = ` ${ name } @ ${ artifact . version } `
151+ const { version } = artifact
153152
154153 let displayWarning = false
155154 let alerts : SocketPackageAlert [ ] = [ ]
@@ -178,16 +177,17 @@ async function getPackagesAlerts(
178177 if ( includeExisting && ! runningFixCmd ) {
179178 // Before we ask about problematic issues, check to see if they
180179 // already existed in the old version if they did, be quiet.
181- const existing = details . find ( d =>
180+ const existing = needInfoOn . find ( d =>
182181 d . existing ?. pkgid . startsWith ( `${ name } @` )
183182 ) ?. existing
184183 if ( existing ) {
185184 const oldArtifact : SocketArtifact | undefined =
186185 // eslint-disable-next-line no-await-in-loop
187186 ( await batchScan ( [ existing . pkgid ] ) . next ( ) ) . value
188- if ( oldArtifact ?. alerts ?. length ) {
187+ const oldAlerts = oldArtifact ?. alerts
188+ if ( oldAlerts ?. length ) {
189189 alerts = alerts . filter (
190- ( { type } ) => ! oldArtifact . alerts ! . find ( a => a . type === type )
190+ ( { type } ) => ! oldAlerts . find ( a => a . type === type )
191191 )
192192 }
193193 }
@@ -196,7 +196,10 @@ async function getPackagesAlerts(
196196 }
197197 if ( displayWarning && spinner ) {
198198 spinner . stop (
199- `(socket) ${ formatter . hyperlink ( id , getSocketDevPackageOverviewUrl ( NPM , name , version ) ) } contains risks:`
199+ `(socket) ${ formatter . hyperlink (
200+ `${ name } @${ version } ` ,
201+ getSocketDevPackageOverviewUrl ( NPM , name , version )
202+ ) } contains risks:`
200203 )
201204 }
202205 alerts . sort ( ( a , b ) => ( a . type < b . type ? - 1 : 1 ) )
@@ -249,7 +252,7 @@ function getTranslations() {
249252 return _translations !
250253}
251254
252- async function updateAdvisoryDependencies (
255+ async function updateAdvisoryNodes (
253256 arb : SafeArborist ,
254257 alerts : SocketPackageAlert [ ]
255258) {
@@ -311,11 +314,10 @@ async function updateAdvisoryDependencies(
311314 }
312315}
313316
314- async function updateSocketRegistryDependencies ( arb : SafeArborist ) {
317+ async function updateSocketRegistryNodes ( arb : SafeArborist ) {
315318 await arb . buildIdealTree ( )
316- const manifest = getManifestData ( NPM )
317319 const tree = arb . idealTree !
318- for ( const { 1 : data } of manifest ) {
320+ for ( const { 1 : data } of getManifestData ( NPM ) ) {
319321 const nodes = findPackageNodes ( tree , data . name )
320322 const packument = nodes . length
321323 ? // eslint-disable-next-line no-await-in-loop
@@ -335,14 +337,11 @@ function updateNode(
335337 vulnerableVersionRange ?: string ,
336338 firstPatchedVersionIdentifier ?: string
337339) {
338- const { version } = node
339- const majorVerNum = semver . major ( version )
340340 const availableVersions = Object . keys ( packument . versions )
341341 // Find the highest non-vulnerable version within the same major range
342342 const targetVersion = findBestPatchVersion (
343- node . name ,
343+ node ,
344344 availableVersions ,
345- majorVerNum ,
346345 vulnerableVersionRange ,
347346 firstPatchedVersionIdentifier
348347 )
@@ -433,33 +432,31 @@ export async function reify(
433432 ) {
434433 throw new Error ( 'Socket npm exiting due to risks' )
435434 }
436- if ( ! alerts . length || ! runningFixCommand ) {
437- return await this [ kRiskyReify ] ( ...args )
438- }
439- const prev = new Set ( alerts . map ( a => a . key ) )
440- let ret : SafeNode | undefined
441- /* eslint-disable no-await-in-loop */
442- while ( alerts . length > 0 ) {
443- await updateAdvisoryDependencies ( this , alerts )
444- ret = await this [ kRiskyReify ] ( ...args )
445- await this . loadActual ( )
446- await this . buildIdealTree ( )
447- needInfoOn = getPackagesToQueryFromDiff ( this . diff , {
448- includeUnchanged : true
449- } )
450- alerts = (
451- await getPackagesAlerts ( needInfoOn , {
452- includeExisting : true ,
453- includeUnfixable : true
454- } )
455- ) . filter ( ( { key } ) => {
456- const unseen = ! prev . has ( key )
457- if ( unseen ) {
458- prev . add ( key )
459- }
460- return unseen
461- } )
462- }
463- /* eslint-enable no-await-in-loop */
464- return ret !
435+ return await this [ kRiskyReify ] ( ...args )
436+ // const prev = new Set(alerts.map(a => a.key))
437+ // let ret: SafeNode | undefined
438+ // /* eslint-disable no-await-in-loop */
439+ // while (alerts.length > 0) {
440+ // await updateAdvisoryNodes(this, alerts)
441+ // ret = await this[kRiskyReify](...args)
442+ // await this.loadActual()
443+ // await this.buildIdealTree()
444+ // needInfoOn = getPackagesToQueryFromDiff(this.diff, {
445+ // includeUnchanged: true
446+ // })
447+ // alerts = (
448+ // await getPackagesAlerts(needInfoOn, {
449+ // includeExisting: true,
450+ // includeUnfixable: true
451+ // })
452+ // ).filter(({ key }) => {
453+ // const unseen = !prev.has(key)
454+ // if (unseen) {
455+ // prev.add(key)
456+ // }
457+ // return unseen
458+ // })
459+ // }
460+ // /* eslint-enable no-await-in-loop */
461+ // return ret!
465462}
0 commit comments