Skip to content

Latest commit

 

History

History
1028 lines (522 loc) · 53.8 KB

CHANGELOG.md

File metadata and controls

1028 lines (522 loc) · 53.8 KB

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

4.10.3 (2023-06-12)

Note: Version bump only for package eslint-plugin-formatjs

4.10.2 (2023-06-06)

Note: Version bump only for package eslint-plugin-formatjs

4.10.1 (2023-05-01)

Bug Fixes

  • deps: update dependency @typescript-eslint/typescript-estree to v5.59.0 (#4055) (11206c8)
  • deps: update dependency magic-string to ^0.30.0 (#4056) (8f46ca1)
  • deps: update dependency tslib to v2.5.0 (#4059) (b9ec209)

4.10.0 (2023-04-17)

Features

  • upgrade TS support to v5 (2c43dc1)

4.9.1 (2023-03-28)

Bug Fixes

  • eslint-plugin-formatjs: gracefully handle invalid message in enforce-placeholders (6b64a3e)

4.9.0 (2023-02-27)

Features

  • eslint-plugin-formatjs: more performant and versatile no-complex-selectors (#4007) (4affca2)

4.8.0 (2023-02-25)

Bug Fixes

  • eslint-plugin-formatjs: do not throw while hoisting during no-complex-selectors (29ecbec)

Features

  • eslint-plugin-formatjs: report unused values in enforce-placeholders (#4006) (dabd04c)

4.7.2 (2023-02-20)

Note: Version bump only for package eslint-plugin-formatjs

4.7.1 (2023-02-19)

Bug Fixes

  • eslint-plugin-formatjs: handles multi-line JSX attribute (f41f855)
  • eslint-plugin-formatjs: report the JSXExpressionContainer for prefer-formatted-message (32b97d5)

4.7.0 (2023-02-19)

Features

  • eslint-plugin-formatjs: new linter rules prefer-formatted-messageandprefer-pound-in-plural (#3998) (768a73a)

4.6.0 (2023-01-30)

Features

  • eslint-plugin-formatjs: emoji version above config (fd7776a)

4.5.0 (2023-01-27)

Features

  • eslint-plugin-formatjs: capture literals in the logical expression (#3975) (1cc638c)

4.4.0 (2023-01-26)

Features

  • eslint-plugin-formatjs: capture literals in the conditional expression (#3974) (1deed4d)
  • eslint-plugin-formatjs: introduce no-useless-message linter rule (#3973) (9ec4491)

4.3.9 (2022-12-27)

Bug Fixes

  • eslint-plugin-formatjs: adding $t, an alternative to formatMessage (#3943) (6d9623f)

4.3.8 (2022-12-02)

Note: Version bump only for package eslint-plugin-formatjs

4.3.7 (2022-12-01)

Note: Version bump only for package eslint-plugin-formatjs

4.3.6 (2022-12-01)

Note: Version bump only for package eslint-plugin-formatjs

4.3.5 (2022-11-29)

Note: Version bump only for package eslint-plugin-formatjs

4.3.4 (2022-10-17)

Note: Version bump only for package eslint-plugin-formatjs

4.3.3 (2022-10-13)

Bug Fixes

  • eslint-plugin-formatjs: no-literal-string-in-jsx now ignores empty string (#3871) (3a7ae3b)

4.3.2 (2022-09-28)

Note: Version bump only for package eslint-plugin-formatjs

4.3.1 (2022-09-06)

Bug Fixes

  • eslint-plugin-formatjs: fix #3652 eslint enforce-id, append correct id (0bf0daf)

4.3.0 (2022-08-27)

Features

  • @formatjs/ts-transformer: support TypeScript 4.7 syntax (#3764) (1b3388e)

4.2.2 (2022-08-21)

Note: Version bump only for package eslint-plugin-formatjs

4.2.1 (2022-08-21)

Note: Version bump only for package eslint-plugin-formatjs

4.2.0 (2022-08-18)

Features

  • eslint-plugin-formatjs: allow scoping settings to formatjs (#3766) (0db373f)

4.1.0 (2022-08-08)

Features

  • eslint-plugin-formatjs: add no-invalid-icu eslint rule (#3740) (d394a5e)

4.0.2 (2022-07-04)

Note: Version bump only for package eslint-plugin-formatjs

4.0.1 (2022-06-21)

Bug Fixes

  • eslint-plugin-formatjs: actually add no-literal-string-in-jsx to the plugin registry (#3680) (f834cd5)

4.0.0 (2022-06-21)

Bug Fixes

  • @formatjs/eslint-plugin-formatjs: handle ICU message syntax error in no-complex-selectors rule (dc8ecdc)

Features

  • eslint-plugin-formatjs: introduce no-literal-string-in-jsx (#3674) (a5da037)
  • eslint-plugin-formatjs: no-multiple-whitespaces now allows whitespaces in non-literals (#3671) (3cf262a)

3.1.5 (2022-06-06)

Note: Version bump only for package eslint-plugin-formatjs

3.1.4 (2022-05-20)

Bug Fixes

  • eslint-plugin-formatjs: fix description obj serialization, fix #3575 (83c1fe0)

3.1.3 (2022-05-19)

Note: Version bump only for package eslint-plugin-formatjs

3.1.2 (2022-05-19)

Bug Fixes

  • react-intl: fix type issue with react18, fix #3550 (2567b93)

3.1.1 (2022-04-27)

Note: Version bump only for package eslint-plugin-formatjs

3.1.0 (2022-03-26)

Features

  • eslint-plugin-formatjs: allow eslint 7 (260b0ec)

3.0.1 (2022-03-26)

Note: Version bump only for package eslint-plugin-formatjs

3.0.0 (2022-02-06)

Features

  • eslint-plugin-formatjs: rename blacklist to blocklist, fix #3399 (d363881)

BREAKING CHANGES

  • eslint-plugin-formatjs: This changes the rule name from blacklist-elements to blocklist-elements

2.21.0 (2022-02-06)

Features

  • eslint-plugin-formatjs: add idWhitelist option to enforce-id rule (#3374) (7538296)

2.20.5 (2022-01-24)

Note: Version bump only for package eslint-plugin-formatjs

2.20.4 (2022-01-20)

Note: Version bump only for package eslint-plugin-formatjs

2.20.3 (2022-01-14)

Note: Version bump only for package eslint-plugin-formatjs

2.20.2 (2022-01-09)

Note: Version bump only for package eslint-plugin-formatjs

2.20.1 (2022-01-03)

Note: Version bump only for package eslint-plugin-formatjs

2.20.0 (2022-01-03)

Features

  • eslint-plugin-formatjs: bump eslint peerDep version to 8 (d143d38)

2.19.1 (2021-12-20)

Bug Fixes

  • eslint-plugin-formatjs: fix empty FormatMessage case, fix #3304 (e71a705)
  • eslint-plugin-formatjs: fix missing error when missing placeholder used inside tag (#3310) (d65306a)

2.19.0 (2021-12-01)

Features

2.18.0 (2021-10-22)

Features

  • eslint-plugin-formatjs: upgrade to TS 4.4 (d45d3c1)

2.17.9 (2021-10-17)

Note: Version bump only for package eslint-plugin-formatjs

2.17.8 (2021-09-27)

Note: Version bump only for package eslint-plugin-formatjs

2.17.7 (2021-09-26)

Bug Fixes

  • eslint-plugin-formatjs: remove deprecated @types/emoji-regex 9 (#3159) (49b9dfb)

2.17.6 (2021-08-24)

Note: Version bump only for package eslint-plugin-formatjs

2.17.5 (2021-08-21)

Note: Version bump only for package eslint-plugin-formatjs

2.17.4 (2021-08-15)

Note: Version bump only for package eslint-plugin-formatjs

2.17.3 (2021-08-06)

Bug Fixes

  • eslint-plugin-formatjs: declare dep on typescript, fix #3099 (d97e301)

2.17.2 (2021-07-24)

Note: Version bump only for package eslint-plugin-formatjs

2.17.1 (2021-07-06)

Note: Version bump only for package eslint-plugin-formatjs

2.17.0 (2021-06-26)

Features

  • eslint-plugin-formatjs: allow setting ignoreTag as global linter settings, fix #2998 (8aaa11c)

2.16.1 (2021-06-21)

Note: Version bump only for package eslint-plugin-formatjs

2.16.0 (2021-06-13)

Features

  • eslint-plugin-formatjs: allow additionalFunctionNames & additionalComponentNames in shared settings, fix #2967 (c19b0ea)
  • eslint-plugin-formatjs: rm react-intl package import check for function names and components (5c7aeba)

2.15.7 (2021-06-09)

Note: Version bump only for package eslint-plugin-formatjs

2.15.6 (2021-06-05)

Note: Version bump only for package eslint-plugin-formatjs

2.15.5 (2021-06-04)

Note: Version bump only for package eslint-plugin-formatjs

2.15.4 (2021-06-01)

Note: Version bump only for package eslint-plugin-formatjs

2.15.3 (2021-05-23)

Note: Version bump only for package eslint-plugin-formatjs

2.15.2 (2021-05-20)

Note: Version bump only for package eslint-plugin-formatjs

2.15.1 (2021-05-17)

Note: Version bump only for package eslint-plugin-formatjs

2.15.0 (2021-05-10)

Features

  • eslint-plugin-formatjs: update typescript-eslint (#2865) (3a692ab)

2.14.10 (2021-05-02)

Note: Version bump only for package eslint-plugin-formatjs

2.14.9 (2021-04-26)

Note: Version bump only for package eslint-plugin-formatjs

2.14.8 (2021-04-26)

Note: Version bump only for package eslint-plugin-formatjs

2.14.7 (2021-04-21)

Note: Version bump only for package eslint-plugin-formatjs

2.14.6 (2021-04-12)

Note: Version bump only for package eslint-plugin-formatjs

2.14.5 (2021-04-04)

Note: Version bump only for package eslint-plugin-formatjs

2.14.4 (2021-04-03)

Note: Version bump only for package eslint-plugin-formatjs

2.14.3 (2021-03-30)

Note: Version bump only for package eslint-plugin-formatjs

2.14.2 (2021-03-28)

Note: Version bump only for package eslint-plugin-formatjs

2.14.1 (2021-03-28)

Note: Version bump only for package eslint-plugin-formatjs

2.14.0 (2021-03-28)

Features

  • eslint-plugin-formatjs: add no-complex-selectors rule (f3b1c15)

2.13.2 (2021-03-28)

Bug Fixes

  • eslint-plugin-formatjs: rm unnecessary imports, fix #2756 (8920a6a)

2.13.1 (2021-03-27)

Bug Fixes

  • eslint-plugin-formatjs: fix missing dep (d3b1532)

2.13.0 (2021-03-27)

Features

  • eslint-plugin-formatjs: switch parser to @formatjs/icu-messageformat-parser (6x faster) (09ff05e)

2.12.9 (2021-03-26)

Note: Version bump only for package eslint-plugin-formatjs

2.12.8 (2021-03-15)

Note: Version bump only for package eslint-plugin-formatjs

2.12.7 (2021-03-01)

Note: Version bump only for package eslint-plugin-formatjs

2.12.6 (2021-02-25)

Bug Fixes

2.12.5 (2021-02-25)

Note: Version bump only for package eslint-plugin-formatjs

2.12.4 (2021-02-22)

Note: Version bump only for package eslint-plugin-formatjs

2.12.3 (2021-02-21)

Note: Version bump only for package eslint-plugin-formatjs

2.12.2 (2021-02-21)

Note: Version bump only for package eslint-plugin-formatjs

2.12.1 (2021-02-13)

Note: Version bump only for package eslint-plugin-formatjs

2.12.0 (2021-02-02)

Features

  • eslint-plugin-formatjs: support template literal without var, fix #2527 (a048e25)

2.11.0 (2021-01-29)

Features

  • eslint-plugin-formatjs: support template literal without var, fix #2527 (a048e25)

2.10.7 (2021-01-27)

Note: Version bump only for package eslint-plugin-formatjs

2.10.6 (2021-01-26)

Note: Version bump only for package eslint-plugin-formatjs

2.10.5 (2021-01-25)

Note: Version bump only for package eslint-plugin-formatjs

2.10.4 (2021-01-22)

Note: Version bump only for package eslint-plugin-formatjs

2.10.3 (2021-01-05)

Note: Version bump only for package eslint-plugin-formatjs

2.10.2 (2021-01-04)

Note: Version bump only for package eslint-plugin-formatjs

2.10.1 (2021-01-04)

Note: Version bump only for package eslint-plugin-formatjs

2.10.0 (2021-01-02)

Features

  • eslint-plugin-formatjs: add support for .vue (2f73827)

2.9.13 (2021-01-02)

Note: Version bump only for package eslint-plugin-formatjs

2.9.12 (2021-01-01)

Note: Version bump only for package eslint-plugin-formatjs

2.9.11 (2020-12-17)

Note: Version bump only for package eslint-plugin-formatjs

2.9.10 (2020-11-27)

Note: Version bump only for package eslint-plugin-formatjs

2.9.9 (2020-11-26)

Note: Version bump only for package eslint-plugin-formatjs

2.9.8 (2020-11-20)

Note: Version bump only for package eslint-plugin-formatjs

2.9.7 (2020-11-12)

Note: Version bump only for package eslint-plugin-formatjs

2.9.6 (2020-11-10)

Note: Version bump only for package eslint-plugin-formatjs

2.9.5 (2020-11-09)

Note: Version bump only for package eslint-plugin-formatjs

2.9.4 (2020-11-09)

Note: Version bump only for package eslint-plugin-formatjs

2.9.3 (2020-11-05)

Note: Version bump only for package eslint-plugin-formatjs

2.9.2 (2020-11-05)

Bug Fixes

  • eslint-plugin-formatjs: lock down monorepo dep version (3b425a3)

2.9.1 (2020-11-04)

Note: Version bump only for package eslint-plugin-formatjs

2.9.0 (2020-10-30)

Features

  • eslint-plugin-formatjs: add ignoreList option to enforce-placeholders, fix #2262 (a10e00c)
  • eslint-plugin-formatjs: makes idInterpolationPattern optional in enforce-id, fix #2263 (6289c28)

2.8.0 (2020-10-28)

Features

  • eslint-plugin-formatjs: support string concat, fix #2252 (cbeee5e)

2.7.17 (2020-10-27)

Note: Version bump only for package eslint-plugin-formatjs

2.7.16 (2020-10-25)

Bug Fixes

  • eslint-plugin-formatjs: fix extraction filter, fix #2238 (f9f2c3e)

2.7.15 (2020-10-10)

Note: Version bump only for package eslint-plugin-formatjs

2.7.14 (2020-10-08)

Note: Version bump only for package eslint-plugin-formatjs

2.7.13 (2020-10-01)

Note: Version bump only for package eslint-plugin-formatjs

2.7.12 (2020-09-25)

Note: Version bump only for package eslint-plugin-formatjs

2.7.11 (2020-09-18)

Note: Version bump only for package eslint-plugin-formatjs

2.7.10 (2020-09-12)

Note: Version bump only for package eslint-plugin-formatjs

2.7.9 (2020-09-09)

Bug Fixes

  • eslint-plugin-formatjs: fix enforce-id fixer logic, fix #2072 (00f56cb)

2.7.8 (2020-09-03)

Note: Version bump only for package eslint-plugin-formatjs

2.7.7 (2020-08-30)

Note: Version bump only for package eslint-plugin-formatjs

2.7.6 (2020-08-28)

Note: Version bump only for package eslint-plugin-formatjs

2.7.5 (2020-08-25)

Note: Version bump only for package eslint-plugin-formatjs

2.7.4 (2020-08-22)

Note: Version bump only for package eslint-plugin-formatjs

2.7.3 (2020-08-21)

Note: Version bump only for package eslint-plugin-formatjs

2.7.2 (2020-08-20)

Bug Fixes

  • bump intl-messageformat-parser (8bbfa04)

2.7.1 (2020-08-19)

Note: Version bump only for package eslint-plugin-formatjs

2.7.0 (2020-08-19)

Features

  • eslint-plugin-formatjs: remove supported-datetime-skeleton (ad60b3b)

2.6.5 (2020-08-18)

Note: Version bump only for package eslint-plugin-formatjs

2.6.4 (2020-08-17)

Note: Version bump only for package eslint-plugin-formatjs

2.6.3 (2020-08-14)

Note: Version bump only for package eslint-plugin-formatjs

2.6.2 (2020-08-14)

Note: Version bump only for package eslint-plugin-formatjs

2.6.1 (2020-08-13)

Note: Version bump only for package eslint-plugin-formatjs

2.6.0 (2020-08-10)

Features

  • eslint-plugin-formatjs: add enforce-id rule (5205b68), closes #1907

2.5.7 (2020-07-24)

Note: Version bump only for package eslint-plugin-formatjs

2.5.6 (2020-07-21)

Note: Version bump only for package eslint-plugin-formatjs

2.5.5 (2020-07-17)

Note: Version bump only for package eslint-plugin-formatjs

2.5.4 (2020-07-16)

Note: Version bump only for package eslint-plugin-formatjs

2.5.3 (2020-07-14)

Note: Version bump only for package eslint-plugin-formatjs

2.5.2 (2020-07-14)

Note: Version bump only for package eslint-plugin-formatjs

2.5.1 (2020-07-14)

Note: Version bump only for package eslint-plugin-formatjs

2.5.0 (2020-07-14)

Bug Fixes

  • eslint-plugin-formatjs: bump eslint peerDep to v7, fix #1827 (60056dc)

Features

  • publish (b6e3465)
  • eslint-plugin-formatjs: remove references to @formatjs/macro (831feed)

2.4.0 (2020-07-09)

Features

  • eslint-plugin-formatjs: remove references to @formatjs/macro (831feed)

2.3.21 (2020-07-03)

Note: Version bump only for package eslint-plugin-formatjs

2.3.20 (2020-07-03)

Note: Version bump only for package eslint-plugin-formatjs

2.3.19 (2020-07-03)

Note: Version bump only for package eslint-plugin-formatjs

2.3.18 (2020-07-01)

Note: Version bump only for package eslint-plugin-formatjs

2.3.17 (2020-06-26)

Note: Version bump only for package eslint-plugin-formatjs

2.3.16 (2020-06-23)

Note: Version bump only for package eslint-plugin-formatjs

2.3.15 (2020-06-23)

Note: Version bump only for package eslint-plugin-formatjs

2.3.14 (2020-06-20)

Note: Version bump only for package eslint-plugin-formatjs

2.3.13 (2020-06-06)

Note: Version bump only for package eslint-plugin-formatjs

2.3.12 (2020-06-06)

Note: Version bump only for package eslint-plugin-formatjs

2.3.11 (2020-06-04)

Note: Version bump only for package eslint-plugin-formatjs

2.3.10 (2020-06-04)

Note: Version bump only for package eslint-plugin-formatjs

2.3.9 (2020-06-03)

Note: Version bump only for package eslint-plugin-formatjs

2.3.8 (2020-05-28)

Note: Version bump only for package eslint-plugin-formatjs

2.3.7 (2020-05-27)

Note: Version bump only for package eslint-plugin-formatjs

2.3.6 (2020-05-25)

Note: Version bump only for package eslint-plugin-formatjs

2.3.5 (2020-05-23)

  • Extracted CLDR unit data has breaking schema change

2.3.4 (2020-05-23)

Note: Version bump only for package eslint-plugin-formatjs

2.3.3 (2020-05-22)

Bug Fixes

  • eslint-plugin-formatjs: add no-id to index (8e5c0af)
  • eslint-plugin-formatjs: fix issue where highlight was not on message/description node (0ab41a9)

2.3.2 (2020-05-21)

Note: Version bump only for package eslint-plugin-formatjs

2.3.1 (2020-05-21)

Note: Version bump only for package eslint-plugin-formatjs

2.3.0 (2020-05-16)

Features

  • eslint-plugin-formatjs: add rule for no-id (d7d8159)

2.2.5 (2020-05-06)

Note: Version bump only for package eslint-plugin-formatjs

2.2.4 (2020-05-05)

Note: Version bump only for package eslint-plugin-formatjs

2.2.3 (2020-04-28)

Note: Version bump only for package eslint-plugin-formatjs

2.2.2 (2020-04-25)

Bug Fixes

  • eslint-plugin-formatjs: rm hard dep on @typescript-eslint/typescript-estree, fix #666 (ed40a8b)

2.2.1 (2020-04-24)

Bug Fixes

  • eslint-plugin-formatjs: add missing dep (776390e)

2.2.0 (2020-04-24)

Bug Fixes

  • eslint-plugin-formatjs: fix issues with spread element in (68acfaf)

Features

  • eslint-plugin-formatjs: Add literal option to enforce-description & enforce-default-message (f20a2d4)

2.1.5 (2020-04-20)

Note: Version bump only for package eslint-plugin-formatjs

2.1.4 (2020-04-14)

Note: Version bump only for package eslint-plugin-formatjs

2.1.3 (2020-04-12)

Note: Version bump only for package eslint-plugin-formatjs

2.1.2 (2020-04-11)

Note: Version bump only for package eslint-plugin-formatjs

2.1.1 (2020-03-30)

Note: Version bump only for package eslint-plugin-formatjs

2.1.0 (2020-03-29)

Features

  • eslint-plugin-formatjs: add no-multiple-whitespaces rule (27222ab)

2.0.2 (2020-03-18)

Note: Version bump only for package eslint-plugin-formatjs

2.0.1 (2020-03-05)

Note: Version bump only for package eslint-plugin-formatjs

2.0.0 (2020-03-04)

Features

  • intl-messageformat-parser: Add native support for parsing XML tag (51c49fa)

BREAKING CHANGES

  • intl-messageformat-parser: This changes the AST and causes potential conflicts with previous parser version fix(eslint-plugin-formatjs): Adapt to new parser chore(babel-plugin-react-intl): update package lock

1.6.0 (2020-03-01)

Features

  • eslint-plugin-formatjs: add support for defaultMessage (#524) (63742d6)

1.5.11 (2020-01-27)

Note: Version bump only for package eslint-plugin-formatjs

1.5.10 (2020-01-22)

Note: Version bump only for package eslint-plugin-formatjs

1.5.9 (2020-01-09)

Note: Version bump only for package eslint-plugin-formatjs

1.5.8 (2020-01-08)

Note: Version bump only for package eslint-plugin-formatjs

1.5.7 (2020-01-06)

Bug Fixes

  • eslint-plugin-format: fix eslint-plugin-formatjs type error (b647552)

1.5.6 (2019-12-27)

Note: Version bump only for package eslint-plugin-formatjs

1.5.5 (2019-12-26)

Bug Fixes

  • eslint-plugin-formatjs: ignore msg decl for enforce-placeholders, fix #356 (91915b8)

1.5.4 (2019-12-04)

Note: Version bump only for package eslint-plugin-formatjs

1.5.3 (2019-12-02)

Note: Version bump only for package eslint-plugin-formatjs

1.5.2 (2019-12-01)

Note: Version bump only for package eslint-plugin-formatjs

1.5.1 (2019-11-26)

Bug Fixes

  • eslint-plugin-formatjs: handle non-literal value in descriptor (b74e0f6), closes #304

1.5.0 (2019-11-25)

Bug Fixes

  • intl-messageformat-parser: exclude some more unsupported pattern (07ec1d1)

Features

  • eslint-plugin-formatjs: add supported-datetime-skeleton rules (c121a9a)

1.4.3 (2019-11-25)

Note: Version bump only for package eslint-plugin-formatjs

1.4.2 (2019-11-23)

Bug Fixes

  • eslint-plugin-formatjs: handle spread attributes in JSX, fix #292 (c7e0f6c)

1.4.1 (2019-11-21)

Note: Version bump only for package eslint-plugin-formatjs

1.4.0 (2019-11-20)

Features

  • eslint-plugin-formatjs: report when message is invalid ICU (916d063)

1.3.1 (2019-11-10)

Bug Fixes

  • intl-messageformat: pass raw locales down to individual formatters (3a74c2e), closes #255

1.3.0 (2019-11-07)

Features

  • eslint-plugin-formatjs: Add enforce-placeholders rule (12b9ac1)

1.2.0 (2019-10-31)

Features

  • eslint-plugin-formatjs: add enforce-plural-rules rule (b6765a6)
  • eslint-plugin-formatjs: Also check intl.formatMessage calls (d036de7)

1.1.1 (2019-10-30)

Bug Fixes

  • eslint-plugin-formatjs: Fix selectordinal check in blacklist-elements (2149789)

1.1.0 (2019-10-30)

Bug Fixes

  • @formatjs/macro: fix tsconfig build to output the correct dir (825d2cb)

Features

  • eslint-plugin-formatjs: Add support for FormattedMessage (2df544e)

1.0.2 (2019-10-30)

Note: Version bump only for package eslint-plugin-formatjs

1.0.1 (2019-10-30)

Note: Version bump only for package eslint-plugin-formatjs