1
1
use napi:: bindgen_prelude:: External ;
2
2
use napi_derive:: napi;
3
- use nodejs_resolver:: { AliasMap , Resolver , ResolverOptions } ;
3
+ use nodejs_resolver:: { AliasMap , Resolver , ResolverOptions , ResolverUnsafeCache } ;
4
4
use serde:: Deserialize ;
5
- use std:: path:: { Path , PathBuf } ;
5
+ use std:: {
6
+ path:: { Path , PathBuf } ,
7
+ sync:: Arc ,
8
+ } ;
6
9
7
10
#[ derive( Debug , Clone , Deserialize ) ]
8
11
#[ serde( rename_all = "camelCase" ) ]
@@ -32,7 +35,7 @@ pub struct RawResolverOptions {
32
35
}
33
36
34
37
impl RawResolverOptions {
35
- pub fn normalized ( & self ) -> ResolverOptions {
38
+ pub fn normalized ( & self , unsafe_cache : Option < Arc < ResolverUnsafeCache > > ) -> ResolverOptions {
36
39
let default = ResolverOptions :: default ( ) ;
37
40
ResolverOptions {
38
41
enforce_extension : self . enforce_extension . to_owned ( ) ,
@@ -51,11 +54,12 @@ impl RawResolverOptions {
51
54
main_files : self . main_files . to_owned ( ) . unwrap_or ( default. main_files ) ,
52
55
main_fields : self . main_fields . to_owned ( ) . unwrap_or ( default. main_fields ) ,
53
56
prefer_relative : self . prefer_relative . unwrap_or ( default. prefer_relative ) ,
54
- enable_unsafe_cache : self
57
+ disable_unsafe_cache : self
55
58
. enable_unsafe_cache
56
59
. to_owned ( )
57
- . unwrap_or ( default. enable_unsafe_cache ) ,
60
+ . unwrap_or ( default. disable_unsafe_cache ) ,
58
61
tsconfig : self . tsconfig_path . to_owned ( ) . map ( PathBuf :: from) ,
62
+ unsafe_cache,
59
63
}
60
64
}
61
65
}
@@ -77,7 +81,17 @@ pub struct ResolverInternal {}
77
81
78
82
#[ napi( ts_return_type = "ExternalObject<ResolverInternal>" ) ]
79
83
pub fn create ( options : RawResolverOptions ) -> Result < External < Resolver > , napi:: Error > {
80
- let options = options. normalized ( ) ;
84
+ let options = options. normalized ( None ) ;
85
+ let resolver = Resolver :: new ( options) ;
86
+ Ok ( External :: new ( resolver) )
87
+ }
88
+
89
+ #[ napi( ts_return_type = "ExternalObject<ResolverInternal>" ) ]
90
+ pub fn create_resolver_and_inherit_unsafe_cache_from_another (
91
+ options : RawResolverOptions ,
92
+ another : External < Resolver > ,
93
+ ) -> Result < External < Resolver > , napi:: Error > {
94
+ let options = options. normalized ( another. unsafe_cache . clone ( ) ) ;
81
95
let resolver = Resolver :: new ( options) ;
82
96
Ok ( External :: new ( resolver) )
83
97
}
0 commit comments