Skip to content

Commit 39eb326

Browse files
fix: normalize Trans prop in options (#219)
1 parent 7a88205 commit 39eb326

4 files changed

Lines changed: 49 additions & 21 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ When using SWC directly via CLI or a JSON-only configuration, pass options manua
110110
{
111111
"runtimeModules": {
112112
"i18n": ["@lingui/core", "i18n"],
113-
"trans": ["@lingui/react", "Trans"],
113+
"Trans": ["@lingui/react", "Trans"],
114114
"useLingui": ["@lingui/react", "useLingui"]
115115
},
116116
"descriptorFields": "auto",

e2e/options.test.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ describe("linguiMacroSwcPlugin", () => {
2121
"a": "link",
2222
},
2323
"runtimeModules": {
24+
"Trans": [
25+
"@acme/react",
26+
"Trans",
27+
],
2428
"i18n": [
2529
"@acme/core",
2630
"i18n",
2731
],
28-
"trans": [
29-
"@acme/react",
30-
"Trans",
31-
],
3232
"useLingui": [
3333
"@acme/react",
3434
"useLingui",
@@ -44,8 +44,7 @@ describe("linguiMacroSwcPlugin", () => {
4444

4545
it("maps shared options from an explicit config path", () => {
4646
expect(linguiMacroSwcPlugin({}, {configPath: resolve(fixturesDir, "custom.config.js")})).toMatchInlineSnapshot(
47-
48-
`
47+
`
4948
[
5049
"@lingui/swc-plugin",
5150
{
@@ -55,14 +54,14 @@ describe("linguiMacroSwcPlugin", () => {
5554
"strong": "bold",
5655
},
5756
"runtimeModules": {
57+
"Trans": [
58+
"@custom/react",
59+
"CustomTrans",
60+
],
5861
"i18n": [
5962
"@custom/core",
6063
"customI18n",
6164
],
62-
"trans": [
63-
"@custom/react",
64-
"CustomTrans",
65-
],
6665
"useLingui": [
6766
"@custom/react",
6867
"useCustomLingui",
@@ -79,7 +78,7 @@ describe("linguiMacroSwcPlugin", () => {
7978
{
8079
jsxPlaceholderAttribute: "data-test",
8180
runtimeModules: {
82-
trans: ["@override/react", "OverrideTrans"],
81+
Trans: ["@override/react", "OverrideTrans"],
8382
},
8483
},
8584
{configPath: resolve(fixturesDir, "custom.config.js")},
@@ -94,14 +93,14 @@ describe("linguiMacroSwcPlugin", () => {
9493
"strong": "bold",
9594
},
9695
"runtimeModules": {
96+
"Trans": [
97+
"@override/react",
98+
"OverrideTrans",
99+
],
97100
"i18n": [
98101
"@custom/core",
99102
"customI18n",
100103
],
101-
"trans": [
102-
"@override/react",
103-
"OverrideTrans",
104-
],
105104
"useLingui": [
106105
"@custom/react",
107106
"useCustomLingui",

src-js/options.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export type LinguiMacroOptions = {
1111
/** Overrides the runtime imports used by the plugin. Unlike the Babel macro configuration, must be passed as an object. */
1212
runtimeModules: {
1313
i18n: RuntimeModuleConfig
14-
trans: RuntimeModuleConfig
14+
Trans: RuntimeModuleConfig
1515
useLingui: RuntimeModuleConfig
1616
}
1717
/**
@@ -74,16 +74,13 @@ export function linguiMacroSwcPlugin(overrides?: DeepPartial<LinguiMacroOptions>
7474
const config = getConfig(
7575
configOptions,
7676
)
77-
const {i18n, Trans, useLingui} = config.runtimeConfigModule
7877

7978
const macroOptions: LinguiMacroOptions = {
8079
jsxPlaceholderAttribute: config.macro.jsxPlaceholderAttribute,
8180
jsxPlaceholderDefaults: config.macro.jsxPlaceholderDefaults,
8281
...overrides,
8382
runtimeModules: {
84-
i18n,
85-
trans: Trans,
86-
useLingui,
83+
...config.runtimeConfigModule,
8784
...overrides?.runtimeModules,
8885
},
8986
} satisfies LinguiMacroOptions

src/options.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ struct RuntimeModulesConfig(String, #[serde(default)] Option<String>);
5252
#[serde(rename_all = "camelCase")]
5353
pub struct RuntimeModulesConfigMap {
5454
i18n: Option<RuntimeModulesConfig>,
55+
#[serde(alias = "Trans")]
5556
trans: Option<RuntimeModulesConfig>,
5657
use_lingui: Option<RuntimeModulesConfig>,
5758
}
@@ -206,6 +207,37 @@ mod lib_tests {
206207
)
207208
}
208209

210+
#[test]
211+
fn test_config_capital_trans() {
212+
let config = serde_json::from_str::<LinguiJsOptions>(
213+
r#"{
214+
"runtimeModules": {
215+
"Trans": ["@lingui/react", "Trans"]
216+
}
217+
}"#,
218+
)
219+
.expect("invalid config for lingui-plugin");
220+
221+
assert_eq!(
222+
config,
223+
LinguiJsOptions {
224+
runtime_modules: Some(RuntimeModulesConfigMap {
225+
i18n: None,
226+
trans: Some(RuntimeModulesConfig(
227+
"@lingui/react".into(),
228+
Some("Trans".into())
229+
)),
230+
use_lingui: None,
231+
}),
232+
descriptor_fields: None,
233+
use_lingui_v5_id_generation: None,
234+
id_prefix_leader: None,
235+
jsx_placeholder_attribute: None,
236+
jsx_placeholder_defaults: None,
237+
}
238+
)
239+
}
240+
209241
#[test]
210242
fn test_config_optional() {
211243
let config = serde_json::from_str::<LinguiJsOptions>(

0 commit comments

Comments
 (0)