@eslinted/core 31.2.0 → 31.2.2
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.
- package/dist/factory.d.ts +5 -3
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +47 -46
- package/dist/factory.js.map +1 -1
- package/package.json +1 -1
- package/src/factory.ts +76 -66
package/dist/factory.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type Core from "./index.js";
|
|
2
2
|
export default function factory<Scope extends string, Optional extends Scope, RequiredPlugin extends string, RequiredParser extends Scope, Parser extends RequiredParser | Optional>(scopes: Parameters<typeof Core<Scope, Optional, RequiredPlugin, RequiredParser, Parser>>[0], optional: Parameters<typeof Core<Scope, Optional, RequiredPlugin, RequiredParser, Parser>>[1], tree: Parameters<typeof Core<Scope, Optional, RequiredPlugin, RequiredParser, Parser>>[2], imports: Parameters<typeof Core<Scope, Optional, RequiredPlugin, RequiredParser, Parser>>[3], settings: Parameters<typeof Core<Scope, Optional, RequiredPlugin, RequiredParser, Parser>>[4], defaults: Parameters<typeof Core<Scope, Optional, RequiredPlugin, RequiredParser, Parser>>[5], extensions?: Parameters<typeof Core<Scope, Optional, RequiredPlugin, RequiredParser, Parser>>[6]): {
|
|
3
|
-
|
|
3
|
+
plugins?: unknown;
|
|
4
|
+
rules?: (typeof defaults.rules)[Scope][number]["rules"];
|
|
4
5
|
files?: Array<string | [
|
|
5
6
|
string,
|
|
6
7
|
string
|
|
7
8
|
]>;
|
|
8
9
|
ignores?: string[];
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
languageOptions?: unknown;
|
|
11
|
+
language?: string;
|
|
12
|
+
processor?: string;
|
|
11
13
|
}[];
|
|
12
14
|
//# sourceMappingURL=factory.d.ts.map
|
package/dist/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,GAAG,CAAC;AAE1B,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,KAAK,EACtB,cAAc,SAAS,MAAM,EAC7B,cAAc,SAAS,KAAK,EAC5B,MAAM,SAAS,cAAc,GAAG,QAAQ,EAExC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3F,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EACzF,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5F,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,GAAG,CAAC;AAE1B,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,KAAK,SAAS,MAAM,EACpB,QAAQ,SAAS,KAAK,EACtB,cAAc,SAAS,MAAM,EAC7B,cAAc,SAAS,KAAK,EAC5B,MAAM,SAAS,cAAc,GAAG,QAAQ,EAExC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3F,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EACzF,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5F,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7F,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;cAwGlF,OAAO;YACT,CAAA,OAAO,QAAQ,CAAC,KAAK,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YAC7C,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;cAC9B,MAAM,EAAE;sBACA,OAAO;eACd,MAAM;gBACL,MAAM;IAqBvB"}
|
package/dist/factory.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
export default function factory(scopes, optional, tree, imports, settings, defaults, extensions) {
|
|
2
2
|
const Scopes = new Set(scopes);
|
|
3
3
|
if (extensions) {
|
|
4
|
+
const global = extensions["*"];
|
|
5
|
+
if (global)
|
|
6
|
+
if (global.override
|
|
7
|
+
|| !defaults.ignores["*"])
|
|
8
|
+
defaults.ignores["*"] = global.ignores ?? [];
|
|
9
|
+
else if (global.ignores?.length)
|
|
10
|
+
void defaults.ignores["*"].push(...global.ignores);
|
|
4
11
|
for (const scope of optional)
|
|
5
12
|
if (extensions[scope]) {
|
|
6
13
|
imports.plugins[scope] = extensions[scope].plugin;
|
|
@@ -10,69 +17,63 @@ export default function factory(scopes, optional, tree, imports, settings, defau
|
|
|
10
17
|
Scopes.delete(scope);
|
|
11
18
|
for (const scope of Scopes)
|
|
12
19
|
if (extensions[scope]) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
const extension = extensions[scope];
|
|
21
|
+
if (extension.files)
|
|
22
|
+
void defaults.files[scope].push(...extension.files);
|
|
23
|
+
if (extension.ignores)
|
|
16
24
|
if (defaults.ignores[scope])
|
|
17
|
-
void defaults.ignores[scope].push(...
|
|
25
|
+
void defaults.ignores[scope].push(...extension.ignores);
|
|
18
26
|
else
|
|
19
|
-
defaults.ignores[scope] =
|
|
20
|
-
if (
|
|
21
|
-
defaults.rules[scope][defaults.rules[scope].length] = { rules:
|
|
27
|
+
defaults.ignores[scope] = extension.ignores;
|
|
28
|
+
if (extension.rules)
|
|
29
|
+
defaults.rules[scope][defaults.rules[scope].length] = { rules: extension.rules };
|
|
22
30
|
}
|
|
23
31
|
}
|
|
24
32
|
for (const [scope, parents] of tree)
|
|
25
33
|
if (Scopes.has(scope)
|
|
26
|
-
&& defaults.files[scope].length)
|
|
34
|
+
&& defaults.files[scope].length) {
|
|
35
|
+
const { [scope]: files } = defaults.files;
|
|
27
36
|
for (const parent of parents)
|
|
28
|
-
void defaults.files[parent].push(...
|
|
29
|
-
|
|
30
|
-
if (extensions["*"])
|
|
31
|
-
if (extensions["*"].override
|
|
32
|
-
|| !defaults.ignores["*"])
|
|
33
|
-
defaults.ignores["*"] = extensions["*"].ignores ?? [];
|
|
34
|
-
else if (extensions["*"].ignores?.length)
|
|
35
|
-
void defaults.ignores["*"].push(...extensions["*"].ignores);
|
|
37
|
+
void defaults.files[parent].push(...files);
|
|
38
|
+
}
|
|
36
39
|
const enabledScopes = [...Scopes]
|
|
37
|
-
.filter(scope => defaults.files[scope].length)
|
|
38
|
-
.filter(scope =>
|
|
39
|
-
for (const scope of enabledScopes)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
.filter(scope => defaults.files[scope].length), setScopes = enabledScopes
|
|
41
|
+
.filter(scope => scope in settings);
|
|
42
|
+
for (const scope of enabledScopes) {
|
|
43
|
+
const files = defaults.files[scope], ignores = defaults.ignores[scope] ?? [];
|
|
44
|
+
for (const rule of defaults.rules[scope]) {
|
|
45
|
+
rule.files = files;
|
|
46
|
+
rule.ignores = ignores;
|
|
47
|
+
}
|
|
48
|
+
const setting = settings[scope];
|
|
49
|
+
if (setting) {
|
|
50
|
+
setting.files = files;
|
|
51
|
+
setting.ignores = ignores;
|
|
52
|
+
if (setting.languageOptions) {
|
|
53
|
+
const { parser, parserOptions: { parser: subparser } = {}, } = setting.languageOptions;
|
|
43
54
|
if (parser)
|
|
44
|
-
|
|
55
|
+
setting
|
|
45
56
|
.languageOptions
|
|
46
57
|
.parser = imports.parsers[parser];
|
|
47
58
|
if (subparser)
|
|
48
|
-
|
|
59
|
+
setting
|
|
49
60
|
.languageOptions
|
|
50
61
|
.parserOptions
|
|
51
62
|
.parser = imports.parsers[subparser];
|
|
52
63
|
}
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
name: "*/plugins",
|
|
56
|
-
plugins: imports.plugins,
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: "*/ignores",
|
|
60
|
-
ignores: defaults.ignores["*"] ?? [],
|
|
61
|
-
},
|
|
62
|
-
], scopeCount = enabledScopes.length;
|
|
63
|
-
configs.length = 2 + scopeCount;
|
|
64
|
-
for (let i = 0; i < scopeCount; ++i) {
|
|
65
|
-
const scope = enabledScopes[i];
|
|
66
|
-
configs[i + 2] = {
|
|
67
|
-
name: scope,
|
|
68
|
-
files: defaults.files[scope],
|
|
69
|
-
ignores: defaults.ignores[scope] ?? [],
|
|
70
|
-
"extends": [
|
|
71
|
-
settings[scope] ?? [],
|
|
72
|
-
defaults.rules[scope],
|
|
73
|
-
],
|
|
74
|
-
};
|
|
64
|
+
}
|
|
75
65
|
}
|
|
66
|
+
const configs = enabledScopes.flatMap(scope => defaults.rules[scope]), rulesGlobalTotal = configs.length + 2;
|
|
67
|
+
configs.length = rulesGlobalTotal + setScopes.length;
|
|
68
|
+
configs[rulesGlobalTotal - 2] = {
|
|
69
|
+
plugins: imports.plugins,
|
|
70
|
+
};
|
|
71
|
+
configs[rulesGlobalTotal - 1] = {
|
|
72
|
+
ignores: defaults.ignores["*"] ?? [],
|
|
73
|
+
};
|
|
74
|
+
setScopes.forEach((scope, i) => {
|
|
75
|
+
configs[rulesGlobalTotal + i] = settings[scope];
|
|
76
|
+
});
|
|
76
77
|
return configs;
|
|
77
78
|
}
|
|
78
79
|
//# sourceMappingURL=factory.js.map
|
package/dist/factory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,OAAO,CAO7B,MAA2F,EAC3F,QAA6F,EAC7F,IAAyF,EACzF,OAA4F,EAC5F,QAA6F,EAC7F,QAA6F,EAC7F,UAAgG;IAEhG,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,QAAQ;YAC1B,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAA0C,CAAC;gBACtF,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAA0C,CAAC;YACxF,CAAC;;gBAEC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEzB,KAAK,MAAM,KAAK,IAAI,MAAM;YACxB,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"$schema": "https://json.schemastore.org/package",
|
|
4
4
|
"$help": "https://docs.npmjs.com/cli/configuring-npm/package-json",
|
|
5
5
|
"name": "@eslinted/core",
|
|
6
|
-
"version": "31.2.
|
|
6
|
+
"version": "31.2.2",
|
|
7
7
|
"repository": "github:jimmy-zhening-luo/linted-core",
|
|
8
8
|
"description": "Internal core for npm package `linted`, responsible for producing an array of fully-formed ESLint configurations according to `linted` spec.",
|
|
9
9
|
"keywords": [],
|
package/src/factory.ts
CHANGED
|
@@ -18,6 +18,20 @@ export default function factory<
|
|
|
18
18
|
const Scopes = new Set(scopes);
|
|
19
19
|
|
|
20
20
|
if (extensions) {
|
|
21
|
+
const global = extensions["*"];
|
|
22
|
+
|
|
23
|
+
if (global)
|
|
24
|
+
if (
|
|
25
|
+
global.override
|
|
26
|
+
|| !defaults.ignores["*"]
|
|
27
|
+
)
|
|
28
|
+
defaults.ignores["*"] = global.ignores ?? [];
|
|
29
|
+
else
|
|
30
|
+
if (global.ignores?.length)
|
|
31
|
+
void defaults.ignores["*"].push(
|
|
32
|
+
...global.ignores,
|
|
33
|
+
);
|
|
34
|
+
|
|
21
35
|
for (const scope of optional)
|
|
22
36
|
if (extensions[scope]) {
|
|
23
37
|
imports.plugins[scope] = extensions[scope].plugin as typeof imports.plugins[Optional];
|
|
@@ -28,23 +42,25 @@ export default function factory<
|
|
|
28
42
|
|
|
29
43
|
for (const scope of Scopes)
|
|
30
44
|
if (extensions[scope]) {
|
|
31
|
-
|
|
45
|
+
const extension = extensions[scope];
|
|
46
|
+
|
|
47
|
+
if (extension.files)
|
|
32
48
|
void defaults.files[scope].push(
|
|
33
|
-
...
|
|
49
|
+
...extension.files,
|
|
34
50
|
);
|
|
35
51
|
|
|
36
|
-
if (
|
|
52
|
+
if (extension.ignores)
|
|
37
53
|
if (defaults.ignores[scope])
|
|
38
54
|
void defaults.ignores[scope].push(
|
|
39
|
-
...
|
|
55
|
+
...extension.ignores,
|
|
40
56
|
);
|
|
41
57
|
else
|
|
42
|
-
defaults.ignores[scope] =
|
|
58
|
+
defaults.ignores[scope] = extension.ignores;
|
|
43
59
|
|
|
44
|
-
if (
|
|
60
|
+
if (extension.rules)
|
|
45
61
|
defaults.rules[scope][
|
|
46
62
|
defaults.rules[scope].length
|
|
47
|
-
] = { rules:
|
|
63
|
+
] = { rules: extension.rules };
|
|
48
64
|
}
|
|
49
65
|
}
|
|
50
66
|
|
|
@@ -52,86 +68,80 @@ export default function factory<
|
|
|
52
68
|
if (
|
|
53
69
|
Scopes.has(scope)
|
|
54
70
|
&& defaults.files[scope].length
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
void defaults.files[parent].push(
|
|
58
|
-
...defaults.files[scope],
|
|
59
|
-
);
|
|
71
|
+
) {
|
|
72
|
+
const { [scope]: files } = defaults.files;
|
|
60
73
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
extensions["*"].override
|
|
65
|
-
|| !defaults.ignores["*"]
|
|
66
|
-
)
|
|
67
|
-
defaults.ignores["*"] = extensions["*"].ignores ?? [];
|
|
68
|
-
else
|
|
69
|
-
if (extensions["*"].ignores?.length)
|
|
70
|
-
void defaults.ignores["*"].push(
|
|
71
|
-
...extensions["*"].ignores,
|
|
72
|
-
);
|
|
74
|
+
for (const parent of parents)
|
|
75
|
+
void defaults.files[parent].push(...files);
|
|
76
|
+
}
|
|
73
77
|
|
|
74
78
|
const enabledScopes = [...Scopes]
|
|
75
|
-
.filter(scope => defaults.files[scope].length)
|
|
76
|
-
|
|
79
|
+
.filter(scope => defaults.files[scope].length),
|
|
80
|
+
setScopes = enabledScopes
|
|
81
|
+
.filter(scope => scope in settings);
|
|
82
|
+
|
|
83
|
+
for (const scope of enabledScopes) {
|
|
84
|
+
const files = defaults.files[scope],
|
|
85
|
+
ignores = defaults.ignores[scope] ?? [];
|
|
86
|
+
|
|
87
|
+
for (const rule of defaults.rules[scope]) {
|
|
88
|
+
(rule as typeof rule & { files: Array<string | [string, string]> }).files = files;
|
|
89
|
+
(rule as typeof rule & { ignores: string[] }).ignores = ignores;
|
|
90
|
+
}
|
|
77
91
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
92
|
+
const setting = settings[scope];
|
|
93
|
+
|
|
94
|
+
if (setting) {
|
|
95
|
+
(setting as typeof setting & { files: Array<string | [string, string]> }).files = files;
|
|
96
|
+
(setting as typeof setting & { ignores: string[] }).ignores = ignores;
|
|
97
|
+
|
|
98
|
+
if (setting.languageOptions) {
|
|
81
99
|
const {
|
|
82
100
|
parser,
|
|
83
101
|
parserOptions: { parser: subparser } = {},
|
|
84
|
-
} =
|
|
102
|
+
} = setting.languageOptions;
|
|
85
103
|
|
|
86
104
|
if (parser)
|
|
87
|
-
|
|
105
|
+
setting
|
|
88
106
|
.languageOptions
|
|
89
107
|
.parser = imports.parsers[parser] as Parser;
|
|
90
108
|
|
|
91
109
|
if (subparser)
|
|
92
|
-
|
|
110
|
+
setting
|
|
93
111
|
.languageOptions
|
|
94
112
|
.parserOptions!
|
|
95
113
|
.parser = imports.parsers[subparser] as Parser;
|
|
96
114
|
}
|
|
97
|
-
|
|
98
|
-
const enum Count {
|
|
99
|
-
Global = 2,
|
|
115
|
+
}
|
|
100
116
|
}
|
|
101
117
|
|
|
102
|
-
const configs: Array<
|
|
103
|
-
name: string;
|
|
104
|
-
files?: Array<string | [string, string]>;
|
|
105
|
-
ignores?: string[];
|
|
106
|
-
"extends"?: unknown;
|
|
107
|
-
plugins?: unknown;
|
|
108
|
-
}> = [
|
|
118
|
+
const configs: Array<
|
|
109
119
|
{
|
|
110
|
-
|
|
111
|
-
|
|
120
|
+
plugins?: unknown;
|
|
121
|
+
rules?: typeof defaults.rules[Scope][number]["rules"];
|
|
122
|
+
files?: Array<string | [string, string]>;
|
|
123
|
+
ignores?: string[];
|
|
124
|
+
languageOptions?: unknown;
|
|
125
|
+
language?: string;
|
|
126
|
+
processor?: string;
|
|
127
|
+
}
|
|
128
|
+
> = enabledScopes.flatMap(
|
|
129
|
+
scope => defaults.rules[scope],
|
|
130
|
+
),
|
|
131
|
+
rulesGlobalTotal = configs.length + 2;
|
|
132
|
+
|
|
133
|
+
configs.length = rulesGlobalTotal + setScopes.length;
|
|
134
|
+
configs[rulesGlobalTotal - 2] = {
|
|
135
|
+
plugins: imports.plugins,
|
|
136
|
+
};
|
|
137
|
+
configs[rulesGlobalTotal - 1] = {
|
|
138
|
+
ignores: defaults.ignores["*"] ?? [],
|
|
139
|
+
};
|
|
140
|
+
setScopes.forEach(
|
|
141
|
+
(scope, i) => {
|
|
142
|
+
configs[rulesGlobalTotal + i] = settings[scope]!;
|
|
112
143
|
},
|
|
113
|
-
|
|
114
|
-
name: "*/ignores",
|
|
115
|
-
ignores: defaults.ignores["*"] ?? [],
|
|
116
|
-
},
|
|
117
|
-
],
|
|
118
|
-
scopeCount = enabledScopes.length;
|
|
119
|
-
|
|
120
|
-
configs.length = Count.Global + scopeCount;
|
|
121
|
-
|
|
122
|
-
for (let i = 0; i < scopeCount; ++i) {
|
|
123
|
-
const scope = enabledScopes[i]!;
|
|
124
|
-
|
|
125
|
-
configs[i + Count.Global] = {
|
|
126
|
-
name: scope,
|
|
127
|
-
files: defaults.files[scope],
|
|
128
|
-
ignores: defaults.ignores[scope] ?? [],
|
|
129
|
-
"extends": [
|
|
130
|
-
settings[scope] ?? [],
|
|
131
|
-
defaults.rules[scope],
|
|
132
|
-
],
|
|
133
|
-
};
|
|
134
|
-
}
|
|
144
|
+
);
|
|
135
145
|
|
|
136
146
|
return configs;
|
|
137
147
|
}
|