Skip to content

Commit cee63c4

Browse files
author
Sergio Moreno
committed
fix: remoteLoader parse complex structures failed #1087
1 parent ca4978f commit cee63c4

4 files changed

Lines changed: 34 additions & 4 deletions

File tree

packages/remote-loader/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
"esm/"
3939
],
4040
"dependencies": {
41+
"json5": "^2.2.0",
4142
"@babel/generator": "^7.14.5",
4243
"@babel/types": "^7.14.5",
4344
"messageformat-parser": "^4.1.3",

packages/remote-loader/src/browserCompiler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as R from "ramda"
22
import * as t from "@babel/types"
3+
import JSON5 from "json5"
34
import generate from "@babel/generator"
45
import { parse } from "messageformat-parser"
56

@@ -11,14 +12,14 @@ export function createBrowserCompiledCatalog(messages: Record<string, any>) {
1112
})
1213

1314
const ast = t.objectExpression(compiledMessages)
14-
const code = generate(ast as any, {
15+
const code = generate(ast as any, {
1516
minified: true,
1617
jsescOption: {
1718
minimal: true,
1819
}
1920
}).code
2021

21-
return JSON.parse(code)
22+
return JSON5.parse(code)
2223
}
2324

2425
/**

packages/remote-loader/test/index.test.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,19 @@ describe("remote-loader", () => {
55
it("should compile correctly JSON messages coming from the fly", async () => {
66
const unlink = createConfig("minimal")
77
const messages = await simulatedJsonResponse()
8-
const remoteMessages = remoteLoader({ format: "minimal", messages})
8+
const remoteMessages = remoteLoader({ format: "minimal", messages })
99
expect(remoteMessages).toMatchInlineSnapshot(`
1010
Object {
11+
customKey: Array [
12+
Array [
13+
someVariable,
14+
select,
15+
Object {
16+
other: SomeOtherText,
17+
someVarValue: SomeTextHere,
18+
},
19+
],
20+
],
1121
property.key: value,
1222
{0} Deposited: Array [
1323
Array [
@@ -36,6 +46,16 @@ describe("remote-loader", () => {
3646
expect(remoteLoader({ format: "minimal", messages, fallbackMessages }))
3747
.toMatchInlineSnapshot(`
3848
Object {
49+
customKey: Array [
50+
Array [
51+
someVariable,
52+
select,
53+
Object {
54+
other: SomeOtherText,
55+
someVarValue: SomeTextHere,
56+
},
57+
],
58+
],
3959
property.key: value,
4060
{0} Deposited: Array [
4161
Array [
@@ -62,11 +82,12 @@ function simulatedJsonResponse(nully?: boolean) {
6282
"property.key": nully ? "" : "value",
6383
"{0} Deposited": "{0} Deposited",
6484
"{0} Strategy": "{0} Strategy",
85+
customKey:
86+
"{someVariable, select, someVarValue {SomeTextHere} other {SomeOtherText}}",
6587
})
6688
})
6789
}
6890

69-
7091
function createConfig(format: string) {
7192
const filename = `${process.cwd()}/.linguirc`
7293
const config = `

yarn.lock

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8521,6 +8521,13 @@ json5@^1.0.1:
85218521
dependencies:
85228522
minimist "^1.2.0"
85238523

8524+
json5@^2.2.0:
8525+
version "2.2.0"
8526+
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
8527+
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
8528+
dependencies:
8529+
minimist "^1.2.5"
8530+
85248531
jsonfile@^4.0.0:
85258532
version "4.0.0"
85268533
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"

0 commit comments

Comments
 (0)