Skip to content

Commit e71b000

Browse files
authoredMar 17, 2025··
fix(es/types): Add missing types for jsc.transform.react.refresh (#10206)
**Description:** The `jsc.transform.react.refresh` option only accepts a `boolean`. However, the core implementation also supports an object (RefreshOptions) <img width="386" alt="image" src="https://github.com/user-attachments/assets/bc0b01b7-c352-4572-85ba-a9616f546bda" /> This PR adds the missing types for `RefreshOptions` ```rs // https://github.com/swc-project/swc/blob/c5f1cbe46762b9b9fa1cc27495675ae32e30c9ed/crates/swc_ecma_transforms_react/src/refresh/options.rs#L3-L13 #[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)] #[serde(rename_all = "camelCase")] #[serde(deny_unknown_fields)] pub struct RefreshOptions { #[serde(default = "default_refresh_reg")] pub refresh_reg: Atom, #[serde(default = "default_refresh_sig")] pub refresh_sig: Atom, #[serde(default = "default_emit_full_signatures")] pub emit_full_signatures: bool, } ``` **Preview** <img width="1149" alt="image" src="https://github.com/user-attachments/assets/7a74c2c5-41c7-40cf-a8a3-6d71c67e7edb" /> <details> <summary>.swcrc</summary> <img width="761" alt="image" src="https://github.com/user-attachments/assets/9301475b-ecbf-484d-9334-9fc694562bfd" /> </details> SWC Playground: [Link](https://play.swc.rs/?version=1.11.9&code=H4sIAAAAAAAAAz2LwQrCMBBE7%2FmK9ZQUin5Aai8i%2BA%2FiQdKNBNJdSTcqlP67aSzOYRjezITxyUlghjzh2Xt0Agv4xCPohHcn2iqFn7rxmZwEJjhxORGSmAZmBUX%2Fsyno2G90lWOaOOI%2B8sPo30Y3ttZLC9fblqsllJwIuiG8%2BgvGyC28OcVh1x1WZNWivme2n8avAAAA&config=H4sIAAAAAAAAA41Sy07DMBC89ysiq8eqNzhwRUJwgEPhB5Z0kxr80u4GNary79hJ7CYVBy6OPTOeice%2BbKpKfXGtHqpLnMZFAGKkso4I907gHBElfUCuSQdRu8wKJ0qowwIdewdW1y82eJIVOUwfJUAtJkoh381eynjPGLEGDM969Y0YHg0wv4FFXnkpPAuSA%2FOMJiDdkFY73fTLY9TeBkLmdUKSgmtNCV7%2FJ4HjxpNdGhFCLQsgnRh%2F0Phg0clNGaO%2Bibmn1Y4rfMA29dAa%2Fwnm46R5vx0DDhO93UcdZuHuD4N3%2FU%2BDJFwZoNXy1BkTCQfSUSm4iIasHzZ5HCFl%2FbEbO5tfTXoZ03Xeq6so30HpW2l%2BzTvHoOEXHjshfIECAAA%3D)
1 parent c5f1cbe commit e71b000

File tree

3 files changed

+67
-3
lines changed

3 files changed

+67
-3
lines changed
 

‎bindings/binding_core_wasm/src/types.rs

+23-1
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,29 @@ export interface ReactConfig {
853853
/**
854854
* Enable fast refresh feature for React app
855855
*/
856-
refresh?: boolean;
856+
refresh?:
857+
refresh?:
858+
| boolean
859+
| {
860+
/**
861+
* Identifier for the `react-refresh` register function.
862+
*
863+
* Defaults to `$RefreshReg$`
864+
*/
865+
refreshReg?: string;
866+
/**
867+
* Identifier for the `react-refresh` signature function.
868+
*
869+
* Defaults to `$RefreshSig$`
870+
*/
871+
refreshSig?: string;
872+
/**
873+
* Flag to emit full signatures.
874+
*
875+
* Defaults to `false`
876+
*/
877+
emitFullSignatures?: boolean;
878+
};
857879
858880
/**
859881
* jsx runtime

‎bindings/binding_minifier_wasm/src/types.rs

+22-1
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,28 @@ export interface ReactConfig {
854854
/**
855855
* Enable fast refresh feature for React app
856856
*/
857-
refresh?: boolean;
857+
refresh?:
858+
| boolean
859+
| {
860+
/**
861+
* Identifier for the `react-refresh` register function.
862+
*
863+
* Defaults to `$RefreshReg$`
864+
*/
865+
refreshReg?: string;
866+
/**
867+
* Identifier for the `react-refresh` signature function.
868+
*
869+
* Defaults to `$RefreshSig$`
870+
*/
871+
refreshSig?: string;
872+
/**
873+
* Flag to emit full signatures.
874+
*
875+
* Defaults to `false`
876+
*/
877+
emitFullSignatures?: boolean;
878+
};
858879
859880
/**
860881
* jsx runtime

‎packages/types/index.ts

+22-1
Original file line numberDiff line numberDiff line change
@@ -909,7 +909,28 @@ export interface ReactConfig {
909909
/**
910910
* Enable fast refresh feature for React app
911911
*/
912-
refresh?: boolean;
912+
refresh?:
913+
| boolean
914+
| {
915+
/**
916+
* Identifier for the `react-refresh` register function.
917+
*
918+
* Defaults to `$RefreshReg$`
919+
*/
920+
refreshReg?: string;
921+
/**
922+
* Identifier for the `react-refresh` signature function.
923+
*
924+
* Defaults to `$RefreshSig$`
925+
*/
926+
refreshSig?: string;
927+
/**
928+
* Flag to emit full signatures.
929+
*
930+
* Defaults to `false`
931+
*/
932+
emitFullSignatures?: boolean;
933+
};
913934

914935
/**
915936
* jsx runtime

0 commit comments

Comments
 (0)
Please sign in to comment.