eslint-plugin-formatjs 5.3.1 → 5.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eslint-plugin-formatjs",
3
3
  "description": "ESLint plugin for formatjs",
4
- "version": "5.3.1",
4
+ "version": "5.4.1",
5
5
  "license": "MIT",
6
6
  "author": "Long Ho <holevietlong@gmail.com>",
7
7
  "dependencies": {
@@ -67,9 +67,19 @@ export function extractMessageDescriptor(node) {
67
67
  if (isStringLiteral(valueNode)) {
68
68
  value = valueNode.value;
69
69
  }
70
+ // like "`asd`"
70
71
  else if (isTemplateLiteralWithoutVar(valueNode)) {
71
72
  value = valueNode.quasis[0].value.cooked;
72
73
  }
74
+ // like "dedent`asd`"
75
+ else if (valueNode.type === 'TaggedTemplateExpression') {
76
+ const { quasi } = valueNode;
77
+ if (!isTemplateLiteralWithoutVar(quasi)) {
78
+ throw new Error('Tagged template expression must be no substitution');
79
+ }
80
+ value = quasi.quasis[0].value.cooked;
81
+ }
82
+ // like "`asd` + `asd`"
73
83
  else if (valueNode.type === 'BinaryExpression') {
74
84
  const [result, isStatic] = staticallyEvaluateStringConcat(valueNode);
75
85
  if (isStatic) {
@@ -132,9 +142,18 @@ function extractMessageDescriptorFromJSXElement(node) {
132
142
  value = result;
133
143
  }
134
144
  }
145
+ // like "`asd`"
135
146
  else if (isTemplateLiteralWithoutVar(expression)) {
136
147
  value = expression.quasis[0].value.cooked;
137
148
  }
149
+ // like "dedent`asd`"
150
+ else if (expression.type === 'TaggedTemplateExpression') {
151
+ const { quasi } = expression;
152
+ if (!isTemplateLiteralWithoutVar(quasi)) {
153
+ throw new Error('Tagged template expression must be no substitution');
154
+ }
155
+ value = quasi.quasis[0].value.cooked;
156
+ }
138
157
  }
139
158
  }
140
159
  switch (key.name) {
package/package.json CHANGED
@@ -1,24 +1,20 @@
1
1
  {
2
2
  "name": "eslint-plugin-formatjs",
3
3
  "description": "ESLint plugin for formatjs",
4
- "version": "5.3.1",
5
- "license": "MIT",
4
+ "version": "5.4.1",
6
5
  "author": "Long Ho <holevietlong@gmail.com>",
6
+ "bugs": "https://github.com/formatjs/formatjs/issues",
7
7
  "dependencies": {
8
+ "@formatjs/icu-messageformat-parser": "2.11.3",
9
+ "@formatjs/ts-transformer": "3.14.1",
8
10
  "@types/eslint": "^9.6.1",
9
11
  "@types/picomatch": "^3",
10
12
  "@typescript-eslint/utils": "^8.27.0",
11
13
  "magic-string": "^0.30.0",
12
14
  "picomatch": "2 || 3 || 4",
13
15
  "tslib": "^2.8.0",
14
- "unicode-emoji-utils": "^1.2.0",
15
- "@formatjs/icu-messageformat-parser": "2.11.2",
16
- "@formatjs/ts-transformer": "3.13.34"
17
- },
18
- "peerDependencies": {
19
- "eslint": "^9.23.0"
16
+ "unicode-emoji-utils": "^1.2.0"
20
17
  },
21
- "bugs": "https://github.com/formatjs/formatjs/issues",
22
18
  "homepage": "https://github.com/formatjs/formatjs#readme",
23
19
  "keywords": [
24
20
  "eslint",
@@ -26,6 +22,10 @@
26
22
  "formatjs",
27
23
  "i18n"
28
24
  ],
25
+ "license": "MIT",
29
26
  "main": "index.js",
27
+ "peerDependencies": {
28
+ "eslint": "9.30.1"
29
+ },
30
30
  "repository": "formatjs/formatjs.git"
31
31
  }
package/util.js CHANGED
@@ -74,9 +74,19 @@ function extractMessageDescriptor(node) {
74
74
  if (isStringLiteral(valueNode)) {
75
75
  value = valueNode.value;
76
76
  }
77
+ // like "`asd`"
77
78
  else if (isTemplateLiteralWithoutVar(valueNode)) {
78
79
  value = valueNode.quasis[0].value.cooked;
79
80
  }
81
+ // like "dedent`asd`"
82
+ else if (valueNode.type === 'TaggedTemplateExpression') {
83
+ const { quasi } = valueNode;
84
+ if (!isTemplateLiteralWithoutVar(quasi)) {
85
+ throw new Error('Tagged template expression must be no substitution');
86
+ }
87
+ value = quasi.quasis[0].value.cooked;
88
+ }
89
+ // like "`asd` + `asd`"
80
90
  else if (valueNode.type === 'BinaryExpression') {
81
91
  const [result, isStatic] = staticallyEvaluateStringConcat(valueNode);
82
92
  if (isStatic) {
@@ -139,9 +149,18 @@ function extractMessageDescriptorFromJSXElement(node) {
139
149
  value = result;
140
150
  }
141
151
  }
152
+ // like "`asd`"
142
153
  else if (isTemplateLiteralWithoutVar(expression)) {
143
154
  value = expression.quasis[0].value.cooked;
144
155
  }
156
+ // like "dedent`asd`"
157
+ else if (expression.type === 'TaggedTemplateExpression') {
158
+ const { quasi } = expression;
159
+ if (!isTemplateLiteralWithoutVar(quasi)) {
160
+ throw new Error('Tagged template expression must be no substitution');
161
+ }
162
+ value = quasi.quasis[0].value.cooked;
163
+ }
145
164
  }
146
165
  }
147
166
  switch (key.name) {