@origin-1/eslint-config 0.4.1 → 0.5.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/index.d.ts +1 -0
- package/index.js +1 -0
- package/lib/create-config.d.ts +2 -2
- package/lib/create-config.js +4 -15
- package/lib/normalize-version.d.ts +6 -0
- package/lib/normalize-version.js +27 -0
- package/lib/rules.js +23 -20
- package/package.json +2 -2
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -20,3 +20,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
20
20
|
const patch_tslib_js_1 = __importDefault(require("./patch-tslib.js"));
|
|
21
21
|
(0, patch_tslib_js_1.default)(require);
|
|
22
22
|
__exportStar(require("./lib/create-config.js"), exports);
|
|
23
|
+
__exportStar(require("./lib/normalize-version.js"), exports);
|
package/lib/create-config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { JSVersion } from './
|
|
1
|
+
import type { JSVersion, TSVersion } from './normalize-version.js';
|
|
2
2
|
import type { Linter } from 'eslint';
|
|
3
3
|
export interface ConfigData extends Linter.HasRules {
|
|
4
4
|
env?: Record<string, boolean> | undefined;
|
|
@@ -7,7 +7,7 @@ export interface ConfigData extends Linter.HasRules {
|
|
|
7
7
|
jsVersion?: JSVersion | undefined;
|
|
8
8
|
parserOptions?: Linter.ParserOptions | undefined;
|
|
9
9
|
plugins?: string[] | undefined;
|
|
10
|
-
tsVersion?:
|
|
10
|
+
tsVersion?: TSVersion | undefined;
|
|
11
11
|
}
|
|
12
12
|
export interface ConfigDataWithFiles extends ConfigData {
|
|
13
13
|
excludedFiles?: string | string[] | undefined;
|
package/lib/create-config.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createConfig = exports.createBaseConfig = void 0;
|
|
7
|
+
const normalize_version_js_1 = require("./normalize-version.js");
|
|
7
8
|
const rules_js_1 = require("./rules.js");
|
|
8
9
|
const semver_1 = __importDefault(require("semver"));
|
|
9
10
|
function cloneRuleEntry(ruleEntry) {
|
|
@@ -34,12 +35,12 @@ function createBaseOverride(configData) {
|
|
|
34
35
|
let ecmaVersion;
|
|
35
36
|
let envKey;
|
|
36
37
|
let parser;
|
|
37
|
-
const jsVersion =
|
|
38
|
+
const jsVersion = (0, normalize_version_js_1.normalizeJSVersion)(configData.jsVersion);
|
|
38
39
|
if (jsVersion === 2015)
|
|
39
40
|
envKey = 'es6';
|
|
40
41
|
else if (jsVersion > 2015)
|
|
41
42
|
envKey = `es${jsVersion}`;
|
|
42
|
-
const tsVersion =
|
|
43
|
+
const tsVersion = (0, normalize_version_js_1.normalizeTSVersion)(configData.tsVersion);
|
|
43
44
|
if (lang === 'ts') {
|
|
44
45
|
ecmaVersion = 'latest';
|
|
45
46
|
parser = '@typescript-eslint/parser';
|
|
@@ -134,6 +135,7 @@ function createCommonEntries() {
|
|
|
134
135
|
function createConfig(...configDataList) {
|
|
135
136
|
const { plugins, rules } = createCommonEntries();
|
|
136
137
|
const overrides = configDataList.map(createOverride);
|
|
138
|
+
overrides.unshift({ files: ['*.js', '*.cjs', '*.mjs', '*.ts', '*.cts', '*.mts'] });
|
|
137
139
|
const config = {
|
|
138
140
|
overrides,
|
|
139
141
|
parser: '@origin-1/eslint-config/no-parser',
|
|
@@ -169,22 +171,9 @@ function findRuleEntry(versionedList, jsVersion, tsVersion) {
|
|
|
169
171
|
}
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
|
-
function getJSVersion(configData) {
|
|
173
|
-
const { jsVersion } = configData;
|
|
174
|
-
return Number.isInteger(jsVersion) ? jsVersion : 5;
|
|
175
|
-
}
|
|
176
174
|
function getLanguage(configData) {
|
|
177
175
|
return configData.tsVersion == null ? 'js' : 'ts';
|
|
178
176
|
}
|
|
179
|
-
function getTSVersion(configData) {
|
|
180
|
-
const { tsVersion } = configData;
|
|
181
|
-
if (tsVersion != null) {
|
|
182
|
-
const cleanVersion = semver_1.default.clean(tsVersion);
|
|
183
|
-
if (cleanVersion != null)
|
|
184
|
-
return cleanVersion;
|
|
185
|
-
}
|
|
186
|
-
return 'latest';
|
|
187
|
-
}
|
|
188
177
|
function isJSTSEntry(ruleSettings) {
|
|
189
178
|
return typeof ruleSettings === 'object' && 'js' in ruleSettings && 'ts' in ruleSettings;
|
|
190
179
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare const JS_VERSION_SET: Set<5 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022>;
|
|
2
|
+
export declare type JSVersion = typeof JS_VERSION_SET extends Set<infer T> ? T : never;
|
|
3
|
+
export declare type TSVersion = 'latest' | `${number}.${number}.${number}` | `${number}.${number}.${number}-${string}`;
|
|
4
|
+
export declare function normalizeJSVersion(jsVersion?: JSVersion): JSVersion;
|
|
5
|
+
export declare function normalizeTSVersion(tsVersion?: TSVersion): TSVersion;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.normalizeTSVersion = exports.normalizeJSVersion = void 0;
|
|
7
|
+
const node_util_1 = require("node:util");
|
|
8
|
+
const semver_1 = __importDefault(require("semver"));
|
|
9
|
+
const JS_VERSION_SET = new Set([5, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022]);
|
|
10
|
+
function normalizeJSVersion(jsVersion = 5) {
|
|
11
|
+
if (JS_VERSION_SET.has(jsVersion))
|
|
12
|
+
return jsVersion;
|
|
13
|
+
const validValuesList = new Intl.ListFormat('en').format([...JS_VERSION_SET].map(String));
|
|
14
|
+
const message = `jsVersion ${(0, node_util_1.inspect)(jsVersion)} is not supported. Valid values are ${validValuesList}`;
|
|
15
|
+
throw TypeError(message);
|
|
16
|
+
}
|
|
17
|
+
exports.normalizeJSVersion = normalizeJSVersion;
|
|
18
|
+
function normalizeTSVersion(tsVersion = 'latest') {
|
|
19
|
+
if (tsVersion === 'latest')
|
|
20
|
+
return tsVersion;
|
|
21
|
+
const normalTSVersion = semver_1.default.clean(tsVersion);
|
|
22
|
+
if (normalTSVersion != null)
|
|
23
|
+
return normalTSVersion;
|
|
24
|
+
const message = `tsVersion ${(0, node_util_1.inspect)(tsVersion)} is not supported`;
|
|
25
|
+
throw TypeError(message);
|
|
26
|
+
}
|
|
27
|
+
exports.normalizeTSVersion = normalizeTSVersion;
|
package/lib/rules.js
CHANGED
|
@@ -4,6 +4,9 @@ exports.RULES = exports.getRulePrefix = exports.getRuleKey = exports.HYBRID = ex
|
|
|
4
4
|
exports.FOR_LANG = Symbol('For one language only');
|
|
5
5
|
exports.UNIQUE = Symbol('Unique built-in rules');
|
|
6
6
|
exports.HYBRID = Symbol('Hybrid rules');
|
|
7
|
+
function beforeJSOrElse(version, before, else_) {
|
|
8
|
+
return jsts(beforeOrElse(version, before, else_), else_);
|
|
9
|
+
}
|
|
7
10
|
function beforeOrElse(version, before, else_) {
|
|
8
11
|
const beforeEntry = { minVersion: undefined, ruleEntry: before };
|
|
9
12
|
const elseEntry = { minVersion: version, ruleEntry: else_ };
|
|
@@ -51,7 +54,7 @@ exports.RULES = {
|
|
|
51
54
|
'no-fallthrough': 'error',
|
|
52
55
|
'no-func-assign': 'error',
|
|
53
56
|
'no-import-assign': 'error',
|
|
54
|
-
'no-inner-declarations': 'error',
|
|
57
|
+
'no-inner-declarations': beforeJSOrElse(2015, 'error', 'off'),
|
|
55
58
|
'no-invalid-regexp': 'error',
|
|
56
59
|
'no-irregular-whitespace': 'error',
|
|
57
60
|
'no-misleading-character-class': 'error',
|
|
@@ -133,7 +136,7 @@ exports.RULES = {
|
|
|
133
136
|
'no-iterator': 'error',
|
|
134
137
|
'no-label-var': 'error',
|
|
135
138
|
'no-labels': ['error', { allowLoop: true, allowSwitch: true }],
|
|
136
|
-
'no-lone-blocks': 'error',
|
|
139
|
+
'no-lone-blocks': beforeJSOrElse(2015, 'error', 'off'),
|
|
137
140
|
'no-lonely-if': 'off',
|
|
138
141
|
'no-mixed-operators': 'off',
|
|
139
142
|
'no-multi-assign': 'off',
|
|
@@ -173,27 +176,27 @@ exports.RULES = {
|
|
|
173
176
|
'no-useless-escape': 'error',
|
|
174
177
|
'no-useless-rename': 'error',
|
|
175
178
|
'no-useless-return': 'error',
|
|
176
|
-
'no-var': 'error',
|
|
179
|
+
'no-var': beforeJSOrElse(2015, 'off', 'error'),
|
|
177
180
|
'no-void': 'off',
|
|
178
181
|
'no-warning-comments': 'off',
|
|
179
182
|
'no-with': 'error',
|
|
180
|
-
'object-shorthand': 'error',
|
|
183
|
+
'object-shorthand': beforeJSOrElse(2015, 'off', 'error'),
|
|
181
184
|
'one-var': ['error', 'never'],
|
|
182
185
|
'one-var-declaration-per-line': 'error',
|
|
183
186
|
'operator-assignment': 'error',
|
|
184
|
-
'prefer-arrow-callback': 'error',
|
|
187
|
+
'prefer-arrow-callback': beforeJSOrElse(2015, 'off', 'error'),
|
|
185
188
|
'prefer-const': ['error', { ignoreReadBeforeAssign: true }],
|
|
186
|
-
'prefer-destructuring': 'error',
|
|
187
|
-
'prefer-exponentiation-operator': jsts('error', 'off'),
|
|
189
|
+
'prefer-destructuring': beforeJSOrElse(2015, 'off', 'error'),
|
|
190
|
+
'prefer-exponentiation-operator': jsts(beforeOrElse(2016, 'off', 'error'), 'off'),
|
|
188
191
|
'prefer-named-capture-group': 'off',
|
|
189
192
|
'prefer-numeric-literals': 'error',
|
|
190
193
|
'prefer-object-has-own': 'error',
|
|
191
194
|
'prefer-object-spread': 'off',
|
|
192
195
|
'prefer-promise-reject-errors': 'off',
|
|
193
196
|
'prefer-regex-literals': 'off',
|
|
194
|
-
'prefer-rest-params': 'error',
|
|
195
|
-
'prefer-spread': 'error',
|
|
196
|
-
'prefer-template': 'error',
|
|
197
|
+
'prefer-rest-params': beforeJSOrElse(2015, 'off', 'error'),
|
|
198
|
+
'prefer-spread': beforeJSOrElse(2015, 'off', 'error'),
|
|
199
|
+
'prefer-template': beforeJSOrElse(2015, 'off', 'error'),
|
|
197
200
|
'quote-props': 'off',
|
|
198
201
|
'radix': 'error',
|
|
199
202
|
'require-unicode-regexp': 'off',
|
|
@@ -257,7 +260,7 @@ exports.RULES = {
|
|
|
257
260
|
[exports.HYBRID]: {
|
|
258
261
|
'no-dupe-class-members': 'error',
|
|
259
262
|
'no-loss-of-precision': 'error',
|
|
260
|
-
'no-unused-vars':
|
|
263
|
+
'no-unused-vars': beforeJSOrElse(2019, ['error', { ignoreRestSiblings: true, vars: 'local' }], ['error', { caughtErrors: 'all', ignoreRestSiblings: true, vars: 'local' }]),
|
|
261
264
|
'no-use-before-define': 'off',
|
|
262
265
|
'default-param-last': 'off',
|
|
263
266
|
'dot-notation': 'error',
|
|
@@ -394,7 +397,7 @@ exports.RULES = {
|
|
|
394
397
|
'prefer-enum-initializers': 'off',
|
|
395
398
|
'prefer-for-of': 'error',
|
|
396
399
|
'prefer-function-type': 'off',
|
|
397
|
-
'prefer-includes': '
|
|
400
|
+
'prefer-includes': 'off',
|
|
398
401
|
'prefer-literal-enum-member': 'off',
|
|
399
402
|
'prefer-namespace-keyword': 'off',
|
|
400
403
|
'prefer-nullish-coalescing': 'error',
|
|
@@ -421,10 +424,10 @@ exports.RULES = {
|
|
|
421
424
|
'no-callback-literal': 'off',
|
|
422
425
|
'no-deprecated-api': 'error',
|
|
423
426
|
'no-exports-assign': 'error',
|
|
424
|
-
'no-extraneous-import':
|
|
425
|
-
'no-extraneous-require': '
|
|
426
|
-
'no-missing-import':
|
|
427
|
-
'no-missing-require': '
|
|
427
|
+
'no-extraneous-import': 'off',
|
|
428
|
+
'no-extraneous-require': 'off',
|
|
429
|
+
'no-missing-import': 'off',
|
|
430
|
+
'no-missing-require': 'off',
|
|
428
431
|
'no-unpublished-bin': 'error',
|
|
429
432
|
'no-unpublished-import': 'error',
|
|
430
433
|
'no-unpublished-require': 'error',
|
|
@@ -443,8 +446,8 @@ exports.RULES = {
|
|
|
443
446
|
'no-path-concat': 'error',
|
|
444
447
|
'no-process-env': 'off',
|
|
445
448
|
'no-process-exit': 'off',
|
|
446
|
-
'no-restricted-import': '
|
|
447
|
-
'no-restricted-require': '
|
|
449
|
+
'no-restricted-import': 'off',
|
|
450
|
+
'no-restricted-require': 'off',
|
|
448
451
|
'no-sync': 'off',
|
|
449
452
|
'prefer-global/buffer': 'error',
|
|
450
453
|
'prefer-global/console': 'error',
|
|
@@ -453,7 +456,7 @@ exports.RULES = {
|
|
|
453
456
|
'prefer-global/text-encoder': 'error',
|
|
454
457
|
'prefer-global/url': 'error',
|
|
455
458
|
'prefer-global/url-search-params': 'error',
|
|
456
|
-
'prefer-promises/dns': 'error',
|
|
457
|
-
'prefer-promises/fs': 'off',
|
|
459
|
+
'prefer-promises/dns': beforeJSOrElse(2015, 'off', 'error'),
|
|
460
|
+
'prefer-promises/fs': beforeJSOrElse(2015, 'off', 'error'),
|
|
458
461
|
},
|
|
459
462
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@origin-1/eslint-config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "ESLint configuration generator with Origin₁ presets",
|
|
5
5
|
"homepage": "https://github.com/origin-1/eslint-config#readme",
|
|
6
6
|
"license": "ISC",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"eslint-plugin-n": "15"
|
|
19
19
|
},
|
|
20
20
|
"engines": {
|
|
21
|
-
"node": "
|
|
21
|
+
"node": ">=18.1"
|
|
22
22
|
},
|
|
23
23
|
"exports": {
|
|
24
24
|
".": "./index.js",
|