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 23c0493b07d..f305415091b 100644 --- a/packages/cli-lib/CHANGELOG.md +++ b/packages/cli-lib/CHANGELOG.md @@ -3,6 +3,22 @@ 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 + +* **@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 + +* **@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..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.0", + "version": "7.1.3", "description": "Lib for CLI for formatjs.", "keywords": [ "intl", diff --git a/packages/cli-lib/src/verify/checkStructuralEquality.ts b/packages/cli-lib/src/verify/checkStructuralEquality.ts index f26fdd3aa22..c8d9c7de562 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 `.` @@ -20,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 }, {}) } @@ -38,26 +40,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/CHANGELOG.md b/packages/cli/CHANGELOG.md index c78c6bfbc16..ba75a352fd0 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -3,6 +3,24 @@ 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 + +* **@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 + +* **@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/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/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json b/packages/cli/integration-tests/verify/structural-equality/fixtures2/en-US.json index 25f2e28fb26..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 @@ -4,5 +4,13 @@ "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", + "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 d5deaea7a2f..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 @@ -4,5 +4,13 @@ "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", + "8": { + "9": "bar", + "nested": { + "10": "bar" + } + }, + "11": "nah" } diff --git a/packages/cli/package.json b/packages/cli/package.json index 8b4f5b27597..6b74fc26162 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.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/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 + }) } 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": {