@@ -4,8 +4,6 @@ use serde::Deserialize;
44use std:: fs;
55use std:: path:: { Path , PathBuf } ;
66
7- pub static DEFAULT_SUFFIX : & str = ".mjs" ;
8-
97#[ derive( Deserialize , Debug , Clone ) ]
108#[ serde( untagged) ]
119pub enum OneOrMore < T > {
@@ -83,6 +81,7 @@ pub struct PackageSpec {
8381 pub module : String ,
8482 #[ serde( rename = "in-source" ) ]
8583 pub in_source : bool ,
84+ pub suffix : Option < String > ,
8685}
8786
8887#[ derive( Deserialize , Debug , Clone ) ]
@@ -342,4 +341,29 @@ impl Config {
342341 vec ! [ ]
343342 }
344343 }
344+
345+ pub fn get_module ( & self ) -> String {
346+ match & self . package_specs {
347+ Some ( OneOrMore :: Single ( PackageSpec { module, .. } ) ) => module. to_string ( ) ,
348+ Some ( OneOrMore :: Multiple ( vec) ) => match vec. first ( ) {
349+ Some ( PackageSpec { module, .. } ) => module. to_string ( ) ,
350+ None => "commonjs" . to_string ( ) ,
351+ } ,
352+ _ => "commonjs" . to_string ( ) ,
353+ }
354+ }
355+
356+ pub fn get_suffix ( & self ) -> String {
357+ match & self . package_specs {
358+ Some ( OneOrMore :: Single ( PackageSpec { suffix, .. } ) ) => suffix. to_owned ( ) ,
359+ Some ( OneOrMore :: Multiple ( vec) ) => match vec. first ( ) {
360+ Some ( PackageSpec { suffix, .. } ) => suffix. to_owned ( ) ,
361+ None => None ,
362+ } ,
363+
364+ _ => None ,
365+ }
366+ . or ( self . suffix . to_owned ( ) )
367+ . unwrap_or ( ".js" . to_string ( ) )
368+ }
345369}
0 commit comments