@@ -2,6 +2,9 @@ use crate::package::npm_package::{EnginesType, PeerDependencyMeta};
2
2
use serde:: { Deserialize , Serialize } ;
3
3
use std:: collections:: HashMap ;
4
4
use std:: fmt:: { Display , Formatter } ;
5
+ use std:: path:: PathBuf ;
6
+ use crate :: cache:: { RegistryKey , DEP_CACHE_FOLDER } ;
7
+ use crate :: fs:: get_config_dir;
5
8
use crate :: package:: BinType ;
6
9
7
10
#[ derive( Clone , Default , Debug ) ]
@@ -17,9 +20,29 @@ pub struct PackageMetaRecorder {
17
20
pub os : Option < Vec < String > > ,
18
21
pub dependencies : Option < HashMap < String , String > > ,
19
22
pub resolved_dependencies : Option < HashMap < String , String > > ,
20
- pub bin : Option < BinType >
23
+ pub bin : Option < BinType > ,
24
+ pub depth_traces : Option < Vec < Vec < RegistryKey > > > ,
25
+ pub resolved_binaries : Option < Vec < ResolvedBinary > > ,
26
+ // This involves transitive dependencies
27
+ pub resolved_peer_dependencies : Option < HashMap < String , String > > ,
21
28
}
22
29
30
+ #[ derive( Clone , Default , Debug , Serialize , Deserialize ) ]
31
+ pub struct ResolvedBinary {
32
+ pub name : String ,
33
+ pub path : String ,
34
+ pub package_name : String ,
35
+ }
36
+
37
+ impl PackageMetaRecorder {
38
+ pub fn resolve_path_to_package ( & self ) -> PathBuf {
39
+ get_config_dir ( DEP_CACHE_FOLDER . clone ( ) )
40
+ . join ( format ! ( "{}-{}" , self . name, self . version) )
41
+ . join ( "package" )
42
+ }
43
+ }
44
+
45
+
23
46
impl Display for PackageMetaRecorder {
24
47
fn fmt ( & self , f : & mut Formatter < ' _ > ) -> std:: fmt:: Result {
25
48
write ! ( f, "{}@{}" , self . name, self . version)
@@ -38,7 +61,10 @@ impl From<PackageMetaRecorder> for PackageMetaHandler {
38
61
peer_dependencies_meta : val. peer_dependencies_meta ,
39
62
dependencies : val. dependencies ,
40
63
resolved_dependencies : val. resolved_dependencies ,
41
- bin : val. bin
64
+ bin : val. bin ,
65
+ depth_traces : val. depth_traces ,
66
+ resolved_binaries : val. resolved_binaries ,
67
+ resolved_peer_dependencies : val. resolved_peer_dependencies
42
68
}
43
69
}
44
70
}
@@ -62,11 +88,16 @@ pub struct PackageMetaHandler {
62
88
pub os : Option < Vec < String > > ,
63
89
#[ serde( skip_serializing_if = "Option::is_none" ) ]
64
90
pub dependencies : Option < HashMap < String , String > > ,
65
- #[ serde( skip_serializing_if = "Option::is_none" ) ]
91
+ #[ serde( skip_serializing ) ]
66
92
pub resolved_dependencies : Option < HashMap < String , String > > ,
93
+ #[ serde( skip_serializing) ]
94
+ pub resolved_peer_dependencies : Option < HashMap < String , String > > ,
67
95
#[ serde( skip_serializing_if = "Option::is_none" ) ]
68
- pub bin : Option < BinType >
69
-
96
+ pub bin : Option < BinType > ,
97
+ #[ serde( skip_serializing) ]
98
+ pub resolved_binaries : Option < Vec < ResolvedBinary > > ,
99
+ #[ serde( skip_serializing) ]
100
+ pub depth_traces : Option < Vec < Vec < RegistryKey > > >
70
101
}
71
102
72
103
#[ derive( Clone , Default , Debug , Deserialize , Serialize ) ]
@@ -76,6 +107,6 @@ pub struct PackageResolution {
76
107
77
108
#[ derive( Clone , Default , Debug ) ]
78
109
pub struct PackageRecorder {
79
- pub main_packages : Vec < PackageMetaRecorder > ,
80
- pub sub_dependencies : Vec < PackageMetaRecorder > ,
110
+ pub main_packages : HashMap < RegistryKey , PackageMetaRecorder > ,
111
+ pub sub_dependencies : HashMap < RegistryKey , PackageMetaRecorder > ,
81
112
}
0 commit comments