eslint-config-un 0.3.1 → 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 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)
@@ -38,6 +38,7 @@ Includes the rules from the following configs & plugins:
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
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)
41
42
 
42
43
  ## Features
43
44
 
@@ -73,6 +74,7 @@ export default eslintConfig({
73
74
  - `yaml`
74
75
  - `toml`
75
76
  - `package-json`
77
+ - `perfectionist`
76
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.
77
79
 
78
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.2_yaml@2.4.5/node_modules/tsup/assets/cjs_shims.js
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.2_yaml@2.4.5/node_modules/tsup/assets/cjs_shims.js"() {
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.17.0/node_modules/@eslint/js/package.json
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.17.0/node_modules/@eslint/js/package.json"(exports2, module2) {
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.17.0",
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.17.0/node_modules/@eslint/js/src/configs/eslint-all.js
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.17.0/node_modules/@eslint/js/src/configs/eslint-all.js"(exports2, module2) {
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.17.0/node_modules/@eslint/js/src/configs/eslint-recommended.js
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.17.0/node_modules/@eslint/js/src/configs/eslint-recommended.js"(exports2, module2) {
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.17.0/node_modules/@eslint/js/src/index.js
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.17.0/node_modules/@eslint/js/src/index.js"(exports2, module2) {
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: "@eslint/js",
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 src_exports = {};
387
- __export(src_exports, {
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(src_exports);
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);
@@ -496,14 +496,15 @@ var ConfigEntryBuilder = class {
496
496
  const errorsInsteadOfWarnings = this.internalOptions.globalOptions?.errorsInsteadOfWarnings;
497
497
  const severityFinal = configOptions.forceSeverity ?? (severity === WARNING && (errorsInsteadOfWarnings === true || Array.isArray(errorsInsteadOfWarnings) && errorsInsteadOfWarnings.includes(ruleName)) ? ERROR : severity);
498
498
  const ruleNameFinal = `${options?.disableAutofix ? "disable-autofix/" : ""}${ruleName}`;
499
- (configFinal.rules ||= {})[ruleNameFinal] = [severityFinal, ...ruleOptions || []];
499
+ configFinal.rules ||= {};
500
+ configFinal.rules[ruleNameFinal] = [severityFinal, ...ruleOptions || []];
500
501
  if (options?.disableAutofix) {
501
- (configFinal.rules ||= {})[ruleName] = 0;
502
+ configFinal.rules[ruleName] = 0;
502
503
  }
503
504
  if (options?.overrideBaseRule) {
504
505
  const baseRuleName = typeof options.overrideBaseRule === "string" ? options.overrideBaseRule : ruleName.split("/").slice(1).join("/");
505
506
  if (baseRuleName) {
506
- (configFinal.rules ||= {})[baseRuleName] = 0;
507
+ configFinal.rules[baseRuleName] = 0;
507
508
  }
508
509
  }
509
510
  return result;
@@ -514,11 +515,13 @@ var ConfigEntryBuilder = class {
514
515
  addRule: generateAddRuleFn(),
515
516
  addAnyRule: generateAddRuleFn(),
516
517
  addOverrides: () => {
517
- Object.assign(configFinal.rules ||= {}, this.options.overrides);
518
+ configFinal.rules ||= {};
519
+ Object.assign(configFinal.rules, this.options.overrides);
518
520
  return result;
519
521
  },
520
522
  addBulkRules: (rules) => {
521
- Object.assign(configFinal.rules ||= {}, rules);
523
+ configFinal.rules ||= {};
524
+ Object.assign(configFinal.rules, rules);
522
525
  return result;
523
526
  }
524
527
  };
@@ -1205,6 +1208,19 @@ var packageJsonEslintConfig = (options = {}, internalOptions = {}) => {
1205
1208
  return builder.getAllConfigs();
1206
1209
  };
1207
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
+
1208
1224
  // src/configs/prefer-arrow-functions.ts
1209
1225
  init_cjs_shims();
1210
1226
  var import_eslint_plugin_prefer_arrow_functions = __toESM(require("eslint-plugin-prefer-arrow-functions"), 1);
@@ -1212,8 +1228,9 @@ var preferArrowFunctionsEslintConfig = (options = {}, internalOptions = {}) => {
1212
1228
  const builder = new ConfigEntryBuilder(options, internalOptions);
1213
1229
  builder.addConfig(["prefer-arrow-functions", { includeDefaultFilesAndIgnores: true }], {
1214
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
1215
1232
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
1216
- "prefer-arrow-functions": import_eslint_plugin_prefer_arrow_functions.default
1233
+ "prefer-arrow-functions": import_eslint_plugin_prefer_arrow_functions.default.default
1217
1234
  }
1218
1235
  }).addRule("prefer-arrow-functions/prefer-arrow-functions", WARNING).addOverrides();
1219
1236
  return builder.getAllConfigs();
@@ -1268,13 +1285,16 @@ var securityEslintConfig = (options = {}, internalOptions = {}) => {
1268
1285
  init_cjs_shims();
1269
1286
  var import_eslint_plugin_sonarjs = __toESM(require("eslint-plugin-sonarjs"), 1);
1270
1287
  var sonarEslintConfig = (options = {}, internalOptions = {}) => {
1288
+ const { enableAwsRules = true, testsRules = true } = options;
1289
+ const awsRulesSeverity = enableAwsRules ? ERROR : OFF;
1290
+ const testsRulesSeverity = testsRules ? ERROR : OFF;
1271
1291
  const builder = new ConfigEntryBuilder(options, internalOptions);
1272
- builder.addConfig(["sonar", { includeDefaultFilesAndIgnores: true }], {
1292
+ builder.addConfig("sonar/setup", {
1273
1293
  plugins: {
1274
- // @ts-expect-error small types mismatch
1275
1294
  sonarjs: import_eslint_plugin_sonarjs.default
1276
1295
  }
1277
- }).addBulkRules(import_eslint_plugin_sonarjs.default.configs.recommended.rules).addRule("sonarjs/no-duplicate-string", OFF).addRule("sonarjs/no-nested-switch", OFF).addRule("sonarjs/no-nested-template-literals", OFF).addRule("sonarjs/no-unused-collection", OFF).addRule("sonarjs/prefer-immediate-return", OFF).addOverrides();
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();
1278
1298
  return builder.getAllConfigs();
1279
1299
  };
1280
1300
 
@@ -1510,7 +1530,7 @@ var tsEslintConfig = (options = {}, internalOptions = {}) => {
1510
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);
1511
1531
  builder.addConfig("ts/dts", {
1512
1532
  files: ["**/*.d.?([cm])ts"]
1513
- }).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);
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);
1514
1534
  if (options.noTypeAssertion) {
1515
1535
  builder.addConfig("ts/no-type-assertion", {
1516
1536
  plugins: {
@@ -2052,6 +2072,10 @@ var eslintConfig = (options = {}) => {
2052
2072
  const packageJsonOptions = {
2053
2073
  ...assignOptions(configsOptions, "packageJson")
2054
2074
  };
2075
+ const isPerfectionistEnabled = Boolean(configsOptions.perfectionist ?? false);
2076
+ const perfectionistOptions = {
2077
+ ...assignOptions(configsOptions, "perfectionist")
2078
+ };
2055
2079
  const internalOptions = {
2056
2080
  globalOptions: options,
2057
2081
  isTypescriptEnabled,
@@ -2109,6 +2133,7 @@ var eslintConfig = (options = {}) => {
2109
2133
  isTomlEnabled && tomlEslintConfig(tomlOptions, internalOptions),
2110
2134
  isJsoncEnabled && jsoncEslintConfig(jsoncOptions, internalOptions),
2111
2135
  isPackageJsonEnabled && packageJsonEslintConfig(packageJsonOptions, internalOptions),
2136
+ isPerfectionistEnabled && perfectionistEslintConfig(perfectionistOptions, internalOptions),
2112
2137
  isTypescriptEnabled && tsEslintConfig(tsOptions, internalOptions),
2113
2138
  // Must come after all rulesets for vanilla JS
2114
2139
  isVueEnabled && vueEslintConfig(vueOptions, internalOptions),