@xylabs/eslint-config-react-flat 7.9.7 → 7.9.8
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/dist/neutral/index.mjs +2 -1
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/react/index.d.ts.map +1 -1
- package/dist/neutral/reactImport/index.d.ts.map +1 -1
- package/dist/node/index.mjs +2 -1
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/react/index.d.ts.map +1 -1
- package/dist/node/reactImport/index.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/neutral/index.mjs
CHANGED
|
@@ -45,7 +45,6 @@ function createReactOverride(typeChecked = false) {
|
|
|
45
45
|
globals: { ...globals.browser }
|
|
46
46
|
},
|
|
47
47
|
plugins: {
|
|
48
|
-
"react-x": reactPlugin,
|
|
49
48
|
"react-dom": reactDomPlugin,
|
|
50
49
|
"react-web-api": reactWebApiPlugin,
|
|
51
50
|
"react-refresh": eslintReactRefreshPlugin,
|
|
@@ -74,8 +73,10 @@ var reactConfig = reactRecommendedTypeCheckedConfig;
|
|
|
74
73
|
|
|
75
74
|
// src/reactImport/index.ts
|
|
76
75
|
import { importConfig } from "@xylabs/eslint-config-flat";
|
|
76
|
+
var importXPlugin = importConfig.find((c) => c.plugins?.["import-x"])?.plugins?.["import-x"];
|
|
77
77
|
var importRuleConfig = importConfig.find((config2) => config2.rules?.["import-x/no-internal-modules"] !== void 0);
|
|
78
78
|
var reactImportConfig = {
|
|
79
|
+
plugins: { "import-x": importXPlugin },
|
|
79
80
|
rules: {
|
|
80
81
|
"import-x/no-internal-modules": [
|
|
81
82
|
"warn",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/react/index.ts","../../src/reactImport/index.ts","../../src/storybook/index.ts"],"sourcesContent":["import {\n recommendedConfig as xyRecommendedConfig,\n recommendedTypeCheckedConfig as xyRecommendedTypeCheckedConfig,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactRecommendedConfig,\n reactRecommendedTypeCheckedConfig,\n} from './react/index.ts'\nimport { reactImportConfig } from './reactImport/index.ts'\nimport { storybookConfig } from './storybook/index.ts'\n\nexport const reactStorybookConfig: Linter.Config[] = [...storybookConfig]\n\nexport const recommendedConfig: Linter.Config[] = [...xyRecommendedConfig, ...reactRecommendedConfig, reactImportConfig]\n\nexport const recommendedTypeCheckedConfig: Linter.Config[] = [\n ...xyRecommendedTypeCheckedConfig,\n ...reactRecommendedTypeCheckedConfig,\n reactImportConfig,\n]\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = [\n ...recommendedTypeCheckedConfig,\n ...reactStorybookConfig,\n]\n\n// Compatibility export for existing consumers.\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\n\nexport {\n reactConfig, reactRecommendedConfig, reactRecommendedTypeCheckedConfig,\n} from './react/index.ts'\nexport { reactImportConfig } from './reactImport/index.ts'\nexport { storybookConfig } from './storybook/index.ts'\n","import tsParser from '@typescript-eslint/parser'\nimport type { ESLint, Linter } from 'eslint'\nimport reactDomPlugin from 'eslint-plugin-react-dom'\nimport reactHooksPlugin from 'eslint-plugin-react-hooks'\nimport reactNamingConventionPlugin from 'eslint-plugin-react-naming-convention'\nimport eslintReactRefreshPlugin from 'eslint-plugin-react-refresh'\nimport reactWebApiPlugin from 'eslint-plugin-react-web-api'\nimport reactPlugin from 'eslint-plugin-react-x'\nimport globals from 'globals'\n\nconst reactFiles = ['**/*.{ts,tsx,js,jsx}']\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n typeChecked = false,\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => ({\n ...config,\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n ...config.languageOptions,\n globals: {\n ...(globals.browser as Record<string, boolean>),\n ...(config.languageOptions?.globals as Record<string, unknown> | undefined),\n },\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(config.languageOptions?.parserOptions as Record<string, unknown> | undefined),\n ...(typeChecked ? { projectService: true, tsconfigRootDir: process.cwd() } : {}),\n },\n },\n }))\n}\n\nfunction createReactOverride(typeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(typeChecked ? { projectService: true, tsconfigRootDir: process.cwd() } : {}),\n },\n globals: { ...globals.browser },\n },\n plugins: {\n 'react-
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/react/index.ts","../../src/reactImport/index.ts","../../src/storybook/index.ts"],"sourcesContent":["import {\n recommendedConfig as xyRecommendedConfig,\n recommendedTypeCheckedConfig as xyRecommendedTypeCheckedConfig,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactRecommendedConfig,\n reactRecommendedTypeCheckedConfig,\n} from './react/index.ts'\nimport { reactImportConfig } from './reactImport/index.ts'\nimport { storybookConfig } from './storybook/index.ts'\n\nexport const reactStorybookConfig: Linter.Config[] = [...storybookConfig]\n\nexport const recommendedConfig: Linter.Config[] = [...xyRecommendedConfig, ...reactRecommendedConfig, reactImportConfig]\n\nexport const recommendedTypeCheckedConfig: Linter.Config[] = [\n ...xyRecommendedTypeCheckedConfig,\n ...reactRecommendedTypeCheckedConfig,\n reactImportConfig,\n]\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = [\n ...recommendedTypeCheckedConfig,\n ...reactStorybookConfig,\n]\n\n// Compatibility export for existing consumers.\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\n\nexport {\n reactConfig, reactRecommendedConfig, reactRecommendedTypeCheckedConfig,\n} from './react/index.ts'\nexport { reactImportConfig } from './reactImport/index.ts'\nexport { storybookConfig } from './storybook/index.ts'\n","import tsParser from '@typescript-eslint/parser'\nimport type { ESLint, Linter } from 'eslint'\nimport reactDomPlugin from 'eslint-plugin-react-dom'\nimport reactHooksPlugin from 'eslint-plugin-react-hooks'\nimport reactNamingConventionPlugin from 'eslint-plugin-react-naming-convention'\nimport eslintReactRefreshPlugin from 'eslint-plugin-react-refresh'\nimport reactWebApiPlugin from 'eslint-plugin-react-web-api'\nimport reactPlugin from 'eslint-plugin-react-x'\nimport globals from 'globals'\n\nconst reactFiles = ['**/*.{ts,tsx,js,jsx}']\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n typeChecked = false,\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => ({\n ...config,\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n ...config.languageOptions,\n globals: {\n ...(globals.browser as Record<string, boolean>),\n ...(config.languageOptions?.globals as Record<string, unknown> | undefined),\n },\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(config.languageOptions?.parserOptions as Record<string, unknown> | undefined),\n ...(typeChecked ? { projectService: true, tsconfigRootDir: process.cwd() } : {}),\n },\n },\n }))\n}\n\nfunction createReactOverride(typeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(typeChecked ? { projectService: true, tsconfigRootDir: process.cwd() } : {}),\n },\n globals: { ...globals.browser },\n },\n plugins: {\n 'react-dom': reactDomPlugin,\n 'react-web-api': reactWebApiPlugin,\n 'react-refresh': eslintReactRefreshPlugin,\n 'react-hooks': reactHooksPlugin as unknown as ESLint.Plugin,\n 'react-naming-convention': reactNamingConventionPlugin,\n },\n rules: {\n ...reactDomPlugin.configs.strict.rules,\n ...reactWebApiPlugin.configs.recommended.rules,\n ...reactHooksPlugin.configs.flat.recommended.rules,\n ...reactNamingConventionPlugin.configs.recommended.rules,\n ...eslintReactRefreshPlugin.configs.recommended.rules,\n 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }],\n },\n }\n}\n\nexport const reactRecommendedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-typescript']),\n createReactOverride(),\n]\n\nexport const reactRecommendedTypeCheckedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-type-checked'], true),\n createReactOverride(true),\n]\n\nexport const reactConfig: Linter.Config[] = reactRecommendedTypeCheckedConfig\n","import { importConfig } from '@xylabs/eslint-config-flat'\nimport type { ESLint, Linter } from 'eslint'\n\nconst importXPlugin = importConfig.find(c => c.plugins?.['import-x'])?.plugins?.['import-x']\nconst importRuleConfig = importConfig.find(config => config.rules?.['import-x/no-internal-modules'] !== undefined)\n\nexport const reactImportConfig: Linter.Config = {\n plugins: { 'import-x': importXPlugin as unknown as ESLint.Plugin },\n rules: {\n 'import-x/no-internal-modules': [\n 'warn',\n {\n allow: [\n 'react-dom/*',\n 'react-icons/*',\n ...((importRuleConfig?.rules?.['import-x/no-internal-modules'] as [string, { allow: string[] }])?.[1]?.allow ?? []),\n ],\n },\n ],\n },\n}\n","import type { Linter } from 'eslint'\nimport storybook from 'eslint-plugin-storybook'\n\nexport const storybookConfig: Linter.Config[] = storybook.configs['flat/recommended'] as Linter.Config[]\n"],"mappings":";AAAA;AAAA,EACE,qBAAqB;AAAA,EACrB,gCAAgC;AAAA,OAC3B;;;ACHP,OAAO,cAAc;AAErB,OAAO,oBAAoB;AAC3B,OAAO,sBAAsB;AAC7B,OAAO,iCAAiC;AACxC,OAAO,8BAA8B;AACrC,OAAO,uBAAuB;AAC9B,OAAO,iBAAiB;AACxB,OAAO,aAAa;AAEpB,IAAM,aAAa,CAAC,sBAAsB;AAE1C,SAAS,kBACP,SACA,cAAc,OACG;AACjB,UAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAAA,aAAW;AAAA,IACnE,GAAGA;AAAA,IACH,OAAO;AAAA,IACP,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,GAAGA,QAAO;AAAA,MACV,SAAS;AAAA,QACP,GAAI,QAAQ;AAAA,QACZ,GAAIA,QAAO,iBAAiB;AAAA,MAC9B;AAAA,MACA,eAAe;AAAA,QACb,cAAc,EAAE,KAAK,KAAK;AAAA,QAC1B,GAAIA,QAAO,iBAAiB;AAAA,QAC5B,GAAI,cAAc,EAAE,gBAAgB,MAAM,iBAAiB,QAAQ,IAAI,EAAE,IAAI,CAAC;AAAA,MAChF;AAAA,IACF;AAAA,EACF,EAAE;AACJ;AAEA,SAAS,oBAAoB,cAAc,OAAsB;AAC/D,SAAO;AAAA,IACL,OAAO;AAAA,IACP,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,eAAe;AAAA,QACb,cAAc,EAAE,KAAK,KAAK;AAAA,QAC1B,GAAI,cAAc,EAAE,gBAAgB,MAAM,iBAAiB,QAAQ,IAAI,EAAE,IAAI,CAAC;AAAA,MAChF;AAAA,MACA,SAAS,EAAE,GAAG,QAAQ,QAAQ;AAAA,IAChC;AAAA,IACA,SAAS;AAAA,MACP,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,2BAA2B;AAAA,IAC7B;AAAA,IACA,OAAO;AAAA,MACL,GAAG,eAAe,QAAQ,OAAO;AAAA,MACjC,GAAG,kBAAkB,QAAQ,YAAY;AAAA,MACzC,GAAG,iBAAiB,QAAQ,KAAK,YAAY;AAAA,MAC7C,GAAG,4BAA4B,QAAQ,YAAY;AAAA,MACnD,GAAG,yBAAyB,QAAQ,YAAY;AAAA,MAChD,wCAAwC,CAAC,QAAQ,EAAE,qBAAqB,KAAK,CAAC;AAAA,IAChF;AAAA,EACF;AACF;AAEO,IAAM,yBAA0C;AAAA,EACrD,GAAG,kBAAkB,YAAY,QAAQ,mBAAmB,CAAC;AAAA,EAC7D,oBAAoB;AACtB;AAEO,IAAM,oCAAqD;AAAA,EAChE,GAAG,kBAAkB,YAAY,QAAQ,qBAAqB,GAAG,IAAI;AAAA,EACrE,oBAAoB,IAAI;AAC1B;AAEO,IAAM,cAA+B;;;AC1E5C,SAAS,oBAAoB;AAG7B,IAAM,gBAAgB,aAAa,KAAK,OAAK,EAAE,UAAU,UAAU,CAAC,GAAG,UAAU,UAAU;AAC3F,IAAM,mBAAmB,aAAa,KAAK,CAAAC,YAAUA,QAAO,QAAQ,8BAA8B,MAAM,MAAS;AAE1G,IAAM,oBAAmC;AAAA,EAC9C,SAAS,EAAE,YAAY,cAA0C;AAAA,EACjE,OAAO;AAAA,IACL,gCAAgC;AAAA,MAC9B;AAAA,MACA;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA,GAAK,kBAAkB,QAAQ,8BAA8B,IAAsC,CAAC,GAAG,SAAS,CAAC;AAAA,QACnH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACnBA,OAAO,eAAe;AAEf,IAAM,kBAAmC,UAAU,QAAQ,kBAAkB;;;AHU7E,IAAM,uBAAwC,CAAC,GAAG,eAAe;AAEjE,IAAM,oBAAqC,CAAC,GAAG,qBAAqB,GAAG,wBAAwB,iBAAiB;AAEhH,IAAM,+BAAgD;AAAA,EAC3D,GAAG;AAAA,EACH,GAAG;AAAA,EACH;AACF;AAEO,IAAM,4CAA6D;AAAA,EACxE,GAAG;AAAA,EACH,GAAG;AACL;AAGO,IAAM,SAA0B;","names":["config","config"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AA+D5C,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAGjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAG5D,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAsC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactImport/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactImport/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK5C,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MActC,CAAA"}
|
package/dist/node/index.mjs
CHANGED
|
@@ -45,7 +45,6 @@ function createReactOverride(typeChecked = false) {
|
|
|
45
45
|
globals: { ...globals.browser }
|
|
46
46
|
},
|
|
47
47
|
plugins: {
|
|
48
|
-
"react-x": reactPlugin,
|
|
49
48
|
"react-dom": reactDomPlugin,
|
|
50
49
|
"react-web-api": reactWebApiPlugin,
|
|
51
50
|
"react-refresh": eslintReactRefreshPlugin,
|
|
@@ -74,8 +73,10 @@ var reactConfig = reactRecommendedTypeCheckedConfig;
|
|
|
74
73
|
|
|
75
74
|
// src/reactImport/index.ts
|
|
76
75
|
import { importConfig } from "@xylabs/eslint-config-flat";
|
|
76
|
+
var importXPlugin = importConfig.find((c) => c.plugins?.["import-x"])?.plugins?.["import-x"];
|
|
77
77
|
var importRuleConfig = importConfig.find((config2) => config2.rules?.["import-x/no-internal-modules"] !== void 0);
|
|
78
78
|
var reactImportConfig = {
|
|
79
|
+
plugins: { "import-x": importXPlugin },
|
|
79
80
|
rules: {
|
|
80
81
|
"import-x/no-internal-modules": [
|
|
81
82
|
"warn",
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/react/index.ts","../../src/reactImport/index.ts","../../src/storybook/index.ts"],"sourcesContent":["import {\n recommendedConfig as xyRecommendedConfig,\n recommendedTypeCheckedConfig as xyRecommendedTypeCheckedConfig,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactRecommendedConfig,\n reactRecommendedTypeCheckedConfig,\n} from './react/index.ts'\nimport { reactImportConfig } from './reactImport/index.ts'\nimport { storybookConfig } from './storybook/index.ts'\n\nexport const reactStorybookConfig: Linter.Config[] = [...storybookConfig]\n\nexport const recommendedConfig: Linter.Config[] = [...xyRecommendedConfig, ...reactRecommendedConfig, reactImportConfig]\n\nexport const recommendedTypeCheckedConfig: Linter.Config[] = [\n ...xyRecommendedTypeCheckedConfig,\n ...reactRecommendedTypeCheckedConfig,\n reactImportConfig,\n]\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = [\n ...recommendedTypeCheckedConfig,\n ...reactStorybookConfig,\n]\n\n// Compatibility export for existing consumers.\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\n\nexport {\n reactConfig, reactRecommendedConfig, reactRecommendedTypeCheckedConfig,\n} from './react/index.ts'\nexport { reactImportConfig } from './reactImport/index.ts'\nexport { storybookConfig } from './storybook/index.ts'\n","import tsParser from '@typescript-eslint/parser'\nimport type { ESLint, Linter } from 'eslint'\nimport reactDomPlugin from 'eslint-plugin-react-dom'\nimport reactHooksPlugin from 'eslint-plugin-react-hooks'\nimport reactNamingConventionPlugin from 'eslint-plugin-react-naming-convention'\nimport eslintReactRefreshPlugin from 'eslint-plugin-react-refresh'\nimport reactWebApiPlugin from 'eslint-plugin-react-web-api'\nimport reactPlugin from 'eslint-plugin-react-x'\nimport globals from 'globals'\n\nconst reactFiles = ['**/*.{ts,tsx,js,jsx}']\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n typeChecked = false,\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => ({\n ...config,\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n ...config.languageOptions,\n globals: {\n ...(globals.browser as Record<string, boolean>),\n ...(config.languageOptions?.globals as Record<string, unknown> | undefined),\n },\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(config.languageOptions?.parserOptions as Record<string, unknown> | undefined),\n ...(typeChecked ? { projectService: true, tsconfigRootDir: process.cwd() } : {}),\n },\n },\n }))\n}\n\nfunction createReactOverride(typeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(typeChecked ? { projectService: true, tsconfigRootDir: process.cwd() } : {}),\n },\n globals: { ...globals.browser },\n },\n plugins: {\n 'react-
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/react/index.ts","../../src/reactImport/index.ts","../../src/storybook/index.ts"],"sourcesContent":["import {\n recommendedConfig as xyRecommendedConfig,\n recommendedTypeCheckedConfig as xyRecommendedTypeCheckedConfig,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactRecommendedConfig,\n reactRecommendedTypeCheckedConfig,\n} from './react/index.ts'\nimport { reactImportConfig } from './reactImport/index.ts'\nimport { storybookConfig } from './storybook/index.ts'\n\nexport const reactStorybookConfig: Linter.Config[] = [...storybookConfig]\n\nexport const recommendedConfig: Linter.Config[] = [...xyRecommendedConfig, ...reactRecommendedConfig, reactImportConfig]\n\nexport const recommendedTypeCheckedConfig: Linter.Config[] = [\n ...xyRecommendedTypeCheckedConfig,\n ...reactRecommendedTypeCheckedConfig,\n reactImportConfig,\n]\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = [\n ...recommendedTypeCheckedConfig,\n ...reactStorybookConfig,\n]\n\n// Compatibility export for existing consumers.\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\n\nexport {\n reactConfig, reactRecommendedConfig, reactRecommendedTypeCheckedConfig,\n} from './react/index.ts'\nexport { reactImportConfig } from './reactImport/index.ts'\nexport { storybookConfig } from './storybook/index.ts'\n","import tsParser from '@typescript-eslint/parser'\nimport type { ESLint, Linter } from 'eslint'\nimport reactDomPlugin from 'eslint-plugin-react-dom'\nimport reactHooksPlugin from 'eslint-plugin-react-hooks'\nimport reactNamingConventionPlugin from 'eslint-plugin-react-naming-convention'\nimport eslintReactRefreshPlugin from 'eslint-plugin-react-refresh'\nimport reactWebApiPlugin from 'eslint-plugin-react-web-api'\nimport reactPlugin from 'eslint-plugin-react-x'\nimport globals from 'globals'\n\nconst reactFiles = ['**/*.{ts,tsx,js,jsx}']\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n typeChecked = false,\n): Linter.Config[] {\n return (Array.isArray(configs) ? configs : [configs]).map(config => ({\n ...config,\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n ...config.languageOptions,\n globals: {\n ...(globals.browser as Record<string, boolean>),\n ...(config.languageOptions?.globals as Record<string, unknown> | undefined),\n },\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(config.languageOptions?.parserOptions as Record<string, unknown> | undefined),\n ...(typeChecked ? { projectService: true, tsconfigRootDir: process.cwd() } : {}),\n },\n },\n }))\n}\n\nfunction createReactOverride(typeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...(typeChecked ? { projectService: true, tsconfigRootDir: process.cwd() } : {}),\n },\n globals: { ...globals.browser },\n },\n plugins: {\n 'react-dom': reactDomPlugin,\n 'react-web-api': reactWebApiPlugin,\n 'react-refresh': eslintReactRefreshPlugin,\n 'react-hooks': reactHooksPlugin as unknown as ESLint.Plugin,\n 'react-naming-convention': reactNamingConventionPlugin,\n },\n rules: {\n ...reactDomPlugin.configs.strict.rules,\n ...reactWebApiPlugin.configs.recommended.rules,\n ...reactHooksPlugin.configs.flat.recommended.rules,\n ...reactNamingConventionPlugin.configs.recommended.rules,\n ...eslintReactRefreshPlugin.configs.recommended.rules,\n 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }],\n },\n }\n}\n\nexport const reactRecommendedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-typescript']),\n createReactOverride(),\n]\n\nexport const reactRecommendedTypeCheckedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-type-checked'], true),\n createReactOverride(true),\n]\n\nexport const reactConfig: Linter.Config[] = reactRecommendedTypeCheckedConfig\n","import { importConfig } from '@xylabs/eslint-config-flat'\nimport type { ESLint, Linter } from 'eslint'\n\nconst importXPlugin = importConfig.find(c => c.plugins?.['import-x'])?.plugins?.['import-x']\nconst importRuleConfig = importConfig.find(config => config.rules?.['import-x/no-internal-modules'] !== undefined)\n\nexport const reactImportConfig: Linter.Config = {\n plugins: { 'import-x': importXPlugin as unknown as ESLint.Plugin },\n rules: {\n 'import-x/no-internal-modules': [\n 'warn',\n {\n allow: [\n 'react-dom/*',\n 'react-icons/*',\n ...((importRuleConfig?.rules?.['import-x/no-internal-modules'] as [string, { allow: string[] }])?.[1]?.allow ?? []),\n ],\n },\n ],\n },\n}\n","import type { Linter } from 'eslint'\nimport storybook from 'eslint-plugin-storybook'\n\nexport const storybookConfig: Linter.Config[] = storybook.configs['flat/recommended'] as Linter.Config[]\n"],"mappings":"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","names":["config","config"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AA+D5C,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAGjD,CAAA;AAED,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAG5D,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAsC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactImport/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reactImport/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK5C,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MActC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xylabs/eslint-config-react-flat",
|
|
3
|
-
"version": "7.9.
|
|
3
|
+
"version": "7.9.8",
|
|
4
4
|
"description": "ESLint Config used throughout XY Labs TypeScript/JavaScript libraries and react projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xylabs",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@typescript-eslint/parser": "~8.58.0",
|
|
39
|
-
"@xylabs/eslint-config-flat": "~7.9.
|
|
39
|
+
"@xylabs/eslint-config-flat": "~7.9.8",
|
|
40
40
|
"eslint-plugin-react-dom": "^4.2.3",
|
|
41
41
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
42
42
|
"eslint-plugin-react-naming-convention": "^4.2.3",
|
|
@@ -50,9 +50,9 @@
|
|
|
50
50
|
"@babel/core": "^7.29.0",
|
|
51
51
|
"@testing-library/dom": "^10.4.1",
|
|
52
52
|
"@types/node": "^25.5.2",
|
|
53
|
-
"@xylabs/ts-scripts-common": "~7.9.
|
|
54
|
-
"@xylabs/ts-scripts-yarn3": "~7.9.
|
|
55
|
-
"@xylabs/tsconfig": "~7.9.
|
|
53
|
+
"@xylabs/ts-scripts-common": "~7.9.8",
|
|
54
|
+
"@xylabs/ts-scripts-yarn3": "~7.9.8",
|
|
55
|
+
"@xylabs/tsconfig": "~7.9.8",
|
|
56
56
|
"acorn": "^8.16.0",
|
|
57
57
|
"cosmiconfig": "^9.0.1",
|
|
58
58
|
"esbuild": "^0.28.0",
|