@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 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;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
- 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 => 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
- 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.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
- if (extensions[scope].files)
45
+ const extension = extensions[scope];
46
+
47
+ if (extension.files)
32
48
  void defaults.files[scope].push(
33
- ...extensions[scope].files,
49
+ ...extension.files,
34
50
  );
35
51
 
36
- if (extensions[scope].ignores)
52
+ if (extension.ignores)
37
53
  if (defaults.ignores[scope])
38
54
  void defaults.ignores[scope].push(
39
- ...extensions[scope].ignores,
55
+ ...extension.ignores,
40
56
  );
41
57
  else
42
- defaults.ignores[scope] = extensions[scope].ignores;
58
+ defaults.ignores[scope] = extension.ignores;
43
59
 
44
- if (extensions[scope].rules)
60
+ if (extension.rules)
45
61
  defaults.rules[scope][
46
62
  defaults.rules[scope].length
47
- ] = { rules: extensions[scope].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
- for (const parent of parents)
57
- void defaults.files[parent].push(
58
- ...defaults.files[scope],
59
- );
71
+ ) {
72
+ const { [scope]: files } = defaults.files;
60
73
 
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
- );
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
- .filter(scope => defaults.rules[scope].length);
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
- for (const scope of enabledScopes)
79
- if (settings[scope])
80
- if (settings[scope].languageOptions) {
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
- } = settings[scope].languageOptions;
102
+ } = setting.languageOptions;
85
103
 
86
104
  if (parser)
87
- settings[scope]
105
+ setting
88
106
  .languageOptions
89
107
  .parser = imports.parsers[parser] as Parser;
90
108
 
91
109
  if (subparser)
92
- settings[scope]
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
- name: "*/plugins",
111
- plugins: imports.plugins,
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
  }