Skip to content

Commit ddca2c2

Browse files
committed
fix(@formatjs/cli-lib): handle parsing error during verification
1 parent 6671257 commit ddca2c2

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

packages/cli-lib/src/verify/checkStructuralEquality.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
parse,
55
} from '@formatjs/icu-messageformat-parser'
66
import {debug, writeStderr} from '../console_utils'
7+
import {error} from 'console'
78

89
/**
910
* Flatten nested obj into list of keys, delimited by `.`
@@ -38,26 +39,30 @@ export async function checkStructuralEquality(
3839
const enUSMessages = Object.entries(flatten(enUSContent)).reduce<
3940
Record<string, MessageFormatElement[]>
4041
>((all, [key, value]) => {
41-
all[key] = parse(value)
42+
try {
43+
all[key] = parse(value)
44+
} catch (e) {
45+
error('Error parsing message', key, value, e)
46+
}
4247
return all
4348
}, {})
4449
return Object.entries(translationFilesContents)
4550
.filter(([locale]) => locale !== sourceLocale)
4651
.reduce<boolean>((result, [locale, content]) => {
47-
const localeMessages = Object.entries(flatten(content)).reduce<
48-
Record<string, MessageFormatElement[]>
49-
>((all, [key, value]) => {
50-
all[key] = parse(value)
51-
return all
52-
}, {})
52+
const localeMessages = flatten(content)
5353

5454
const problematicKeys = Object.keys(enUSMessages).filter(k => {
5555
if (!localeMessages[k]) {
5656
return false
5757
}
5858
const enUSMessage = enUSMessages[k]
59-
const localeMessage = localeMessages[k]
60-
return !isStructurallySame(enUSMessage, localeMessage)
59+
try {
60+
const localeMessage = parse(localeMessages[k])
61+
return !isStructurallySame(enUSMessage, localeMessage)
62+
} catch (e) {
63+
error('Error comparing message', k, enUSMessage, localeMessages[k], e)
64+
return true
65+
}
6166
})
6267

6368
if (!problematicKeys.length) {

packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"3": "bar {var, number}",
55
"4": "bar {var} {var2, number} {var3, date} {var4, time}",
66
"5": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}}",
7-
"6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} <b>foo</b>"
7+
"6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} <b>foo</b>",
8+
"7": "bb"
89
}

packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"3": "bar {var, date}",
55
"4": "bar {var} {var2, number} {var3, date} {var5, time}",
66
"5": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}}",
7-
"6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} foo"
7+
"6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} foo",
8+
"7": "malform {a"
89
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy