@@ -13,34 +13,42 @@ type ESLintComplexOption = RequireAtLeastOne<{
13
13
} > ;
14
14
type ESLintOptions = ESLintSimpleOption | ESLintComplexOption ;
15
15
16
+ const NOTICE_MATCH_PATTERNS =
17
+ "ESLint and TSLint use different strategies to match patterns. TSLint uses standard regular expressions, but ESLint .gitignore spec." ;
18
+
16
19
export const convertImportBlacklist : RuleConverter = tslintRule => {
17
- const tslintRules = tslintRule . ruleArguments ;
18
20
let ruleArguments : ESLintOptions = [ ] ;
21
+ const notices = [ ] ;
19
22
20
- if ( tslintRules . every ( isString ) ) {
21
- ruleArguments = tslintRules ;
23
+ if ( tslintRule . ruleArguments . every ( isString ) ) {
24
+ ruleArguments = tslintRule . ruleArguments ;
22
25
} else {
23
- ruleArguments = [
24
- tslintRules . reduce ( ( rules , rule ) => {
25
- if ( ! Array . isArray ( rule ) ) {
26
- const eslintRule = isString ( rule )
27
- ? rule
28
- : {
29
- name : Object . keys ( rule ) [ 0 ] ,
30
- importNames : Object . values ( rule ) [ 0 ] as string [ ] ,
31
- } ;
32
- return { ...rules , paths : [ ...( rules . paths || [ ] ) , eslintRule ] } ;
33
- } else if ( Array . isArray ( rule ) ) {
34
- return { ...rules , patterns : [ ...( rules . patterns || [ ] ) , ...rule ] } ;
35
- }
36
- return rules ;
37
- } , { } as ESLintComplexOption ) ,
38
- ] ;
26
+ const objectOption = tslintRule . ruleArguments . reduce ( ( rules , rule ) => {
27
+ if ( ! Array . isArray ( rule ) ) {
28
+ const eslintRule = isString ( rule )
29
+ ? rule
30
+ : {
31
+ name : Object . keys ( rule ) [ 0 ] ,
32
+ importNames : Object . values ( rule ) [ 0 ] as string [ ] ,
33
+ } ;
34
+ return { ...rules , paths : [ ...( rules . paths || [ ] ) , eslintRule ] } ;
35
+ }
36
+
37
+ return { ...rules , patterns : [ ...( rules . patterns || [ ] ) , ...rule ] } ;
38
+ } , { } as ESLintComplexOption ) ;
39
+
40
+ if ( "patterns" in objectOption && objectOption . patterns . length > 0 ) {
41
+ notices . push ( NOTICE_MATCH_PATTERNS ) ;
42
+ }
43
+
44
+ ruleArguments = [ objectOption ] ;
39
45
}
46
+
40
47
return {
41
48
rules : [
42
49
{
43
50
ruleArguments,
51
+ ...( notices . length > 0 && { notices } ) ,
44
52
ruleName : "no-restricted-imports" ,
45
53
} ,
46
54
] ,
0 commit comments