eslint-plugin-formatjs 4.2.0 → 4.2.2

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.
Files changed (88) hide show
  1. package/index.d.ts +22 -0
  2. package/index.d.ts.map +1 -0
  3. package/index.js +38 -0
  4. package/package.json +3 -3
  5. package/rules/blocklist-elements.d.ts +4 -0
  6. package/rules/blocklist-elements.d.ts.map +1 -0
  7. package/rules/blocklist-elements.js +127 -0
  8. package/rules/enforce-default-message.d.ts +4 -0
  9. package/rules/enforce-default-message.d.ts.map +1 -0
  10. package/rules/enforce-default-message.js +57 -0
  11. package/rules/enforce-description.d.ts +4 -0
  12. package/rules/enforce-description.d.ts.map +1 -0
  13. package/rules/enforce-description.js +54 -0
  14. package/rules/enforce-id.d.ts +4 -0
  15. package/rules/enforce-id.d.ts.map +1 -0
  16. package/rules/enforce-id.js +125 -0
  17. package/rules/enforce-placeholders.d.ts +4 -0
  18. package/rules/enforce-placeholders.d.ts.map +1 -0
  19. package/rules/enforce-placeholders.js +118 -0
  20. package/rules/enforce-plural-rules.d.ts +4 -0
  21. package/rules/enforce-plural-rules.d.ts.map +1 -0
  22. package/rules/enforce-plural-rules.js +104 -0
  23. package/rules/no-camel-case.d.ts +4 -0
  24. package/rules/no-camel-case.d.ts.map +1 -0
  25. package/rules/no-camel-case.js +77 -0
  26. package/rules/no-complex-selectors.d.ts +4 -0
  27. package/rules/no-complex-selectors.d.ts.map +1 -0
  28. package/rules/no-complex-selectors.js +99 -0
  29. package/rules/no-emoji.d.ts +4 -0
  30. package/rules/no-emoji.d.ts.map +1 -0
  31. package/rules/no-emoji.js +47 -0
  32. package/rules/no-id.d.ts +4 -0
  33. package/rules/no-id.d.ts.map +1 -0
  34. package/rules/no-id.js +52 -0
  35. package/rules/no-invalid-icu.d.ts +4 -0
  36. package/rules/no-invalid-icu.d.ts.map +1 -0
  37. package/rules/no-invalid-icu.js +54 -0
  38. package/rules/no-literal-string-in-jsx.d.ts +4 -0
  39. package/rules/no-literal-string-in-jsx.d.ts.map +1 -0
  40. package/rules/no-literal-string-in-jsx.js +166 -0
  41. package/rules/no-multiple-plurals.d.ts +4 -0
  42. package/rules/no-multiple-plurals.d.ts.map +1 -0
  43. package/rules/no-multiple-plurals.js +71 -0
  44. package/rules/no-multiple-whitespaces.d.ts +4 -0
  45. package/rules/no-multiple-whitespaces.d.ts.map +1 -0
  46. package/rules/no-multiple-whitespaces.js +146 -0
  47. package/rules/no-offset.d.ts +4 -0
  48. package/rules/no-offset.d.ts.map +1 -0
  49. package/rules/no-offset.js +70 -0
  50. package/util.d.ts +24 -0
  51. package/util.d.ts.map +1 -0
  52. package/util.js +240 -0
  53. package/BUILD +0 -89
  54. package/CHANGELOG.md +0 -892
  55. package/index.ts +0 -38
  56. package/rules/blocklist-elements.ts +0 -159
  57. package/rules/enforce-default-message.ts +0 -71
  58. package/rules/enforce-description.ts +0 -68
  59. package/rules/enforce-id.ts +0 -171
  60. package/rules/enforce-placeholders.ts +0 -161
  61. package/rules/enforce-plural-rules.ts +0 -134
  62. package/rules/no-camel-case.ts +0 -97
  63. package/rules/no-complex-selectors.ts +0 -125
  64. package/rules/no-emoji.ts +0 -60
  65. package/rules/no-id.ts +0 -63
  66. package/rules/no-invalid-icu.ts +0 -69
  67. package/rules/no-literal-string-in-jsx.ts +0 -213
  68. package/rules/no-multiple-plurals.ts +0 -89
  69. package/rules/no-multiple-whitespaces.ts +0 -194
  70. package/rules/no-offset.ts +0 -88
  71. package/tests/blocklist-elements.test.ts +0 -120
  72. package/tests/enforce-default-message.test.ts +0 -260
  73. package/tests/enforce-description.test.ts +0 -117
  74. package/tests/enforce-id.test.ts +0 -209
  75. package/tests/enforce-placeholders.test.ts +0 -170
  76. package/tests/enforce-plural-rules.test.ts +0 -86
  77. package/tests/fixtures.ts +0 -15
  78. package/tests/no-camel-case.test.ts +0 -31
  79. package/tests/no-complex-selectors.test.ts +0 -125
  80. package/tests/no-id.test.ts +0 -151
  81. package/tests/no-invalid-icu.test.ts +0 -106
  82. package/tests/no-literal-string-in-jsx.test.ts +0 -213
  83. package/tests/no-multiple-plurals.test.ts +0 -42
  84. package/tests/no-multiple-whitespaces.test.ts +0 -100
  85. package/tests/no-offset.test.ts +0 -41
  86. package/tests/util.ts +0 -26
  87. package/tsconfig.json +0 -5
  88. package/util.ts +0 -307
@@ -1,170 +0,0 @@
1
- import enforcePlaceholders from '../rules/enforce-placeholders'
2
- import {ruleTester} from './util'
3
- import {dynamicMessage, noMatch, spreadJsx, emptyFnCall} from './fixtures'
4
- ruleTester.run('enforce-placeholders', enforcePlaceholders, {
5
- valid: [
6
- `intl.formatMessage({
7
- defaultMessage: '{count, plural, one {#} other {# more}}',
8
- description: 'asd'
9
- }, {count: 1})`,
10
- `intl.formatMessage({
11
- defaultMessage: '{count, plural, one {#} other {# more}}',
12
- description: 'asd'
13
- }, {'count': 1})`,
14
- `import {FormattedMessage} from 'react-intl'
15
- const a = <FormattedMessage
16
- defaultMessage="{count, plural, one {#} other {# more}}"
17
- values={{ count: 1}} />
18
- `,
19
- `import {FormattedMessage} from 'react-intl'
20
- const a = <FormattedMessage
21
- defaultMessage="{count, plural, one {#} other {# more}} {bar}"
22
- values={{ 'count': 1, bar: 2}} />
23
- `,
24
- `import {defineMessages, _} from 'react-intl'
25
- defineMessages({
26
- foo: {
27
- defaultMessage: '{count, plural, one {#} other {# more}}',
28
- description: 'asd'
29
- }
30
- })
31
- defineMessage({
32
- defaultMessage: '{count, plural, one {#} other {# more}}',
33
- description: 'asd'
34
- })
35
- `,
36
- `
37
- intl.formatMessage({
38
- defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}',
39
- description: 'asd'
40
- }, {
41
- count: 1,
42
- a: (...chunks) => <a>{chunks}</a>
43
- })
44
- `,
45
- `
46
- intl.formatMessage({
47
- defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}',
48
- description: 'asd'
49
- }, {
50
- ...foo,
51
- count: 1,
52
- a: (...chunks) => <a>{chunks}</a>
53
- })
54
- `,
55
- dynamicMessage,
56
- noMatch,
57
- spreadJsx,
58
- emptyFnCall,
59
- {
60
- code: `
61
- intl.formatMessage({
62
- defaultMessage: '{count, plural, one {#} other {# more}}',
63
- description: 'asd'
64
- })`,
65
- options: [{ignoreList: ['count']}],
66
- },
67
- {
68
- code: `
69
- intl.formatMessage({
70
- defaultMessage: '<b>foo</b>',
71
- description: 'asd'
72
- })`,
73
- options: [{ignoreList: ['b']}],
74
- },
75
- ],
76
- invalid: [
77
- {
78
- code: `
79
- intl.formatMessage({
80
- defaultMessage: '{count, plural, one {#} other {# more}}',
81
- description: 'asd'
82
- })`,
83
- errors: [
84
- {
85
- message: 'Missing value for placeholder "count"',
86
- },
87
- ],
88
- },
89
- {
90
- code: `
91
- intl.formatMessage({
92
- defaultMessage: '<b>foo</b>',
93
- description: 'asd'
94
- })`,
95
- errors: [{message: 'Missing value for placeholder "b"'}],
96
- },
97
- {
98
- code: `
99
- intl.formatMessage({
100
- defaultMessage: '{aDifferentKey, plural, one {#} other {# more}}',
101
- description: 'asd'
102
- }, {foo: 1})`,
103
- errors: [
104
- {
105
- message: 'Missing value for placeholder "aDifferentKey"',
106
- },
107
- ],
108
- },
109
- {
110
- code: `
111
- import {FormattedMessage} from 'react-intl'
112
- const a = <FormattedMessage
113
- defaultMessage="{count, plural, one {#} other {# more}}"
114
- />`,
115
- errors: [
116
- {
117
- message: 'Missing value for placeholder "count"',
118
- },
119
- ],
120
- },
121
- {
122
- code: `
123
- import {FormattedMessage} from 'react-intl'
124
- const a = <FormattedMessage
125
- defaultMessage="{count, plural, one {#} other {# more}}"
126
- values={{foo: 1}}
127
- />`,
128
- errors: [
129
- {
130
- message: 'Missing value for placeholder "count"',
131
- },
132
- ],
133
- },
134
- {
135
- code: `
136
- import {FormattedMessage} from 'react-intl'
137
- const a = <FormattedMessage id="myMessage" defaultMessage="Hello {name}" values={{ notName: "Denis" }} />`,
138
- errors: [
139
- {
140
- message: 'Missing value for placeholder "name"',
141
- },
142
- ],
143
- },
144
- {
145
- code: `
146
- import {FormattedMessage} from 'react-intl'
147
- const a = <FormattedMessage defaultMessage="Hello <bold>{name}</bold>" values={{ bold: (msg) => <strong>{msg}</strong> }} />`,
148
- errors: [
149
- {
150
- message: 'Missing value for placeholder "name"',
151
- },
152
- ],
153
- },
154
- {
155
- code: `
156
- intl.formatMessage({
157
- defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}',
158
- description: 'asd'
159
- }, {
160
- count: 1,
161
- })
162
- `,
163
- errors: [
164
- {
165
- message: 'Missing value for placeholder "a"',
166
- },
167
- ],
168
- },
169
- ],
170
- })
@@ -1,86 +0,0 @@
1
- import enforcePluralRules from '../rules/enforce-plural-rules'
2
- import {ruleTester} from './util'
3
- import {dynamicMessage, noMatch, spreadJsx, emptyFnCall} from './fixtures'
4
- ruleTester.run('enforce-plural-rules', enforcePluralRules, {
5
- valid: [
6
- {
7
- code: `import {defineMessage} from 'react-intl'
8
- defineMessage({
9
- defaultMessage: '{count, plural, one {#} other {# more}}',
10
- description: 'asd'
11
- })`,
12
- options: [
13
- {
14
- one: true,
15
- },
16
- ],
17
- },
18
- {
19
- code: `import {defineMessage} from 'react-intl'
20
- defineMessage({
21
- defaultMessage: '{count, plural, one {#} other {# more}}',
22
- description: 'asd'
23
- })`,
24
- options: [
25
- {
26
- other: true,
27
- },
28
- ],
29
- },
30
- {
31
- code: `import {defineMessage} from 'react-intl'
32
- defineMessage({
33
- defaultMessage: '{count, plural, one {#} other {# more}}',
34
- description: 'asd'
35
- })`,
36
- options: [
37
- {
38
- one: true,
39
- other: true,
40
- zero: false,
41
- },
42
- ],
43
- },
44
- dynamicMessage,
45
- noMatch,
46
- spreadJsx,
47
- emptyFnCall,
48
- ],
49
- invalid: [
50
- {
51
- code: `
52
- import {defineMessage} from 'react-intl'
53
- defineMessage({
54
- defaultMessage: '{count, plural, one {#} other {# more}}'
55
- })`,
56
- options: [
57
- {
58
- one: false,
59
- },
60
- ],
61
- errors: [
62
- {
63
- message: 'Plural rule "one" is forbidden',
64
- },
65
- ],
66
- },
67
- {
68
- code: `
69
- import {defineMessage} from 'react-intl'
70
- defineMessage({
71
- defaultMessage: '{count, plural, one {#} other{other}}'
72
- })`,
73
- options: [
74
- {
75
- one: true,
76
- two: true,
77
- },
78
- ],
79
- errors: [
80
- {
81
- message: 'Missing plural rule "two"',
82
- },
83
- ],
84
- },
85
- ],
86
- })
package/tests/fixtures.ts DELETED
@@ -1,15 +0,0 @@
1
- export const noMatch = `_()`
2
- export const emptyFnCall = `
3
- import {defineMessage} from 'react-intl'
4
- _()`
5
- export const spreadJsx = `
6
- import {FormattedMessage} from 'react-intl'
7
- function foo (props) {
8
- return (
9
- <FormattedMessage {...props} />
10
- )
11
- }
12
- `
13
- export const dynamicMessage = `
14
- import {defineMessage} from 'react-intl'
15
- defineMessage({id, defaultMessage, description})`
@@ -1,31 +0,0 @@
1
- import {ruleTester} from './util'
2
- import noCamelCase from '../rules/no-camel-case'
3
- import {dynamicMessage, noMatch, spreadJsx, emptyFnCall} from './fixtures'
4
-
5
- ruleTester.run('no-camel-case', noCamelCase, {
6
- valid: [
7
- `import {defineMessage} from 'react-intl'
8
- defineMessage({
9
- defaultMessage: 'a {placeholder}',
10
- description: 'asd'
11
- })`,
12
- dynamicMessage,
13
- noMatch,
14
- spreadJsx,
15
- emptyFnCall,
16
- ],
17
- invalid: [
18
- {
19
- code: `
20
- import {defineMessage} from 'react-intl'
21
- defineMessage({
22
- defaultMessage: 'a {placeHolder}'
23
- })`,
24
- errors: [
25
- {
26
- message: 'Camel case arguments are not allowed',
27
- },
28
- ],
29
- },
30
- ],
31
- })
@@ -1,125 +0,0 @@
1
- import noComplexSelectors from '../rules/no-complex-selectors'
2
- import {ruleTester} from './util'
3
- import {dynamicMessage, noMatch, spreadJsx, emptyFnCall} from './fixtures'
4
- ruleTester.run('no-complex-selectors', noComplexSelectors, {
5
- valid: [
6
- `import {defineMessage} from 'react-intl'
7
- defineMessage({
8
- defaultMessage: 'a {placeholder}',
9
- description: 'asd'
10
- })`,
11
- dynamicMessage,
12
- noMatch,
13
- spreadJsx,
14
- emptyFnCall,
15
- {
16
- code: `
17
- import {defineMessage} from 'react-intl'
18
- defineMessage({
19
- defaultMessage: '{p1, plural, one{one} other{other}}'
20
- })`,
21
- options: [
22
- {
23
- limit: 2,
24
- },
25
- ],
26
- },
27
- ],
28
- invalid: [
29
- // Syntax error
30
- {
31
- code: `
32
- import {defineMessage} from 'react-intl'
33
- defineMessage({
34
- defaultMessage: '{'
35
- })
36
- `,
37
- options: [{limit: 1}],
38
- errors: [{message: 'EXPECT_ARGUMENT_CLOSING_BRACE'}],
39
- },
40
- {
41
- code: `
42
- import {defineMessage} from 'react-intl'
43
- defineMessage({
44
- defaultMessage: '{p1, plural, one{one} other{other}} {p2, plural, one{two} other{other}}'
45
- })`,
46
- options: [
47
- {
48
- limit: 1,
49
- },
50
- ],
51
- errors: [
52
- {
53
- message: 'Message complexity is too high (4 vs limit at 1)',
54
- },
55
- ],
56
- },
57
- {
58
- code: `
59
- import {defineMessage} from 'react-intl'
60
- defineMessage({
61
- defaultMessage: \`I have {count, plural,
62
- one{a {
63
- gender, select,
64
- male{male}
65
- female{female}
66
- other{other}
67
- } <b>dog</b>
68
- }
69
- other{many dogs}} and {count, plural,
70
- one{a {
71
- gender, select,
72
- male{male}
73
- female{female}
74
- other{other}
75
- } <strong>cat</strong>
76
- }
77
- other{many cats}}\`
78
- })`,
79
- options: [
80
- {
81
- limit: 3,
82
- },
83
- ],
84
- errors: [
85
- {
86
- message: 'Message complexity is too high (16 vs limit at 3)',
87
- },
88
- ],
89
- },
90
- {
91
- code: `
92
- import {defineMessage} from 'react-intl'
93
- defineMessage({
94
- defaultMessage: '{p1, plural, one{{p2, plural, one{two} other{other}}} other{other}}'
95
- })`,
96
- options: [
97
- {
98
- limit: 1,
99
- },
100
- ],
101
- errors: [
102
- {
103
- message: 'Message complexity is too high (3 vs limit at 1)',
104
- },
105
- ],
106
- },
107
- {
108
- code: `
109
- import {defineMessage} from 'react-intl'
110
- defineMessage({
111
- defaultMessage: '{p1, plural, one{one {foo, select, bar{two} baz{three} other{other}}} other{other}}'
112
- })`,
113
- options: [
114
- {
115
- limit: 1,
116
- },
117
- ],
118
- errors: [
119
- {
120
- message: 'Message complexity is too high (4 vs limit at 1)',
121
- },
122
- ],
123
- },
124
- ],
125
- })
@@ -1,151 +0,0 @@
1
- import noId from '../rules/no-id'
2
- import {ruleTester} from './util'
3
- import {dynamicMessage, noMatch, spreadJsx, emptyFnCall} from './fixtures'
4
- ruleTester.run('no-id', noId, {
5
- valid: [
6
- `intl.formatMessage({
7
- defaultMessage: '{count, plural, one {#} other {# more}}',
8
- description: 'asd'
9
- }, {count: 1})`,
10
- `intl.formatMessage({
11
- defaultMessage: '{count, plural, one {#} other {# more}}',
12
- description: 'asd'
13
- }, {'count': 1})`,
14
- `import {FormattedMessage} from 'react-intl'
15
- const a = <FormattedMessage
16
- defaultMessage="{count, plural, one {#} other {# more}}"
17
- values={{ count: 1}} />
18
- `,
19
- `import {FormattedMessage} from 'react-intl'
20
- const a = <FormattedMessage
21
- defaultMessage="{count, plural, one {#} other {# more}} {bar}"
22
- values={{ 'count': 1, bar: 2}} />
23
- `,
24
- `import {defineMessages, _} from 'react-intl'
25
- defineMessages({
26
- foo: {
27
- defaultMessage: '{count, plural, one {#} other {# more}}',
28
- description: 'asd'
29
- }
30
- })
31
- defineMessage({
32
- defaultMessage: '{count, plural, one {#} other {# more}}',
33
- description: 'asd'
34
- })
35
- `,
36
- `
37
- intl.formatMessage({
38
- defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}',
39
- description: 'asd'
40
- }, {
41
- count: 1,
42
- a: (...chunks) => <a>{chunks}</a>
43
- })
44
- `,
45
- `
46
- intl.formatMessage({
47
- defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}',
48
- description: 'asd'
49
- }, {
50
- ...foo,
51
- count: 1,
52
- a: (...chunks) => <a>{chunks}</a>
53
- })
54
- `,
55
- noMatch,
56
- spreadJsx,
57
- emptyFnCall,
58
- ],
59
- invalid: [
60
- {
61
- code: dynamicMessage,
62
- errors: [
63
- {
64
- message: 'Manual `id` are not allowed in message descriptor',
65
- },
66
- ],
67
- output: `
68
- import {defineMessage} from 'react-intl'
69
- defineMessage({ defaultMessage, description})`,
70
- },
71
- {
72
- code: `
73
- intl.formatMessage({ id: 'foo', defaultMessage: '{count, plural, one {#} other {# more}}', description: 'asd'
74
- })`,
75
- errors: [
76
- {
77
- message: 'Manual `id` are not allowed in message descriptor',
78
- },
79
- ],
80
- output: `
81
- intl.formatMessage({ defaultMessage: '{count, plural, one {#} other {# more}}', description: 'asd'
82
- })`,
83
- },
84
- {
85
- code: `
86
- intl.formatMessage({ id: 'bar', defaultMessage: '{aDifferentKey, plural, one {#} other {# more}}', description: 'asd'
87
- }, {foo: 1})`,
88
- errors: [
89
- {
90
- message: 'Manual `id` are not allowed in message descriptor',
91
- },
92
- ],
93
- output: `
94
- intl.formatMessage({ defaultMessage: '{aDifferentKey, plural, one {#} other {# more}}', description: 'asd'
95
- }, {foo: 1})`,
96
- },
97
- {
98
- code: `
99
- import {FormattedMessage} from 'react-intl'
100
- const a = <FormattedMessage
101
- id={id}
102
- defaultMessage="{count, plural, one {#} other {# more}}"
103
- />`,
104
- errors: [
105
- {
106
- message: 'Manual `id` are not allowed in message descriptor',
107
- },
108
- ],
109
- output: `
110
- import {FormattedMessage} from 'react-intl'
111
- const a = <FormattedMessage
112
-
113
- defaultMessage="{count, plural, one {#} other {# more}}"
114
- />`,
115
- },
116
- {
117
- code: `
118
- import {FormattedMessage} from 'react-intl'
119
- const a = (
120
- <FormattedMessage id="bas" defaultMessage="{count, plural, one {#} other {# more}}" values={{foo: 1}} />
121
- )`,
122
- errors: [
123
- {
124
- message: 'Manual `id` are not allowed in message descriptor',
125
- },
126
- ],
127
- output: `
128
- import {FormattedMessage} from 'react-intl'
129
- const a = (
130
- <FormattedMessage defaultMessage="{count, plural, one {#} other {# more}}" values={{foo: 1}} />
131
- )`,
132
- },
133
- {
134
- code: `
135
- intl.formatMessage({ id, defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}', description: 'asd'
136
- }, {
137
- count: 1,
138
- })`,
139
- errors: [
140
- {
141
- message: 'Manual `id` are not allowed in message descriptor',
142
- },
143
- ],
144
- output: `
145
- intl.formatMessage({ defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}', description: 'asd'
146
- }, {
147
- count: 1,
148
- })`,
149
- },
150
- ],
151
- })
@@ -1,106 +0,0 @@
1
- import noMalformedICU from '../rules/no-invalid-icu'
2
- import {ruleTester} from './util'
3
- import {dynamicMessage, noMatch, spreadJsx, emptyFnCall} from './fixtures'
4
-
5
- ruleTester.run('no-invalid-icu', noMalformedICU, {
6
- valid: [
7
- `intl.formatMessage({
8
- defaultMessage: '{count, plural, one {#} other {# more}}',
9
- description: 'asd'
10
- }, {count: 1})`,
11
- `intl.formatMessage({
12
- defaultMessage: '{count, plural, one {#} other {# more}}',
13
- description: 'asd'
14
- }, {'count': 1})`,
15
- `import {FormattedMessage} from 'react-intl'
16
- const a = <FormattedMessage
17
- defaultMessage="{count, plural, one {#} other {# more}}"
18
- values={{ count: 1}} />
19
- `,
20
- `import {FormattedMessage} from 'react-intl'
21
- const a = <FormattedMessage
22
- defaultMessage="{count, plural, one {#} other {# more}} {bar}"
23
- values={{ 'count': 1, bar: 2}} />
24
- `,
25
- `import {defineMessages, _} from 'react-intl'
26
- defineMessages({
27
- foo: {
28
- defaultMessage: '{count, plural, one {#} other {# more}}',
29
- description: 'asd'
30
- }
31
- })
32
- defineMessage({
33
- defaultMessage: '{count, plural, one {#} other {# more}}',
34
- description: 'asd'
35
- })
36
- `,
37
- `
38
- intl.formatMessage({
39
- defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}',
40
- description: 'asd'
41
- }, {
42
- count: 1,
43
- a: (...chunks) => <a>{chunks}</a>
44
- })
45
- `,
46
- `
47
- intl.formatMessage({
48
- defaultMessage: '{count, plural, one {<a>#</a>} other {# more}}',
49
- description: 'asd'
50
- }, {
51
- ...foo,
52
- count: 1,
53
- a: (...chunks) => <a>{chunks}</a>
54
- })
55
- `,
56
- dynamicMessage,
57
- noMatch,
58
- spreadJsx,
59
- emptyFnCall,
60
- {
61
- code: `
62
- intl.formatMessage({
63
- defaultMessage: '{count, plural, one {#} other {# more}}',
64
- description: 'asd'
65
- })`,
66
- options: [{ignoreList: ['count']}],
67
- },
68
- {
69
- code: `
70
- intl.formatMessage({
71
- defaultMessage: '<b>foo</b>',
72
- description: 'asd'
73
- })`,
74
- options: [{ignoreList: ['b']}],
75
- },
76
- ],
77
- invalid: [
78
- {
79
- code: `
80
- intl.formatMessage({
81
- defaultMessage: '{count, plural, {#} other {# more}}',
82
- description: 'asd'
83
- }, {
84
- count: 1
85
- })`,
86
- errors: [
87
- {
88
- message: 'Error parsing ICU string: EXPECT_PLURAL_ARGUMENT_SELECTOR',
89
- },
90
- ],
91
- },
92
-
93
- {
94
- code: `
95
- intl.formatMessage({
96
- defaultMessage: "{aDifferentKey, plur {#} other {# more}}" },
97
- { count: 1 }
98
- )`,
99
- errors: [
100
- {
101
- message: 'Error parsing ICU string: INVALID_ARGUMENT_TYPE',
102
- },
103
- ],
104
- },
105
- ],
106
- })