From 6cacdb9fa48b4144c23e52eae6441ea3e24ca9ff Mon Sep 17 00:00:00 2001 From: tianyingchun Date: Thu, 24 Oct 2024 17:01:02 +0800 Subject: [PATCH] fix: support `import type` for nestjs --- .changeset/tidy-ads-burn.md | 5 +++++ README.md | 2 +- src/main/base.ts | 4 ++-- src/main/{defaults.ts => overrides.ts} | 12 +++++++++++- tsconfig.base.json | 2 +- tsconfig.build.json | 1 + 6 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 .changeset/tidy-ads-burn.md rename src/main/{defaults.ts => overrides.ts} (56%) diff --git a/.changeset/tidy-ads-burn.md b/.changeset/tidy-ads-burn.md new file mode 100644 index 0000000..5cfa89a --- /dev/null +++ b/.changeset/tidy-ads-burn.md @@ -0,0 +1,5 @@ +--- +"@hyperse/eslint-config-hyperse": patch +--- + +support `import type` for nestjs diff --git a/README.md b/README.md index c3c56a1..950a5f2 100644 --- a/README.md +++ b/README.md @@ -200,4 +200,4 @@ we need to disable vscode editor language formatter for `json, jsonc` ``` 1. Isolated Modules - isolatedModules (default:`true`) -2. Verbatim Module Syntax - verbatimModuleSyntax (default:`false`) +2. Verbatim Module Syntax - verbatimModuleSyntax (default:`true`) diff --git a/src/main/base.ts b/src/main/base.ts index 418fa34..af08e1d 100644 --- a/src/main/base.ts +++ b/src/main/base.ts @@ -9,7 +9,7 @@ import { typescript, vitest, } from '../rules/index.js'; -import { defaults } from './defaults.js'; +import { overrides } from './overrides.js'; export const base = defineFlatConfig([ ...typescript, @@ -20,5 +20,5 @@ export const base = defineFlatConfig([ ...sonar, ...jsonc, ...mdx, - ...defaults, + ...overrides, ]); diff --git a/src/main/defaults.ts b/src/main/overrides.ts similarity index 56% rename from src/main/defaults.ts rename to src/main/overrides.ts index 975ff96..cb0fe1c 100644 --- a/src/main/defaults.ts +++ b/src/main/overrides.ts @@ -2,9 +2,19 @@ import type { FlatESLintConfig } from 'eslint-define-config'; import { defineFlatConfig } from 'eslint-define-config'; import tseslint from 'typescript-eslint'; -export const defaults = defineFlatConfig([ +export const overrides = defineFlatConfig([ { ...tseslint.configs.base, + languageOptions: { + // https://typescript-eslint.io/users/configs/#stylistic-type-checked + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + // https://github.com/typescript-eslint/typescript-eslint/issues/10200 + // Support `nestjs` decorator metadata, constructor DI class, we can not import type for `nestjs` + emitDecoratorMetadata: true, + }, + }, files: ['**/*.ts', '**/*.tsx'], rules: { '@typescript-eslint/no-unused-vars': [ diff --git a/tsconfig.base.json b/tsconfig.base.json index 01bc9ba..3a07e44 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -26,7 +26,7 @@ "incremental": true, "declaration": true, "isolatedModules": true, - "verbatimModuleSyntax": false, + "verbatimModuleSyntax": true, "newLine": "lf", "baseUrl": ".", "rootDir": ".", diff --git a/tsconfig.build.json b/tsconfig.build.json index c9519f9..6d1010f 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -4,6 +4,7 @@ "incremental": false, "declaration": true, "sourceMap": false, + "verbatimModuleSyntax": false, "outDir": "./dist", "rootDir": "./src", "baseUrl": "./"