1- #![ expect( clippy:: needless_pass_by_value, clippy :: missing_errors_doc ) ]
1+ #![ expect( clippy:: needless_pass_by_value) ]
22
33#[ cfg( all(
44 feature = "allocator" ,
@@ -16,31 +16,52 @@ use napi_derive::napi;
1616
1717use oxc_allocator:: Allocator ;
1818use oxc_codegen:: { Codegen , CodegenOptions } ;
19+ use oxc_diagnostics:: OxcDiagnostic ;
1920use oxc_minifier:: Minifier ;
21+ use oxc_napi:: OxcError ;
2022use oxc_parser:: Parser ;
23+ use oxc_sourcemap:: napi:: SourceMap ;
2124use oxc_span:: SourceType ;
2225
23- use crate :: options:: { MinifyOptions , MinifyResult } ;
26+ use crate :: options:: MinifyOptions ;
27+
28+ #[ derive( Default ) ]
29+ #[ napi( object) ]
30+ pub struct MinifyResult {
31+ pub code : String ,
32+ pub map : Option < SourceMap > ,
33+ pub errors : Vec < OxcError > ,
34+ }
2435
2536/// Minify synchronously.
2637#[ napi]
2738pub fn minify (
2839 filename : String ,
2940 source_text : String ,
3041 options : Option < MinifyOptions > ,
31- ) -> napi :: Result < MinifyResult > {
42+ ) -> MinifyResult {
3243 let options = options. unwrap_or_default ( ) ;
3344
3445 let minifier_options = match oxc_minifier:: MinifierOptions :: try_from ( & options) {
3546 Ok ( options) => options,
36- Err ( error) => return Err ( napi:: Error :: from_reason ( & error) ) ,
47+ Err ( error) => {
48+ return MinifyResult {
49+ errors : OxcError :: from_diagnostics (
50+ & filename,
51+ & source_text,
52+ vec ! [ OxcDiagnostic :: error( error) ] ,
53+ ) ,
54+ ..MinifyResult :: default ( )
55+ } ;
56+ }
3757 } ;
3858
3959 let allocator = Allocator :: default ( ) ;
4060
4161 let source_type = SourceType :: from_path ( & filename) . unwrap_or_default ( ) ;
4262
43- let mut program = Parser :: new ( & allocator, & source_text, source_type) . parse ( ) . program ;
63+ let parser_ret = Parser :: new ( & allocator, & source_text, source_type) . parse ( ) ;
64+ let mut program = parser_ret. program ;
4465
4566 let scoping = Minifier :: new ( minifier_options) . build ( & allocator, & mut program) . scoping ;
4667
@@ -52,10 +73,14 @@ pub fn minify(
5273 } ;
5374
5475 if options. sourcemap == Some ( true ) {
55- codegen_options. source_map_path = Some ( PathBuf :: from ( filename) ) ;
76+ codegen_options. source_map_path = Some ( PathBuf :: from ( & filename) ) ;
5677 }
5778
5879 let ret = Codegen :: new ( ) . with_options ( codegen_options) . with_scoping ( scoping) . build ( & program) ;
5980
60- Ok ( MinifyResult { code : ret. code , map : ret. map . map ( oxc_sourcemap:: napi:: SourceMap :: from) } )
81+ MinifyResult {
82+ code : ret. code ,
83+ map : ret. map . map ( oxc_sourcemap:: napi:: SourceMap :: from) ,
84+ errors : OxcError :: from_diagnostics ( & filename, & source_text, parser_ret. errors ) ,
85+ }
6186}
0 commit comments