11use napi:: bindgen_prelude:: External ;
22use napi_derive:: napi;
3- use nodejs_resolver:: { AliasMap , Resolver , ResolverOptions } ;
3+ use nodejs_resolver:: { AliasMap , Resolver , ResolverOptions , ResolverUnsafeCache } ;
44use serde:: Deserialize ;
5- use std:: path:: { Path , PathBuf } ;
5+ use std:: {
6+ path:: { Path , PathBuf } ,
7+ sync:: Arc ,
8+ } ;
69
710#[ derive( Debug , Clone , Deserialize ) ]
811#[ serde( rename_all = "camelCase" ) ]
@@ -32,7 +35,7 @@ pub struct RawResolverOptions {
3235}
3336
3437impl RawResolverOptions {
35- pub fn normalized ( & self ) -> ResolverOptions {
38+ pub fn normalized ( & self , unsafe_cache : Option < Arc < ResolverUnsafeCache > > ) -> ResolverOptions {
3639 let default = ResolverOptions :: default ( ) ;
3740 ResolverOptions {
3841 enforce_extension : self . enforce_extension . to_owned ( ) ,
@@ -51,11 +54,12 @@ impl RawResolverOptions {
5154 main_files : self . main_files . to_owned ( ) . unwrap_or ( default. main_files ) ,
5255 main_fields : self . main_fields . to_owned ( ) . unwrap_or ( default. main_fields ) ,
5356 prefer_relative : self . prefer_relative . unwrap_or ( default. prefer_relative ) ,
54- enable_unsafe_cache : self
57+ disable_unsafe_cache : self
5558 . enable_unsafe_cache
5659 . to_owned ( )
57- . unwrap_or ( default. enable_unsafe_cache ) ,
60+ . unwrap_or ( default. disable_unsafe_cache ) ,
5861 tsconfig : self . tsconfig_path . to_owned ( ) . map ( PathBuf :: from) ,
62+ unsafe_cache,
5963 }
6064 }
6165}
@@ -77,7 +81,17 @@ pub struct ResolverInternal {}
7781
7882#[ napi( ts_return_type = "ExternalObject<ResolverInternal>" ) ]
7983pub 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 ( ) ) ;
8195 let resolver = Resolver :: new ( options) ;
8296 Ok ( External :: new ( resolver) )
8397}
0 commit comments