@vitus-labs/tools-lint 1.5.1 → 1.5.2-alpha.1

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.
@@ -1,311 +0,0 @@
1
- import { merge, omit, filter, isEmpty } from 'lodash';
2
-
3
- const loadTsProjects = (projects) => projects.map((item) => `${item}/**/*/tsconfig.json`);
4
- const loadPlugins = (options) => {
5
- const RESULT = ['@typescript-eslint'];
6
- if (options.import)
7
- RESULT.push('import');
8
- if (options.react)
9
- RESULT.push('react');
10
- if (options.a11y)
11
- RESULT.push('jsx-a11y');
12
- if (options.storybook)
13
- RESULT.push('storybook');
14
- if (options.graphql)
15
- RESULT.push('graphql');
16
- if (options.markdown)
17
- RESULT.push('markdown');
18
- if (options.jest)
19
- RESULT.push('jest');
20
- if (options.prettier)
21
- RESULT.push('prettier');
22
- return RESULT;
23
- };
24
- const loadExtendsConfigs = (options) => {
25
- const RESULT = ['eslint:recommended'];
26
- if (options.import)
27
- RESULT.push('plugin:import/recommended', 'plugin:import/typescript');
28
- RESULT.push('plugin:@typescript-eslint/recommended-type-checked', 'plugin:@typescript-eslint/stylistic-type-checked', 'airbnb');
29
- if (options.react)
30
- RESULT.push('plugin:react/recommended', 'plugin:react-hooks/recommended');
31
- if (options.a11y)
32
- RESULT.push('plugin:jsx-a11y/recommended');
33
- if (options.storybook)
34
- RESULT.push('plugin:storybook/recommended');
35
- if (options.prettier)
36
- RESULT.push('plugin:prettier/recommended', 'prettier');
37
- if (options.jest)
38
- RESULT.push('plugin:jest/all');
39
- return RESULT;
40
- };
41
- const extendObject = (condition, object = {}) => (condition ? object : {});
42
-
43
- const createEslint = (options) => ({ rootPath = './', projects = ['packages', 'apps', 'tools', 'features'], extensions = [], graphqlClient = undefined, scope, config, } = {}) => {
44
- const defaultOptions = {
45
- react: true,
46
- typescript: true,
47
- import: true,
48
- a11y: true,
49
- prettier: true,
50
- markdown: true,
51
- graphql: false,
52
- storybook: true,
53
- jest: false,
54
- };
55
- const finalOptions = merge(defaultOptions, options);
56
- const optionsConfig = omit(finalOptions, 'jest');
57
- const extensionsConfig = [
58
- '.js',
59
- '.jsx',
60
- '.ts',
61
- '.tsx',
62
- '.d.ts',
63
- ...extensions,
64
- ];
65
- const tsProjects = loadTsProjects(projects);
66
- const pluginsConfig = loadPlugins(optionsConfig);
67
- const extendsConfig = loadExtendsConfigs(optionsConfig);
68
- const OVERRIDES = [
69
- // --------------------------------------------------
70
- // SCRIPTS
71
- // --------------------------------------------------
72
- {
73
- files: ['**/bin/*.js'],
74
- rules: {
75
- '@typescript-eslint/no-var-requires': 'off',
76
- 'no-console': 'off',
77
- ...extendObject(finalOptions.import, {
78
- 'import/no-extraneous-dependencies': [
79
- 'error',
80
- {
81
- peerDependencies: true,
82
- },
83
- ],
84
- }),
85
- },
86
- },
87
- // --------------------------------------------------
88
- // STORIES of STORYBOOK
89
- // --------------------------------------------------
90
- {
91
- files: [
92
- '**/__stories__/**',
93
- '*.stories.*',
94
- '*stories.*',
95
- '*.storyOf.*',
96
- ],
97
- extends: loadExtendsConfigs(optionsConfig),
98
- rules: {
99
- '@typescript-eslint/explicit-module-boundary-types': 'off',
100
- 'no-console': 'off',
101
- ...extendObject(finalOptions.import, {
102
- 'import/no-extraneous-dependencies': [
103
- 'error',
104
- {
105
- devDependencies: true,
106
- optionalDependencies: true,
107
- peerDependencies: true,
108
- },
109
- ],
110
- }),
111
- },
112
- },
113
- // --------------------------------------------------
114
- // MARKDOWN
115
- // --------------------------------------------------
116
- extendObject(finalOptions.markdown, {
117
- files: ['**/*.md', '**/*.mdx'],
118
- processor: 'markdown/markdown',
119
- }),
120
- // --------------------------------------------------
121
- // CONFIGURATION FILES
122
- // --------------------------------------------------
123
- {
124
- files: [
125
- 'eslint.config.js',
126
- 'prettier.config.js',
127
- '.config.js',
128
- '.config.mjs',
129
- ],
130
- rules: {
131
- ...extendObject(finalOptions.import, {
132
- 'import/no-extraneous-dependencies': [
133
- 'error',
134
- {
135
- devDependencies: true,
136
- optionalDependencies: true,
137
- peerDependencies: true,
138
- },
139
- ],
140
- }),
141
- },
142
- },
143
- // --------------------------------------------------
144
- // TESTS
145
- // --------------------------------------------------
146
- extendObject(finalOptions.jest, {
147
- files: ['**/__tests__/**', '**/__specs__/**', '*.spec.*', '*.test.*'],
148
- plugins: loadPlugins(optionsConfig),
149
- env: {
150
- 'jest/globals': true,
151
- },
152
- extends: loadExtendsConfigs(optionsConfig),
153
- settings: {
154
- jest: {
155
- version: 27,
156
- },
157
- },
158
- rules: {
159
- '@typescript-eslint/explicit-module-boundary-types': 'off',
160
- 'no-console': 'off',
161
- ...extendObject(finalOptions.import, {
162
- 'import/no-extraneous-dependencies': [
163
- 'error',
164
- {
165
- devDependencies: true,
166
- optionalDependencies: true,
167
- peerDependencies: true,
168
- },
169
- ],
170
- }),
171
- },
172
- }),
173
- ];
174
- const CONFIG = {
175
- root: true,
176
- env: {
177
- browser: true,
178
- node: true,
179
- es2022: true,
180
- },
181
- globals: {
182
- __NODE__: 'readonly',
183
- __WEB__: 'readonly',
184
- __BROWSER__: 'readonly',
185
- __NATIVE__: 'readonly',
186
- __CLIENT__: 'readonly',
187
- },
188
- parser: '@typescript-eslint/parser',
189
- plugins: pluginsConfig,
190
- parserOptions: {
191
- tsconfigRootDir: rootPath,
192
- project: true,
193
- ecmaFeatures: {
194
- jsx: true,
195
- },
196
- ecmaVersion: 'latest',
197
- sourceType: 'module',
198
- },
199
- extends: extendsConfig,
200
- settings: {
201
- ...extendObject(finalOptions.import, {
202
- 'import/extensions': extensionsConfig,
203
- 'import/parsers': {
204
- '@typescript-eslint/parser': ['.ts', '.tsx'],
205
- },
206
- 'import/resolver': {
207
- node: {
208
- extensions: extensionsConfig,
209
- },
210
- ...extendObject(finalOptions.typescript, {
211
- typescript: {
212
- alwaysTryTypes: true,
213
- project: [...tsProjects, 'tsconfig.json'],
214
- },
215
- }),
216
- },
217
- ...extendObject(!!scope, { 'import/internal-regex': scope }),
218
- }),
219
- },
220
- rules: {
221
- 'no-unused-vars': 'off',
222
- 'no-useless-constructor': 'off',
223
- 'no-shadow': 'off',
224
- 'no-use-before-define': 'off', // is being used @typescript-eslint/no-use-before-define
225
- 'no-param-reassign': [
226
- 'error',
227
- { props: true, ignorePropertyModificationsFor: ['self'] },
228
- ],
229
- ...extendObject(finalOptions.typescript, {
230
- '@typescript-eslint/no-explicit-any': 'off',
231
- '@typescript-eslint/no-useless-constructor': 'error',
232
- '@typescript-eslint/explicit-function-return-type': 'off',
233
- '@typescript-eslint/no-unused-vars': 'error',
234
- '@typescript-eslint/member-delimiter-style': [
235
- 2,
236
- {
237
- multiline: {
238
- delimiter: 'none',
239
- requireLast: false,
240
- },
241
- singleline: {
242
- delimiter: 'semi',
243
- requireLast: false,
244
- },
245
- },
246
- ],
247
- }),
248
- // --------------------------------------------------
249
- // IMPORT rules
250
- // --------------------------------------------------
251
- ...extendObject(finalOptions.import, {
252
- 'import/prefer-default-export': 'off',
253
- 'import/extensions': [
254
- 'error',
255
- 'ignorePackages',
256
- {
257
- js: 'never',
258
- jsx: 'never',
259
- ts: 'never',
260
- tsx: 'never',
261
- },
262
- ],
263
- }),
264
- // --------------------------------------------------
265
- // REACT rules
266
- // --------------------------------------------------
267
- ...extendObject(finalOptions.react, {
268
- 'react/require-default-props': 'off',
269
- 'react/prop-types': 'off',
270
- 'react/jsx-props-no-spreading': 'off',
271
- 'react/function-component-definition': 'off',
272
- 'react/jsx-filename-extension': [1, { extensions: extensionsConfig }],
273
- }),
274
- // --------------------------------------------------
275
- // GRAPHQL rules
276
- // --------------------------------------------------
277
- ...extendObject(finalOptions.graphql, {
278
- 'graphql/template-strings': [
279
- 'error',
280
- {
281
- // Import default settings for your GraphQL client. Supported values:
282
- // 'apollo', 'relay', 'lokka', 'fraql', 'literal'
283
- env: graphqlClient ?? 'literal',
284
- // no need to specify schema here, it will be automatically determined using .graphqlconfig
285
- },
286
- ],
287
- }),
288
- // --------------------------------------------------
289
- // PRETTIER rules
290
- // --------------------------------------------------
291
- ...extendObject(finalOptions.prettier, {
292
- 'prettier/prettier': 'error',
293
- }),
294
- },
295
- overrides: filter(OVERRIDES, (item) => !isEmpty(item)),
296
- };
297
- return merge(CONFIG, config);
298
- };
299
- var index = createEslint()();
300
-
301
- var styles = {
302
- processors: ['stylelint-processor-styled-components'],
303
- extends: [
304
- 'stylelint-config-recommended',
305
- 'stylelint-config-styled-components',
306
- 'stylelint-config-prettier',
307
- ],
308
- };
309
-
310
- export { createEslint, index as eslint, styles };
311
- //# sourceMappingURL=vitus-tools-lint.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vitus-tools-lint.module.js","sources":["../src/eslint/helpers.ts","../src/eslint/index.ts","../src/styles.ts"],"sourcesContent":["import type { Options } from './types'\n\nconst loadTsProjects = (projects: string[]) =>\n projects.map((item) => `${item}/**/*/tsconfig.json`)\n\nconst loadPlugins = (options: Options) => {\n const RESULT = ['@typescript-eslint']\n\n if (options.import) RESULT.push('import')\n if (options.react) RESULT.push('react')\n if (options.a11y) RESULT.push('jsx-a11y')\n if (options.storybook) RESULT.push('storybook')\n if (options.graphql) RESULT.push('graphql')\n if (options.markdown) RESULT.push('markdown')\n if (options.jest) RESULT.push('jest')\n if (options.prettier) RESULT.push('prettier')\n\n return RESULT\n}\n\nconst loadExtendsConfigs = (options: Options) => {\n const RESULT: string[] = ['eslint:recommended']\n\n if (options.import)\n RESULT.push('plugin:import/recommended', 'plugin:import/typescript')\n\n RESULT.push(\n 'plugin:@typescript-eslint/recommended-type-checked',\n 'plugin:@typescript-eslint/stylistic-type-checked',\n 'airbnb',\n )\n\n if (options.react)\n RESULT.push('plugin:react/recommended', 'plugin:react-hooks/recommended')\n\n if (options.a11y) RESULT.push('plugin:jsx-a11y/recommended')\n\n if (options.storybook) RESULT.push('plugin:storybook/recommended')\n\n if (options.prettier) RESULT.push('plugin:prettier/recommended', 'prettier')\n\n if (options.jest) RESULT.push('plugin:jest/all')\n\n return RESULT\n}\n\nconst extendObject = (\n condition: boolean | null | undefined,\n object: Record<string, any> = {},\n): Record<string, any> => (condition ? object : {})\n\nexport { loadTsProjects, loadPlugins, loadExtendsConfigs, extendObject }\n","import { filter, merge, omit, isEmpty } from 'lodash'\nimport {\n loadTsProjects,\n loadPlugins,\n loadExtendsConfigs,\n extendObject,\n} from './helpers'\nimport type { Options } from './types'\n\ntype Config = Partial<{\n rootPath: string\n projects: string[]\n extensions: string[]\n graphqlClient: 'apollo' | 'relay' | 'lokka' | 'fraql' | 'literal'\n scope: string\n config: Record<string, any>\n}>\n\nconst createEslint =\n (options?: Options) =>\n ({\n rootPath = './',\n projects = ['packages', 'apps', 'tools', 'features'],\n extensions = [],\n graphqlClient = undefined,\n scope,\n config,\n }: Config = {}) => {\n const defaultOptions: Options = {\n react: true,\n typescript: true,\n import: true,\n a11y: true,\n prettier: true,\n markdown: true,\n graphql: false,\n storybook: true,\n jest: false,\n }\n const finalOptions = merge(defaultOptions, options)\n const optionsConfig = omit(finalOptions, 'jest')\n\n const extensionsConfig = [\n '.js',\n '.jsx',\n '.ts',\n '.tsx',\n '.d.ts',\n ...extensions,\n ]\n const tsProjects: ReturnType<typeof loadTsProjects> =\n loadTsProjects(projects)\n\n const pluginsConfig = loadPlugins(optionsConfig)\n const extendsConfig = loadExtendsConfigs(optionsConfig)\n\n const OVERRIDES = [\n // --------------------------------------------------\n // SCRIPTS\n // --------------------------------------------------\n {\n files: ['**/bin/*.js'],\n rules: {\n '@typescript-eslint/no-var-requires': 'off',\n 'no-console': 'off',\n ...extendObject(finalOptions.import, {\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n peerDependencies: true,\n },\n ],\n }),\n },\n },\n\n // --------------------------------------------------\n // STORIES of STORYBOOK\n // --------------------------------------------------\n {\n files: [\n '**/__stories__/**',\n '*.stories.*',\n '*stories.*',\n '*.storyOf.*',\n ],\n extends: loadExtendsConfigs(optionsConfig),\n rules: {\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n 'no-console': 'off',\n ...extendObject(finalOptions.import, {\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n devDependencies: true,\n optionalDependencies: true,\n peerDependencies: true,\n },\n ],\n }),\n },\n },\n\n // --------------------------------------------------\n // MARKDOWN\n // --------------------------------------------------\n extendObject(finalOptions.markdown, {\n files: ['**/*.md', '**/*.mdx'],\n processor: 'markdown/markdown',\n }),\n\n // --------------------------------------------------\n // CONFIGURATION FILES\n // --------------------------------------------------\n {\n files: [\n 'eslint.config.js',\n 'prettier.config.js',\n '.config.js',\n '.config.mjs',\n ],\n rules: {\n ...extendObject(finalOptions.import, {\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n devDependencies: true,\n optionalDependencies: true,\n peerDependencies: true,\n },\n ],\n }),\n },\n },\n\n // --------------------------------------------------\n // TESTS\n // --------------------------------------------------\n extendObject(finalOptions.jest, {\n files: ['**/__tests__/**', '**/__specs__/**', '*.spec.*', '*.test.*'],\n plugins: loadPlugins(optionsConfig),\n env: {\n 'jest/globals': true,\n },\n extends: loadExtendsConfigs(optionsConfig),\n settings: {\n jest: {\n version: 27,\n },\n },\n rules: {\n '@typescript-eslint/explicit-module-boundary-types': 'off',\n 'no-console': 'off',\n ...extendObject(finalOptions.import, {\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n devDependencies: true,\n optionalDependencies: true,\n peerDependencies: true,\n },\n ],\n }),\n },\n }),\n ]\n\n const CONFIG = {\n root: true,\n env: {\n browser: true,\n node: true,\n es2022: true,\n },\n globals: {\n __NODE__: 'readonly',\n __WEB__: 'readonly',\n __BROWSER__: 'readonly',\n __NATIVE__: 'readonly',\n __CLIENT__: 'readonly',\n },\n parser: '@typescript-eslint/parser',\n plugins: pluginsConfig,\n parserOptions: {\n tsconfigRootDir: rootPath,\n project: true,\n ecmaFeatures: {\n jsx: true,\n },\n ecmaVersion: 'latest',\n sourceType: 'module',\n },\n extends: extendsConfig,\n settings: {\n ...extendObject(finalOptions.import, {\n 'import/extensions': extensionsConfig,\n 'import/parsers': {\n '@typescript-eslint/parser': ['.ts', '.tsx'],\n },\n 'import/resolver': {\n node: {\n extensions: extensionsConfig,\n },\n ...extendObject(finalOptions.typescript, {\n typescript: {\n alwaysTryTypes: true,\n project: [...tsProjects, 'tsconfig.json'],\n },\n }),\n },\n ...extendObject(!!scope, { 'import/internal-regex': scope }),\n }),\n },\n rules: {\n 'no-unused-vars': 'off',\n 'no-useless-constructor': 'off',\n 'no-shadow': 'off',\n 'no-use-before-define': 'off', // is being used @typescript-eslint/no-use-before-define\n 'no-param-reassign': [\n 'error',\n { props: true, ignorePropertyModificationsFor: ['self'] },\n ],\n ...extendObject(finalOptions.typescript, {\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-useless-constructor': 'error',\n '@typescript-eslint/explicit-function-return-type': 'off',\n '@typescript-eslint/no-unused-vars': 'error',\n '@typescript-eslint/member-delimiter-style': [\n 2,\n {\n multiline: {\n delimiter: 'none',\n requireLast: false,\n },\n singleline: {\n delimiter: 'semi',\n requireLast: false,\n },\n },\n ],\n }),\n\n // --------------------------------------------------\n // IMPORT rules\n // --------------------------------------------------\n ...extendObject(finalOptions.import, {\n 'import/prefer-default-export': 'off',\n 'import/extensions': [\n 'error',\n 'ignorePackages',\n {\n js: 'never',\n jsx: 'never',\n ts: 'never',\n tsx: 'never',\n },\n ],\n }),\n\n // --------------------------------------------------\n // REACT rules\n // --------------------------------------------------\n ...extendObject(finalOptions.react, {\n 'react/require-default-props': 'off',\n 'react/prop-types': 'off',\n 'react/jsx-props-no-spreading': 'off',\n 'react/function-component-definition': 'off',\n 'react/jsx-filename-extension': [1, { extensions: extensionsConfig }],\n }),\n\n // --------------------------------------------------\n // GRAPHQL rules\n // --------------------------------------------------\n ...extendObject(finalOptions.graphql, {\n 'graphql/template-strings': [\n 'error',\n {\n // Import default settings for your GraphQL client. Supported values:\n // 'apollo', 'relay', 'lokka', 'fraql', 'literal'\n env: graphqlClient ?? 'literal',\n // no need to specify schema here, it will be automatically determined using .graphqlconfig\n },\n ],\n }),\n\n // --------------------------------------------------\n // PRETTIER rules\n // --------------------------------------------------\n ...extendObject(finalOptions.prettier, {\n 'prettier/prettier': 'error',\n }),\n },\n overrides: filter(OVERRIDES, (item) => !isEmpty(item)),\n }\n\n return merge(CONFIG, config)\n }\n\nexport { createEslint }\nexport default createEslint()()\n","export default {\n processors: ['stylelint-processor-styled-components'],\n extends: [\n 'stylelint-config-recommended',\n 'stylelint-config-styled-components',\n 'stylelint-config-prettier',\n ],\n}\n"],"names":[],"mappings":"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"}