-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpatterns.js
More file actions
107 lines (82 loc) · 2.94 KB
/
Copy pathpatterns.js
File metadata and controls
107 lines (82 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// @ts-check
/** @param {string} suffix */
const fromSuffix = suffix => `**/*.${suffix}`;
/** @param {string} dir */
const fromDirectory = dir => `**/${dir}/**/*`;
/**
* @param {string[]} patterns
* @param {{ skipJSX?: boolean }} options
* @returns {string[]}
*/
export const withExtensions = (patterns, options = {}) =>
patterns.map(
// eslint-disable-next-line sonarjs/no-nested-template-literals
pattern => `${pattern}.?(c|m)[jt]s${options.skipJSX ? '' : `?(x)`}`,
);
export const CONFIG_FILE_PATTERNS = withExtensions(
['**/*.config', '**/.prettierrc', '**/codegen', '**/test-setup'],
{ skipJSX: true },
);
export const UNIT_TEST_FILE_PATTERNS = withExtensions([
fromSuffix('spec'),
fromSuffix('test'),
fromDirectory('__tests__'),
]);
export const TEST_FILE_PATTERNS = [
...UNIT_TEST_FILE_PATTERNS,
...withExtensions([
fromDirectory('__mocks__'),
fromSuffix('cy'),
fromSuffix('stories'),
fromSuffix('e2e'),
fromSuffix('mock'),
fromSuffix('mocks'),
fromDirectory('test'),
fromDirectory('tests'),
fromDirectory('mocks'),
fromDirectory('testing-utils'),
fromDirectory('test-utils'),
fromDirectory('fixtures'),
]),
...CONFIG_FILE_PATTERNS,
];
export const MOCKS_FILE_PATTERNS = [fromDirectory('__mocks__')];
// @angular-eslint's inline templates processor transforms .ts files to .html
// https://github.com/angular-eslint/angular-eslint/blob/main/packages/eslint-plugin-template/src/processors.ts#L164
export const TEST_FILE_PATTERNS_INLINE_TEMPLATES = TEST_FILE_PATTERNS.map(
pattern => (pattern.startsWith('**/*.') ? `${pattern}*` : pattern),
);
export const TYPESCRIPT_FILE_PATTERNS = ['**/*.ts', '**/*.tsx'];
export const TYPESCRIPT_DECLARATION_FILE_PATTERNS = ['**/*.d.ts'];
export const JSON_FILE_PATTERNS = ['**/*.json', '**/*.jsonc'];
export const JS_TS_JSON_FILE_PATTERNS = [
...withExtensions(['**/*']),
...JSON_FILE_PATTERNS,
];
export const REACT_FILE_PATTERNS = withExtensions(['**/*']);
export const VUE_FILE_PATTERNS = ['**/*.vue'];
export const HTML_FILE_PATTERNS = ['**/*.html'];
export const CYPRESS_FILE_PATTERNS = [
'**/*.cy.[jt]s?(x)',
'**/?(*-)e2e/**/*.[jt]s?(x)',
];
export const PLAYWRIGHT_FILE_PATTERNS = [
'**/*.+(test|spec).[jt]s?(x)',
'**/*.po.[jt]s?(x)',
'**/?(*-)e2e/**/*.[jt]s?(x)',
];
export const NODE_FILE_PATTERNS = ['**/*.ts', '**/*.js'];
export const GRAPHQL_FILE_PATTERNS = ['**/*.graphql'];
export const STORYBOOK_FILE_PATTERNS = withExtensions([fromSuffix('stories')]);
export const ANGULAR_COMPONENT_FILE_PATTERNS = '**/*.component.ts';
export const ANGULAR_PIPE_FILE_PATTERNS = '**/*.pipe.ts';
export const GENERATED_FILE_PATTERNS = withExtensions([
fromDirectory('generated'),
'**/generated',
]);
export const COMMONJS_FILE_PATTERNS = ['**/*.cjs', '**/*.cts'];
export const SVELTE_FILE_PATTERNS = ['**/*.svelte'];
/** @param {string[]} patterns */
export function negatePatterns(patterns) {
return patterns.map(pattern => `!${pattern}`);
}