eslint-plugin-formatjs 4.0.0 → 4.1.0
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.
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -1
- package/index.js +4 -0
- package/package.json +3 -3
- package/rules/no-invalid-icu.d.ts +4 -0
- package/rules/no-invalid-icu.d.ts.map +1 -0
- package/rules/no-invalid-icu.js +56 -0
package/index.d.ts
CHANGED
|
@@ -10,8 +10,10 @@ declare const plugin: {
|
|
|
10
10
|
'no-complex-selectors': import("eslint").Rule.RuleModule;
|
|
11
11
|
'no-emoji': import("eslint").Rule.RuleModule;
|
|
12
12
|
'no-id': import("eslint").Rule.RuleModule;
|
|
13
|
+
'no-literal-string-in-jsx': import("eslint").Rule.RuleModule;
|
|
13
14
|
'no-multiple-plurals': import("eslint").Rule.RuleModule;
|
|
14
15
|
'no-multiple-whitespaces': import("eslint").Rule.RuleModule;
|
|
16
|
+
'no-invalid-icu': import("eslint").Rule.RuleModule;
|
|
15
17
|
'no-offset': import("eslint").Rule.RuleModule;
|
|
16
18
|
};
|
|
17
19
|
};
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/eslint-plugin-formatjs/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/eslint-plugin-formatjs/index.ts"],"names":[],"mappings":"AAeA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;CAkBX,CAAA;AAED,oBAAY,MAAM,GAAG,OAAO,MAAM,CAAA"}
|
package/index.js
CHANGED
|
@@ -6,6 +6,7 @@ var enforce_default_message_1 = (0, tslib_1.__importDefault)(require("./rules/en
|
|
|
6
6
|
var enforce_description_1 = (0, tslib_1.__importDefault)(require("./rules/enforce-description"));
|
|
7
7
|
var enforce_id_1 = (0, tslib_1.__importDefault)(require("./rules/enforce-id"));
|
|
8
8
|
var enforce_placeholders_1 = (0, tslib_1.__importDefault)(require("./rules/enforce-placeholders"));
|
|
9
|
+
var no_invalid_icu_1 = (0, tslib_1.__importDefault)(require("./rules/no-invalid-icu"));
|
|
9
10
|
var enforce_plural_rules_1 = (0, tslib_1.__importDefault)(require("./rules/enforce-plural-rules"));
|
|
10
11
|
var no_camel_case_1 = (0, tslib_1.__importDefault)(require("./rules/no-camel-case"));
|
|
11
12
|
var no_complex_selectors_1 = (0, tslib_1.__importDefault)(require("./rules/no-complex-selectors"));
|
|
@@ -14,6 +15,7 @@ var no_id_1 = (0, tslib_1.__importDefault)(require("./rules/no-id"));
|
|
|
14
15
|
var no_multiple_plurals_1 = (0, tslib_1.__importDefault)(require("./rules/no-multiple-plurals"));
|
|
15
16
|
var no_multiple_whitespaces_1 = (0, tslib_1.__importDefault)(require("./rules/no-multiple-whitespaces"));
|
|
16
17
|
var no_offset_1 = (0, tslib_1.__importDefault)(require("./rules/no-offset"));
|
|
18
|
+
var no_literal_string_in_jsx_1 = (0, tslib_1.__importDefault)(require("./rules/no-literal-string-in-jsx"));
|
|
17
19
|
var plugin = {
|
|
18
20
|
rules: {
|
|
19
21
|
'blocklist-elements': blocklist_elements_1.default,
|
|
@@ -26,8 +28,10 @@ var plugin = {
|
|
|
26
28
|
'no-complex-selectors': no_complex_selectors_1.default,
|
|
27
29
|
'no-emoji': no_emoji_1.default,
|
|
28
30
|
'no-id': no_id_1.default,
|
|
31
|
+
'no-literal-string-in-jsx': no_literal_string_in_jsx_1.default,
|
|
29
32
|
'no-multiple-plurals': no_multiple_plurals_1.default,
|
|
30
33
|
'no-multiple-whitespaces': no_multiple_whitespaces_1.default,
|
|
34
|
+
'no-invalid-icu': no_invalid_icu_1.default,
|
|
31
35
|
'no-offset': no_offset_1.default,
|
|
32
36
|
},
|
|
33
37
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-formatjs",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "ESLint plugin for formatjs",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
},
|
|
21
21
|
"homepage": "https://github.com/formatjs/formatjs#readme",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@formatjs/icu-messageformat-parser": "2.1.
|
|
24
|
-
"@formatjs/ts-transformer": "3.9.
|
|
23
|
+
"@formatjs/icu-messageformat-parser": "2.1.4",
|
|
24
|
+
"@formatjs/ts-transformer": "3.9.9",
|
|
25
25
|
"@types/eslint": "7 || 8",
|
|
26
26
|
"@types/picomatch": "^2.3.0",
|
|
27
27
|
"@typescript-eslint/typescript-estree": "^5.9.1",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-invalid-icu.d.ts","sourceRoot":"","sources":["../../../../../../packages/eslint-plugin-formatjs/rules/no-invalid-icu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAA;AAoC3B,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,UA6BhB,CAAA;AAED,eAAe,IAAI,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var icu_messageformat_parser_1 = require("@formatjs/icu-messageformat-parser");
|
|
4
|
+
var util_1 = require("../util");
|
|
5
|
+
function checkNode(context, node) {
|
|
6
|
+
var msgs = (0, util_1.extractMessages)(node, context.settings);
|
|
7
|
+
if (!msgs.length) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
for (var _i = 0, msgs_1 = msgs; _i < msgs_1.length; _i++) {
|
|
11
|
+
var _a = msgs_1[_i][0], defaultMessage = _a.message.defaultMessage, messageNode = _a.messageNode;
|
|
12
|
+
if (!defaultMessage || !messageNode) {
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
(0, icu_messageformat_parser_1.parse)(defaultMessage, {
|
|
17
|
+
ignoreTag: context.settings['ignoreTag'],
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
var msg = e instanceof Error ? e.message : e;
|
|
22
|
+
context.report({
|
|
23
|
+
node: messageNode,
|
|
24
|
+
message: "Error parsing ICU string: ".concat(msg),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
var rule = {
|
|
30
|
+
meta: {
|
|
31
|
+
type: 'problem',
|
|
32
|
+
docs: {
|
|
33
|
+
description: "Make sure ICU messages are formatted correctly with no bad select statements, plurals, etc.",
|
|
34
|
+
category: 'Errors',
|
|
35
|
+
recommended: true,
|
|
36
|
+
},
|
|
37
|
+
fixable: 'code',
|
|
38
|
+
},
|
|
39
|
+
create: function (context) {
|
|
40
|
+
var callExpressionVisitor = function (node) {
|
|
41
|
+
return checkNode(context, node);
|
|
42
|
+
};
|
|
43
|
+
if (context.parserServices.defineTemplateBodyVisitor) {
|
|
44
|
+
return context.parserServices.defineTemplateBodyVisitor({
|
|
45
|
+
CallExpression: callExpressionVisitor,
|
|
46
|
+
}, {
|
|
47
|
+
CallExpression: callExpressionVisitor,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
JSXOpeningElement: function (node) { return checkNode(context, node); },
|
|
52
|
+
CallExpression: callExpressionVisitor,
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
exports.default = rule;
|