@solvro/config 2.4.0-beta.1 → 3.0.0-beta.2

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/eslint/configs/a11y.ts","../src/eslint/configs/react.ts","../src/eslint/configs/testing.ts","../src/eslint/presets/react.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"@eslint/config-helpers\";\nimport jsxA11y from \"eslint-plugin-jsx-a11y\";\nimport globals from \"globals\";\n\nexport function a11y(): ConfigWithExtends[] {\n return [\n {\n files: [\"**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}\"],\n ...jsxA11y.flatConfigs.recommended,\n languageOptions: {\n ...jsxA11y.flatConfigs.recommended.languageOptions,\n globals: {\n ...globals.serviceworker,\n ...globals.browser,\n },\n },\n settings: {\n \"jsx-a11y\": {\n components: {\n Input: \"input\",\n Button: \"button\",\n Link: \"a\",\n Label: \"label\",\n Select: \"select\",\n Textarea: \"textarea\",\n },\n attributes: {\n for: [\"htmlFor\", \"for\"],\n },\n },\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"@eslint/config-helpers\";\nimport pluginQuery from \"@tanstack/eslint-plugin-query\";\nimport pluginReact from \"eslint-plugin-react\";\nimport pluginReactHooks from \"eslint-plugin-react-hooks\";\nimport pluginReactRefresh from \"eslint-plugin-react-refresh\";\nimport reactYouMightNotNeedAnEffect from \"eslint-plugin-react-you-might-not-need-an-effect\";\nimport { isPackageListedSync } from \"local-pkg\";\n\nconst nextJsPackages = [\"next\"];\nconst vitePackages = [\"vite\"];\n\nexport async function react(): Promise<ConfigWithExtends[]> {\n const isUsingNext = nextJsPackages.some((index) =>\n isPackageListedSync(index),\n );\n const isUsingVite = vitePackages.some((index) => isPackageListedSync(index));\n\n const nextjsConfig: ConfigWithExtends[] = [];\n\n if (isUsingNext) {\n const nextPlugin = await import(\"@next/eslint-plugin-next\").then(\n (d) => d.default,\n );\n\n nextjsConfig.push(\n {\n name: \"solvro/next/setup\",\n plugins: {\n // @ts-expect-error ???\n \"@next/next\": nextPlugin,\n },\n\n rules: nextPlugin.configs.recommended.rules,\n },\n {\n files: [\n \"**/app/**/{page,loading,layout,template,error,not-found,unauthorized,forbidden,default,robots,sitemap}.{js,jsx,ts,tsx}\",\n \"**/pages/**/*.{js,jsx,ts,tsx}\",\n ],\n name: \"solvro/next/pages\",\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n );\n }\n\n const viteConfig: ConfigWithExtends[] = [];\n\n if (isUsingVite) {\n viteConfig.push(pluginReactRefresh.configs.vite);\n }\n\n return [\n {\n name: \"solvro/react/setup\",\n plugins: {\n react: pluginReact,\n\n \"react-hooks\": pluginReactHooks,\n },\n },\n ...nextjsConfig,\n ...viteConfig,\n {\n files: [\"**/*.{js,jsx,mjs,cjs,ts,tsx}\"],\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n },\n sourceType: \"module\",\n },\n settings: {\n react: {\n version: \"detect\",\n },\n },\n name: \"solvro/react/rules\",\n rules: {\n ...pluginReact.configs.flat.recommended.rules,\n ...pluginReact.configs.flat[\"jsx-runtime\"].rules,\n \"react/no-danger\": \"warn\",\n \"react/jsx-no-leaked-render\": \"warn\",\n // recommended rules react-hooks\n \"react-hooks/exhaustive-deps\": \"warn\",\n \"react-hooks/rules-of-hooks\": \"error\",\n \"react/jsx-no-useless-fragment\": \"error\",\n \"react/function-component-definition\": [\n \"error\",\n {\n unnamedComponents: \"arrow-function\",\n namedComponents: \"function-declaration\",\n },\n ],\n \"react/hook-use-state\": [\n \"error\",\n {\n allowDestructuredState: true,\n },\n ],\n \"react/no-array-index-key\": \"warn\",\n },\n },\n ...pluginQuery.configs[\"flat/recommended\"],\n reactYouMightNotNeedAnEffect.configs.recommended,\n {\n name: \"solvro/react/disables\",\n files: [\"**/components/ui/*.{jsx,tsx}\"],\n rules: {\n \"react/prop-types\": \"off\",\n \"no-shadow\": \"off\",\n \"@typescript-eslint/no-shadow\": \"off\",\n \"@typescript-eslint/restrict-template-expressions\": \"off\",\n \"unicorn/no-document-cookie\": \"off\",\n \"@typescript-eslint/no-redeclare\": \"off\",\n \"@typescript-eslint/no-deprecated\": \"off\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"@eslint/config-helpers\";\nimport vitest from \"@vitest/eslint-plugin\";\nimport jest from \"eslint-plugin-jest\";\nimport playwright from \"eslint-plugin-playwright\";\nimport { isPackageListed } from \"local-pkg\";\n\nexport const testing = async ({\n testFiles,\n playwrightTestFiles,\n}: {\n testFiles: string[];\n playwrightTestFiles: string[];\n}): Promise<ConfigWithExtends[]> => {\n const isVitest = await isPackageListed(\"vitest\");\n const isJest = await isPackageListed(\"jest\");\n\n if (isVitest && isJest) {\n throw new Error(\n \"Both Vitest and Jest are installed: please uninstall one of them.\",\n );\n }\n\n const isPlaywright = await isPackageListed(\"@playwright/test\");\n\n const playwrightConfig = isPlaywright\n ? ([\n {\n ...playwright.configs[\"flat/recommended\"],\n files: playwrightTestFiles,\n rules: {\n ...playwright.configs[\"flat/recommended\"].rules,\n \"playwright/prefer-native-locators\": \"warn\",\n \"playwright/prefer-locator\": \"warn\",\n \"playwright/prefer-comparison-matcher\": \"warn\",\n \"playwright/require-top-level-describe\": \"error\",\n \"playwright/prefer-hooks-on-top\": \"warn\",\n \"playwright/prefer-hooks-in-order\": \"warn\",\n \"playwright/prefer-equality-matcher\": \"error\",\n \"playwright/no-raw-locators\": \"warn\",\n },\n },\n ] as const satisfies ConfigWithExtends[])\n : [];\n\n const vitestConfig = isVitest\n ? ([\n {\n files: testFiles,\n plugins: {\n vitest,\n },\n rules: {\n ...vitest.configs.recommended.rules,\n \"vitest/consistent-test-it\": [\n \"error\",\n {\n fn: \"it\",\n },\n ],\n \"vitest/no-focused-tests\": [\"warn\"],\n \"vitest/no-mocks-import\": [\"error\"],\n \"vitest/no-test-return-statement\": [\"error\"],\n \"vitest/prefer-lowercase-title\": [\"error\"],\n \"vitest/require-top-level-describe\": [\"warn\"],\n \"vitest/prefer-vi-mocked\": [\"error\"],\n \"vitest/prefer-hooks-in-order\": [\"warn\"],\n \"vitest/prefer-hooks-on-top\": [\"warn\"],\n \"vitest/prefer-each\": [\"warn\"],\n \"vitest/no-conditional-tests\": [\"error\"],\n \"vitest/prefer-comparison-matcher\": [\"error\"],\n \"vitest/no-conditional-in-test\": [\"warn\"],\n \"vitest/consistent-vitest-vi\": [\"error\"],\n },\n },\n ] as const satisfies ConfigWithExtends[])\n : [];\n\n const jestConfig = isJest\n ? ([\n {\n files: testFiles,\n plugins: {\n jest,\n },\n rules: {\n ...jest.configs.recommended.rules,\n },\n },\n ] as const)\n : [];\n\n return [...playwrightConfig, ...vitestConfig, ...jestConfig];\n};\n","import type { ConfigWithExtends } from \"@eslint/config-helpers\";\n\nimport { a11y } from \"../configs/a11y\";\nimport { imports } from \"../configs/imports\";\nimport { react } from \"../configs/react\";\nimport { testing } from \"../configs/testing\";\nimport { typescriptStrict } from \"../configs/typescript-strict\";\nimport { unicorn } from \"../configs/unicorn\";\n\nexport const reactPreset = async (): Promise<ConfigWithExtends[]> => [\n ...a11y(),\n ...unicorn(),\n ...typescriptStrict(),\n ...imports({ forbidDefaultExport: true }),\n ...(await testing({\n testFiles: [\"**/*.test.ts\", \"**/*.test.tsx\"],\n playwrightTestFiles: [\"**/*.spec.ts\", \"**/*.spec.tsx\"],\n })),\n ...(await react()),\n];\n"],"mappings":";;;;;;;;;;AACA,OAAO,aAAa;AACpB,OAAO,aAAa;AAEb,SAAS,OAA4B;AAC1C,SAAO;AAAA,IACL;AAAA,MACE,OAAO,CAAC,wCAAwC;AAAA,MAChD,GAAG,QAAQ,YAAY;AAAA,MACvB,iBAAiB;AAAA,QACf,GAAG,QAAQ,YAAY,YAAY;AAAA,QACnC,SAAS;AAAA,UACP,GAAG,QAAQ;AAAA,UACX,GAAG,QAAQ;AAAA,QACb;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR,YAAY;AAAA,UACV,YAAY;AAAA,YACV,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,UAAU;AAAA,UACZ;AAAA,UACA,YAAY;AAAA,YACV,KAAK,CAAC,WAAW,KAAK;AAAA,UACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AChCA,OAAO,iBAAiB;AACxB,OAAO,iBAAiB;AACxB,OAAO,sBAAsB;AAC7B,OAAO,wBAAwB;AAC/B,OAAO,kCAAkC;AACzC,SAAS,2BAA2B;AAEpC,IAAM,iBAAiB,CAAC,MAAM;AAC9B,IAAM,eAAe,CAAC,MAAM;AAE5B,eAAsB,QAAsC;AAC1D,QAAM,cAAc,eAAe;AAAA,IAAK,CAAC,UACvC,oBAAoB,KAAK;AAAA,EAC3B;AACA,QAAM,cAAc,aAAa,KAAK,CAAC,UAAU,oBAAoB,KAAK,CAAC;AAE3E,QAAM,eAAoC,CAAC;AAE3C,MAAI,aAAa;AACf,UAAM,aAAa,MAAM,OAAO,0BAA0B,EAAE;AAAA,MAC1D,CAAC,MAAM,EAAE;AAAA,IACX;AAEA,iBAAa;AAAA,MACX;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA;AAAA,UAEP,cAAc;AAAA,QAChB;AAAA,QAEA,OAAO,WAAW,QAAQ,YAAY;AAAA,MACxC;AAAA,MACA;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,QACA,MAAM;AAAA,QACN,OAAO;AAAA,UACL,4BAA4B;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAkC,CAAC;AAEzC,MAAI,aAAa;AACf,eAAW,KAAK,mBAAmB,QAAQ,IAAI;AAAA,EACjD;AAEA,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,QACP,OAAO;AAAA,QAEP,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,MACE,OAAO,CAAC,8BAA8B;AAAA,MACtC,iBAAiB;AAAA,QACf,eAAe;AAAA,UACb,cAAc;AAAA,YACZ,KAAK;AAAA,UACP;AAAA,QACF;AAAA,QACA,YAAY;AAAA,MACd;AAAA,MACA,UAAU;AAAA,QACR,OAAO;AAAA,UACL,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,OAAO;AAAA,QACL,GAAG,YAAY,QAAQ,KAAK,YAAY;AAAA,QACxC,GAAG,YAAY,QAAQ,KAAK,aAAa,EAAE;AAAA,QAC3C,mBAAmB;AAAA,QACnB,8BAA8B;AAAA;AAAA,QAE9B,+BAA+B;AAAA,QAC/B,8BAA8B;AAAA,QAC9B,iCAAiC;AAAA,QACjC,uCAAuC;AAAA,UACrC;AAAA,UACA;AAAA,YACE,mBAAmB;AAAA,YACnB,iBAAiB;AAAA,UACnB;AAAA,QACF;AAAA,QACA,wBAAwB;AAAA,UACtB;AAAA,UACA;AAAA,YACE,wBAAwB;AAAA,UAC1B;AAAA,QACF;AAAA,QACA,4BAA4B;AAAA,MAC9B;AAAA,IACF;AAAA,IACA,GAAG,YAAY,QAAQ,kBAAkB;AAAA,IACzC,6BAA6B,QAAQ;AAAA,IACrC;AAAA,MACE,MAAM;AAAA,MACN,OAAO,CAAC,8BAA8B;AAAA,MACtC,OAAO;AAAA,QACL,oBAAoB;AAAA,QACpB,aAAa;AAAA,QACb,gCAAgC;AAAA,QAChC,oDAAoD;AAAA,QACpD,8BAA8B;AAAA,QAC9B,mCAAmC;AAAA,QACnC,oCAAoC;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AACF;;;ACxHA,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,gBAAgB;AACvB,SAAS,uBAAuB;AAEzB,IAAM,UAAU,OAAO;AAAA,EAC5B;AAAA,EACA;AACF,MAGoC;AAClC,QAAM,WAAW,MAAM,gBAAgB,QAAQ;AAC/C,QAAM,SAAS,MAAM,gBAAgB,MAAM;AAE3C,MAAI,YAAY,QAAQ;AACtB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,MAAM,gBAAgB,kBAAkB;AAE7D,QAAM,mBAAmB,eACpB;AAAA,IACC;AAAA,MACE,GAAG,WAAW,QAAQ,kBAAkB;AAAA,MACxC,OAAO;AAAA,MACP,OAAO;AAAA,QACL,GAAG,WAAW,QAAQ,kBAAkB,EAAE;AAAA,QAC1C,qCAAqC;AAAA,QACrC,6BAA6B;AAAA,QAC7B,wCAAwC;AAAA,QACxC,yCAAyC;AAAA,QACzC,kCAAkC;AAAA,QAClC,oCAAoC;AAAA,QACpC,sCAAsC;AAAA,QACtC,8BAA8B;AAAA,MAChC;AAAA,IACF;AAAA,EACF,IACA,CAAC;AAEL,QAAM,eAAe,WAChB;AAAA,IACC;AAAA,MACE,OAAO;AAAA,MACP,SAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,GAAG,OAAO,QAAQ,YAAY;AAAA,QAC9B,6BAA6B;AAAA,UAC3B;AAAA,UACA;AAAA,YACE,IAAI;AAAA,UACN;AAAA,QACF;AAAA,QACA,2BAA2B,CAAC,MAAM;AAAA,QAClC,0BAA0B,CAAC,OAAO;AAAA,QAClC,mCAAmC,CAAC,OAAO;AAAA,QAC3C,iCAAiC,CAAC,OAAO;AAAA,QACzC,qCAAqC,CAAC,MAAM;AAAA,QAC5C,2BAA2B,CAAC,OAAO;AAAA,QACnC,gCAAgC,CAAC,MAAM;AAAA,QACvC,8BAA8B,CAAC,MAAM;AAAA,QACrC,sBAAsB,CAAC,MAAM;AAAA,QAC7B,+BAA+B,CAAC,OAAO;AAAA,QACvC,oCAAoC,CAAC,OAAO;AAAA,QAC5C,iCAAiC,CAAC,MAAM;AAAA,QACxC,+BAA+B,CAAC,OAAO;AAAA,MACzC;AAAA,IACF;AAAA,EACF,IACA,CAAC;AAEL,QAAM,aAAa,SACd;AAAA,IACC;AAAA,MACE,OAAO;AAAA,MACP,SAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,GAAG,KAAK,QAAQ,YAAY;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,IACA,CAAC;AAEL,SAAO,CAAC,GAAG,kBAAkB,GAAG,cAAc,GAAG,UAAU;AAC7D;;;ACnFO,IAAM,cAAc,YAA0C;AAAA,EACnE,GAAG,KAAK;AAAA,EACR,GAAG,QAAQ;AAAA,EACX,GAAG,iBAAiB;AAAA,EACpB,GAAG,QAAQ,EAAE,qBAAqB,KAAK,CAAC;AAAA,EACxC,GAAI,MAAM,QAAQ;AAAA,IAChB,WAAW,CAAC,gBAAgB,eAAe;AAAA,IAC3C,qBAAqB,CAAC,gBAAgB,eAAe;AAAA,EACvD,CAAC;AAAA,EACD,GAAI,MAAM,MAAM;AAClB;","names":[]}
1
+ {"version":3,"sources":["../src/eslint/configs/a11y.ts","../src/eslint/configs/react.ts","../src/eslint/configs/testing.ts","../src/eslint/presets/react.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"@eslint/config-helpers\";\nimport jsxA11y from \"eslint-plugin-jsx-a11y\";\nimport globals from \"globals\";\n\nexport function a11y(): ConfigWithExtends[] {\n return [\n {\n files: [\"**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}\"],\n ...jsxA11y.flatConfigs.recommended,\n languageOptions: {\n ...jsxA11y.flatConfigs.recommended.languageOptions,\n globals: {\n ...globals.serviceworker,\n ...globals.browser,\n },\n },\n settings: {\n \"jsx-a11y\": {\n components: {\n Input: \"input\",\n Button: \"button\",\n Link: \"a\",\n Label: \"label\",\n Select: \"select\",\n Textarea: \"textarea\",\n },\n attributes: {\n for: [\"htmlFor\", \"for\"],\n },\n },\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"@eslint/config-helpers\";\nimport pluginQuery from \"@tanstack/eslint-plugin-query\";\nimport pluginReact from \"eslint-plugin-react\";\nimport pluginReactHooks from \"eslint-plugin-react-hooks\";\nimport pluginReactRefresh from \"eslint-plugin-react-refresh\";\nimport reactYouMightNotNeedAnEffect from \"eslint-plugin-react-you-might-not-need-an-effect\";\nimport { isPackageListedSync } from \"local-pkg\";\n\nconst nextJsPackages = [\"next\"];\nconst vitePackages = [\"vite\"];\n\nexport async function react(): Promise<ConfigWithExtends[]> {\n const isUsingNext = nextJsPackages.some((index) =>\n isPackageListedSync(index),\n );\n const isUsingVite = vitePackages.some((index) => isPackageListedSync(index));\n\n const nextjsConfig: ConfigWithExtends[] = [];\n\n if (isUsingNext) {\n const nextPlugin = await import(\"@next/eslint-plugin-next\").then(\n (d) => d.default,\n );\n\n nextjsConfig.push(\n {\n name: \"solvro/next/setup\",\n plugins: {\n // @ts-expect-error ???\n \"@next/next\": nextPlugin,\n },\n\n rules: nextPlugin.configs.recommended.rules,\n },\n {\n files: [\n \"**/app/**/{page,loading,layout,template,error,not-found,unauthorized,forbidden,default,robots,sitemap}.{js,jsx,ts,tsx}\",\n \"**/pages/**/*.{js,jsx,ts,tsx}\",\n ],\n name: \"solvro/next/pages\",\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n );\n }\n\n const viteConfig: ConfigWithExtends[] = [];\n\n if (isUsingVite) {\n viteConfig.push(pluginReactRefresh.configs.vite);\n }\n\n return [\n {\n name: \"solvro/react/setup\",\n plugins: {\n react: pluginReact,\n\n \"react-hooks\": pluginReactHooks,\n },\n },\n ...nextjsConfig,\n ...viteConfig,\n {\n files: [\"**/*.{js,jsx,mjs,cjs,ts,tsx}\"],\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n },\n sourceType: \"module\",\n },\n settings: {\n react: {\n version: \"detect\",\n },\n },\n name: \"solvro/react/rules\",\n rules: {\n ...pluginReact.configs.flat.recommended.rules,\n ...pluginReact.configs.flat[\"jsx-runtime\"].rules,\n \"react/no-danger\": \"warn\",\n \"react/jsx-no-leaked-render\": \"warn\",\n // recommended rules react-hooks\n \"react-hooks/exhaustive-deps\": \"warn\",\n \"react-hooks/rules-of-hooks\": \"error\",\n \"react/jsx-no-useless-fragment\": \"error\",\n \"react/function-component-definition\": [\n \"error\",\n {\n unnamedComponents: \"arrow-function\",\n namedComponents: \"function-declaration\",\n },\n ],\n \"react/hook-use-state\": [\n \"error\",\n {\n allowDestructuredState: true,\n },\n ],\n \"react/no-array-index-key\": \"warn\",\n },\n },\n ...pluginQuery.configs[\"flat/recommended\"],\n reactYouMightNotNeedAnEffect.configs.recommended,\n {\n name: \"solvro/react/disables\",\n files: [\"**/components/ui/*.{jsx,tsx}\"],\n rules: {\n \"react/prop-types\": \"off\",\n \"no-shadow\": \"off\",\n \"@typescript-eslint/no-shadow\": \"off\",\n \"@typescript-eslint/restrict-template-expressions\": \"off\",\n \"unicorn/no-document-cookie\": \"off\",\n \"@typescript-eslint/no-redeclare\": \"off\",\n \"@typescript-eslint/no-deprecated\": \"off\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"@eslint/config-helpers\";\nimport vitest from \"@vitest/eslint-plugin\";\nimport jest from \"eslint-plugin-jest\";\nimport playwright from \"eslint-plugin-playwright\";\nimport { isPackageListed } from \"local-pkg\";\n\nexport const testing = async ({\n testFiles,\n playwrightTestFiles,\n}: {\n testFiles: string[];\n playwrightTestFiles: string[];\n}): Promise<ConfigWithExtends[]> => {\n const isVitest = await isPackageListed(\"vitest\");\n const isJest = await isPackageListed(\"jest\");\n\n if (isVitest && isJest) {\n throw new Error(\n \"Both Vitest and Jest are installed: please uninstall one of them.\",\n );\n }\n\n const isPlaywright = await isPackageListed(\"@playwright/test\");\n\n const playwrightConfig = isPlaywright\n ? ([\n {\n ...playwright.configs[\"flat/recommended\"],\n files: playwrightTestFiles,\n rules: {\n ...playwright.configs[\"flat/recommended\"].rules,\n \"playwright/prefer-native-locators\": \"warn\",\n \"playwright/prefer-locator\": \"warn\",\n \"playwright/prefer-comparison-matcher\": \"warn\",\n \"playwright/require-top-level-describe\": \"error\",\n \"playwright/prefer-hooks-on-top\": \"warn\",\n \"playwright/prefer-hooks-in-order\": \"warn\",\n \"playwright/prefer-equality-matcher\": \"error\",\n \"playwright/no-raw-locators\": \"warn\",\n },\n },\n ] as const satisfies ConfigWithExtends[])\n : [];\n\n const vitestConfig = isVitest\n ? ([\n {\n files: testFiles,\n plugins: {\n vitest,\n },\n rules: {\n ...vitest.configs.recommended.rules,\n \"vitest/consistent-test-it\": [\n \"error\",\n {\n fn: \"it\",\n },\n ],\n \"vitest/no-focused-tests\": [\"warn\"],\n \"vitest/no-mocks-import\": [\"error\"],\n \"vitest/no-test-return-statement\": [\"error\"],\n \"vitest/prefer-lowercase-title\": [\"error\"],\n \"vitest/require-top-level-describe\": [\"warn\"],\n \"vitest/prefer-vi-mocked\": [\"error\"],\n \"vitest/prefer-hooks-in-order\": [\"warn\"],\n \"vitest/prefer-hooks-on-top\": [\"warn\"],\n \"vitest/prefer-each\": [\"warn\"],\n \"vitest/no-conditional-tests\": [\"error\"],\n \"vitest/prefer-comparison-matcher\": [\"error\"],\n \"vitest/no-conditional-in-test\": [\"warn\"],\n \"vitest/consistent-vitest-vi\": [\"error\"],\n \"@typescript-eslint/unbound-method\": \"off\",\n \"vitest/unbound-method\": [\"error\"],\n },\n },\n ] as const satisfies ConfigWithExtends[])\n : [];\n\n const jestConfig = isJest\n ? ([\n {\n files: testFiles,\n plugins: {\n jest,\n },\n rules: {\n ...jest.configs.recommended.rules,\n },\n },\n ] as const)\n : [];\n\n return [...playwrightConfig, ...vitestConfig, ...jestConfig];\n};\n","import type { ConfigWithExtends } from \"@eslint/config-helpers\";\n\nimport { a11y } from \"../configs/a11y\";\nimport { imports } from \"../configs/imports\";\nimport { react } from \"../configs/react\";\nimport { testing } from \"../configs/testing\";\nimport { typescriptStrict } from \"../configs/typescript-strict\";\nimport { unicorn } from \"../configs/unicorn\";\n\nexport const reactPreset = async (): Promise<ConfigWithExtends[]> => [\n ...a11y(),\n ...unicorn(),\n ...typescriptStrict(),\n ...imports({ forbidDefaultExport: true }),\n ...(await testing({\n testFiles: [\"**/*.test.ts\", \"**/*.test.tsx\"],\n playwrightTestFiles: [\"**/*.spec.ts\", \"**/*.spec.tsx\"],\n })),\n ...(await react()),\n];\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solvro/config",
3
- "version": "2.4.0-beta.1",
3
+ "version": "3.0.0-beta.2",
4
4
  "description": "Solvro's engineering style guide",
5
5
  "keywords": [
6
6
  "eslint",