@xylabs/eslint-config-react-flat 8.2.16 → 8.2.18

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.
@@ -113,7 +113,7 @@ var configReactTier2BestPracticesTypeChecked = mergeTierConfigs(
113
113
  configTier2BestPracticesTypeChecked,
114
114
  reactBestPracticesTypeCheckedConfig
115
115
  );
116
- var configReactTier3Oopinionated = mergeTierConfigs(
116
+ var configReactTier3Opinionated = mergeTierConfigs(
117
117
  configTier3Opinionated,
118
118
  reactBestPracticesTypeCheckedConfig
119
119
  );
@@ -145,7 +145,7 @@ export {
145
145
  configReactTier1ConsistencyTypeChecked,
146
146
  configReactTier2BestPractices,
147
147
  configReactTier2BestPracticesTypeChecked,
148
- configReactTier3Oopinionated,
148
+ configReactTier3Opinionated,
149
149
  configReactTier3OpinionatedTypeChecked,
150
150
  configReactTier4Experimental,
151
151
  configReactTier4ExperimentalTypeChecked,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/storybook/index.ts", "../../src/tiers/index.ts", "../../src/react/index.ts"],
4
- "sourcesContent": ["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", "import {\n configTier0Correctness, configTier0CorrectnessTypeChecked, configTier1Consistency,\n configTier1ConsistencyTypeChecked,\n configTier2BestPractices,\n configTier2BestPracticesTypeChecked,\n configTier3Opinionated,\n configTier3OpinionatedTypeChecked,\n configTier4Experimental,\n configTier4ExperimentalTypeChecked,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactBestPracticesConfig,\n reactBestPracticesTypeCheckedConfig,\n} from '../react/index.ts'\nimport { storybookConfig } from '../storybook/index.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nexport const configReactStorybook: Linter.Config[] = [...storybookConfig]\n\nexport const configReactTier0Correctness: Linter.Config[] = [...configTier0Correctness]\n\nexport const configReactTier0CorrectnessTypeChecked: Linter.Config[] = [...configTier0CorrectnessTypeChecked]\n\nexport const configReactTier1Consistency: Linter.Config[] = [...configTier1Consistency]\n\nexport const configReactTier1ConsistencyTypeChecked: Linter.Config[] = [...configTier1ConsistencyTypeChecked]\n\nexport const configReactTier2BestPractices: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n reactBestPracticesConfig,\n)\n\nexport const configReactTier2BestPracticesTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier3Oopinionated: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier4Experimental: Linter.Config[] = mergeTierConfigs(\n configTier4Experimental,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier4ExperimentalTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier4ExperimentalTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\n/** @deprecated Use `configReactTier2BestPractices` instead. */\nexport const recommendedConfig: Linter.Config[] = configReactTier2BestPractices\n\n/** @deprecated Use `configReactTier2BestPracticesTypeChecked` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = configReactTier2BestPracticesTypeChecked\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = mergeTierConfigs(\n configReactTier2BestPracticesTypeChecked,\n configReactStorybook,\n)\n\n/** @deprecated Use `configReactTier3OpinionatedTypeChecked` instead. Add `configReactStorybook` explicitly if needed. */\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\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,mts,cts,js,jsx,mjs,cjs}']\n\nfunction currentWorkingDirectory(): string | undefined {\n return (globalThis as { process?: { cwd?: () => string } }).process?.cwd?.()\n}\n\nfunction typeCheckedParserOptions(isTypeChecked: boolean): Record<string, unknown> {\n if (!isTypeChecked) return {}\n const tsconfigRootDir = currentWorkingDirectory()\n const parserOptions: Record<string, unknown> = { projectService: true }\n if (tsconfigRootDir !== undefined) {\n parserOptions.tsconfigRootDir = tsconfigRootDir\n }\n return parserOptions\n}\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n isTypeChecked = 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 ...typeCheckedParserOptions(isTypeChecked),\n },\n },\n }))\n}\n\nfunction createReactOverride(isTypeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...typeCheckedParserOptions(isTypeChecked),\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 'react-hooks/use-memo': 'warn',\n 'react-hooks/set-state-in-effect': 'warn',\n },\n }\n}\n\nexport const reactBestPracticesConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-typescript']),\n createReactOverride(),\n]\n\nexport const reactBestPracticesTypeCheckedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-type-checked'], true),\n createReactOverride(true),\n]\n\nexport const reactConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["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", "import {\n configTier0Correctness, configTier0CorrectnessTypeChecked, configTier1Consistency,\n configTier1ConsistencyTypeChecked,\n configTier2BestPractices,\n configTier2BestPracticesTypeChecked,\n configTier3Opinionated,\n configTier3OpinionatedTypeChecked,\n configTier4Experimental,\n configTier4ExperimentalTypeChecked,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactBestPracticesConfig,\n reactBestPracticesTypeCheckedConfig,\n} from '../react/index.ts'\nimport { storybookConfig } from '../storybook/index.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nexport const configReactStorybook: Linter.Config[] = [...storybookConfig]\n\nexport const configReactTier0Correctness: Linter.Config[] = [...configTier0Correctness]\n\nexport const configReactTier0CorrectnessTypeChecked: Linter.Config[] = [...configTier0CorrectnessTypeChecked]\n\nexport const configReactTier1Consistency: Linter.Config[] = [...configTier1Consistency]\n\nexport const configReactTier1ConsistencyTypeChecked: Linter.Config[] = [...configTier1ConsistencyTypeChecked]\n\nexport const configReactTier2BestPractices: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n reactBestPracticesConfig,\n)\n\nexport const configReactTier2BestPracticesTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier3Opinionated: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier4Experimental: Linter.Config[] = mergeTierConfigs(\n configTier4Experimental,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier4ExperimentalTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier4ExperimentalTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\n/** @deprecated Use `configReactTier2BestPractices` instead. */\nexport const recommendedConfig: Linter.Config[] = configReactTier2BestPractices\n\n/** @deprecated Use `configReactTier2BestPracticesTypeChecked` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = configReactTier2BestPracticesTypeChecked\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = mergeTierConfigs(\n configReactTier2BestPracticesTypeChecked,\n configReactStorybook,\n)\n\n/** @deprecated Use `configReactTier3OpinionatedTypeChecked` instead. Add `configReactStorybook` explicitly if needed. */\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\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,mts,cts,js,jsx,mjs,cjs}']\n\nfunction currentWorkingDirectory(): string | undefined {\n return (globalThis as { process?: { cwd?: () => string } }).process?.cwd?.()\n}\n\nfunction typeCheckedParserOptions(isTypeChecked: boolean): Record<string, unknown> {\n if (!isTypeChecked) return {}\n const tsconfigRootDir = currentWorkingDirectory()\n const parserOptions: Record<string, unknown> = { projectService: true }\n if (tsconfigRootDir !== undefined) {\n parserOptions.tsconfigRootDir = tsconfigRootDir\n }\n return parserOptions\n}\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n isTypeChecked = 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 ...typeCheckedParserOptions(isTypeChecked),\n },\n },\n }))\n}\n\nfunction createReactOverride(isTypeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...typeCheckedParserOptions(isTypeChecked),\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 'react-hooks/use-memo': 'warn',\n 'react-hooks/set-state-in-effect': 'warn',\n },\n }\n}\n\nexport const reactBestPracticesConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-typescript']),\n createReactOverride(),\n]\n\nexport const reactBestPracticesTypeCheckedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-type-checked'], true),\n createReactOverride(true),\n]\n\nexport const reactConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n"],
5
+ "mappings": ";AACA,OAAO,eAAe;AAEf,IAAM,kBAAmC,UAAU,QAAQ,kBAAkB;;;ACHpF;AAAA,EACE;AAAA,EAAwB;AAAA,EAAmC;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACTP,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,sCAAsC;AAE1D,SAAS,0BAA8C;AACrD,SAAQ,WAAoD,SAAS,MAAM;AAC7E;AAEA,SAAS,yBAAyB,eAAiD;AACjF,MAAI,CAAC,cAAe,QAAO,CAAC;AAC5B,QAAM,kBAAkB,wBAAwB;AAChD,QAAM,gBAAyC,EAAE,gBAAgB,KAAK;AACtE,MAAI,oBAAoB,QAAW;AACjC,kBAAc,kBAAkB;AAAA,EAClC;AACA,SAAO;AACT;AAEA,SAAS,kBACP,SACA,gBAAgB,OACC;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,GAAG,yBAAyB,aAAa;AAAA,MAC3C;AAAA,IACF;AAAA,EACF,EAAE;AACJ;AAEA,SAAS,oBAAoB,gBAAgB,OAAsB;AACjE,SAAO;AAAA,IACL,OAAO;AAAA,IACP,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,eAAe;AAAA,QACb,cAAc,EAAE,KAAK,KAAK;AAAA,QAC1B,GAAG,yBAAyB,aAAa;AAAA,MAC3C;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,MAC9E,wBAAwB;AAAA,MACxB,mCAAmC;AAAA,IACrC;AAAA,EACF;AACF;AAEO,IAAM,2BAA4C;AAAA,EACvD,GAAG,kBAAkB,YAAY,QAAQ,mBAAmB,CAAC;AAAA,EAC7D,oBAAoB;AACtB;AAEO,IAAM,sCAAuD;AAAA,EAClE,GAAG,kBAAkB,YAAY,QAAQ,qBAAqB,GAAG,IAAI;AAAA,EACrE,oBAAoB,IAAI;AAC1B;;;ADtEA,SAAS,oBAAoB,OAAoD;AAC/E,SAAO,MAAM,KAAK;AACpB;AAEO,IAAM,uBAAwC,CAAC,GAAG,eAAe;AAEjE,IAAM,8BAA+C,CAAC,GAAG,sBAAsB;AAE/E,IAAM,yCAA0D,CAAC,GAAG,iCAAiC;AAErG,IAAM,8BAA+C,CAAC,GAAG,sBAAsB;AAE/E,IAAM,yCAA0D,CAAC,GAAG,iCAAiC;AAErG,IAAM,gCAAiD;AAAA,EAC5D;AAAA,EACA;AACF;AAEO,IAAM,2CAA4D;AAAA,EACvE;AAAA,EACA;AACF;AAEO,IAAM,8BAA+C;AAAA,EAC1D;AAAA,EACA;AACF;AAEO,IAAM,yCAA0D;AAAA,EACrE;AAAA,EACA;AACF;AAEO,IAAM,+BAAgD;AAAA,EAC3D;AAAA,EACA;AACF;AAEO,IAAM,0CAA2D;AAAA,EACtE;AAAA,EACA;AACF;AAGO,IAAM,oBAAqC;AAG3C,IAAM,+BAAgD;AAEtD,IAAM,4CAA6D;AAAA,EACxE;AAAA,EACA;AACF;AAGO,IAAM,SAA0B;",
6
6
  "names": ["config"]
7
7
  }
@@ -6,7 +6,7 @@ export declare const configReactTier1Consistency: Linter.Config[];
6
6
  export declare const configReactTier1ConsistencyTypeChecked: Linter.Config[];
7
7
  export declare const configReactTier2BestPractices: Linter.Config[];
8
8
  export declare const configReactTier2BestPracticesTypeChecked: Linter.Config[];
9
- export declare const configReactTier3Oopinionated: Linter.Config[];
9
+ export declare const configReactTier3Opinionated: Linter.Config[];
10
10
  export declare const configReactTier3OpinionatedTypeChecked: Linter.Config[];
11
11
  export declare const configReactTier4Experimental: Linter.Config[];
12
12
  export declare const configReactTier4ExperimentalTypeChecked: Linter.Config[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAYpC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAyB,CAAA;AAEzE,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAgC,CAAA;AAEvF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAA2C,CAAA;AAE7G,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAgC,CAAA;AAEvF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAA2C,CAAA;AAE7G,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAGxD,CAAA;AAED,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC,MAAM,EAGnE,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAGjE,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,eAAO,MAAM,uCAAuC,EAAE,MAAM,CAAC,MAAM,EAGlE,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAkC,CAAA;AAE/E,0EAA0E;AAC1E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAA6C,CAAA;AAErG,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,MAAM,EAGpE,CAAA;AAED,yHAAyH;AACzH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAA8C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAYpC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAyB,CAAA;AAEzE,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAgC,CAAA;AAEvF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAA2C,CAAA;AAE7G,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAgC,CAAA;AAEvF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAA2C,CAAA;AAE7G,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAGxD,CAAA;AAED,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC,MAAM,EAGnE,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAGtD,CAAA;AAED,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAGjE,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,eAAO,MAAM,uCAAuC,EAAE,MAAM,CAAC,MAAM,EAGlE,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAkC,CAAA;AAE/E,0EAA0E;AAC1E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAA6C,CAAA;AAErG,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,MAAM,EAGpE,CAAA;AAED,yHAAyH;AACzH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAA8C,CAAA"}
@@ -113,7 +113,7 @@ var configReactTier2BestPracticesTypeChecked = mergeTierConfigs(
113
113
  configTier2BestPracticesTypeChecked,
114
114
  reactBestPracticesTypeCheckedConfig
115
115
  );
116
- var configReactTier3Oopinionated = mergeTierConfigs(
116
+ var configReactTier3Opinionated = mergeTierConfigs(
117
117
  configTier3Opinionated,
118
118
  reactBestPracticesTypeCheckedConfig
119
119
  );
@@ -145,7 +145,7 @@ export {
145
145
  configReactTier1ConsistencyTypeChecked,
146
146
  configReactTier2BestPractices,
147
147
  configReactTier2BestPracticesTypeChecked,
148
- configReactTier3Oopinionated,
148
+ configReactTier3Opinionated,
149
149
  configReactTier3OpinionatedTypeChecked,
150
150
  configReactTier4Experimental,
151
151
  configReactTier4ExperimentalTypeChecked,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/storybook/index.ts", "../../src/tiers/index.ts", "../../src/react/index.ts"],
4
- "sourcesContent": ["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", "import {\n configTier0Correctness, configTier0CorrectnessTypeChecked, configTier1Consistency,\n configTier1ConsistencyTypeChecked,\n configTier2BestPractices,\n configTier2BestPracticesTypeChecked,\n configTier3Opinionated,\n configTier3OpinionatedTypeChecked,\n configTier4Experimental,\n configTier4ExperimentalTypeChecked,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactBestPracticesConfig,\n reactBestPracticesTypeCheckedConfig,\n} from '../react/index.ts'\nimport { storybookConfig } from '../storybook/index.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nexport const configReactStorybook: Linter.Config[] = [...storybookConfig]\n\nexport const configReactTier0Correctness: Linter.Config[] = [...configTier0Correctness]\n\nexport const configReactTier0CorrectnessTypeChecked: Linter.Config[] = [...configTier0CorrectnessTypeChecked]\n\nexport const configReactTier1Consistency: Linter.Config[] = [...configTier1Consistency]\n\nexport const configReactTier1ConsistencyTypeChecked: Linter.Config[] = [...configTier1ConsistencyTypeChecked]\n\nexport const configReactTier2BestPractices: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n reactBestPracticesConfig,\n)\n\nexport const configReactTier2BestPracticesTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier3Oopinionated: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier4Experimental: Linter.Config[] = mergeTierConfigs(\n configTier4Experimental,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier4ExperimentalTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier4ExperimentalTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\n/** @deprecated Use `configReactTier2BestPractices` instead. */\nexport const recommendedConfig: Linter.Config[] = configReactTier2BestPractices\n\n/** @deprecated Use `configReactTier2BestPracticesTypeChecked` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = configReactTier2BestPracticesTypeChecked\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = mergeTierConfigs(\n configReactTier2BestPracticesTypeChecked,\n configReactStorybook,\n)\n\n/** @deprecated Use `configReactTier3OpinionatedTypeChecked` instead. Add `configReactStorybook` explicitly if needed. */\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\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,mts,cts,js,jsx,mjs,cjs}']\n\nfunction currentWorkingDirectory(): string | undefined {\n return (globalThis as { process?: { cwd?: () => string } }).process?.cwd?.()\n}\n\nfunction typeCheckedParserOptions(isTypeChecked: boolean): Record<string, unknown> {\n if (!isTypeChecked) return {}\n const tsconfigRootDir = currentWorkingDirectory()\n const parserOptions: Record<string, unknown> = { projectService: true }\n if (tsconfigRootDir !== undefined) {\n parserOptions.tsconfigRootDir = tsconfigRootDir\n }\n return parserOptions\n}\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n isTypeChecked = 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 ...typeCheckedParserOptions(isTypeChecked),\n },\n },\n }))\n}\n\nfunction createReactOverride(isTypeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...typeCheckedParserOptions(isTypeChecked),\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 'react-hooks/use-memo': 'warn',\n 'react-hooks/set-state-in-effect': 'warn',\n },\n }\n}\n\nexport const reactBestPracticesConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-typescript']),\n createReactOverride(),\n]\n\nexport const reactBestPracticesTypeCheckedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-type-checked'], true),\n createReactOverride(true),\n]\n\nexport const reactConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["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", "import {\n configTier0Correctness, configTier0CorrectnessTypeChecked, configTier1Consistency,\n configTier1ConsistencyTypeChecked,\n configTier2BestPractices,\n configTier2BestPracticesTypeChecked,\n configTier3Opinionated,\n configTier3OpinionatedTypeChecked,\n configTier4Experimental,\n configTier4ExperimentalTypeChecked,\n} from '@xylabs/eslint-config-flat'\nimport type { Linter } from 'eslint'\n\nimport {\n reactBestPracticesConfig,\n reactBestPracticesTypeCheckedConfig,\n} from '../react/index.ts'\nimport { storybookConfig } from '../storybook/index.ts'\n\nfunction mergeTierConfigs(...parts: readonly Linter.Config[][]): Linter.Config[] {\n return parts.flat()\n}\n\nexport const configReactStorybook: Linter.Config[] = [...storybookConfig]\n\nexport const configReactTier0Correctness: Linter.Config[] = [...configTier0Correctness]\n\nexport const configReactTier0CorrectnessTypeChecked: Linter.Config[] = [...configTier0CorrectnessTypeChecked]\n\nexport const configReactTier1Consistency: Linter.Config[] = [...configTier1Consistency]\n\nexport const configReactTier1ConsistencyTypeChecked: Linter.Config[] = [...configTier1ConsistencyTypeChecked]\n\nexport const configReactTier2BestPractices: Linter.Config[] = mergeTierConfigs(\n configTier2BestPractices,\n reactBestPracticesConfig,\n)\n\nexport const configReactTier2BestPracticesTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier2BestPracticesTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier3Opinionated: Linter.Config[] = mergeTierConfigs(\n configTier3Opinionated,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier3OpinionatedTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier3OpinionatedTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier4Experimental: Linter.Config[] = mergeTierConfigs(\n configTier4Experimental,\n reactBestPracticesTypeCheckedConfig,\n)\n\nexport const configReactTier4ExperimentalTypeChecked: Linter.Config[] = mergeTierConfigs(\n configTier4ExperimentalTypeChecked,\n reactBestPracticesTypeCheckedConfig,\n)\n\n/** @deprecated Use `configReactTier2BestPractices` instead. */\nexport const recommendedConfig: Linter.Config[] = configReactTier2BestPractices\n\n/** @deprecated Use `configReactTier2BestPracticesTypeChecked` instead. */\nexport const recommendedTypeCheckedConfig: Linter.Config[] = configReactTier2BestPracticesTypeChecked\n\nexport const recommendedTypeCheckedWithStorybookConfig: Linter.Config[] = mergeTierConfigs(\n configReactTier2BestPracticesTypeChecked,\n configReactStorybook,\n)\n\n/** @deprecated Use `configReactTier3OpinionatedTypeChecked` instead. Add `configReactStorybook` explicitly if needed. */\nexport const config: Linter.Config[] = recommendedTypeCheckedWithStorybookConfig\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,mts,cts,js,jsx,mjs,cjs}']\n\nfunction currentWorkingDirectory(): string | undefined {\n return (globalThis as { process?: { cwd?: () => string } }).process?.cwd?.()\n}\n\nfunction typeCheckedParserOptions(isTypeChecked: boolean): Record<string, unknown> {\n if (!isTypeChecked) return {}\n const tsconfigRootDir = currentWorkingDirectory()\n const parserOptions: Record<string, unknown> = { projectService: true }\n if (tsconfigRootDir !== undefined) {\n parserOptions.tsconfigRootDir = tsconfigRootDir\n }\n return parserOptions\n}\n\nfunction scopeReactConfigs(\n configs: Linter.Config | Linter.Config[],\n isTypeChecked = 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 ...typeCheckedParserOptions(isTypeChecked),\n },\n },\n }))\n}\n\nfunction createReactOverride(isTypeChecked = false): Linter.Config {\n return {\n files: reactFiles,\n languageOptions: {\n parser: tsParser,\n parserOptions: {\n ecmaFeatures: { jsx: true },\n ...typeCheckedParserOptions(isTypeChecked),\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 'react-hooks/use-memo': 'warn',\n 'react-hooks/set-state-in-effect': 'warn',\n },\n }\n}\n\nexport const reactBestPracticesConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-typescript']),\n createReactOverride(),\n]\n\nexport const reactBestPracticesTypeCheckedConfig: Linter.Config[] = [\n ...scopeReactConfigs(reactPlugin.configs['strict-type-checked'], true),\n createReactOverride(true),\n]\n\nexport const reactConfig: Linter.Config[] = reactBestPracticesTypeCheckedConfig\n"],
5
+ "mappings": "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",
6
6
  "names": ["config"]
7
7
  }
@@ -6,7 +6,7 @@ export declare const configReactTier1Consistency: Linter.Config[];
6
6
  export declare const configReactTier1ConsistencyTypeChecked: Linter.Config[];
7
7
  export declare const configReactTier2BestPractices: Linter.Config[];
8
8
  export declare const configReactTier2BestPracticesTypeChecked: Linter.Config[];
9
- export declare const configReactTier3Oopinionated: Linter.Config[];
9
+ export declare const configReactTier3Opinionated: Linter.Config[];
10
10
  export declare const configReactTier3OpinionatedTypeChecked: Linter.Config[];
11
11
  export declare const configReactTier4Experimental: Linter.Config[];
12
12
  export declare const configReactTier4ExperimentalTypeChecked: Linter.Config[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAYpC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAyB,CAAA;AAEzE,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAgC,CAAA;AAEvF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAA2C,CAAA;AAE7G,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAgC,CAAA;AAEvF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAA2C,CAAA;AAE7G,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAGxD,CAAA;AAED,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC,MAAM,EAGnE,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAGjE,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,eAAO,MAAM,uCAAuC,EAAE,MAAM,CAAC,MAAM,EAGlE,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAkC,CAAA;AAE/E,0EAA0E;AAC1E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAA6C,CAAA;AAErG,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,MAAM,EAGpE,CAAA;AAED,yHAAyH;AACzH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAA8C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tiers/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAYpC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAyB,CAAA;AAEzE,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAgC,CAAA;AAEvF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAA2C,CAAA;AAE7G,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAgC,CAAA;AAEvF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAA2C,CAAA;AAE7G,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAGxD,CAAA;AAED,eAAO,MAAM,wCAAwC,EAAE,MAAM,CAAC,MAAM,EAGnE,CAAA;AAED,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAGtD,CAAA;AAED,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,MAAM,EAGjE,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAGvD,CAAA;AAED,eAAO,MAAM,uCAAuC,EAAE,MAAM,CAAC,MAAM,EAGlE,CAAA;AAED,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAkC,CAAA;AAE/E,0EAA0E;AAC1E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAA6C,CAAA;AAErG,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,MAAM,EAGpE,CAAA;AAED,yHAAyH;AACzH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAA8C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/eslint-config-react-flat",
3
- "version": "8.2.16",
3
+ "version": "8.2.18",
4
4
  "description": "ESLint Config used throughout XY Labs TypeScript/JavaScript libraries and react projects",
5
5
  "keywords": [
6
6
  "xylabs",
@@ -52,7 +52,7 @@
52
52
  "eslint-plugin-react-x": "^5.9.0",
53
53
  "eslint-plugin-storybook": "^10.4.6",
54
54
  "globals": "~17.6.0",
55
- "@xylabs/eslint-config-flat": "~8.2.16"
55
+ "@xylabs/eslint-config-flat": "~8.2.18"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@testing-library/dom": "^10.4.1",
@@ -70,8 +70,8 @@
70
70
  "vite": "^8.0.16",
71
71
  "vitest": "~4.1.9",
72
72
  "zod": "^4.4.3",
73
- "@xylabs/toolchain": "~8.2.16",
74
- "@xylabs/tsconfig": "~8.2.16"
73
+ "@xylabs/toolchain": "~8.2.18",
74
+ "@xylabs/tsconfig": "~8.2.18"
75
75
  },
76
76
  "peerDependencies": {
77
77
  "browserslist": ">= 4.21.0",