Skip to content
This repository was archived by the owner on May 4, 2020. It is now read-only.

Commit 643f8e5

Browse files
author
Long Ho
committed
fix(babel-plugin-react-intl): add back messages to metadata, fixes #92
1 parent 1dc8b1c commit 643f8e5

File tree

3 files changed

+77
-6
lines changed

3 files changed

+77
-6
lines changed

packages/babel-plugin-react-intl/src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ export default declare((api: any) => {
340340
}
341341
},
342342

343-
post() {
343+
post(state) {
344344
const {
345345
file: {
346346
opts: { filename }
@@ -350,6 +350,7 @@ export default declare((api: any) => {
350350
const basename = p.basename(filename, p.extname(filename));
351351
const { ReactIntlMessages: messages } = this;
352352
const descriptors = Array.from(messages.values());
353+
state.metadata['react-intl'] = { messages: descriptors };
353354

354355
if (messagesDir && descriptors.length > 0) {
355356
// Make sure the relative path is "absolute" before

packages/babel-plugin-react-intl/test/__snapshots__/index.test.ts.snap

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`emit asserts for: output match: FormattedHTMLMessage 1`] = `
4+
Object {
5+
"messages": Array [
6+
Object {
7+
"defaultMessage": "<h1>Hello World!</h1>",
8+
"description": "The default message.",
9+
"id": "foo.bar.baz",
10+
},
11+
],
12+
}
13+
`;
14+
15+
exports[`emit asserts for: output match: FormattedHTMLMessage 2`] = `
416
"\\"use strict\\";
517
618
Object.defineProperty(exports, \\"__esModule\\", {
@@ -28,6 +40,18 @@ exports.default = Foo;"
2840
`;
2941

3042
exports[`emit asserts for: output match: FormattedMessage 1`] = `
43+
Object {
44+
"messages": Array [
45+
Object {
46+
"defaultMessage": "Hello World!",
47+
"description": "The default message.",
48+
"id": "foo.bar.baz",
49+
},
50+
],
51+
}
52+
`;
53+
54+
exports[`emit asserts for: output match: FormattedMessage 2`] = `
3155
"\\"use strict\\";
3256
3357
Object.defineProperty(exports, \\"__esModule\\", {
@@ -55,6 +79,23 @@ exports.default = Foo;"
5579
`;
5680

5781
exports[`emit asserts for: output match: defineMessages 1`] = `
82+
Object {
83+
"messages": Array [
84+
Object {
85+
"defaultMessage": "Hello World!",
86+
"description": "The default message",
87+
"id": "foo.bar.baz",
88+
},
89+
Object {
90+
"defaultMessage": "Hello Nurse!",
91+
"description": "Another message",
92+
"id": "foo.bar.biff",
93+
},
94+
],
95+
}
96+
`;
97+
98+
exports[`emit asserts for: output match: defineMessages 2`] = `
5899
"\\"use strict\\";
59100
60101
Object.defineProperty(exports, \\"__esModule\\", {
@@ -90,6 +131,21 @@ exports.default = Foo;"
90131
`;
91132

92133
exports[`emit asserts for: output match: descriptionsAsObjects 1`] = `
134+
Object {
135+
"messages": Array [
136+
Object {
137+
"defaultMessage": "Hello World!",
138+
"description": Object {
139+
"metadata": "Additional metadata content.",
140+
"text": "Something for the translator.",
141+
},
142+
"id": "foo.bar.baz",
143+
},
144+
],
145+
}
146+
`;
147+
148+
exports[`emit asserts for: output match: descriptionsAsObjects 2`] = `
93149
"\\"use strict\\";
94150
95151
Object.defineProperty(exports, \\"__esModule\\", {
@@ -117,6 +173,18 @@ exports.default = Foo;"
117173
`;
118174

119175
exports[`emit asserts for: output match: formatMessageCall 1`] = `
176+
Object {
177+
"messages": Array [
178+
Object {
179+
"defaultMessage": "bar",
180+
"description": "baz",
181+
"id": "foo",
182+
},
183+
],
184+
}
185+
`;
186+
187+
exports[`emit asserts for: output match: formatMessageCall 2`] = `
120188
"\\"use strict\\";
121189
122190
Object.defineProperty(exports, \\"__esModule\\", {

packages/babel-plugin-react-intl/test/index.test.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,10 @@ describe('emit asserts for: ', () => {
3636
const actualMessagesPath = path.join(fixtureDir, 'actual.json');
3737
if (fs.existsSync(actualMessagesPath)) fs.unlinkSync(actualMessagesPath);
3838

39-
const actual = transform(path.join(fixtureDir, 'actual.js'));
40-
39+
const { code: actual, metadata } = transform(
40+
path.join(fixtureDir, 'actual.js')
41+
)!;
42+
expect((metadata as any)['react-intl']).toMatchSnapshot();
4143
// Check code output
4244
expect(trim(actual)).toMatchSnapshot();
4345

@@ -61,7 +63,7 @@ describe('options', () => {
6163

6264
const actual = transform(path.join(fixtureDir, 'actual.js'), {
6365
removeDefaultMessage: true
64-
});
66+
})!.code;
6567

6668
// Check code output
6769
expect(trim(actual)).toMatchSnapshot();
@@ -97,7 +99,7 @@ describe('options', () => {
9799
) => {
98100
return `HELLO.${id}.${defaultMessage.length}.${typeof description}`;
99101
}
100-
});
102+
})!.code;
101103

102104
// Check code output
103105
expect(trim(actual)).toMatchSnapshot();
@@ -275,5 +277,5 @@ function transform(
275277
plugins: multiplePasses
276278
? [getPluginConfig(), getPluginConfig()]
277279
: [getPluginConfig()]
278-
})!.code;
280+
});
279281
}

0 commit comments

Comments
 (0)