Skip to content

Commit 14686a4

Browse files
authored
fix(napi/minify): handle boolean values for compress.unused option (#14513)
fixes #14512 Fixes the `compress.unused` option implemented in PR #11796 to properly accept boolean values from the napi binding.
1 parent e7c2748 commit 14686a4

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

napi/minify/index.d.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,12 @@ export interface CompressOptions {
3838
*/
3939
dropDebugger?: boolean
4040
/**
41-
* Drop unreferenced functions and variables.
41+
* Pass `true` to drop unreferenced functions and variables.
4242
*
43-
* Simple direct variable assignments do not count as references unless set to "keep_assign".
43+
* Simple direct variable assignments do not count as references unless set to `keep_assign`.
44+
* @default true
4445
*/
45-
unused?: true | false | 'keep_assign'
46+
unused?: boolean | 'keep_assign'
4647
/** Keep function / class names. */
4748
keepNames?: CompressOptionsKeepNames
4849
/**

napi/minify/src/options.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@ pub struct CompressOptions {
3030
/// @default true
3131
pub drop_debugger: Option<bool>,
3232

33-
/// Drop unreferenced functions and variables.
33+
/// Pass `true` to drop unreferenced functions and variables.
3434
///
35-
/// Simple direct variable assignments do not count as references unless set to "keep_assign".
36-
#[napi(ts_type = "true | false | 'keep_assign'")]
37-
pub unused: Option<String>,
35+
/// Simple direct variable assignments do not count as references unless set to `keep_assign`.
36+
/// @default true
37+
#[napi(ts_type = "boolean | 'keep_assign'")]
38+
pub unused: Option<Either<bool, String>>,
3839

3940
/// Keep function / class names.
4041
pub keep_names: Option<CompressOptionsKeepNames>,
@@ -69,8 +70,15 @@ impl TryFrom<&CompressOptions> for oxc_minifier::CompressOptions {
6970
drop_debugger: o.drop_debugger.unwrap_or(default.drop_debugger),
7071
join_vars: o.join_vars.unwrap_or(true),
7172
sequences: o.sequences.unwrap_or(true),
72-
// TODO
73-
unused: oxc_minifier::CompressOptionsUnused::Keep,
73+
unused: match &o.unused {
74+
Some(Either::A(true)) => oxc_minifier::CompressOptionsUnused::Remove,
75+
Some(Either::A(false)) => oxc_minifier::CompressOptionsUnused::Keep,
76+
Some(Either::B(s)) => match s.as_str() {
77+
"keep_assign" => oxc_minifier::CompressOptionsUnused::KeepAssign,
78+
_ => return Err(format!("Invalid unused option: `{s}`.")),
79+
},
80+
None => default.unused,
81+
},
7482
keep_names: o.keep_names.as_ref().map(Into::into).unwrap_or_default(),
7583
treeshake: TreeShakeOptions::default(),
7684
max_iterations: o.passes,

0 commit comments

Comments
 (0)