eslint-config-un 0.3.0 → 0.4.0
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/README.md +4 -1
- package/dist/index.cjs +128 -28
- package/dist/index.d.cts +12806 -6396
- package/dist/index.d.ts +12806 -6396
- package/dist/index.js +125 -25
- package/package.json +50 -47
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ Includes the rules from the following configs & plugins:
|
|
|
25
25
|
- [promise](https://www.npmjs.com/package/eslint-plugin-promise)
|
|
26
26
|
- [regexp](https://www.npmjs.com/package/eslint-plugin-regexp)
|
|
27
27
|
- [security](https://www.npmjs.com/package/eslint-plugin-security)
|
|
28
|
-
- [sonar](https://www.npmjs.com/package/eslint-plugin-sonarjs)
|
|
28
|
+
- [sonar](https://www.npmjs.com/package/eslint-plugin-sonarjs) (v3 since v0.4.0, v1 before)
|
|
29
29
|
- [tailwind](https://www.npmjs.com/package/eslint-plugin-tailwindcss)
|
|
30
30
|
- [jsonc](https://www.npmjs.com/package/eslint-plugin-jsonc) (since v0.1.4)
|
|
31
31
|
- [yaml](https://www.npmjs.com/package/eslint-plugin-yaml) (since v0.1.0)
|
|
@@ -37,6 +37,8 @@ Includes the rules from the following configs & plugins:
|
|
|
37
37
|
- [css](https://www.npmjs.com/package/eslint-plugin-css) (since v0.2.0)
|
|
38
38
|
- [jest](https://www.npmjs.com/package/eslint-plugin-jest) (+ [jest-extended](https://www.npmjs.com/package/eslint-plugin-jest-extended)) (since v0.3.0)
|
|
39
39
|
- [vitest](https://www.npmjs.com/package/@vitest/eslint-plugin) (since v0.3.0)
|
|
40
|
+
- [jsdoc](https://www.npmjs.com/package/eslint-plugin-jsdoc) (since v0.3.1)
|
|
41
|
+
- [perfectionist](https://www.npmjs.com/package/eslint-plugin-perfectionist) (since v0.4.0)
|
|
40
42
|
|
|
41
43
|
## Features
|
|
42
44
|
|
|
@@ -72,6 +74,7 @@ export default eslintConfig({
|
|
|
72
74
|
- `yaml`
|
|
73
75
|
- `toml`
|
|
74
76
|
- `package-json`
|
|
77
|
+
- `perfectionist`
|
|
75
78
|
- Some rules are set to warn by default. You can change some or even all such rule's reporting level using `errorsInsteadOfWarnings` option. You can find all such rules by inspecting the source code of this package.
|
|
76
79
|
|
|
77
80
|
### Certain rules are disabled for code blocks inside `*.md` files
|
package/dist/index.cjs
CHANGED
|
@@ -33,19 +33,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
33
33
|
));
|
|
34
34
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
35
35
|
|
|
36
|
-
// node_modules/.pnpm/tsup@8.3.5_jiti@2.0.0_postcss@8.4.47_tsx@4.16.2_typescript@5.7.
|
|
36
|
+
// node_modules/.pnpm/tsup@8.3.5_jiti@2.0.0_postcss@8.4.47_tsx@4.16.2_typescript@5.7.3_yaml@2.4.5/node_modules/tsup/assets/cjs_shims.js
|
|
37
37
|
var init_cjs_shims = __esm({
|
|
38
|
-
"node_modules/.pnpm/tsup@8.3.5_jiti@2.0.0_postcss@8.4.47_tsx@4.16.2_typescript@5.7.
|
|
38
|
+
"node_modules/.pnpm/tsup@8.3.5_jiti@2.0.0_postcss@8.4.47_tsx@4.16.2_typescript@5.7.3_yaml@2.4.5/node_modules/tsup/assets/cjs_shims.js"() {
|
|
39
39
|
"use strict";
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
// node_modules/.pnpm/@eslint+js@9.
|
|
43
|
+
// node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/package.json
|
|
44
44
|
var require_package = __commonJS({
|
|
45
|
-
"node_modules/.pnpm/@eslint+js@9.
|
|
45
|
+
"node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/package.json"(exports2, module2) {
|
|
46
46
|
module2.exports = {
|
|
47
47
|
name: "@eslint/js",
|
|
48
|
-
version: "9.
|
|
48
|
+
version: "9.18.0",
|
|
49
49
|
description: "ESLint JavaScript language implementation",
|
|
50
50
|
main: "./src/index.js",
|
|
51
51
|
types: "./types/index.d.ts",
|
|
@@ -81,9 +81,9 @@ var require_package = __commonJS({
|
|
|
81
81
|
}
|
|
82
82
|
});
|
|
83
83
|
|
|
84
|
-
// node_modules/.pnpm/@eslint+js@9.
|
|
84
|
+
// node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/configs/eslint-all.js
|
|
85
85
|
var require_eslint_all = __commonJS({
|
|
86
|
-
"node_modules/.pnpm/@eslint+js@9.
|
|
86
|
+
"node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/configs/eslint-all.js"(exports2, module2) {
|
|
87
87
|
"use strict";
|
|
88
88
|
init_cjs_shims();
|
|
89
89
|
module2.exports = Object.freeze({
|
|
@@ -290,9 +290,9 @@ var require_eslint_all = __commonJS({
|
|
|
290
290
|
}
|
|
291
291
|
});
|
|
292
292
|
|
|
293
|
-
// node_modules/.pnpm/@eslint+js@9.
|
|
293
|
+
// node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/configs/eslint-recommended.js
|
|
294
294
|
var require_eslint_recommended = __commonJS({
|
|
295
|
-
"node_modules/.pnpm/@eslint+js@9.
|
|
295
|
+
"node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/configs/eslint-recommended.js"(exports2, module2) {
|
|
296
296
|
"use strict";
|
|
297
297
|
init_cjs_shims();
|
|
298
298
|
module2.exports = Object.freeze({
|
|
@@ -363,15 +363,15 @@ var require_eslint_recommended = __commonJS({
|
|
|
363
363
|
}
|
|
364
364
|
});
|
|
365
365
|
|
|
366
|
-
// node_modules/.pnpm/@eslint+js@9.
|
|
366
|
+
// node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/index.js
|
|
367
367
|
var require_src = __commonJS({
|
|
368
|
-
"node_modules/.pnpm/@eslint+js@9.
|
|
368
|
+
"node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/index.js"(exports2, module2) {
|
|
369
369
|
"use strict";
|
|
370
370
|
init_cjs_shims();
|
|
371
|
-
var { version } = require_package();
|
|
371
|
+
var { name, version } = require_package();
|
|
372
372
|
module2.exports = {
|
|
373
373
|
meta: {
|
|
374
|
-
name
|
|
374
|
+
name,
|
|
375
375
|
version
|
|
376
376
|
},
|
|
377
377
|
configs: {
|
|
@@ -383,12 +383,12 @@ var require_src = __commonJS({
|
|
|
383
383
|
});
|
|
384
384
|
|
|
385
385
|
// src/index.ts
|
|
386
|
-
var
|
|
387
|
-
__export(
|
|
386
|
+
var index_exports = {};
|
|
387
|
+
__export(index_exports, {
|
|
388
388
|
DEFAULT_GLOBAL_IGNORES: () => DEFAULT_GLOBAL_IGNORES,
|
|
389
389
|
eslintConfig: () => eslintConfig
|
|
390
390
|
});
|
|
391
|
-
module.exports = __toCommonJS(
|
|
391
|
+
module.exports = __toCommonJS(index_exports);
|
|
392
392
|
init_cjs_shims();
|
|
393
393
|
var import_node_fs = __toESM(require("fs"), 1);
|
|
394
394
|
var import_eslint_plugin2 = __toESM(require("@stylistic/eslint-plugin"), 1);
|
|
@@ -453,6 +453,15 @@ var createPluginObjectRenamer = (from, to) => {
|
|
|
453
453
|
])
|
|
454
454
|
);
|
|
455
455
|
};
|
|
456
|
+
var bulkChangeRuleSeverity = (rules, severity) => Object.fromEntries(
|
|
457
|
+
Object.entries(rules).map(
|
|
458
|
+
([ruleName, ruleOptions]) => [
|
|
459
|
+
ruleName,
|
|
460
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
461
|
+
Array.isArray(ruleOptions) ? [severity, ...ruleOptions.slice(1)] : severity
|
|
462
|
+
]
|
|
463
|
+
)
|
|
464
|
+
);
|
|
456
465
|
var ConfigEntryBuilder = class {
|
|
457
466
|
constructor(options, internalOptions) {
|
|
458
467
|
this.options = options;
|
|
@@ -487,14 +496,15 @@ var ConfigEntryBuilder = class {
|
|
|
487
496
|
const errorsInsteadOfWarnings = this.internalOptions.globalOptions?.errorsInsteadOfWarnings;
|
|
488
497
|
const severityFinal = configOptions.forceSeverity ?? (severity === WARNING && (errorsInsteadOfWarnings === true || Array.isArray(errorsInsteadOfWarnings) && errorsInsteadOfWarnings.includes(ruleName)) ? ERROR : severity);
|
|
489
498
|
const ruleNameFinal = `${options?.disableAutofix ? "disable-autofix/" : ""}${ruleName}`;
|
|
490
|
-
|
|
499
|
+
configFinal.rules ||= {};
|
|
500
|
+
configFinal.rules[ruleNameFinal] = [severityFinal, ...ruleOptions || []];
|
|
491
501
|
if (options?.disableAutofix) {
|
|
492
|
-
|
|
502
|
+
configFinal.rules[ruleName] = 0;
|
|
493
503
|
}
|
|
494
504
|
if (options?.overrideBaseRule) {
|
|
495
505
|
const baseRuleName = typeof options.overrideBaseRule === "string" ? options.overrideBaseRule : ruleName.split("/").slice(1).join("/");
|
|
496
506
|
if (baseRuleName) {
|
|
497
|
-
|
|
507
|
+
configFinal.rules[baseRuleName] = 0;
|
|
498
508
|
}
|
|
499
509
|
}
|
|
500
510
|
return result;
|
|
@@ -505,11 +515,13 @@ var ConfigEntryBuilder = class {
|
|
|
505
515
|
addRule: generateAddRuleFn(),
|
|
506
516
|
addAnyRule: generateAddRuleFn(),
|
|
507
517
|
addOverrides: () => {
|
|
508
|
-
|
|
518
|
+
configFinal.rules ||= {};
|
|
519
|
+
Object.assign(configFinal.rules, this.options.overrides);
|
|
509
520
|
return result;
|
|
510
521
|
},
|
|
511
522
|
addBulkRules: (rules) => {
|
|
512
|
-
|
|
523
|
+
configFinal.rules ||= {};
|
|
524
|
+
Object.assign(configFinal.rules, rules);
|
|
513
525
|
return result;
|
|
514
526
|
}
|
|
515
527
|
};
|
|
@@ -878,6 +890,53 @@ var jsEslintConfig = (options = {}, internalOptions = {}) => {
|
|
|
878
890
|
return builder.getAllConfigs();
|
|
879
891
|
};
|
|
880
892
|
|
|
893
|
+
// src/configs/jsdoc.ts
|
|
894
|
+
init_cjs_shims();
|
|
895
|
+
var import_eslint_plugin_jsdoc = __toESM(require("eslint-plugin-jsdoc"), 1);
|
|
896
|
+
var jsdocEslintConfig = (options = {}, internalOptions = {}) => {
|
|
897
|
+
const {
|
|
898
|
+
settings: pluginSettings,
|
|
899
|
+
typescript: typescriptOnlyRules = internalOptions.isTypescriptEnabled
|
|
900
|
+
} = options;
|
|
901
|
+
const builder = new ConfigEntryBuilder(options, internalOptions);
|
|
902
|
+
builder.addConfig("jsdoc/setup", {
|
|
903
|
+
plugins: {
|
|
904
|
+
jsdoc: import_eslint_plugin_jsdoc.default
|
|
905
|
+
}
|
|
906
|
+
});
|
|
907
|
+
builder.addConfig(["jsdoc", { includeDefaultFilesAndIgnores: true }], {
|
|
908
|
+
...pluginSettings && {
|
|
909
|
+
settings: {
|
|
910
|
+
jsdoc: pluginSettings
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
}).addBulkRules(import_eslint_plugin_jsdoc.default.configs["flat/recommended-error"].rules).addRule("jsdoc/check-indentation", ERROR).addRule("jsdoc/check-line-alignment", ERROR).addRule("jsdoc/check-syntax", ERROR).addRule("jsdoc/check-template-names", ERROR).addRule("jsdoc/lines-before-block", ERROR).addRule("jsdoc/no-bad-blocks", ERROR).addRule("jsdoc/no-blank-block-descriptions", ERROR).addRule("jsdoc/no-blank-blocks", ERROR).addRule("jsdoc/no-defaults", ERROR).addRule("jsdoc/no-multi-asterisks", ERROR, [{ allowWhitespace: true }]).addRule("jsdoc/require-asterisk-prefix", ERROR).addRule("jsdoc/require-jsdoc", OFF).addRule("jsdoc/require-param", ERROR, [{ ignoreWhenAllParamsMissing: true }]).addRule("jsdoc/require-param-description", WARNING).addRule("jsdoc/require-property-description", WARNING).addRule("jsdoc/require-returns", OFF).addRule("jsdoc/require-returns-description", WARNING).addRule("jsdoc/sort-tags", ERROR).addOverrides();
|
|
914
|
+
const tsBuilder = new ConfigEntryBuilder(
|
|
915
|
+
typeof typescriptOnlyRules === "object" ? typescriptOnlyRules : {},
|
|
916
|
+
internalOptions
|
|
917
|
+
);
|
|
918
|
+
if (typescriptOnlyRules) {
|
|
919
|
+
const pluginSettingsForTs = (typeof typescriptOnlyRules === "object" ? typescriptOnlyRules.settings : void 0) || pluginSettings;
|
|
920
|
+
builder.addConfig(
|
|
921
|
+
[
|
|
922
|
+
"jsdoc/ts",
|
|
923
|
+
{
|
|
924
|
+
includeDefaultFilesAndIgnores: true,
|
|
925
|
+
filesFallback: [GLOB_TS, GLOB_TSX]
|
|
926
|
+
}
|
|
927
|
+
],
|
|
928
|
+
{
|
|
929
|
+
...pluginSettingsForTs && {
|
|
930
|
+
settings: {
|
|
931
|
+
jsdoc: pluginSettingsForTs
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
).addRule("jsdoc/no-types", ERROR).addRule("jsdoc/no-undefined-types", OFF).addRule("jsdoc/require-param-type", OFF).addRule("jsdoc/require-property-type", OFF).addRule("jsdoc/require-returns-type", OFF).addOverrides();
|
|
936
|
+
}
|
|
937
|
+
return [...builder.getAllConfigs(), ...tsBuilder.getAllConfigs()];
|
|
938
|
+
};
|
|
939
|
+
|
|
881
940
|
// src/configs/jsonc.ts
|
|
882
941
|
init_cjs_shims();
|
|
883
942
|
var import_eslint_plugin_jsonc = __toESM(require("eslint-plugin-jsonc"), 1);
|
|
@@ -1149,6 +1208,19 @@ var packageJsonEslintConfig = (options = {}, internalOptions = {}) => {
|
|
|
1149
1208
|
return builder.getAllConfigs();
|
|
1150
1209
|
};
|
|
1151
1210
|
|
|
1211
|
+
// src/configs/perfectionist.ts
|
|
1212
|
+
init_cjs_shims();
|
|
1213
|
+
var import_eslint_plugin_perfectionist = __toESM(require("eslint-plugin-perfectionist"), 1);
|
|
1214
|
+
var perfectionistEslintConfig = (options = {}, internalOptions = {}) => {
|
|
1215
|
+
const builder = new ConfigEntryBuilder(options, internalOptions);
|
|
1216
|
+
builder.addConfig(["perfectionist", { includeDefaultFilesAndIgnores: true }], {
|
|
1217
|
+
plugins: {
|
|
1218
|
+
perfectionist: import_eslint_plugin_perfectionist.default
|
|
1219
|
+
}
|
|
1220
|
+
}).addRule("perfectionist/sort-array-includes", OFF).addRule("perfectionist/sort-classes", OFF).addRule("perfectionist/sort-decorators", OFF).addRule("perfectionist/sort-enums", OFF).addRule("perfectionist/sort-exports", OFF).addRule("perfectionist/sort-heritage-clauses", OFF).addRule("perfectionist/sort-imports", OFF).addRule("perfectionist/sort-interfaces", OFF).addRule("perfectionist/sort-intersection-types", OFF).addRule("perfectionist/sort-jsx-props", OFF).addRule("perfectionist/sort-maps", OFF).addRule("perfectionist/sort-modules", OFF).addRule("perfectionist/sort-named-exports", OFF).addRule("perfectionist/sort-named-imports", OFF).addRule("perfectionist/sort-object-types", OFF).addRule("perfectionist/sort-objects", OFF).addRule("perfectionist/sort-sets", OFF).addRule("perfectionist/sort-switch-case", OFF).addRule("perfectionist/sort-union-types", OFF).addRule("perfectionist/sort-variable-declarations", OFF).addOverrides();
|
|
1221
|
+
return builder.getAllConfigs();
|
|
1222
|
+
};
|
|
1223
|
+
|
|
1152
1224
|
// src/configs/prefer-arrow-functions.ts
|
|
1153
1225
|
init_cjs_shims();
|
|
1154
1226
|
var import_eslint_plugin_prefer_arrow_functions = __toESM(require("eslint-plugin-prefer-arrow-functions"), 1);
|
|
@@ -1156,8 +1228,9 @@ var preferArrowFunctionsEslintConfig = (options = {}, internalOptions = {}) => {
|
|
|
1156
1228
|
const builder = new ConfigEntryBuilder(options, internalOptions);
|
|
1157
1229
|
builder.addConfig(["prefer-arrow-functions", { includeDefaultFilesAndIgnores: true }], {
|
|
1158
1230
|
plugins: {
|
|
1231
|
+
// @ts-expect-error `default` does not exist, but required because the export is wrong: https://arethetypeswrong.github.io/?p=eslint-plugin-prefer-arrow-functions%403.6.0
|
|
1159
1232
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
1160
|
-
"prefer-arrow-functions": import_eslint_plugin_prefer_arrow_functions.default
|
|
1233
|
+
"prefer-arrow-functions": import_eslint_plugin_prefer_arrow_functions.default.default
|
|
1161
1234
|
}
|
|
1162
1235
|
}).addRule("prefer-arrow-functions/prefer-arrow-functions", WARNING).addOverrides();
|
|
1163
1236
|
return builder.getAllConfigs();
|
|
@@ -1212,13 +1285,16 @@ var securityEslintConfig = (options = {}, internalOptions = {}) => {
|
|
|
1212
1285
|
init_cjs_shims();
|
|
1213
1286
|
var import_eslint_plugin_sonarjs = __toESM(require("eslint-plugin-sonarjs"), 1);
|
|
1214
1287
|
var sonarEslintConfig = (options = {}, internalOptions = {}) => {
|
|
1288
|
+
const { enableAwsRules = true, testsRules = true } = options;
|
|
1289
|
+
const awsRulesSeverity = enableAwsRules ? ERROR : OFF;
|
|
1290
|
+
const testsRulesSeverity = testsRules ? ERROR : OFF;
|
|
1215
1291
|
const builder = new ConfigEntryBuilder(options, internalOptions);
|
|
1216
|
-
builder.addConfig(
|
|
1292
|
+
builder.addConfig("sonar/setup", {
|
|
1217
1293
|
plugins: {
|
|
1218
|
-
// @ts-expect-error small types mismatch
|
|
1219
1294
|
sonarjs: import_eslint_plugin_sonarjs.default
|
|
1220
1295
|
}
|
|
1221
|
-
})
|
|
1296
|
+
});
|
|
1297
|
+
builder.addConfig(["sonar", { includeDefaultFilesAndIgnores: true }]).addBulkRules(import_eslint_plugin_sonarjs.default.configs.recommended.rules).addRule("sonarjs/argument-type", OFF).addRule("sonarjs/array-callback-without-return", OFF).addRule("sonarjs/assertions-in-tests", testsRulesSeverity).addRule("sonarjs/aws-apigateway-public-api", awsRulesSeverity).addRule("sonarjs/aws-ec2-rds-dms-public", awsRulesSeverity).addRule("sonarjs/aws-ec2-unencrypted-ebs-volume", awsRulesSeverity).addRule("sonarjs/aws-efs-unencrypted", awsRulesSeverity).addRule("sonarjs/aws-iam-all-privileges", awsRulesSeverity).addRule("sonarjs/aws-iam-all-resources-accessible", OFF).addRule("sonarjs/aws-iam-privilege-escalation", awsRulesSeverity).addRule("sonarjs/aws-iam-public-access", awsRulesSeverity).addRule("sonarjs/aws-opensearchservice-domain", awsRulesSeverity).addRule("sonarjs/aws-rds-unencrypted-databases", awsRulesSeverity).addRule("sonarjs/aws-restricted-ip-admin-access", awsRulesSeverity).addRule("sonarjs/aws-s3-bucket-granted-access", awsRulesSeverity).addRule("sonarjs/aws-s3-bucket-insecure-http", awsRulesSeverity).addRule("sonarjs/aws-s3-bucket-public-access", awsRulesSeverity).addRule("sonarjs/aws-s3-bucket-server-encryption", OFF).addRule("sonarjs/aws-s3-bucket-versioning", awsRulesSeverity).addRule("sonarjs/aws-sagemaker-unencrypted-notebook", awsRulesSeverity).addRule("sonarjs/aws-sns-unencrypted-topics", awsRulesSeverity).addRule("sonarjs/aws-sqs-unencrypted-queue", awsRulesSeverity).addRule("sonarjs/block-scoped-var", OFF).addRule("sonarjs/call-argument-line", OFF).addRule("sonarjs/chai-determinate-assertion", testsRulesSeverity).addRule("sonarjs/class-name", OFF).addRule("sonarjs/code-eval", OFF).addRule("sonarjs/cognitive-complexity", OFF).addRule("sonarjs/concise-regex", OFF).addRule("sonarjs/conditional-indentation", OFF).addRule("sonarjs/constructor-for-side-effects", OFF).addRule("sonarjs/deprecation", OFF).addRule("sonarjs/different-types-comparison", OFF).addRule("sonarjs/disabled-timeout", testsRulesSeverity).addRule("sonarjs/duplicates-in-character-class", OFF).addRule("sonarjs/empty-string-repetition", OFF).addRule("sonarjs/fixme-tag", OFF).addRule("sonarjs/function-inside-loop", OFF).addRule("sonarjs/function-return-type", OFF).addRule("sonarjs/generator-without-yield", OFF).addRule("sonarjs/in-operator-type-error", OFF).addRule("sonarjs/inverted-assertion-arguments", testsRulesSeverity).addRule("sonarjs/label-position", OFF).addRule("sonarjs/max-switch-cases", OFF).addRule("sonarjs/misplaced-loop-counter", WARNING).addRule("sonarjs/new-operator-misuse", OFF).addRule("sonarjs/no-alphabetical-sort", OFF).addRule("sonarjs/no-array-delete", OFF).addRule("sonarjs/no-associative-arrays", OFF).addRule("sonarjs/no-async-constructor", OFF).addRule("sonarjs/no-code-after-done", testsRulesSeverity).addRule("sonarjs/no-commented-code", OFF).addRule("sonarjs/no-control-regex", OFF).addRule("sonarjs/no-dead-store", OFF).addRule("sonarjs/no-duplicate-in-composite", OFF).addRule("sonarjs/no-empty-alternatives", OFF).addRule("sonarjs/no-empty-character-class", OFF).addRule("sonarjs/no-empty-group", OFF).addRule("sonarjs/no-empty-test-file", OFF).addRule("sonarjs/no-exclusive-tests", OFF).addRule("sonarjs/no-fallthrough", OFF).addRule("sonarjs/no-for-in-iterable", ERROR).addRule("sonarjs/no-hardcoded-ip", WARNING).addRule("sonarjs/no-identical-conditions", OFF).addRule("sonarjs/no-implicit-dependencies", OFF).addRule("sonarjs/no-incomplete-assertions", testsRulesSeverity).addRule("sonarjs/no-invalid-await", OFF).addRule("sonarjs/no-invalid-regexp", OFF).addRule("sonarjs/no-labels", OFF).addRule("sonarjs/no-misleading-character-class", OFF).addRule("sonarjs/no-nested-assignment", OFF).addRule("sonarjs/no-nested-conditional", OFF).addRule("sonarjs/no-nested-functions", OFF).addRule("sonarjs/no-nested-template-literals", OFF).addRule("sonarjs/no-one-iteration-loop", OFF).addRule("sonarjs/no-primitive-wrappers", OFF).addRule("sonarjs/no-regex-spaces", OFF).addRule("sonarjs/no-same-argument-assert", testsRulesSeverity).addRule("sonarjs/no-same-line-conditional", OFF).addRule("sonarjs/no-selector-parameter", OFF).addRule("sonarjs/no-skipped-tests", OFF).addRule("sonarjs/no-try-promise", OFF).addRule("sonarjs/no-unenclosed-multiline-block", OFF).addRule("sonarjs/no-unthrown-error", OFF).addRule("sonarjs/no-unused-vars", OFF).addRule("sonarjs/no-useless-catch", OFF).addRule("sonarjs/no-useless-intersection", OFF).addRule("sonarjs/no-vue-bypass-sanitization", OFF).addRule("sonarjs/null-dereference", OFF).addRule("sonarjs/prefer-default-last", OFF).addRule("sonarjs/prefer-object-literal", ERROR).addRule("sonarjs/prefer-read-only-props", OFF).addRule("sonarjs/prefer-regexp-exec", OFF).addRule("sonarjs/production-debug", ERROR).addRule("sonarjs/pseudo-random", OFF).addRule("sonarjs/redundant-type-aliases", OFF).addRule("sonarjs/regex-complexity", WARNING, [{ threshold: 40 }]).addRule("sonarjs/single-char-in-character-classes", OFF).addRule("sonarjs/single-character-alternation", OFF).addRule("sonarjs/slow-regex", OFF).addRule("sonarjs/stable-tests", testsRulesSeverity).addRule("sonarjs/strings-comparison", WARNING).addRule("sonarjs/super-invocation", OFF).addRule("sonarjs/table-header", WARNING).addRule("sonarjs/table-header-reference", WARNING).addRule("sonarjs/todo-tag", OFF).addRule("sonarjs/unused-import", OFF).addRule("sonarjs/unverified-hostname", ERROR).addRule("sonarjs/updated-const-var", OFF).addRule("sonarjs/updated-loop-counter", WARNING).addRule("sonarjs/use-type-alias", WARNING).addRule("sonarjs/void-use", OFF).addOverrides();
|
|
1222
1298
|
return builder.getAllConfigs();
|
|
1223
1299
|
};
|
|
1224
1300
|
|
|
@@ -1454,7 +1530,7 @@ var tsEslintConfig = (options = {}, internalOptions = {}) => {
|
|
|
1454
1530
|
}).addAnyRule("constructor-super", OFF).addAnyRule("getter-return", OFF).addAnyRule("no-const-assign", OFF).addAnyRule("no-dupe-args", OFF).addAnyRule("no-dupe-class-members", OFF).addAnyRule("no-dupe-keys", OFF).addAnyRule("no-func-assign", OFF).addAnyRule("no-new-native-nonconstructor", OFF).addAnyRule("no-obj-calls", OFF).addAnyRule("no-setter-return", OFF).addAnyRule("no-this-before-super", OFF).addAnyRule("no-undef", OFF).addAnyRule("no-unsafe-negation", OFF).addAnyRule("no-duplicate-imports", OFF);
|
|
1455
1531
|
builder.addConfig("ts/dts", {
|
|
1456
1532
|
files: ["**/*.d.?([cm])ts"]
|
|
1457
|
-
}).addRule("@typescript-eslint/consistent-indexed-object-style", OFF).addRule("@typescript-eslint/method-signature-style", OFF).addRule("@typescript-eslint/no-empty-object-type", OFF).addRule("@typescript-eslint/no-explicit-any", OFF).addRule("@typescript-eslint/no-shadow", OFF).addRule("@typescript-eslint/no-unnecessary-type-parameters", OFF).addRule("@typescript-eslint/no-unused-vars", OFF).addRule("@typescript-eslint/no-use-before-define", OFF).addAnyRule("import/newline-after-import", OFF).addAnyRule("import/no-default-export", OFF);
|
|
1533
|
+
}).addRule("@typescript-eslint/consistent-indexed-object-style", OFF).addRule("@typescript-eslint/method-signature-style", OFF).addRule("@typescript-eslint/no-empty-object-type", OFF).addRule("@typescript-eslint/no-explicit-any", OFF).addRule("@typescript-eslint/no-shadow", OFF).addRule("@typescript-eslint/no-unnecessary-type-parameters", OFF).addRule("@typescript-eslint/no-unused-vars", OFF).addRule("@typescript-eslint/no-use-before-define", OFF).addAnyRule("import/newline-after-import", OFF).addAnyRule("import/no-default-export", OFF).addAnyRule("vars-on-top", OFF).addAnyRule("no-var", OFF).addAnyRule("sonarjs/no-redundant-optional", OFF);
|
|
1458
1534
|
if (options.noTypeAssertion) {
|
|
1459
1535
|
builder.addConfig("ts/no-type-assertion", {
|
|
1460
1536
|
plugins: {
|
|
@@ -1620,7 +1696,8 @@ var vueEslintConfig = (options, internalOptions = {}) => {
|
|
|
1620
1696
|
const isLess2_6 = isVue2 && vueMajorAndMinorVersion < 2.6;
|
|
1621
1697
|
const isLess3_1 = vueMajorAndMinorVersion < 3.1;
|
|
1622
1698
|
const isNuxtEnabled = Boolean(options.nuxtMajorVersion);
|
|
1623
|
-
const
|
|
1699
|
+
const recommendedRulesRaw = import_eslint_plugin_vue.default.configs[isVue3 ? "flat/recommended" : "flat/vue2-recommended"].reduce((result, config) => Object.assign(result, config.rules), {});
|
|
1700
|
+
const recommendedRules = bulkChangeRuleSeverity(recommendedRulesRaw, ERROR);
|
|
1624
1701
|
const inNuxtAppDir = joinPaths.bind(null, options.nuxtOrVueProjectDir);
|
|
1625
1702
|
const nuxtLayoutsFilesGlob = inNuxtAppDir("layouts/**/*.vue");
|
|
1626
1703
|
const builder = new ConfigEntryBuilder(options, internalOptions);
|
|
@@ -1967,6 +2044,10 @@ var eslintConfig = (options = {}) => {
|
|
|
1967
2044
|
const vitestOptions = {
|
|
1968
2045
|
...assignOptions(configsOptions, "vitest")
|
|
1969
2046
|
};
|
|
2047
|
+
const isJsdocEnabled = Boolean(configsOptions.jsdoc ?? true);
|
|
2048
|
+
const jsdocOptions = {
|
|
2049
|
+
...assignOptions(configsOptions, "jsdoc")
|
|
2050
|
+
};
|
|
1970
2051
|
const isSecurityEnabled = Boolean(configsOptions.security ?? false);
|
|
1971
2052
|
const securityOptions = {
|
|
1972
2053
|
...assignOptions(configsOptions, "security")
|
|
@@ -1991,6 +2072,10 @@ var eslintConfig = (options = {}) => {
|
|
|
1991
2072
|
const packageJsonOptions = {
|
|
1992
2073
|
...assignOptions(configsOptions, "packageJson")
|
|
1993
2074
|
};
|
|
2075
|
+
const isPerfectionistEnabled = Boolean(configsOptions.perfectionist ?? false);
|
|
2076
|
+
const perfectionistOptions = {
|
|
2077
|
+
...assignOptions(configsOptions, "perfectionist")
|
|
2078
|
+
};
|
|
1994
2079
|
const internalOptions = {
|
|
1995
2080
|
globalOptions: options,
|
|
1996
2081
|
isTypescriptEnabled,
|
|
@@ -2041,12 +2126,14 @@ var eslintConfig = (options = {}) => {
|
|
|
2041
2126
|
isCssInJsEnabled && cssInJsEslintConfig(cssInJsOptions, internalOptions),
|
|
2042
2127
|
isJestEnabled && jestEslintConfig(jestOptions, internalOptions),
|
|
2043
2128
|
isVitestEnabled && vitestEslintConfig(vitestOptions, internalOptions),
|
|
2129
|
+
isJsdocEnabled && jsdocEslintConfig(jsdocOptions, internalOptions),
|
|
2044
2130
|
isSecurityEnabled && securityEslintConfig(securityOptions, internalOptions),
|
|
2045
2131
|
isPreferArrowFunctionsEnabled && preferArrowFunctionsEslintConfig(preferArrowFunctionsOptions, internalOptions),
|
|
2046
2132
|
isYamlEnabled && yamlEslintConfig(yamlOptions, internalOptions),
|
|
2047
2133
|
isTomlEnabled && tomlEslintConfig(tomlOptions, internalOptions),
|
|
2048
2134
|
isJsoncEnabled && jsoncEslintConfig(jsoncOptions, internalOptions),
|
|
2049
2135
|
isPackageJsonEnabled && packageJsonEslintConfig(packageJsonOptions, internalOptions),
|
|
2136
|
+
isPerfectionistEnabled && perfectionistEslintConfig(perfectionistOptions, internalOptions),
|
|
2050
2137
|
isTypescriptEnabled && tsEslintConfig(tsOptions, internalOptions),
|
|
2051
2138
|
// Must come after all rulesets for vanilla JS
|
|
2052
2139
|
isVueEnabled && vueEslintConfig(vueOptions, internalOptions),
|
|
@@ -2057,11 +2144,24 @@ var eslintConfig = (options = {}) => {
|
|
|
2057
2144
|
name: genFlatConfigEntryName("config-files"),
|
|
2058
2145
|
files: GLOB_CONFIG_FILES,
|
|
2059
2146
|
rules: {
|
|
2060
|
-
"import/no-default-export": OFF,
|
|
2061
2147
|
"import/no-extraneous-dependencies": OFF,
|
|
2062
2148
|
"n/no-unpublished-require": OFF
|
|
2063
2149
|
}
|
|
2064
2150
|
},
|
|
2151
|
+
{
|
|
2152
|
+
name: genFlatConfigEntryName("allow-default-export"),
|
|
2153
|
+
files: [
|
|
2154
|
+
...GLOB_CONFIG_FILES,
|
|
2155
|
+
// Files starting with a dot
|
|
2156
|
+
`**/.*.${GLOB_JS_TS_X_EXTENSION}`,
|
|
2157
|
+
// Storybook
|
|
2158
|
+
`**/*.stories.${GLOB_JS_TS_X_EXTENSION}`,
|
|
2159
|
+
".storybook/**/*"
|
|
2160
|
+
],
|
|
2161
|
+
rules: {
|
|
2162
|
+
"import/no-default-export": OFF
|
|
2163
|
+
}
|
|
2164
|
+
},
|
|
2065
2165
|
...options.extraConfigs || [],
|
|
2066
2166
|
// MUST be last
|
|
2067
2167
|
!options.disablePrettierIncompatibleRules && {
|