From ddca2c22899ce698f945927a35df6126c8cdbc48 Mon Sep 17 00:00:00 2001 From: Long Ho Date: Fri, 17 Jan 2025 11:34:48 -0500 Subject: [PATCH 1/6] fix(@formatjs/cli-lib): handle parsing error during verification --- .../src/verify/checkStructuralEquality.ts | 23 +++++++++++-------- .../structural-equality/fixtures2/en-US.json | 3 ++- .../structural-equality/fixtures2/fr-FR.json | 3 ++- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/packages/cli-lib/src/verify/checkStructuralEquality.ts b/packages/cli-lib/src/verify/checkStructuralEquality.ts index f26fdd3aa22..8a1434eba1d 100644 --- a/packages/cli-lib/src/verify/checkStructuralEquality.ts +++ b/packages/cli-lib/src/verify/checkStructuralEquality.ts @@ -4,6 +4,7 @@ import { parse, } from '@formatjs/icu-messageformat-parser' import {debug, writeStderr} from '../console_utils' +import {error} from 'console' /** * Flatten nested obj into list of keys, delimited by `.` @@ -38,26 +39,30 @@ export async function checkStructuralEquality( const enUSMessages = Object.entries(flatten(enUSContent)).reduce< Record >((all, [key, value]) => { - all[key] = parse(value) + try { + all[key] = parse(value) + } catch (e) { + error('Error parsing message', key, value, e) + } return all }, {}) return Object.entries(translationFilesContents) .filter(([locale]) => locale !== sourceLocale) .reduce((result, [locale, content]) => { - const localeMessages = Object.entries(flatten(content)).reduce< - Record - >((all, [key, value]) => { - all[key] = parse(value) - return all - }, {}) + const localeMessages = flatten(content) const problematicKeys = Object.keys(enUSMessages).filter(k => { if (!localeMessages[k]) { return false } const enUSMessage = enUSMessages[k] - const localeMessage = localeMessages[k] - return !isStructurallySame(enUSMessage, localeMessage) + try { + const localeMessage = parse(localeMessages[k]) + return !isStructurallySame(enUSMessage, localeMessage) + } catch (e) { + error('Error comparing message', k, enUSMessage, localeMessages[k], e) + return true + } }) if (!problematicKeys.length) { diff --git a/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json b/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json index 25f2e28fb26..4cbf2a6d781 100644 --- a/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json +++ b/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json @@ -4,5 +4,6 @@ "3": "bar {var, number}", "4": "bar {var} {var2, number} {var3, date} {var4, time}", "5": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}}", - "6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} foo" + "6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} foo", + "7": "bb" } diff --git a/packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json b/packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json index d5deaea7a2f..1964565c9de 100644 --- a/packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json +++ b/packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json @@ -4,5 +4,6 @@ "3": "bar {var, date}", "4": "bar {var} {var2, number} {var3, date} {var5, time}", "5": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}}", - "6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} foo" + "6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} foo", + "7": "malform {a" } From d9deb01fb2eaf94dc26e7a14206fa1d956bb3ffa Mon Sep 17 00:00:00 2001 From: Long Ho Date: Fri, 17 Jan 2025 11:35:21 -0500 Subject: [PATCH 2/6] build: publish - @formatjs/cli-lib@7.1.1 - @formatjs/cli@6.4.1 --- packages/cli-lib/CHANGELOG.md | 6 ++++++ packages/cli-lib/package.json | 2 +- packages/cli/CHANGELOG.md | 6 ++++++ packages/cli/package.json | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/cli-lib/CHANGELOG.md b/packages/cli-lib/CHANGELOG.md index 23c0493b07d..bcb55182e9e 100644 --- a/packages/cli-lib/CHANGELOG.md +++ b/packages/cli-lib/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [7.1.1](https://github.com/formatjs/formatjs/compare/@formatjs/cli-lib@7.1.0...@formatjs/cli-lib@7.1.1) (2025-01-17) + +### Bug Fixes + +* **@formatjs/cli-lib:** handle parsing error during verification ([ddca2c2](https://github.com/formatjs/formatjs/commit/ddca2c22899ce698f945927a35df6126c8cdbc48)) - by @longlho + # [7.1.0](https://github.com/formatjs/formatjs/compare/@formatjs/cli-lib@7.0.3...@formatjs/cli-lib@7.1.0) (2025-01-17) ### Features diff --git a/packages/cli-lib/package.json b/packages/cli-lib/package.json index c11ac9ce85b..0e7863cf364 100644 --- a/packages/cli-lib/package.json +++ b/packages/cli-lib/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/cli-lib", - "version": "7.1.0", + "version": "7.1.1", "description": "Lib for CLI for formatjs.", "keywords": [ "intl", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index c78c6bfbc16..c26b3a1ff7c 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.4.1](https://github.com/formatjs/formatjs/compare/@formatjs/cli@6.4.0...@formatjs/cli@6.4.1) (2025-01-17) + +### Bug Fixes + +* **@formatjs/cli-lib:** handle parsing error during verification ([ddca2c2](https://github.com/formatjs/formatjs/commit/ddca2c22899ce698f945927a35df6126c8cdbc48)) - by @longlho + # [6.4.0](https://github.com/formatjs/formatjs/compare/@formatjs/cli@6.3.15...@formatjs/cli@6.4.0) (2025-01-17) ### Features diff --git a/packages/cli/package.json b/packages/cli/package.json index 8b4f5b27597..11522c881a0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/cli", - "version": "6.4.0", + "version": "6.4.1", "description": "A CLI for formatjs.", "keywords": [ "intl", From 144453a7a91af42678cb3c5b57d31673ef72b9cc Mon Sep 17 00:00:00 2001 From: Long Ho Date: Fri, 17 Jan 2025 11:41:51 -0500 Subject: [PATCH 3/6] fix(@formatjs/cli-lib): fix flatten during structural equality check --- packages/cli-lib/src/verify/checkStructuralEquality.ts | 3 ++- .../verify/structural-equality/fixtures2/en-US.json | 9 ++++++++- .../verify/structural-equality/fixtures2/fr-FR.json | 9 ++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/cli-lib/src/verify/checkStructuralEquality.ts b/packages/cli-lib/src/verify/checkStructuralEquality.ts index 8a1434eba1d..c8d9c7de562 100644 --- a/packages/cli-lib/src/verify/checkStructuralEquality.ts +++ b/packages/cli-lib/src/verify/checkStructuralEquality.ts @@ -21,8 +21,9 @@ function flatten(obj: any, parentKey = ''): Record { const key = parentKey ? `${parentKey}.${k}` : k if (typeof value === 'object') { Object.assign(all, flatten(value, key)) + } else { + all[key] = value } - all[key] = value return all }, {}) } diff --git a/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json b/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json index 4cbf2a6d781..c890de392ce 100644 --- a/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json +++ b/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json @@ -5,5 +5,12 @@ "4": "bar {var} {var2, number} {var3, date} {var4, time}", "5": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}}", "6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} foo", - "7": "bb" + "7": "bb", + "8": { + "9": "bar", + "nested": { + "10": "bar" + } + }, + "11": "nah" } diff --git a/packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json b/packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json index 1964565c9de..4f654566866 100644 --- a/packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json +++ b/packages/cli/integration-tests/verify/structural-equality/fixtures2/fr-FR.json @@ -5,5 +5,12 @@ "4": "bar {var} {var2, number} {var3, date} {var5, time}", "5": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}}", "6": "bar {var} {var2, number} {var3, date} {var4, time} {var5, plural, one {# foo} other {# foos}} foo", - "7": "malform {a" + "7": "malform {a", + "8": { + "9": "bar", + "nested": { + "10": "bar" + } + }, + "11": "nah" } From 079ede0c0f0f820ca45da5d2debe2c3207e0a30d Mon Sep 17 00:00:00 2001 From: Long Ho Date: Fri, 17 Jan 2025 11:42:08 -0500 Subject: [PATCH 4/6] build: publish - @formatjs/cli-lib@7.1.2 - @formatjs/cli@6.4.2 --- packages/cli-lib/CHANGELOG.md | 6 ++++++ packages/cli-lib/package.json | 2 +- packages/cli/CHANGELOG.md | 6 ++++++ packages/cli/package.json | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/cli-lib/CHANGELOG.md b/packages/cli-lib/CHANGELOG.md index bcb55182e9e..e2a4ff58ad6 100644 --- a/packages/cli-lib/CHANGELOG.md +++ b/packages/cli-lib/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [7.1.2](https://github.com/formatjs/formatjs/compare/@formatjs/cli-lib@7.1.1...@formatjs/cli-lib@7.1.2) (2025-01-17) + +### Bug Fixes + +* **@formatjs/cli-lib:** fix flatten during structural equality check ([144453a](https://github.com/formatjs/formatjs/commit/144453a7a91af42678cb3c5b57d31673ef72b9cc)) - by @longlho + ## [7.1.1](https://github.com/formatjs/formatjs/compare/@formatjs/cli-lib@7.1.0...@formatjs/cli-lib@7.1.1) (2025-01-17) ### Bug Fixes diff --git a/packages/cli-lib/package.json b/packages/cli-lib/package.json index 0e7863cf364..8495544ce19 100644 --- a/packages/cli-lib/package.json +++ b/packages/cli-lib/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/cli-lib", - "version": "7.1.1", + "version": "7.1.2", "description": "Lib for CLI for formatjs.", "keywords": [ "intl", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index c26b3a1ff7c..4ab15dd273b 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.4.2](https://github.com/formatjs/formatjs/compare/@formatjs/cli@6.4.1...@formatjs/cli@6.4.2) (2025-01-17) + +### Bug Fixes + +* **@formatjs/cli-lib:** fix flatten during structural equality check ([144453a](https://github.com/formatjs/formatjs/commit/144453a7a91af42678cb3c5b57d31673ef72b9cc)) - by @longlho + ## [6.4.1](https://github.com/formatjs/formatjs/compare/@formatjs/cli@6.4.0...@formatjs/cli@6.4.1) (2025-01-17) ### Bug Fixes diff --git a/packages/cli/package.json b/packages/cli/package.json index 11522c881a0..9a1e67fa261 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/cli", - "version": "6.4.1", + "version": "6.4.2", "description": "A CLI for formatjs.", "keywords": [ "intl", From e0194bf15632f4aa529ca075a5c958f2ffb254c8 Mon Sep 17 00:00:00 2001 From: Long Ho Date: Sun, 19 Jan 2025 23:06:56 -0500 Subject: [PATCH 5/6] fix(@formatjs/icu-messageformat-parser): make plural check more lenient --- .../structural-equality/fixtures1/en-US.json | 3 +- .../structural-equality/fixtures1/fr.json | 3 +- .../icu-messageformat-parser/manipulator.ts | 158 ++++++------------ 3 files changed, 53 insertions(+), 111 deletions(-) diff --git a/packages/cli/integration-tests/verify/structural-equality/fixtures1/en-US.json b/packages/cli/integration-tests/verify/structural-equality/fixtures1/en-US.json index 44c4674c952..1e4ddf0dee9 100644 --- a/packages/cli/integration-tests/verify/structural-equality/fixtures1/en-US.json +++ b/packages/cli/integration-tests/verify/structural-equality/fixtures1/en-US.json @@ -1,3 +1,4 @@ { - "foo": "baz {var}" + "foo": "baz {var}", + "2": "{c, plural, one {#} other {#}}" } diff --git a/packages/cli/integration-tests/verify/structural-equality/fixtures1/fr.json b/packages/cli/integration-tests/verify/structural-equality/fixtures1/fr.json index 44c4674c952..51fcb1bc4f7 100644 --- a/packages/cli/integration-tests/verify/structural-equality/fixtures1/fr.json +++ b/packages/cli/integration-tests/verify/structural-equality/fixtures1/fr.json @@ -1,3 +1,4 @@ { - "foo": "baz {var}" + "foo": "baz {var}", + "2": "{c, plural, one {#} few {#} other {#}}" } diff --git a/packages/icu-messageformat-parser/manipulator.ts b/packages/icu-messageformat-parser/manipulator.ts index a4d5201b325..c983f9ab9ac 100644 --- a/packages/icu-messageformat-parser/manipulator.ts +++ b/packages/icu-messageformat-parser/manipulator.ts @@ -1,10 +1,8 @@ import { isArgumentElement, isDateElement, - isLiteralElement, isNumberElement, isPluralElement, - isPoundElement, isSelectElement, isTagElement, isTimeElement, @@ -12,6 +10,7 @@ import { PluralElement, PluralOrSelectOption, SelectElement, + TYPE, } from './types' function cloneDeep(obj: T): T { @@ -101,122 +100,63 @@ export function hoistSelectors( return ast } -function isStructurallySamePluralOrSelect( - el1: PluralElement | SelectElement, - el2: PluralElement | SelectElement -): boolean { - const options1 = el1.options - const options2 = el2.options - if (Object.keys(options1).length !== Object.keys(options2).length) { - return false - } - for (const key in options1) { - if (!options2[key]) { - return false +/** + * Collect all variables in an AST to Record + * @param ast AST to collect variables from + * @param vars Record of variable name to variable type + */ +function collectVariables( + ast: MessageFormatElement[], + vars: Map = new Map() +): void { + ast.forEach(el => { + if ( + isArgumentElement(el) || + isDateElement(el) || + isTimeElement(el) || + isNumberElement(el) + ) { + if (el.value in vars && vars.get(el.value) !== el.type) { + throw new Error(`Variable ${el.value} has conflicting types`) + } + vars.set(el.value, el.type) } - if (!isStructurallySame(options1[key].value, options2[key].value)) { - return false + + if (isPluralElement(el) || isSelectElement(el)) { + vars.set(el.value, el.type) + Object.keys(el.options).forEach(k => { + collectVariables(el.options[k].value, vars) + }) } - } - return true + + if (isTagElement(el)) { + vars.set(el.value, el.type) + collectVariables(el.children, vars) + } + }) } +/** + * Check if 2 ASTs are structurally the same. This primarily means that + * they have the same variables with the same type + * @param a + * @param b + * @returns + */ export function isStructurallySame( a: MessageFormatElement[], b: MessageFormatElement[] ): boolean { - const aWithoutLiteral = a.filter(el => !isLiteralElement(el)) - const bWithoutLiteral = b.filter(el => !isLiteralElement(el)) - if (aWithoutLiteral.length !== bWithoutLiteral.length) { + const aVars = new Map() + const bVars = new Map() + collectVariables(a, aVars) + collectVariables(b, bVars) + + if (aVars.size !== bVars.size) { return false } - const elementsMapInA = aWithoutLiteral.reduce< - Record - >((all, el) => { - if (isPoundElement(el)) { - all['#'] = el - return all - } - all[el.value] = el - return all - }, {}) - - const elementsMapInB = bWithoutLiteral.reduce< - Record - >((all, el) => { - if (isPoundElement(el)) { - all['#'] = el - return all - } - all[el.value] = el - return all - }, {}) - - for (const varName of Object.keys(elementsMapInA)) { - const elA = elementsMapInA[varName] - const elB = elementsMapInB[varName] - if (!elB) { - return false - } - - if (elA.type !== elB.type) { - return false - } - - if (isLiteralElement(elA) || isLiteralElement(elB)) { - continue - } - - if ( - isArgumentElement(elA) && - isArgumentElement(elB) && - elA.value !== elB.value - ) { - return false - } - - if (isPoundElement(elA) || isPoundElement(elB)) { - continue - } - - if ( - isDateElement(elA) || - isTimeElement(elA) || - isNumberElement(elA) || - isDateElement(elB) || - isTimeElement(elB) || - isNumberElement(elB) - ) { - if (elA.value !== elB.value) { - return false - } - } - - if ( - isPluralElement(elA) && - isPluralElement(elB) && - !isStructurallySamePluralOrSelect(elA, elB) - ) { - return false - } - - if ( - isSelectElement(elA) && - isSelectElement(elB) && - isStructurallySamePluralOrSelect(elA, elB) - ) { - return false - } - - if (isTagElement(elA) && isTagElement(elB)) { - if (elA.value !== elB.value) { - return false - } - if (!isStructurallySame(elA.children, elB.children)) { - return false - } - } - } - return true + return Array.from(aVars.entries()).every(([key, type]) => { + return bVars.has(key) && bVars.get(key) === type + }) } From 94a238acd4505f8421881f973667943bfb065f0b Mon Sep 17 00:00:00 2001 From: Long Ho Date: Sun, 19 Jan 2025 23:07:13 -0500 Subject: [PATCH 6/6] build: publish - babel-plugin-formatjs@10.5.32 - @formatjs/cli-lib@7.1.3 - @formatjs/cli@6.4.3 - @formatjs/editor@2.0.68 - eslint-plugin-formatjs@5.2.11 - @formatjs/icu-messageformat-parser@2.10.1 - intl-messageformat@10.7.13 - @formatjs/intl@3.1.2 - react-intl@7.1.2 - @formatjs/ts-transformer@3.13.29 - vue-intl@6.5.21 --- packages/babel-plugin-formatjs/CHANGELOG.md | 4 ++++ packages/babel-plugin-formatjs/package.json | 2 +- packages/cli-lib/CHANGELOG.md | 4 ++++ packages/cli-lib/package.json | 2 +- packages/cli/CHANGELOG.md | 6 ++++++ packages/cli/package.json | 2 +- packages/editor/CHANGELOG.md | 4 ++++ packages/editor/package.json | 2 +- packages/eslint-plugin-formatjs/CHANGELOG.md | 4 ++++ packages/eslint-plugin-formatjs/package.json | 2 +- packages/icu-messageformat-parser/CHANGELOG.md | 6 ++++++ packages/icu-messageformat-parser/package.json | 2 +- packages/intl-messageformat/CHANGELOG.md | 4 ++++ packages/intl-messageformat/package.json | 2 +- packages/intl/CHANGELOG.md | 4 ++++ packages/intl/package.json | 2 +- packages/react-intl/CHANGELOG.md | 4 ++++ packages/react-intl/package.json | 2 +- packages/ts-transformer/CHANGELOG.md | 4 ++++ packages/ts-transformer/package.json | 2 +- packages/vue-intl/CHANGELOG.md | 4 ++++ packages/vue-intl/package.json | 2 +- 22 files changed, 59 insertions(+), 11 deletions(-) diff --git a/packages/babel-plugin-formatjs/CHANGELOG.md b/packages/babel-plugin-formatjs/CHANGELOG.md index d8a12215c58..142a657d6ad 100644 --- a/packages/babel-plugin-formatjs/CHANGELOG.md +++ b/packages/babel-plugin-formatjs/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [10.5.32](https://github.com/formatjs/formatjs/compare/babel-plugin-formatjs@10.5.31...babel-plugin-formatjs@10.5.32) (2025-01-20) + +**Note:** Version bump only for package babel-plugin-formatjs + ## [10.5.31](https://github.com/formatjs/formatjs/compare/babel-plugin-formatjs@10.5.30...babel-plugin-formatjs@10.5.31) (2025-01-17) **Note:** Version bump only for package babel-plugin-formatjs diff --git a/packages/babel-plugin-formatjs/package.json b/packages/babel-plugin-formatjs/package.json index f25db832b73..69e240b22f1 100644 --- a/packages/babel-plugin-formatjs/package.json +++ b/packages/babel-plugin-formatjs/package.json @@ -1,6 +1,6 @@ { "name": "babel-plugin-formatjs", - "version": "10.5.31", + "version": "10.5.32", "description": "Extracts string messages for translation from modules that use formatjs.", "repository": { "type": "git", diff --git a/packages/cli-lib/CHANGELOG.md b/packages/cli-lib/CHANGELOG.md index e2a4ff58ad6..f305415091b 100644 --- a/packages/cli-lib/CHANGELOG.md +++ b/packages/cli-lib/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [7.1.3](https://github.com/formatjs/formatjs/compare/@formatjs/cli-lib@7.1.2...@formatjs/cli-lib@7.1.3) (2025-01-20) + +**Note:** Version bump only for package @formatjs/cli-lib + ## [7.1.2](https://github.com/formatjs/formatjs/compare/@formatjs/cli-lib@7.1.1...@formatjs/cli-lib@7.1.2) (2025-01-17) ### Bug Fixes diff --git a/packages/cli-lib/package.json b/packages/cli-lib/package.json index 8495544ce19..1bb466a61a3 100644 --- a/packages/cli-lib/package.json +++ b/packages/cli-lib/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/cli-lib", - "version": "7.1.2", + "version": "7.1.3", "description": "Lib for CLI for formatjs.", "keywords": [ "intl", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 4ab15dd273b..ba75a352fd0 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.4.3](https://github.com/formatjs/formatjs/compare/@formatjs/cli@6.4.2...@formatjs/cli@6.4.3) (2025-01-20) + +### Bug Fixes + +* **@formatjs/icu-messageformat-parser:** make plural check more lenient ([e0194bf](https://github.com/formatjs/formatjs/commit/e0194bf15632f4aa529ca075a5c958f2ffb254c8)) - by @longlho + ## [6.4.2](https://github.com/formatjs/formatjs/compare/@formatjs/cli@6.4.1...@formatjs/cli@6.4.2) (2025-01-17) ### Bug Fixes diff --git a/packages/cli/package.json b/packages/cli/package.json index 9a1e67fa261..6b74fc26162 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/cli", - "version": "6.4.2", + "version": "6.4.3", "description": "A CLI for formatjs.", "keywords": [ "intl", diff --git a/packages/editor/CHANGELOG.md b/packages/editor/CHANGELOG.md index 66371e5e21f..a00ebffa2a2 100644 --- a/packages/editor/CHANGELOG.md +++ b/packages/editor/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.0.68](https://github.com/formatjs/formatjs/compare/@formatjs/editor@2.0.67...@formatjs/editor@2.0.68) (2025-01-20) + +**Note:** Version bump only for package @formatjs/editor + ## [2.0.67](https://github.com/formatjs/formatjs/compare/@formatjs/editor@2.0.66...@formatjs/editor@2.0.67) (2025-01-17) **Note:** Version bump only for package @formatjs/editor diff --git a/packages/editor/package.json b/packages/editor/package.json index 886384550f8..65e11826146 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/editor", - "version": "2.0.67", + "version": "2.0.68", "description": "A ICU MessageFormat Editor UI", "keywords": [ "intl", diff --git a/packages/eslint-plugin-formatjs/CHANGELOG.md b/packages/eslint-plugin-formatjs/CHANGELOG.md index 12a74fb60fc..817d8219e44 100644 --- a/packages/eslint-plugin-formatjs/CHANGELOG.md +++ b/packages/eslint-plugin-formatjs/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [5.2.11](https://github.com/formatjs/formatjs/compare/eslint-plugin-formatjs@5.2.10...eslint-plugin-formatjs@5.2.11) (2025-01-20) + +**Note:** Version bump only for package eslint-plugin-formatjs + ## [5.2.10](https://github.com/formatjs/formatjs/compare/eslint-plugin-formatjs@5.2.9...eslint-plugin-formatjs@5.2.10) (2025-01-17) ### Bug Fixes diff --git a/packages/eslint-plugin-formatjs/package.json b/packages/eslint-plugin-formatjs/package.json index df1428eea39..be6b7d0993c 100644 --- a/packages/eslint-plugin-formatjs/package.json +++ b/packages/eslint-plugin-formatjs/package.json @@ -1,6 +1,6 @@ { "name": "eslint-plugin-formatjs", - "version": "5.2.10", + "version": "5.2.11", "description": "ESLint plugin for formatjs", "main": "index.js", "repository": { diff --git a/packages/icu-messageformat-parser/CHANGELOG.md b/packages/icu-messageformat-parser/CHANGELOG.md index 3c0332b6169..9b07a99dcae 100644 --- a/packages/icu-messageformat-parser/CHANGELOG.md +++ b/packages/icu-messageformat-parser/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.10.1](https://github.com/formatjs/formatjs/compare/@formatjs/icu-messageformat-parser@2.10.0...@formatjs/icu-messageformat-parser@2.10.1) (2025-01-20) + +### Bug Fixes + +* **@formatjs/icu-messageformat-parser:** make plural check more lenient ([e0194bf](https://github.com/formatjs/formatjs/commit/e0194bf15632f4aa529ca075a5c958f2ffb254c8)) - by @longlho + # [2.10.0](https://github.com/formatjs/formatjs/compare/@formatjs/icu-messageformat-parser@2.9.8...@formatjs/icu-messageformat-parser@2.10.0) (2025-01-17) ### Bug Fixes diff --git a/packages/icu-messageformat-parser/package.json b/packages/icu-messageformat-parser/package.json index 1a441a2750a..c9a11d4205f 100644 --- a/packages/icu-messageformat-parser/package.json +++ b/packages/icu-messageformat-parser/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/icu-messageformat-parser", - "version": "2.10.0", + "version": "2.10.1", "main": "index.js", "module": "lib/index.js", "types": "index.d.ts", diff --git a/packages/intl-messageformat/CHANGELOG.md b/packages/intl-messageformat/CHANGELOG.md index dfaec020e4c..20dcfc5a648 100644 --- a/packages/intl-messageformat/CHANGELOG.md +++ b/packages/intl-messageformat/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [10.7.13](https://github.com/formatjs/formatjs/compare/intl-messageformat@10.7.12...intl-messageformat@10.7.13) (2025-01-20) + +**Note:** Version bump only for package intl-messageformat + ## [10.7.12](https://github.com/formatjs/formatjs/compare/intl-messageformat@10.7.11...intl-messageformat@10.7.12) (2025-01-17) **Note:** Version bump only for package intl-messageformat diff --git a/packages/intl-messageformat/package.json b/packages/intl-messageformat/package.json index 70478141151..72c233572ea 100644 --- a/packages/intl-messageformat/package.json +++ b/packages/intl-messageformat/package.json @@ -1,6 +1,6 @@ { "name": "intl-messageformat", - "version": "10.7.12", + "version": "10.7.13", "description": "Formats ICU Message strings with number, date, plural, and select placeholders to create localized messages.", "keywords": [ "i18n", diff --git a/packages/intl/CHANGELOG.md b/packages/intl/CHANGELOG.md index f969b84f658..425a35c8967 100644 --- a/packages/intl/CHANGELOG.md +++ b/packages/intl/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.1.2](https://github.com/formatjs/formatjs/compare/@formatjs/intl@3.1.1...@formatjs/intl@3.1.2) (2025-01-20) + +**Note:** Version bump only for package @formatjs/intl + ## [3.1.1](https://github.com/formatjs/formatjs/compare/@formatjs/intl@3.1.0...@formatjs/intl@3.1.1) (2025-01-17) **Note:** Version bump only for package @formatjs/intl diff --git a/packages/intl/package.json b/packages/intl/package.json index 7519f99d0fd..6e53130871c 100644 --- a/packages/intl/package.json +++ b/packages/intl/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/intl", - "version": "3.1.1", + "version": "3.1.2", "description": "Internationalize JS apps. This library provides an API to format dates, numbers, and strings, including pluralization and handling translations.", "keywords": [ "intl", diff --git a/packages/react-intl/CHANGELOG.md b/packages/react-intl/CHANGELOG.md index 591e8ae081a..5b246556a8b 100644 --- a/packages/react-intl/CHANGELOG.md +++ b/packages/react-intl/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [7.1.2](https://github.com/formatjs/formatjs/compare/react-intl@7.1.1...react-intl@7.1.2) (2025-01-20) + +**Note:** Version bump only for package react-intl + ## [7.1.1](https://github.com/formatjs/formatjs/compare/react-intl@7.1.0...react-intl@7.1.1) (2025-01-17) **Note:** Version bump only for package react-intl diff --git a/packages/react-intl/package.json b/packages/react-intl/package.json index 533783cce26..3545a0c33de 100644 --- a/packages/react-intl/package.json +++ b/packages/react-intl/package.json @@ -1,6 +1,6 @@ { "name": "react-intl", - "version": "7.1.1", + "version": "7.1.2", "description": "Internationalize React apps. This library provides React components and an API to format dates, numbers, and strings, including pluralization and handling translations.", "keywords": [ "intl", diff --git a/packages/ts-transformer/CHANGELOG.md b/packages/ts-transformer/CHANGELOG.md index 86da1f8e4a7..f4fa601a6fc 100644 --- a/packages/ts-transformer/CHANGELOG.md +++ b/packages/ts-transformer/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.13.29](https://github.com/formatjs/formatjs/compare/@formatjs/ts-transformer@3.13.28...@formatjs/ts-transformer@3.13.29) (2025-01-20) + +**Note:** Version bump only for package @formatjs/ts-transformer + ## [3.13.28](https://github.com/formatjs/formatjs/compare/@formatjs/ts-transformer@3.13.27...@formatjs/ts-transformer@3.13.28) (2025-01-17) **Note:** Version bump only for package @formatjs/ts-transformer diff --git a/packages/ts-transformer/package.json b/packages/ts-transformer/package.json index fb3917a35d6..b81f7452ead 100644 --- a/packages/ts-transformer/package.json +++ b/packages/ts-transformer/package.json @@ -1,6 +1,6 @@ { "name": "@formatjs/ts-transformer", - "version": "3.13.28", + "version": "3.13.29", "description": "TS Compiler transformer for formatjs", "main": "index.js", "types": "index.d.ts", diff --git a/packages/vue-intl/CHANGELOG.md b/packages/vue-intl/CHANGELOG.md index 71370fe1caf..58b86f28690 100644 --- a/packages/vue-intl/CHANGELOG.md +++ b/packages/vue-intl/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [6.5.21](https://github.com/formatjs/formatjs/compare/vue-intl@6.5.20...vue-intl@6.5.21) (2025-01-20) + +**Note:** Version bump only for package vue-intl + ## [6.5.20](https://github.com/formatjs/formatjs/compare/vue-intl@6.5.19...vue-intl@6.5.20) (2025-01-17) **Note:** Version bump only for package vue-intl diff --git a/packages/vue-intl/package.json b/packages/vue-intl/package.json index ba9d964cb58..b8638576eb3 100644 --- a/packages/vue-intl/package.json +++ b/packages/vue-intl/package.json @@ -1,6 +1,6 @@ { "name": "vue-intl", - "version": "6.5.20", + "version": "6.5.21", "description": "formatjs intl binding for vue", "main": "index.js", "repository": { 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