@eslinted/core 31.2.0 → 31.2.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.
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
- name: string;
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
- extends?: unknown;
10
- plugins?: unknown;
10
+ languageOptions?: unknown;
11
+ language?: string;
12
+ processor?: string;
11
13
  }[];
12
14
  //# sourceMappingURL=factory.d.ts.map
@@ -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;UAuFxF,MAAM;YACJ,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;cAC9B,MAAM,EAAE;cACN,OAAO;cACT,OAAO;IA8BpB"}
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;cAyGlF,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
- if (extensions[scope].files)
14
- void defaults.files[scope].push(...extensions[scope].files);
15
- if (extensions[scope].ignores)
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(...extensions[scope].ignores);
25
+ void defaults.ignores[scope].push(...extension.ignores);
18
26
  else
19
- defaults.ignores[scope] = extensions[scope].ignores;
20
- if (extensions[scope].rules)
21
- defaults.rules[scope][defaults.rules[scope].length] = { rules: extensions[scope].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(...defaults.files[scope]);
29
- if (extensions)
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 => defaults.rules[scope].length);
39
- for (const scope of enabledScopes)
40
- if (settings[scope])
41
- if (settings[scope].languageOptions) {
42
- const { parser, parserOptions: { parser: subparser } = {}, } = settings[scope].languageOptions;
40
+ .filter(scope => defaults.files[scope].length), setScopes = enabledScopes
41
+ .filter(scope => settings[scope]);
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
- settings[scope]
55
+ setting
45
56
  .languageOptions
46
57
  .parser = imports.parsers[parser];
47
58
  if (subparser)
48
- settings[scope]
59
+ setting
49
60
  .languageOptions
50
61
  .parserOptions
51
62
  .parser = imports.parsers[subparser];
52
63
  }
53
- const configs = [
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
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
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.0",
6
+ "version": "31.2.1",
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,33 +18,50 @@ 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];
24
38
  imports.parsers[scope] = extensions[scope].parser as typeof imports.parsers[Optional];
39
+
25
40
  }
26
41
  else
27
42
  Scopes.delete(scope);
28
43
 
29
44
  for (const scope of Scopes)
30
45
  if (extensions[scope]) {
31
- if (extensions[scope].files)
46
+ const extension = extensions[scope]!;
47
+
48
+ if (extension.files)
32
49
  void defaults.files[scope].push(
33
- ...extensions[scope].files,
50
+ ...extension.files,
34
51
  );
35
52
 
36
- if (extensions[scope].ignores)
53
+ if (extension.ignores)
37
54
  if (defaults.ignores[scope])
38
55
  void defaults.ignores[scope].push(
39
- ...extensions[scope].ignores,
56
+ ...extension.ignores,
40
57
  );
41
58
  else
42
- defaults.ignores[scope] = extensions[scope].ignores;
59
+ defaults.ignores[scope] = extension.ignores;
43
60
 
44
- if (extensions[scope].rules)
61
+ if (extension.rules)
45
62
  defaults.rules[scope][
46
63
  defaults.rules[scope].length
47
- ] = { rules: extensions[scope].rules };
64
+ ] = { rules: extension.rules };
48
65
  }
49
66
  }
50
67
 
@@ -52,86 +69,80 @@ export default function factory<
52
69
  if (
53
70
  Scopes.has(scope)
54
71
  && defaults.files[scope].length
55
- )
56
- for (const parent of parents)
57
- void defaults.files[parent].push(
58
- ...defaults.files[scope],
59
- );
72
+ ) {
73
+ const { [scope]: files } = defaults.files;
60
74
 
61
- if (extensions)
62
- if (extensions["*"])
63
- if (
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
- );
75
+ for (const parent of parents)
76
+ void defaults.files[parent].push(...files);
77
+ }
73
78
 
74
79
  const enabledScopes = [...Scopes]
75
- .filter(scope => defaults.files[scope].length)
76
- .filter(scope => defaults.rules[scope].length);
80
+ .filter(scope => defaults.files[scope].length),
81
+ setScopes = enabledScopes
82
+ .filter(scope => settings[scope]);
83
+
84
+ for (const scope of enabledScopes) {
85
+ const files = defaults.files[scope],
86
+ ignores = defaults.ignores[scope] ?? [];
87
+
88
+ for (const rule of defaults.rules[scope]) {
89
+ (rule as typeof rule & { files: Array<string | [string, string]> }).files = files;
90
+ (rule as typeof rule & { ignores: string[] }).ignores = ignores;
91
+ }
77
92
 
78
- for (const scope of enabledScopes)
79
- if (settings[scope])
80
- if (settings[scope].languageOptions) {
93
+ const setting = settings[scope];
94
+
95
+ if (setting) {
96
+ (setting as typeof setting & { files: Array<string | [string, string]> }).files = files;
97
+ (setting as typeof setting & { ignores: string[] }).ignores = ignores;
98
+
99
+ if (setting.languageOptions) {
81
100
  const {
82
101
  parser,
83
102
  parserOptions: { parser: subparser } = {},
84
- } = settings[scope].languageOptions;
103
+ } = setting.languageOptions;
85
104
 
86
105
  if (parser)
87
- settings[scope]
106
+ setting
88
107
  .languageOptions
89
108
  .parser = imports.parsers[parser] as Parser;
90
109
 
91
110
  if (subparser)
92
- settings[scope]
111
+ setting
93
112
  .languageOptions
94
113
  .parserOptions!
95
114
  .parser = imports.parsers[subparser] as Parser;
96
115
  }
97
-
98
- const enum Count {
99
- Global = 2,
116
+ }
100
117
  }
101
118
 
102
- const configs: Array<{
103
- name: string;
104
- files?: Array<string | [string, string]>;
105
- ignores?: string[];
106
- "extends"?: unknown;
107
- plugins?: unknown;
108
- }> = [
119
+ const configs: Array<
109
120
  {
110
- name: "*/plugins",
111
- plugins: imports.plugins,
121
+ plugins?: unknown;
122
+ rules?: typeof defaults.rules[Scope][number]["rules"];
123
+ files?: Array<string | [string, string]>;
124
+ ignores?: string[];
125
+ languageOptions?: unknown;
126
+ language?: string;
127
+ processor?: string;
128
+ }
129
+ > = enabledScopes.flatMap(
130
+ scope => defaults.rules[scope],
131
+ ),
132
+ rulesGlobalTotal = configs.length + 2;
133
+
134
+ configs.length = rulesGlobalTotal + setScopes.length;
135
+ configs[rulesGlobalTotal - 2] = {
136
+ plugins: imports.plugins,
137
+ };
138
+ configs[rulesGlobalTotal - 1] = {
139
+ ignores: defaults.ignores["*"] ?? [],
140
+ };
141
+ setScopes.forEach(
142
+ (scope, i) => {
143
+ configs[rulesGlobalTotal + i] = settings[scope]!;
112
144
  },
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
- }
145
+ );
135
146
 
136
147
  return configs;
137
148
  }