From 21342fba05d7fc69c7ce8b4a5f661a2c65f2c056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Wed, 21 Jan 2026 18:34:49 +0400 Subject: [PATCH] Fix eslint-config package internal imports so other packages can use it for their eslint config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Émile Ré --- .../{eslint.config.js => eslint.config.mjs} | 8 ++++---- packages/eslint-config/package.json | 11 +++++++++++ packages/eslint-config/src/baseConfigs.ts | 5 +++-- packages/eslint-config/src/index.ts | 10 +++++----- packages/eslint-config/src/languageOptionsConfigs.ts | 5 +++-- packages/eslint-config/src/reactConfigs.ts | 2 +- packages/eslint-config/src/stylisticConfigs.ts | 2 +- packages/eslint-config/src/tsConfigs.ts | 2 +- packages/eslint-config/tsconfig.json | 3 ++- 9 files changed, 31 insertions(+), 17 deletions(-) rename packages/eslint-config/{eslint.config.js => eslint.config.mjs} (54%) diff --git a/packages/eslint-config/eslint.config.js b/packages/eslint-config/eslint.config.mjs similarity index 54% rename from packages/eslint-config/eslint.config.js rename to packages/eslint-config/eslint.config.mjs index 93359d83e..78d7ae91c 100644 --- a/packages/eslint-config/eslint.config.js +++ b/packages/eslint-config/eslint.config.mjs @@ -1,9 +1,9 @@ import { defineConfig } from "eslint/config"; -import { baseConfigs } from "./src/baseConfigs.ts"; -import { tsConfigs } from "./src/tsConfigs.ts"; -import { nodeLanguageOptionsConfig } from "./src/languageOptionsConfigs.ts"; -import { stylisticConfigs } from "./src/stylisticConfigs.ts"; +import { baseConfigs } from "#baseConfigs"; +import { tsConfigs } from "#tsConfigs"; +import { nodeLanguageOptionsConfig } from "#languageOptionsConfigs"; +import { stylisticConfigs } from "#stylisticConfigs"; export default defineConfig([ ...baseConfigs, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 6eed5e728..272e5bfec 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -5,6 +5,17 @@ "description": "Shared ESLint configuration for Probo monorepo", "main": "./src/index.ts", "type": "module", + "exports": { + ".": { + "default": "./src/index.ts" + } + }, + "imports": { + "#baseConfigs": "./src/baseConfigs.ts", + "#tsConfigs": "./src/tsConfigs.ts", + "#languageOptionsConfigs": "./src/languageOptionsConfigs.ts", + "#stylisticConfigs": "./src/stylisticConfigs.ts" + }, "scripts": { "lint": "eslint src" }, diff --git a/packages/eslint-config/src/baseConfigs.ts b/packages/eslint-config/src/baseConfigs.ts index d12437a08..03bf715a1 100644 --- a/packages/eslint-config/src/baseConfigs.ts +++ b/packages/eslint-config/src/baseConfigs.ts @@ -1,7 +1,8 @@ import js from "@eslint/js"; +import type { Linter } from "eslint"; export const baseConfigs = [ - { ignores: ["dist", "node_modules", "**/*.d.ts"] }, - { files: ["**/*.js", "**/*.ts", "**/*.tsx"] }, + { ignores: ["dist", "node_modules", "**/*.d.ts"] } satisfies Pick, + { files: ["**/*.js", "**/*.ts", "**/*.tsx"] } satisfies Pick, js.configs.recommended, ]; diff --git a/packages/eslint-config/src/index.ts b/packages/eslint-config/src/index.ts index f761ad272..1c50f40f9 100644 --- a/packages/eslint-config/src/index.ts +++ b/packages/eslint-config/src/index.ts @@ -1,8 +1,8 @@ -import { baseConfigs } from "./baseConfigs"; -import { browserLanguageOptionsConfig, nodeLanguageOptionsConfig } from "./languageOptionsConfigs"; -import { tsConfigs } from "./tsConfigs"; -import { reactConfigs } from "./reactConfigs"; -import { stylisticConfigs } from "./stylisticConfigs"; +import { baseConfigs } from "./baseConfigs.ts"; +import { browserLanguageOptionsConfig, nodeLanguageOptionsConfig } from "./languageOptionsConfigs.ts"; +import { tsConfigs } from "./tsConfigs.ts"; +import { reactConfigs } from "./reactConfigs.ts"; +import { stylisticConfigs } from "./stylisticConfigs.ts"; export const configs = { base: baseConfigs, diff --git a/packages/eslint-config/src/languageOptionsConfigs.ts b/packages/eslint-config/src/languageOptionsConfigs.ts index a65546403..c2834757d 100644 --- a/packages/eslint-config/src/languageOptionsConfigs.ts +++ b/packages/eslint-config/src/languageOptionsConfigs.ts @@ -1,3 +1,4 @@ +import type { Linter } from "eslint"; import * as globals from "globals"; export const browserLanguageOptionsConfig = { @@ -16,7 +17,7 @@ export const browserLanguageOptionsConfig = { }, }, }, -}; +} satisfies Pick; export const nodeLanguageOptionsConfig = { languageOptions: { @@ -34,4 +35,4 @@ export const nodeLanguageOptionsConfig = { }, }, }, -}; +} satisfies Pick; diff --git a/packages/eslint-config/src/reactConfigs.ts b/packages/eslint-config/src/reactConfigs.ts index 903cec617..fcb10cfff 100644 --- a/packages/eslint-config/src/reactConfigs.ts +++ b/packages/eslint-config/src/reactConfigs.ts @@ -1,4 +1,4 @@ -import * as react from "eslint-plugin-react"; +import react from "eslint-plugin-react"; import * as reactHooks from "eslint-plugin-react-hooks"; export const reactConfigs = [ diff --git a/packages/eslint-config/src/stylisticConfigs.ts b/packages/eslint-config/src/stylisticConfigs.ts index 0c2918974..a48027fad 100644 --- a/packages/eslint-config/src/stylisticConfigs.ts +++ b/packages/eslint-config/src/stylisticConfigs.ts @@ -1,5 +1,5 @@ import stylistic from "@stylistic/eslint-plugin"; -import { type Linter } from "eslint"; +import type { Linter } from "eslint"; export const stylisticConfigs = [ stylistic.configs.customize({ diff --git a/packages/eslint-config/src/tsConfigs.ts b/packages/eslint-config/src/tsConfigs.ts index 9688eeafd..a3549ab9f 100644 --- a/packages/eslint-config/src/tsConfigs.ts +++ b/packages/eslint-config/src/tsConfigs.ts @@ -1,4 +1,4 @@ -import { type Linter } from "eslint"; +import type { Linter } from "eslint"; import tseslint from "typescript-eslint"; export const tsConfigs = [ diff --git a/packages/eslint-config/tsconfig.json b/packages/eslint-config/tsconfig.json index bab18e3d3..9759caff4 100644 --- a/packages/eslint-config/tsconfig.json +++ b/packages/eslint-config/tsconfig.json @@ -5,6 +5,7 @@ "skipLibCheck": true, "module": "NodeNext", "moduleResolution": "NodeNext", + "allowImportingTsExtensions": true, "moduleDetection": "force", "verbatimModuleSyntax": true, "noEmit": true, @@ -15,5 +16,5 @@ "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true }, - "include": ["src/**/*.ts", "eslint.config.js"] + "include": ["src/**/*.ts", "eslint.config.mjs"] }