1
+ import { createRequire } from "node:module" ;
2
+
1
3
import { hasDependency , hasDevDependency } from "@anolilab/package-json-utils" ;
2
4
import type { Config } from "lint-staged" ;
3
5
4
- import eslintConfig from "./groups/eslint" ;
5
- import jsonConfig from "./groups/json" ;
6
- import markdownConfig from "./groups/markdown" ;
7
- import secretlintConfig from "./groups/secretlint" ;
8
- import stylesheetsConfig from "./groups/stylesheets" ;
9
- import testsConfig from "./groups/tests" ;
10
- import typescriptConfig from "./groups/typescript" ;
11
6
import anolilabLintStagedConfig from "./utils/lint-staged-config" ;
12
7
8
+ const require = createRequire ( import . meta. url ) ;
9
+
13
10
type Groups = {
14
- config : Config ;
15
11
configName : string ;
16
12
dependencies : string [ ] ;
17
13
} [ ] ;
18
14
19
15
const groups : Groups = [
20
16
{
21
- config : eslintConfig ,
22
17
configName : "eslint" ,
23
18
dependencies : [ "eslint" ] ,
24
19
} ,
25
20
{
26
- config : jsonConfig ,
27
21
configName : "json" ,
28
22
dependencies : [ "prettier" ] ,
29
23
} ,
30
24
{
31
- config : markdownConfig ,
32
25
configName : "markdown" ,
33
26
dependencies : [ "markdownlint-cli" , "markdownlint-cli2" ] ,
34
27
} ,
35
28
{
36
- config : secretlintConfig ,
37
29
configName : "secretlint" ,
38
30
dependencies : [ "secretlint" ] ,
39
31
} ,
40
32
{
41
- config : stylesheetsConfig ,
42
33
configName : "stylesheets" ,
43
34
dependencies : [ "stylelint" ] ,
44
35
} ,
45
36
{
46
- config : testsConfig ,
47
37
configName : "tests" ,
48
38
dependencies : [ "vite" , "jest" , "ava" ] ,
49
39
} ,
50
40
{
51
- config : typescriptConfig ,
52
41
configName : "typescript" ,
53
42
dependencies : [ "typescript" ] ,
54
43
} ,
@@ -60,7 +49,7 @@ const loadedPluginsNames: string[] = [];
60
49
const possiblePlugins : Record < string , Record < string , boolean > > = { } ;
61
50
62
51
groups . forEach ( ( plugin ) => {
63
- const { config , configName, dependencies } = plugin ;
52
+ const { configName, dependencies } = plugin ;
64
53
65
54
// eslint-disable-next-line security/detect-object-injection
66
55
if ( ( anolilabLintStagedConfig as unknown as Record < string , Record < string , false | undefined > > ) [ "plugin" ] ?. [ configName ] !== false ) {
@@ -73,6 +62,9 @@ groups.forEach((plugin) => {
73
62
} ) ;
74
63
75
64
if ( foundDependencies . length > 0 ) {
65
+ // eslint-disable-next-line security/detect-non-literal-require,import/no-dynamic-require
66
+ const config = require ( `./groups/${ configName } ` ) as Config ;
67
+
76
68
loadedPlugins = { ...loadedPlugins , ...config } ;
77
69
loadedPluginsNames . push ( configName ) ;
78
70
} else {
0 commit comments