Skip to content

Commit

Permalink
feat(napi/transform): make react refresh option take a boolean (#6146)
Browse files Browse the repository at this point in the history
  • Loading branch information
Boshen committed Sep 28, 2024
1 parent bfd1988 commit f50fdcd
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
10 changes: 8 additions & 2 deletions napi/transform/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,14 @@ export interface ReactBindingOptions {
* @default false
*/
useSpread?: boolean
/** Enable react fast refresh transform */
refresh?: ReactRefreshBindingOptions
/**
* Enable React Fast Refresh .
*
* Conforms to the implementation in {@link https://github.com/facebook/react/tree/main/packages/react-refresh}
*
* @default false
*/
refresh?: boolean | ReactRefreshBindingOptions
}

export interface ReactRefreshBindingOptions {
Expand Down
13 changes: 10 additions & 3 deletions napi/transform/src/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,12 @@ pub struct ReactBindingOptions {
/// @default false
pub use_spread: Option<bool>,

/// Enable react fast refresh transform
pub refresh: Option<ReactRefreshBindingOptions>,
/// Enable React Fast Refresh .
///
/// Conforms to the implementation in {@link https://github.com/facebook/react/tree/main/packages/react-refresh}
///
/// @default false
pub refresh: Option<Either<bool, ReactRefreshBindingOptions>>,
}

impl From<ReactBindingOptions> for ReactOptions {
Expand All @@ -167,7 +171,10 @@ impl From<ReactBindingOptions> for ReactOptions {
pragma_frag: options.pragma_frag,
use_built_ins: options.use_built_ins,
use_spread: options.use_spread,
refresh: options.refresh.map(Into::into),
refresh: options.refresh.and_then(|value| match value {
Either::A(b) => b.then(ReactRefreshOptions::default),
Either::B(options) => Some(ReactRefreshOptions::from(options)),
}),
..Default::default()
}
}
Expand Down

0 comments on commit f50fdcd

Please sign in to comment.