eslint-plugin-big-react-app-plugin 0.1.7 → 0.1.9

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 (29) hide show
  1. package/.history/lib/rules/public-api-imports_20251029144926.js +0 -1
  2. package/.history/lib/rules/public-api-imports_20251029144953.js +0 -1
  3. package/.history/lib/rules/public-api-imports_20251029145009.js +0 -1
  4. package/.history/lib/rules/public-api-imports_20251029145022.js +0 -1
  5. package/.history/lib/rules/public-api-imports_20251029145049.js +0 -1
  6. package/.history/lib/rules/public-api-imports_20251030070810.js +76 -0
  7. package/.history/lib/rules/public-api-imports_20251030070822.js +76 -0
  8. package/.history/lib/rules/public-api-imports_20251030072017.js +77 -0
  9. package/.history/lib/rules/public-api-imports_20251030072333.js +76 -0
  10. package/.history/lib/rules/public-api-imports_20251030072413.js +76 -0
  11. package/.history/lib/rules/public-api-imports_20251030072442.js +76 -0
  12. package/.history/lib/rules/public-api-imports_20251030072512.js +76 -0
  13. package/.history/lib/rules/public-api-imports_20251030073010.js +77 -0
  14. package/.history/lib/rules/public-api-imports_20251030073013.js +77 -0
  15. package/.history/lib/rules/public-api-imports_20251030073246.js +77 -0
  16. package/.history/package_20251030070953.json +33 -0
  17. package/.history/package_20251030073306.json +33 -0
  18. package/.history/tests/lib/rules/path-checker_20251030070901.js +44 -0
  19. package/.history/tests/lib/rules/public-api-imports_20251030070849.js +96 -0
  20. package/.history/tests/lib/rules/public-api-imports_20251030071316.js +96 -0
  21. package/.history/tests/lib/rules/public-api-imports_20251030071331.js +96 -0
  22. package/.history/tests/lib/rules/public-api-imports_20251030073042.js +96 -0
  23. package/.history/tests/lib/rules/public-api-imports_20251030073103.js +96 -0
  24. package/.history/tests/lib/rules/public-api-imports_20251030073107.js +96 -0
  25. package/.history/tests/lib/rules/public-api-imports_20251030073112.js +96 -0
  26. package/lib/rules/public-api-imports.js +3 -2
  27. package/package.json +1 -1
  28. package/tests/lib/rules/path-checker.js +32 -32
  29. package/tests/lib/rules/public-api-imports.js +23 -23
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @fileoverview public API path checker
3
+ * @author vasilii
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Requirements
9
+ //------------------------------------------------------------------------------
10
+
11
+ const rule = require("../../../lib/rules/public-api-imports"),
12
+ RuleTester = require("eslint").RuleTester;
13
+
14
+
15
+ //------------------------------------------------------------------------------
16
+ // Tests
17
+ //------------------------------------------------------------------------------
18
+
19
+ const ruleTester = new RuleTester({
20
+ parserOptions: {ecmaVersion: 6, sourceType: 'module'}
21
+ });
22
+
23
+ const aliasOptions = [
24
+ {
25
+ alias: '@'
26
+ }
27
+ ]
28
+
29
+ ruleTester.run("public-api-imports", rule, {
30
+ valid: [
31
+ {
32
+ code: "import { addCommentFormActions, addCommentFormReducer } from '../../model/slices/addCommentFormSlice'",
33
+ errors: [],
34
+ },
35
+ {
36
+ filename: `C:\Users\ADMIN\Documents\GitHub\ulbi\big-react-app\src\shared\config\storybook\StoreDecorator\StoreDecorator.tsx`,
37
+ code: "import { loginReducer } from '@/features/AuthByUsername/testing'",
38
+ errors: [],
39
+ options: [{
40
+ alias: '@',
41
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
42
+ }],
43
+ },
44
+ {
45
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article'",
46
+ errors: [],
47
+ options: aliasOptions,
48
+ },
49
+ {
50
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\file.test.ts',
51
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
52
+ errors: [],
53
+ options: [{
54
+ alias: '@',
55
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
56
+ }],
57
+ },
58
+ {
59
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\StoreDecorator.tsx',
60
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
61
+ errors: [],
62
+ options: [{
63
+ alias: '@',
64
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
65
+ }],
66
+ }
67
+ ],
68
+
69
+ invalid: [
70
+ {
71
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/model/file.ts'",
72
+ errors: [{ message: "Абсолютный импорт разрешен только из Public API (index.ts)"}],
73
+ options: aliasOptions,
74
+ },
75
+ {
76
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\StoreDecorator.tsx',
77
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing/file.tsx'",
78
+ errors: [{message: 'Абсолютный импорт разрешен только из Public API (index.ts)'}],
79
+ options: [{
80
+ alias: '@',
81
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
82
+ }],
83
+ },
84
+ {
85
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\forbidden.ts',
86
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
87
+ errors: [{message: 'Тестовые данные необходимо импортировать из publicApi/testing.ts'}],
88
+ options: [{
89
+ alias: '@',
90
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
91
+ }],
92
+ }
93
+
94
+ ],
95
+ });
96
+
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @fileoverview public API path checker
3
+ * @author vasilii
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Requirements
9
+ //------------------------------------------------------------------------------
10
+
11
+ const rule = require("../../../lib/rules/public-api-imports"),
12
+ RuleTester = require("eslint").RuleTester;
13
+
14
+
15
+ //------------------------------------------------------------------------------
16
+ // Tests
17
+ //------------------------------------------------------------------------------
18
+
19
+ const ruleTester = new RuleTester({
20
+ parserOptions: {ecmaVersion: 6, sourceType: 'module'}
21
+ });
22
+
23
+ const aliasOptions = [
24
+ {
25
+ alias: '@'
26
+ }
27
+ ]
28
+
29
+ ruleTester.run("public-api-imports", rule, {
30
+ valid: [
31
+ {
32
+ code: "import { addCommentFormActions, addCommentFormReducer } from '../../model/slices/addCommentFormSlice'",
33
+ errors: [],
34
+ },
35
+ {
36
+ filename: 'C:\Users\ADMIN\Documents\GitHub\ulbi\big-react-app\src\shared\config\storybook\StoreDecorator\StoreDecorator.tsx',
37
+ code: "import { loginReducer } from '@/features/AuthByUsername/testing'",
38
+ errors: [],
39
+ options: [{
40
+ alias: '@',
41
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
42
+ }],
43
+ },
44
+ {
45
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article'",
46
+ errors: [],
47
+ options: aliasOptions,
48
+ },
49
+ {
50
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\file.test.ts',
51
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
52
+ errors: [],
53
+ options: [{
54
+ alias: '@',
55
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
56
+ }],
57
+ },
58
+ {
59
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\StoreDecorator.tsx',
60
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
61
+ errors: [],
62
+ options: [{
63
+ alias: '@',
64
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
65
+ }],
66
+ }
67
+ ],
68
+
69
+ invalid: [
70
+ {
71
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/model/file.ts'",
72
+ errors: [{ message: "Абсолютный импорт разрешен только из Public API (index.ts)"}],
73
+ options: aliasOptions,
74
+ },
75
+ {
76
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\StoreDecorator.tsx',
77
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing/file.tsx'",
78
+ errors: [{message: 'Абсолютный импорт разрешен только из Public API (index.ts)'}],
79
+ options: [{
80
+ alias: '@',
81
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
82
+ }],
83
+ },
84
+ {
85
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\forbidden.ts',
86
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
87
+ errors: [{message: 'Тестовые данные необходимо импортировать из publicApi/testing.ts'}],
88
+ options: [{
89
+ alias: '@',
90
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
91
+ }],
92
+ }
93
+
94
+ ],
95
+ });
96
+
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @fileoverview public API path checker
3
+ * @author vasilii
4
+ */
5
+ "use strict";
6
+
7
+ //------------------------------------------------------------------------------
8
+ // Requirements
9
+ //------------------------------------------------------------------------------
10
+
11
+ const rule = require("../../../lib/rules/public-api-imports"),
12
+ RuleTester = require("eslint").RuleTester;
13
+
14
+
15
+ //------------------------------------------------------------------------------
16
+ // Tests
17
+ //------------------------------------------------------------------------------
18
+
19
+ const ruleTester = new RuleTester({
20
+ parserOptions: {ecmaVersion: 6, sourceType: 'module'}
21
+ });
22
+
23
+ const aliasOptions = [
24
+ {
25
+ alias: '@'
26
+ }
27
+ ]
28
+
29
+ ruleTester.run("public-api-imports", rule, {
30
+ valid: [
31
+ {
32
+ code: "import { addCommentFormActions, addCommentFormReducer } from '../../model/slices/addCommentFormSlice'",
33
+ errors: [],
34
+ },
35
+ {
36
+ filename: 'D:\\KonovalovVasiliy\\GitHub\\ulbi\\big-react-app\\src\\shared\\config\\storybook\\StoreDecorator\\StoreDecorator.tsx',
37
+ code: "import { loginReducer } from '@/features/AuthByUsername/testing'",
38
+ errors: [],
39
+ options: [{
40
+ alias: '@',
41
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
42
+ }],
43
+ },
44
+ {
45
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article'",
46
+ errors: [],
47
+ options: aliasOptions,
48
+ },
49
+ {
50
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\file.test.ts',
51
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
52
+ errors: [],
53
+ options: [{
54
+ alias: '@',
55
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
56
+ }],
57
+ },
58
+ {
59
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\StoreDecorator.tsx',
60
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
61
+ errors: [],
62
+ options: [{
63
+ alias: '@',
64
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
65
+ }],
66
+ }
67
+ ],
68
+
69
+ invalid: [
70
+ {
71
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/model/file.ts'",
72
+ errors: [{ message: "Абсолютный импорт разрешен только из Public API (index.ts)"}],
73
+ options: aliasOptions,
74
+ },
75
+ {
76
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\StoreDecorator.tsx',
77
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing/file.tsx'",
78
+ errors: [{message: 'Абсолютный импорт разрешен только из Public API (index.ts)'}],
79
+ options: [{
80
+ alias: '@',
81
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
82
+ }],
83
+ },
84
+ {
85
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\forbidden.ts',
86
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
87
+ errors: [{message: 'Тестовые данные необходимо импортировать из publicApi/testing.ts'}],
88
+ options: [{
89
+ alias: '@',
90
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
91
+ }],
92
+ }
93
+
94
+ ],
95
+ });
96
+
@@ -41,6 +41,7 @@ module.exports = {
41
41
  // example app/entities/Article
42
42
  const value = node.source.value;
43
43
  const importTo = alias ? value.replace(`${alias}/`, "") : value;
44
+
44
45
  //если путь относительный то выходим
45
46
  if(isPathRelative(importTo)){
46
47
  return;
@@ -63,9 +64,9 @@ module.exports = {
63
64
  }
64
65
 
65
66
  if(isTestingPublicApi){
66
- console.log("Работает")
67
67
  const currentFilePath = context.getFilename();
68
- const isCurrentFileTesting = testFilesPatterns.some(pattern=>micromatch.isMatch(currentFilePath, pattern))
68
+ const normalizedPath = currentFilePath.split(path.sep).join('/');
69
+ const isCurrentFileTesting = testFilesPatterns.some(pattern=>micromatch.isMatch(normalizedPath, pattern))
69
70
  if(!isCurrentFileTesting){
70
71
  context.report({node: node, message: 'Тестовые данные необходимо импортировать из publicApi/testing.ts'});
71
72
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-big-react-app-plugin",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "plugin for prod proj",
5
5
  "keywords": [
6
6
  "eslint",
@@ -4,41 +4,41 @@
4
4
  */
5
5
  "use strict";
6
6
 
7
- // //------------------------------------------------------------------------------
8
- // // Requirements
9
- // //------------------------------------------------------------------------------
7
+ //------------------------------------------------------------------------------
8
+ // Requirements
9
+ //------------------------------------------------------------------------------
10
10
 
11
- // const rule = require("../../../lib/rules/path-checker"),
12
- // RuleTester = require("eslint").RuleTester;
11
+ const rule = require("../../../lib/rules/path-checker"),
12
+ RuleTester = require("eslint").RuleTester;
13
13
 
14
14
 
15
- // //------------------------------------------------------------------------------
16
- // // Tests
17
- // //------------------------------------------------------------------------------
15
+ //------------------------------------------------------------------------------
16
+ // Tests
17
+ //------------------------------------------------------------------------------
18
18
 
19
- // const ruleTester = new RuleTester({
20
- // parserOptions:{ecmaVersion:6, sourceType:'module'}
21
- // });
22
- // ruleTester.run("path-checker", rule, {
23
- // valid: [
24
- // {
25
- // code: "import { HStack } from '../../../Stack/HStack/HStack'",
26
- // filename:'C:\\Users\\ADMIN\\Documents\\GitHub\\ulbi\big-react-app\\src\\shared\\ui\\Popups\\ui\\ListBox\\ListBox.tsx',
27
- // errors: [],
28
- // },
29
- // ],
19
+ const ruleTester = new RuleTester({
20
+ parserOptions:{ecmaVersion:6, sourceType:'module'}
21
+ });
22
+ ruleTester.run("path-checker", rule, {
23
+ valid: [
24
+ {
25
+ code: "import { HStack } from '../../../Stack/HStack/HStack'",
26
+ filename:'C:\\Users\\ADMIN\\Documents\\GitHub\\ulbi\big-react-app\\src\\shared\\ui\\Popups\\ui\\ListBox\\ListBox.tsx',
27
+ errors: [],
28
+ },
29
+ ],
30
30
 
31
- // invalid: [
32
- // {
33
- // code: "import { HStack } from 'shared/ui/Stack/index'",
34
- // filename:'C:\\Users\\ADMIN\\Documents\\GitHub\\ulbi\big-react-app\\src\\shared\\ui\\Popups\\ui\\ListBox\\ListBox.tsx',
35
- // errors: [{ message: "В рамках одного слайса все пути должны быть относительными" }],
36
- // options:[
37
- // {
38
- // alias:'@'
39
- // }
40
- // ]
41
- // },
31
+ invalid: [
32
+ {
33
+ code: "import { HStack } from 'shared/ui/Stack/index'",
34
+ filename:'C:\\Users\\ADMIN\\Documents\\GitHub\\ulbi\big-react-app\\src\\shared\\ui\\Popups\\ui\\ListBox\\ListBox.tsx',
35
+ errors: [{ message: "В рамках одного слайса все пути должны быть относительными" }],
36
+ options:[
37
+ {
38
+ alias:'@'
39
+ }
40
+ ]
41
+ },
42
42
 
43
- // ],
44
- // });
43
+ ],
44
+ });
@@ -40,30 +40,30 @@ ruleTester.run("public-api-imports", rule, {
40
40
  alias: '@',
41
41
  testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
42
42
  }],
43
+ },
44
+ {
45
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article'",
46
+ errors: [],
47
+ options: aliasOptions,
48
+ },
49
+ {
50
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\file.test.ts',
51
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
52
+ errors: [],
53
+ options: [{
54
+ alias: '@',
55
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
56
+ }],
57
+ },
58
+ {
59
+ filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\StoreDecorator.tsx',
60
+ code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
61
+ errors: [],
62
+ options: [{
63
+ alias: '@',
64
+ testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
65
+ }],
43
66
  }
44
- // {
45
- // code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article'",
46
- // errors: [],
47
- // options: aliasOptions,
48
- // },
49
- // {
50
- // filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\file.test.ts',
51
- // code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
52
- // errors: [],
53
- // options: [{
54
- // alias: '@',
55
- // testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
56
- // }],
57
- // },
58
- // {
59
- // filename: 'C:\\Users\\tim\\Desktop\\javascript\\production_project\\src\\entities\\StoreDecorator.tsx',
60
- // code: "import { addCommentFormActions, addCommentFormReducer } from '@/entities/Article/testing'",
61
- // errors: [],
62
- // options: [{
63
- // alias: '@',
64
- // testFilesPatterns: ['**/*.test.ts', '**/*.test.ts', '**/StoreDecorator.tsx']
65
- // }],
66
- // }
67
67
  ],
68
68
 
69
69
  invalid: [