@isentinel/eslint-config 5.0.0-beta.8 → 5.0.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.
Files changed (3) hide show
  1. package/dist/index.d.mts +454 -170
  2. package/dist/index.mjs +96 -10
  3. package/package.json +11 -20
package/dist/index.mjs CHANGED
@@ -489,7 +489,8 @@ async function disables(options) {
489
489
  files: ["**/bin/**/*", `**/bin.${GLOB_SRC_EXT}`],
490
490
  rules: {
491
491
  "antfu/no-import-dist": "off",
492
- "antfu/no-import-node-modules-by-path": "off"
492
+ "antfu/no-import-node-modules-by-path": "off",
493
+ "antfu/no-top-level-await": "off"
493
494
  }
494
495
  },
495
496
  {
@@ -519,6 +520,7 @@ async function disables(options) {
519
520
  "sonar/no-duplicate-string": "off",
520
521
  "ts/explicit-function-return-type": "off",
521
522
  "ts/no-empty-function": "off",
523
+ "ts/no-extraneous-class": "off",
522
524
  "ts/no-non-null-assertion": "off",
523
525
  "ts/unbound-method": "off",
524
526
  "unicorn/consistent-function-scoping": "off"
@@ -1583,14 +1585,65 @@ async function packageJson(options = {}) {
1583
1585
  "package-json/no-redundant-files": "error",
1584
1586
  "package-json/no-redundant-publishConfig": "error",
1585
1587
  "package-json/repository-shorthand": "error",
1588
+ "package-json/require-packageManager": "error",
1586
1589
  "package-json/require-type": "error",
1587
1590
  "package-json/restrict-private-properties": "error",
1588
- "package-json/scripts-name-casing": "error",
1589
- "package-json/sort-collections": "error",
1591
+ "package-json/restrict-top-level-properties": ["error", { ban: [
1592
+ {
1593
+ message: "Configure pnpm options in pnpm-workspace.yaml.",
1594
+ property: "pnpm"
1595
+ },
1596
+ {
1597
+ message: "Configure prettier options in eslint config",
1598
+ property: "prettier"
1599
+ },
1600
+ {
1601
+ message: "Configure commitlint in a dedicated config file.",
1602
+ property: "commitlint"
1603
+ },
1604
+ {
1605
+ message: "Configure ESLint in a dedicated config file.",
1606
+ property: "eslintConfig"
1607
+ },
1608
+ {
1609
+ message: "Configure Jest in a dedicated config file.",
1610
+ property: "jest"
1611
+ },
1612
+ {
1613
+ message: "Configure lint-staged in a dedicated config file.",
1614
+ property: "lint-staged"
1615
+ },
1616
+ {
1617
+ message: "Configure Renovate in a renovate config file.",
1618
+ property: "renovate"
1619
+ },
1620
+ {
1621
+ message: "Configure nx in the nx.json file.",
1622
+ property: "nx"
1623
+ },
1624
+ {
1625
+ message: "Configure simple-git-hooks in simple-git-hooks config file.",
1626
+ property: "simple-git-hooks"
1627
+ },
1628
+ {
1629
+ message: "Configure release-it in a dedicated config file.",
1630
+ property: "release-it"
1631
+ },
1632
+ {
1633
+ message: "Configure Stylelint in a dedicated config file.",
1634
+ property: "stylelint"
1635
+ },
1636
+ {
1637
+ message: "Configure TypeDoc in a dedicated config file.",
1638
+ property: "typedoc"
1639
+ }
1640
+ ] }],
1590
1641
  "package-json/specify-peers-locally": "error",
1591
1642
  "package-json/unique-dependencies": "error",
1592
1643
  "package-json/valid-author": "off",
1593
1644
  "package-json/valid-bin": "error",
1645
+ "package-json/valid-browser": "error",
1646
+ "package-json/valid-bugs": "error",
1594
1647
  "package-json/valid-bundleDependencies": "error",
1595
1648
  "package-json/valid-config": "error",
1596
1649
  "package-json/valid-contributors": "error",
@@ -1598,12 +1651,16 @@ async function packageJson(options = {}) {
1598
1651
  "package-json/valid-dependencies": "error",
1599
1652
  "package-json/valid-description": "error",
1600
1653
  "package-json/valid-devDependencies": "error",
1654
+ "package-json/valid-devEngines": "error",
1601
1655
  "package-json/valid-directories": "error",
1602
1656
  "package-json/valid-engines": "error",
1603
1657
  "package-json/valid-exports": "error",
1604
1658
  "package-json/valid-files": "error",
1659
+ "package-json/valid-funding": "error",
1660
+ "package-json/valid-gypfile": "error",
1605
1661
  "package-json/valid-homepage": "error",
1606
1662
  "package-json/valid-keywords": "error",
1663
+ "package-json/valid-libc": "error",
1607
1664
  "package-json/valid-license": "error",
1608
1665
  "package-json/valid-main": "error",
1609
1666
  "package-json/valid-man": "error",
@@ -1611,7 +1668,10 @@ async function packageJson(options = {}) {
1611
1668
  "package-json/valid-name": "error",
1612
1669
  "package-json/valid-optionalDependencies": "error",
1613
1670
  "package-json/valid-os": "error",
1671
+ "package-json/valid-packageManager": "error",
1614
1672
  "package-json/valid-peerDependencies": "error",
1673
+ "package-json/valid-peerDependenciesMeta": "error",
1674
+ "package-json/valid-peerDependenciesMeta-relationship": "error",
1615
1675
  "package-json/valid-private": "error",
1616
1676
  "package-json/valid-publishConfig": "error",
1617
1677
  "package-json/valid-repository": "error",
@@ -1624,7 +1684,9 @@ async function packageJson(options = {}) {
1624
1684
  ...stylistic !== false ? {
1625
1685
  "package-json/bin-name-casing": "error",
1626
1686
  "package-json/exports-subpaths-style": ["error", { prefer: "explicit" }],
1627
- "package-json/order-properties": "error"
1687
+ "package-json/order-properties": "error",
1688
+ "package-json/scripts-name-casing": "error",
1689
+ "package-json/sort-collections": "error"
1628
1690
  } : {},
1629
1691
  ...type === "package" ? {
1630
1692
  "package-json/require-attribution": ["error", { ignorePrivate: true }],
@@ -1633,7 +1695,7 @@ async function packageJson(options = {}) {
1633
1695
  "package-json/require-exports": ["error", { ignorePrivate: true }],
1634
1696
  "package-json/require-files": ["error", { ignorePrivate: true }],
1635
1697
  "package-json/require-homepage": ["error", { ignorePrivate: true }],
1636
- "package-json/require-keywords": "error",
1698
+ "package-json/require-keywords": ["error", { ignorePrivate: true }],
1637
1699
  "package-json/require-license": ["error", { ignorePrivate: true }],
1638
1700
  "package-json/require-name": "error",
1639
1701
  "package-json/require-repository": ["error", { ignorePrivate: true }],
@@ -1641,7 +1703,9 @@ async function packageJson(options = {}) {
1641
1703
  "package-json/require-version": "error"
1642
1704
  } : {},
1643
1705
  ...type === "package" && !roblox ? {
1706
+ "package-json/require-bin": ["error", { ignorePrivate: true }],
1644
1707
  "package-json/require-engines": "error",
1708
+ "package-json/require-module": "error",
1645
1709
  "package-json/require-sideEffects": ["error", { ignorePrivate: true }]
1646
1710
  } : {}
1647
1711
  }
@@ -2013,7 +2077,8 @@ async function oxfmt(options) {
2013
2077
  rules: { "oxfmt/oxfmt": ["error", {
2014
2078
  ...oxfmtOptions,
2015
2079
  printWidth: Number(prettierOptions["jsdocPrintWidth"]) || 80,
2016
- proseWrap: "always"
2080
+ proseWrap: "always",
2081
+ tabWidth: 2
2017
2082
  }] }
2018
2083
  });
2019
2084
  if (formattingOptions.graphql) configs.push({
@@ -3366,7 +3431,7 @@ async function test(options = {}) {
3366
3431
  }
3367
3432
  }, {
3368
3433
  name: "isentinel/test/jest/rules",
3369
- files,
3434
+ files: jestOptions.files ?? files,
3370
3435
  rules: {
3371
3436
  "test/consistent-test-it": "error",
3372
3437
  "test/expect-expect": "warn",
@@ -3439,13 +3504,23 @@ async function test(options = {}) {
3439
3504
  if (enableVitest) {
3440
3505
  await ensurePackages(["@vitest/eslint-plugin"]);
3441
3506
  const vitestPlugin = await interopDefault(import("@vitest/eslint-plugin"));
3507
+ const useJestExtended = vitestOptions.extended === true;
3508
+ const jestExtendedPlugin = await (async () => {
3509
+ if (!useJestExtended) return;
3510
+ await ensurePackages(["eslint-plugin-jest-extended"]);
3511
+ return interopDefault(import("eslint-plugin-jest-extended"));
3512
+ })();
3442
3513
  pluginVitest ??= { ...vitestPlugin };
3514
+ pluginJestExtended ??= { ...jestExtendedPlugin };
3443
3515
  configs.push({
3444
3516
  name: "isentinel/test/vitest/setup",
3445
- plugins: { vitest: pluginVitest }
3517
+ plugins: {
3518
+ vitest: pluginVitest,
3519
+ ...useJestExtended ? { "jest-extended": pluginJestExtended } : {}
3520
+ }
3446
3521
  }, {
3447
3522
  name: "isentinel/test/vitest/rules",
3448
- files,
3523
+ files: vitestOptions.files ?? files,
3449
3524
  rules: {
3450
3525
  "vitest/consistent-each-for": ["error", {
3451
3526
  describe: "for",
@@ -3521,10 +3596,20 @@ async function test(options = {}) {
3521
3596
  ignoreTypeOfDescribeName: true,
3522
3597
  mustMatch: { it: ["^should", "Test title must start with \"should\""] }
3523
3598
  }],
3599
+ ...useJestExtended ? {
3600
+ "jest-extended/prefer-to-be-array": "error",
3601
+ "jest-extended/prefer-to-be-false": "error",
3602
+ "jest-extended/prefer-to-be-object": "error",
3603
+ "jest-extended/prefer-to-be-true": "error",
3604
+ "jest-extended/prefer-to-have-been-called-once": "error"
3605
+ } : {},
3524
3606
  ...stylistic !== false ? { "vitest/padding-around-all": "warn" } : {},
3525
3607
  ...overrides
3526
3608
  },
3527
- settings: { vitest: { typecheck: vitestOptions.typecheck ?? false } }
3609
+ settings: {
3610
+ ...useJestExtended ? { jest: { globalPackage: "vitest" } } : {},
3611
+ vitest: { typecheck: vitestOptions.typecheck ?? false }
3612
+ }
3528
3613
  });
3529
3614
  }
3530
3615
  return configs;
@@ -3597,6 +3682,7 @@ async function typescript(options = {}) {
3597
3682
  }],
3598
3683
  "ts/dot-notation": ["error", { allowKeywords: true }],
3599
3684
  "ts/no-confusing-void-expression": "error",
3685
+ "ts/no-deprecated": "error",
3600
3686
  "ts/no-duplicate-type-constituents": "error",
3601
3687
  "ts/no-empty-object-type": "error",
3602
3688
  "ts/no-floating-promises": ["error", { ignoreVoid: true }],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isentinel/eslint-config",
3
- "version": "5.0.0-beta.8",
3
+ "version": "5.0.0",
4
4
  "description": "iSentinel's ESLint config",
5
5
  "keywords": [
6
6
  "eslint-config",
@@ -40,15 +40,6 @@
40
40
  "bin",
41
41
  "dist"
42
42
  ],
43
- "simple-git-hooks": {
44
- "pre-commit": "pnpm install --frozen-lockfile && pnpm lint-staged"
45
- },
46
- "lint-staged": {
47
- "*": "pnpm exec eslint --fix --cache --no-warn-ignored",
48
- "*.ts": [
49
- "sh -c 'tsc --noEmit'"
50
- ]
51
- },
52
43
  "dependencies": {
53
44
  "@antfu/install-pkg": "1.1.0",
54
45
  "@clack/prompts": "1.0.1",
@@ -56,13 +47,13 @@
56
47
  "@eslint-community/eslint-plugin-eslint-comments": "4.6.0",
57
48
  "@eslint/compat": "2.0.2",
58
49
  "@eslint/markdown": "7.5.1",
59
- "@isentinel/dict-rbxts": "1.0.1",
60
- "@isentinel/dict-roblox": "1.0.3",
50
+ "@isentinel/dict-rbxts": "1.0.10",
51
+ "@isentinel/dict-roblox": "1.0.4",
61
52
  "@isentinel/eslint-plugin-comment-length": "2.2.0",
62
53
  "@pobammer-ts/eslint-cease-nonsense-rules": "1.30.0",
63
54
  "@stylistic/eslint-plugin": "5.9.0",
64
- "@typescript-eslint/eslint-plugin": "8.56.1",
65
- "@typescript-eslint/parser": "8.56.1",
55
+ "@typescript-eslint/eslint-plugin": "8.59.4",
56
+ "@typescript-eslint/parser": "8.59.4",
66
57
  "ansis": "4.2.0",
67
58
  "eslint-config-flat-gitignore": "2.2.1",
68
59
  "eslint-config-prettier": "10.1.8",
@@ -77,8 +68,8 @@
77
68
  "eslint-plugin-import-lite": "0.5.2",
78
69
  "eslint-plugin-jsdoc": "62.7.1",
79
70
  "eslint-plugin-jsonc": "3.0.0",
80
- "eslint-plugin-oxfmt": "0.1.0",
81
- "eslint-plugin-package-json": "0.89.1",
71
+ "eslint-plugin-oxfmt": "0.8.0",
72
+ "eslint-plugin-package-json": "1.1.0",
82
73
  "eslint-plugin-perfectionist": "5.6.0",
83
74
  "eslint-plugin-pnpm": "1.5.0",
84
75
  "eslint-plugin-promise": "7.2.1",
@@ -93,7 +84,7 @@
93
84
  "globals": "17.3.0",
94
85
  "jsonc-eslint-parser": "3.1.0",
95
86
  "local-pkg": "1.1.2",
96
- "oxfmt": "0.35.0",
87
+ "oxfmt": "0.51.0",
97
88
  "prettier": "3.8.1",
98
89
  "toml-eslint-parser": "1.0.3",
99
90
  "yaml-eslint-parser": "2.0.0",
@@ -107,12 +98,12 @@
107
98
  "@stylistic/eslint-plugin-migrate": "4.4.1",
108
99
  "@types/node": "22.16.0",
109
100
  "@types/yargs": "17.0.35",
110
- "@vitest/eslint-plugin": "1.6.9",
101
+ "@vitest/eslint-plugin": "1.6.18",
111
102
  "bumpp": "10.4.1",
112
103
  "eslint": "9.39.2",
113
104
  "eslint-plugin-erasable-syntax-only": "0.4.0",
114
105
  "eslint-plugin-eslint-plugin": "7.3.1",
115
- "eslint-plugin-jest": "29.15.0",
106
+ "eslint-plugin-jest": "29.15.2",
116
107
  "eslint-plugin-jest-extended": "3.0.1",
117
108
  "eslint-plugin-n": "17.24.0",
118
109
  "eslint-plugin-react-hooks": "7.0.1",
@@ -131,7 +122,7 @@
131
122
  "type-fest": "5.4.4",
132
123
  "typescript": "5.9.3",
133
124
  "unplugin-unused": "0.5.7",
134
- "@isentinel/eslint-config": "5.0.0-beta.8"
125
+ "@isentinel/eslint-config": "5.0.0"
135
126
  },
136
127
  "peerDependencies": {
137
128
  "@vitest/eslint-plugin": "^1.6.4",