stage import rule from eslint-plugin-import-x

This commit is contained in:
FoxxMD
2026-07-15 19:08:48 +00:00
parent 76ef994067
commit a7b3593314
4 changed files with 63 additions and 5 deletions
+12 -4
View File
@@ -2,6 +2,7 @@
import storybook from "eslint-plugin-storybook";
import boundaries from 'eslint-plugin-boundaries';
import unusedImports from 'eslint-plugin-unused-imports';
import { importX } from 'eslint-plugin-import-x'
import { defineConfig, globalIgnores } from "eslint/config";
@@ -73,6 +74,7 @@ export default defineConfig([
js,
'unused-imports': unusedImports,
unicorn,
'import-x': importX,
},
rules: {
...defaultRules,
@@ -103,9 +105,13 @@ export default defineConfig([
// https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/consistent-type-specifier-style.md
// -- this enforces that type-only imports are fixed to top-level type imports IE
// import {type Foo, type Bar} from 'a'; => import type { Foo, Bar} from 'a';
// "import/consistent-type-specifier-style": [
// "error", "prefer-top-level-if-only-type-imports"
// ]
//
// USE eslint-plugin-import-x since its more actively developed?
// waiting on the status of this for supporting mixed inline types
// https://github.com/un-ts/eslint-plugin-import-x/issues/501
// "import-x/consistent-type-specifier-style": [
// "error", "prefer-top-level"
// ],
"unicorn/prefer-then-catch": "error",
"unicorn/consistent-destructuring": "warn",
"unicorn/consistent-function-scoping": "warn",
@@ -134,7 +140,9 @@ export default defineConfig([
languageOptions: {
globals: {
...globals.node,
}
},
ecmaVersion: 'latest',
sourceType: 'module',
},
files: ['src/**/*.ts','src/**/*.tsx']
},
+48
View File
@@ -171,6 +171,7 @@
"eslint": "^10.6.0",
"eslint-import-resolver-typescript": "^4.4.5",
"eslint-plugin-boundaries": "^7.0.2",
"eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-mocha": "^11.3.0",
"eslint-plugin-prefer-arrow-functions": "^3.2.4",
"eslint-plugin-react-hooks": "^7.1.1",
@@ -8895,6 +8896,16 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"license": "MIT"
},
"node_modules/comment-parser": {
"version": "1.4.7",
"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.7.tgz",
"integrity": "sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 12.0.0"
}
},
"node_modules/common-tags": {
"version": "1.8.2",
"resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
@@ -10586,6 +10597,43 @@
"eslint": ">=6.0.0"
}
},
"node_modules/eslint-plugin-import-x": {
"version": "4.17.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.17.1.tgz",
"integrity": "sha512-4cdstYkKCyjumM2Q9NSI03K8D2a9F4Ssz33K2lv2hQa4KmR9jPLwk3uWGtNvclfqBrPGfGuMBwsGMbe6dMRbfg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@typescript-eslint/types": "^8.56.0",
"comment-parser": "^1.4.1",
"debug": "^4.4.1",
"eslint-import-context": "^0.1.9",
"is-glob": "^4.0.3",
"minimatch": "^9.0.3 || ^10.1.2",
"semver": "^7.7.2",
"stable-hash-x": "^0.2.0",
"unrs-resolver": "^1.9.2"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://opencollective.com/eslint-plugin-import-x"
},
"peerDependencies": {
"@typescript-eslint/utils": "^8.56.0",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"eslint-import-resolver-node": "*"
},
"peerDependenciesMeta": {
"@typescript-eslint/utils": {
"optional": true
},
"eslint-import-resolver-node": {
"optional": true
}
}
},
"node_modules/eslint-plugin-mocha": {
"version": "11.3.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-11.3.0.tgz",
+1
View File
@@ -211,6 +211,7 @@
"eslint": "^10.6.0",
"eslint-import-resolver-typescript": "^4.4.5",
"eslint-plugin-boundaries": "^7.0.2",
"eslint-plugin-import-x": "^4.17.1",
"eslint-plugin-mocha": "^11.3.0",
"eslint-plugin-prefer-arrow-functions": "^3.2.4",
"eslint-plugin-react-hooks": "^7.1.1",
+2 -1
View File
@@ -3,7 +3,8 @@ import type { Dayjs, ManipulateType } from "dayjs";
import type { Request, Response } from "express";
import type { NextFunction, ParamsDictionary, Query } from "express-serve-static-core";
import type { FixedSizeList } from 'fixed-size-list';
import { type DeviceId, type ErrorLike, isPlayObject, type PlayMeta, type PlayObject, type PlayObjectMinimal, type PlayPlatformId, type PlayUserId, type UnixTimestamp } from "../../../core/Atomic.ts";
import { isPlayObject } from "../../../core/Atomic.ts";
import type {DeviceId, ErrorLike, PlayMeta, PlayObject, PlayObjectMinimal, PlayPlatformId, PlayUserId, UnixTimestamp} from "../../../core/Atomic.ts";
import type TupleMap from "../TupleMap.ts";
import type { MusicBrainzApi } from 'musicbrainz-api';
import type { ReportedPlayerStatus, SourceType } from "../../../core/Atomic.ts";