1
1
import constants from '../../../../constants'
2
2
3
3
import type { SafeNode } from '../node'
4
- import type { Diff } from '@npmcli/arborist'
4
+ import type { Diff as BaseDiff } from '@npmcli/arborist'
5
+
6
+ export type SafeDiff = Omit <
7
+ BaseDiff ,
8
+ | 'actual'
9
+ | 'children'
10
+ | 'filterSet'
11
+ | 'ideal'
12
+ | 'leaves'
13
+ | 'removed'
14
+ | 'shrinkwrapInflated'
15
+ | 'unchanged'
16
+ > & {
17
+ actual : SafeNode
18
+ children : SafeDiff [ ]
19
+ filterSet : Set < SafeNode >
20
+ ideal : SafeNode
21
+ leaves : SafeNode [ ]
22
+ parent : SafeDiff | null
23
+ removed : SafeNode [ ]
24
+ shrinkwrapInflated : Set < SafeNode >
25
+ unchanged : SafeNode [ ]
26
+ }
5
27
6
28
const { LOOP_SENTINEL , NPM_REGISTRY_URL , SOCKET_CLI_FIX_PACKAGE_LOCK_FILE } =
7
29
constants
@@ -14,9 +36,9 @@ function getUrlOrigin(input: string): string {
14
36
}
15
37
16
38
export type PackageDetail = {
17
- pkgid : SafeNode [ 'pkgid' ]
39
+ node : SafeNode
18
40
origin : string
19
- existing ?: SafeNode [ 'pkgid' ] | undefined
41
+ existing ?: SafeNode | undefined
20
42
}
21
43
22
44
type GetPackagesToQueryFromDiffOptions = {
@@ -25,7 +47,7 @@ type GetPackagesToQueryFromDiffOptions = {
25
47
}
26
48
27
49
export function getPackagesToQueryFromDiff (
28
- diff_ : Diff | null ,
50
+ diff_ : SafeDiff | null ,
29
51
options ?: GetPackagesToQueryFromDiffOptions
30
52
) : PackageDetail [ ] {
31
53
const {
@@ -41,7 +63,7 @@ export function getPackagesToQueryFromDiff(
41
63
if ( ! diff_ ) {
42
64
return details
43
65
}
44
- const queue : Diff [ ] = [ ...diff_ . children ]
66
+ const queue : SafeDiff [ ] = [ ...diff_ . children ]
45
67
let pos = 0
46
68
let { length : queueLength } = queue
47
69
while ( pos < queueLength ) {
@@ -56,7 +78,7 @@ export function getPackagesToQueryFromDiff(
56
78
// The `oldNode`, i.e. the `actual` node, will be `undefined` if the diff
57
79
// action is 'ADD'.
58
80
const { actual : oldNode , ideal : pkgNode } = diff
59
- let existing
81
+ let existing : SafeNode | undefined
60
82
let keep = false
61
83
if ( action === 'CHANGE' ) {
62
84
if ( pkgNode ?. package . version !== oldNode ?. package . version ) {
@@ -65,7 +87,7 @@ export function getPackagesToQueryFromDiff(
65
87
oldNode ?. package . name &&
66
88
oldNode . package . name === pkgNode ?. package . name
67
89
) {
68
- existing = oldNode . pkgid
90
+ existing = oldNode
69
91
}
70
92
} else {
71
93
// TODO: Add proper debug mode.
@@ -78,7 +100,7 @@ export function getPackagesToQueryFromDiff(
78
100
const origin = getUrlOrigin ( pkgNode . resolved )
79
101
if ( includeUnknownOrigin || origin === NPM_REGISTRY_URL ) {
80
102
details . push ( {
81
- pkgid : pkgNode . pkgid ,
103
+ node : pkgNode ,
82
104
origin,
83
105
existing
84
106
} )
@@ -95,11 +117,10 @@ export function getPackagesToQueryFromDiff(
95
117
const pkgNode = unchanged [ i ] !
96
118
const origin = getUrlOrigin ( pkgNode . resolved ! )
97
119
if ( includeUnknownOrigin || origin === NPM_REGISTRY_URL ) {
98
- const { pkgid } = pkgNode
99
120
details . push ( {
100
- pkgid ,
121
+ node : pkgNode ,
101
122
origin,
102
- existing : pkgid
123
+ existing : pkgNode
103
124
} )
104
125
}
105
126
}
0 commit comments