Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"mode": "pre",
"tag": "alpha",
"initialVersions": {
"counter-dom-commonjs": "0.9.2",
"counter-dom-esm": "0.9.2",
"counter-dom-tiny": "0.9.2",
"counter-dom-ts": "0.9.2",
"counter-preact-ts": "0.9.2",
"counter-react-js": "0.9.2",
"counter-react-ts": "0.9.2",
"counter-react-ts-edit": "0.9.2",
"counter-react-ts-edit-context": "0.9.2",
"fast": "0.9.2",
"tiny": "0.9.2",
"@watchable/nevermore": "1.0.0",
"@watchable/queue": "1.0.0",
"@watchable/store": "1.0.2",
"@watchable/store-edit": "1.0.2",
"@watchable/store-follow": "1.0.2",
"@watchable/store-react": "1.0.2",
"@watchable/unpromise": "1.0.2"
},
"changesets": []
}
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20.13.1
24.15.0
10 changes: 5 additions & 5 deletions apps/counter-dom-commonjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
"@watchable/store-follow": "1.0.2"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^25.0.7",
"@vitejs/plugin-legacy": "^5.4.0",
"vite": "^5.2.11",
"vite-plugin-commonjs": "^0.10.1",
"wireit": "^0.14.4"
"@rollup/plugin-commonjs": "^29.0.2",
"@vitejs/plugin-legacy": "^8.0.1",
"vite": "^8.0.11",
"vite-plugin-commonjs": "^0.10.4",
Comment on lines +29 to +32

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the Vite 8 / Rolldown migration guide for CJS plugin compatibility notes
echo "=== vite.config for counter-dom-commonjs ==="
fd 'vite.config' --search-path apps/counter-dom-commonjs --exec cat {}

Repository: cefn/watchable

Length of output: 587


🌐 Web query:

Vite 8 Rolldown commonjs plugin compatibility @rollup/plugin-commonjs``

💡 Result:

In Vite 8, which uses Rolldown as the bundler instead of Rollup, CommonJS support is natively handled by Rolldown itself, replacing the previous reliance on @rollup/plugin-commonjs[1][2]. You do not need to install or configure @rollup/plugin-commonjs separately, as Rolldown provides built-in compatibility with the Rollup plugin API and handles CJS interop directly[3][1][4]. The Vite configuration option build.commonjsOptions, which passed options to @rollup/plugin-commonjs in earlier versions, is now deprecated and a no-op[5][6]. Rolldown enforces stricter and more consistent CommonJS semantics, particularly for default export resolution from CJS modules[7][6]. If you encounter runtime issues with CJS default imports (e.g., "X is not a function"), use the temporary legacy.inconsistentCjsInterop: true option in your vite.config to restore Vite 7 behavior while fixing upstream packages[7][6][8]. Rolldown maintains high compatibility with existing Vite/Rollup plugins, so most work out of the box, but test production builds thoroughly due to potential differences in chunk order or strict CJS handling[3][7]. For official details, see Vite's Rolldown integration guide and migration docs[3][1][6].

Citations:


🏁 Script executed:

#!/bin/bash
# Check the package.json to understand dependencies and build setup
echo "=== Package.json for counter-dom-commonjs ==="
cat apps/counter-dom-commonjs/package.json

echo -e "\n=== Check for any build output or test configuration ==="
fd -e json -e js -e ts . apps/counter-dom-commonjs --search-path | head -20

Repository: cefn/watchable

Length of output: 1859


🏁 Script executed:

#!/bin/bash
# Check for build output, test results, or CI logs
echo "=== Looking for dist or build output ==="
find apps/counter-dom-commonjs -name dist -o -name build 2>/dev/null | head -10

echo -e "\n=== Check if there are any test files or CI workflows ==="
find . -path "*counter-dom-commonjs*" -type f \( -name "*.test.*" -o -name "*.spec.*" \) 2>/dev/null

echo -e "\n=== Check vite.config file type to ensure it's typescript ==="
file apps/counter-dom-commonjs/vite.config.ts 2>/dev/null || ls -la apps/counter-dom-commonjs/vite.config* 2>/dev/null

Repository: cefn/watchable

Length of output: 310


🏁 Script executed:

#!/bin/bash
# Check if there are any known issues or comments about CJS plugin conflicts
echo "=== Search for any comments or issues about CJS plugins in the project ==="
rg -i "commonjs|cjs|rolldown" apps/counter-dom-commonjs/ -A 2 -B 2 --type=ts --type=js

Repository: cefn/watchable

Length of output: 1208


Remove redundant CommonJS plugins for Vite 8/Rolldown compatibility

Vite 8 uses Rolldown as its native bundler, which includes built-in CommonJS support. Both @rollup/plugin-commonjs and vite-plugin-commonjs are unnecessary and risk double-transformation or conflicts with Rolldown's native CJS handling. The build.commonjsOptions configuration option is also deprecated in Vite 8.

Remove both @rollup/plugin-commonjs and vite-plugin-commonjs from vite.config.ts and the corresponding package.json entries. Test the production build to ensure correct output, particularly for default imports from CommonJS modules. If runtime issues occur with CJS default exports, use legacy.inconsistentCjsInterop: true as a temporary workaround.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/counter-dom-commonjs/package.json` around lines 29 - 32, Remove the
redundant CommonJS plugins and deprecated config: delete the two dependencies
"@rollup/plugin-commonjs" and "vite-plugin-commonjs" from package.json and
remove any imports and usage of them in vite.config.ts (search for plugin names
or references to rollupPluginCommonjs/vitePluginCommonjs), and remove any
build.commonjsOptions configuration; after that, run a production build and if
you encounter CJS default-import runtime issues enable
legacy.inconsistentCjsInterop: true under the legacy config in vite.config.ts as
a temporary workaround.

"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
6 changes: 3 additions & 3 deletions apps/counter-dom-esm/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@
"@watchable/store-follow": "1.0.2"
},
"devDependencies": {
"@vitejs/plugin-legacy": "^5.4.0",
"vite": "^5.2.11",
"wireit": "^0.14.4"
"@vitejs/plugin-legacy": "^8.0.1",
"vite": "^8.0.11",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
4 changes: 2 additions & 2 deletions apps/counter-dom-tiny/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
"@watchable/store": "1.0.2"
},
"devDependencies": {
"vite": "^5.2.11",
"wireit": "^0.14.4"
"vite": "^8.0.11",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
8 changes: 4 additions & 4 deletions apps/counter-dom-ts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@
"@watchable/store-follow": "1.0.2"
},
"devDependencies": {
"@vitejs/plugin-legacy": "^5.4.0",
"typescript": "^5.4.5",
"vite": "^5.2.11",
"wireit": "^0.14.4"
"@vitejs/plugin-legacy": "^8.0.1",
"typescript": "^6.0.3",
"vite": "^8.0.11",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
22 changes: 11 additions & 11 deletions apps/counter-preact-ts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,18 @@
"react-dom": "npm:@preact/compat"
},
"devDependencies": {
"@playwright/test": "^1.32.3",
"@preact/preset-vite": "^2.5.0",
"@types/react": "^18.0.34",
"@types/react-dom": "^18.0.11",
"@vitejs/plugin-legacy": "^5.2.0",
"@playwright/test": "^1.59.1",
"@preact/preset-vite": "^2.10.5",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
Comment on lines +38 to +39

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

For the currently used @preact/compatversion in this repo, is React 19 and@types/react@19 officially supported? Please include any caveats for TypeScript projects using vite + preact/compat.

💡 Result:

The currently used @preact/compat version aligns with React 18.3.2 (latest release Feb 26, 2026 [1]), not React 19. React 19 is not officially fully supported by preact/compat in stable Preact 10.x releases. Partial compatibility exists via a dedicated preact/compat/react-19 entry point for some APIs like react/server and react/client [2][3], but features like use(promise) [4], useActionState [3], and <Activity /> [5] lack full support or are open issues. Preact v11 (in development, no stable release by 2026-05-07 [3]) aims for better React 19 alignment. For TypeScript projects using Vite + preact/compat: - Do not use @types/react or @types/react-dom alongside preact/compat; types are intentionally incompatible due to runtime differences like VNode structure [6]. - Configure tsconfig.json paths to alias React imports to preact/compat for TypeScript resolution (Vite handles runtime aliases via @preact/preset-vite [7][8]): { "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "preact", "paths": { "react": ["./node_modules/preact/compat"], "react-dom": ["./node_modules/preact/compat"], "react-dom/*": ["./node_modules/preact/compat/*"] } } } - skipLibCheck: true may be needed if third-party React libs pull in @types/react [9]. - Use npm install react@npm:@preact/compat react-dom@npm:@preact/compat`` for peer deps [1].

Citations:


🏁 Script executed:

# Check the `@preact/compat` version and full context
cd apps/counter-preact-ts && cat -n package.json | head -50

Repository: cefn/watchable

Length of output: 2012


🏁 Script executed:

# Check if tsconfig.json exists and its type resolution setup
find apps/counter-preact-ts -name "tsconfig.json" -exec cat -n {} +

Repository: cefn/watchable

Length of output: 740


🏁 Script executed:

# Check if there are any other type configuration files
fd -e "tsconfig" -e "vite.config" apps/counter-preact-ts

Repository: cefn/watchable

Length of output: 452


🏁 Script executed:

# Verify `@preact/compat` version in lock file or check dependencies
cat apps/counter-preact-ts/package-lock.json | grep -A 5 '"@preact/compat"' | head -20

Repository: cefn/watchable

Length of output: 131


🏁 Script executed:

# Check if there are any actual type errors or if jsxImportSource is needed
grep -r "jsxImportSource\|jsx.*import" apps/counter-preact-ts/src 2>/dev/null | head -5

Repository: cefn/watchable

Length of output: 40


🏁 Script executed:

# Check what lock file exists (pnpm, yarn, etc)
ls -la | grep -E "pnpm-lock|yarn.lock|package-lock"

Repository: cefn/watchable

Length of output: 40


🏁 Script executed:

# Check if `@preact/compat` is explicitly listed or inherited from workspaces
grep -r "@preact/compat\|preact" apps/counter-preact-ts/package.json

Repository: cefn/watchable

Length of output: 437


🏁 Script executed:

# Check vite config to see how it handles preact
cat apps/counter-preact-ts/vite.config.ts 2>/dev/null || cat apps/counter-preact-ts/vite.config.js 2>/dev/null || echo "No vite config found"

Repository: cefn/watchable

Length of output: 629


Remove @types/react and @types/react-dom or configure TypeScript path aliases for preact/compat types.

Using @types/react@^19 and @types/react-dom@^19 alongside npm:@preact/compat`` creates a type/runtime mismatch. These type packages are incompatible with preact/compat due to structural differences (e.g., VNode representation). Additionally, React 19 is not officially supported by preact/compat in stable releases.

Fix: Either:

  1. Remove @types/react and @types/react-dom from devDependencies, or
  2. Add tsconfig.json path aliases:
{
  "compilerOptions": {
    "jsxImportSource": "preact",
    "paths": {
      "react": ["./node_modules/preact/compat"],
      "react-dom": ["./node_modules/preact/compat"],
      "react-dom/*": ["./node_modules/preact/compat/*"]
    }
  }
}

Option 1 is simpler for this preact-compat setup.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/counter-preact-ts/package.json` around lines 38 - 39, The devDependency
entries "@types/react" and "@types/react-dom" in package.json conflict with the
project's use of "npm:`@preact/compat`" and must be removed or aliased; either
delete the "@types/react" and "@types/react-dom" devDependencies, or add
TypeScript path aliases in tsconfig.json (under compilerOptions.paths) mapping
"react", "react-dom", and "react-dom/*" to preact/compat to ensure types resolve
to preact/compat instead of the React typings.

"@vitejs/plugin-legacy": "^8.0.1",
"npm-run-all": "^4.1.5",
"playwright-chromium": "^1.32.3",
"typescript": "^5.4.5",
"vite": "^5.2.11",
"vitest": "^1.6.0",
"wait-on": "^7.0.1",
"wireit": "^0.14.4"
"playwright-chromium": "^1.59.1",
"typescript": "^6.0.3",
"vite": "^8.0.11",
"vitest": "^4.1.5",
"wait-on": "^9.0.5",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
18 changes: 9 additions & 9 deletions apps/counter-react-js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@
"dependencies": {
"@watchable/store": "1.0.2",
"@watchable/store-react": "1.0.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"vite-plugin-react": "^4.0.1"
},
"devDependencies": {
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"@vitejs/plugin-legacy": "^5.4.0",
"@vitejs/plugin-react": "^4.2.1",
"vite": "^5.2.11",
"vitest": "^1.6.0",
"wireit": "^0.14.4"
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-legacy": "^8.0.1",
"@vitejs/plugin-react": "^6.0.1",
"vite": "^8.0.11",
"vitest": "^4.1.5",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
28 changes: 14 additions & 14 deletions apps/counter-react-ts-edit-context/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,23 @@
"@watchable/store": "1.0.2",
"@watchable/store-edit": "1.0.2",
"@watchable/store-react": "1.0.2",
"immer": "^10.0.1",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"immer": "^11.1.7",
"react": "^19.2.6",
"react-dom": "^19.2.6"
},
"devDependencies": {
"@playwright/test": "^1.32.3",
"@types/react": "^18.0.34",
"@types/react-dom": "^18.0.11",
"@vitejs/plugin-legacy": "^5.4.0",
"@vitejs/plugin-react": "^4.2.1",
"@playwright/test": "^1.59.1",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-legacy": "^8.0.1",
"@vitejs/plugin-react": "^6.0.1",
"npm-run-all": "^4.1.5",
"playwright-chromium": "^1.32.3",
"typescript": "^5.4.5",
"vite": "^5.2.11",
"vitest": "^1.6.0",
"wait-on": "^7.0.1",
"wireit": "^0.14.4"
"playwright-chromium": "^1.59.1",
"typescript": "^6.0.3",
"vite": "^8.0.11",
"vitest": "^4.1.5",
"wait-on": "^9.0.5",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
28 changes: 14 additions & 14 deletions apps/counter-react-ts-edit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,23 @@
"@watchable/store": "1.0.2",
"@watchable/store-edit": "1.0.2",
"@watchable/store-react": "1.0.2",
"immer": "^10.0.1",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"immer": "^11.1.7",
"react": "^19.2.6",
"react-dom": "^19.2.6"
},
"devDependencies": {
"@playwright/test": "^1.32.3",
"@types/react": "^18.0.34",
"@types/react-dom": "^18.0.11",
"@vitejs/plugin-legacy": "^5.4.0",
"@vitejs/plugin-react": "^4.2.1",
"@playwright/test": "^1.59.1",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-legacy": "^8.0.1",
"@vitejs/plugin-react": "^6.0.1",
"npm-run-all": "^4.1.5",
"playwright-chromium": "^1.32.3",
"typescript": "^5.4.5",
"vite": "^5.2.11",
"vitest": "^1.6.0",
"wait-on": "^7.0.1",
"wireit": "^0.14.4"
"playwright-chromium": "^1.59.1",
"typescript": "^6.0.3",
"vite": "^8.0.11",
"vitest": "^4.1.5",
"wait-on": "^9.0.5",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
26 changes: 13 additions & 13 deletions apps/counter-react-ts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,22 @@
"dependencies": {
"@watchable/store": "1.0.2",
"@watchable/store-react": "1.0.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react": "^19.2.6",
"react-dom": "^19.2.6"
},
"devDependencies": {
"@playwright/test": "^1.32.3",
"@types/react": "^18.0.34",
"@types/react-dom": "^18.0.11",
"@vitejs/plugin-legacy": "^5.4.0",
"@vitejs/plugin-react": "^4.2.1",
"@playwright/test": "^1.59.1",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-legacy": "^8.0.1",
"@vitejs/plugin-react": "^6.0.1",
"npm-run-all": "^4.1.5",
"playwright-chromium": "^1.32.3",
"typescript": "^5.4.5",
"vite": "^5.2.11",
"vitest": "^1.6.0",
"wait-on": "^7.0.1",
"wireit": "^0.14.4"
"playwright-chromium": "^1.59.1",
"typescript": "^6.0.3",
"vite": "^8.0.11",
"vitest": "^4.1.5",
"wait-on": "^9.0.5",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
8 changes: 4 additions & 4 deletions apps/fast/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@
"@watchable/store": "1.0.2"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^25.0.7",
"@vitejs/plugin-react": "^4.2.1",
"vite": "^5.2.11",
"wireit": "^0.14.4"
"@rollup/plugin-commonjs": "^29.0.2",
"@vitejs/plugin-react": "^6.0.1",
"vite": "^8.0.11",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
4 changes: 2 additions & 2 deletions apps/tiny/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
"@watchable/store": "1.0.2"
},
"devDependencies": {
"vite": "^5.2.11",
"wireit": "^0.14.4"
"vite": "^8.0.11",
"wireit": "^0.14.12"
},
"wireit": {
"build": {
Expand Down
73 changes: 10 additions & 63 deletions eslint.config-ts.mjs
Original file line number Diff line number Diff line change
@@ -1,70 +1,17 @@
// @ts-check
import eslint from "@eslint/js";
import tseslint from "typescript-eslint";
import pluginReact from "eslint-plugin-react";

import { FlatCompat } from "@eslint/eslintrc";
import js from "@eslint/js";
import path from "path";
import { fileURLToPath } from "url";

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const compat = new FlatCompat({
baseDirectory: __dirname,
resolvePluginsRelativeTo: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});

export default [
...compat.extends(
"plugin:react/recommended",
"standard-with-typescript",
"prettier"
),
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.strict,
pluginReact.configs.flat.recommended,
pluginReact.configs.flat["jsx-runtime"],
{
files: ["src/**/*.ts", "src/**/*.tsx"],
settings: {
react: {
version: "detect",
},
},
rules: {
"@typescript-eslint/semi": [2, "always"],
"@typescript-eslint/non-nullable-type-assertion-style": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-empty-interface": [
"error",
{
allowSingleExtends: true,
},
],
"@typescript-eslint/no-unused-vars": [
"error",
{
varsIgnorePattern: "^_",
argsIgnorePattern: "^_",
},
],
"@typescript-eslint/no-invalid-void-type": [
"error",
{
allowAsThisParameter: true,
},
],
},
},
{
ignores: [
"eslint.config.mjs",
"vite.config.ts",
"vite.config.ts*",
"test/examples/*.js",
"**/*.test.ts",
"dist",
"coverage",
".wireit",
],
},
];
}
);
Comment on lines +5 to +17

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Missing ignores block: ESLint will attempt to lint dist/ and coverage/ directories

The previous FlatCompat-based config had an explicit ignores array for generated output directories. ESLint 9 flat config only ignores **/node_modules/** and .git/** by default — dist/ and coverage/ are not excluded. Running eslint . from any package will now try to parse compiled output files, causing parse errors (e.g., CJS wrappers, minified bundles) and likely breaking wireit lint tasks.

🛠️ Proposed fix
 import eslint from "@eslint/js";
 import tseslint from "typescript-eslint";
 import pluginReact from "eslint-plugin-react";

 export default tseslint.config(
+  {
+    ignores: ["**/dist/**", "**/coverage/**", "**/playwright-report/**"],
+  },
   eslint.configs.recommended,
   tseslint.configs.strict,
   pluginReact.configs.flat.recommended,
   pluginReact.configs.flat["jsx-runtime"],
   {
     settings: {
       react: {
         version: "detect",
       },
     },
   }
 );
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export default tseslint.config(
eslint.configs.recommended,
tseslint.configs.strict,
pluginReact.configs.flat.recommended,
pluginReact.configs.flat["jsx-runtime"],
{
files: ["src/**/*.ts", "src/**/*.tsx"],
settings: {
react: {
version: "detect",
},
},
rules: {
"@typescript-eslint/semi": [2, "always"],
"@typescript-eslint/non-nullable-type-assertion-style": "off",
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-empty-interface": [
"error",
{
allowSingleExtends: true,
},
],
"@typescript-eslint/no-unused-vars": [
"error",
{
varsIgnorePattern: "^_",
argsIgnorePattern: "^_",
},
],
"@typescript-eslint/no-invalid-void-type": [
"error",
{
allowAsThisParameter: true,
},
],
},
},
{
ignores: [
"eslint.config.mjs",
"vite.config.ts",
"vite.config.ts*",
"test/examples/*.js",
"**/*.test.ts",
"dist",
"coverage",
".wireit",
],
},
];
}
);
export default tseslint.config(
{
ignores: ["**/dist/**", "**/coverage/**", "**/playwright-report/**"],
},
eslint.configs.recommended,
tseslint.configs.strict,
pluginReact.configs.flat.recommended,
pluginReact.configs.flat["jsx-runtime"],
{
settings: {
react: {
version: "detect",
},
},
}
);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@eslint.config-ts.mjs` around lines 5 - 17, Add an "ignores" block to the
top-level tseslint.config call so ESLint doesn't attempt to lint generated
output; update the config passed to tseslint.config (the object after
pluginReact.configs.flat["jsx-runtime"]) to include an ignores array containing
at least "dist/**" and "coverage/**" (so the exported config from
tseslint.config and the settings.react.version="detect" remain unchanged while
ESLint skips those generated directories).

Loading
Loading