diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 2e79c684ed2..50931da0a41 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -6,7 +6,8 @@ * @crazywoola @laipz8200 -# ESLint suppression file is maintained by autofix.ci pruning. +# Lint bulk suppression baselines. +/oxlint-suppressions.json /eslint-suppressions.json # CODEOWNERS file diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml index f6005b6f845..8afb89ad432 100644 --- a/.github/workflows/autofix.yml +++ b/.github/workflows/autofix.yml @@ -48,7 +48,10 @@ jobs: pnpm-workspace.yaml .nvmrc vite.config.ts + lint.config.ts eslint.config.mjs + oxlint-suppressions.json + eslint-suppressions.json .vscode/** .github/workflows/autofix.yml .github/workflows/style.yml @@ -166,10 +169,15 @@ jobs: if: github.event_name != 'merge_group' && steps.frontend-contract-changes.outputs.any_changed == 'true' run: pnpm --dir packages/contracts gen-api-contract - - name: ESLint autofix + - name: Oxlint autofix if: github.event_name != 'merge_group' && steps.web-changes.outputs.any_changed == 'true' run: | - vp exec eslint --fix --concurrency=2 --prune-suppressions --quiet || true + pnpm lint:oxlint:fix --prune-suppressions --quiet || true + + - name: ESLint fallback autofix + if: github.event_name != 'merge_group' && steps.web-changes.outputs.any_changed == 'true' + run: | + pnpm lint:eslint:fix --quiet || true - name: Format frontend files if: github.event_name != 'merge_group' && (steps.web-changes.outputs.any_changed == 'true' || steps.frontend-contract-changes.outputs.any_changed == 'true') diff --git a/.github/workflows/cli-tests.yml b/.github/workflows/cli-tests.yml index f74e371acdd..3638f79cae6 100644 --- a/.github/workflows/cli-tests.yml +++ b/.github/workflows/cli-tests.yml @@ -46,7 +46,7 @@ jobs: if: matrix.os == 'depot-ubuntu-24.04' run: scripts/release-validate-manifest.sh - - name: CI pipeline (typecheck, lint, coverage, build) + - name: CI pipeline (tree, coverage, build) run: pnpm run ci - name: Report coverage diff --git a/.github/workflows/main-ci.yml b/.github/workflows/main-ci.yml index 8fc0d6f3f63..924d825f0fd 100644 --- a/.github/workflows/main-ci.yml +++ b/.github/workflows/main-ci.yml @@ -75,7 +75,7 @@ jobs: - 'package.json' - 'pnpm-lock.yaml' - 'pnpm-workspace.yaml' - - 'eslint.config.mjs' + - 'lint.config.ts' - '.npmrc' - '.nvmrc' - '.github/workflows/cli-tests.yml' diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index 3922d7ca740..2e495235785 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -163,7 +163,10 @@ jobs: pnpm-workspace.yaml .nvmrc vite.config.ts + lint.config.ts eslint.config.mjs + oxlint-suppressions.json + eslint-suppressions.json .vscode/** .github/workflows/autofix.yml .github/workflows/style.yml @@ -177,30 +180,13 @@ jobs: if: steps.changed-files.outputs.any_changed == 'true' run: vp fmt --check - - name: Restore ESLint cache - if: steps.changed-files.outputs.any_changed == 'true' - id: eslint-cache-restore - uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: .eslintcache - key: ${{ runner.os }}-eslint-${{ hashFiles('pnpm-lock.yaml', 'eslint.config.mjs', 'packages/dify-ui/eslint.config.mjs', 'web/eslint.config.mjs', 'web/eslint.constants.mjs', 'web/plugins/eslint/**') }}-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-eslint-${{ hashFiles('pnpm-lock.yaml', 'eslint.config.mjs', 'packages/dify-ui/eslint.config.mjs', 'web/eslint.config.mjs', 'web/eslint.constants.mjs', 'web/plugins/eslint/**') }}- - - name: Style check if: steps.changed-files.outputs.any_changed == 'true' - run: vp run lint:ci + run: pnpm -w lint:ci - name: Type check if: steps.changed-files.outputs.any_changed == 'true' - run: vp run type-check - - - name: Save ESLint cache - if: steps.changed-files.outputs.any_changed == 'true' && success() && steps.eslint-cache-restore.outputs.cache-hit != 'true' - uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 - with: - path: .eslintcache - key: ${{ steps.eslint-cache-restore.outputs.cache-primary-key }} + run: pnpm -w type-check superlinter: name: SuperLinter diff --git a/.gitignore b/.gitignore index 8a4418e847f..fcec9e4721c 100644 --- a/.gitignore +++ b/.gitignore @@ -214,6 +214,7 @@ sdks/python-client/dify_client.egg-info api/.vscode # vscode Code History Extension .history +.eslintcache .idea/ @@ -258,7 +259,5 @@ scripts/stress-test/reports/ # Code Agent Folder .qoder/* .context/ -.eslintcache - # Vitest local reports web/.vitest-reports/ diff --git a/.vscode/settings.example.json b/.vscode/settings.example.json index 9a33096c9ad..9e24a249c8e 100644 --- a/.vscode/settings.example.json +++ b/.vscode/settings.example.json @@ -28,20 +28,10 @@ "oxc.fmt.configPath": "./vite.config.ts", // Lint fix + "eslint.useFlatConfig": true, + "eslint.validate": ["json", "jsonc", "markdown", "yaml", "toml"], "editor.codeActionsOnSave": { + "source.fixAll.oxc": "explicit", "source.fixAll.eslint": "explicit" - }, - - // Enable ESLint for linted languages - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - "markdown", - "json", - "jsonc", - "yaml", - "toml" - ] + } } diff --git a/AGENTS.md b/AGENTS.md index 1cdd4a67fa0..5815b7cf76c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -31,7 +31,7 @@ The codebase is split into: ## Language Style - **Python**: Keep type hints on functions and attributes, and implement relevant special methods (e.g., `__repr__`, `__str__`). Prefer `TypedDict` over `dict` or `Mapping` for type safety and better code documentation. -- **TypeScript**: Use the strict config, format with `vp fmt`, run ESLint for code-quality checks and fixes, run `pnpm type-check`, and avoid `any` types. +- **TypeScript**: Use the strict config, format with `vp fmt`, run `pnpm lint` for Oxlint code checks plus ESLint non-code checks, run `pnpm type-check`, and avoid `any` types. ## General Practices diff --git a/cli/AGENTS.md b/cli/AGENTS.md index 212a6329d30..99f4f24922e 100644 --- a/cli/AGENTS.md +++ b/cli/AGENTS.md @@ -1,6 +1,6 @@ # AGENTS.md — difyctl (TypeScript CLI) -TypeScript port of difyctl. Stack: custom CLI framework (`src/framework/`), Node 22+, ESM, ky for HTTP, Vitest, Vite+ formatting, and ESLint via `@antfu/eslint-config`. +TypeScript port of difyctl. Stack: custom CLI framework (`src/framework/`), Node 22+, ESM, ky for HTTP, Vitest, and Vite+ formatting and linting. > Architecture patterns, scaffolding recipe, printer chain, strategy pattern, testing conventions, anti-patterns: see **[`ARD.md`]**. @@ -57,9 +57,9 @@ pnpm install # one-time pnpm dev [args...] # run CLI from source (no -- separator) pnpm test # vitest pnpm test:coverage # with coverage -pnpm type-check # tsc, no emit -pnpm lint # eslint -pnpm lint:fix # eslint semantic fixes +pnpm -w type-check # repository-wide type check +pnpm -w lint # repository-wide lint +pnpm -w lint:fix # repository-wide lint fixes vp fmt # format with Oxfmt pnpm build # production bundle (vp pack) pnpm tree:gen # regenerate src/commands/tree.ts (registry) @@ -72,7 +72,7 @@ Release binaries (5 platform targets, Bun-compiled) are produced by `pnpm build: - Behavior tests run against real Hono mock at `test/fixtures/dify-mock/`. No `nock`, `msw`, or `fetchMock` — every test exercises real HTTP. - Test files co-located: `foo.test.ts` next to `foo.ts`. -- Type-check, lint, full test suite must be green before any commit. +- Repository-wide type-check and lint, plus the full test suite, must be green before any commit. ## Spec docs (`docs/specs/`) @@ -91,7 +91,7 @@ Behavior contracts. Living tree — amended in place, no version subfolders. Do not modify in passing: - `test/fixtures/dify-mock/` public surface (endpoints, JSON shapes, status codes, scenario names) — that's the dify-api contract. -- `bin/`, `scripts/`, `Makefile`, `eslint.config.js`, `tsconfig*.json`, `package.json` (unless the change is required by the task). +- `bin/`, `scripts/`, `Makefile`, `lint.config.ts`, `tsconfig*.json`, `package.json` (unless the change is required by the task). ## Commits diff --git a/cli/ARD.md b/cli/ARD.md index 9a4d3d5fee2..9c4d1cc17fc 100644 --- a/cli/ARD.md +++ b/cli/ARD.md @@ -301,19 +301,19 @@ expect(JSON.parse(out).workspaces).toHaveLength(2) ## Scripts -| Command | When to run | -| ----------------------- | -------------------------------------------------- | -| `pnpm dev [args]` | Run CLI from source during dev | -| `pnpm test` | Full vitest suite — run before every commit | -| `pnpm test:coverage` | Coverage report | -| `pnpm type-check` | `tsc --noEmit` — catches type errors without build | -| `pnpm lint` | ESLint check | -| `pnpm lint:fix` | ESLint code-quality fixes | -| `vp fmt` | Oxfmt formatting and import sorting | -| `pnpm build` | Production bundle (`vp pack`) | -| `pnpm tree:gen` | Regenerate `src/commands/tree.ts` (registry) | -| `pnpm tree:check` | Verify `tree.ts` matches the filesystem | -| `pnpm build:bin` | Cross-compile standalone binaries via Bun (CI) | +| Command | When to run | +| ----------------------- | ---------------------------------------------- | +| `pnpm dev [args]` | Run CLI from source during dev | +| `pnpm test` | Full vitest suite — run before every commit | +| `pnpm test:coverage` | Coverage report | +| `pnpm -w type-check` | Repository-wide TypeScript type check | +| `pnpm -w lint` | Repository-wide Oxlint and ESLint checks | +| `pnpm -w lint:fix` | Repository-wide Oxlint and ESLint fixes | +| `vp fmt` | Oxfmt formatting and import sorting | +| `pnpm build` | Production bundle (`vp pack`) | +| `pnpm tree:gen` | Regenerate `src/commands/tree.ts` (registry) | +| `pnpm tree:check` | Verify `tree.ts` matches the filesystem | +| `pnpm build:bin` | Cross-compile standalone binaries via Bun (CI) | **`pnpm tree:gen` rule:** run after adding, removing, renaming any command. The generated `tree.ts` is the runtime command registry — stale tree causes commands to be invisible at runtime. (Runs implicitly via `prebuild`/`predev`/`pretest`.) @@ -323,7 +323,7 @@ expect(JSON.parse(out).workspaces).toHaveLength(2) ## Lint rules that catch contributors -Repo runs `@antfu/eslint-config` for code-quality rules and Vite+ Oxfmt for formatting. +The repository runs Vite+ Oxlint as the primary code-quality linter, an explicit ESLint config for unsupported cases, and Vite+ Oxfmt for formatting. The fallback config does not depend on the Antfu ESLint config. | Rule | What it catches | | ---------------------------------- | -------------------------------------------------- | @@ -333,7 +333,7 @@ Repo runs `@antfu/eslint-config` for code-quality rules and Vite+ Oxfmt for form | `unicorn/no-new-array` | Use `Array.from({ length: n })` not `new Array(n)` | | `noUncheckedIndexedAccess` (tsc) | `arr[i]` is `T \| undefined`; guard before use | -Run `pnpm lint:fix` for ESLint fixes, then `vp fmt` so Oxfmt produces the final layout. +Run `pnpm -w lint:fix` for Oxlint and ESLint fixes, then `vp fmt` so Oxfmt produces the final layout. --- diff --git a/cli/eslint.config.mjs b/cli/eslint.config.mjs deleted file mode 100644 index c5b1d372db2..00000000000 --- a/cli/eslint.config.mjs +++ /dev/null @@ -1,100 +0,0 @@ -// @ts-check - -import antfu, { GLOB_MARKDOWN } from '@antfu/eslint-config' -import md from 'eslint-markdown' -import markdownPreferences from 'eslint-plugin-markdown-preferences' - -export default antfu( - { - stylistic: false, - perfectionist: { - overrides: { - 'perfectionist/sort-imports': 'off', - }, - }, - jsonc: { - overrides: { - 'jsonc/space-unary-ops': 'off', - }, - }, - yaml: { - overrides: { - 'yaml/block-mapping': 'off', - 'yaml/block-sequence': 'off', - 'yaml/plain-scalar': 'off', - }, - }, - toml: { - overrides: { - 'toml/comma-style': 'off', - 'toml/no-space-dots': 'off', - }, - }, - ignores: (original) => ['context/**', 'docs/**', 'dist/**', 'coverage/**', ...original], - typescript: { - overrides: { - 'ts/consistent-type-definitions': ['error', 'type'], - 'ts/no-explicit-any': 'error', - 'ts/no-redeclare': 'off', - }, - erasableOnly: true, - }, - test: { - overrides: { - 'test/prefer-lowercase-title': 'off', - }, - }, - e18e: false, - }, - { - files: [GLOB_MARKDOWN], - plugins: { - md, - 'markdown-preferences': markdownPreferences, - }, - rules: { - 'md/no-url-trailing-slash': 'error', - 'markdown-preferences/definitions-last': 'error', - 'markdown-preferences/prefer-link-reference-definitions': [ - 'error', - { - minLinks: 1, - }, - ], - 'markdown-preferences/sort-definitions': 'error', - }, - }, - { - rules: { - 'node/prefer-global/process': 'off', - 'unicorn/number-literal-case': 'off', - }, - }, - { - files: ['bin/**'], - rules: { - 'antfu/no-top-level-await': 'off', - }, - }, - { - files: ['src/**/*.ts'], - rules: { - 'no-restricted-imports': [ - 'error', - { - patterns: [ - { - group: ['../**', './*/**', '..'], - message: - 'Use the @/ (or @test/) alias for parent-directory or nested relative imports; keep ./ only for same-folder siblings.', - }, - ], - }, - ], - }, - }, -).override('antfu/sort/package-json', { - rules: { - 'jsonc/sort-keys': 'off', - }, -}) diff --git a/cli/package.json b/cli/package.json index 00b325ee535..f1e0be53a78 100644 --- a/cli/package.json +++ b/cli/package.json @@ -23,15 +23,13 @@ "test:e2e": "vp test --config vitest.e2e.config.ts", "test:e2e:smoke": "vp test --config vitest.e2e.config.ts --testNamePattern \"\\[P0\\]\"", "test:e2e:local": "DIFY_E2E_MODE=local vp test --config vitest.e2e.config.ts", - "lint": "eslint", - "lint:fix": "eslint --fix", "type-check": "tsc", "tree:gen": "bun scripts/generate-command-tree.ts", "tree:check": "bun scripts/generate-command-tree.ts --check", "prebuild": "pnpm tree:gen", "predev": "pnpm tree:gen", "pretest": "pnpm tree:gen", - "ci": "pnpm tree:check && pnpm type-check && pnpm lint && pnpm test:coverage && pnpm build", + "ci": "pnpm tree:check && pnpm test:coverage && pnpm build", "clean": "rm -rf dist node_modules/.cache", "version:info": "bun scripts/print-buildinfo.ts", "build:bin": "scripts/release-build.sh" @@ -60,7 +58,6 @@ "@types/node": "catalog:", "@typescript/native": "catalog:", "@vitest/coverage-v8": "catalog:", - "eslint": "catalog:", "hono": "catalog:", "typescript": "catalog:", "vite": "catalog:", diff --git a/cli/scripts/install-cli.test.ts b/cli/scripts/install-cli.test.ts index 28db6bcc213..3ab80203df1 100644 --- a/cli/scripts/install-cli.test.ts +++ b/cli/scripts/install-cli.test.ts @@ -26,7 +26,7 @@ function assetVersion(name: string, target: string): string { // offline. Routes by URL; release bodies come from env (TAG__>), // the latest release from LATEST_JSON, the listing from LIST_JSON. A missing // fixture returns 22 to mimic `curl -f` on a 4xx. -/* eslint-disable no-template-curly-in-string -- shell parameter expansions, not JS template literals */ +/* oxlint-disable no-template-curly-in-string -- shell parameter expansions, not JS template literals */ const FETCH_STUB = [ 'fetch_json() {', ' case "$1" in', @@ -42,7 +42,7 @@ const FETCH_STUB = [ ' esac', '}', ].join('\n') -/* eslint-enable no-template-curly-in-string */ +/* oxlint-enable no-template-curly-in-string */ function runLib( program: string, diff --git a/cli/src/framework/run.test.ts b/cli/src/framework/run.test.ts index b309172fea4..845cf38f48f 100644 --- a/cli/src/framework/run.test.ts +++ b/cli/src/framework/run.test.ts @@ -241,7 +241,7 @@ describe('run() catch routing', () => { it('wraps a non-Error throw via String() coercion into unknown form', async () => { class Throwing extends Command { async run(_argv: string[]) { - // eslint-disable-next-line no-throw-literal + // oxlint-disable-next-line no-throw-literal throw 'plain string' } } diff --git a/cli/test/e2e/suites/output/json-yaml-output.e2e.ts b/cli/test/e2e/suites/output/json-yaml-output.e2e.ts index 284c284cf68..58c54963cfa 100644 --- a/cli/test/e2e/suites/output/json-yaml-output.e2e.ts +++ b/cli/test/e2e/suites/output/json-yaml-output.e2e.ts @@ -29,7 +29,7 @@ */ import type { AuthFixture } from '../../helpers/cli.js' -import { afterEach, beforeEach, describe, expect, it, inject } from 'vitest' +import { afterEach, beforeEach, describe, expect, inject, it } from 'vitest' import { assertErrorEnvelope, assertExitCode, @@ -39,7 +39,7 @@ import { assertPipeFriendlyJson, } from '../../helpers/assert.js' import { withAuthFixture, withTempConfig } from '../../helpers/cli.js' -import { loadE2EEnv, resolveEnv } from '../../setup/env.js' +import { resolveEnv } from '../../setup/env.js' // @ts-expect-error — see test/e2e/helpers/vitest-context.ts for explanation const caps = inject('e2eCapabilities') as import('../../setup/env.js').E2ECapabilities diff --git a/cli/test/e2e/suites/output/table-output.e2e.ts b/cli/test/e2e/suites/output/table-output.e2e.ts index fbcec743d1a..0ddfbc270b5 100644 --- a/cli/test/e2e/suites/output/table-output.e2e.ts +++ b/cli/test/e2e/suites/output/table-output.e2e.ts @@ -38,7 +38,7 @@ */ import type { AuthFixture } from '../../helpers/cli.js' -import { afterEach, beforeEach, describe, expect, it, inject } from 'vitest' +import { afterEach, beforeEach, describe, expect, inject, it } from 'vitest' import { assertExitCode, assertNoAnsi } from '../../helpers/assert.js' import { withAuthFixture } from '../../helpers/cli.js' import { resolveEnv } from '../../setup/env.js' @@ -147,7 +147,7 @@ describe('E2E / table output — header and column format (spec 5.1–5.19)', () assertExitCode(result, 0) // No NUL, BEL, BS, VT, FF, SO–US, DEL bytes that would corrupt a pipe // eslint-disable-next-line no-control-regex - expect(result.stdout).not.toMatch(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/) + expect(result.stdout).not.toMatch(/[\x00-\x08\v\f\x0E-\x1F\x7F]/) }) it('[P0] 5.16 default table output written to a file contains no control characters', async () => { @@ -156,7 +156,7 @@ describe('E2E / table output — header and column format (spec 5.1–5.19)', () assertExitCode(result, 0) assertNoAnsi(result.stdout, 'stdout') // eslint-disable-next-line no-control-regex - expect(result.stdout).not.toMatch(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/) + expect(result.stdout).not.toMatch(/[\x00-\x08\v\f\x0E-\x1F\x7F]/) }) // ── 5.25 — Performance ──────────────────────────────────────────────────── diff --git a/eslint.config.mjs b/eslint.config.mjs index c6ab41a0936..76a3f5c015c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,82 +1,410 @@ // @ts-check -import antfu, { GLOB_MARKDOWN } from '@antfu/eslint-config' +import markdown from '@eslint/markdown' import md from 'eslint-markdown' +import hyoban from 'eslint-plugin-hyoban' +import jsonc from 'eslint-plugin-jsonc' import markdownPreferences from 'eslint-plugin-markdown-preferences' +import pnpm from 'eslint-plugin-pnpm' +import toml from 'eslint-plugin-toml' +import yml from 'eslint-plugin-yml' +import { defineConfig, globalIgnores } from 'eslint/config' +import dify from './web/plugins/eslint/index.js' -const GENERATED_IGNORES = [ - '**/storybook-static/', - '**/.next/', - '**/.vinext/', - 'web/next/', - 'web/next-env.d.ts', - '**/dist/', - '**/coverage/', - 'e2e/.auth/', - 'e2e/cucumber-report/', +const codeFiles = '**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}' + +/** + * Migration tradeoff: ESLint is intentionally restricted to non-code files. + * + * Disabled code-only checks: + * - Core: `no-control-regex`, `no-octal`, `no-octal-escape`, `no-undef-init`, + * `no-unreachable-loop`, and `one-var`. + * - JavaScript: `dot-notation`. + * - Declarations: the former 223-rule snapshot and CLI `no-restricted-imports` override. + * - Dify UI: the three `better-tailwindcss` rules and stricter unused-directive severity. + * + * These checks are documentation only and do not appear in the executable config below. + */ + +const tsconfigCompilerOptionsOrder = [ + 'incremental', + 'composite', + 'tsBuildInfoFile', + 'disableSourceOfProjectReferenceRedirect', + 'disableSolutionSearching', + 'disableReferencedProjectLoad', + 'target', + 'jsx', + 'jsxFactory', + 'jsxFragmentFactory', + 'jsxImportSource', + 'lib', + 'moduleDetection', + 'noLib', + 'reactNamespace', + 'useDefineForClassFields', + 'emitDecoratorMetadata', + 'experimentalDecorators', + 'libReplacement', + 'baseUrl', + 'rootDir', + 'rootDirs', + 'customConditions', + 'module', + 'moduleResolution', + 'moduleSuffixes', + 'noResolve', + 'paths', + 'resolveJsonModule', + 'resolvePackageJsonExports', + 'resolvePackageJsonImports', + 'typeRoots', + 'types', + 'allowArbitraryExtensions', + 'allowImportingTsExtensions', + 'allowUmdGlobalAccess', + 'allowJs', + 'checkJs', + 'maxNodeModuleJsDepth', + 'strict', + 'strictBindCallApply', + 'strictFunctionTypes', + 'strictNullChecks', + 'strictPropertyInitialization', + 'allowUnreachableCode', + 'allowUnusedLabels', + 'alwaysStrict', + 'exactOptionalPropertyTypes', + 'noFallthroughCasesInSwitch', + 'noImplicitAny', + 'noImplicitOverride', + 'noImplicitReturns', + 'noImplicitThis', + 'noPropertyAccessFromIndexSignature', + 'noUncheckedIndexedAccess', + 'noUnusedLocals', + 'noUnusedParameters', + 'useUnknownInCatchVariables', + 'declaration', + 'declarationDir', + 'declarationMap', + 'downlevelIteration', + 'emitBOM', + 'emitDeclarationOnly', + 'importHelpers', + 'importsNotUsedAsValues', + 'inlineSourceMap', + 'inlineSources', + 'mapRoot', + 'newLine', + 'noEmit', + 'noEmitHelpers', + 'noEmitOnError', + 'outDir', + 'outFile', + 'preserveConstEnums', + 'preserveValueImports', + 'removeComments', + 'sourceMap', + 'sourceRoot', + 'stripInternal', + 'allowSyntheticDefaultImports', + 'esModuleInterop', + 'forceConsistentCasingInFileNames', + 'isolatedDeclarations', + 'isolatedModules', + 'preserveSymlinks', + 'verbatimModuleSyntax', + 'erasableSyntaxOnly', + 'skipDefaultLibCheck', + 'skipLibCheck', ] -export default antfu( - { - stylistic: false, - perfectionist: { - overrides: { - 'perfectionist/sort-imports': 'off', - }, - }, - jsonc: { - overrides: { - 'jsonc/space-unary-ops': 'off', - }, - }, - yaml: { - overrides: { - 'yaml/block-mapping': 'off', - 'yaml/block-sequence': 'off', - 'yaml/plain-scalar': 'off', - }, - }, - toml: { - overrides: { - 'toml/comma-style': 'off', - 'toml/no-space-dots': 'off', - }, - }, - ignores: (original) => [ - '**', - '!packages/**', - '!web/**', - '!e2e/**', +const pnpmWorkspaceOrder = [ + 'cacheDir', + 'catalogMode', + 'cleanupUnusedCatalogs', + 'dedupeDirectDeps', + 'deployAllFiles', + 'enablePrePostScripts', + 'engineStrict', + 'extendNodePath', + 'hoist', + 'hoistPattern', + 'hoistWorkspacePackages', + 'ignoreCompatibilityDb', + 'ignoreDepScripts', + 'ignoreScripts', + 'ignoreWorkspaceRootCheck', + 'managePackageManagerVersions', + 'minimumReleaseAge', + 'minimumReleaseAgeExclude', + 'modulesDir', + 'nodeLinker', + 'nodeVersion', + 'optimisticRepeatInstall', + 'packageManagerStrict', + 'packageManagerStrictVersion', + 'preferSymlinkedExecutables', + 'preferWorkspacePackages', + 'publicHoistPattern', + 'registrySupportsTimeField', + 'requiredScripts', + 'resolutionMode', + 'savePrefix', + 'scriptShell', + 'shamefullyHoist', + 'shellEmulator', + 'stateDir', + 'supportedArchitectures', + 'symlink', + 'tag', + 'trustPolicy', + 'trustPolicyExclude', + 'updateNotifier', + 'packages', + 'overrides', + 'patchedDependencies', + 'catalog', + 'catalogs', + 'allowedDeprecatedVersions', + 'allowNonAppliedPatches', + 'configDependencies', + 'ignoredBuiltDependencies', + 'ignoredOptionalDependencies', + 'neverBuiltDependencies', + 'onlyBuiltDependencies', + 'onlyBuiltDependenciesFile', + 'packageExtensions', + 'peerDependencyRules', +] + +export default defineConfig([ + globalIgnores( + [ + '**/*', + '!cli/', + '!cli/**/*', + '!e2e/', + '!e2e/**/*', + '!packages/', + '!packages/**/*', + '!sdks/', + '!sdks/nodejs-client/', + '!sdks/nodejs-client/src/', + '!sdks/nodejs-client/src/**/*', + '!sdks/nodejs-client/tests/', + '!sdks/nodejs-client/tests/**/*', + '!web/', + '!web/**/*', '!eslint.config.mjs', + '!lint.config.ts', '!package.json', '!pnpm-workspace.yaml', '!vite.config.ts', - ...GENERATED_IGNORES, - ...original, ], - typescript: { - overrides: { - 'ts/consistent-type-definitions': ['error', 'type'], - 'ts/no-explicit-any': 'error', - 'ts/no-redeclare': 'off', - }, - erasableOnly: true, + 'Project lint scope', + ), + globalIgnores([codeFiles], 'Migration tradeoff: code files are handled by Oxlint only'), + globalIgnores( + [ + '**/.git/**', + '**/node_modules/**', + 'cli/context/**', + 'cli/coverage/**', + 'cli/dist/**', + 'cli/docs/**', + '**/.next/**', + '**/.vinext/**', + '**/coverage/**', + '**/dist/**', + '**/storybook-static/**', + 'e2e/.auth/**', + 'e2e/cucumber-report/**', + 'packages/contracts/**', + 'web/next/**', + 'web/next-env.d.ts', + 'web/public/**', + 'web/types/doc-paths.ts', + ], + 'Generated and external files', + ), + { + linterOptions: { + reportUnusedDisableDirectives: 'warn', }, - test: { - overrides: { - 'test/prefer-lowercase-title': 'off', - }, - }, - e18e: false, }, { - files: [GLOB_MARKDOWN], + files: ['**/*.{json,json5,jsonc}'], + language: 'jsonc/x', plugins: { - md, - 'markdown-preferences': markdownPreferences, + jsonc, }, rules: { - 'md/no-url-trailing-slash': 'error', + 'no-unused-expressions': 'off', + 'no-unused-vars': 'off', + strict: 'off', + 'jsonc/no-bigint-literals': 'error', + 'jsonc/no-binary-expression': 'error', + 'jsonc/no-binary-numeric-literals': 'error', + 'jsonc/no-dupe-keys': 'error', + 'jsonc/no-escape-sequence-in-identifier': 'error', + 'jsonc/no-floating-decimal': 'error', + 'jsonc/no-hexadecimal-numeric-literals': 'error', + 'jsonc/no-infinity': 'error', + 'jsonc/no-multi-str': 'error', + 'jsonc/no-nan': 'error', + 'jsonc/no-number-props': 'error', + 'jsonc/no-numeric-separators': 'error', + 'jsonc/no-octal': 'error', + 'jsonc/no-octal-escape': 'error', + 'jsonc/no-octal-numeric-literals': 'error', + 'jsonc/no-parenthesized': 'error', + 'jsonc/no-plus-sign': 'error', + 'jsonc/no-regexp-literals': 'error', + 'jsonc/no-sparse-arrays': 'error', + 'jsonc/no-template-literals': 'error', + 'jsonc/no-undefined-value': 'error', + 'jsonc/no-unicode-codepoint-escapes': 'error', + 'jsonc/no-useless-escape': 'error', + 'jsonc/valid-json-number': 'error', + 'jsonc/vue-custom-block/no-parsing-error': 'error', + }, + }, + { + files: ['**/package.json'], + rules: { + 'jsonc/sort-array-values': [ + 'error', + { + order: { type: 'asc' }, + pathPattern: '^files$', + }, + ], + }, + }, + { + files: ['**/[jt]sconfig.json', '**/[jt]sconfig.*.json'], + rules: { + 'jsonc/sort-keys': [ + 'error', + { + order: ['extends', 'compilerOptions', 'references', 'files', 'include', 'exclude'], + pathPattern: '^$', + }, + { + order: tsconfigCompilerOptionsOrder, + pathPattern: '^compilerOptions$', + }, + ], + }, + }, + { + files: ['package.json', '**/package.json'], + plugins: { + pnpm, + }, + rules: { + 'pnpm/json-enforce-catalog': [ + 'error', + { + autofix: true, + ignores: ['@types/vscode'], + }, + ], + 'pnpm/json-prefer-workspace-settings': ['error', { autofix: true }], + 'pnpm/json-valid-catalog': ['error', { autofix: true }], + }, + }, + { + files: ['**/*.{yml,yaml}'], + language: 'yml/yaml', + plugins: { + yml, + }, + rules: { + 'no-irregular-whitespace': 'off', + 'no-unused-vars': 'off', + 'spaced-comment': 'off', + 'yml/no-empty-key': 'error', + 'yml/no-empty-sequence-entry': 'error', + 'yml/no-irregular-whitespace': 'error', + 'yml/vue-custom-block/no-parsing-error': 'error', + }, + }, + { + files: ['pnpm-workspace.yaml'], + plugins: { + pnpm, + }, + rules: { + 'pnpm/yaml-enforce-settings': [ + 'error', + { + settings: { + shellEmulator: true, + trustPolicy: 'no-downgrade', + }, + }, + ], + 'pnpm/yaml-no-duplicate-catalog-item': 'error', + 'pnpm/yaml-no-unused-catalog-item': 'error', + 'yml/sort-keys': [ + 'error', + { + order: pnpmWorkspaceOrder, + pathPattern: '^$', + }, + { + order: { type: 'asc' }, + pathPattern: '.*', + }, + ], + }, + }, + { + files: ['**/*.toml'], + language: 'toml/toml', + plugins: { + toml, + }, + rules: { + 'no-irregular-whitespace': 'off', + 'spaced-comment': 'off', + 'toml/keys-order': 'error', + 'toml/no-unreadable-number-separator': 'error', + 'toml/precision-of-fractional-seconds': 'error', + 'toml/precision-of-integer': 'error', + 'toml/tables-order': 'error', + 'toml/vue-custom-block/no-parsing-error': 'error', + }, + }, + { + files: ['**/*.md'], + language: 'markdown/gfm', + plugins: { + markdown, + 'markdown-preferences': markdownPreferences, + md, + }, + rules: { + 'markdown/fenced-code-language': 'off', + 'markdown/heading-increment': 'error', + 'markdown/no-duplicate-definitions': 'error', + 'markdown/no-empty-definitions': 'error', + 'markdown/no-empty-images': 'error', + 'markdown/no-empty-links': 'error', + 'markdown/no-invalid-label-refs': 'error', + 'markdown/no-missing-atx-heading-space': 'error', + 'markdown/no-missing-label-refs': 'off', + 'markdown/no-missing-link-fragments': 'error', + 'markdown/no-multiple-h1': 'error', + 'markdown/no-reference-like-urls': 'error', + 'markdown/no-reversed-media-syntax': 'error', + 'markdown/no-space-in-emphasis': 'error', + 'markdown/no-unused-definitions': 'error', + 'markdown/require-alt-text': 'error', + 'markdown/table-column-count': 'error', 'markdown-preferences/definitions-last': 'error', 'markdown-preferences/prefer-link-reference-definitions': [ 'error', @@ -85,16 +413,20 @@ export default antfu( }, ], 'markdown-preferences/sort-definitions': 'error', + 'md/no-url-trailing-slash': 'error', }, }, { + files: ['web/i18n/**/*.json'], + plugins: { + dify, + hyoban, + }, rules: { - 'node/prefer-global/process': 'off', - 'unicorn/number-literal-case': 'off', + 'dify/consistent-placeholders': 'error', + 'dify/no-extra-keys': 'error', + 'hyoban/i18n-flat-key': 'error', + 'jsonc/sort-keys': 'error', }, }, -).override('antfu/sort/package-json', { - rules: { - 'jsonc/sort-keys': 'off', - }, -}) +]) diff --git a/lint.config.ts b/lint.config.ts new file mode 100644 index 00000000000..74f3c100a83 --- /dev/null +++ b/lint.config.ts @@ -0,0 +1,1653 @@ +import type { OxlintConfig } from 'vite-plus/lint' +import path from 'node:path' + +const rootDir = import.meta.dirname +const webDir = path.resolve(rootDir, 'web') +const webTailwindEntry = path.resolve(webDir, 'app/styles/globals.css') +const difyUiPackageJson = path.resolve(rootDir, 'packages/dify-ui/package.json') + +/** + * Oxlint equivalent of the ESLint configurations that were active before the migration. + * Keep rules explicit so changes in upstream presets do not silently alter the lint baseline. + */ +export const lintConfig = { + categories: { + correctness: 'off', + }, + env: { + builtin: true, + es2026: true, + browser: true, + node: true, + }, + ignorePatterns: [ + '.agents/**', + '.claude/**', + '.devcontainer/**', + '.github/**', + '.vscode/**', + 'api/**', + 'cli/context/**', + 'cli/coverage/**', + 'cli/dist/**', + 'cli/docs/**', + 'dify-agent/**', + 'docker/**', + 'docs/**', + 'scripts/**', + 'sdks/php-client/**', + 'sdks/python-client/**', + '**/.next/**', + '**/.vinext/**', + '**/coverage/**', + '**/dist/**', + '**/*.d.{ts,cts,mts}', + '**/storybook-static/**', + 'e2e/.auth/**', + 'e2e/cucumber-report/**', + 'packages/contracts/**', + 'web/next/**', + 'web/next-env.d.ts', + 'web/public/**', + 'web/types/doc-paths.ts', + ], + plugins: ['import', 'unicorn', 'node', 'jsdoc', 'typescript', 'vitest', 'react', 'jsx-a11y'], + jsPlugins: [ + 'eslint-plugin-antfu', + { + name: 'eslint-comments', + specifier: '@eslint-community/eslint-plugin-eslint-comments', + }, + 'eslint-plugin-command', + 'eslint-plugin-perfectionist', + 'eslint-plugin-regexp', + 'eslint-plugin-erasable-syntax-only', + { + name: 'eslint-react', + specifier: '@eslint-react/eslint-plugin', + }, + { + name: 'node-js', + specifier: 'eslint-plugin-n', + }, + { + name: 'jsdoc-js', + specifier: 'eslint-plugin-jsdoc', + }, + { + name: 'jsx-a11y-js', + specifier: 'eslint-plugin-jsx-a11y', + }, + 'eslint-plugin-no-barrel-files', + '@tanstack/eslint-plugin-query', + 'eslint-plugin-storybook', + { + name: 'tailwindcss', + specifier: 'eslint-plugin-better-tailwindcss', + }, + 'eslint-plugin-hyoban', + ], + options: { + reportUnusedDisableDirectives: 'warn', + respectEslintDisableDirectives: false, + typeAware: true, + typeCheck: false, + }, + settings: { + 'better-tailwindcss': { + cwd: webDir, + entryPoint: webTailwindEntry, + }, + 'react-x': { + additionalStateHooks: '/^use\\w*State(?:s)?|useAtom$/u', + }, + }, + rules: { + 'accessor-pairs': [ + 'error', + { + enforceForClassMembers: true, + setWithoutGet: true, + }, + ], + 'antfu/no-top-level-await': 'error', + 'array-callback-return': 'error', + 'block-scoped-var': 'error', + 'constructor-super': 'error', + 'default-case-last': 'error', + eqeqeq: ['error', 'smart'], + 'new-cap': [ + 'error', + { + capIsNew: false, + newIsCap: true, + properties: true, + }, + ], + 'no-alert': 'error', + 'no-array-constructor': 'error', + 'no-async-promise-executor': 'error', + 'no-caller': 'error', + 'no-case-declarations': 'error', + 'no-class-assign': 'error', + 'no-compare-neg-zero': 'error', + 'no-cond-assign': ['error', 'always'], + 'no-console': [ + 'error', + { + allow: ['warn', 'error'], + }, + ], + 'no-const-assign': 'error', + 'no-control-regex': 'off', + 'no-debugger': 'error', + 'no-delete-var': 'error', + 'no-dupe-class-members': 'error', + 'no-dupe-keys': 'error', + 'no-duplicate-case': 'error', + 'no-empty': [ + 'error', + { + allowEmptyCatch: true, + }, + ], + 'no-empty-pattern': 'error', + 'no-eval': 'error', + 'no-ex-assign': 'error', + 'no-extend-native': 'error', + 'no-extra-bind': 'error', + 'no-extra-boolean-cast': 'error', + 'no-fallthrough': 'error', + 'no-func-assign': 'error', + 'no-global-assign': 'error', + 'no-implied-eval': 'error', + 'no-import-assign': 'error', + 'no-irregular-whitespace': 'error', + 'no-iterator': 'error', + 'no-labels': [ + 'error', + { + allowLoop: false, + allowSwitch: false, + }, + ], + 'no-lone-blocks': 'error', + 'no-loss-of-precision': 'error', + 'no-misleading-character-class': 'error', + 'no-multi-str': 'error', + 'no-new': 'error', + 'no-new-func': 'error', + 'no-new-native-nonconstructor': 'error', + 'no-new-wrappers': 'error', + 'no-obj-calls': 'error', + 'no-proto': 'error', + 'no-prototype-builtins': 'error', + 'no-redeclare': [ + 'error', + { + builtinGlobals: false, + }, + ], + 'no-regex-spaces': 'error', + 'no-restricted-globals': [ + 'error', + { + message: 'Use `globalThis` instead.', + name: 'global', + }, + { + message: 'Use `globalThis` instead.', + name: 'self', + }, + ], + 'no-restricted-properties': [ + 'error', + { + message: 'Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.', + property: '__proto__', + }, + { + message: 'Use `Object.defineProperty` instead.', + property: '__defineGetter__', + }, + { + message: 'Use `Object.defineProperty` instead.', + property: '__defineSetter__', + }, + { + message: 'Use `Object.getOwnPropertyDescriptor` instead.', + property: '__lookupGetter__', + }, + { + message: 'Use `Object.getOwnPropertyDescriptor` instead.', + property: '__lookupSetter__', + }, + ], + 'no-self-assign': [ + 'error', + { + props: true, + }, + ], + 'no-self-compare': 'error', + 'no-sequences': 'error', + 'no-shadow-restricted-names': 'error', + 'no-sparse-arrays': 'error', + 'no-template-curly-in-string': 'error', + 'no-this-before-super': 'error', + 'no-throw-literal': 'error', + 'no-unexpected-multiline': 'error', + 'no-unmodified-loop-condition': 'error', + 'no-unneeded-ternary': [ + 'error', + { + defaultAssignment: false, + }, + ], + 'no-unreachable': 'error', + 'no-unsafe-finally': 'error', + 'no-unsafe-negation': 'error', + 'no-unused-expressions': [ + 'error', + { + allowShortCircuit: true, + allowTaggedTemplates: true, + allowTernary: true, + }, + ], + 'no-unused-vars': [ + 'error', + { + args: 'after-used', + argsIgnorePattern: '^_', + caughtErrors: 'none', + fix: { + imports: 'safe-fix', + variables: 'off', + }, + ignoreRestSiblings: true, + vars: 'all', + varsIgnorePattern: '^_', + }, + ], + 'no-use-before-define': [ + 'error', + { + classes: false, + functions: false, + variables: true, + }, + ], + 'no-useless-call': 'error', + 'no-useless-catch': 'error', + 'no-useless-computed-key': 'error', + 'no-useless-constructor': 'error', + 'no-useless-rename': 'error', + 'no-useless-return': 'error', + 'no-var': 'error', + 'no-with': 'error', + 'object-shorthand': [ + 'error', + 'always', + { + avoidQuotes: true, + ignoreConstructors: false, + }, + ], + 'prefer-arrow-callback': [ + 'error', + { + allowNamedFunctions: false, + allowUnboundThis: true, + }, + ], + 'prefer-const': [ + 'error', + { + destructuring: 'all', + ignoreReadBeforeAssign: true, + }, + ], + 'prefer-exponentiation-operator': 'error', + 'prefer-promise-reject-errors': 'error', + 'prefer-regex-literals': [ + 'error', + { + disallowRedundantWrapping: true, + }, + ], + 'prefer-rest-params': 'error', + 'prefer-spread': 'error', + 'prefer-template': 'error', + 'symbol-description': 'error', + 'unicode-bom': ['error', 'never'], + 'use-isnan': [ + 'error', + { + enforceForIndexOf: true, + enforceForSwitchCase: true, + }, + ], + 'valid-typeof': [ + 'error', + { + requireStringLiterals: true, + }, + ], + 'vars-on-top': 'error', + yoda: ['error', 'never'], + 'eslint-comments/no-aggregating-enable': 'error', + 'eslint-comments/no-duplicate-disable': 'error', + 'eslint-comments/no-unlimited-disable': 'error', + 'eslint-comments/no-unused-enable': 'error', + 'command/command': 'error', + 'perfectionist/sort-exports': [ + 'error', + { + order: 'asc', + type: 'natural', + }, + ], + 'perfectionist/sort-named-exports': [ + 'error', + { + order: 'asc', + type: 'natural', + }, + ], + 'perfectionist/sort-named-imports': [ + 'error', + { + order: 'asc', + type: 'natural', + }, + ], + 'antfu/import-dedupe': 'error', + 'antfu/no-import-dist': 'error', + 'antfu/no-import-node-modules-by-path': 'error', + 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'], + 'import/first': 'error', + 'import/no-duplicates': 'error', + 'import/no-mutable-exports': 'error', + 'import/no-named-default': 'error', + 'erasable-syntax-only/enums': 'error', + 'erasable-syntax-only/import-aliases': 'error', + 'erasable-syntax-only/namespaces': 'error', + 'erasable-syntax-only/parameter-properties': 'error', + 'regexp/confusing-quantifier': 'warn', + 'regexp/control-character-escape': 'error', + 'regexp/match-any': 'error', + 'regexp/negation': 'error', + 'regexp/no-contradiction-with-assertion': 'error', + 'regexp/no-dupe-characters-character-class': 'error', + 'regexp/no-dupe-disjunctions': 'error', + 'regexp/no-empty-alternative': 'warn', + 'regexp/no-empty-capturing-group': 'error', + 'regexp/no-empty-character-class': 'error', + 'regexp/no-empty-group': 'error', + 'regexp/no-empty-lookarounds-assertion': 'error', + 'regexp/no-empty-string-literal': 'error', + 'regexp/no-escape-backspace': 'error', + 'regexp/no-extra-lookaround-assertions': 'error', + 'regexp/no-invalid-regexp': 'error', + 'regexp/no-invisible-character': 'error', + 'regexp/no-lazy-ends': 'warn', + 'regexp/no-legacy-features': 'error', + 'regexp/no-misleading-capturing-group': 'error', + 'regexp/no-misleading-unicode-character': 'error', + 'regexp/no-missing-g-flag': 'error', + 'regexp/no-non-standard-flag': 'error', + 'regexp/no-obscure-range': 'error', + 'regexp/no-optional-assertion': 'error', + 'regexp/no-potentially-useless-backreference': 'warn', + 'regexp/no-super-linear-backtracking': 'error', + 'regexp/no-trivially-nested-assertion': 'error', + 'regexp/no-trivially-nested-quantifier': 'error', + 'regexp/no-unused-capturing-group': 'error', + 'regexp/no-useless-assertions': 'error', + 'regexp/no-useless-backreference': 'error', + 'regexp/no-useless-character-class': 'error', + 'regexp/no-useless-dollar-replacements': 'error', + 'regexp/no-useless-escape': 'error', + 'regexp/no-useless-flag': 'warn', + 'regexp/no-useless-lazy': 'error', + 'regexp/no-useless-non-capturing-group': 'error', + 'regexp/no-useless-quantifier': 'error', + 'regexp/no-useless-range': 'error', + 'regexp/no-useless-set-operand': 'error', + 'regexp/no-useless-string-literal': 'error', + 'regexp/no-useless-two-nums-quantifier': 'error', + 'regexp/no-zero-quantifier': 'error', + 'regexp/optimal-lookaround-quantifier': 'warn', + 'regexp/optimal-quantifier-concatenation': 'error', + 'regexp/prefer-character-class': 'error', + 'regexp/prefer-d': 'error', + 'regexp/prefer-plus-quantifier': 'error', + 'regexp/prefer-predefined-assertion': 'error', + 'regexp/prefer-question-quantifier': 'error', + 'regexp/prefer-range': 'error', + 'regexp/prefer-set-operation': 'error', + 'regexp/prefer-star-quantifier': 'error', + 'regexp/prefer-unicode-codepoint-escapes': 'error', + 'regexp/prefer-w': 'error', + 'regexp/simplify-set-operations': 'error', + 'regexp/sort-flags': 'error', + 'regexp/strict': 'error', + 'regexp/use-ignore-case': 'error', + 'no-undef': 'error', + }, + overrides: [ + { + files: ['**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}'], + rules: { + 'node/handle-callback-err': ['error', '^(err|error)$'], + 'node/no-exports-assign': 'error', + 'node/no-new-require': 'error', + 'node/no-path-concat': 'error', + 'jsdoc/check-access': 'warn', + 'jsdoc/check-property-names': 'warn', + 'jsdoc/empty-tags': 'warn', + 'jsdoc/implements-on-classes': 'warn', + 'jsdoc/no-defaults': 'warn', + 'jsdoc/require-param-name': 'warn', + 'jsdoc/require-property': 'warn', + 'jsdoc/require-property-description': 'warn', + 'jsdoc/require-property-name': 'warn', + 'jsdoc/require-returns-description': 'warn', + 'unicorn/consistent-empty-array-spread': 'error', + 'unicorn/error-message': 'error', + 'unicorn/escape-case': 'error', + 'unicorn/new-for-builtins': 'error', + 'unicorn/no-instanceof-builtins': 'error', + 'unicorn/no-new-array': 'error', + 'unicorn/no-new-buffer': 'error', + 'unicorn/prefer-dom-node-text-content': 'error', + 'unicorn/prefer-includes': 'error', + 'unicorn/prefer-node-protocol': 'error', + 'unicorn/prefer-number-properties': 'error', + 'unicorn/prefer-string-starts-ends-with': 'error', + 'unicorn/prefer-type-error': 'error', + 'unicorn/throw-new-error': 'error', + 'node-js/no-deprecated-api': 'error', + 'node-js/prefer-global/buffer': ['error', 'never'], + 'node-js/process-exit-as-throw': 'error', + 'jsdoc-js/check-param-names': 'warn', + 'jsdoc-js/check-types': 'warn', + 'jsdoc-js/no-multi-asterisks': 'warn', + 'jsdoc-js/require-returns-check': 'warn', + 'jsdoc-js/require-yields-check': 'warn', + }, + }, + { + files: ['**/*.{ts,cts,mts}', '**/*.tsx'], + rules: { + 'constructor-super': 'off', + 'getter-return': 'off', + 'no-class-assign': 'off', + 'no-const-assign': 'off', + 'no-dupe-keys': 'off', + 'no-func-assign': 'off', + 'no-import-assign': 'off', + 'no-new-native-nonconstructor': 'off', + 'no-obj-calls': 'off', + 'no-redeclare': 'off', + 'no-setter-return': 'off', + 'no-this-before-super': 'off', + 'no-unreachable': 'off', + 'no-unsafe-negation': 'off', + 'no-with': 'off', + 'prefer-const': [ + 'error', + { + destructuring: 'all', + ignoreReadBeforeAssign: true, + }, + ], + 'no-unused-expressions': [ + 'error', + { + allowShortCircuit: true, + allowTaggedTemplates: true, + allowTernary: true, + }, + ], + 'no-useless-constructor': 'off', + 'no-use-before-define': [ + 'error', + { + classes: false, + functions: false, + variables: true, + }, + ], + 'typescript/ban-ts-comment': [ + 'error', + { + 'ts-expect-error': 'allow-with-description', + }, + ], + 'typescript/no-duplicate-enum-values': 'error', + 'typescript/no-dynamic-delete': 'off', + 'typescript/no-empty-object-type': [ + 'error', + { + allowInterfaces: 'always', + }, + ], + 'typescript/no-explicit-any': 'error', + 'typescript/no-extra-non-null-assertion': 'error', + 'typescript/no-extraneous-class': 'off', + 'typescript/no-invalid-void-type': 'off', + 'typescript/no-misused-new': 'error', + 'typescript/no-namespace': 'error', + 'typescript/no-non-null-asserted-nullish-coalescing': 'error', + 'typescript/no-non-null-asserted-optional-chain': 'error', + 'typescript/no-non-null-assertion': 'off', + 'typescript/no-require-imports': 'error', + 'typescript/no-this-alias': 'error', + 'typescript/no-unnecessary-type-constraint': 'error', + 'typescript/no-unsafe-declaration-merging': 'error', + 'typescript/no-unsafe-function-type': 'error', + 'typescript/no-wrapper-object-types': 'error', + 'typescript/prefer-as-const': 'error', + 'typescript/prefer-literal-enum-member': 'error', + 'typescript/prefer-namespace-keyword': 'error', + 'typescript/triple-slash-reference': 'off', + 'typescript/unified-signatures': 'off', + 'typescript/consistent-type-definitions': ['error', 'type'], + 'typescript/consistent-type-imports': [ + 'error', + { + disallowTypeAnnotations: false, + fixStyle: 'separate-type-imports', + prefer: 'type-imports', + }, + ], + 'typescript/method-signature-style': ['error', 'property'], + 'typescript/no-import-type-side-effects': 'error', + 'no-undef': 'off', + 'typescript/dot-notation': [ + 'error', + { + allowKeywords: true, + allowPattern: '', + }, + ], + }, + }, + { + files: [ + '**/__tests__/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + '**/*.spec.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + '**/*.test.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + '**/*.bench.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + '**/*.benchmark.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + ], + rules: { + 'vitest/consistent-test-it': [ + 'error', + { + fn: 'it', + withinDescribe: 'it', + }, + ], + 'vitest/no-identical-title': 'error', + 'vitest/no-import-node-test': 'error', + 'vitest/prefer-hooks-in-order': 'error', + 'vitest/prefer-lowercase-title': 'off', + 'antfu/no-top-level-await': 'off', + 'no-unused-expressions': 'off', + 'typescript/explicit-function-return-type': 'off', + 'vitest/no-focused-tests': 'error', + }, + }, + { + files: ['**/scripts/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}'], + rules: { + 'antfu/no-top-level-await': 'off', + 'no-console': 'off', + 'typescript/explicit-function-return-type': 'off', + }, + }, + { + files: [ + '**/cli/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + '**/cli.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + ], + rules: { + 'antfu/no-top-level-await': 'off', + 'no-console': 'off', + }, + excludeFiles: ['cli/**'], + }, + { + files: ['**/bin/**/*', '**/bin.{js,cjs,mjs,jsx,ts,cts,mts,tsx}'], + rules: { + 'antfu/no-import-dist': 'off', + 'antfu/no-import-node-modules-by-path': 'off', + }, + }, + { + files: ['**/*.d.{ts,cts,mts}'], + rules: { + 'eslint-comments/no-unlimited-disable': 'off', + 'no-unused-vars': 'off', + }, + }, + { + files: ['**/*.js', '**/*.cjs'], + rules: { + 'typescript/no-require-imports': 'off', + }, + }, + { + files: [ + '**/*.config.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + '**/*.config.*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + ], + rules: { + 'antfu/no-top-level-await': 'off', + 'no-console': 'off', + 'typescript/explicit-function-return-type': 'off', + }, + }, + { + files: ['web/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}'], + rules: { + 'no-barrel-files/no-barrel-files': 'error', + '@tanstack/query/exhaustive-deps': 'error', + '@tanstack/query/no-rest-destructuring': 'warn', + '@tanstack/query/stable-query-client': 'error', + '@tanstack/query/no-unstable-deps': 'error', + '@tanstack/query/infinite-query-property-order': 'error', + '@tanstack/query/no-void-query-fn': 'error', + '@tanstack/query/mutation-property-order': 'error', + }, + }, + { + files: ['web/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}'], + rules: { + 'react/exhaustive-deps': 'warn', + 'react/no-array-index-key': 'warn', + 'react/no-clone-element': 'warn', + 'react/no-direct-mutation-state': 'error', + 'react/rules-of-hooks': 'error', + 'react/jsx-no-comment-textnodes': 'warn', + 'react/only-export-components': [ + 'error', + { + allowConstantExport: true, + allowExportNames: [], + }, + ], + }, + }, + { + files: ['web/**/*.tsx'], + rules: { + 'jsx-a11y/alt-text': 'error', + 'jsx-a11y/anchor-ambiguous-text': 'off', + 'jsx-a11y/anchor-has-content': 'error', + 'jsx-a11y/anchor-is-valid': 'error', + 'jsx-a11y/aria-activedescendant-has-tabindex': 'error', + 'jsx-a11y/aria-props': 'error', + 'jsx-a11y/aria-proptypes': 'error', + 'jsx-a11y/aria-role': 'error', + 'jsx-a11y/aria-unsupported-elements': 'error', + 'jsx-a11y/autocomplete-valid': 'error', + 'jsx-a11y/click-events-have-key-events': 'error', + 'jsx-a11y-js/control-has-associated-label': [ + 'off', + { + ignoreElements: ['audio', 'canvas', 'embed', 'input', 'textarea', 'tr', 'video'], + ignoreRoles: [ + 'grid', + 'listbox', + 'menu', + 'menubar', + 'radiogroup', + 'row', + 'tablist', + 'toolbar', + 'tree', + 'treegrid', + ], + includeRoles: ['alert', 'dialog'], + }, + ], + 'jsx-a11y/heading-has-content': 'error', + 'jsx-a11y/html-has-lang': 'error', + 'jsx-a11y/iframe-has-title': 'error', + 'jsx-a11y/img-redundant-alt': 'error', + 'jsx-a11y/interactive-supports-focus': [ + 'error', + { + tabbable: [ + 'button', + 'checkbox', + 'link', + 'searchbox', + 'spinbutton', + 'switch', + 'textbox', + ], + }, + ], + 'jsx-a11y/label-has-associated-control': 'error', + 'jsx-a11y/media-has-caption': 'error', + 'jsx-a11y/mouse-events-have-key-events': 'error', + 'jsx-a11y/no-access-key': 'error', + 'jsx-a11y/no-autofocus': 'error', + 'jsx-a11y/no-distracting-elements': 'error', + 'jsx-a11y/no-interactive-element-to-noninteractive-role': [ + 'error', + { + tr: ['none', 'presentation'], + canvas: ['img'], + }, + ], + 'jsx-a11y/no-noninteractive-element-interactions': [ + 'error', + { + handlers: [ + 'onClick', + 'onError', + 'onLoad', + 'onMouseDown', + 'onMouseUp', + 'onKeyPress', + 'onKeyDown', + 'onKeyUp', + ], + alert: ['onKeyUp', 'onKeyDown', 'onKeyPress'], + body: ['onError', 'onLoad'], + dialog: ['onKeyUp', 'onKeyDown', 'onKeyPress'], + iframe: ['onError', 'onLoad'], + img: ['onError', 'onLoad'], + }, + ], + 'jsx-a11y/no-noninteractive-element-to-interactive-role': [ + 'error', + { + ul: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + ol: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + li: [ + 'menuitem', + 'menuitemradio', + 'menuitemcheckbox', + 'option', + 'row', + 'tab', + 'treeitem', + ], + table: ['grid'], + td: ['gridcell'], + fieldset: ['radiogroup', 'presentation'], + }, + ], + 'jsx-a11y/no-noninteractive-tabindex': [ + 'error', + { + tags: [], + roles: ['tabpanel'], + allowExpressionValues: true, + }, + ], + 'jsx-a11y/no-redundant-roles': 'error', + 'jsx-a11y/no-static-element-interactions': [ + 'error', + { + allowExpressionValues: true, + handlers: ['onClick', 'onMouseDown', 'onMouseUp', 'onKeyPress', 'onKeyDown', 'onKeyUp'], + }, + ], + 'jsx-a11y/role-has-required-aria-props': 'error', + 'jsx-a11y/role-supports-aria-props': 'error', + 'jsx-a11y/scope': 'error', + 'jsx-a11y/tabindex-no-positive': 'error', + }, + }, + { + files: ['web/**/*.stories.{js,cjs,mjs,jsx,ts,tsx}', 'web/**/*.story.{js,cjs,mjs,jsx,ts,tsx}'], + rules: { + 'storybook/await-interactions': 'error', + 'storybook/context-in-play-function': 'error', + 'storybook/default-exports': 'error', + 'storybook/hierarchy-separator': 'warn', + 'storybook/no-redundant-story-name': 'warn', + 'storybook/no-renderer-packages': 'error', + 'storybook/prefer-pascal-case': 'warn', + 'storybook/story-exports': 'error', + 'storybook/use-storybook-expect': 'error', + 'storybook/use-storybook-testing-library': 'error', + 'import/no-anonymous-default-export': 'off', + 'react/rules-of-hooks': 'off', + }, + }, + { + files: ['web/.storybook/main.{js,cjs,mjs,ts}'], + rules: { + 'storybook/no-uninstalled-addons': 'error', + }, + }, + { + files: ['web/**/*.{ts,cts,mts}', 'web/**/*.tsx'], + rules: { + 'tailwindcss/no-duplicate-classes': 'error', + 'tailwindcss/no-unknown-classes': 'warn', + }, + excludeFiles: ['web/**/__tests__/**', 'web/**/*.spec.{ts,tsx}', 'web/**/*.test.{ts,tsx}'], + }, + { + files: ['web/**/*.tsx'], + rules: { + 'hyoban/prefer-tailwind-icons': [ + 'warn', + { + prefix: 'i-', + propMappings: { + size: 'size', + width: 'w', + height: 'h', + }, + libraries: [ + { + prefix: 'i-custom-', + source: '^@/app/components/base/icons/src/(?(?:public|vender)(?:/.*)?)$', + name: '^(?.*)$', + }, + { + source: '^@remixicon/react$', + name: '^(?Ri)(?.+)$', + }, + { + source: '^@(?heroicons)/react/24/outline$', + name: '^(?.*)Icon$', + }, + { + source: '^@(?heroicons)/react/24/(?solid)$', + name: '^(?.*)Icon$', + }, + { + source: '^@(?heroicons)/react/(?\\d+/(?:solid|outline))$', + name: '^(?.*)Icon$', + }, + ], + }, + ], + }, + }, + { + files: ['web/**/*.{ts,cts,mts}', 'web/**/*.tsx'], + rules: { + 'no-restricted-imports': [ + 'error', + { + paths: [ + { + name: 'next', + message: 'Import Next APIs from the corresponding @/next module instead of next.', + }, + { + name: 'ahooks', + importNames: ['useLocalStorageState'], + message: + 'Do not use ahooks useLocalStorageState. Use foxact storage hooks instead.', + }, + ], + patterns: [ + { + group: ['next/image'], + message: 'Do not import next/image. Use native img tags instead.', + }, + { + group: ['next/font', 'next/font/*'], + message: 'Do not import next/font. Use the project font styles instead.', + }, + { + group: ['next/*', '!next/font', '!next/font/*', '!next/image', '!next/image/*'], + message: + 'Import Next APIs from the corresponding @/next/* module instead of next/*.', + }, + { + group: ['@base-ui/react', '@base-ui/react/*'], + message: + 'Do not import Base UI directly in web. Use @langgenius/dify-ui/* primitives instead.', + }, + { + group: ['@floating-ui/*'], + message: + 'Do not import Floating UI directly in web. Use @langgenius/dify-ui/* primitives instead.', + }, + { + group: ['**/base/input', '**/base/input/*'], + message: + 'Do not import the deprecated web base Input. Use @langgenius/dify-ui/input for standalone inputs, and @langgenius/dify-ui/field for labelled or validated form composition.', + }, + { + group: [ + '@/service/base', + '@/service/base/*', + '**/service/base', + '**/service/base/*', + ], + message: + 'Do not import legacy service/base fetch helpers. Use generated service clients or feature-specific service modules instead.', + }, + { + group: [ + '@/service/fetch', + '@/service/fetch/*', + '**/service/fetch', + '**/service/fetch/*', + ], + message: + 'Do not import low-level service/fetch helpers directly. Use generated service clients or feature-specific service modules instead.', + }, + ], + }, + ], + }, + }, + { + files: ['web/service/**/*.ts', 'web/service/**/*.tsx'], + rules: { + 'no-restricted-imports': [ + 'error', + { + paths: [ + { + name: 'next', + message: 'Import Next APIs from the corresponding @/next module instead of next.', + }, + { + name: 'ahooks', + importNames: ['useLocalStorageState'], + message: + 'Do not use ahooks useLocalStorageState. Use foxact storage hooks instead.', + }, + ], + patterns: [ + { + group: ['next/image'], + message: 'Do not import next/image. Use native img tags instead.', + }, + { + group: ['next/font', 'next/font/*'], + message: 'Do not import next/font. Use the project font styles instead.', + }, + { + group: ['next/*', '!next/font', '!next/font/*', '!next/image', '!next/image/*'], + message: + 'Import Next APIs from the corresponding @/next/* module instead of next/*.', + }, + { + group: ['@base-ui/react', '@base-ui/react/*'], + message: + 'Do not import Base UI directly in web. Use @langgenius/dify-ui/* primitives instead.', + }, + { + group: ['@floating-ui/*'], + message: + 'Do not import Floating UI directly in web. Use @langgenius/dify-ui/* primitives instead.', + }, + { + group: ['**/base/input', '**/base/input/*'], + message: + 'Do not import the deprecated web base Input. Use @langgenius/dify-ui/input for standalone inputs, and @langgenius/dify-ui/field for labelled or validated form composition.', + }, + { + group: [ + '@/service/base', + '@/service/base/*', + '**/service/base', + '**/service/base/*', + ], + message: + 'Do not import legacy service/base fetch helpers. Use generated service clients or feature-specific service modules instead.', + }, + { + group: [ + '@/service/fetch', + '@/service/fetch/*', + '**/service/fetch', + '**/service/fetch/*', + ], + message: + 'Do not import low-level service/fetch helpers directly. Use generated service clients or feature-specific service modules instead.', + }, + { + group: ['./base', './base/*', '../base', '../base/*', '../../base', '../../base/*'], + message: + 'Do not import legacy service/base fetch helpers. Use generated service clients or feature-specific service modules instead.', + }, + { + group: [ + './fetch', + './fetch/*', + '../fetch', + '../fetch/*', + '../../fetch', + '../../fetch/*', + ], + message: + 'Do not import low-level service/fetch helpers directly. Use generated service clients or feature-specific service modules instead.', + }, + ], + }, + ], + }, + }, + { + files: ['web/**/*.{ts,cts,mts}', 'web/**/*.tsx'], + excludeFiles: [ + 'web/**/__tests__/**', + 'web/**/*.spec.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'web/**/*.test.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'web/**/*.bench.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'web/**/*.benchmark.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'web/vitest.setup.ts', + 'web/instrumentation-client.ts', + ], + rules: { + 'no-restricted-globals': [ + 'error', + { + name: 'localStorage', + message: + 'Do not use localStorage directly. Use a foxact storage boundary instead; prefer feature-owned createLocalStorageState for shared storage.', + }, + ], + 'no-restricted-properties': [ + 'error', + { + object: 'window', + property: 'localStorage', + message: + 'Do not use window.localStorage directly. Use a foxact storage boundary instead; prefer feature-owned createLocalStorageState for shared storage.', + }, + { + object: 'globalThis', + property: 'localStorage', + message: + 'Do not use globalThis.localStorage directly. Use a foxact storage boundary instead; prefer feature-owned createLocalStorageState for shared storage.', + }, + ], + }, + }, + { + files: [ + 'web/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'packages/dify-ui/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + ], + rules: { + 'eslint-react/no-children-count': 'warn', + 'eslint-react/no-children-for-each': 'warn', + 'eslint-react/no-children-map': 'warn', + 'eslint-react/no-children-only': 'warn', + 'eslint-react/no-children-to-array': 'warn', + 'eslint-react/no-component-will-mount': 'error', + 'eslint-react/no-component-will-receive-props': 'error', + 'eslint-react/no-component-will-update': 'error', + 'eslint-react/no-context-provider': 'warn', + 'eslint-react/no-create-ref': 'error', + 'eslint-react/no-forward-ref': 'warn', + 'eslint-react/no-missing-key': 'error', + 'eslint-react/no-nested-component-definitions': 'error', + 'eslint-react/no-nested-lazy-component-declarations': 'error', + 'eslint-react/no-set-state-in-component-did-mount': 'warn', + 'eslint-react/no-set-state-in-component-did-update': 'warn', + 'eslint-react/no-set-state-in-component-will-update': 'warn', + 'eslint-react/no-unnecessary-use-prefix': 'error', + 'eslint-react/no-unsafe-component-will-mount': 'warn', + 'eslint-react/no-unsafe-component-will-receive-props': 'warn', + 'eslint-react/no-unsafe-component-will-update': 'warn', + 'eslint-react/no-unused-class-component-members': 'warn', + 'eslint-react/no-use-context': 'warn', + 'eslint-react/use-state': 'warn', + 'eslint-react/jsx-no-children-prop': 'warn', + 'eslint-react/jsx-no-children-prop-with-children': 'error', + 'eslint-react/jsx-no-key-after-spread': 'error', + 'eslint-react/jsx-no-leaked-dollar': 'warn', + 'eslint-react/jsx-no-leaked-semicolon': 'warn', + 'eslint-react/jsx-no-namespace': 'error', + 'eslint-react/rsc-function-definition': 'error', + 'eslint-react/dom-no-dangerously-set-innerhtml': 'warn', + 'eslint-react/dom-no-dangerously-set-innerhtml-with-children': 'error', + 'eslint-react/dom-no-find-dom-node': 'error', + 'eslint-react/dom-no-flush-sync': 'error', + 'eslint-react/dom-no-hydrate': 'error', + 'eslint-react/dom-no-render': 'error', + 'eslint-react/dom-no-render-return-value': 'error', + 'eslint-react/dom-no-script-url': 'warn', + 'eslint-react/dom-no-unsafe-iframe-sandbox': 'warn', + 'eslint-react/dom-no-use-form-state': 'error', + 'eslint-react/dom-no-void-elements-with-children': 'error', + 'eslint-react/web-api-no-leaked-event-listener': 'warn', + 'eslint-react/web-api-no-leaked-fetch': 'warn', + 'eslint-react/web-api-no-leaked-intersection-observer': 'warn', + 'eslint-react/web-api-no-leaked-interval': 'warn', + 'eslint-react/web-api-no-leaked-resize-observer': 'warn', + 'eslint-react/web-api-no-leaked-timeout': 'warn', + 'eslint-react/naming-convention-context-name': 'warn', + 'eslint-react/naming-convention-id-name': 'warn', + 'eslint-react/naming-convention-ref-name': 'warn', + 'eslint-react/error-boundaries': 'error', + 'eslint-react/no-access-state-in-setstate': 'error', + 'eslint-react/purity': 'warn', + 'eslint-react/set-state-in-effect': 'error', + 'eslint-react/set-state-in-render': 'error', + 'eslint-react/static-components': 'error', + 'eslint-react/unsupported-syntax': 'error', + 'eslint-react/use-memo': 'error', + }, + }, + { + files: [ + 'web/**/__tests__/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'web/**/*.spec.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'web/**/*.test.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'web/vitest.setup.ts', + 'web/test/i18n-mock.ts', + ], + rules: { + 'eslint-react/no-unnecessary-use-prefix': 'off', + }, + }, + { + files: ['packages/dify-ui/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}'], + rules: { + 'react/exhaustive-deps': [ + 'error', + { + additionalHooks: 'useIsoLayoutEffect', + }, + ], + 'react/no-array-index-key': 'warn', + 'react/no-clone-element': 'warn', + 'react/no-direct-mutation-state': 'error', + 'react/rules-of-hooks': 'error', + 'react/jsx-no-comment-textnodes': 'warn', + 'react/only-export-components': 'off', + }, + }, + { + files: ['packages/dify-ui/**/*.tsx'], + rules: { + 'jsx-a11y/alt-text': 'error', + 'jsx-a11y/anchor-ambiguous-text': 'off', + 'jsx-a11y/anchor-has-content': 'off', + 'jsx-a11y/anchor-is-valid': 'error', + 'jsx-a11y/aria-activedescendant-has-tabindex': 'error', + 'jsx-a11y/aria-props': 'error', + 'jsx-a11y/aria-proptypes': 'error', + 'jsx-a11y/aria-role': 'error', + 'jsx-a11y/aria-unsupported-elements': 'error', + 'jsx-a11y/autocomplete-valid': 'error', + 'jsx-a11y/click-events-have-key-events': 'error', + 'jsx-a11y/control-has-associated-label': 'off', + 'jsx-a11y/heading-has-content': 'error', + 'jsx-a11y/html-has-lang': 'error', + 'jsx-a11y/iframe-has-title': 'error', + 'jsx-a11y/img-redundant-alt': 'error', + 'jsx-a11y/interactive-supports-focus': [ + 'error', + { + tabbable: [ + 'button', + 'checkbox', + 'link', + 'searchbox', + 'spinbutton', + 'switch', + 'textbox', + ], + }, + ], + 'jsx-a11y/label-has-associated-control': 'off', + 'jsx-a11y/media-has-caption': 'error', + 'jsx-a11y/mouse-events-have-key-events': 'error', + 'jsx-a11y/no-access-key': 'error', + 'jsx-a11y/no-autofocus': 'error', + 'jsx-a11y/no-distracting-elements': 'error', + 'jsx-a11y/no-interactive-element-to-noninteractive-role': [ + 'error', + { + tr: ['none', 'presentation'], + canvas: ['img'], + }, + ], + 'jsx-a11y/no-noninteractive-element-interactions': [ + 'error', + { + handlers: [ + 'onClick', + 'onError', + 'onLoad', + 'onMouseDown', + 'onMouseUp', + 'onKeyPress', + 'onKeyDown', + 'onKeyUp', + ], + alert: ['onKeyUp', 'onKeyDown', 'onKeyPress'], + body: ['onError', 'onLoad'], + dialog: ['onKeyUp', 'onKeyDown', 'onKeyPress'], + iframe: ['onError', 'onLoad'], + img: ['onError', 'onLoad'], + }, + ], + 'jsx-a11y/no-noninteractive-element-to-interactive-role': [ + 'error', + { + ul: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + ol: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + li: [ + 'menuitem', + 'menuitemradio', + 'menuitemcheckbox', + 'option', + 'row', + 'tab', + 'treeitem', + ], + table: ['grid'], + td: ['gridcell'], + fieldset: ['radiogroup', 'presentation'], + }, + ], + 'jsx-a11y/no-noninteractive-tabindex': [ + 'error', + { + tags: [], + roles: ['tabpanel'], + allowExpressionValues: true, + }, + ], + 'jsx-a11y/no-redundant-roles': 'error', + 'jsx-a11y/no-static-element-interactions': [ + 'error', + { + allowExpressionValues: true, + handlers: ['onClick', 'onMouseDown', 'onMouseUp', 'onKeyPress', 'onKeyDown', 'onKeyUp'], + }, + ], + 'jsx-a11y/role-has-required-aria-props': 'error', + 'jsx-a11y/role-supports-aria-props': 'error', + 'jsx-a11y/scope': 'error', + 'jsx-a11y/tabindex-no-positive': 'error', + }, + }, + { + files: [ + 'packages/dify-ui/**/*.stories.{js,cjs,mjs,jsx,ts,tsx}', + 'packages/dify-ui/**/*.story.{js,cjs,mjs,jsx,ts,tsx}', + ], + rules: { + 'storybook/await-interactions': 'error', + 'storybook/context-in-play-function': 'error', + 'storybook/default-exports': 'error', + 'storybook/hierarchy-separator': 'warn', + 'storybook/no-redundant-story-name': 'warn', + 'storybook/no-renderer-packages': 'error', + 'storybook/prefer-pascal-case': 'warn', + 'storybook/story-exports': 'error', + 'storybook/use-storybook-expect': 'error', + 'storybook/use-storybook-testing-library': 'error', + 'import/no-anonymous-default-export': 'off', + 'react/rules-of-hooks': 'off', + }, + }, + { + files: ['packages/dify-ui/**/.storybook/main.{js,cjs,mjs,ts}'], + rules: { + 'storybook/no-uninstalled-addons': [ + 'error', + { + packageJsonLocation: difyUiPackageJson, + }, + ], + }, + }, + { + files: ['packages/dify-ui/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}'], + rules: { + 'eslint-react/no-context-provider': 'off', + 'eslint-react/no-use-context': 'off', + }, + }, + { + files: [ + 'packages/dify-ui/**/__tests__/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + 'packages/dify-ui/**/*.spec.{js,cjs,mjs,jsx,ts,cts,mts,tsx}', + ], + rules: { + 'eslint-react/purity': 'off', + }, + }, + { + files: ['cli/bin/**'], + rules: { + 'antfu/no-top-level-await': 'off', + }, + }, + { + files: ['cli/src/**/*.ts'], + rules: { + 'no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: ['../**', './*/**', '..'], + message: + 'Use the @/ (or @test/) alias for parent-directory or nested relative imports; keep ./ only for same-folder siblings.', + }, + ], + }, + ], + }, + }, + { + files: ['sdks/nodejs-client/src/**/*.ts', 'sdks/nodejs-client/tests/**/*.ts'], + rules: { + 'accessor-pairs': 'off', + 'antfu/no-top-level-await': 'off', + 'array-callback-return': 'off', + 'block-scoped-var': 'off', + 'constructor-super': 'error', + 'default-case-last': 'off', + eqeqeq: 'off', + 'new-cap': 'off', + 'no-alert': 'off', + 'no-array-constructor': 'error', + 'no-async-promise-executor': 'error', + 'no-caller': 'off', + 'no-case-declarations': 'error', + 'no-class-assign': 'error', + 'no-compare-neg-zero': 'error', + 'no-cond-assign': 'error', + 'no-console': 'off', + 'no-const-assign': 'error', + 'no-control-regex': 'off', + 'no-debugger': 'error', + 'no-delete-var': 'error', + 'no-dupe-class-members': 'error', + 'no-dupe-keys': 'error', + 'no-duplicate-case': 'error', + 'no-empty': 'error', + 'no-empty-pattern': 'error', + 'no-eval': 'off', + 'no-ex-assign': 'error', + 'no-extend-native': 'off', + 'no-extra-bind': 'off', + 'no-extra-boolean-cast': 'error', + 'no-fallthrough': 'error', + 'no-func-assign': 'error', + 'no-global-assign': 'error', + 'no-implied-eval': 'off', + 'no-import-assign': 'error', + 'no-irregular-whitespace': 'error', + 'no-iterator': 'off', + 'no-labels': 'off', + 'no-lone-blocks': 'off', + 'no-loss-of-precision': 'error', + 'no-misleading-character-class': 'error', + 'no-multi-str': 'off', + 'no-new': 'off', + 'no-new-func': 'off', + 'no-new-native-nonconstructor': 'error', + 'no-new-wrappers': 'off', + 'no-obj-calls': 'error', + 'no-proto': 'off', + 'no-prototype-builtins': 'error', + 'no-redeclare': 'error', + 'no-regex-spaces': 'error', + 'no-restricted-globals': 'off', + 'no-restricted-properties': 'off', + 'no-self-assign': 'error', + 'no-self-compare': 'off', + 'no-sequences': 'off', + 'no-shadow-restricted-names': 'error', + 'no-sparse-arrays': 'error', + 'no-template-curly-in-string': 'off', + 'no-this-before-super': 'error', + 'no-throw-literal': 'off', + 'no-unexpected-multiline': 'error', + 'no-unmodified-loop-condition': 'off', + 'no-unneeded-ternary': 'off', + 'no-unreachable': 'error', + 'no-unsafe-finally': 'error', + 'no-unsafe-negation': 'error', + 'no-unused-expressions': 'error', + 'no-unused-vars': 'error', + 'no-use-before-define': 'off', + 'no-useless-call': 'off', + 'no-useless-catch': 'error', + 'no-useless-computed-key': 'off', + 'no-useless-constructor': 'off', + 'no-useless-rename': 'off', + 'no-useless-return': 'off', + 'no-var': 'off', + 'no-with': 'error', + 'object-shorthand': 'off', + 'prefer-arrow-callback': 'off', + 'prefer-const': 'off', + 'prefer-exponentiation-operator': 'off', + 'prefer-promise-reject-errors': 'off', + 'prefer-regex-literals': 'off', + 'prefer-rest-params': 'off', + 'prefer-spread': 'off', + 'prefer-template': 'off', + 'symbol-description': 'off', + 'unicode-bom': 'off', + 'use-isnan': 'error', + 'valid-typeof': 'error', + 'vars-on-top': 'off', + yoda: 'off', + 'eslint-comments/no-aggregating-enable': 'off', + 'eslint-comments/no-duplicate-disable': 'off', + 'eslint-comments/no-unlimited-disable': 'off', + 'eslint-comments/no-unused-enable': 'off', + 'command/command': 'off', + 'perfectionist/sort-exports': 'off', + 'perfectionist/sort-named-exports': 'off', + 'perfectionist/sort-named-imports': 'off', + 'antfu/import-dedupe': 'off', + 'antfu/no-import-dist': 'off', + 'antfu/no-import-node-modules-by-path': 'off', + 'import/consistent-type-specifier-style': 'off', + 'import/first': 'off', + 'import/no-duplicates': 'off', + 'import/no-mutable-exports': 'off', + 'import/no-named-default': 'off', + 'erasable-syntax-only/enums': 'off', + 'erasable-syntax-only/import-aliases': 'off', + 'erasable-syntax-only/namespaces': 'off', + 'erasable-syntax-only/parameter-properties': 'off', + 'regexp/confusing-quantifier': 'off', + 'regexp/control-character-escape': 'off', + 'regexp/match-any': 'off', + 'regexp/negation': 'off', + 'regexp/no-contradiction-with-assertion': 'off', + 'regexp/no-dupe-characters-character-class': 'off', + 'regexp/no-dupe-disjunctions': 'off', + 'regexp/no-empty-alternative': 'off', + 'regexp/no-empty-capturing-group': 'off', + 'regexp/no-empty-character-class': 'off', + 'regexp/no-empty-group': 'off', + 'regexp/no-empty-lookarounds-assertion': 'off', + 'regexp/no-empty-string-literal': 'off', + 'regexp/no-escape-backspace': 'off', + 'regexp/no-extra-lookaround-assertions': 'off', + 'regexp/no-invalid-regexp': 'off', + 'regexp/no-invisible-character': 'off', + 'regexp/no-lazy-ends': 'off', + 'regexp/no-legacy-features': 'off', + 'regexp/no-misleading-capturing-group': 'off', + 'regexp/no-misleading-unicode-character': 'off', + 'regexp/no-missing-g-flag': 'off', + 'regexp/no-non-standard-flag': 'off', + 'regexp/no-obscure-range': 'off', + 'regexp/no-optional-assertion': 'off', + 'regexp/no-potentially-useless-backreference': 'off', + 'regexp/no-super-linear-backtracking': 'off', + 'regexp/no-trivially-nested-assertion': 'off', + 'regexp/no-trivially-nested-quantifier': 'off', + 'regexp/no-unused-capturing-group': 'off', + 'regexp/no-useless-assertions': 'off', + 'regexp/no-useless-backreference': 'off', + 'regexp/no-useless-character-class': 'off', + 'regexp/no-useless-dollar-replacements': 'off', + 'regexp/no-useless-escape': 'off', + 'regexp/no-useless-flag': 'off', + 'regexp/no-useless-lazy': 'off', + 'regexp/no-useless-non-capturing-group': 'off', + 'regexp/no-useless-quantifier': 'off', + 'regexp/no-useless-range': 'off', + 'regexp/no-useless-set-operand': 'off', + 'regexp/no-useless-string-literal': 'off', + 'regexp/no-useless-two-nums-quantifier': 'off', + 'regexp/no-zero-quantifier': 'off', + 'regexp/optimal-lookaround-quantifier': 'off', + 'regexp/optimal-quantifier-concatenation': 'off', + 'regexp/prefer-character-class': 'off', + 'regexp/prefer-d': 'off', + 'regexp/prefer-plus-quantifier': 'off', + 'regexp/prefer-predefined-assertion': 'off', + 'regexp/prefer-question-quantifier': 'off', + 'regexp/prefer-range': 'off', + 'regexp/prefer-set-operation': 'off', + 'regexp/prefer-star-quantifier': 'off', + 'regexp/prefer-unicode-codepoint-escapes': 'off', + 'regexp/prefer-w': 'off', + 'regexp/simplify-set-operations': 'off', + 'regexp/sort-flags': 'off', + 'regexp/strict': 'off', + 'regexp/use-ignore-case': 'off', + 'no-undef': 'off', + 'node/handle-callback-err': 'off', + 'node/no-exports-assign': 'off', + 'node/no-new-require': 'off', + 'node/no-path-concat': 'off', + 'jsdoc/check-access': 'off', + 'jsdoc/check-property-names': 'off', + 'jsdoc/empty-tags': 'off', + 'jsdoc/implements-on-classes': 'off', + 'jsdoc/no-defaults': 'off', + 'jsdoc/require-param-name': 'off', + 'jsdoc/require-property': 'off', + 'jsdoc/require-property-description': 'off', + 'jsdoc/require-property-name': 'off', + 'jsdoc/require-returns-description': 'off', + 'unicorn/consistent-empty-array-spread': 'off', + 'unicorn/error-message': 'off', + 'unicorn/escape-case': 'off', + 'unicorn/new-for-builtins': 'off', + 'unicorn/no-instanceof-builtins': 'off', + 'unicorn/no-new-array': 'off', + 'unicorn/no-new-buffer': 'off', + 'unicorn/prefer-dom-node-text-content': 'off', + 'unicorn/prefer-includes': 'off', + 'unicorn/prefer-node-protocol': 'off', + 'unicorn/prefer-number-properties': 'off', + 'unicorn/prefer-string-starts-ends-with': 'off', + 'unicorn/prefer-type-error': 'off', + 'unicorn/throw-new-error': 'off', + 'node-js/no-deprecated-api': 'off', + 'node-js/prefer-global/buffer': 'off', + 'node-js/process-exit-as-throw': 'off', + 'jsdoc-js/check-param-names': 'off', + 'jsdoc-js/check-types': 'off', + 'jsdoc-js/no-multi-asterisks': 'off', + 'jsdoc-js/require-returns-check': 'off', + 'jsdoc-js/require-yields-check': 'off', + 'getter-return': 'error', + 'no-setter-return': 'error', + 'typescript/ban-ts-comment': 'error', + 'typescript/no-duplicate-enum-values': 'error', + 'typescript/no-dynamic-delete': 'off', + 'typescript/no-empty-object-type': 'error', + 'typescript/no-explicit-any': 'error', + 'typescript/no-extra-non-null-assertion': 'error', + 'typescript/no-extraneous-class': 'off', + 'typescript/no-invalid-void-type': 'off', + 'typescript/no-misused-new': 'error', + 'typescript/no-namespace': 'error', + 'typescript/no-non-null-asserted-nullish-coalescing': 'off', + 'typescript/no-non-null-asserted-optional-chain': 'error', + 'typescript/no-non-null-assertion': 'off', + 'typescript/no-require-imports': 'error', + 'typescript/no-this-alias': 'error', + 'typescript/no-unnecessary-type-constraint': 'error', + 'typescript/no-unsafe-declaration-merging': 'error', + 'typescript/no-unsafe-function-type': 'error', + 'typescript/no-wrapper-object-types': 'error', + 'typescript/prefer-as-const': 'error', + 'typescript/prefer-literal-enum-member': 'off', + 'typescript/prefer-namespace-keyword': 'error', + 'typescript/triple-slash-reference': 'error', + 'typescript/unified-signatures': 'off', + 'typescript/consistent-type-definitions': 'off', + 'typescript/consistent-type-imports': [ + 'error', + { + prefer: 'type-imports', + fixStyle: 'separate-type-imports', + }, + ], + 'typescript/method-signature-style': 'off', + 'typescript/no-import-type-side-effects': 'off', + 'typescript/dot-notation': 'off', + 'vitest/consistent-test-it': 'off', + 'vitest/no-identical-title': 'off', + 'vitest/no-import-node-test': 'off', + 'vitest/prefer-hooks-in-order': 'off', + 'vitest/prefer-lowercase-title': 'off', + 'typescript/explicit-function-return-type': 'off', + 'vitest/no-focused-tests': 'off', + 'for-direction': 'error', + 'no-constant-binary-expression': 'error', + 'no-constant-condition': 'error', + 'no-dupe-else-if': 'error', + 'no-empty-character-class': 'error', + 'no-empty-static-block': 'error', + 'no-invalid-regexp': 'error', + 'no-nonoctal-decimal-escape': 'error', + 'no-unassigned-vars': 'error', + 'no-unsafe-optional-chaining': 'error', + 'no-unused-labels': 'error', + 'no-unused-private-class-members': 'error', + 'no-useless-backreference': 'error', + 'no-useless-escape': 'error', + 'preserve-caught-error': 'error', + 'require-yield': 'error', + 'require-await': 'off', + 'typescript/await-thenable': 'error', + 'typescript/no-array-delete': 'error', + 'typescript/no-base-to-string': 'error', + 'typescript/no-duplicate-type-constituents': 'error', + 'typescript/no-floating-promises': 'error', + 'typescript/no-for-in-array': 'error', + 'typescript/no-implied-eval': 'error', + 'typescript/no-misused-promises': 'error', + 'typescript/no-redundant-type-constituents': 'error', + 'typescript/no-unnecessary-type-assertion': 'error', + 'typescript/no-unsafe-argument': 'error', + 'typescript/no-unsafe-assignment': 'error', + 'typescript/no-unsafe-call': 'error', + 'typescript/no-unsafe-enum-comparison': 'error', + 'typescript/no-unsafe-member-access': 'error', + 'typescript/no-unsafe-return': 'error', + 'typescript/no-unsafe-unary-minus': 'error', + 'typescript/only-throw-error': 'error', + 'typescript/prefer-promise-reject-errors': 'error', + 'typescript/require-await': 'error', + 'typescript/restrict-plus-operands': 'error', + 'typescript/restrict-template-expressions': 'error', + 'typescript/unbound-method': 'error', + 'no-useless-assignment': 'error', + }, + }, + ], +} satisfies OxlintConfig diff --git a/eslint-suppressions.json b/oxlint-suppressions.json similarity index 71% rename from eslint-suppressions.json rename to oxlint-suppressions.json index 57ff3f781ee..9713a2afc3b 100644 --- a/eslint-suppressions.json +++ b/oxlint-suppressions.json @@ -1,4 +1,29 @@ { + "cli/src/store/keychain-token-store.test.ts": { + "no-throw-literal": { + "count": 2 + } + }, + "cli/test/e2e/helpers/retry.ts": { + "no-throw-literal": { + "count": 1 + } + }, + "cli/test/e2e/suites/output/json-yaml-output.e2e.ts": { + "prefer-const": { + "count": 1 + } + }, + "e2e/support/web-server.ts": { + "no-throw-literal": { + "count": 1 + } + }, + "packages/dev-proxy/src/cli.spec.ts": { + "no-throw-literal": { + "count": 1 + } + }, "packages/migrate-no-unchecked-indexed-access/src/no-unchecked-indexed-access/migrate.ts": { "no-console": { "count": 11 @@ -14,46 +39,61 @@ "count": 9 } }, + "web/.storybook/__mocks__/context-block.tsx": { + "react/only-export-components": { + "count": 1 + } + }, + "web/.storybook/__mocks__/history-block.tsx": { + "react/only-export-components": { + "count": 1 + } + }, + "web/.storybook/__mocks__/query-block.tsx": { + "react/only-export-components": { + "count": 1 + } + }, "web/.storybook/main.ts": { "storybook/no-uninstalled-addons": { "count": 3 } }, "web/__mocks__/base-ui-dropdown-menu.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/interactive-supports-focus": { + "jsx_a11y/interactive-supports-focus": { "count": 2 }, - "jsx-a11y/role-has-required-aria-props": { + "jsx_a11y/role-has-required-aria-props": { "count": 1 } }, "web/__mocks__/base-ui-popover.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/__mocks__/base-ui-select.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/interactive-supports-focus": { + "jsx_a11y/interactive-supports-focus": { "count": 1 }, - "jsx-a11y/role-has-required-aria-props": { + "jsx_a11y/role-has-required-aria-props": { "count": 2 } }, "web/__mocks__/base-ui-tooltip.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -68,28 +108,28 @@ } }, "web/__tests__/document-list-sorting.test.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/__tests__/embedded-user-id-auth.test.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/__tests__/embedded-user-id-store.test.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/__tests__/goto-anything/command-selector.test.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -104,36 +144,36 @@ } }, "web/__tests__/plugin-tool-workflow-error.test.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/__tests__/real-browser-flicker.test.tsx": { + "eslint-react/set-state-in-effect": { + "count": 4 + }, "no-console": { "count": 16 }, - "react/set-state-in-effect": { - "count": 4 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/__tests__/unified-tags-logic.test.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/__tests__/workflow-onboarding-integration.test.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/time-range-picker/date-picker.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -141,7 +181,7 @@ "no-console": { "count": 19 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -151,16 +191,16 @@ } }, "web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/provider-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 3 - }, - "jsx-a11y/no-static-element-interactions": { - "count": 3 - }, - "react/static-components": { + "eslint-react/static-components": { "count": 2 }, - "ts/no-explicit-any": { + "jsx_a11y/click-events-have-key-events": { + "count": 3 + }, + "jsx_a11y/no-static-element-interactions": { + "count": 3 + }, + "typescript/no-explicit-any": { "count": 1 } }, @@ -170,29 +210,29 @@ } }, "web/app/(shareLayout)/components/authenticated-layout.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/(shareLayout)/components/splash.tsx": { - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "react/set-state-in-effect": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/(shareLayout)/webapp-reset-password/check-code/page.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -200,7 +240,7 @@ } }, "web/app/(shareLayout)/webapp-reset-password/layout.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -215,10 +255,10 @@ } }, "web/app/(shareLayout)/webapp-signin/check-code/page.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -231,37 +271,37 @@ } }, "web/app/(shareLayout)/webapp-signin/components/mail-and-password-auth.tsx": { - "jsx-a11y/tabindex-no-positive": { + "jsx_a11y/tabindex-no-positive": { "count": 3 }, "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/(shareLayout)/webapp-signin/normalForm.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/(shareLayout)/webapp-signin/page.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/account/(commonLayout)/account-page/email-change-modal.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 }, "no-restricted-imports": { @@ -269,10 +309,10 @@ } }, "web/app/account/(commonLayout)/account-page/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 }, "no-restricted-imports": { @@ -280,25 +320,25 @@ } }, "web/app/account/(commonLayout)/delete-account/components/verify-email.tsx": { - "no-restricted-imports": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "react/set-state-in-effect": { + "no-restricted-imports": { "count": 1 } }, "web/app/account/oauth/authorize/page.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app-sidebar/__tests__/sidebar-animation-issues.spec.tsx": { - "jsx-a11y/anchor-is-valid": { + "jsx_a11y/anchor-is-valid": { "count": 1 } }, "web/app/components/app-sidebar/app-info/app-info-modals.tsx": { - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 1 }, "no-restricted-imports": { @@ -306,15 +346,15 @@ } }, "web/app/components/app-sidebar/app-info/app-operations.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 4 } }, "web/app/components/app-sidebar/dataset-info/menu-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -322,21 +362,21 @@ "erasable-syntax-only/enums": { "count": 1 }, - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/app/annotation/batch-add-annotation-modal/csv-downloader.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, @@ -344,13 +384,13 @@ "erasable-syntax-only/enums": { "count": 1 }, - "react-refresh/only-export-components": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "react/set-state-in-effect": { + "react/only-export-components": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -358,27 +398,27 @@ "erasable-syntax-only/enums": { "count": 1 }, - "jsx-a11y/click-events-have-key-events": { - "count": 3 - }, - "jsx-a11y/no-autofocus": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "react-refresh/only-export-components": { + "jsx_a11y/no-autofocus": { "count": 1 }, - "react/set-state-in-effect": { + "jsx_a11y/no-static-element-interactions": { + "count": 3 + }, + "react/only-export-components": { "count": 1 } }, "web/app/components/app/annotation/edit-annotation-modal/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -388,15 +428,15 @@ } }, "web/app/components/app/annotation/header-opts/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/annotation/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, @@ -409,86 +449,91 @@ "erasable-syntax-only/enums": { "count": 1 }, - "jsx-a11y/click-events-have-key-events": { - "count": 1 - }, - "jsx-a11y/no-static-element-interactions": { - "count": 1 - }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 5 }, - "ts/no-explicit-any": { + "jsx_a11y/click-events-have-key-events": { + "count": 1 + }, + "jsx_a11y/no-static-element-interactions": { + "count": 1 + }, + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/app-access-control/access-control-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/app-publisher/sections.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/base/operation-btn/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/config-prompt/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/config-prompt/advanced-prompt-input.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/app/configuration/config-prompt/conversation-history/edit-modal.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/configuration/config-prompt/message-type-selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/app/configuration/config-prompt/prompt-editor-height-resize-wrap.tsx": { - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/config-prompt/simple-prompt-input.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/app/configuration/config-var/__tests__/index.spec.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, + "web/app/components/app/configuration/config-var/config-modal/__tests__/form-fields.spec.tsx": { + "no-unused-vars": { + "count": 1 + } + }, "web/app/components/app/configuration/config-var/config-modal/form-fields.tsx": { - "jsx-a11y/anchor-has-content": { + "jsx_a11y/anchor-has-content": { "count": 1 }, "no-restricted-imports": { @@ -496,15 +541,15 @@ } }, "web/app/components/app/configuration/config-var/config-modal/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/app/configuration/config-var/config-select/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -514,74 +559,71 @@ } }, "web/app/components/app/configuration/config-var/select-var-type.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/configuration/config-var/var-item.tsx": { - "jsx-a11y/mouse-events-have-key-events": { + "jsx_a11y/mouse-events-have-key-events": { "count": 1 } }, "web/app/components/app/configuration/config/agent/agent-tools/index.tsx": { - "jsx-a11y/mouse-events-have-key-events": { + "jsx_a11y/mouse-events-have-key-events": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 9 } }, "web/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool.tsx": { - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "react-hooks/exhaustive-deps": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "react/set-state-in-effect": { - "count": 1 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/app/configuration/config/automatic/get-automatic-res.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 1 - }, - "jsx-a11y/no-static-element-interactions": { - "count": 1 - }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 4 }, - "ts/no-explicit-any": { + "jsx_a11y/click-events-have-key-events": { + "count": 1 + }, + "jsx_a11y/no-static-element-interactions": { + "count": 1 + }, + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/configuration/config/automatic/idea-output.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/config/automatic/instruction-editor.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/app/configuration/config/automatic/prompt-res-in-workflow.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/configuration/config/automatic/prompt-res.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, @@ -591,84 +633,84 @@ } }, "web/app/components/app/configuration/config/code-generator/get-code-generator-res.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 4 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/app/configuration/dataset-config/context-var/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/dataset-config/context-var/__tests__/var-picker.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/dataset-config/context-var/var-picker.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/dataset-config/params-config/__tests__/config-content.spec.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/configuration/dataset-config/params-config/config-content.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/configuration/dataset-config/params-config/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/app/configuration/dataset-config/settings-modal/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { + "count": 2 + }, + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { "count": 1 }, - "react/set-state-in-effect": { - "count": 2 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/configuration/debug/__tests__/chat-user-input.spec.tsx": { - "jsx-a11y/role-has-required-aria-props": { + "jsx_a11y/role-has-required-aria-props": { "count": 1 } }, "web/app/components/app/configuration/debug/__tests__/index.spec.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/configuration/debug/chat-user-input.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 2 }, "no-restricted-imports": { @@ -676,22 +718,22 @@ } }, "web/app/components/app/configuration/debug/debug-with-multiple-model/chat-item.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/app/configuration/debug/debug-with-multiple-model/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/app/configuration/debug/debug-with-multiple-model/text-generation-item.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/app/components/app/configuration/debug/debug-with-single-model/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, @@ -699,25 +741,25 @@ "no-restricted-globals": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/app/configuration/debug/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 11 } }, "web/app/components/app/configuration/debug/types.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/app/configuration/prompt-value-panel/index.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 2 }, "no-restricted-imports": { @@ -733,15 +775,15 @@ "erasable-syntax-only/enums": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/app/create-app-modal/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -752,20 +794,20 @@ "erasable-syntax-only/enums": { "count": 1 }, - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { + "count": 2 + }, + "jsx_a11y/no-static-element-interactions": { "count": 2 }, "no-restricted-imports": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 - }, - "react/set-state-in-effect": { - "count": 2 } }, "web/app/components/app/duplicate-modal/index.tsx": { @@ -777,85 +819,85 @@ "no-restricted-imports": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/app/log/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/app/log/list.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 6 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/app/log/model-info.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/app/log/var-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/app/overview/apikey-info-panel/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/app/overview/app-card-sections.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, - "web/app/components/app/overview/app-chart.tsx": { - "react/component-hook-factories": { - "count": 1 - } - }, "web/app/components/app/overview/workflow-hidden-input-fields.tsx": { "no-restricted-imports": { "count": 1 } }, "web/app/components/app/switch-app-modal/index.tsx": { - "no-restricted-imports": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "react/set-state-in-effect": { + "no-restricted-imports": { "count": 1 } }, "web/app/components/app/text-generate/item/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/app/text-generate/item/result-tab.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/app/text-generate/item/workflow-body.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { + "count": 2 + } + }, + "web/app/components/app/type-selector/index.tsx": { + "unicorn/prefer-includes": { "count": 2 } }, @@ -863,36 +905,41 @@ "no-restricted-imports": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/app/workflow-log/list.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 } }, + "web/app/components/apps/__tests__/app-card.spec.tsx": { + "prefer-promise-reject-errors": { + "count": 1 + } + }, "web/app/components/apps/app-card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-noninteractive-element-to-interactive-role": { + "jsx_a11y/no-noninteractive-element-to-interactive-role": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/apps/import-from-marketplace-template-modal.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/apps/starred-app-card.tsx": { - "jsx-a11y/no-noninteractive-element-to-interactive-role": { + "jsx_a11y/no-noninteractive-element-to-interactive-role": { "count": 1 } }, @@ -902,7 +949,7 @@ } }, "web/app/components/base/agent-log-modal/detail.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -910,28 +957,28 @@ "no-console": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/agent-log-modal/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/base/agent-log-modal/result.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/agent-log-modal/tool-call.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -941,28 +988,28 @@ } }, "web/app/components/base/app-icon-picker/ImageInput.tsx": { - "react/no-create-ref": { + "eslint-react/no-create-ref": { "count": 1 } }, "web/app/components/base/audio-btn/audio.ts": { - "node/prefer-global/buffer": { + "node-js/prefer-global/buffer": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/base/audio-gallery/AudioPlayer.tsx": { - "jsx-a11y/media-has-caption": { + "jsx_a11y/media-has-caption": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/auto-height-textarea/__tests__/index.spec.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 2 } }, @@ -970,18 +1017,12 @@ "no-console": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/auto-height-textarea/index.tsx": { - "jsx-a11y/no-autofocus": { - "count": 1 - }, - "react-hooks/rules-of-hooks": { - "count": 1 - }, - "react/rules-of-hooks": { + "jsx_a11y/no-autofocus": { "count": 1 } }, @@ -991,60 +1032,54 @@ } }, "web/app/components/base/carousel/index.tsx": { - "react-hooks-extra/no-direct-set-state-in-use-effect": { + "react/only-export-components": { "count": 1 - }, - "react-refresh/only-export-components": { - "count": 1 - }, - "react/set-state-in-effect": { - "count": 3 } }, "web/app/components/base/chat/chat-with-history/chat-wrapper.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, "web/app/components/base/chat/chat-with-history/context.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, "web/app/components/base/chat/chat-with-history/header-in-mobile.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 4 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 4 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/chat/chat-with-history/header/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/chat/chat-with-history/hooks.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 18 } }, "web/app/components/base/chat/chat-with-history/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/base/chat/chat-with-history/inputs-form/__tests__/content.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/interactive-supports-focus": { + "jsx_a11y/interactive-supports-focus": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -1052,28 +1087,28 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/base/chat/chat-with-history/sidebar/__tests__/operation.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/base/chat/chat-with-history/sidebar/item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/base/chat/chat-with-history/sidebar/operation.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, @@ -1088,115 +1123,109 @@ } }, "web/app/components/base/chat/chat/answer/agent-content.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/chat/chat/answer/human-input-content/content-wrapper.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/chat/chat/answer/suggested-questions.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/chat/chat/answer/tool-detail.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/chat/chat/answer/workflow-process.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/base/chat/chat/check-input-forms-hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/chat/chat/citation/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "react-hooks/exhaustive-deps": { - "count": 1 - }, - "react/set-state-in-effect": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/chat/chat/hooks.ts": { + "eslint-react/set-state-in-effect": { + "count": 2 + }, "no-restricted-imports": { "count": 2 }, - "react/set-state-in-effect": { - "count": 2 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 12 } }, "web/app/components/base/chat/chat/log/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/chat/chat/question.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/base/chat/chat/type.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/base/chat/chat/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/base/chat/embedded-chatbot/chat-wrapper.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/base/chat/embedded-chatbot/context.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, "web/app/components/base/chat/embedded-chatbot/hooks.tsx": { - "react-hooks-extra/no-direct-set-state-in-use-effect": { + "eslint-react/set-state-in-effect": { "count": 3 - }, - "react/set-state-in-effect": { - "count": 6 } }, "web/app/components/base/chat/embedded-chatbot/inputs-form/content.tsx": { "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -1206,36 +1235,36 @@ } }, "web/app/components/base/chat/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 10 } }, "web/app/components/base/date-and-time-picker/date-picker/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/date-and-time-picker/hooks.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 2 } }, "web/app/components/base/date-and-time-picker/time-picker/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/date-and-time-picker/time-picker/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -1255,18 +1284,18 @@ } }, "web/app/components/base/error-boundary/index.tsx": { - "react-refresh/only-export-components": { + "eslint-react/jsx-no-key-after-spread": { "count": 1 }, - "react/jsx-no-key-after-spread": { + "react/only-export-components": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/features/context.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, @@ -1275,13 +1304,13 @@ "count": 1 } }, - "web/app/components/base/features/new-feature-panel/annotation-reply/__tests__/config-param-modal.spec.tsx": { - "jsx-a11y/no-redundant-roles": { + "web/app/components/base/features/new-feature-panel/annotation-reply/__tests__/index.spec.tsx": { + "import/no-duplicates": { "count": 1 } }, "web/app/components/base/features/new-feature-panel/annotation-reply/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -1291,36 +1320,56 @@ } }, "web/app/components/base/features/new-feature-panel/annotation-reply/use-annotation-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, + "web/app/components/base/features/new-feature-panel/conversation-opener/__tests__/index.spec.tsx": { + "import/no-duplicates": { + "count": 1 + } + }, "web/app/components/base/features/new-feature-panel/conversation-opener/modal.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/base/features/new-feature-panel/feature-bar.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/features/new-feature-panel/feature-card.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, + "web/app/components/base/features/new-feature-panel/file-upload/__tests__/index.spec.tsx": { + "import/no-duplicates": { + "count": 1 + } + }, + "web/app/components/base/features/new-feature-panel/image-upload/__tests__/index.spec.tsx": { + "import/no-duplicates": { + "count": 1 + } + }, + "web/app/components/base/features/new-feature-panel/moderation/__tests__/index.spec.tsx": { + "import/no-duplicates": { + "count": 1 + } + }, "web/app/components/base/features/new-feature-panel/moderation/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -1328,7 +1377,7 @@ "erasable-syntax-only/enums": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -1338,52 +1387,52 @@ } }, "web/app/components/base/file-uploader/audio-preview.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/media-has-caption": { + "jsx_a11y/media-has-caption": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/file-uploader/dynamic-pdf-preview.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/file-uploader/file-list-in-log.tsx": { - "react/no-missing-key": { + "eslint-react/no-missing-key": { "count": 1 } }, "web/app/components/base/file-uploader/file-uploader-in-attachment/file-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/file-uploader/file-uploader-in-chat-input/file-image-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/file-uploader/file-uploader-in-chat-input/file-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/file-uploader/hooks.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 1 } }, @@ -1398,15 +1447,15 @@ } }, "web/app/components/base/file-uploader/pdf-preview.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/file-uploader/store.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 4 } }, @@ -1419,18 +1468,18 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/base/file-uploader/video-preview.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/media-has-caption": { + "jsx_a11y/media-has-caption": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -1440,7 +1489,7 @@ } }, "web/app/components/base/form/components/base/base-form.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, @@ -1455,12 +1504,12 @@ } }, "web/app/components/base/form/form-scenarios/base/__tests__/field.spec.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/base/form/form-scenarios/base/field.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -1468,17 +1517,17 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/form/form-scenarios/input-field/__tests__/field.spec.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/base/form/form-scenarios/input-field/field.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -1486,7 +1535,7 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -1496,12 +1545,12 @@ } }, "web/app/components/base/form/hooks/use-check-validated.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/form/hooks/use-get-validators.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -1509,12 +1558,12 @@ "erasable-syntax-only/enums": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 15 } }, "web/app/components/base/form/utils/secret-input/index.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -1739,15 +1788,15 @@ } }, "web/app/components/base/icons/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/base/image-gallery/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-noninteractive-element-interactions": { + "jsx_a11y/no-noninteractive-element-interactions": { "count": 1 } }, @@ -1760,12 +1809,12 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/base/image-uploader/hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -1775,21 +1824,21 @@ } }, "web/app/components/base/image-uploader/image-list.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-noninteractive-element-interactions": { + "jsx_a11y/no-noninteractive-element-interactions": { "count": 1 } }, "web/app/components/base/image-uploader/image-preview.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -1797,7 +1846,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -1807,43 +1856,43 @@ } }, "web/app/components/base/input/index.stories.tsx": { - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 9 }, "no-console": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/input/index.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/base/logo/dify-logo.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, "web/app/components/base/markdown-blocks/__tests__/paragraph.spec.tsx": { - "jsx-a11y/anchor-is-valid": { + "jsx_a11y/anchor-is-valid": { "count": 1 } }, "web/app/components/base/markdown-blocks/audio-block.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/base/markdown-blocks/button.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/markdown-blocks/code-block.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 9 } }, @@ -1861,48 +1910,48 @@ } }, "web/app/components/base/markdown-blocks/link.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-noninteractive-element-interactions": { + "jsx_a11y/no-noninteractive-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/markdown-blocks/paragraph.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/markdown-blocks/plugin-img.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 } }, "web/app/components/base/markdown-blocks/plugin-paragraph.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 } }, "web/app/components/base/markdown-blocks/think-block.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/base/markdown-blocks/video-block.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/base/markdown/__tests__/streamdown-wrapper.spec.tsx": { - "jsx-a11y/anchor-is-valid": { + "jsx_a11y/anchor-is-valid": { "count": 1 } }, "web/app/components/base/markdown/error-boundary.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -1912,22 +1961,22 @@ } }, "web/app/components/base/mermaid/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { + "count": 4 + }, + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 }, - "react/set-state-in-effect": { - "count": 4 - }, "regexp/no-super-linear-backtracking": { "count": 3 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -1935,7 +1984,7 @@ "regexp/no-unused-capturing-group": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, @@ -1943,12 +1992,12 @@ "no-console": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/base/new-audio-button/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -1956,7 +2005,7 @@ "erasable-syntax-only/enums": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, @@ -1971,44 +2020,41 @@ } }, "web/app/components/base/notion-page-selector/page-selector/page-row.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/base/permission-selector/member-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/permission-selector/permission-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/prompt-editor/index.stories.tsx": { - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 4 }, "no-console": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/prompt-editor/plugins/component-picker-block/index.tsx": { - "jsx-a11y/no-autofocus": { - "count": 1 - }, "no-restricted-imports": { "count": 1 } @@ -2019,18 +2065,18 @@ } }, "web/app/components/base/prompt-editor/plugins/component-picker-block/prompt-option.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/prompt-editor/plugins/component-picker-block/variable-option.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2038,23 +2084,23 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, "web/app/components/base/prompt-editor/plugins/current-block/__tests__/component.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/prompt-editor/plugins/current-block/component.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2062,28 +2108,28 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, "web/app/components/base/prompt-editor/plugins/draggable-plugin/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/prompt-editor/plugins/error-message-block/__tests__/component.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/prompt-editor/plugins/error-message-block/component.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2091,15 +2137,15 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, "web/app/components/base/prompt-editor/plugins/history-block/component.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -2107,7 +2153,7 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, @@ -2115,41 +2161,41 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, "web/app/components/base/prompt-editor/plugins/hitl-input-block/input-field.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/base/prompt-editor/plugins/hitl-input-block/pre-populate.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/base/prompt-editor/plugins/hitl-input-block/tag-label.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/prompt-editor/plugins/last-run-block/__tests__/component.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/prompt-editor/plugins/last-run-block/component.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2157,7 +2203,7 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, @@ -2165,7 +2211,7 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, @@ -2173,7 +2219,7 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, @@ -2183,12 +2229,12 @@ } }, "web/app/components/base/prompt-editor/plugins/update-block.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/base/prompt-editor/plugins/variable-block/index.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, @@ -2196,12 +2242,12 @@ "no-barrel-files/no-barrel-files": { "count": 3 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 3 } }, "web/app/components/base/prompt-editor/plugins/workflow-variable-block/node.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -2211,25 +2257,25 @@ } }, "web/app/components/base/prompt-log-modal/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/base/qrcode/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/search-input/__tests__/index.spec.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/base/search-input/index.stories.tsx": { - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 3 }, "no-console": { @@ -2237,45 +2283,45 @@ } }, "web/app/components/base/svg-gallery/index.tsx": { - "node/prefer-global/buffer": { + "node-js/prefer-global/buffer": { "count": 1 } }, "web/app/components/base/tab-slider-new/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/tab-slider-plain/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/base/tab-slider/index.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 1 - }, - "jsx-a11y/no-static-element-interactions": { - "count": 1 - }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 + }, + "jsx_a11y/click-events-have-key-events": { + "count": 1 + }, + "jsx_a11y/no-static-element-interactions": { + "count": 1 } }, "web/app/components/base/tag-input/index.stories.tsx": { - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 12 }, "no-console": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -2288,7 +2334,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -2298,30 +2344,35 @@ } }, "web/app/components/base/video-gallery/VideoPlayer.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/media-has-caption": { + "jsx_a11y/media-has-caption": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/base/voice-input/index.stories.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 }, "no-console": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "web/app/components/base/voice-input/recorder.ts": { + "no-throw-literal": { "count": 1 } }, @@ -2339,20 +2390,20 @@ "erasable-syntax-only/enums": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/billing/pricing/plan-switcher/tab.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/billing/pricing/plans/self-hosted-plan-item/button.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, @@ -2367,93 +2418,88 @@ } }, "web/app/components/datasets/chunk.tsx": { - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 2 } }, "web/app/components/datasets/common/credential-icon.tsx": { - "jsx-a11y/alt-text": { + "jsx_a11y/alt-text": { "count": 1 } }, "web/app/components/datasets/common/document-status-with-action/status-with-action.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/datasets/common/image-list/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/common/image-list/__tests__/more.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { - "count": 1 - } - }, - "web/app/components/datasets/common/image-previewer/index.tsx": { - "no-irregular-whitespace": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/common/image-uploader/__tests__/store.spec.tsx": { - "react/error-boundaries": { + "eslint-react/error-boundaries": { "count": 1 } }, "web/app/components/datasets/common/image-uploader/hooks/use-upload.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/datasets/common/image-uploader/image-uploader-in-chunk/image-input.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/common/image-uploader/image-uploader-in-chunk/image-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/datasets/common/image-uploader/image-uploader-in-retrieval-testing/image-input.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/common/image-uploader/image-uploader-in-retrieval-testing/image-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/datasets/common/image-uploader/store.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 3 } }, "web/app/components/datasets/create-from-pipeline/create-options/create-from-dsl-modal/header.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2471,18 +2517,18 @@ } }, "web/app/components/datasets/create-from-pipeline/create-options/create-from-dsl-modal/tab/item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/create-from-pipeline/list/create-card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2497,10 +2543,10 @@ } }, "web/app/components/datasets/create-from-pipeline/list/template-card/operations.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 } }, @@ -2510,23 +2556,23 @@ } }, "web/app/components/datasets/create/file-preview/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/datasets/create/file-uploader/components/file-list-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/datasets/create/file-uploader/components/upload-dropzone.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-noninteractive-element-interactions": { + "jsx_a11y/no-noninteractive-element-interactions": { "count": 1 } }, @@ -2536,15 +2582,15 @@ } }, "web/app/components/datasets/create/notion-page-preview/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/datasets/create/step-one/components/data-source-type-selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2559,10 +2605,10 @@ } }, "web/app/components/datasets/create/step-one/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2577,10 +2623,10 @@ } }, "web/app/components/datasets/create/step-two/components/option-card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2593,68 +2639,68 @@ "erasable-syntax-only/enums": { "count": 1 }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 3 } }, "web/app/components/datasets/create/website/base/crawled-result-item.tsx": { - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 1 } }, "web/app/components/datasets/create/website/base/options-wrap.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/create/website/firecrawl/index.tsx": { + "eslint-react/set-state-in-effect": { + "count": 1 + }, "no-console": { "count": 1 }, - "react/set-state-in-effect": { - "count": 1 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/datasets/create/website/firecrawl/options.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/datasets/create/website/jina-reader/index.tsx": { + "eslint-react/set-state-in-effect": { + "count": 1 + }, "no-console": { "count": 1 }, - "react/set-state-in-effect": { - "count": 1 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/datasets/create/website/jina-reader/options.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/datasets/create/website/watercrawl/index.tsx": { + "eslint-react/set-state-in-effect": { + "count": 1 + }, "no-console": { "count": 1 }, - "react/set-state-in-effect": { - "count": 1 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/datasets/create/website/watercrawl/options.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -2674,10 +2720,10 @@ } }, "web/app/components/datasets/documents/components/list.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2687,10 +2733,10 @@ } }, "web/app/components/datasets/documents/create-from-pipeline/data-source-options/option-card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2700,26 +2746,26 @@ } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/base/credential-selector/item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/local-file/components/file-list-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/local-file/components/upload-dropzone.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-noninteractive-element-interactions": { + "jsx_a11y/no-noninteractive-element-interactions": { "count": 1 } }, @@ -2727,7 +2773,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -2737,52 +2783,52 @@ } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/file-list/list/item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/index.tsx": { + "eslint-react/set-state-in-effect": { + "count": 5 + }, "no-restricted-imports": { "count": 1 - }, - "react/set-state-in-effect": { - "count": 5 } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/online-drive/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/store/provider.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/store/slices/online-drive.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/website-crawl/base/crawled-result-item.tsx": { - "jsx-a11y/label-has-associated-control": { + "jsx_a11y/label-has-associated-control": { "count": 2 } }, "web/app/components/datasets/documents/create-from-pipeline/data-source/website-crawl/base/options/index.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 1 - }, - "jsx-a11y/no-static-element-interactions": { - "count": 1 - }, - "react/static-components": { + "eslint-react/static-components": { "count": 2 }, - "ts/no-explicit-any": { + "jsx_a11y/click-events-have-key-events": { + "count": 1 + }, + "jsx_a11y/no-static-element-interactions": { + "count": 1 + }, + "typescript/no-explicit-any": { "count": 1 } }, @@ -2790,7 +2836,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -2800,15 +2846,15 @@ } }, "web/app/components/datasets/documents/create-from-pipeline/process-documents/form.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/datasets/documents/create-from-pipeline/process-documents/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -2823,15 +2869,15 @@ } }, "web/app/components/datasets/documents/detail/__tests__/document-title.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/documents/detail/batch-modal/csv-downloader.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, @@ -2841,10 +2887,10 @@ } }, "web/app/components/datasets/documents/detail/completed/child-segment-list.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -2852,18 +2898,18 @@ } }, "web/app/components/datasets/documents/detail/completed/common/chunk-content.tsx": { - "jsx-a11y/no-autofocus": { - "count": 2 - }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 + }, + "jsx_a11y/no-autofocus": { + "count": 2 } }, "web/app/components/datasets/documents/detail/completed/components/__tests__/segment-list-content.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2873,7 +2919,7 @@ } }, "web/app/components/datasets/documents/detail/completed/components/segment-list-content.tsx": { - "ts/no-non-null-asserted-optional-chain": { + "typescript/no-non-null-asserted-optional-chain": { "count": 1 } }, @@ -2886,25 +2932,25 @@ "no-barrel-files/no-barrel-files": { "count": 2 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/datasets/documents/detail/completed/segment-card/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/datasets/documents/detail/completed/segment-list.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/datasets/documents/detail/context.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -2929,12 +2975,12 @@ } }, "web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/datasets/documents/detail/settings/pipeline-settings/process-documents/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -2944,21 +2990,21 @@ } }, "web/app/components/datasets/external-knowledge-base/create/ExternalApiSelect.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 3 - }, - "jsx-a11y/no-static-element-interactions": { - "count": 3 - }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 + }, + "jsx_a11y/click-events-have-key-events": { + "count": 3 + }, + "jsx_a11y/no-static-element-interactions": { + "count": 3 } }, "web/app/components/datasets/external-knowledge-base/create/ExternalApiSelection.tsx": { - "no-restricted-imports": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "react/set-state-in-effect": { + "no-restricted-imports": { "count": 1 } }, @@ -2968,10 +3014,10 @@ } }, "web/app/components/datasets/formatted-text/flavours/__tests__/edit-slice.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -2986,39 +3032,39 @@ } }, "web/app/components/datasets/formatted-text/flavours/type.ts": { - "ts/no-empty-object-type": { + "typescript/no-empty-object-type": { "count": 1 } }, "web/app/components/datasets/hit-testing/components/query-input/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/hit-testing/components/records.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/hit-testing/components/result-item-external.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/hit-testing/components/result-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -3028,55 +3074,55 @@ } }, "web/app/components/datasets/list/dataset-card/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/list/dataset-card/components/operations-dropdown.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/metadata/edit-metadata-batch/add-row.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/metadata/edit-metadata-batch/edit-row.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/metadata/edit-metadata-batch/input-combined.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/datasets/metadata/hooks/use-edit-dataset-metadata.ts": { + "eslint-react/set-state-in-effect": { + "count": 1 + }, "no-restricted-globals": { "count": 2 - }, - "react/set-state-in-effect": { - "count": 1 } }, "web/app/components/datasets/metadata/hooks/use-metadata-document.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 }, - "ts/no-non-null-asserted-optional-chain": { + "typescript/no-non-null-asserted-optional-chain": { "count": 2 } }, @@ -3116,104 +3162,93 @@ } }, "web/app/components/datasets/settings/option-card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/settings/permission-selector/member-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/datasets/settings/permission-selector/permission-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/develop/code.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/develop/doc.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/develop/md.tsx": { - "jsx-a11y/no-redundant-roles": { - "count": 1 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/explore/banner/__tests__/indicator-button.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/explore/banner/banner-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, - "web/app/components/explore/banner/indicator-button.tsx": { - "react-hooks-extra/no-direct-set-state-in-use-effect": { - "count": 1 - }, - "react/set-state-in-effect": { - "count": 2 - } - }, "web/app/components/explore/item-operation/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/explore/learn-dify/item.tsx": { - "jsx-a11y/no-noninteractive-element-interactions": { + "jsx_a11y/no-noninteractive-element-interactions": { "count": 1 } }, "web/app/components/explore/try-app/app/text-generation.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/goto-anything/actions/commands/command-bus.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/goto-anything/actions/commands/registry.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/goto-anything/actions/commands/types.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -3228,12 +3263,12 @@ } }, "web/app/components/goto-anything/actions/types.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/goto-anything/components/__tests__/search-input.spec.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, @@ -3243,7 +3278,7 @@ } }, "web/app/components/goto-anything/components/search-input.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, "no-restricted-imports": { @@ -3251,11 +3286,11 @@ } }, "web/app/components/goto-anything/context.tsx": { - "react-refresh/only-export-components": { - "count": 1 - }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 4 + }, + "react/only-export-components": { + "count": 1 } }, "web/app/components/goto-anything/hooks/use-goto-anything-results.ts": { @@ -3264,18 +3299,18 @@ } }, "web/app/components/header/account-setting/data-source-page-new/__tests__/item.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/header/account-setting/data-source-page-new/card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -3285,33 +3320,33 @@ } }, "web/app/components/header/account-setting/data-source-page-new/hooks/use-marketplace-all-plugins.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/header/account-setting/data-source-page-new/plugin-actions.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/header/account-setting/data-source-page-new/types.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/header/account-setting/members-page/invite-modal/index.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/header/account-setting/members-page/transfer-ownership-modal/member-selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -3322,55 +3357,55 @@ "erasable-syntax-only/enums": { "count": 11 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/header/account-setting/model-provider-page/hooks.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/header/account-setting/model-provider-page/model-auth/add-custom-model.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/header/account-setting/model-provider-page/model-auth/authorized/credential-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/header/account-setting/model-provider-page/model-auth/authorized/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/header/account-setting/model-provider-page/model-auth/config-model.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/header/account-setting/model-provider-page/model-auth/credential-selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -3380,17 +3415,17 @@ } }, "web/app/components/header/account-setting/model-provider-page/model-auth/hooks/use-auth.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/header/account-setting/model-provider-page/model-auth/hooks/use-custom-models.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 2 } }, "web/app/components/header/account-setting/model-provider-page/model-auth/hooks/use-model-form-schemas.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -3405,79 +3440,79 @@ } }, "web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/header/account-setting/model-provider-page/model-parameter-modal/configuration-button.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/header/account-setting/model-provider-page/model-parameter-modal/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/header/account-setting/model-provider-page/model-parameter-modal/model-display.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/header/account-setting/model-provider-page/model-parameter-modal/status-indicators.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/header/account-setting/model-provider-page/provider-added-card/cooldown-timer.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/__tests__/use-activate-credential.spec.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/header/account-setting/model-provider-page/provider-added-card/model-load-balancing-configs.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { - "count": 1 + "jsx_a11y/no-static-element-interactions": { + "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/header/account-setting/model-provider-page/provider-added-card/model-load-balancing-modal.tsx": { - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "react/set-state-in-effect": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/header/account-setting/model-provider-page/provider-added-card/quota-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -3487,25 +3522,25 @@ } }, "web/app/components/header/account-setting/permission-group-list.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/main-nav/components/workspace-switcher.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/plugins/install-plugin/hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/plugins/install-plugin/hooks/use-fold-anim-into.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 1 } }, @@ -3513,38 +3548,51 @@ "erasable-syntax-only/enums": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/plugins/install-plugin/install-bundle/item/github-item.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { + "count": 1 + }, + "import/no-duplicates": { + "count": 1 + } + }, + "web/app/components/plugins/install-plugin/install-bundle/item/marketplace-item.tsx": { + "import/no-duplicates": { + "count": 1 + } + }, + "web/app/components/plugins/install-plugin/install-bundle/item/package-item.tsx": { + "import/no-duplicates": { "count": 1 } }, "web/app/components/plugins/install-plugin/install-bundle/steps/__tests__/install-multi.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 } }, - "web/app/components/plugins/install-plugin/install-bundle/steps/hooks/use-install-multi-state.ts": { - "react-hooks/exhaustive-deps": { - "count": 1 - } - }, "web/app/components/plugins/install-plugin/install-from-github/index.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/plugins/install-plugin/install-from-github/steps/selectPackage.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { + "count": 1 + } + }, + "web/app/components/plugins/install-plugin/utils.ts": { + "import/no-duplicates": { "count": 1 } }, @@ -3557,34 +3605,34 @@ } }, "web/app/components/plugins/marketplace/list/list-with-collection.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/plugins/marketplace/plugin-type-switch.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/plugins/marketplace/search-box/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-autofocus": { - "count": 2 + "jsx_a11y/no-autofocus": { + "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/plugins/marketplace/search-box/index.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, @@ -3599,10 +3647,10 @@ } }, "web/app/components/plugins/plugin-auth/authorized/item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -3610,7 +3658,7 @@ } }, "web/app/components/plugins/plugin-auth/hooks/use-get-api.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 1 } }, @@ -3618,7 +3666,7 @@ "no-barrel-files/no-barrel-files": { "count": 12 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 3 } }, @@ -3631,7 +3679,7 @@ } }, "web/app/components/plugins/plugin-detail-panel/agent-strategy-list.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -3639,12 +3687,12 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/app/components/plugins/plugin-detail-panel/datasource-action-list.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -3664,83 +3712,86 @@ } }, "web/app/components/plugins/plugin-detail-panel/endpoint-list.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/plugins/plugin-detail-panel/endpoint-modal.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, "web/app/components/plugins/plugin-detail-panel/model-list.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/plugins/plugin-detail-panel/model-selector/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/plugins/plugin-detail-panel/model-selector/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/plugins/plugin-detail-panel/model-selector/tts-params-panel.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/plugins/plugin-detail-panel/multiple-tool-selector/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/plugins/plugin-detail-panel/strategy-detail.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/plugins/plugin-detail-panel/strategy-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/plugins/plugin-detail-panel/subscription-list/__tests__/index.spec.tsx": { - "ts/no-explicit-any": { + "no-throw-literal": { + "count": 1 + }, + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/plugins/plugin-detail-panel/subscription-list/__tests__/selector-entry.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/plugins/plugin-detail-panel/subscription-list/create/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -3750,10 +3801,10 @@ } }, "web/app/components/plugins/plugin-detail-panel/subscription-list/create/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -3776,7 +3827,7 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -3791,10 +3842,10 @@ } }, "web/app/components/plugins/plugin-detail-panel/tool-selector/components/reasoning-config-form.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -3807,13 +3858,13 @@ } }, "web/app/components/plugins/plugin-detail-panel/tool-selector/components/tool-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/mouse-events-have-key-events": { + "jsx_a11y/mouse-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 } }, @@ -3823,37 +3874,37 @@ } }, "web/app/components/plugins/plugin-detail-panel/trigger/event-detail-drawer.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/plugins/plugin-detail-panel/trigger/event-list.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/plugins/plugin-item/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/plugins/plugin-page/context.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -3868,26 +3919,26 @@ } }, "web/app/components/plugins/reference-setting-modal/auto-update-setting/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/plugins/reference-setting-modal/auto-update-setting/__tests__/tool-picker.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/plugins/reference-setting-modal/auto-update-setting/tool-picker.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -3900,128 +3951,128 @@ "erasable-syntax-only/enums": { "count": 7 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 25 } }, "web/app/components/plugins/update-plugin/plugin-version-picker.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/rag-pipeline/components/__tests__/publish-as-knowledge-pipeline-modal.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/input-field/editor/form/__tests__/hidden-fields.spec.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 4 } }, "web/app/components/rag-pipeline/components/panel/input-field/editor/form/__tests__/show-all-settings.spec.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 4 } }, "web/app/components/rag-pipeline/components/panel/input-field/editor/form/hidden-fields.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/input-field/editor/form/hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/rag-pipeline/components/panel/input-field/editor/form/index.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 6 } }, "web/app/components/rag-pipeline/components/panel/input-field/editor/form/initial-fields.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/rag-pipeline/components/panel/input-field/editor/form/show-all-settings.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/input-field/editor/form/types.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/input-field/field-list/__tests__/index.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/rag-pipeline/components/panel/input-field/hooks.ts": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/input-field/preview/form.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/rag-pipeline/components/panel/test-run/preparation/data-source-options/option-card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/test-run/preparation/document-processing/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/test-run/preparation/document-processing/options.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/rag-pipeline/components/panel/test-run/preparation/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/rag-pipeline/components/panel/test-run/result/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/test-run/result/result-preview/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/components/panel/test-run/result/result-preview/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, @@ -4031,20 +4082,20 @@ } }, "web/app/components/rag-pipeline/components/publish-toast.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/rag-pipeline/components/rag-pipeline-children.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/components/rag-pipeline-header/run-mode.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -4054,12 +4105,12 @@ } }, "web/app/components/rag-pipeline/hooks/use-DSL.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/hooks/use-input-fields.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -4067,17 +4118,17 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/rag-pipeline/hooks/use-pipeline-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/rag-pipeline/hooks/use-pipeline-init.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -4085,12 +4136,12 @@ "no-restricted-imports": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/rag-pipeline/store/index.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -4100,17 +4151,17 @@ } }, "web/app/components/rag-pipeline/utils/nodes.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/share/text-generation/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/share/text-generation/no-data/index.tsx": { - "ts/no-empty-object-type": { + "typescript/no-empty-object-type": { "count": 1 } }, @@ -4125,7 +4176,7 @@ } }, "web/app/components/share/text-generation/result/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -4135,39 +4186,39 @@ } }, "web/app/components/share/text-generation/run-batch/csv-download/index.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/share/text-generation/run-batch/csv-reader/index.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/share/text-generation/run-batch/res-download/index.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/share/text-generation/run-once/index.tsx": { + "eslint-react/set-state-in-effect": { + "count": 1 + }, "no-restricted-imports": { "count": 1 }, - "react/set-state-in-effect": { - "count": 1 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/share/text-generation/text-generation-result-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -4177,18 +4228,18 @@ } }, "web/app/components/snippets/components/snippet-run-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 5 }, - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 6 } }, "web/app/components/snippets/create-snippet-dialog.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, @@ -4203,38 +4254,38 @@ } }, "web/app/components/tools/edit-custom-collection-modal/index.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 1 - }, - "jsx-a11y/no-static-element-interactions": { - "count": 1 - }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 4 }, - "ts/no-explicit-any": { + "jsx_a11y/click-events-have-key-events": { + "count": 1 + }, + "jsx_a11y/no-static-element-interactions": { + "count": 1 + }, + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/tools/edit-custom-collection-modal/test-api.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/tools/labels/__tests__/selector.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -4249,28 +4300,28 @@ } }, "web/app/components/tools/mcp/mcp-server-param-item.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/tools/provider/tool-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/tools/setting/build-in/config-credentials.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/tools/tool-provider-grid.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -4278,23 +4329,23 @@ "erasable-syntax-only/enums": { "count": 4 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/tools/workflow-tool/__tests__/configure-button.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/tools/workflow-tool/configure-button.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -4304,20 +4355,20 @@ } }, "web/app/components/workflow-app/components/__tests__/workflow-children.spec.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/workflow-app/components/workflow-children.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow-app/components/workflow-onboarding-modal/start-node-option.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -4327,7 +4378,7 @@ } }, "web/app/components/workflow-app/hooks/use-DSL.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -4337,7 +4388,7 @@ } }, "web/app/components/workflow-app/hooks/use-workflow-refresh-draft.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -4357,62 +4408,67 @@ } }, "web/app/components/workflow-app/hooks/use-workflow-template.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow-app/store/workflow/workflow-slice.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/block-selector/all-start-blocks.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/workflow/block-selector/all-tools.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, + "web/app/components/workflow/block-selector/constants.tsx": { + "react/only-export-components": { + "count": 3 + } + }, "web/app/components/workflow/block-selector/featured-tools.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/block-selector/featured-triggers.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/block-selector/hooks.ts": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/workflow/block-selector/index-bar.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/workflow/block-selector/main.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 4 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -4420,39 +4476,39 @@ } }, "web/app/components/workflow/block-selector/market-place-plugin/list.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/block-selector/rag-tool-recommendations/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/block-selector/rag-tool-recommendations/uninstalled-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/block-selector/snippets/index.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/workflow/block-selector/tabs.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -4462,10 +4518,10 @@ } }, "web/app/components/workflow/block-selector/tool/tool.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -4483,73 +4539,68 @@ "erasable-syntax-only/enums": { "count": 1 }, - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/workflow/comment/comment-input.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/workflow/comment/comment-preview.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/comment/mention-input.spec.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/workflow/comment/mention-input.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { - "count": 1 - } - }, - "web/app/components/workflow/comment/thread.tsx": { - "jsx-a11y/no-autofocus": { - "count": 2 + "jsx_a11y/no-static-element-interactions": { + "count": 3 } }, "web/app/components/workflow/context.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/workflow/datasets-detail-store/provider.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/workflow/header/online-users.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/workflow/header/scroll-to-selected-node-button.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -4557,23 +4608,23 @@ "erasable-syntax-only/enums": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/components/workflow/header/view-history.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/header/view-workflow-history.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 } }, @@ -4583,7 +4634,7 @@ } }, "web/app/components/workflow/hooks-store/provider.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, @@ -4591,12 +4642,12 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/workflow/hooks/__tests__/use-checklist.spec.ts": { - "react/error-boundaries": { + "eslint-react/error-boundaries": { "count": 1 } }, @@ -4606,30 +4657,30 @@ } }, "web/app/components/workflow/hooks/use-checklist.ts": { - "ts/no-empty-object-type": { + "typescript/no-empty-object-type": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/hooks/use-dynamic-test-run-options.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/hooks/use-helpline.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/hooks/use-inspect-vars-crud-common.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/hooks/use-serial-async-callback.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -4639,109 +4690,104 @@ } }, "web/app/components/workflow/hooks/use-workflow-run-event/use-workflow-agent-log.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/hooks/use-workflow-run-event/use-workflow-finished.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/hooks/use-workflow-search.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/hooks/use-workflow-variables.ts": { - "ts/no-explicit-any": { - "count": 1 - } - }, - "web/app/components/workflow/index.tsx": { - "jsx-a11y/no-autofocus": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/__tests__/agent-strategy-selector.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/__tests__/node-handle.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/add-variable-popup-with-position.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/nodes/_base/components/agent-strategy.tsx": { - "ts/no-empty-object-type": { + "typescript/no-empty-object-type": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/nodes/_base/components/before-run-form/form-item.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 3 }, "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 11 } }, "web/app/components/workflow/nodes/_base/components/before-run-form/form.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 }, - "ts/no-non-null-asserted-optional-chain": { + "typescript/no-non-null-asserted-optional-chain": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/before-run-form/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/nodes/_base/components/before-run-form/panel-wrap.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/editor/base.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/editor/code-editor/editor-support-vars.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/workflow/nodes/_base/components/editor/code-editor/index.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, @@ -4749,7 +4795,7 @@ "erasable-syntax-only/enums": { "count": 1 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, @@ -4757,7 +4803,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -4765,31 +4811,31 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/field.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/file-type-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/workflow/nodes/_base/components/form-input-boolean.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -4799,23 +4845,23 @@ } }, "web/app/components/workflow/nodes/_base/components/input-support-select-var.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/input-var-type-icon.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/layout/field-title.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -4823,12 +4869,12 @@ "no-barrel-files/no-barrel-files": { "count": 6 }, - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 6 } }, "web/app/components/workflow/nodes/_base/components/mcp-tool-availability.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, @@ -4841,36 +4887,36 @@ } }, "web/app/components/workflow/nodes/_base/components/next-step/operator.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/workflow/nodes/_base/components/node-control.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/option-card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/prompt/editor.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/nodes/_base/components/readonly-input-with-select-var.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -4880,44 +4926,44 @@ } }, "web/app/components/workflow/nodes/_base/components/selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/nodes/_base/components/setting-item.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/switch-plugin-version.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/variable/manage-input-field.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/workflow/nodes/_base/components/variable/match-schema-type.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/app/components/workflow/nodes/_base/components/variable/object-child-tree-panel/picker/field.tsx": { - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -4925,12 +4971,12 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-non-null-asserted-optional-chain": { + "typescript/no-non-null-asserted-optional-chain": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/variable/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 31 } }, @@ -4940,21 +4986,24 @@ } }, "web/app/components/workflow/nodes/_base/components/variable/var-reference-picker.trigger.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 } }, "web/app/components/workflow/nodes/_base/components/variable/var-reference-vars.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 2 - }, - "jsx-a11y/no-autofocus": { + "import/no-duplicates": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { + "count": 2 + }, + "jsx_a11y/no-autofocus": { + "count": 1 + }, + "jsx_a11y/no-static-element-interactions": { "count": 2 }, "no-restricted-imports": { @@ -4962,23 +5011,23 @@ } }, "web/app/components/workflow/nodes/_base/components/variable/variable-label/base/variable-icon.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/workflow/nodes/_base/components/variable/variable-label/base/variable-label.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/_base/components/variable/variable-label/hooks.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 2 }, - "react/use-memo": { + "eslint-react/use-memo": { "count": 2 } }, @@ -4988,55 +5037,58 @@ } }, "web/app/components/workflow/nodes/_base/components/workflow-panel/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 7 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 2 }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, "web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts": { + "eslint-react/set-state-in-effect": { + "count": 2 + }, "no-restricted-imports": { "count": 1 }, - "react/set-state-in-effect": { - "count": 2 + "no-throw-literal": { + "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 22 } }, "web/app/components/workflow/nodes/_base/hooks/use-output-var-list.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/app/components/workflow/nodes/_base/hooks/use-toggle-expend.ts": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, "web/app/components/workflow/nodes/_base/hooks/use-var-list.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -5044,25 +5096,25 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/agent/default.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/nodes/agent/node.tsx": { - "react/jsx-no-key-after-spread": { + "eslint-react/jsx-no-key-after-spread": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/nodes/agent/panel.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5070,12 +5122,12 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/agent/use-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, @@ -5085,7 +5137,7 @@ } }, "web/app/components/workflow/nodes/assigner/hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5093,17 +5145,17 @@ "erasable-syntax-only/enums": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/assigner/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/nodes/assigner/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5113,43 +5165,43 @@ } }, "web/app/components/workflow/nodes/code/use-config.ts": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 }, "regexp/no-useless-assertions": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/workflow/nodes/code/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/nodes/data-source-empty/hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/data-source/default.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/nodes/data-source/hooks/use-before-run-form.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/data-source/hooks/use-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/workflow/nodes/data-source/panel.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -5157,22 +5209,22 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/data-source/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/document-extractor/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/nodes/end/node.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5182,26 +5234,26 @@ } }, "web/app/components/workflow/nodes/http/components/authorization/radio-group.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/http/components/key-value/key-value-edit/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/nodes/http/components/key-value/key-value-edit/item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5211,10 +5263,10 @@ } }, "web/app/components/workflow/nodes/http/panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -5224,23 +5276,23 @@ } }, "web/app/components/workflow/nodes/http/use-config.ts": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/http/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/nodes/human-input/components/button-style-dropdown.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 4 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 4 } }, @@ -5250,39 +5302,39 @@ } }, "web/app/components/workflow/nodes/human-input/components/delivery-method/method-selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/workflow/nodes/human-input/components/delivery-method/recipient/__tests__/email-input.spec.tsx": { - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/human-input/components/delivery-method/recipient/email-input.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/human-input/components/delivery-method/recipient/email-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/human-input/components/delivery-method/recipient/member-list.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -5290,15 +5342,15 @@ } }, "web/app/components/workflow/nodes/human-input/components/delivery-method/test-email-sender.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/workflow/nodes/human-input/components/timeout.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 }, "no-restricted-imports": { @@ -5316,23 +5368,23 @@ } }, "web/app/components/workflow/nodes/if-else/components/condition-list/condition-input.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/if-else/components/condition-list/condition-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/if-else/components/condition-list/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -5342,17 +5394,17 @@ } }, "web/app/components/workflow/nodes/if-else/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/nodes/index.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 4 } }, "web/app/components/workflow/nodes/iteration/node.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 } }, @@ -5362,7 +5414,7 @@ } }, "web/app/components/workflow/nodes/iteration/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, @@ -5372,20 +5424,20 @@ } }, "web/app/components/workflow/nodes/knowledge-base/components/option-card.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/hooks.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/type.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -5398,7 +5450,7 @@ } }, "web/app/components/workflow/nodes/knowledge-base/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -5408,10 +5460,10 @@ } }, "web/app/components/workflow/nodes/knowledge-retrieval/components/metadata/add-condition.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -5419,21 +5471,21 @@ } }, "web/app/components/workflow/nodes/knowledge-retrieval/components/metadata/condition-list/condition-common-variable-selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/knowledge-retrieval/components/metadata/condition-list/condition-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5443,10 +5495,10 @@ } }, "web/app/components/workflow/nodes/knowledge-retrieval/components/metadata/condition-list/condition-operator.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -5456,31 +5508,31 @@ } }, "web/app/components/workflow/nodes/knowledge-retrieval/components/metadata/condition-list/condition-value-method.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/knowledge-retrieval/components/metadata/condition-list/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/knowledge-retrieval/components/metadata/metadata-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/knowledge-retrieval/node.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 } }, @@ -5488,17 +5540,17 @@ "erasable-syntax-only/enums": { "count": 4 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/knowledge-retrieval/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/nodes/list-operator/components/filter-condition.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5508,12 +5560,12 @@ } }, "web/app/components/workflow/nodes/llm/components/config-prompt.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/llm/components/json-schema-config-modal/json-importer.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -5528,17 +5580,17 @@ } }, "web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/context.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 2 } }, "web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/llm/components/structure-output.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -5548,15 +5600,15 @@ } }, "web/app/components/workflow/nodes/llm/use-config.ts": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/llm/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 9 } }, @@ -5564,28 +5616,28 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, "web/app/components/workflow/nodes/loop/components/condition-list/condition-input.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/loop/components/condition-list/condition-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/loop/components/condition-list/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -5593,26 +5645,26 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/nodes/loop/components/loop-variables/item.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/nodes/loop/panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -5620,35 +5672,30 @@ "erasable-syntax-only/enums": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/loop/use-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, - "web/app/components/workflow/nodes/loop/use-single-run-form-params.helpers.ts": { - "ts/no-non-null-asserted-optional-chain": { - "count": 1 - } - }, "web/app/components/workflow/nodes/loop/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/nodes/parameter-extractor/components/extract-parameter/__tests__/list.spec.tsx": { - "unused-imports/no-unused-vars": { + "no-unused-vars": { "count": 1 } }, "web/app/components/workflow/nodes/parameter-extractor/components/extract-parameter/item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, @@ -5656,7 +5703,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5666,117 +5713,117 @@ } }, "web/app/components/workflow/nodes/parameter-extractor/use-config.ts": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/nodes/parameter-extractor/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 9 } }, "web/app/components/workflow/nodes/question-classifier/components/class-item.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/workflow/nodes/question-classifier/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/app/components/workflow/nodes/start/panel.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/nodes/start/use-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/start/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/nodes/template-transform/use-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/nodes/template-transform/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/nodes/tool/components/__tests__/copy-id.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/tool/components/copy-id.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/nodes/tool/components/mixed-variable-text-input/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/tool/components/mixed-variable-text-input/placeholder.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/tool/components/tool-form/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/tool/components/tool-form/item.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/tool/default.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/workflow/nodes/tool/hooks/use-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/workflow/nodes/tool/hooks/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/app/components/workflow/nodes/tool/output-schema-utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/nodes/tool/panel.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -5784,42 +5831,42 @@ "no-barrel-files/no-barrel-files": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/nodes/trigger-plugin/components/trigger-form/index.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/trigger-plugin/components/trigger-form/item.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/trigger-plugin/default.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 10 } }, "web/app/components/workflow/nodes/trigger-plugin/node.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/nodes/trigger-plugin/panel.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/nodes/trigger-plugin/types.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/nodes/trigger-plugin/use-config.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -5827,7 +5874,7 @@ "regexp/no-unused-capturing-group": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, @@ -5842,36 +5889,36 @@ } }, "web/app/components/workflow/nodes/trigger-webhook/components/parameter-table.tsx": { - "ts/no-non-null-asserted-optional-chain": { + "typescript/no-non-null-asserted-optional-chain": { "count": 1 } }, "web/app/components/workflow/nodes/utils.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/variable-assigner/components/var-group-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/variable-assigner/default.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/nodes/variable-assigner/use-single-run-form-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, @@ -5881,56 +5928,56 @@ } }, "web/app/components/workflow/note-node/note-editor/plugins/link-editor-plugin/component.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 2 - }, - "jsx-a11y/no-autofocus": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { + "count": 2 + }, + "jsx_a11y/no-autofocus": { + "count": 1 + }, + "jsx_a11y/no-static-element-interactions": { "count": 2 }, "no-restricted-imports": { "count": 1 - }, - "react/set-state-in-effect": { - "count": 1 } }, "web/app/components/workflow/note-node/note-editor/toolbar/__tests__/operator.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 } }, "web/app/components/workflow/note-node/note-editor/toolbar/color-picker.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/note-node/note-editor/toolbar/font-size-selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/note-node/note-editor/toolbar/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/note-node/note-editor/toolbar/operator.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -5945,39 +5992,39 @@ } }, "web/app/components/workflow/operator/hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/panel/__tests__/index.spec.tsx": { - "react/static-components": { + "eslint-react/static-components": { "count": 2 } }, "web/app/components/workflow/panel/chat-record/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/app/components/workflow/panel/chat-record/user-input.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/panel/chat-variable-panel/components/array-bool-list.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -5985,25 +6032,25 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/panel/chat-variable-panel/components/object-value-item.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/panel/chat-variable-panel/components/object-value-list.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/panel/chat-variable-panel/components/variable-item.tsx": { - "jsx-a11y/mouse-events-have-key-events": { + "jsx_a11y/mouse-events-have-key-events": { "count": 2 } }, @@ -6013,18 +6060,18 @@ } }, "web/app/components/workflow/panel/chat-variable-panel/components/variable-modal.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/panel/chat-variable-panel/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -6034,10 +6081,10 @@ } }, "web/app/components/workflow/panel/comments-panel/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 3 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 3 } }, @@ -6047,12 +6094,12 @@ } }, "web/app/components/workflow/panel/debug-and-preview/chat-wrapper.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, "web/app/components/workflow/panel/debug-and-preview/conversation-variable-modal.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -6060,147 +6107,150 @@ "no-restricted-imports": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 11 } }, "web/app/components/workflow/panel/debug-and-preview/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/panel/debug-and-preview/user-input.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/components/workflow/panel/env-panel/env-item.tsx": { - "jsx-a11y/mouse-events-have-key-events": { + "jsx_a11y/mouse-events-have-key-events": { "count": 2 } }, "web/app/components/workflow/panel/env-panel/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/panel/env-panel/variable-modal.tsx": { - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { "count": 4 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { + "count": 4 + }, + "jsx_a11y/no-static-element-interactions": { "count": 4 }, "no-restricted-imports": { "count": 1 }, - "react/set-state-in-effect": { - "count": 4 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/panel/global-variable-panel/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/panel/human-input-form-list.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/panel/inputs-panel.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/panel/version-history-panel/filter/filter-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/panel/version-history-panel/index.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 + }, + "no-useless-return": { + "count": 1 } }, "web/app/components/workflow/panel/version-history-panel/version-history-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/panel/workflow-preview.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 4 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 5 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/run/__tests__/special-result-panel.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/run/__tests__/tracing-panel.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/run/agent-log/agent-log-item.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/run/hooks.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/run/index.tsx": { - "jsx-a11y/click-events-have-key-events": { - "count": 3 - }, - "jsx-a11y/no-static-element-interactions": { - "count": 3 - }, - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 1 + }, + "jsx_a11y/click-events-have-key-events": { + "count": 3 + }, + "jsx_a11y/no-static-element-interactions": { + "count": 3 } }, "web/app/components/workflow/run/iteration-log/index.tsx": { @@ -6214,21 +6264,21 @@ } }, "web/app/components/workflow/run/iteration-log/iteration-result-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/workflow/run/loop-log/__tests__/loop-log-trigger.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -6243,47 +6293,47 @@ } }, "web/app/components/workflow/run/loop-log/loop-result-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 2 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 2 } }, "web/app/components/workflow/run/node.tsx": { - "jsx-a11y/click-events-have-key-events": { + "eslint-react/set-state-in-effect": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "react/set-state-in-effect": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/run/output-panel.tsx": { - "jsx-a11y/no-noninteractive-tabindex": { + "jsx_a11y/no-noninteractive-tabindex": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/run/result-panel.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, "web/app/components/workflow/run/result-text.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/run/retry-log/__tests__/retry-log-trigger.spec.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, @@ -6293,36 +6343,36 @@ } }, "web/app/components/workflow/run/retry-log/retry-result-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/run/special-result-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/run/status.tsx": { - "jsx-a11y/anchor-has-content": { + "jsx_a11y/anchor-has-content": { "count": 1 } }, "web/app/components/workflow/run/tracing-panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/components/workflow/run/utils/format-log/agent/index.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 11 } }, @@ -6337,12 +6387,12 @@ } }, "web/app/components/workflow/store/workflow/debug/inspect-vars-slice.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/store/workflow/workflow-draft-slice.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -6350,25 +6400,25 @@ "erasable-syntax-only/enums": { "count": 16 }, - "ts/no-empty-object-type": { + "typescript/no-empty-object-type": { "count": 3 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 } }, "web/app/components/workflow/update-dsl-modal.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/utils/__tests__/node-navigation.spec.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/utils/data-source.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -6378,7 +6428,7 @@ } }, "web/app/components/workflow/utils/node-navigation.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -6388,80 +6438,80 @@ } }, "web/app/components/workflow/utils/tool.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/utils/workflow-init.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 12 } }, "web/app/components/workflow/utils/workflow.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/variable-inspect/display-content.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/variable-inspect/group.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/variable-inspect/left.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/variable-inspect/listening.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/variable-inspect/panel.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/variable-inspect/right.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/app/components/workflow/variable-inspect/trigger.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 5 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 5 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/components/workflow/variable-inspect/utils.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/app/components/workflow/variable-inspect/value-content.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 5 }, "regexp/no-super-linear-backtracking": { @@ -6470,38 +6520,43 @@ "regexp/no-unused-capturing-group": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, + "web/app/components/workflow/workflow-generator/example-prompts.tsx": { + "no-useless-return": { + "count": 1 + } + }, "web/app/components/workflow/workflow-preview/components/nodes/constants.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/device/components/code-input.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/device/page.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/app/education-apply/role-selector.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/app/education-apply/search-input.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -6514,7 +6569,7 @@ } }, "web/app/forgot-password/ForgotPasswordForm.spec.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, @@ -6524,12 +6579,12 @@ } }, "web/app/init/InitPasswordPopup.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/app/install/installForm.spec.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, @@ -6539,15 +6594,15 @@ } }, "web/app/layout.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/app/reset-password/check-code/page.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -6555,7 +6610,7 @@ } }, "web/app/reset-password/layout.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -6570,10 +6625,10 @@ } }, "web/app/signin/check-code/page.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -6581,7 +6636,7 @@ } }, "web/app/signin/layout.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -6591,10 +6646,10 @@ } }, "web/app/signup/check-code/page.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 }, "no-restricted-imports": { @@ -6602,7 +6657,7 @@ } }, "web/app/signup/components/input-mail.tsx": { - "jsx-a11y/tabindex-no-positive": { + "jsx_a11y/tabindex-no-positive": { "count": 2 }, "no-restricted-imports": { @@ -6610,7 +6665,7 @@ } }, "web/app/signup/layout.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -6620,43 +6675,43 @@ } }, "web/context/external-api-panel-context.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/context/external-knowledge-api-context.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/context/hooks/use-trigger-events-limit-modal.ts": { + "eslint-react/set-state-in-effect": { + "count": 3 + }, "no-restricted-globals": { "count": 2 - }, - "react/set-state-in-effect": { - "count": 3 } }, "web/context/web-app-context.tsx": { - "react-refresh/only-export-components": { + "react/only-export-components": { "count": 1 } }, "web/features/tag-management/components/dataset-card-tags.tsx": { - "jsx-a11y/click-events-have-key-events": { + "jsx_a11y/click-events-have-key-events": { "count": 1 }, - "jsx-a11y/no-static-element-interactions": { + "jsx_a11y/no-static-element-interactions": { "count": 1 } }, "web/features/tag-management/components/tag-item-editor.tsx": { - "jsx-a11y/no-autofocus": { + "jsx_a11y/no-autofocus": { "count": 1 } }, "web/hooks/use-async-window-open.spec.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, @@ -6664,27 +6719,27 @@ "regexp/no-dupe-disjunctions": { "count": 5 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/hooks/use-metadata.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/hooks/use-mitt.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/hooks/use-oauth.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/hooks/use-pay.tsx": { - "react/set-state-in-effect": { + "eslint-react/set-state-in-effect": { "count": 4 } }, @@ -6707,7 +6762,7 @@ "erasable-syntax-only/enums": { "count": 7 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, @@ -6715,7 +6770,7 @@ "erasable-syntax-only/enums": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, @@ -6723,7 +6778,7 @@ "erasable-syntax-only/enums": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, @@ -6731,12 +6786,12 @@ "erasable-syntax-only/enums": { "count": 3 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, "web/models/share.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -6809,7 +6864,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, @@ -6817,7 +6872,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, @@ -6825,7 +6880,7 @@ "no-restricted-imports": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -6838,7 +6893,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 9 } }, @@ -6846,7 +6901,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, @@ -6854,7 +6909,7 @@ "no-restricted-imports": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 6 } }, @@ -6867,7 +6922,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -6933,7 +6988,7 @@ "no-restricted-imports": { "count": 2 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -6971,12 +7026,12 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 7 } }, "web/service/use-flow.ts": { - "react/no-unnecessary-use-prefix": { + "eslint-react/no-unnecessary-use-prefix": { "count": 1 } }, @@ -7007,7 +7062,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 4 } }, @@ -7023,7 +7078,7 @@ "no-restricted-imports": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, @@ -7033,7 +7088,7 @@ } }, "web/service/utils.spec.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, @@ -7051,7 +7106,7 @@ } }, "web/types/assets.d.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 5 } }, @@ -7061,22 +7116,22 @@ } }, "web/types/pipeline.tsx": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/types/workflow.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 17 } }, "web/utils/completion-params.spec.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/utils/completion-params.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, @@ -7084,45 +7139,45 @@ "no-console": { "count": 1 }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/utils/get-icon.spec.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/utils/gtag.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } }, "web/utils/index.spec.ts": { - "test/no-identical-title": { - "count": 2 - }, - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 8 + }, + "vitest/no-identical-title": { + "count": 2 } }, "web/utils/index.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 3 } }, "web/utils/mcp.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/utils/tool-call.spec.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 1 } }, "web/utils/validators.ts": { - "ts/no-explicit-any": { + "typescript/no-explicit-any": { "count": 2 } } diff --git a/package.json b/package.json index 67be592bca3..3c99225318c 100644 --- a/package.json +++ b/package.json @@ -8,21 +8,47 @@ "fmt:check": "vp fmt --check", "prepare": "vp config", "type-check": "vp run -r type-check", - "lint": "eslint --cache --concurrency=auto", - "lint:ci": "eslint --cache --cache-strategy content --concurrency 2", - "lint:fix": "vp run lint --fix", - "lint:quiet": "vp run lint --quiet" + "lint": "pnpm lint:oxlint && pnpm lint:eslint", + "lint:ci": "pnpm lint:oxlint && pnpm lint:eslint", + "lint:fix": "pnpm lint:oxlint:fix && pnpm lint:eslint:fix", + "lint:quiet": "pnpm lint:oxlint:quiet && pnpm lint:eslint:quiet", + "lint:oxlint": "vp lint", + "lint:oxlint:fix": "vp lint --fix", + "lint:oxlint:quiet": "vp lint --quiet", + "lint:eslint": "eslint --concurrency=auto", + "lint:eslint:fix": "eslint --fix --concurrency=auto", + "lint:eslint:quiet": "eslint --quiet --concurrency=auto" }, "devDependencies": { - "@antfu/eslint-config": "catalog:", + "@eslint-community/eslint-plugin-eslint-comments": "catalog:", + "@eslint-react/eslint-plugin": "catalog:", + "@eslint/markdown": "catalog:", "@iconify-json/heroicons": "catalog:", "@iconify-json/ri": "catalog:", + "@tanstack/eslint-plugin-query": "catalog:", + "@typescript-eslint/parser": "catalog:", "@typescript/native": "catalog:", "concurrently": "catalog:", "eslint": "catalog:", "eslint-markdown": "catalog:", + "eslint-plugin-antfu": "catalog:", + "eslint-plugin-better-tailwindcss": "catalog:", + "eslint-plugin-command": "catalog:", + "eslint-plugin-erasable-syntax-only": "catalog:", + "eslint-plugin-hyoban": "catalog:", + "eslint-plugin-jsdoc": "catalog:", + "eslint-plugin-jsonc": "catalog:", + "eslint-plugin-jsx-a11y": "catalog:", "eslint-plugin-markdown-preferences": "catalog:", + "eslint-plugin-n": "catalog:", "eslint-plugin-no-barrel-files": "catalog:", + "eslint-plugin-perfectionist": "catalog:", + "eslint-plugin-pnpm": "catalog:", + "eslint-plugin-regexp": "catalog:", + "eslint-plugin-storybook": "catalog:", + "eslint-plugin-toml": "catalog:", + "eslint-plugin-unicorn": "catalog:", + "eslint-plugin-yml": "catalog:", "typescript": "catalog:", "vite": "catalog:", "vite-plus": "catalog:" diff --git a/packages/contracts/generated/api/console/apps/zod.gen.ts b/packages/contracts/generated/api/console/apps/zod.gen.ts index e705cfa9a6f..a053eff4352 100644 --- a/packages/contracts/generated/api/console/apps/zod.gen.ts +++ b/packages/contracts/generated/api/console/apps/zod.gen.ts @@ -1478,7 +1478,7 @@ export const zDailyTokenCostStatisticItem = z.object({ token_count: z.int().nullish(), total_price: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), }) diff --git a/packages/contracts/generated/api/console/installed-apps/zod.gen.ts b/packages/contracts/generated/api/console/installed-apps/zod.gen.ts index 029d4169f29..e52940bb8a4 100644 --- a/packages/contracts/generated/api/console/installed-apps/zod.gen.ts +++ b/packages/contracts/generated/api/console/installed-apps/zod.gen.ts @@ -531,7 +531,7 @@ export const zExploreMessageListItem = z.object({ status: z.string(), total_price: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), total_tokens: z.int().readonly(), }) @@ -570,7 +570,7 @@ export const zExploreMessageListItemWritable = z.object({ status: z.string(), total_price: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), }) diff --git a/packages/contracts/generated/api/console/workspaces/zod.gen.ts b/packages/contracts/generated/api/console/workspaces/zod.gen.ts index 3b344f22223..4c61e8b52b4 100644 --- a/packages/contracts/generated/api/console/workspaces/zod.gen.ts +++ b/packages/contracts/generated/api/console/workspaces/zod.gen.ts @@ -2360,12 +2360,12 @@ export const zEventParameterType = z.enum([ */ export const zPriceConfigResponse = z.object({ currency: z.string(), - input: z.string().regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/), + input: z.string().regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/), output: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), - unit: z.string().regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/), + unit: z.string().regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/), }) /** @@ -2870,12 +2870,12 @@ export const zToolProviderEntity = z.object({ */ export const zPriceConfig = z.object({ currency: z.string(), - input: z.string().regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/), + input: z.string().regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/), output: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), - unit: z.string().regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/), + unit: z.string().regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/), }) /** @@ -3244,7 +3244,7 @@ export const zPluginDeclaration = z.object({ agent_strategy: zAgentStrategyProviderEntity.nullish(), author: z .string() - .regex(/^[\w-]{1,64}$/) + .regex(/^[a-zA-Z0-9_-]{1,64}$/) .nullable(), category: zPluginCategory, created_at: z.iso.datetime(), diff --git a/packages/contracts/generated/api/service/zod.gen.ts b/packages/contracts/generated/api/service/zod.gen.ts index 8be4aefea50..2ec5f11174b 100644 --- a/packages/contracts/generated/api/service/zod.gen.ts +++ b/packages/contracts/generated/api/service/zod.gen.ts @@ -1992,7 +1992,7 @@ export const zMessageListItem = z.object({ status: z.string(), total_price: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), total_tokens: z.int().readonly(), }) @@ -2343,7 +2343,7 @@ export const zMessageListItemWritable = z.object({ status: z.string(), total_price: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), }) diff --git a/packages/contracts/generated/api/web/zod.gen.ts b/packages/contracts/generated/api/web/zod.gen.ts index 23c1d9f4c36..ff95cd767c7 100644 --- a/packages/contracts/generated/api/web/zod.gen.ts +++ b/packages/contracts/generated/api/web/zod.gen.ts @@ -850,7 +850,7 @@ export const zWebMessageListItem = z.object({ status: z.string(), total_price: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), total_tokens: z.int().readonly(), }) @@ -977,7 +977,7 @@ export const zWebMessageListItemWritable = z.object({ status: z.string(), total_price: z .string() - .regex(/^(?![-+.]*$)[+-]?\d*(?:\.\d*)?$/) + .regex(/^(?![-+.]*$)[+-]?0*\d*\.?\d*$/) .nullish(), }) diff --git a/packages/contracts/openapi-ts.enterprise.config.ts b/packages/contracts/openapi-ts.enterprise.config.ts index 2ed8eb72e61..68c84feb3b4 100644 --- a/packages/contracts/openapi-ts.enterprise.config.ts +++ b/packages/contracts/openapi-ts.enterprise.config.ts @@ -297,10 +297,6 @@ export default defineConfig({ suffix: '.gen', }, postProcess: [ - { - command: 'eslint', - args: ['--fix', '{{path}}/*.ts'], - }, { command: 'vp', args: ['fmt', '{{path}}'], diff --git a/packages/contracts/package.json b/packages/contracts/package.json index 10d34959349..79f6c4e23a9 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -18,7 +18,7 @@ } }, "scripts": { - "gen-api-contract": "uv run --project ../../api ../../api/dev/generate_swagger_specs.py --output-dir openapi && uv run --project ../../api ../../api/dev/generate_fastopenapi_specs.py --output-dir openapi && node -e \"fs.rmSync('generated/api', { recursive: true, force: true })\" && openapi-ts -f openapi-ts.api.config.ts && eslint --fix generated/api && vp fmt generated/api", + "gen-api-contract": "uv run --project ../../api ../../api/dev/generate_swagger_specs.py --output-dir openapi && uv run --project ../../api ../../api/dev/generate_fastopenapi_specs.py --output-dir openapi && node -e \"fs.rmSync('generated/api', { recursive: true, force: true })\" && openapi-ts -f openapi-ts.api.config.ts && vp fmt generated/api", "gen-enterprise-contract": "openapi-ts -f openapi-ts.enterprise.config.ts", "test": "vp test openapi-yaml.test.ts", "type-check": "tsc" @@ -32,7 +32,6 @@ "@hey-api/openapi-ts": "catalog:", "@types/node": "catalog:", "@typescript/native": "catalog:", - "eslint": "catalog:", "js-yaml": "catalog:", "typescript": "catalog:", "vite-plus": "catalog:", diff --git a/packages/dify-ui/README.md b/packages/dify-ui/README.md index 473137669cb..2c44707b287 100644 --- a/packages/dify-ui/README.md +++ b/packages/dify-ui/README.md @@ -188,7 +188,7 @@ See `[web/docs/overlay.md](../../web/docs/overlay.md)` for the web app overlay b ## Development -- `vp run @langgenius/dify-ui#lint` (from the repository root) — strict ESLint checks for component source, stories, tests, and package configuration. +- `vp run @langgenius/dify-ui#lint` (from the repository root) — strict Oxlint checks for component source, stories, tests, and package configuration. - `pnpm -C packages/dify-ui test` — Vitest unit tests for primitives. - `pnpm -C packages/dify-ui storybook` — Storybook on the default port. Each primitive has `index.stories.tsx`. - `pnpm -C packages/dify-ui test:storybook` — Storybook component tests in Vitest browser mode. Stories without `play` are render and a11y smoke tests; stories with `play` should cover public UI contracts such as opening overlays, keyboard navigation, disabled/loading guards, form submission, and controlled state updates. diff --git a/packages/dify-ui/eslint.config.mjs b/packages/dify-ui/eslint.config.mjs deleted file mode 100644 index ec0751b548b..00000000000 --- a/packages/dify-ui/eslint.config.mjs +++ /dev/null @@ -1,130 +0,0 @@ -// @ts-check - -import path from 'node:path' -import antfu, { GLOB_MARKDOWN_CODE, GLOB_TS, GLOB_TSX } from '@antfu/eslint-config' -import tailwindcss from 'eslint-plugin-better-tailwindcss' -import jsxA11y from 'eslint-plugin-jsx-a11y' -import storybook from 'eslint-plugin-storybook' - -const SOURCE_FILES = [GLOB_TS, GLOB_TSX] -const TEST_FILES = ['**/__tests__/**/*.{ts,tsx}', '**/*.spec.{ts,tsx}'] - -export default antfu( - { - ignores: ['coverage/', 'dist/', 'storybook-static/'], - stylistic: false, - perfectionist: { - overrides: { - 'perfectionist/sort-imports': 'off', - }, - }, - jsonc: { - overrides: { - 'jsonc/space-unary-ops': 'off', - }, - }, - yaml: { - overrides: { - 'yaml/block-mapping': 'off', - 'yaml/block-sequence': 'off', - 'yaml/plain-scalar': 'off', - }, - }, - toml: { - overrides: { - 'toml/comma-style': 'off', - 'toml/no-space-dots': 'off', - }, - }, - react: { - overrides: { - 'react/exhaustive-deps': ['error', { additionalHooks: 'useIsoLayoutEffect' }], - 'react/no-context-provider': 'off', - 'react/no-unnecessary-use-prefix': 'error', - 'react/no-use-context': 'off', - 'react/rules-of-hooks': 'error', - 'react/set-state-in-effect': 'error', - 'react/set-state-in-render': 'error', - 'react/static-components': 'error', - 'react-refresh/only-export-components': 'off', - }, - }, - typescript: { - overrides: { - 'ts/consistent-type-definitions': ['error', 'type'], - 'ts/no-explicit-any': 'error', - 'ts/no-redeclare': 'off', - }, - erasableOnly: true, - }, - test: { - overrides: { - 'test/prefer-lowercase-title': 'off', - }, - }, - e18e: false, - pnpm: false, - }, - { - files: [GLOB_TSX], - ...jsxA11y.flatConfigs.recommended, - rules: { - ...jsxA11y.flatConfigs.recommended.rules, - 'jsx-a11y/anchor-has-content': 'off', - 'jsx-a11y/label-has-associated-control': 'off', - }, - }, - ...storybook.configs['flat/recommended'], - { - name: 'dify-ui/storybook', - files: ['**/.storybook/main.{js,cjs,mjs,ts}'], - rules: { - 'storybook/no-uninstalled-addons': [ - 'error', - { - packageJsonLocation: path.resolve(import.meta.dirname, 'package.json'), - }, - ], - }, - }, - { - name: 'dify-ui/tailwind', - files: SOURCE_FILES, - ignores: [GLOB_MARKDOWN_CODE, ...TEST_FILES], - plugins: { - tailwindcss, - }, - rules: { - 'tailwindcss/no-duplicate-classes': 'error', - 'tailwindcss/no-deprecated-classes': 'error', - 'tailwindcss/no-unknown-classes': 'error', - }, - settings: { - 'better-tailwindcss': { - cwd: import.meta.dirname, - entryPoint: path.resolve(import.meta.dirname, './.storybook/storybook.css'), - }, - }, - }, - { - files: TEST_FILES, - rules: { - 'react/purity': 'off', - }, - }, - { - rules: { - 'node/prefer-global/process': 'off', - 'unicorn/number-literal-case': 'off', - }, - }, - { - linterOptions: { - reportUnusedDisableDirectives: 'error', - }, - }, -).override('antfu/sort/package-json', { - rules: { - 'jsonc/sort-keys': 'off', - }, -}) diff --git a/packages/dify-ui/package.json b/packages/dify-ui/package.json index ec3462fdd85..6c498932820 100644 --- a/packages/dify-ui/package.json +++ b/packages/dify-ui/package.json @@ -151,7 +151,6 @@ } }, "scripts": { - "lint": "eslint --cache --max-warnings=0 .", "storybook": "storybook dev -p 6006", "storybook:build": "storybook build", "test": "vp test --project unit", @@ -164,12 +163,10 @@ "tailwind-merge": "catalog:" }, "devDependencies": { - "@antfu/eslint-config": "catalog:", "@base-ui/react": "catalog:", "@chromatic-com/storybook": "catalog:", "@dify/tsconfig": "workspace:*", "@egoist/tailwindcss-icons": "catalog:", - "@eslint-react/eslint-plugin": "catalog:", "@iconify-json/ri": "catalog:", "@storybook/addon-a11y": "catalog:", "@storybook/addon-docs": "catalog:", @@ -188,11 +185,6 @@ "@vitest/browser-playwright": "catalog:", "@vitest/coverage-v8": "catalog:", "class-variance-authority": "catalog:", - "eslint": "catalog:", - "eslint-plugin-better-tailwindcss": "catalog:", - "eslint-plugin-jsx-a11y": "catalog:", - "eslint-plugin-react-refresh": "catalog:", - "eslint-plugin-storybook": "catalog:", "playwright": "catalog:", "react": "catalog:", "react-dom": "catalog:", diff --git a/packages/dify-ui/src/autocomplete/index.stories.tsx b/packages/dify-ui/src/autocomplete/index.stories.tsx index 80b96d710d6..cac0ca60ab8 100644 --- a/packages/dify-ui/src/autocomplete/index.stories.tsx +++ b/packages/dify-ui/src/autocomplete/index.stories.tsx @@ -603,7 +603,7 @@ const FuzzyHighlight = ({ text, query }: { text: string; query: string }) => { {parts.map((part, index) => part.toLowerCase() === query.trim().toLowerCase() ? ( - // eslint-disable-next-line react/no-array-index-key -- Repeated text fragments have no stable identity and never preserve state. + // oxlint-disable-next-line react/no-array-index-key -- Repeated text fragments have no stable identity and never preserve state. {part} diff --git a/packages/dify-ui/src/kbd/index.stories.tsx b/packages/dify-ui/src/kbd/index.stories.tsx index 11c9b59e268..ed7d8a7061c 100644 --- a/packages/dify-ui/src/kbd/index.stories.tsx +++ b/packages/dify-ui/src/kbd/index.stories.tsx @@ -65,7 +65,7 @@ const HotkeyKbdGroup = ({ }) => ( {displayKeys(hotkey, platform).map((key, index) => ( - // eslint-disable-next-line react/no-array-index-key -- Repeated display keys are static, ordered tokens with no component state. + // oxlint-disable-next-line react/no-array-index-key -- Repeated display keys are static, ordered tokens with no component state. {key} diff --git a/packages/dify-ui/src/pagination/index.tsx b/packages/dify-ui/src/pagination/index.tsx index 541548fe474..1113ba77632 100644 --- a/packages/dify-ui/src/pagination/index.tsx +++ b/packages/dify-ui/src/pagination/index.tsx @@ -344,7 +344,7 @@ export function PaginationPageJump({ requestAnimationFrame(() => setEditing(false))} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2395c36d72a..09a23c60978 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,9 +12,6 @@ catalogs: '@amplitude/plugin-session-replay-browser': specifier: 1.33.0 version: 1.33.0 - '@antfu/eslint-config': - specifier: 9.1.0 - version: 9.1.0 '@base-ui/react': specifier: 1.6.0 version: 1.6.0 @@ -30,12 +27,15 @@ catalogs: '@emoji-mart/data': specifier: 1.2.1 version: 1.2.1 + '@eslint-community/eslint-plugin-eslint-comments': + specifier: 4.7.2 + version: 4.7.2 '@eslint-react/eslint-plugin': specifier: 5.12.1 version: 5.12.1 - '@eslint/js': - specifier: 10.0.1 - version: 10.0.1 + '@eslint/markdown': + specifier: 8.0.3 + version: 8.0.3 '@floating-ui/react': specifier: 0.27.19 version: 0.27.19 @@ -93,9 +93,6 @@ catalogs: '@napi-rs/keyring': specifier: 1.3.0 version: 1.3.0 - '@next/eslint-plugin-next': - specifier: 16.2.10 - version: 16.2.10 '@next/mdx': specifier: 16.2.10 version: 16.2.10 @@ -237,9 +234,6 @@ catalogs: '@types/sortablejs': specifier: 1.15.9 version: 1.15.9 - '@typescript-eslint/eslint-plugin': - specifier: 8.63.0 - version: 8.63.0 '@typescript-eslint/parser': specifier: 8.63.0 version: 8.63.0 @@ -337,29 +331,62 @@ catalogs: specifier: 10.6.0 version: 10.6.0 eslint-markdown: - specifier: 0.12.0 - version: 0.12.0 + specifier: 0.12.1 + version: 0.12.1 + eslint-plugin-antfu: + specifier: 3.2.3 + version: 3.2.3 eslint-plugin-better-tailwindcss: specifier: 4.6.1 version: 4.6.1 + eslint-plugin-command: + specifier: 3.5.2 + version: 3.5.2 + eslint-plugin-erasable-syntax-only: + specifier: 0.4.2 + version: 0.4.2 eslint-plugin-hyoban: specifier: 0.14.1 version: 0.14.1 + eslint-plugin-jsdoc: + specifier: 63.0.10 + version: 63.0.10 + eslint-plugin-jsonc: + specifier: 3.3.0 + version: 3.3.0 eslint-plugin-jsx-a11y: specifier: 6.10.2 version: 6.10.2 eslint-plugin-markdown-preferences: specifier: 0.41.1 version: 0.41.1 + eslint-plugin-n: + specifier: 18.2.1 + version: 18.2.1 eslint-plugin-no-barrel-files: specifier: 1.3.1 version: 1.3.1 - eslint-plugin-react-refresh: - specifier: 0.5.3 - version: 0.5.3 + eslint-plugin-perfectionist: + specifier: 5.9.1 + version: 5.9.1 + eslint-plugin-pnpm: + specifier: 1.6.1 + version: 1.6.1 + eslint-plugin-regexp: + specifier: 3.1.1 + version: 3.1.1 eslint-plugin-storybook: specifier: 10.4.6 version: 10.4.6 + eslint-plugin-toml: + specifier: 1.4.0 + version: 1.4.0 + eslint-plugin-unicorn: + specifier: 68.0.0 + version: 68.0.0 + eslint-plugin-yml: + specifier: 3.6.0 + version: 3.6.0 eventsource-parser: specifier: 3.1.0 version: 3.1.0 @@ -644,15 +671,27 @@ importers: .: devDependencies: - '@antfu/eslint-config': + '@eslint-community/eslint-plugin-eslint-comments': specifier: 'catalog:' - version: 9.1.0(fffcbddf9b9e5649ceb44b1934cdee79) + version: 4.7.2(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + '@eslint-react/eslint-plugin': + specifier: 'catalog:' + version: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@eslint/markdown': + specifier: 'catalog:' + version: 8.0.3(supports-color@10.2.2) '@iconify-json/heroicons': specifier: 'catalog:' version: 1.2.3 '@iconify-json/ri': specifier: 'catalog:' version: 1.2.10 + '@tanstack/eslint-plugin-query': + specifier: 'catalog:' + version: 5.101.2(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + '@typescript-eslint/parser': + specifier: 'catalog:' + version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 @@ -664,13 +703,61 @@ importers: version: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) eslint-markdown: specifier: 'catalog:' - version: 0.12.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + version: 0.12.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-antfu: + specifier: 'catalog:' + version: 3.2.3(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-better-tailwindcss: + specifier: 'catalog:' + version: 4.6.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(tailwindcss@4.3.2) + eslint-plugin-command: + specifier: 'catalog:' + version: 3.5.2(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-erasable-syntax-only: + specifier: 'catalog:' + version: 0.4.2(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-hyoban: + specifier: 'catalog:' + version: 0.14.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-jsdoc: + specifier: 'catalog:' + version: 63.0.10(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + eslint-plugin-jsonc: + specifier: 'catalog:' + version: 3.3.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-jsx-a11y: + specifier: 'catalog:' + version: 6.10.2(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-markdown-preferences: specifier: 'catalog:' - version: 0.41.1(@eslint/markdown@8.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + version: 0.41.1(@eslint/markdown@8.0.3(supports-color@10.2.2))(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-n: + specifier: 'catalog:' + version: 18.2.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-no-barrel-files: specifier: 'catalog:' version: 1.3.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-perfectionist: + specifier: 'catalog:' + version: 5.9.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-pnpm: + specifier: 'catalog:' + version: 1.6.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-regexp: + specifier: 'catalog:' + version: 3.1.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-storybook: + specifier: 'catalog:' + version: 10.4.6(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))) + eslint-plugin-toml: + specifier: 'catalog:' + version: 1.4.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + eslint-plugin-unicorn: + specifier: 'catalog:' + version: 68.0.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint-plugin-yml: + specifier: 'catalog:' + version: 3.6.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) node: specifier: runtime:^22.22.1 version: runtime:22.23.1 @@ -750,9 +837,6 @@ importers: '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) - eslint: - specifier: 'catalog:' - version: 10.6.0(jiti@2.7.0) hono: specifier: 'catalog:' version: 4.12.28 @@ -835,9 +919,6 @@ importers: '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 - eslint: - specifier: 'catalog:' - version: 10.6.0(jiti@2.7.0) js-yaml: specifier: 'catalog:' version: 5.2.1 @@ -894,9 +975,6 @@ importers: specifier: 'catalog:' version: 3.6.0 devDependencies: - '@antfu/eslint-config': - specifier: 'catalog:' - version: 9.1.0(@eslint-react/eslint-plugin@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@next/eslint-plugin-next@16.2.10)(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint-plugin-jsx-a11y@6.10.2(eslint@10.6.0(jiti@2.7.0)))(eslint-plugin-react-refresh@0.5.3(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(vitest@4.1.10) '@base-ui/react': specifier: 'catalog:' version: 1.6.0(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -909,9 +987,6 @@ importers: '@egoist/tailwindcss-icons': specifier: 'catalog:' version: 1.9.2(tailwindcss@4.3.2) - '@eslint-react/eslint-plugin': - specifier: 'catalog:' - version: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) '@iconify-json/ri': specifier: 'catalog:' version: 1.2.10 @@ -966,21 +1041,6 @@ importers: class-variance-authority: specifier: 'catalog:' version: 0.7.1 - eslint: - specifier: 'catalog:' - version: 10.6.0(jiti@2.7.0) - eslint-plugin-better-tailwindcss: - specifier: 'catalog:' - version: 4.6.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(tailwindcss@4.3.2) - eslint-plugin-jsx-a11y: - specifier: 'catalog:' - version: 6.10.2(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-refresh: - specifier: 'catalog:' - version: 0.5.3(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-storybook: - specifier: 'catalog:' - version: 10.4.6(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))) playwright: specifier: 'catalog:' version: 1.61.1 @@ -1077,27 +1137,15 @@ importers: '@dify/tsconfig': specifier: workspace:* version: link:../../packages/tsconfig - '@eslint/js': - specifier: 'catalog:' - version: 10.0.1(eslint@10.6.0(jiti@2.7.0)) '@types/node': specifier: 'catalog:' version: 25.9.5 - '@typescript-eslint/eslint-plugin': - specifier: 'catalog:' - version: 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - '@typescript-eslint/parser': - specifier: 'catalog:' - version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.10(@vitest/browser@4.1.10)(vitest@4.1.10) - eslint: - specifier: 'catalog:' - version: 10.6.0(jiti@2.7.0) typescript: specifier: 'catalog:' version: '@typescript/typescript6@6.0.2' @@ -1444,9 +1492,6 @@ importers: specifier: 'catalog:' version: 5.0.14(@types/react@19.2.17)(immer@11.1.11)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) devDependencies: - '@antfu/eslint-config': - specifier: 'catalog:' - version: 9.1.0(@eslint-react/eslint-plugin@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@next/eslint-plugin-next@16.2.10)(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint-plugin-jsx-a11y@6.10.2(eslint@10.6.0(jiti@2.7.0)))(eslint-plugin-react-refresh@0.5.3(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(vitest@4.1.10) '@chromatic-com/storybook': specifier: 'catalog:' version: 5.2.1(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))) @@ -1462,9 +1507,6 @@ importers: '@egoist/tailwindcss-icons': specifier: 'catalog:' version: 1.9.2(tailwindcss@4.3.2) - '@eslint-react/eslint-plugin': - specifier: 'catalog:' - version: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) '@iconify-json/heroicons': specifier: 'catalog:' version: 1.2.3 @@ -1486,9 +1528,6 @@ importers: '@mdx-js/rollup': specifier: 'catalog:' version: 3.1.1 - '@next/eslint-plugin-next': - specifier: 'catalog:' - version: 16.2.10 '@next/mdx': specifier: 'catalog:' version: 16.2.10(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7)) @@ -1519,9 +1558,6 @@ importers: '@tailwindcss/vite': specifier: 'catalog:' version: 4.3.2(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) - '@tanstack/eslint-plugin-query': - specifier: 'catalog:' - version: 5.101.2(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) '@testing-library/dom': specifier: 'catalog:' version: 10.4.1 @@ -1564,9 +1600,6 @@ importers: '@types/sortablejs': specifier: 'catalog:' version: 1.15.9 - '@typescript-eslint/parser': - specifier: 'catalog:' - version: 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) '@typescript/native': specifier: 'catalog:' version: typescript@7.0.2 @@ -1585,33 +1618,6 @@ importers: code-inspector-plugin: specifier: 'catalog:' version: 1.6.6(supports-color@10.2.2) - eslint: - specifier: 'catalog:' - version: 10.6.0(jiti@2.7.0) - eslint-markdown: - specifier: 'catalog:' - version: 0.12.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-better-tailwindcss: - specifier: 'catalog:' - version: 4.6.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(tailwindcss@4.3.2) - eslint-plugin-hyoban: - specifier: 'catalog:' - version: 0.14.1(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-jsx-a11y: - specifier: 'catalog:' - version: 6.10.2(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-markdown-preferences: - specifier: 'catalog:' - version: 0.41.1(@eslint/markdown@8.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-no-barrel-files: - specifier: 'catalog:' - version: 1.3.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-refresh: - specifier: 'catalog:' - version: 0.5.3(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-storybook: - specifier: 'catalog:' - version: 10.4.6(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))) happy-dom: specifier: 'catalog:' version: 20.10.6 @@ -1750,66 +1756,6 @@ packages: '@amplitude/targeting@0.3.2': resolution: {integrity: sha512-Mf+lO1KylBdyyaeQgJe4jaSTvFqnnW5jt5WiDOyIxKqqTGt4+1RS7wTJDlJBWXoSrWdkxJftei8WFWmXFDsErg==} - '@antfu/eslint-config@9.1.0': - resolution: {integrity: sha512-Vtjt+W/6/bV9hgQG8AiWG66OpAeLKmpo5bZaAmUdRvZsMyirVvIJeHnbM4XUJf4urIuLvK0gGSvXD74PI3ZnGQ==} - peerDependencies: - '@angular-eslint/eslint-plugin': ^21.1.0 - '@angular-eslint/eslint-plugin-template': ^21.1.0 - '@angular-eslint/template-parser': ^21.1.0 - '@eslint-react/eslint-plugin': ^5.6.0 - '@next/eslint-plugin-next': '>=15.0.0' - '@prettier/plugin-xml': ^3.4.1 - '@unocss/eslint-plugin': '>=0.50.0' - astro-eslint-parser: ^1.0.2 - eslint: ^9.10.0 || ^10.0.0 - eslint-plugin-astro: ^1.2.0 - eslint-plugin-format: '>=0.1.0' - eslint-plugin-jsx-a11y: '>=6.10.2' - eslint-plugin-react-refresh: ^0.5.0 - eslint-plugin-solid: ^0.14.3 - eslint-plugin-svelte: '>=2.35.1' - eslint-plugin-vuejs-accessibility: ^2.4.1 - prettier-plugin-astro: ^0.14.0 - prettier-plugin-slidev: ^1.0.5 - svelte-eslint-parser: '>=0.37.0' - peerDependenciesMeta: - '@angular-eslint/eslint-plugin': - optional: true - '@angular-eslint/eslint-plugin-template': - optional: true - '@angular-eslint/template-parser': - optional: true - '@eslint-react/eslint-plugin': - optional: true - '@next/eslint-plugin-next': - optional: true - '@prettier/plugin-xml': - optional: true - '@unocss/eslint-plugin': - optional: true - astro-eslint-parser: - optional: true - eslint-plugin-astro: - optional: true - eslint-plugin-format: - optional: true - eslint-plugin-jsx-a11y: - optional: true - eslint-plugin-react-refresh: - optional: true - eslint-plugin-solid: - optional: true - eslint-plugin-svelte: - optional: true - eslint-plugin-vuejs-accessibility: - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-slidev: - optional: true - svelte-eslint-parser: - optional: true - '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -1932,14 +1878,6 @@ packages: peerDependencies: storybook: ^0.0.0-0 || ^10.1.0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0 || ^10.5.0-0 || ^10.6.0-0 - '@clack/core@1.4.2': - resolution: {integrity: sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ==} - engines: {node: '>= 20.12.0'} - - '@clack/prompts@1.6.0': - resolution: {integrity: sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA==} - engines: {node: '>= 20.12.0'} - '@code-inspector/core@1.6.6': resolution: {integrity: sha512-r7EzrS5391Nhd3zvuJF9EprmBTxL6jZzBztY5WRJs7V17I6vmt2YmJVq4zWIEBWaGF/BAm5bh3Xz0HyxdV6xIA==} @@ -2024,17 +1962,6 @@ packages: peerDependencies: devframe: 0.5.4 - '@e18e/eslint-plugin@0.5.1': - resolution: {integrity: sha512-mqUozeyNI9xvJbjrOO7y765dT7Kud3bwCm/DHwctxdEngPdJWQaS9BNGgpM1wCCzZfOtlKQh4ZRhm3VRomT9KA==} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 - oxlint: ^1.68.0 - peerDependenciesMeta: - eslint: - optional: true - oxlint: - optional: true - '@egoist/tailwindcss-icons@1.9.2': resolution: {integrity: sha512-I6XsSykmhu2cASg5Hp/ICLsJ/K/1aXPaSKjgbWaNp2xYnb4We/arWMmkhhV+9CglOFCUbqx0A3mM2kWV32ZIhw==} peerDependencies: @@ -2306,23 +2233,10 @@ packages: eslint: '*' typescript: '*' - '@eslint/compat@2.1.0': - resolution: {integrity: sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: ^8.40 || 9 || 10 - peerDependenciesMeta: - eslint: - optional: true - '@eslint/config-array@0.23.5': resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.5': - resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.6.0': resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -2339,21 +2253,12 @@ packages: resolution: {integrity: sha512-nxMparyhqVWQvadx9x8dIfubfIPOE+X2b2waua8fzdnM9vdp9rgVtwEZlG0TmCwEUz/d/f40fzvO/eqBwdxz0A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@10.0.1': - resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - peerDependencies: - eslint: ^10.0.0 - peerDependenciesMeta: - eslint: - optional: true - '@eslint/markdown@7.5.1': resolution: {integrity: sha512-R8uZemG9dKTbru/DQRPblbJyXpObwKzo8rv1KYGGuPUPtjM4LXBYM9q5CIZAComzZupws3tWbDwam5AFpPLyJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/markdown@8.0.2': - resolution: {integrity: sha512-W+/0qHp0WbvFEljUvvECNpSWrUHpBWIWwp7F3QqEwQKmaRCmfEWvk6VfUia9pTQ0th6HyBGBsPfg/kG3/aQxLA==} + '@eslint/markdown@8.0.3': + resolution: {integrity: sha512-rBTSSShrq7e4O+PWfeE4azH4/CWPNrC+VGxBXiW00o3vYVJnznsZiDayj3KC9JztIMVRZxZHn2nrDIUau/4j7A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/object-schema@3.0.5': @@ -3135,9 +3040,6 @@ packages: '@next/env@16.2.10': resolution: {integrity: sha512-zLPxg9M0MEHmygpj5OuxjQ+vHMiy/K7cSp74G8ecYolmgUWw0RwN02tF56npup/+qaI8JB97hQgS/r2Hb6QwVA==} - '@next/eslint-plugin-next@16.2.10': - resolution: {integrity: sha512-Gs8D2m21VnJeFo9qvYIIqJH94frWerWYu41BprU1pLtRVF7PCQNLiFZZ3fG+iPuj3K83Cwv/rt+msLOy8Qgu3Q==} - '@next/mdx@16.2.10': resolution: {integrity: sha512-r6T32AyQ0xy6p0vKd1lNbz6RUXuVXdGYSAI0dRrpbnqGnTWQXefADZGui4PlwjqROj0XQBMqVwot9ntPWao9PA==} peerDependencies: @@ -4525,12 +4427,6 @@ packages: peerDependencies: react: ^18.0.0 || ^19.0.0 - '@stylistic/eslint-plugin@5.10.0': - resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 - '@svgdotjs/svg.js@3.2.5': resolution: {integrity: sha512-/VNHWYhNu+BS7ktbYoVGrCmsXDh+chFMaONMwGNdIBcFHrWqk2jY8fNyr3DLdtQUIalvkPfM554ZSFa3dm3nxQ==} @@ -5023,14 +4919,6 @@ packages: '@types/zen-observable@0.8.3': resolution: {integrity: sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==} - '@typescript-eslint/eslint-plugin@8.63.0': - resolution: {integrity: sha512-rvwSgqT+DHpWdzfSzPatRLm02a0GlESt++9iy3hLCDY4BgkaLcl8LBi9Yh7XGFBpwcBE/K3024QuXWTpbz4FfQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.63.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.63.0': resolution: {integrity: sha512-gwh4gvvlaVDKKxyfxMG+Gnu1u9X0OQBwyGLkbwB65dIzBKnxeRiJlNFqlI3zwVhNXJIs6qV7mlFCn/BIajlVig==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5287,22 +5175,6 @@ packages: '@vitest/browser': optional: true - '@vitest/eslint-plugin@1.6.20': - resolution: {integrity: sha512-xRwWHFG0Utp6hXtbGiWk4VdKXCGdExD8kbWrrmFEiG5dk8anOJ+vbWbeOa8EbkocKQRTsx7JAWETccZiBgFp/Q==} - engines: {node: '>=18'} - peerDependencies: - '@typescript-eslint/eslint-plugin': '*' - eslint: '>=8.57.0' - typescript: '>=5.0.0' - vitest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - typescript: - optional: true - vitest: - optional: true - '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} @@ -5658,8 +5530,8 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.15: - resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} + brace-expansion@1.1.16: + resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} brace-expansion@5.0.6: resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} @@ -5726,6 +5598,10 @@ packages: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} + cached-factory@0.3.0: + resolution: {integrity: sha512-8PWf78SYJg9kGpUNlqOlg2iE4nu/iW7FidBVdvEZPy0GJRUyN91X7q0VzX/oyJE6bGrgr/bR0VhcGF87vgeQaw==} + engines: {node: '>=18'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -6473,14 +6349,6 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-flat-gitignore@2.3.0: - resolution: {integrity: sha512-bg4ZLGgoARg1naWfsINUUb/52Ksw/K22K+T16D38Y8v+/sGwwIYrGvH/JBjOin+RQtxxC9tzNNiy4shnGtGyyQ==} - peerDependencies: - eslint: ^9.5.0 || ^10.0.0 - - eslint-flat-config-utils@3.2.0: - resolution: {integrity: sha512-PHgo1X5uqIorJONLVD9BIaOSdoYFD3z/AeJljdqDPlWVRpeCYkDbK9k0AXoYVqqNJr6FEYIEr5Rm2TSktLQcHw==} - eslint-json-compat-utils@0.2.3: resolution: {integrity: sha512-RbBmDFyu7FqnjE8F0ZxPNzx5UaptdeS9Uu50r7A+D7s/+FCX+ybiyViYEgFUaFIFqSWJgZRTpL5d8Kanxxl2lQ==} engines: {node: '>=12'} @@ -6492,8 +6360,8 @@ packages: '@eslint/json': optional: true - eslint-markdown@0.12.0: - resolution: {integrity: sha512-GrN6AoM8XLXTtCRHG2kRu9NTkD5OH4xPq8nI8Vcesys04KFxvA/vfPN3ovHermCW7xqKqi2TT7yuY9EoKABXfg==} + eslint-markdown@0.12.1: + resolution: {integrity: sha512-zQ2pnYdZtLLDW2QeeJ0szqYy7yD+ntwBe1mAibeWSo5tZaUrhPpfXqsSf6q09K9OArl9OP4/sxgSlDgZ5cQliA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: eslint: ^9.31.0 || ^10.0.0-rc.0 @@ -6501,11 +6369,6 @@ packages: eslint: optional: true - eslint-merge-processors@2.0.0: - resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} - peerDependencies: - eslint: '*' - eslint-plugin-antfu@3.2.3: resolution: {integrity: sha512-U2fnz/H0gFPxpuC7QpaHa0Jv2AgCZ5hunp36SOP/yWo8yFzgvMh8X4pZ4uN4IKoqtBhk7G3HuVa93Urf51+sZg==} peerDependencies: @@ -6532,6 +6395,14 @@ packages: '@typescript-eslint/utils': '*' eslint: '*' + eslint-plugin-erasable-syntax-only@0.4.2: + resolution: {integrity: sha512-eLeg6CgNVY6LYPiPZnDn2JLh1HQVGoqjq1OD2GKGo70EcwbTwpWcqgi1zJJ/PJIKRO87cejCp9lwv5psrdxuKA==} + engines: {node: '>=20.18.0'} + peerDependencies: + '@typescript-eslint/parser': '>=8' + eslint: '>=9' + typescript: '>=5' + eslint-plugin-es-x@7.8.0: resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6543,20 +6414,14 @@ packages: peerDependencies: eslint: '*' - eslint-plugin-import-lite@0.6.0: - resolution: {integrity: sha512-80vevx2A7i3H7n1/6pqDO8cc5wRz6OwLDvIyVl9UflBV1N1f46e9Ihzi65IOLYoSxM6YykK2fTw1xm0Ixx6aTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 - eslint-plugin-jsdoc@63.0.10: resolution: {integrity: sha512-A9UIWsCquaKnit7rasXxYf12hhGIdDRjv65/RUE3AxbT6rdKBvr3MjH37g3gP+g4ipQMXuMn9slFKjO+vqNfkg==} engines: {node: ^22.13.0 || >=24} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-jsonc@3.2.0: - resolution: {integrity: sha512-eQSxJypkpNycQAFE/ph/j+bDD2MiCcojxNb+7nugYzuQZvELYg4YO1Cv1y/8MbjPIEw5u3Lx0VPOTlqJJIhPPw==} + eslint-plugin-jsonc@3.3.0: + resolution: {integrity: sha512-CsTR8aDcShDg6A71ZppLaWiPoSo2J1Ivjm5/c4Mnb9sxgwWq+WG2PgeoAnj7SwzDPJB75tlHvLrGy6ntooIitg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' @@ -6592,10 +6457,6 @@ packages: peerDependencies: eslint: ^8.0.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-no-only-tests@3.4.0: - resolution: {integrity: sha512-4S3/9Nb7A2tiMcpzEQE9bQSlpeOz6WJkgryBuou/SA8W2x2c8Zf4j0NvTKBjv6qNhF9T79tmkecm/0CHqV0UGg==} - engines: {node: '>=5.0.0'} - eslint-plugin-perfectionist@5.9.1: resolution: {integrity: sha512-30mHLNfEhzwaq5cquyWgnzrNXvT8AzwIwyeH5aj4U5ajhHSF2uiO6i09xpMDLv7koaZVTjLsvYF4m3gK/15tyA==} engines: {node: ^20.0.0 || >=22.0.0} @@ -6628,11 +6489,6 @@ packages: eslint: '*' typescript: '*' - eslint-plugin-react-refresh@0.5.3: - resolution: {integrity: sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA==} - peerDependencies: - eslint: ^9 || ^10 - eslint-plugin-react-rsc@5.12.1: resolution: {integrity: sha512-cx9q0XCdAxQc9bCVoksd/4aYifW6aFMx7QIROytJ2OtABnJ6DxbQC2/ZBUZRU1ksF6B8iRcz7+Dn6ypT4oltaQ==} engines: {node: '>=22.0.0'} @@ -6678,41 +6534,12 @@ packages: peerDependencies: eslint: '>=10.4' - eslint-plugin-unused-imports@4.4.1: - resolution: {integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^10.0.0 || ^9.0.0 || ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - - eslint-plugin-vue@10.9.2: - resolution: {integrity: sha512-4g7ZP3pYcuqd7Zp0pzUKcos0W+RkjBz4EGdhJ92FcYk6v03Ti/GK5NwjgsjxHK+98eXDbHeK7VtX1az7/8doZA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - vue-eslint-parser: ^10.3.0 - peerDependenciesMeta: - '@stylistic/eslint-plugin': - optional: true - '@typescript-eslint/parser': - optional: true - - eslint-plugin-yml@3.5.0: - resolution: {integrity: sha512-u2UkSIp/+th1wYCt0QWeCI6agf24dxX6PbFfCCN18gGQHmXh3Cn9D/U5OiP5RNYTEwjXCLusj1OJRK+zwdvFqQ==} + eslint-plugin-yml@3.6.0: + resolution: {integrity: sha512-8lSqBIiOJO8ms1gktdlNaVGm3zXQJiYeKhQmtIG66XzU58kFDOjQae4sufQEMGHC4bP8VxiaH3tjU5PpDB6euw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: eslint: '>=9.38.0' - eslint-processor-vue-blocks@2.0.0: - resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} - peerDependencies: - '@vue/compiler-sfc': ^3.3.0 - eslint: '>=9.0.0' - eslint-scope@9.1.2: resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -6721,10 +6548,6 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-visitor-keys@5.0.1: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -6738,10 +6561,6 @@ packages: jiti: optional: true - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@11.2.0: resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -6818,10 +6637,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -6832,15 +6647,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-string-truncated-width@3.0.3: - resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} - - fast-string-width@3.0.2: - resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - - fast-wrap-ansi@0.2.2: - resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} - fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -8014,9 +7820,6 @@ packages: module-alias@2.3.4: resolution: {integrity: sha512-bOclZt8hkpuGgSSoG07PKmvzTizROilUTvLNyrMqvlC9snhs7y7GzjNWAVbISIOlhCP1T14rH1PDAV9iNyBq/w==} - module-replacements@3.0.0-beta.8: - resolution: {integrity: sha512-sc8TepP9elxoOBXEpxmhPzKKjTjbswHVcmsKGbgvm3k6jZlLu/WMV/Lfmga6IGMgHU/V3WtY2s6VEgM4nTElUQ==} - moo-color@1.0.3: resolution: {integrity: sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==} @@ -8422,10 +8225,6 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - parse-gitignore@2.0.0: - resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} - engines: {node: '>=14'} - parse-imports-exports@0.2.4: resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} @@ -8547,10 +8346,6 @@ packages: resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} engines: {node: '>=4'} - postcss-selector-parser@7.1.4: - resolution: {integrity: sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==} - engines: {node: '>=4'} - postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -9044,9 +8839,6 @@ packages: resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} engines: {node: '>=18'} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - size-sensor@1.0.3: resolution: {integrity: sha512-+k9mJ2/rQMiRmQUcjn+qznch260leIXY8r4FyYKKyRBO/s5UoeMAHGkCJyE1R/4wrIhTJONfyloY55SkE7ve3A==} @@ -9793,12 +9585,6 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - vue-eslint-parser@10.4.1: - resolution: {integrity: sha512-Gk6gRDj0n/fkRa3C3l0bBheoBckUq/Rs0F/TvMWIS6nzzx67amAViMe9CkNgsP2tXyQONvGiHQESHwFtZ3aYDA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - walk-up-path@4.0.0: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} @@ -9887,10 +9673,6 @@ packages: resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} engines: {node: '>=20'} - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - xmlbuilder@15.1.1: resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} @@ -9910,8 +9692,8 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml-eslint-parser@2.0.0: - resolution: {integrity: sha512-h0uDm97wvT2bokfwwTmY6kJ1hp6YDFL0nRHwNKz8s/VD1FH/vvZjAKoMUE+un0eaYBSG7/c6h+lJTP+31tjgTw==} + yaml-eslint-parser@2.1.0: + resolution: {integrity: sha512-1zo9KRfp6vIAXBEhWAz09ex3hUwh3T+/6dGbGteHvNseA0Uk4FgQnPES55klZ6cDzSy9FpgKS0D/CoLUvCCj4w==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} yaml@2.9.0: @@ -10159,174 +9941,6 @@ snapshots: idb: 8.0.0 tslib: 2.8.1 - '@antfu/eslint-config@9.1.0(@eslint-react/eslint-plugin@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@next/eslint-plugin-next@16.2.10)(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint-plugin-jsx-a11y@6.10.2(eslint@10.6.0(jiti@2.7.0)))(eslint-plugin-react-refresh@0.5.3(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(vitest@4.1.10)': - dependencies: - '@antfu/install-pkg': 1.1.0 - '@clack/prompts': 1.6.0 - '@e18e/eslint-plugin': 0.5.1(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))) - '@eslint-community/eslint-plugin-eslint-comments': 4.7.2(eslint@10.6.0(jiti@2.7.0)) - '@eslint/markdown': 8.0.2 - '@stylistic/eslint-plugin': 5.10.0(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - '@vitest/eslint-plugin': 1.6.20(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(vitest@4.1.10) - ansis: 4.3.1 - cac: 7.0.0 - eslint: 10.6.0(jiti@2.7.0) - eslint-config-flat-gitignore: 2.3.0(eslint@10.6.0(jiti@2.7.0)) - eslint-flat-config-utils: 3.2.0 - eslint-merge-processors: 2.0.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-antfu: 3.2.3(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-command: 3.5.2(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-import-lite: 0.6.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-jsdoc: 63.0.10(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-jsonc: 3.2.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-n: 18.2.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-no-only-tests: 3.4.0 - eslint-plugin-perfectionist: 5.9.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-pnpm: 1.6.1(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-regexp: 3.1.1(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-toml: 1.4.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-unicorn: 68.0.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-vue: 10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.6.0(jiti@2.7.0)))(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.6.0(jiti@2.7.0))) - eslint-plugin-yml: 3.5.0(eslint@10.6.0(jiti@2.7.0)) - eslint-processor-vue-blocks: 2.0.0(eslint@10.6.0(jiti@2.7.0)) - globals: 17.7.0 - local-pkg: 1.2.1 - parse-gitignore: 2.0.0 - toml-eslint-parser: 1.0.3 - vue-eslint-parser: 10.4.1(eslint@10.6.0(jiti@2.7.0)) - yaml-eslint-parser: 2.0.0 - optionalDependencies: - '@eslint-react/eslint-plugin': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@next/eslint-plugin-next': 16.2.10 - eslint-plugin-jsx-a11y: 6.10.2(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-refresh: 0.5.3(eslint@10.6.0(jiti@2.7.0)) - transitivePeerDependencies: - - '@eslint/json' - - '@typescript-eslint/rule-tester' - - '@typescript-eslint/typescript-estree' - - '@typescript-eslint/utils' - - '@vue/compiler-sfc' - - oxlint - - supports-color - - ts-declaration-location - - typescript - - vitest - - '@antfu/eslint-config@9.1.0(@eslint-react/eslint-plugin@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@next/eslint-plugin-next@16.2.10)(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint-plugin-jsx-a11y@6.10.2(eslint@10.6.0(jiti@2.7.0)))(eslint-plugin-react-refresh@0.5.3(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(vitest@4.1.10)': - dependencies: - '@antfu/install-pkg': 1.1.0 - '@clack/prompts': 1.6.0 - '@e18e/eslint-plugin': 0.5.1(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))) - '@eslint-community/eslint-plugin-eslint-comments': 4.7.2(eslint@10.6.0(jiti@2.7.0)) - '@eslint/markdown': 8.0.2 - '@stylistic/eslint-plugin': 5.10.0(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - '@vitest/eslint-plugin': 1.6.20(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(vitest@4.1.10) - ansis: 4.3.1 - cac: 7.0.0 - eslint: 10.6.0(jiti@2.7.0) - eslint-config-flat-gitignore: 2.3.0(eslint@10.6.0(jiti@2.7.0)) - eslint-flat-config-utils: 3.2.0 - eslint-merge-processors: 2.0.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-antfu: 3.2.3(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-command: 3.5.2(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-import-lite: 0.6.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-jsdoc: 63.0.10(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-jsonc: 3.2.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-n: 18.2.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-no-only-tests: 3.4.0 - eslint-plugin-perfectionist: 5.9.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-pnpm: 1.6.1(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-regexp: 3.1.1(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-toml: 1.4.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-unicorn: 68.0.0(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-vue: 10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.6.0(jiti@2.7.0)))(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.6.0(jiti@2.7.0))) - eslint-plugin-yml: 3.5.0(eslint@10.6.0(jiti@2.7.0)) - eslint-processor-vue-blocks: 2.0.0(eslint@10.6.0(jiti@2.7.0)) - globals: 17.7.0 - local-pkg: 1.2.1 - parse-gitignore: 2.0.0 - toml-eslint-parser: 1.0.3 - vue-eslint-parser: 10.4.1(eslint@10.6.0(jiti@2.7.0)) - yaml-eslint-parser: 2.0.0 - optionalDependencies: - '@eslint-react/eslint-plugin': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@next/eslint-plugin-next': 16.2.10 - eslint-plugin-jsx-a11y: 6.10.2(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-refresh: 0.5.3(eslint@10.6.0(jiti@2.7.0)) - transitivePeerDependencies: - - '@eslint/json' - - '@typescript-eslint/rule-tester' - - '@typescript-eslint/typescript-estree' - - '@typescript-eslint/utils' - - '@vue/compiler-sfc' - - oxlint - - supports-color - - ts-declaration-location - - typescript - - vitest - - '@antfu/eslint-config@9.1.0(fffcbddf9b9e5649ceb44b1934cdee79)': - dependencies: - '@antfu/install-pkg': 1.1.0 - '@clack/prompts': 1.6.0 - '@e18e/eslint-plugin': 0.5.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))) - '@eslint-community/eslint-plugin-eslint-comments': 4.7.2(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@eslint/markdown': 8.0.2 - '@stylistic/eslint-plugin': 5.10.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@vitest/eslint-plugin': 1.6.20(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(vitest@4.1.10) - ansis: 4.3.1 - cac: 7.0.0 - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - eslint-config-flat-gitignore: 2.3.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-flat-config-utils: 3.2.0 - eslint-merge-processors: 2.0.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-antfu: 3.2.3(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-command: 3.5.2(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-import-lite: 0.6.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-jsdoc: 63.0.10(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - eslint-plugin-jsonc: 3.2.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-n: 18.2.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-no-only-tests: 3.4.0 - eslint-plugin-perfectionist: 5.9.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-pnpm: 1.6.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-regexp: 3.1.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-toml: 1.4.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - eslint-plugin-unicorn: 68.0.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-vue: 10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(vue-eslint-parser@10.4.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)) - eslint-plugin-yml: 3.5.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-processor-vue-blocks: 2.0.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - globals: 17.7.0 - local-pkg: 1.2.1 - parse-gitignore: 2.0.0 - toml-eslint-parser: 1.0.3 - vue-eslint-parser: 10.4.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - yaml-eslint-parser: 2.0.0 - optionalDependencies: - '@eslint-react/eslint-plugin': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@next/eslint-plugin-next': 16.2.10 - eslint-plugin-jsx-a11y: 6.10.2(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-react-refresh: 0.5.3(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - transitivePeerDependencies: - - '@eslint/json' - - '@typescript-eslint/rule-tester' - - '@typescript-eslint/typescript-estree' - - '@typescript-eslint/utils' - - '@vue/compiler-sfc' - - oxlint - - supports-color - - ts-declaration-location - - typescript - - vitest - '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 @@ -10491,18 +10105,6 @@ snapshots: - '@chromatic-com/playwright' - '@chromatic-com/vitest' - '@clack/core@1.4.2': - dependencies: - fast-wrap-ansi: 0.2.2 - sisteransi: 1.0.5 - - '@clack/prompts@1.6.0': - dependencies: - '@clack/core': 1.4.2 - fast-string-width: 3.0.2 - fast-wrap-ansi: 0.2.2 - sisteransi: 1.0.5 - '@code-inspector/core@1.6.6(supports-color@10.2.2)': dependencies: '@vue/compiler-dom': 3.5.39 @@ -10670,33 +10272,6 @@ snapshots: - vite - webpack - '@e18e/eslint-plugin@0.5.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))': - dependencies: - empathic: 2.0.1 - module-replacements: 3.0.0-beta.8 - semver: 7.8.5 - optionalDependencies: - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - oxlint: 1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) - - '@e18e/eslint-plugin@0.5.1(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))': - dependencies: - empathic: 2.0.1 - module-replacements: 3.0.0-beta.8 - semver: 7.8.5 - optionalDependencies: - eslint: 10.6.0(jiti@2.7.0) - oxlint: 1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) - - '@e18e/eslint-plugin@0.5.1(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))': - dependencies: - empathic: 2.0.1 - module-replacements: 3.0.0-beta.8 - semver: 7.8.5 - optionalDependencies: - eslint: 10.6.0(jiti@2.7.0) - oxlint: 1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) - '@egoist/tailwindcss-icons@1.9.2(tailwindcss@4.3.2)': dependencies: '@iconify/utils': 3.1.3 @@ -10860,22 +10435,11 @@ snapshots: eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) ignore: 7.0.5 - '@eslint-community/eslint-plugin-eslint-comments@4.7.2(eslint@10.6.0(jiti@2.7.0))': - dependencies: - escape-string-regexp: 4.0.0 - eslint: 10.6.0(jiti@2.7.0) - ignore: 7.0.5 - '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@10.6.0(jiti@2.7.0))': - dependencies: - eslint: 10.6.0(jiti@2.7.0) - eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.2': {} '@eslint-react/ast@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': @@ -10888,18 +10452,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - '@eslint-react/ast@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - string-ts: 2.3.1 - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color '@eslint-react/core@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: @@ -10916,25 +10468,8 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - '@eslint-react/core@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/jsx': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/var': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - ts-pattern: 5.9.0 - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - - '@eslint-react/eslint-plugin@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': + '@eslint-react/eslint-plugin@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) @@ -10943,22 +10478,7 @@ snapshots: eslint-plugin-react-naming-convention: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-react-rsc: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-react-web-api: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-react-x: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - optional: true - - '@eslint-react/eslint-plugin@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - eslint-plugin-react-dom: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-jsx: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-naming-convention: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-rsc: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-web-api: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint-plugin-react-x: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) + eslint-plugin-react-x: 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color @@ -10970,15 +10490,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - '@eslint-react/eslint@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color '@eslint-react/jsx@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: @@ -10993,21 +10504,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - '@eslint-react/jsx@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/var': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - ts-pattern: 5.9.0 - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color '@eslint-react/shared@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: @@ -11019,18 +10515,6 @@ snapshots: zod: 4.4.3 transitivePeerDependencies: - supports-color - optional: true - - '@eslint-react/shared@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - ts-pattern: 5.9.0 - typescript: '@typescript/typescript6@6.0.2' - zod: 4.4.3 - transitivePeerDependencies: - - supports-color '@eslint-react/var@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: @@ -11044,32 +10528,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - '@eslint-react/var@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - ts-pattern: 5.9.0 - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - - '@eslint/compat@2.1.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': - dependencies: - '@eslint/core': 1.2.1 - optionalDependencies: - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - - '@eslint/compat@2.1.0(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@eslint/core': 1.2.1 - optionalDependencies: - eslint: 10.6.0(jiti@2.7.0) '@eslint/config-array@0.23.5(supports-color@10.2.2)': dependencies: @@ -11079,10 +10537,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.5': - dependencies: - '@eslint/core': 1.2.1 - '@eslint/config-helpers@0.6.0': dependencies: '@eslint/core': 1.2.1 @@ -11100,16 +10554,12 @@ snapshots: mdn-data: 2.28.1 source-map-js: 1.2.1 - '@eslint/js@10.0.1(eslint@10.6.0(jiti@2.7.0))': - optionalDependencies: - eslint: 10.6.0(jiti@2.7.0) - '@eslint/markdown@7.5.1': dependencies: '@eslint/core': 0.17.0 '@eslint/plugin-kit': 0.4.1 github-slugger: 2.0.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-frontmatter: 2.0.1 mdast-util-gfm: 3.1.0 micromark-extension-frontmatter: 2.0.0 @@ -11118,12 +10568,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/markdown@8.0.2': + '@eslint/markdown@8.0.3(supports-color@10.2.2)': dependencies: '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.2 github-slugger: 2.0.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-frontmatter: 2.0.1 mdast-util-gfm: 3.1.0 mdast-util-math: 3.0.0 @@ -11911,10 +11361,6 @@ snapshots: '@next/env@16.2.10': {} - '@next/eslint-plugin-next@16.2.10': - dependencies: - fast-glob: 3.3.1 - '@next/mdx@16.2.10(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))': dependencies: source-map: 0.7.6 @@ -13027,26 +12473,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@stylistic/eslint-plugin@5.10.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/types': 8.63.0 - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - estraverse: 5.3.0 - picomatch: 4.0.4 - - '@stylistic/eslint-plugin@5.10.0(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/types': 8.63.0 - eslint: 10.6.0(jiti@2.7.0) - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - estraverse: 5.3.0 - picomatch: 4.0.4 - '@svgdotjs/svg.js@3.2.5': {} '@swc/helpers@0.5.15': @@ -13157,10 +12583,10 @@ snapshots: '@tanstack/devtools-event-client@0.4.4': {} - '@tanstack/eslint-plugin-query@5.101.2(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': + '@tanstack/eslint-plugin-query@5.101.2(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) + '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) optionalDependencies: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: @@ -13532,39 +12958,7 @@ snapshots: '@types/zen-observable@0.8.3': {} - '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/visitor-keys': 8.63.0 - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/visitor-keys': 8.63.0 - eslint: 10.6.0(jiti@2.7.0) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': + '@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@typescript-eslint/scope-manager': 8.63.0 '@typescript-eslint/types': 8.63.0 @@ -13576,18 +12970,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2)': - dependencies: - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/visitor-keys': 8.63.0 - debug: 4.4.3(supports-color@10.2.2) - eslint: 10.6.0(jiti@2.7.0) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.63.0(@typescript/typescript6@6.0.2)': dependencies: '@typescript-eslint/tsconfig-utils': 8.63.0(@typescript/typescript6@6.0.2) @@ -13606,7 +12988,7 @@ snapshots: dependencies: typescript: '@typescript/typescript6@6.0.2' - '@typescript-eslint/type-utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))': + '@typescript-eslint/type-utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)': dependencies: '@typescript-eslint/types': 8.63.0 '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2) @@ -13618,18 +13000,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2)': - dependencies: - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - debug: 4.4.3(supports-color@10.2.2) - eslint: 10.6.0(jiti@2.7.0) - ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - '@typescript-eslint/types@8.63.0': {} '@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2)': @@ -13658,17 +13028,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2) - eslint: 10.6.0(jiti@2.7.0) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - '@typescript-eslint/visitor-keys@8.63.0': dependencies: '@typescript-eslint/types': 8.63.0 @@ -13962,30 +13321,6 @@ snapshots: optionalDependencies: '@vitest/browser': 4.1.10(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(vitest@4.1.10) - '@vitest/eslint-plugin@1.6.20(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(vitest@4.1.10)': - dependencies: - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - typescript: '@typescript/typescript6@6.0.2' - vitest: 4.1.10(@types/node@26.0.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(happy-dom@20.10.6) - transitivePeerDependencies: - - supports-color - - '@vitest/eslint-plugin@1.6.20(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(vitest@4.1.10)': - dependencies: - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - typescript: '@typescript/typescript6@6.0.2' - vitest: 4.1.10(@types/node@26.0.1)(@vitest/browser-playwright@4.1.10)(@vitest/browser-preview@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(happy-dom@20.10.6) - transitivePeerDependencies: - - supports-color - '@vitest/expect@3.2.4': dependencies: '@types/chai': 5.2.3 @@ -14338,7 +13673,7 @@ snapshots: boolbase@1.0.0: {} - brace-expansion@1.1.15: + brace-expansion@1.1.16: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -14413,6 +13748,8 @@ snapshots: cac@7.0.0: {} + cached-factory@0.3.0: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -15271,39 +14608,13 @@ snapshots: eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) semver: 7.8.5 - eslint-compat-utils@0.5.1(eslint@10.6.0(jiti@2.7.0)): - dependencies: - eslint: 10.6.0(jiti@2.7.0) - semver: 7.8.5 - - eslint-config-flat-gitignore@2.3.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): - dependencies: - '@eslint/compat': 2.1.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - - eslint-config-flat-gitignore@2.3.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint/compat': 2.1.0(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - - eslint-flat-config-utils@3.2.0: - dependencies: - '@eslint/config-helpers': 0.5.5 - pathe: 2.0.3 - eslint-json-compat-utils@0.2.3(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(jsonc-eslint-parser@3.1.0): dependencies: eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) esquery: 1.7.0 jsonc-eslint-parser: 3.1.0 - eslint-json-compat-utils@0.2.3(eslint@10.6.0(jiti@2.7.0))(jsonc-eslint-parser@3.1.0): - dependencies: - eslint: 10.6.0(jiti@2.7.0) - esquery: 1.7.0 - jsonc-eslint-parser: 3.1.0 - - eslint-markdown@0.12.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): + eslint-markdown@0.12.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: '@eslint/markdown': 7.5.1 micromark-util-normalize-identifier: 2.0.1 @@ -15313,33 +14624,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-markdown@0.12.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint/markdown': 7.5.1 - micromark-util-normalize-identifier: 2.0.1 - parse5: 8.0.1 - optionalDependencies: - eslint: 10.6.0(jiti@2.7.0) - transitivePeerDependencies: - - supports-color - - eslint-merge-processors@2.0.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): - dependencies: - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - - eslint-merge-processors@2.0.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - eslint: 10.6.0(jiti@2.7.0) - eslint-plugin-antfu@3.2.3(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - eslint-plugin-antfu@3.2.3(eslint@10.6.0(jiti@2.7.0)): - dependencies: - eslint: 10.6.0(jiti@2.7.0) - - eslint-plugin-better-tailwindcss@4.6.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(tailwindcss@4.3.2): + eslint-plugin-better-tailwindcss@4.6.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(tailwindcss@4.3.2): dependencies: '@eslint/css-tree': 4.0.4 '@valibot/to-json-schema': 1.7.1(valibot@1.4.2(@typescript/typescript6@6.0.2)) @@ -15351,25 +14640,7 @@ snapshots: tsconfig-paths-webpack-plugin: 4.2.0 valibot: 1.4.2(@typescript/typescript6@6.0.2) optionalDependencies: - eslint: 10.6.0(jiti@2.7.0) - oxlint: 1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) - transitivePeerDependencies: - - '@eslint/css' - - typescript - - eslint-plugin-better-tailwindcss@4.6.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(oxlint@1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)))(tailwindcss@4.3.2): - dependencies: - '@eslint/css-tree': 4.0.4 - '@valibot/to-json-schema': 1.7.1(valibot@1.4.2(@typescript/typescript6@6.0.2)) - enhanced-resolve: 5.24.1 - jiti: 2.7.0 - synckit: 0.11.13 - tailwind-csstree: 0.3.3 - tailwindcss: 4.3.2 - tsconfig-paths-webpack-plugin: 4.2.0 - valibot: 1.4.2(@typescript/typescript6@6.0.2) - optionalDependencies: - eslint: 10.6.0(jiti@2.7.0) + eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) oxlint: 1.72.0(oxlint-tsgolint@0.24.0)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) transitivePeerDependencies: - '@eslint/css' @@ -15382,12 +14653,15 @@ snapshots: '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - eslint-plugin-command@3.5.2(@typescript-eslint/typescript-estree@8.63.0(@typescript/typescript6@6.0.2))(@typescript-eslint/utils@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0)): + eslint-plugin-erasable-syntax-only@0.4.2(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: - '@es-joy/jsdoccomment': 0.84.0 - '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) + '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + cached-factory: 0.3.0 + eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) + typescript: '@typescript/typescript6@6.0.2' + transitivePeerDependencies: + - supports-color eslint-plugin-es-x@7.8.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: @@ -15396,25 +14670,10 @@ snapshots: eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) eslint-compat-utils: 0.5.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint-plugin-es-x@7.8.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - '@eslint-community/regexpp': 4.12.2 - eslint: 10.6.0(jiti@2.7.0) - eslint-compat-utils: 0.5.1(eslint@10.6.0(jiti@2.7.0)) - - eslint-plugin-hyoban@0.14.1(eslint@10.6.0(jiti@2.7.0)): - dependencies: - eslint: 10.6.0(jiti@2.7.0) - - eslint-plugin-import-lite@0.6.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): + eslint-plugin-hyoban@0.14.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - eslint-plugin-import-lite@0.6.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - eslint: 10.6.0(jiti@2.7.0) - eslint-plugin-jsdoc@63.0.10(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@es-joy/jsdoccomment': 0.87.0 @@ -15435,27 +14694,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsdoc@63.0.10(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@es-joy/jsdoccomment': 0.87.0 - '@es-joy/resolve.exports': 1.2.0 - are-docs-informative: 0.0.2 - comment-parser: 1.4.7 - debug: 4.4.3(supports-color@10.2.2) - escape-string-regexp: 4.0.0 - eslint: 10.6.0(jiti@2.7.0) - espree: 11.2.0 - esquery: 1.7.0 - html-entities: 2.6.0 - object-deep-merge: 2.0.1 - parse-imports-exports: 0.2.4 - semver: 7.8.5 - spdx-expression-parse: 4.0.0 - to-valid-identifier: 1.0.0 - transitivePeerDependencies: - - supports-color - - eslint-plugin-jsonc@3.2.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): + eslint-plugin-jsonc@3.3.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) '@eslint/core': 1.2.1 @@ -15470,21 +14709,6 @@ snapshots: transitivePeerDependencies: - '@eslint/json' - eslint-plugin-jsonc@3.2.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 - '@ota-meshi/ast-token-store': 0.3.0 - diff-sequences: 29.6.3 - eslint: 10.6.0(jiti@2.7.0) - eslint-json-compat-utils: 0.2.3(eslint@10.6.0(jiti@2.7.0))(jsonc-eslint-parser@3.1.0) - jsonc-eslint-parser: 3.1.0 - natural-compare: 1.4.0 - synckit: 0.11.13 - transitivePeerDependencies: - - '@eslint/json' - eslint-plugin-jsx-a11y@6.10.2(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: aria-query: 5.3.2 @@ -15503,54 +14727,14 @@ snapshots: object.fromentries: 2.0.8 safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - optional: true - eslint-plugin-jsx-a11y@6.10.2(eslint@10.6.0(jiti@2.7.0)): + eslint-plugin-markdown-preferences@0.41.1(@eslint/markdown@8.0.3(supports-color@10.2.2))(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.12.1 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 10.6.0(jiti@2.7.0) - hasown: 2.0.4 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-markdown-preferences@0.41.1(@eslint/markdown@8.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): - dependencies: - '@eslint/markdown': 8.0.2 + '@eslint/markdown': 8.0.3(supports-color@10.2.2) diff-sequences: 29.6.3 emoji-regex-xs: 2.0.1 eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - mdast-util-from-markdown: 2.0.3 - mdast-util-frontmatter: 2.0.1 - mdast-util-gfm: 3.1.0 - mdast-util-math: 3.0.0 - micromark-extension-frontmatter: 2.0.0 - micromark-extension-gfm: 3.0.0 - micromark-extension-math: 3.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - string-width: 8.2.1 - transitivePeerDependencies: - - supports-color - - eslint-plugin-markdown-preferences@0.41.1(@eslint/markdown@8.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint/markdown': 8.0.2 - diff-sequences: 29.6.3 - emoji-regex-xs: 2.0.1 - eslint: 10.6.0(jiti@2.7.0) - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-frontmatter: 2.0.1 mdast-util-gfm: 3.1.0 mdast-util-math: 3.0.0 @@ -15578,20 +14762,6 @@ snapshots: optionalDependencies: typescript: '@typescript/typescript6@6.0.2' - eslint-plugin-n@18.2.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - enhanced-resolve: 5.24.1 - eslint: 10.6.0(jiti@2.7.0) - eslint-plugin-es-x: 7.8.0(eslint@10.6.0(jiti@2.7.0)) - get-tsconfig: 4.14.0 - globals: 15.15.0 - globrex: 0.1.2 - ignore: 5.3.2 - semver: 7.8.5 - optionalDependencies: - typescript: '@typescript/typescript6@6.0.2' - eslint-plugin-no-barrel-files@1.3.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) @@ -15600,16 +14770,6 @@ snapshots: - supports-color - typescript - eslint-plugin-no-barrel-files@1.3.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-no-only-tests@3.4.0: {} - eslint-plugin-perfectionist@5.9.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) @@ -15619,15 +14779,6 @@ snapshots: - supports-color - typescript - eslint-plugin-perfectionist@5.9.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - natural-orderby: 5.0.0 - transitivePeerDependencies: - - supports-color - - typescript - eslint-plugin-pnpm@1.6.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: empathic: 2.0.1 @@ -15637,18 +14788,7 @@ snapshots: pnpm-workspace-yaml: 1.6.1 tinyglobby: 0.2.17 yaml: 2.9.0 - yaml-eslint-parser: 2.0.0 - - eslint-plugin-pnpm@1.6.1(eslint@10.6.0(jiti@2.7.0)): - dependencies: - empathic: 2.0.1 - eslint: 10.6.0(jiti@2.7.0) - jsonc-eslint-parser: 3.1.0 - pathe: 2.0.3 - pnpm-workspace-yaml: 1.6.1 - tinyglobby: 0.2.17 - yaml: 2.9.0 - yaml-eslint-parser: 2.0.0 + yaml-eslint-parser: 2.1.0 eslint-plugin-react-dom@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: @@ -15663,21 +14803,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - eslint-plugin-react-dom@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/jsx': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - compare-versions: 6.1.1 - eslint: 10.6.0(jiti@2.7.0) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color eslint-plugin-react-jsx@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: @@ -15692,21 +14817,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - eslint-plugin-react-jsx@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/core': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/jsx': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color eslint-plugin-react-naming-convention@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: @@ -15721,30 +14831,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - eslint-plugin-react-naming-convention@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/core': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/var': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - ts-pattern: 5.9.0 - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-refresh@0.5.3(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): - dependencies: - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - optional: true - - eslint-plugin-react-refresh@0.5.3(eslint@10.6.0(jiti@2.7.0)): - dependencies: - eslint: 10.6.0(jiti@2.7.0) eslint-plugin-react-rsc@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: @@ -15759,21 +14845,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - eslint-plugin-react-rsc@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/core': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/var': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color eslint-plugin-react-web-api@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: @@ -15790,25 +14861,8 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - eslint-plugin-react-web-api@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/core': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/var': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - birecord: 0.1.1 - eslint: 10.6.0(jiti@2.7.0) - ts-pattern: 5.9.0 - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-x@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): + eslint-plugin-react-x@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2): dependencies: '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) '@eslint-react/core': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) @@ -15817,7 +14871,7 @@ snapshots: '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) '@eslint-react/var': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) '@typescript-eslint/types': 8.63.0 '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2) '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) @@ -15829,29 +14883,6 @@ snapshots: typescript: '@typescript/typescript6@6.0.2' transitivePeerDependencies: - supports-color - optional: true - - eslint-plugin-react-x@5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint-react/ast': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/core': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/eslint': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/jsx': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/shared': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@eslint-react/var': 5.12.1(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.63.0 - '@typescript-eslint/type-utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - '@typescript-eslint/types': 8.63.0 - '@typescript-eslint/typescript-estree': 8.63.0(@typescript/typescript6@6.0.2) - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - compare-versions: 6.1.1 - eslint: 10.6.0(jiti@2.7.0) - string-ts: 2.3.1 - ts-api-utils: 2.5.0(@typescript/typescript6@6.0.2) - ts-pattern: 5.9.0 - typescript: '@typescript/typescript6@6.0.2' - transitivePeerDependencies: - - supports-color eslint-plugin-regexp@3.1.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: @@ -15864,30 +14895,10 @@ snapshots: regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-regexp@3.1.1(eslint@10.6.0(jiti@2.7.0)): + eslint-plugin-storybook@10.4.6(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - '@eslint-community/regexpp': 4.12.2 - comment-parser: 1.4.7 - eslint: 10.6.0(jiti@2.7.0) - jsdoc-type-pratt-parser: 7.2.0 - refa: 0.12.1 - regexp-ast-analysis: 0.7.1 - scslre: 0.3.0 - - eslint-plugin-storybook@10.4.6(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))): - dependencies: - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@25.9.5)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-storybook@10.4.6(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))): - dependencies: - '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) + '@typescript-eslint/utils': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) + eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.17)(react@19.2.7)(vite-plus@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(@voidzero-dev/vite-plus-core@0.2.4(@types/node@26.0.1)(@typescript/typescript6@6.0.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0))(esbuild@0.28.1)(happy-dom@20.10.6)(jiti@2.7.0)(tsx@4.23.0)(yaml@2.9.0)) transitivePeerDependencies: - supports-color @@ -15904,17 +14915,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-toml@1.4.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 - '@ota-meshi/ast-token-store': 0.3.0 - debug: 4.4.3(supports-color@10.2.2) - eslint: 10.6.0(jiti@2.7.0) - toml-eslint-parser: 1.0.3 - transitivePeerDependencies: - - supports-color - eslint-plugin-unicorn@68.0.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: '@babel/helper-validator-identifier': 7.29.7 @@ -15935,67 +14935,7 @@ snapshots: semver: 7.8.5 strip-indent: 4.1.1 - eslint-plugin-unicorn@68.0.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@babel/helper-validator-identifier': 7.29.7 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - browserslist: 4.28.4 - change-case: 5.4.4 - ci-info: 4.4.0 - core-js-compat: 3.49.0 - detect-indent: 7.0.2 - eslint: 10.6.0(jiti@2.7.0) - find-up-simple: 1.0.1 - globals: 17.7.0 - indent-string: 5.0.0 - is-builtin-module: 5.0.0 - jsesc: 3.1.0 - pluralize: 8.0.0 - regjsparser: 0.13.2 - semver: 7.8.5 - strip-indent: 4.1.1 - - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): - dependencies: - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0)): - dependencies: - eslint: 10.6.0(jiti@2.7.0) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.63.0(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2))(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - - eslint-plugin-vue@10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)))(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(vue-eslint-parser@10.4.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 7.1.4 - semver: 7.8.5 - vue-eslint-parser: 10.4.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) - xml-name-validator: 4.0.0 - optionalDependencies: - '@stylistic/eslint-plugin': 5.10.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) - - eslint-plugin-vue@10.9.2(@stylistic/eslint-plugin@5.10.0(eslint@10.6.0(jiti@2.7.0)))(@typescript-eslint/parser@8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0)))(eslint@10.6.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.6.0(jiti@2.7.0))): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - eslint: 10.6.0(jiti@2.7.0) - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 7.1.4 - semver: 7.8.5 - vue-eslint-parser: 10.4.1(eslint@10.6.0(jiti@2.7.0)) - xml-name-validator: 4.0.0 - optionalDependencies: - '@stylistic/eslint-plugin': 5.10.0(eslint@10.6.0(jiti@2.7.0)) - '@typescript-eslint/parser': 8.63.0(@typescript/typescript6@6.0.2)(eslint@10.6.0(jiti@2.7.0))(supports-color@10.2.2) - - eslint-plugin-yml@3.5.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): + eslint-plugin-yml@3.6.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.2 @@ -16004,26 +14944,7 @@ snapshots: escape-string-regexp: 5.0.0 eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) natural-compare: 1.4.0 - yaml-eslint-parser: 2.0.0 - - eslint-plugin-yml@3.5.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 - '@ota-meshi/ast-token-store': 0.3.0 - diff-sequences: 29.6.3 - escape-string-regexp: 5.0.0 - eslint: 10.6.0(jiti@2.7.0) - natural-compare: 1.4.0 - yaml-eslint-parser: 2.0.0 - - eslint-processor-vue-blocks@2.0.0(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)): - dependencies: - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - - eslint-processor-vue-blocks@2.0.0(eslint@10.6.0(jiti@2.7.0)): - dependencies: - eslint: 10.6.0(jiti@2.7.0) + yaml-eslint-parser: 2.1.0 eslint-scope@9.1.2: dependencies: @@ -16034,47 +14955,8 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@5.0.1: {} - eslint@10.6.0(jiti@2.7.0): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5(supports-color@10.2.2) - '@eslint/config-helpers': 0.6.0 - '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.9 - ajv: 6.15.0 - cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@10.2.2) - escape-string-regexp: 4.0.0 - eslint-scope: 9.1.2 - eslint-visitor-keys: 5.0.1 - espree: 11.2.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.7.0 - transitivePeerDependencies: - - supports-color - eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2)) @@ -16112,12 +14994,6 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.4.0: - dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) - eslint-visitor-keys: 4.2.1 - espree@11.2.0: dependencies: acorn: 8.17.0 @@ -16198,14 +15074,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-glob@3.3.1: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -16218,16 +15086,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-string-truncated-width@3.0.3: {} - - fast-string-width@3.0.2: - dependencies: - fast-string-truncated-width: 3.0.3 - - fast-wrap-ansi@0.2.2: - dependencies: - fast-string-width: 3.0.2 - fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -17150,7 +16008,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -17165,14 +16023,14 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - mdast-util-from-markdown@2.0.3: + mdast-util-from-markdown@2.0.3(supports-color@10.2.2): dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 - micromark: 4.0.2 + micromark: 4.0.2(supports-color@10.2.2) micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-decode-string: 2.0.1 micromark-util-normalize-identifier: 2.0.1 @@ -17187,7 +16045,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: @@ -17205,7 +16063,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 micromark-util-normalize-identifier: 2.0.1 transitivePeerDependencies: @@ -17214,7 +16072,7 @@ snapshots: mdast-util-gfm-strikethrough@2.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -17224,7 +16082,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -17233,14 +16091,14 @@ snapshots: dependencies: '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color mdast-util-gfm@3.1.0: dependencies: - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 @@ -17256,7 +16114,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 longest-streak: 3.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 unist-util-remove-position: 5.0.0 transitivePeerDependencies: @@ -17268,7 +16126,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -17281,7 +16139,7 @@ snapshots: '@types/unist': 3.0.3 ccount: 2.0.1 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 parse-entities: 4.0.2 stringify-entities: 4.0.4 @@ -17292,7 +16150,7 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 @@ -17306,7 +16164,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) mdast-util-to-markdown: 2.1.2 transitivePeerDependencies: - supports-color @@ -17655,7 +16513,7 @@ snapshots: micromark-util-types@2.0.2: {} - micromark@4.0.2: + micromark@4.0.2(supports-color@10.2.2): dependencies: '@types/debug': 4.1.13 debug: 4.4.3(supports-color@10.2.2) @@ -17699,7 +16557,7 @@ snapshots: minimatch@3.1.5: dependencies: - brace-expansion: 1.1.15 + brace-expansion: 1.1.16 minimist@1.2.8: {} @@ -17725,8 +16583,6 @@ snapshots: module-alias@2.3.4: {} - module-replacements@3.0.0-beta.8: {} - moo-color@1.0.3: dependencies: color-name: 1.1.4 @@ -18285,8 +17141,6 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-gitignore@2.0.0: {} - parse-imports-exports@0.2.4: dependencies: parse-statements: 1.0.11 @@ -18404,11 +17258,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.1.4: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-value-parser@4.2.0: {} postcss@8.5.16: @@ -18836,7 +17685,7 @@ snapshots: remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 + mdast-util-from-markdown: 2.0.3(supports-color@10.2.2) micromark-util-types: 2.0.2 unified: 11.0.5 transitivePeerDependencies: @@ -19095,8 +17944,6 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 - sisteransi@1.0.5: {} - size-sensor@1.0.3: {} smol-toml@1.7.0: {} @@ -20215,30 +19062,6 @@ snapshots: vscode-uri@3.1.0: {} - vue-eslint-parser@10.4.1(eslint@10.6.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2): - dependencies: - debug: 4.4.3(supports-color@10.2.2) - eslint: 10.6.0(jiti@2.7.0)(supports-color@10.2.2) - eslint-scope: 9.1.2 - eslint-visitor-keys: 5.0.1 - espree: 11.2.0 - esquery: 1.7.0 - semver: 7.8.5 - transitivePeerDependencies: - - supports-color - - vue-eslint-parser@10.4.1(eslint@10.6.0(jiti@2.7.0)): - dependencies: - debug: 4.4.3(supports-color@10.2.2) - eslint: 10.6.0(jiti@2.7.0) - eslint-scope: 9.1.2 - eslint-visitor-keys: 5.0.1 - espree: 11.2.0 - esquery: 1.7.0 - semver: 7.8.5 - transitivePeerDependencies: - - supports-color - walk-up-path@4.0.0: {} web-namespaces@2.0.1: {} @@ -20330,8 +19153,6 @@ snapshots: is-wsl: 3.1.1 powershell-utils: 0.1.0 - xml-name-validator@4.0.0: {} - xmlbuilder@15.1.1: {} xmlhttprequest-ssl@2.1.2: {} @@ -20342,7 +19163,7 @@ snapshots: yallist@5.0.0: {} - yaml-eslint-parser@2.0.0: + yaml-eslint-parser@2.1.0: dependencies: eslint-visitor-keys: 5.0.1 yaml: 2.9.0 @@ -20410,14 +19231,14 @@ snapshots: time: '@amplitude/analytics-browser@2.44.4': '2026-06-30T00:46:40.748Z' '@amplitude/plugin-session-replay-browser@1.33.0': '2026-06-30T00:47:10.239Z' - '@antfu/eslint-config@9.1.0': '2026-06-24T02:26:14.123Z' '@base-ui/react@1.6.0': '2026-06-18T12:04:15.326Z' '@chromatic-com/storybook@5.2.1': '2026-05-14T07:49:29.364Z' '@cucumber/cucumber@13.0.0': '2026-06-02T07:10:03.122Z' '@egoist/tailwindcss-icons@1.9.2': '2026-01-31T10:48:44.594Z' '@emoji-mart/data@1.2.1': '2024-04-25T15:36:14.556Z' + '@eslint-community/eslint-plugin-eslint-comments@4.7.2': '2026-05-26T23:33:40.033Z' '@eslint-react/eslint-plugin@5.12.1': '2026-07-08T11:59:51.415Z' - '@eslint/js@10.0.1': '2026-02-06T22:34:56.290Z' + '@eslint/markdown@8.0.3': '2026-07-01T13:28:44.339Z' '@floating-ui/react@0.27.19': '2026-03-03T03:02:09.664Z' '@formatjs/intl-localematcher@0.8.10': '2026-06-04T15:24:22.451Z' '@heroicons/react@2.2.0': '2024-11-18T15:33:27.317Z' @@ -20437,7 +19258,6 @@ time: '@mediabunny/mp3-encoder@1.50.7': '2026-07-07T19:31:44.869Z' '@monaco-editor/react@4.7.0': '2025-02-13T16:13:41.390Z' '@napi-rs/keyring@1.3.0': '2026-04-30T09:56:44.246Z' - '@next/eslint-plugin-next@16.2.10': '2026-07-01T20:11:43.814Z' '@next/mdx@16.2.10': '2026-07-01T20:12:04.301Z' '@orpc/client@1.14.7': '2026-07-06T08:38:38.441Z' '@orpc/contract@1.14.7': '2026-07-06T08:38:44.863Z' @@ -20485,7 +19305,6 @@ time: '@types/react-dom@19.2.3': '2025-11-12T04:37:39.524Z' '@types/react@19.2.17': '2026-06-05T20:10:24.692Z' '@types/sortablejs@1.15.9': '2025-10-24T04:31:45.132Z' - '@typescript-eslint/eslint-plugin@8.63.0': '2026-07-06T17:52:58.690Z' '@typescript-eslint/parser@8.63.0': '2026-07-06T17:52:34.911Z' '@typescript/typescript6@6.0.2': '2026-07-06T18:06:47.459Z' '@vitejs/plugin-react@6.0.3': '2026-06-23T10:11:14.652Z' @@ -20518,14 +19337,25 @@ time: embla-carousel-react@8.6.0: '2025-04-04T17:37:53.976Z' emoji-mart@5.6.0: '2024-04-25T14:22:21.440Z' es-toolkit@1.49.0: '2026-06-26T00:26:01.050Z' - eslint-markdown@0.12.0: '2026-07-08T09:36:14.740Z' + eslint-markdown@0.12.1: '2026-07-10T23:35:26.055Z' + eslint-plugin-antfu@3.2.3: '2026-05-11T02:24:38.348Z' eslint-plugin-better-tailwindcss@4.6.1: '2026-07-03T15:13:24.013Z' + eslint-plugin-command@3.5.2: '2026-02-25T04:29:02.155Z' + eslint-plugin-erasable-syntax-only@0.4.2: '2026-06-18T00:56:01.038Z' eslint-plugin-hyoban@0.14.1: '2026-03-08T02:51:00.805Z' + eslint-plugin-jsdoc@63.0.10: '2026-06-27T02:49:41.399Z' + eslint-plugin-jsonc@3.3.0: '2026-07-07T00:25:44.392Z' eslint-plugin-jsx-a11y@6.10.2: '2024-10-26T04:45:18.067Z' eslint-plugin-markdown-preferences@0.41.1: '2026-04-09T23:28:41.552Z' + eslint-plugin-n@18.2.1: '2026-06-26T02:50:26.436Z' eslint-plugin-no-barrel-files@1.3.1: '2026-04-12T18:28:18.653Z' - eslint-plugin-react-refresh@0.5.3: '2026-06-14T12:46:34.395Z' + eslint-plugin-perfectionist@5.9.1: '2026-06-15T18:23:06.431Z' + eslint-plugin-pnpm@1.6.1: '2026-05-19T20:20:01.377Z' + eslint-plugin-regexp@3.1.1: '2026-06-25T23:07:43.989Z' eslint-plugin-storybook@10.4.6: '2026-06-16T11:43:14.113Z' + eslint-plugin-toml@1.4.0: '2026-05-29T06:15:45.616Z' + eslint-plugin-unicorn@68.0.0: '2026-06-19T07:53:09.163Z' + eslint-plugin-yml@3.6.0: '2026-07-07T01:43:31.414Z' eslint@10.6.0: '2026-06-26T20:09:18.001Z' eventsource-parser@3.1.0: '2026-05-27T20:55:51.466Z' fast-deep-equal@3.1.3: '2020-06-08T07:27:28.474Z' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 038c27e021a..f7fac5c2b70 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -52,14 +52,14 @@ overrides: catalog: '@amplitude/analytics-browser': 2.44.4 '@amplitude/plugin-session-replay-browser': 1.33.0 - '@antfu/eslint-config': 9.1.0 '@base-ui/react': 1.6.0 '@chromatic-com/storybook': 5.2.1 '@cucumber/cucumber': 13.0.0 '@egoist/tailwindcss-icons': 1.9.2 '@emoji-mart/data': 1.2.1 + '@eslint-community/eslint-plugin-eslint-comments': 4.7.2 '@eslint-react/eslint-plugin': 5.12.1 - '@eslint/js': 10.0.1 + '@eslint/markdown': 8.0.3 '@floating-ui/react': 0.27.19 '@formatjs/intl-localematcher': 0.8.10 '@heroicons/react': 2.2.0 @@ -80,7 +80,6 @@ catalog: '@mediabunny/mp3-encoder': 1.50.7 '@monaco-editor/react': 4.7.0 '@napi-rs/keyring': 1.3.0 - '@next/eslint-plugin-next': 16.2.10 '@next/mdx': 16.2.10 '@orpc/client': 1.14.7 '@orpc/contract': 1.14.7 @@ -128,7 +127,6 @@ catalog: '@types/react': 19.2.17 '@types/react-dom': 19.2.3 '@types/sortablejs': 1.15.9 - '@typescript-eslint/eslint-plugin': 8.63.0 '@typescript-eslint/parser': 8.63.0 '@typescript/native': npm:typescript@7.0.2 '@vitejs/plugin-react': 6.0.3 @@ -161,14 +159,25 @@ catalog: emoji-mart: 5.6.0 es-toolkit: 1.49.0 eslint: 10.6.0 - eslint-markdown: 0.12.0 + eslint-markdown: 0.12.1 + eslint-plugin-antfu: 3.2.3 eslint-plugin-better-tailwindcss: 4.6.1 + eslint-plugin-command: 3.5.2 + eslint-plugin-erasable-syntax-only: 0.4.2 eslint-plugin-hyoban: 0.14.1 + eslint-plugin-jsdoc: 63.0.10 + eslint-plugin-jsonc: 3.3.0 eslint-plugin-jsx-a11y: 6.10.2 eslint-plugin-markdown-preferences: 0.41.1 + eslint-plugin-n: 18.2.1 eslint-plugin-no-barrel-files: 1.3.1 - eslint-plugin-react-refresh: 0.5.3 + eslint-plugin-perfectionist: 5.9.1 + eslint-plugin-pnpm: 1.6.1 + eslint-plugin-regexp: 3.1.1 eslint-plugin-storybook: 10.4.6 + eslint-plugin-toml: 1.4.0 + eslint-plugin-unicorn: 68.0.0 + eslint-plugin-yml: 3.6.0 eventsource-parser: 3.1.0 fast-deep-equal: 3.1.3 foxact: 0.3.8 diff --git a/sdks/nodejs-client/eslint.config.js b/sdks/nodejs-client/eslint.config.js deleted file mode 100644 index 7a94c300ce9..00000000000 --- a/sdks/nodejs-client/eslint.config.js +++ /dev/null @@ -1,45 +0,0 @@ -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import js from '@eslint/js' -import tsPlugin from '@typescript-eslint/eslint-plugin' -import tsParser from '@typescript-eslint/parser' - -const tsconfigRootDir = path.dirname(fileURLToPath(import.meta.url)) -const typeCheckedRules = - tsPlugin.configs['recommended-type-checked']?.rules ?? - tsPlugin.configs.recommendedTypeChecked?.rules ?? - {} - -export default [ - { - ignores: ['dist', 'node_modules', 'scripts'], - }, - js.configs.recommended, - { - files: ['src/**/*.ts', 'tests/**/*.ts'], - languageOptions: { - parser: tsParser, - ecmaVersion: 'latest', - parserOptions: { - project: './tsconfig.json', - tsconfigRootDir, - sourceType: 'module', - }, - }, - plugins: { - '@typescript-eslint': tsPlugin, - }, - rules: { - ...tsPlugin.configs.recommended.rules, - ...typeCheckedRules, - 'no-undef': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unsafe-call': 'error', - '@typescript-eslint/no-unsafe-return': 'error', - '@typescript-eslint/consistent-type-imports': [ - 'error', - { prefer: 'type-imports', fixStyle: 'separate-type-imports' }, - ], - }, - }, -] diff --git a/sdks/nodejs-client/package.json b/sdks/nodejs-client/package.json index 619cebb2b5b..a1479e2660c 100644 --- a/sdks/nodejs-client/package.json +++ b/sdks/nodejs-client/package.json @@ -27,10 +27,10 @@ "directory": "sdks/nodejs-client" }, "files": [ - "dist/index.js", - "dist/index.d.ts", + "LICENSE", "README.md", - "LICENSE" + "dist/index.d.ts", + "dist/index.js" ], "type": "module", "main": "./dist/index.js", @@ -43,8 +43,6 @@ }, "scripts": { "build": "vp pack", - "lint": "eslint", - "lint:fix": "eslint --fix", "type-check": "tsc", "test": "vp test", "test:coverage": "vp test --coverage", @@ -53,13 +51,9 @@ }, "devDependencies": { "@dify/tsconfig": "workspace:*", - "@eslint/js": "catalog:", "@types/node": "catalog:", - "@typescript-eslint/eslint-plugin": "catalog:", - "@typescript-eslint/parser": "catalog:", "@typescript/native": "catalog:", "@vitest/coverage-v8": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "vite": "catalog:", "vite-plus": "catalog:", diff --git a/vite.config.ts b/vite.config.ts index bb40330eb31..5a0e2a8a373 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,8 +1,12 @@ import { defineConfig } from 'vite-plus' +import { lintConfig } from './lint.config' -const lintFiles = '*.{js,cjs,mjs,jsx,ts,cts,mts,tsx,json,jsonc,json5,md,yml,yaml,toml}' +const lintFiles = '*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}' +const eslintFiles = '*.{json,jsonc,json5,md,yml,yaml,toml}' const formatOnlyFiles = '*.{mdx,css,scss,less,html,vue,svelte,gql,graphql,hbs,handlebars}' -const lintFix = 'eslint --fix --pass-on-unpruned-suppressions --no-error-on-unmatched-pattern' +const lintFix = 'vp lint --fix --no-error-on-unmatched-pattern' +const eslintFix = + 'eslint --fix --pass-on-unpruned-suppressions --no-error-on-unmatched-pattern --no-warn-ignored' const format = 'vp fmt --no-error-on-unmatched-pattern' const nonFrontendIgnores = [ @@ -30,6 +34,7 @@ const generatedIgnores = [ 'e2e/.auth/**', 'e2e/cucumber-report/**', 'eslint-suppressions.json', + 'oxlint-suppressions.json', 'web/next/**', 'web/next-env.d.ts', 'web/public/embed.min.js', @@ -40,8 +45,10 @@ const generatedIgnores = [ const formatterUnstableInputs = ['web/app/components/develop/template/*.mdx'] export default defineConfig({ + lint: lintConfig, staged: { [lintFiles]: [lintFix, format], + [eslintFiles]: [eslintFix, format], [formatOnlyFiles]: format, }, fmt: { diff --git a/web/__mocks__/zustand.ts b/web/__mocks__/zustand.ts index 2c4211b60a5..a9f5a7828ca 100644 --- a/web/__mocks__/zustand.ts +++ b/web/__mocks__/zustand.ts @@ -4,7 +4,7 @@ import { act } from '@testing-library/react' export * from 'zustand' const { create: actualCreate, createStore: actualCreateStore } = - // eslint-disable-next-line antfu/no-top-level-await + // oxlint-disable-next-line antfu/no-top-level-await await vi.importActual('zustand') export const storeResetFns = new Set<() => void>() diff --git a/web/app/(shareLayout)/webapp-signin/page.tsx b/web/app/(shareLayout)/webapp-signin/page.tsx index 5c5602c154e..862f44966e8 100644 --- a/web/app/(shareLayout)/webapp-signin/page.tsx +++ b/web/app/(shareLayout)/webapp-signin/page.tsx @@ -33,7 +33,7 @@ const WebSSOForm: FC = () => { await webAppLogout(shareCode!) const url = getSigninUrl() router.replace(url) - }, [getSigninUrl, router, webAppLogout, shareCode]) + }, [getSigninUrl, router, shareCode]) if (!redirectUrl) { return ( diff --git a/web/app/components/app/annotation/__tests__/index.spec.tsx b/web/app/components/app/annotation/__tests__/index.spec.tsx index e7b27bd1a7a..0c634092ebc 100644 --- a/web/app/components/app/annotation/__tests__/index.spec.tsx +++ b/web/app/components/app/annotation/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { Mock } from 'vitest' import type { AnnotationItem } from '../type' import type { App } from '@/types/app' diff --git a/web/app/components/app/annotation/batch-add-annotation-modal/__tests__/csv-downloader.spec.tsx b/web/app/components/app/annotation/batch-add-annotation-modal/__tests__/csv-downloader.spec.tsx index ec51a5c66e0..1833965f2c6 100644 --- a/web/app/components/app/annotation/batch-add-annotation-modal/__tests__/csv-downloader.spec.tsx +++ b/web/app/components/app/annotation/batch-add-annotation-modal/__tests__/csv-downloader.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { Mock } from 'vitest' import type { Locale } from '@/i18n-config' import { render, screen } from '@testing-library/react' diff --git a/web/app/components/app/annotation/header-opts/__tests__/index.spec.tsx b/web/app/components/app/annotation/header-opts/__tests__/index.spec.tsx index 3383e96a2b9..7359be4e760 100644 --- a/web/app/components/app/annotation/header-opts/__tests__/index.spec.tsx +++ b/web/app/components/app/annotation/header-opts/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ComponentProps } from 'react' import type { Mock } from 'vitest' import type { AnnotationItemBasic } from '../../type' diff --git a/web/app/components/app/app-publisher/__tests__/features-wrapper.spec.tsx b/web/app/components/app/app-publisher/__tests__/features-wrapper.spec.tsx index 9108cf3d3e4..608edbdf794 100644 --- a/web/app/components/app/app-publisher/__tests__/features-wrapper.spec.tsx +++ b/web/app/components/app/app-publisher/__tests__/features-wrapper.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { fireEvent, render, screen, waitFor, within } from '@testing-library/react' import FeaturesWrappedAppPublisher from '../features-wrapper' diff --git a/web/app/components/app/app-publisher/__tests__/index.spec.tsx b/web/app/components/app/app-publisher/__tests__/index.spec.tsx index dfeb00d899c..6620ba5f59d 100644 --- a/web/app/components/app/app-publisher/__tests__/index.spec.tsx +++ b/web/app/components/app/app-publisher/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { fireEvent, screen, waitFor } from '@testing-library/react' import * as React from 'react' import { renderWithSystemFeatures } from '@/__tests__/utils/mock-system-features' diff --git a/web/app/components/app/app-publisher/__tests__/sections.spec.tsx b/web/app/components/app/app-publisher/__tests__/sections.spec.tsx index 17c32dd470e..358b72e2add 100644 --- a/web/app/components/app/app-publisher/__tests__/sections.spec.tsx +++ b/web/app/components/app/app-publisher/__tests__/sections.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ReactNode } from 'react' import { fireEvent, render, screen } from '@testing-library/react' import { AccessMode } from '@/models/access-control' diff --git a/web/app/components/app/app-publisher/__tests__/version-info-modal.spec.tsx b/web/app/components/app/app-publisher/__tests__/version-info-modal.spec.tsx index afe3ce4a63f..b3d85f3c772 100644 --- a/web/app/components/app/app-publisher/__tests__/version-info-modal.spec.tsx +++ b/web/app/components/app/app-publisher/__tests__/version-info-modal.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { toast } from '@langgenius/dify-ui/toast' import { fireEvent, render, screen } from '@testing-library/react' import VersionInfoModal from '../version-info-modal' diff --git a/web/app/components/app/configuration/config-prompt/__tests__/advanced-prompt-input.spec.tsx b/web/app/components/app/configuration/config-prompt/__tests__/advanced-prompt-input.spec.tsx index 19a4d443f6f..30e2f309e70 100644 --- a/web/app/components/app/configuration/config-prompt/__tests__/advanced-prompt-input.spec.tsx +++ b/web/app/components/app/configuration/config-prompt/__tests__/advanced-prompt-input.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ReactNode } from 'react' import type { PromptRole } from '@/models/debug' import { fireEvent, render, screen } from '@testing-library/react' diff --git a/web/app/components/app/configuration/config-prompt/__tests__/index.spec.tsx b/web/app/components/app/configuration/config-prompt/__tests__/index.spec.tsx index 9b1fa6194de..dd60eec8add 100644 --- a/web/app/components/app/configuration/config-prompt/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/config-prompt/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { IPromptProps } from '../index' import type { PromptItem, PromptVariable } from '@/models/debug' import { fireEvent, render, screen } from '@testing-library/react' diff --git a/web/app/components/app/configuration/config-prompt/__tests__/simple-prompt-input.spec.tsx b/web/app/components/app/configuration/config-prompt/__tests__/simple-prompt-input.spec.tsx index 74f21d0a6a0..d7a31dd1f5a 100644 --- a/web/app/components/app/configuration/config-prompt/__tests__/simple-prompt-input.spec.tsx +++ b/web/app/components/app/configuration/config-prompt/__tests__/simple-prompt-input.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ReactNode } from 'react' import { fireEvent, render, screen } from '@testing-library/react' import { INSERT_VARIABLE_VALUE_BLOCK_COMMAND } from '@/app/components/base/prompt-editor/plugins/variable-block' diff --git a/web/app/components/app/configuration/config-var/config-modal/__tests__/form-fields.spec.tsx b/web/app/components/app/configuration/config-var/config-modal/__tests__/form-fields.spec.tsx index 7b1aed85dae..7a471f053a9 100644 --- a/web/app/components/app/configuration/config-var/config-modal/__tests__/form-fields.spec.tsx +++ b/web/app/components/app/configuration/config-var/config-modal/__tests__/form-fields.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ReactNode } from 'react' import { fireEvent, render, screen } from '@testing-library/react' import { InputVarType } from '@/app/components/workflow/types' diff --git a/web/app/components/app/configuration/config-var/config-modal/__tests__/index-logic.spec.tsx b/web/app/components/app/configuration/config-var/config-modal/__tests__/index-logic.spec.tsx index b42a75b3b97..f39d726f7c6 100644 --- a/web/app/components/app/configuration/config-var/config-modal/__tests__/index-logic.spec.tsx +++ b/web/app/components/app/configuration/config-var/config-modal/__tests__/index-logic.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { InputVar } from '@/app/components/workflow/types' import type { App, AppSSO } from '@/types/app' import { toast } from '@langgenius/dify-ui/toast' diff --git a/web/app/components/app/configuration/config-var/config-modal/__tests__/type-select.spec.tsx b/web/app/components/app/configuration/config-var/config-modal/__tests__/type-select.spec.tsx index 00c96c3e007..edb2ff12b23 100644 --- a/web/app/components/app/configuration/config-var/config-modal/__tests__/type-select.spec.tsx +++ b/web/app/components/app/configuration/config-var/config-modal/__tests__/type-select.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import TypeSelector from '../type-select' diff --git a/web/app/components/app/configuration/config-var/index.tsx b/web/app/components/app/configuration/config-var/index.tsx index 4f069cd10ab..16a709f360e 100644 --- a/web/app/components/app/configuration/config-var/index.tsx +++ b/web/app/components/app/configuration/config-var/index.tsx @@ -205,7 +205,7 @@ const ConfigVar: FC = ({ promptVariables, readonly, onPromptVar [handleOpenExternalDataToolModal, onPromptVariablesChange, promptVariables], ) - // eslint-disable-next-line ts/no-explicit-any + // oxlint-disable-next-line typescript/no-explicit-any eventEmitter?.useSubscription((v: any) => { if (v.type === ADD_EXTERNAL_DATA_TOOL) { const payload = v.payload diff --git a/web/app/components/app/configuration/config-vision/__tests__/index.spec.tsx b/web/app/components/app/configuration/config-vision/__tests__/index.spec.tsx index c762d25fa6d..737b42212e0 100644 --- a/web/app/components/app/configuration/config-vision/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/config-vision/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { Mock } from 'vitest' import type { FeatureStoreState } from '@/app/components/base/features/store' import type { FileUpload } from '@/app/components/base/features/types' diff --git a/web/app/components/app/configuration/config/__tests__/agent-setting-button.spec.tsx b/web/app/components/app/configuration/config/__tests__/agent-setting-button.spec.tsx index 2cae9727530..d7cf6e2a1ff 100644 --- a/web/app/components/app/configuration/config/__tests__/agent-setting-button.spec.tsx +++ b/web/app/components/app/configuration/config/__tests__/agent-setting-button.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { AgentConfig } from '@/models/debug' import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' diff --git a/web/app/components/app/configuration/config/__tests__/config-audio.spec.tsx b/web/app/components/app/configuration/config/__tests__/config-audio.spec.tsx index a112983b4bc..ee232cc129a 100644 --- a/web/app/components/app/configuration/config/__tests__/config-audio.spec.tsx +++ b/web/app/components/app/configuration/config/__tests__/config-audio.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { FeatureStoreState } from '@/app/components/base/features/store' import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' diff --git a/web/app/components/app/configuration/config/__tests__/config-document.spec.tsx b/web/app/components/app/configuration/config/__tests__/config-document.spec.tsx index f9a774f080e..8a8edfa331f 100644 --- a/web/app/components/app/configuration/config/__tests__/config-document.spec.tsx +++ b/web/app/components/app/configuration/config/__tests__/config-document.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { FeatureStoreState } from '@/app/components/base/features/store' import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' diff --git a/web/app/components/app/configuration/config/__tests__/index.spec.tsx b/web/app/components/app/configuration/config/__tests__/index.spec.tsx index 6b82a6563bc..72c46d328a2 100644 --- a/web/app/components/app/configuration/config/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/config/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ModelConfig, PromptVariable } from '@/models/debug' import type { ToolItem } from '@/types/app' import { render, screen } from '@testing-library/react' diff --git a/web/app/components/app/configuration/config/agent/agent-tools/__tests__/index.spec.tsx b/web/app/components/app/configuration/config/agent/agent-tools/__tests__/index.spec.tsx index 814e85b68d7..f47e3d94b40 100644 --- a/web/app/components/app/configuration/config/agent/agent-tools/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/config/agent/agent-tools/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { PropsWithChildren } from 'react' import type { Mock } from 'vitest' import type SettingBuiltInToolType from '../setting-built-in-tool' diff --git a/web/app/components/app/configuration/config/agent/agent-tools/__tests__/setting-built-in-tool.spec.tsx b/web/app/components/app/configuration/config/agent/agent-tools/__tests__/setting-built-in-tool.spec.tsx index 550178ef9b9..946484da42c 100644 --- a/web/app/components/app/configuration/config/agent/agent-tools/__tests__/setting-built-in-tool.spec.tsx +++ b/web/app/components/app/configuration/config/agent/agent-tools/__tests__/setting-built-in-tool.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { Tool, ToolParameter } from '@/app/components/tools/types' import { render, screen, waitFor } from '@testing-library/react' import userEvent from '@testing-library/user-event' diff --git a/web/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool.tsx b/web/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool.tsx index c7cfd8ca951..cb0223c7fe8 100644 --- a/web/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool.tsx +++ b/web/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool.tsx @@ -97,7 +97,7 @@ const SettingBuiltInTool: FC = ({ } catch {} setIsLoading(false) })() - // eslint-disable-next-line react-hooks/exhaustive-deps + // oxlint-disable-next-line react/exhaustive-deps }, [collection?.name, collection?.id, collection?.type]) useEffect(() => { diff --git a/web/app/components/app/configuration/dataset-config/__tests__/index.spec.tsx b/web/app/components/app/configuration/dataset-config/__tests__/index.spec.tsx index 33e7adac6b2..3f8aa021ef2 100644 --- a/web/app/components/app/configuration/dataset-config/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/dataset-config/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { DataSet } from '@/models/datasets' import type { DatasetConfigs } from '@/models/debug' import { fireEvent, render, screen, within } from '@testing-library/react' diff --git a/web/app/components/app/configuration/dataset-config/select-dataset/__tests__/index.spec.tsx b/web/app/components/app/configuration/dataset-config/select-dataset/__tests__/index.spec.tsx index 1ef0267629b..47e56ba00ac 100644 --- a/web/app/components/app/configuration/dataset-config/select-dataset/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/dataset-config/select-dataset/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { DataSet } from '@/models/datasets' import { act, fireEvent, render, screen, waitFor } from '@testing-library/react' import * as React from 'react' diff --git a/web/app/components/app/configuration/debug/__tests__/hooks.spec.tsx b/web/app/components/app/configuration/debug/__tests__/hooks.spec.tsx index 94a799d5a47..3d71af1cafd 100644 --- a/web/app/components/app/configuration/debug/__tests__/hooks.spec.tsx +++ b/web/app/components/app/configuration/debug/__tests__/hooks.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { act, renderHook } from '@testing-library/react' import { AgentStrategy } from '@/types/app' import { diff --git a/web/app/components/app/configuration/debug/debug-with-multiple-model/__tests__/index.spec.tsx b/web/app/components/app/configuration/debug/debug-with-multiple-model/__tests__/index.spec.tsx index 996840abe8d..319eb5a586a 100644 --- a/web/app/components/app/configuration/debug/debug-with-multiple-model/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/debug/debug-with-multiple-model/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { CSSProperties } from 'react' import type { ModelAndParameter } from '../../types' import type { DebugWithMultipleModelContextType } from '../context' diff --git a/web/app/components/app/configuration/debug/debug-with-single-model/__tests__/index.spec.tsx b/web/app/components/app/configuration/debug/debug-with-single-model/__tests__/index.spec.tsx index 5b31f175676..2017ff75371 100644 --- a/web/app/components/app/configuration/debug/debug-with-single-model/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/debug/debug-with-single-model/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ReactNode, RefObject } from 'react' import type { DebugWithSingleModelRefType } from '../index' import type { ChatItem } from '@/app/components/base/chat/types' diff --git a/web/app/components/app/configuration/hooks/__tests__/use-advanced-prompt-config.spec.tsx b/web/app/components/app/configuration/hooks/__tests__/use-advanced-prompt-config.spec.tsx index 04840749482..e77d2c91397 100644 --- a/web/app/components/app/configuration/hooks/__tests__/use-advanced-prompt-config.spec.tsx +++ b/web/app/components/app/configuration/hooks/__tests__/use-advanced-prompt-config.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { act, renderHook, waitFor } from '@testing-library/react' import { CONTEXT_PLACEHOLDER_TEXT, diff --git a/web/app/components/app/configuration/hooks/__tests__/use-configuration-utils.spec.ts b/web/app/components/app/configuration/hooks/__tests__/use-configuration-utils.spec.ts index df85089cebc..23b0403d756 100644 --- a/web/app/components/app/configuration/hooks/__tests__/use-configuration-utils.spec.ts +++ b/web/app/components/app/configuration/hooks/__tests__/use-configuration-utils.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { VisionSettings } from '@/types/app' import { withSelectorKey } from '@/test/i18n-mock' import { diff --git a/web/app/components/app/configuration/hooks/__tests__/use-configuration.spec.tsx b/web/app/components/app/configuration/hooks/__tests__/use-configuration.spec.tsx index 0a8edf49eec..39136ab580d 100644 --- a/web/app/components/app/configuration/hooks/__tests__/use-configuration.spec.tsx +++ b/web/app/components/app/configuration/hooks/__tests__/use-configuration.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { act, renderHook, waitFor } from '@testing-library/react' import { updateAppModelConfig } from '@/service/apps' import { AppModeEnum, ModelModeType } from '@/types/app' diff --git a/web/app/components/app/configuration/prompt-value-panel/__tests__/index.spec.tsx b/web/app/components/app/configuration/prompt-value-panel/__tests__/index.spec.tsx index 6d4014df650..66ba4f14491 100644 --- a/web/app/components/app/configuration/prompt-value-panel/__tests__/index.spec.tsx +++ b/web/app/components/app/configuration/prompt-value-panel/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { IPromptValuePanelProps } from '../index' import { fireEvent, render, screen, waitFor } from '@testing-library/react' import * as React from 'react' diff --git a/web/app/components/app/create-app-dialog/app-card/__tests__/index.spec.tsx b/web/app/components/app/create-app-dialog/app-card/__tests__/index.spec.tsx index a49de1bc5cc..c4f74a329d8 100644 --- a/web/app/components/app/create-app-dialog/app-card/__tests__/index.spec.tsx +++ b/web/app/components/app/create-app-dialog/app-card/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { App } from '@/models/explore' import type { AppIconType } from '@/types/app' import { screen, within } from '@testing-library/react' @@ -73,7 +73,7 @@ describe('AppCard', () => { const renderWithProvider = (ui: React.ReactElement) => { return render( - // eslint-disable-next-line react/no-context-provider + // oxlint-disable-next-line eslint-react/no-context-provider = ({ useEffect(() => { if (controlClearMoreLikeThis) { - // eslint-disable-next-line react/set-state-in-effect + // oxlint-disable-next-line eslint-react/set-state-in-effect setChildMessageId(null) - // eslint-disable-next-line react/set-state-in-effect + // oxlint-disable-next-line eslint-react/set-state-in-effect setCompletionRes('') } }, [controlClearMoreLikeThis]) @@ -161,7 +161,7 @@ const GenerationItem: FC = ({ // regeneration clear child useEffect(() => { if (isLoading) - // eslint-disable-next-line react/set-state-in-effect + // oxlint-disable-next-line eslint-react/set-state-in-effect setChildMessageId(null) }, [isLoading]) @@ -180,7 +180,7 @@ const GenerationItem: FC = ({ setCurrentTab(tab) } useEffect(() => { - // eslint-disable-next-line react/set-state-in-effect + // oxlint-disable-next-line eslint-react/set-state-in-effect setCurrentTab(getDefaultGenerationTab(workflowProcessData)) }, [workflowProcessData]) const handleSubmitHumanInputForm = useCallback( diff --git a/web/app/components/app/workflow-log/__tests__/list.spec.tsx b/web/app/components/app/workflow-log/__tests__/list.spec.tsx index 17b8c104e42..f30de8edbe6 100644 --- a/web/app/components/app/workflow-log/__tests__/list.spec.tsx +++ b/web/app/components/app/workflow-log/__tests__/list.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ /** * WorkflowAppLogList Component Tests * diff --git a/web/app/components/apps/hooks/__tests__/use-apps-query-state.spec.tsx b/web/app/components/apps/hooks/__tests__/use-apps-query-state.spec.tsx index 42bc6a5a942..bbbc9e549db 100644 --- a/web/app/components/apps/hooks/__tests__/use-apps-query-state.spec.tsx +++ b/web/app/components/apps/hooks/__tests__/use-apps-query-state.spec.tsx @@ -5,7 +5,7 @@ import { APP_LIST_SEARCH_DEBOUNCE_MS } from '../../constants' import { useAppsQueryState } from '../use-apps-query-state' const renderWithAdapter = (searchParams = '') => { - // eslint-disable-next-line react/use-state -- renderHook executes a custom hook, not React.useState + // oxlint-disable-next-line eslint-react/use-state -- renderHook executes a custom hook, not React.useState return renderHookWithNuqs(() => useAppsQueryState(), { searchParams }) } diff --git a/web/app/components/apps/list.tsx b/web/app/components/apps/list.tsx index a459c1e3c77..51ba53e2f49 100644 --- a/web/app/components/apps/list.tsx +++ b/web/app/components/apps/list.tsx @@ -50,7 +50,7 @@ function List({ controlRefreshList = 0 }: Props) { const workspacePermissionKeys = useAtomValue(workspacePermissionKeysAtom) const { onPlanInfoChanged } = useProviderContext() - // eslint-disable-next-line react/use-state -- custom URL query hook, not React.useState + // oxlint-disable-next-line eslint-react/use-state -- custom URL query hook, not React.useState const { query: { category, keywords, creatorIDs }, setCategory, diff --git a/web/app/components/base/audio-btn/audio.player.manager.ts b/web/app/components/base/audio-btn/audio.player.manager.ts index 227eae6844b..59fb1faee34 100644 --- a/web/app/components/base/audio-btn/audio.player.manager.ts +++ b/web/app/components/base/audio-btn/audio.player.manager.ts @@ -1,7 +1,7 @@ import AudioPlayer from '@/app/components/base/audio-btn/audio' declare global { - // eslint-disable-next-line ts/consistent-type-definitions + // oxlint-disable-next-line typescript/consistent-type-definitions interface AudioPlayerManager { instance: AudioPlayerManager } diff --git a/web/app/components/base/audio-btn/audio.ts b/web/app/components/base/audio-btn/audio.ts index 2dc300c1f2e..be115023d9f 100644 --- a/web/app/components/base/audio-btn/audio.ts +++ b/web/app/components/base/audio-btn/audio.ts @@ -2,7 +2,7 @@ import { toast } from '@langgenius/dify-ui/toast' import { AppSourceType, textToAudioStream } from '@/service/share' declare global { - // eslint-disable-next-line ts/consistent-type-definitions + // oxlint-disable-next-line typescript/consistent-type-definitions interface Window { ManagedMediaSource: any } diff --git a/web/app/components/base/audio-gallery/AudioPlayer.tsx b/web/app/components/base/audio-gallery/AudioPlayer.tsx index 473357c3386..8cdfec592fe 100644 --- a/web/app/components/base/audio-gallery/AudioPlayer.tsx +++ b/web/app/components/base/audio-gallery/AudioPlayer.tsx @@ -56,7 +56,7 @@ const AudioPlayer: React.FC = ({ src, srcs }) => { const primarySrc = srcs?.[0] || src if (primarySrc) { // Delayed generation of waveform data - // eslint-disable-next-line ts/no-use-before-define + // oxlint-disable-next-line typescript/no-use-before-define const timer = setTimeout(generateWaveformData, 1000, primarySrc) return () => { audio.removeEventListener('loadedmetadata', setAudioData) diff --git a/web/app/components/base/audio-gallery/__tests__/AudioPlayer.spec.tsx b/web/app/components/base/audio-gallery/__tests__/AudioPlayer.spec.tsx index 46a43b8fe12..f64dadfdd9d 100644 --- a/web/app/components/base/audio-gallery/__tests__/AudioPlayer.spec.tsx +++ b/web/app/components/base/audio-gallery/__tests__/AudioPlayer.spec.tsx @@ -45,7 +45,7 @@ async function advanceWaveformTimer() { }) } -// eslint-disable-next-line ts/no-explicit-any +// oxlint-disable-next-line typescript/no-explicit-any type ReactEventHandler = ((...args: any[]) => void) | undefined function getReactProps(el: T): Record { const key = Object.keys(el).find((k) => k.startsWith('__reactProps$')) diff --git a/web/app/components/base/auto-height-textarea/index.tsx b/web/app/components/base/auto-height-textarea/index.tsx index 4e24e89a11c..b621986a82a 100644 --- a/web/app/components/base/auto-height-textarea/index.tsx +++ b/web/app/components/base/auto-height-textarea/index.tsx @@ -32,7 +32,7 @@ const AutoHeightTextarea = ({ }: IProps & { ref?: React.RefObject }) => { - // eslint-disable-next-line react-hooks/rules-of-hooks + // oxlint-disable-next-line react/rules-of-hooks const ref = outerRef || useRef(null) const doFocus = () => { diff --git a/web/app/components/base/carousel/index.tsx b/web/app/components/base/carousel/index.tsx index 4473c677541..765c1fd4f9a 100644 --- a/web/app/components/base/carousel/index.tsx +++ b/web/app/components/base/carousel/index.tsx @@ -1,4 +1,4 @@ -/* eslint-disable react-hooks-extra/no-direct-set-state-in-use-effect */ +/* oxlint-disable eslint-react/set-state-in-effect */ import type { UseEmblaCarouselType } from 'embla-carousel-react' import { cn } from '@langgenius/dify-ui/cn' import Autoplay from 'embla-carousel-autoplay' diff --git a/web/app/components/base/chat/chat-with-history/hooks.tsx b/web/app/components/base/chat/chat-with-history/hooks.tsx index ef451464e08..bf0bdff7413 100644 --- a/web/app/components/base/chat/chat-with-history/hooks.tsx +++ b/web/app/components/base/chat/chat-with-history/hooks.tsx @@ -259,7 +259,7 @@ export const useChatWithHistory = (installedAppInfo?: InstalledApp) => { const [initUserVariables, setInitUserVariables] = useState>({}) const handleNewConversationInputsChange = useCallback((newInputs: Record) => { newConversationInputsRef.current = newInputs - // eslint-disable-next-line react/set-state-in-effect -- This handler intentionally syncs derived input defaults when called from the reset effect below. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- This handler intentionally syncs derived input defaults when called from the reset effect below. setNewConversationInputs(newInputs) }, []) const inputsForms = useMemo(() => { @@ -363,7 +363,7 @@ export const useChatWithHistory = (installedAppInfo?: InstalledApp) => { const [originConversationList, setOriginConversationList] = useState([]) useEffect(() => { if (appConversationData?.data && !appConversationDataLoading) - // eslint-disable-next-line react/set-state-in-effect -- Conversation query results intentionally replace the local editable list. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- Conversation query results intentionally replace the local editable list. setOriginConversationList(appConversationData?.data) }, [appConversationData, appConversationDataLoading]) const conversationList = useMemo(() => { @@ -380,7 +380,7 @@ export const useChatWithHistory = (installedAppInfo?: InstalledApp) => { }, [originConversationList, showNewConversationItemInList, t]) useEffect(() => { if (newConversation) { - // eslint-disable-next-line react/set-state-in-effect -- Newly resolved conversation names intentionally patch the local list cache. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- Newly resolved conversation names intentionally patch the local list cache. setOriginConversationList( produce((draft) => { const index = draft.findIndex((item) => item.id === newConversation.id) @@ -406,7 +406,7 @@ export const useChatWithHistory = (installedAppInfo?: InstalledApp) => { ) useEffect(() => { if (currentConversationItem) - // eslint-disable-next-line react/set-state-in-effect -- Selected conversation changes intentionally resync the editable input snapshot. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- Selected conversation changes intentionally resync the editable input snapshot. setCurrentConversationInputs(currentConversationLatestInputs || {}) }, [currentConversationItem, currentConversationLatestInputs]) const checkInputsRequired = useCallback( diff --git a/web/app/components/base/chat/chat/chat-input-area/index.tsx b/web/app/components/base/chat/chat/chat-input-area/index.tsx index c22681bf4bf..23ba8f89501 100644 --- a/web/app/components/base/chat/chat/chat-input-area/index.tsx +++ b/web/app/components/base/chat/chat/chat-input-area/index.tsx @@ -338,7 +338,7 @@ const ChatInputArea = ({ ) } // Existing chat behavior focuses the composer as soon as it opens. - // eslint-disable-next-line jsx-a11y/no-autofocus + // oxlint-disable-next-line jsx-a11y/no-autofocus autoFocus={autoFocus} minRows={1} value={query} diff --git a/web/app/components/base/chat/chat/citation/index.tsx b/web/app/components/base/chat/chat/citation/index.tsx index ec51c13f417..c7b7086fb58 100644 --- a/web/app/components/base/chat/chat/citation/index.tsx +++ b/web/app/components/base/chat/chat/citation/index.tsx @@ -68,7 +68,7 @@ const Citation: FC = ({ } } setLimitNumberInOneLine(limit) - // eslint-disable-next-line react-hooks/exhaustive-deps + // oxlint-disable-next-line react/exhaustive-deps }, []) const resourcesLength = resources.length diff --git a/web/app/components/base/chat/embedded-chatbot/hooks.tsx b/web/app/components/base/chat/embedded-chatbot/hooks.tsx index b49b7e5b6f4..e66c7551a31 100644 --- a/web/app/components/base/chat/embedded-chatbot/hooks.tsx +++ b/web/app/components/base/chat/embedded-chatbot/hooks.tsx @@ -1,5 +1,5 @@ import type { ChatConfig, ChatItem, Feedback } from '../types' -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { InputValueTypes } from '@/app/components/share/text-generation/types' import type { Locale } from '@/i18n-config' import type { AppData, ConversationItem } from '@/models/share' @@ -194,7 +194,7 @@ export const useEmbeddedChatbot = (appSourceType: AppSourceType, tryAppId?: stri const [initUserVariables, setInitUserVariables] = useState>({}) const handleNewConversationInputsChange = useCallback((newInputs: Record) => { newConversationInputsRef.current = newInputs - // eslint-disable-next-line react-hooks-extra/no-direct-set-state-in-use-effect + // oxlint-disable-next-line eslint-react/set-state-in-effect setNewConversationInputs(newInputs) }, []) const inputsForms = useMemo(() => { @@ -299,7 +299,7 @@ export const useEmbeddedChatbot = (appSourceType: AppSourceType, tryAppId?: stri const [originConversationList, setOriginConversationList] = useState([]) useEffect(() => { if (appConversationData?.data && !appConversationDataLoading) - // eslint-disable-next-line react-hooks-extra/no-direct-set-state-in-use-effect + // oxlint-disable-next-line eslint-react/set-state-in-effect setOriginConversationList(appConversationData?.data) }, [appConversationData, appConversationDataLoading]) const conversationList = useMemo(() => { @@ -341,7 +341,7 @@ export const useEmbeddedChatbot = (appSourceType: AppSourceType, tryAppId?: stri ) useEffect(() => { if (currentConversationItem && !isTryApp) - // eslint-disable-next-line react-hooks-extra/no-direct-set-state-in-use-effect + // oxlint-disable-next-line eslint-react/set-state-in-effect setCurrentConversationInputs(currentConversationLatestInputs || {}) }, [currentConversationItem, currentConversationLatestInputs]) const checkInputsRequired = useCallback( diff --git a/web/app/components/base/chat/embedded-chatbot/inputs-form/__tests__/content.spec.tsx b/web/app/components/base/chat/embedded-chatbot/inputs-form/__tests__/content.spec.tsx index b0f6c587923..561903f20f2 100644 --- a/web/app/components/base/chat/embedded-chatbot/inputs-form/__tests__/content.spec.tsx +++ b/web/app/components/base/chat/embedded-chatbot/inputs-form/__tests__/content.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { fireEvent, render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { InputVarType } from '@/app/components/workflow/types' diff --git a/web/app/components/base/chat/embedded-chatbot/inputs-form/__tests__/index.spec.tsx b/web/app/components/base/chat/embedded-chatbot/inputs-form/__tests__/index.spec.tsx index dcc2a8a38a6..7584970cc41 100644 --- a/web/app/components/base/chat/embedded-chatbot/inputs-form/__tests__/index.spec.tsx +++ b/web/app/components/base/chat/embedded-chatbot/inputs-form/__tests__/index.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { AppSourceType } from '@/service/share' diff --git a/web/app/components/base/date-and-time-picker/date-picker/index.tsx b/web/app/components/base/date-and-time-picker/date-picker/index.tsx index 3633cf3ba83..77603748ffe 100644 --- a/web/app/components/base/date-and-time-picker/date-picker/index.tsx +++ b/web/app/components/base/date-and-time-picker/date-picker/index.tsx @@ -62,18 +62,18 @@ const DatePicker = ({ clearMonthMapCache() if (normalizedValue) { const newValue = getDateWithTimezone({ date: normalizedValue, timezone }) - // eslint-disable-next-line react/set-state-in-effect -- timezone changes intentionally resync the displayed calendar state. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- timezone changes intentionally resync the displayed calendar state. setCurrentDate(newValue) - // eslint-disable-next-line react/set-state-in-effect -- timezone changes intentionally resync the selected value. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- timezone changes intentionally resync the selected value. setSelectedDate(newValue) onChange(newValue) } else { - // eslint-disable-next-line react/set-state-in-effect -- timezone changes intentionally resync the displayed calendar state. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- timezone changes intentionally resync the displayed calendar state. setCurrentDate((prev) => getDateWithTimezone({ date: prev, timezone })) - // eslint-disable-next-line react/set-state-in-effect -- timezone changes intentionally resync the selected value. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- timezone changes intentionally resync the selected value. setSelectedDate((prev) => (prev ? getDateWithTimezone({ date: prev, timezone }) : undefined)) } - // eslint-disable-next-line react/exhaustive-deps -- this effect intentionally runs only when timezone changes. + // oxlint-disable-next-line react/exhaustive-deps -- this effect intentionally runs only when timezone changes. }, [timezone]) const handleOpenChange = useCallback( diff --git a/web/app/components/base/date-and-time-picker/time-picker/index.tsx b/web/app/components/base/date-and-time-picker/time-picker/index.tsx index a07d16e6363..6f4b3529077 100644 --- a/web/app/components/base/date-and-time-picker/time-picker/index.tsx +++ b/web/app/components/base/date-and-time-picker/time-picker/index.tsx @@ -69,14 +69,14 @@ const TimePicker = ({ const dayjsValue = toDayjs(value, { timezone }) if (!dayjsValue) return - // eslint-disable-next-line react/set-state-in-effect -- value/timezone changes intentionally resync the internal selected time. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- value/timezone changes intentionally resync the internal selected time. setSelectedTime(dayjsValue) if (timezoneChanged && !valueChanged) onChange(dayjsValue) return } - // eslint-disable-next-line react/set-state-in-effect -- value/timezone changes intentionally resync the internal selected time. + // oxlint-disable-next-line eslint-react/set-state-in-effect -- value/timezone changes intentionally resync the internal selected time. setSelectedTime((prev) => { if (!isDayjsObject(prev)) return undefined return timezone ? getDateWithTimezone({ date: prev, timezone }) : prev diff --git a/web/app/components/base/features/new-feature-panel/annotation-reply/__tests__/config-param-modal.spec.tsx b/web/app/components/base/features/new-feature-panel/annotation-reply/__tests__/config-param-modal.spec.tsx index c162d5ef571..4e36c406efe 100644 --- a/web/app/components/base/features/new-feature-panel/annotation-reply/__tests__/config-param-modal.spec.tsx +++ b/web/app/components/base/features/new-feature-panel/annotation-reply/__tests__/config-param-modal.spec.tsx @@ -53,7 +53,6 @@ vi.mock('@/config', () => ({ vi.mock('../score-slider', () => ({ default: ({ value, onChange }: { value: number; onChange: (value: number) => void }) => ( { - // eslint-disable-next-line react/set-state-in-effect + // oxlint-disable-next-line eslint-react/set-state-in-effect setTempValue(data.opening_statement || '') }, [data.opening_statement]) const [tempSuggestedQuestions, setTempSuggestedQuestions] = useState( diff --git a/web/app/components/base/markdown/error-boundary.tsx b/web/app/components/base/markdown/error-boundary.tsx index 6da0d4ef7c2..8113622044a 100644 --- a/web/app/components/base/markdown/error-boundary.tsx +++ b/web/app/components/base/markdown/error-boundary.tsx @@ -23,7 +23,7 @@ export default class ErrorBoundary extends Component { } override render() { - // eslint-disable-next-line ts/ban-ts-comment + // oxlint-disable-next-line typescript/ban-ts-comment // @ts-expect-error if (this.state.hasError) { return ( @@ -35,7 +35,7 @@ export default class ErrorBoundary extends Component { ) } - // eslint-disable-next-line ts/ban-ts-comment + // oxlint-disable-next-line typescript/ban-ts-comment // @ts-expect-error return this.props.children } diff --git a/web/app/components/base/message-log-modal/__tests__/index.spec.tsx b/web/app/components/base/message-log-modal/__tests__/index.spec.tsx index bb77c394281..15a4b7b8c88 100644 --- a/web/app/components/base/message-log-modal/__tests__/index.spec.tsx +++ b/web/app/components/base/message-log-modal/__tests__/index.spec.tsx @@ -46,7 +46,7 @@ describe('MessageLogModal', () => { beforeEach(() => { vi.clearAllMocks() clickAwayHandler = null - // eslint-disable-next-line ts/no-explicit-any + // oxlint-disable-next-line typescript/no-explicit-any vi.mocked(useStore).mockImplementation((selector: any) => selector({ appDetail: { id: 'app-1' }, diff --git a/web/app/components/base/permission-selector/index.tsx b/web/app/components/base/permission-selector/index.tsx index 38e8161d226..39c75099a2f 100644 --- a/web/app/components/base/permission-selector/index.tsx +++ b/web/app/components/base/permission-selector/index.tsx @@ -8,7 +8,7 @@ import { useAtomValue } from 'jotai' import * as React from 'react' import { useCallback, useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' -// eslint-disable-next-line no-restricted-imports -- This legacy selector still relies on showLeftIcon/showClearIcon props from the old input. +// oxlint-disable-next-line no-restricted-imports -- This legacy selector still relies on showLeftIcon/showClearIcon props from the old input. import Input from '@/app/components/base/input' import { userProfileAtom } from '@/context/account-state' import { PermissionLevel } from '@/models/permission' diff --git a/web/app/components/base/prompt-editor/plugins/shortcuts-popup-plugin/index.tsx b/web/app/components/base/prompt-editor/plugins/shortcuts-popup-plugin/index.tsx index 5b7e01fa0cd..b5b72c39063 100644 --- a/web/app/components/base/prompt-editor/plugins/shortcuts-popup-plugin/index.tsx +++ b/web/app/components/base/prompt-editor/plugins/shortcuts-popup-plugin/index.tsx @@ -359,8 +359,8 @@ export default function ShortcutsPopupPlugin({ zIndex: 50, overflow: 'visible', visibility: 'visible', - ['--shortcut-popup-max-width' as string]: `${Math.min(POPUP_MAX_WIDTH, fixedPlacementState.availableWidth)}px`, - ['--shortcut-popup-max-height' as string]: `${fixedPlacementState.availableHeight}px`, + '--shortcut-popup-max-width': `${Math.min(POPUP_MAX_WIDTH, fixedPlacementState.availableWidth)}px`, + '--shortcut-popup-max-height': `${fixedPlacementState.availableHeight}px`, } as CSSProperties) : {} diff --git a/web/app/components/base/search-input/index.tsx b/web/app/components/base/search-input/index.tsx index 8dc8091d786..fe531a8eb16 100644 --- a/web/app/components/base/search-input/index.tsx +++ b/web/app/components/base/search-input/index.tsx @@ -82,7 +82,7 @@ export function SearchInput({ onValueChange(e.currentTarget.value) }} autoComplete="off" - // eslint-disable-next-line jsx-a11y/no-autofocus + // oxlint-disable-next-line jsx-a11y/no-autofocus autoFocus={autoFocus} enterKeyHint="search" /> diff --git a/web/app/components/base/zendesk/utils.ts b/web/app/components/base/zendesk/utils.ts index 25138dbe5d6..2f82468f227 100644 --- a/web/app/components/base/zendesk/utils.ts +++ b/web/app/components/base/zendesk/utils.ts @@ -6,7 +6,7 @@ type ConversationField = { } declare global { - // eslint-disable-next-line ts/consistent-type-definitions + // oxlint-disable-next-line typescript/consistent-type-definitions interface Window { zE?: ( command: string, diff --git a/web/app/components/datasets/create/step-two/__tests__/index.spec.tsx b/web/app/components/datasets/create/step-two/__tests__/index.spec.tsx index 5299589fe56..c1875bf31c1 100644 --- a/web/app/components/datasets/create/step-two/__tests__/index.spec.tsx +++ b/web/app/components/datasets/create/step-two/__tests__/index.spec.tsx @@ -204,7 +204,7 @@ vi.mock('@/config', async () => { // Mock PreviewDocumentPicker to allow testing handlePickerChange vi.mock('@/app/components/datasets/common/document-picker/preview-document-picker', () => ({ - /* eslint-disable ts/no-explicit-any */ + /* oxlint-disable typescript/no-explicit-any */ default: ({ onChange, value, @@ -223,7 +223,7 @@ vi.mock('@/app/components/datasets/common/document-picker/preview-document-picke ))} ), - /* eslint-enable ts/no-explicit-any */ + /* oxlint-enable typescript/no-explicit-any */ })) vi.mock('@/app/components/datasets/settings/utils', () => ({ @@ -2521,14 +2521,14 @@ describe('StepTwo Component', () => { }) it('should show general option for empty dataset (no doc_form)', () => { - // eslint-disable-next-line ts/no-explicit-any + // oxlint-disable-next-line typescript/no-explicit-any mockCurrentDataset = { ...mockDataset, doc_form: undefined as any } render() expect(screen.getByText(/stepTwo\.segmentation/i))!.toBeInTheDocument() }) it('should show both options in empty dataset upload', () => { - // eslint-disable-next-line ts/no-explicit-any + // oxlint-disable-next-line typescript/no-explicit-any mockCurrentDataset = { ...mockDataset, doc_form: undefined as any } render() // isUploadInEmptyDataset=true shows both options diff --git a/web/app/components/datasets/create/step-two/index.tsx b/web/app/components/datasets/create/step-two/index.tsx index fc9f36d1052..ecbb8b0096f 100644 --- a/web/app/components/datasets/create/step-two/index.tsx +++ b/web/app/components/datasets/create/step-two/index.tsx @@ -31,7 +31,7 @@ import { useSegmentationState, } from './hooks' -// eslint-disable-next-line no-barrel-files/no-barrel-files +// oxlint-disable-next-line no-barrel-files/no-barrel-files export { IndexingType } const StepTwo: FC = ({ @@ -251,7 +251,7 @@ const StepTwo: FC = ({ segmentation.applyConfigFromRules(rules, isHierarchical) segmentation.setSegmentationType(documentDetail.dataset_process_rule.mode) } - // eslint-disable-next-line react/exhaustive-deps + // oxlint-disable-next-line react/exhaustive-deps }, []) // Show options conditions diff --git a/web/app/components/datasets/documents/create-from-pipeline/__tests__/index.spec.tsx b/web/app/components/datasets/documents/create-from-pipeline/__tests__/index.spec.tsx index 30d87799d7b..fda5babb5ad 100644 --- a/web/app/components/datasets/documents/create-from-pipeline/__tests__/index.spec.tsx +++ b/web/app/components/datasets/documents/create-from-pipeline/__tests__/index.spec.tsx @@ -204,7 +204,7 @@ vi.mock('@/app/components/datasets/create/step-one/upgrade-card', () => ({ })) // Mock zustand store -// eslint-disable-next-line ts/no-explicit-any +// oxlint-disable-next-line typescript/no-explicit-any type MockDataSourceStore = any const mockStoreState = { diff --git a/web/app/components/develop/md.tsx b/web/app/components/develop/md.tsx index 58358f884f9..4e3b3693ff7 100644 --- a/web/app/components/develop/md.tsx +++ b/web/app/components/develop/md.tsx @@ -85,10 +85,7 @@ export function Col({ children, sticky = false }: IColProps) { export function Properties({ children }: IChildrenProps) { return (
-
    +
      {children}
diff --git a/web/app/components/explore/banner/banner-item.tsx b/web/app/components/explore/banner/banner-item.tsx index 7b36568083f..5a38e9b3198 100644 --- a/web/app/components/explore/banner/banner-item.tsx +++ b/web/app/components/explore/banner/banner-item.tsx @@ -1,4 +1,4 @@ -/* eslint-disable react/set-state-in-effect */ +/* oxlint-disable eslint-react/set-state-in-effect */ import type { Banner } from '@/models/app' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' diff --git a/web/app/components/explore/banner/indicator-button.tsx b/web/app/components/explore/banner/indicator-button.tsx index f16a3eee5e5..2f734058a6e 100644 --- a/web/app/components/explore/banner/indicator-button.tsx +++ b/web/app/components/explore/banner/indicator-button.tsx @@ -1,4 +1,4 @@ -/* eslint-disable react-hooks-extra/no-direct-set-state-in-use-effect */ +/* oxlint-disable eslint-react/set-state-in-effect */ import type { FC } from 'react' import { cn } from '@langgenius/dify-ui/cn' import { useCallback, useEffect, useRef, useState } from 'react' diff --git a/web/app/components/explore/try-app/app/text-generation.tsx b/web/app/components/explore/try-app/app/text-generation.tsx index 6adba1045a5..7a9eed7f0f5 100644 --- a/web/app/components/explore/try-app/app/text-generation.tsx +++ b/web/app/components/explore/try-app/app/text-generation.tsx @@ -111,7 +111,7 @@ const TextGeneration: FC = ({ appId, className, isWorkflow, appData }) => // legacy of image upload compatible image_file_size_limit: appParams?.system_parameters.image_file_size_limit, fileUploadConfig: appParams?.system_parameters, - // eslint-disable-next-line ts/no-explicit-any + // oxlint-disable-next-line typescript/no-explicit-any } as any) const prompt_variables = userInputsFormToPromptVariables(user_input_form) setPromptConfig({ diff --git a/web/app/components/explore/try-app/preview/basic-app-preview.tsx b/web/app/components/explore/try-app/preview/basic-app-preview.tsx index 395be784b72..01bdd2d6390 100644 --- a/web/app/components/explore/try-app/preview/basic-app-preview.tsx +++ b/web/app/components/explore/try-app/preview/basic-app-preview.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ 'use client' import type { FC } from 'react' import type { Features as FeaturesData, FileUpload } from '@/app/components/base/features/types' diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/__tests__/use-credential-panel-state.spec.ts b/web/app/components/header/account-setting/model-provider-page/provider-added-card/__tests__/use-credential-panel-state.spec.ts index 47e54dc0a8d..95866013ba0 100644 --- a/web/app/components/header/account-setting/model-provider-page/provider-added-card/__tests__/use-credential-panel-state.spec.ts +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/__tests__/use-credential-panel-state.spec.ts @@ -27,7 +27,7 @@ vi.mock('@/config', async (importOriginal) => { }) const renderPanelHook = (provider: ModelProvider | undefined) => { - // eslint-disable-next-line react/use-state -- This is a domain hook, not React's useState. + // oxlint-disable-next-line eslint-react/use-state -- This is a domain hook, not React's useState. return renderHookWithSystemFeatures(() => useCredentialPanelState(provider), { trialModels: mockTrialModels, }) diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/credential-panel.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/credential-panel.tsx index cd4186417f5..e2d59b468a8 100644 --- a/web/app/components/header/account-setting/model-provider-page/provider-added-card/credential-panel.tsx +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/credential-panel.tsx @@ -74,7 +74,7 @@ const CredentialPanelContent = ({ } const CredentialPanel = ({ provider }: CredentialPanelProps) => { - // eslint-disable-next-line react/use-state -- This is a domain hook, not React's useState. + // oxlint-disable-next-line eslint-react/use-state -- This is a domain hook, not React's useState. const credentialPanelInfo = useCredentialPanelState(provider) const { isChangingPriority, handleChangePriority } = useChangeProviderPriority(provider) diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/credits-exhausted-alert.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/credits-exhausted-alert.tsx index 2d686cfb769..55f8aff87e5 100644 --- a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/credits-exhausted-alert.tsx +++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-auth-dropdown/credits-exhausted-alert.tsx @@ -65,7 +65,7 @@ export default function CreditsExhaustedAlert({ {t(($) => $['modelProvider.card.usageLabel'], { ns: 'common' })}
- {/* eslint-disable-next-line hyoban/prefer-tailwind-icons -- This generated icon class is not available to Tailwind. */} + {/* oxlint-disable-next-line hyoban/prefer-tailwind-icons -- This generated icon class is not available to Tailwind. */} {formatNumber(usedCredits)}/{formatNumber(totalCredits)} diff --git a/web/app/components/main-nav/components/web-apps-section.tsx b/web/app/components/main-nav/components/web-apps-section.tsx index 0170048f605..d443f6ff800 100644 --- a/web/app/components/main-nav/components/web-apps-section.tsx +++ b/web/app/components/main-nav/components/web-apps-section.tsx @@ -226,7 +226,7 @@ const WebAppsSectionContent = () => { value={searchText} onValueChange={setSearchText} placeholder={t(($) => $['mainNav.webApps.searchPlaceholder'], { ns: 'common' })} - // eslint-disable-next-line jsx-a11y/no-autofocus -- The field is mounted after an explicit search action. + // oxlint-disable-next-line jsx-a11y/no-autofocus -- The field is mounted after an explicit search action. autoFocus />
diff --git a/web/app/components/plugins/card/index.tsx b/web/app/components/plugins/card/index.tsx index 829366d8965..e8354d4055f 100644 --- a/web/app/components/plugins/card/index.tsx +++ b/web/app/components/plugins/card/index.tsx @@ -77,7 +77,7 @@ const Card = ({ const cornerMarkText = categoriesMap[type === 'bundle' ? type : category]?.label ?? '' const wrapClassName = cn( - // eslint-disable-next-line tailwindcss/no-unknown-classes -- Used by page feedback tooling to identify plugin cards. + // oxlint-disable-next-line tailwindcss/no-unknown-classes -- Used by page feedback tooling to identify plugin cards. 'hover-bg-components-panel-on-panel-item-bg relative overflow-hidden rounded-xl border-[0.5px] border-components-panel-border bg-components-panel-on-panel-item-bg shadow-xs', isMarketplaceVariant && 'h-[148px] transition-all group-hover:bg-components-panel-on-panel-item-bg-hover group-hover:shadow-md', diff --git a/web/app/components/plugins/install-plugin/install-bundle/steps/hooks/use-install-multi-state.ts b/web/app/components/plugins/install-plugin/install-bundle/steps/hooks/use-install-multi-state.ts index 3b50ea0d55f..44b9d595083 100644 --- a/web/app/components/plugins/install-plugin/install-bundle/steps/hooks/use-install-multi-state.ts +++ b/web/app/components/plugins/install-plugin/install-bundle/steps/hooks/use-install-multi-state.ts @@ -211,7 +211,7 @@ export function useInstallMultiState({ // Notify parent when all plugin data and install info is ready useEffect(() => { if (isLoadedAllData && installedInfo) onLoadedAllPlugin(installedInfo!) - // eslint-disable-next-line react-hooks/exhaustive-deps + // oxlint-disable-next-line react/exhaustive-deps }, [isLoadedAllData, installedInfo]) // Callback: handle GitHub plugin fetch success diff --git a/web/app/components/plugins/marketplace/list/carousel.tsx b/web/app/components/plugins/marketplace/list/carousel.tsx index 96038a4a363..ef90d9dcea5 100644 --- a/web/app/components/plugins/marketplace/list/carousel.tsx +++ b/web/app/components/plugins/marketplace/list/carousel.tsx @@ -1,6 +1,6 @@ 'use client' -/* eslint-disable react/set-state-in-effect */ +/* oxlint-disable eslint-react/set-state-in-effect */ import { cn } from '@langgenius/dify-ui/cn' import Autoplay from 'embla-carousel-autoplay' import useEmblaCarousel from 'embla-carousel-react' diff --git a/web/app/components/plugins/plugin-detail-panel/detail-header/hooks/use-plugin-operations.ts b/web/app/components/plugins/plugin-detail-panel/detail-header/hooks/use-plugin-operations.ts index f7eec6a2a8e..e6315975fde 100644 --- a/web/app/components/plugins/plugin-detail-panel/detail-header/hooks/use-plugin-operations.ts +++ b/web/app/components/plugins/plugin-detail-panel/detail-header/hooks/use-plugin-operations.ts @@ -106,8 +106,6 @@ export const usePluginOperations = ({ meta, author, name, - fetchReleases, - checkForUpdates, setShowUpdatePluginModal, detail, handlePluginUpdated, diff --git a/web/app/components/plugins/plugin-page/plugin-tasks/components/plugin-item.tsx b/web/app/components/plugins/plugin-page/plugin-tasks/components/plugin-item.tsx index a10b5768fc5..d303977a70f 100644 --- a/web/app/components/plugins/plugin-page/plugin-tasks/components/plugin-item.tsx +++ b/web/app/components/plugins/plugin-page/plugin-tasks/components/plugin-item.tsx @@ -34,7 +34,7 @@ const PluginItem: FC = ({ {hasPluginIcon ? ( ) : ( - // eslint-disable-next-line hyoban/prefer-tailwind-icons -- Reuse the same MagicBox component as the marketplace install button. + // oxlint-disable-next-line hyoban/prefer-tailwind-icons -- Reuse the same MagicBox component as the marketplace install button. )}
{statusIcon}
diff --git a/web/app/components/plugins/reference-setting-modal/__tests__/label.spec.tsx b/web/app/components/plugins/reference-setting-modal/__tests__/label.spec.tsx index 86fcf15a902..7fcb9987c50 100644 --- a/web/app/components/plugins/reference-setting-modal/__tests__/label.spec.tsx +++ b/web/app/components/plugins/reference-setting-modal/__tests__/label.spec.tsx @@ -78,7 +78,7 @@ describe('Label', () => { describe('Component Memoization', () => { it('should be memoized with React.memo', () => { expect(Label).toBeDefined() - // eslint-disable-next-line ts/no-explicit-any + // oxlint-disable-next-line typescript/no-explicit-any expect((Label as any).$$typeof?.toString()).toContain('Symbol') }) }) diff --git a/web/app/components/share/text-generation/run-once/index.tsx b/web/app/components/share/text-generation/run-once/index.tsx index 5cb402f5c28..1166f34d8b6 100644 --- a/web/app/components/share/text-generation/run-once/index.tsx +++ b/web/app/components/share/text-generation/run-once/index.tsx @@ -242,7 +242,7 @@ const RunOnce: FC = ({ }} fileConfig={{ ...item.config, - // eslint-disable-next-line ts/no-explicit-any + // oxlint-disable-next-line typescript/no-explicit-any fileUploadConfig: (visionConfig as any).fileUploadConfig, }} /> diff --git a/web/app/components/snippet-list/hooks/__tests__/use-snippets-query-state.spec.tsx b/web/app/components/snippet-list/hooks/__tests__/use-snippets-query-state.spec.tsx index 289c917a84e..eae85a0d1d6 100644 --- a/web/app/components/snippet-list/hooks/__tests__/use-snippets-query-state.spec.tsx +++ b/web/app/components/snippet-list/hooks/__tests__/use-snippets-query-state.spec.tsx @@ -4,7 +4,7 @@ import { SNIPPET_LIST_SEARCH_DEBOUNCE_MS } from '../../constants' import { useSnippetsQueryState } from '../use-snippets-query-state' const renderWithAdapter = (searchParams = '') => { - // eslint-disable-next-line react/use-state -- renderHook executes a custom hook, not React.useState + // oxlint-disable-next-line eslint-react/use-state -- renderHook executes a custom hook, not React.useState return renderHookWithNuqs(() => useSnippetsQueryState(), { searchParams }) } diff --git a/web/app/components/snippet-list/index.tsx b/web/app/components/snippet-list/index.tsx index 4d4675907a7..ebd6cff431a 100644 --- a/web/app/components/snippet-list/index.tsx +++ b/web/app/components/snippet-list/index.tsx @@ -64,7 +64,7 @@ const SnippetList = () => { const { t } = useTranslation() const isLoadingCurrentWorkspace = useAtomValue(currentWorkspaceLoadingAtom) const workspacePermissionKeys = useAtomValue(workspacePermissionKeysAtom) - // eslint-disable-next-line react/use-state -- custom URL query hook, not React.useState + // oxlint-disable-next-line eslint-react/use-state -- custom URL query hook, not React.useState const { query: { tagIDs, keywords, creatorIDs }, setKeywords, diff --git a/web/app/components/snippets/hooks/use-nodes-sync-draft.ts b/web/app/components/snippets/hooks/use-nodes-sync-draft.ts index b2757967f29..80c7767392f 100644 --- a/web/app/components/snippets/hooks/use-nodes-sync-draft.ts +++ b/web/app/components/snippets/hooks/use-nodes-sync-draft.ts @@ -12,7 +12,7 @@ import { useNodesReadOnlyByCanEdit } from '@/app/components/workflow/hooks/use-w import { useWorkflowStore } from '@/app/components/workflow/store' import { API_PREFIX } from '@/config' import { consoleClient } from '@/service/client' -// eslint-disable-next-line no-restricted-imports +// oxlint-disable-next-line no-restricted-imports import { postWithKeepalive } from '@/service/fetch' import { useSnippetDraftStore } from '../draft-store' import { useSnippetRefreshDraft } from './use-snippet-refresh-draft' diff --git a/web/app/components/workflow/block-selector/tabs.tsx b/web/app/components/workflow/block-selector/tabs.tsx index 5e290580745..28af9064063 100644 --- a/web/app/components/workflow/block-selector/tabs.tsx +++ b/web/app/components/workflow/block-selector/tabs.tsx @@ -123,7 +123,7 @@ const TabHeaderItem = ({ tab.disabled ? 'cursor-not-allowed text-text-disabled opacity-60' : activeTab === tab.key - ? // eslint-disable-next-line tailwindcss/no-unknown-classes + ? // oxlint-disable-next-line tailwindcss/no-unknown-classes 'sm-no-bottom cursor-default bg-components-panel-bg text-text-accent' : 'cursor-pointer text-text-tertiary', ) diff --git a/web/app/components/workflow/block-selector/tool-picker.tsx b/web/app/components/workflow/block-selector/tool-picker.tsx index 0f320a0ee64..e3ea348f6fd 100644 --- a/web/app/components/workflow/block-selector/tool-picker.tsx +++ b/web/app/components/workflow/block-selector/tool-picker.tsx @@ -165,7 +165,7 @@ export function ToolPickerContent({ onShowAddCustomCollectionModal={showEditCustomCollectionModal} // The picker replaces the focused menu item inside an already-open popover. // Focusing search keeps keyboard users in the same add-tool workflow. - /* eslint-disable-next-line jsx-a11y/no-autofocus */ + /* oxlint-disable-next-line jsx-a11y/no-autofocus */ autoFocus={focusSearchOnMount} inputClassName="grow" /> diff --git a/web/app/components/workflow/header/test-run-menu-helpers.tsx b/web/app/components/workflow/header/test-run-menu-helpers.tsx index 672fc660b70..66444a62323 100644 --- a/web/app/components/workflow/header/test-run-menu-helpers.tsx +++ b/web/app/components/workflow/header/test-run-menu-helpers.tsx @@ -1,4 +1,4 @@ -/* eslint-disable react-refresh/only-export-components */ +/* oxlint-disable react/only-export-components */ import type { MouseEvent, MouseEventHandler, ReactElement } from 'react' import type { TriggerOption } from './test-run-menu' import { DropdownMenuItem } from '@langgenius/dify-ui/dropdown-menu' @@ -86,7 +86,7 @@ export const SingleOptionTrigger = ({ const childElement = children as ReactElement<{ onClick?: MouseEventHandler }> const originalOnClick = childElement.props?.onClick - // eslint-disable-next-line react/no-clone-element + // oxlint-disable-next-line react/no-clone-element return cloneElement(childElement, { onClick: (event: MouseEvent) => { if (typeof originalOnClick === 'function') originalOnClick(event) diff --git a/web/app/components/workflow/header/test-run-menu.tsx b/web/app/components/workflow/header/test-run-menu.tsx index 9ba837d9752..00facda0c5e 100644 --- a/web/app/components/workflow/header/test-run-menu.tsx +++ b/web/app/components/workflow/header/test-run-menu.tsx @@ -89,7 +89,7 @@ const buildShortcutMappings = (options: TestRunOptions): ShortcutMapping[] => { return mappings } -// eslint-disable-next-line react/no-forward-ref +// oxlint-disable-next-line eslint-react/no-forward-ref const TestRunMenu = forwardRef( ({ options, onSelect, children }, ref) => { const { t } = useTranslation() diff --git a/web/app/components/workflow/hooks/use-workflow-interactions.ts b/web/app/components/workflow/hooks/use-workflow-interactions.ts index e806a293a4e..b75771c836a 100644 --- a/web/app/components/workflow/hooks/use-workflow-interactions.ts +++ b/web/app/components/workflow/hooks/use-workflow-interactions.ts @@ -1,4 +1,4 @@ -/* eslint-disable no-barrel-files/no-barrel-files */ +/* oxlint-disable no-barrel-files/no-barrel-files */ export { useWorkflowOrganize } from './use-workflow-organize' export { useWorkflowInteractions, useWorkflowMoveMode } from './use-workflow-panel-interactions' export { useWorkflowUpdate } from './use-workflow-update' diff --git a/web/app/components/workflow/node-actions-menu/__tests__/details.spec.tsx b/web/app/components/workflow/node-actions-menu/__tests__/details.spec.tsx index df8165d3fc2..ee1ca6b3859 100644 --- a/web/app/components/workflow/node-actions-menu/__tests__/details.spec.tsx +++ b/web/app/components/workflow/node-actions-menu/__tests__/details.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { DropdownMenu, DropdownMenuContent, diff --git a/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts b/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts index f1524dbb5fb..a1172a9181e 100644 --- a/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts +++ b/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts @@ -83,7 +83,7 @@ const { checkValid: checkDocumentExtractorValid } = DocumentExtractorDefault const { checkValid: checkLoopValid } = LoopDefault const { checkValid: checkHumanInputValid } = HumanInputDefault -// eslint-disable-next-line ts/no-unsafe-function-type +// oxlint-disable-next-line typescript/no-unsafe-function-type const checkValidFns: Partial> = { [BlockEnum.LLM]: checkLLMValid, [BlockEnum.KnowledgeRetrieval]: checkKnowledgeRetrievalValid, diff --git a/web/app/components/workflow/nodes/agent-v2/components/agent-output-variables/edit-card.tsx b/web/app/components/workflow/nodes/agent-v2/components/agent-output-variables/edit-card.tsx index dc577d84964..3412cf9e9c2 100644 --- a/web/app/components/workflow/nodes/agent-v2/components/agent-output-variables/edit-card.tsx +++ b/web/app/components/workflow/nodes/agent-v2/components/agent-output-variables/edit-card.tsx @@ -90,7 +90,7 @@ export function OutputEditCard({ = ({ hotkey: ['mod', '/'], displayMode: 'workflow-panel-adjacent-center' as const, // Keep this component type stable while the popup is open; it reads fresh props from a ref. - // eslint-disable-next-line react/no-nested-component-definitions + // oxlint-disable-next-line eslint-react/no-nested-component-definitions Popup: ({ onClose, onInsert, diff --git a/web/app/components/workflow/nodes/human-input/components/variable-in-markdown.tsx b/web/app/components/workflow/nodes/human-input/components/variable-in-markdown.tsx index c078aa3a6f0..ec529a11f42 100644 --- a/web/app/components/workflow/nodes/human-input/components/variable-in-markdown.tsx +++ b/web/app/components/workflow/nodes/human-input/components/variable-in-markdown.tsx @@ -1,4 +1,4 @@ -/* eslint-disable react-refresh/only-export-components */ +/* oxlint-disable react/only-export-components */ import type { TFunction } from 'i18next' import type { FormInputItem } from '../types' import { cn } from '@langgenius/dify-ui/cn' diff --git a/web/app/components/workflow/nodes/if-else/use-single-run-form-params.ts b/web/app/components/workflow/nodes/if-else/use-single-run-form-params.ts index f1821468c01..83a7b008680 100644 --- a/web/app/components/workflow/nodes/if-else/use-single-run-form-params.ts +++ b/web/app/components/workflow/nodes/if-else/use-single-run-form-params.ts @@ -38,7 +38,7 @@ const useSingleRunFormParams = ({ const vars: ValueSelector[] = [] if (caseItem.conditions && caseItem.conditions.length) { caseItem.conditions.forEach((condition) => { - // eslint-disable-next-line ts/no-use-before-define + // oxlint-disable-next-line typescript/no-use-before-define const conditionVars = getVarSelectorsFromCondition(condition) vars.push(...conditionVars) }) @@ -59,7 +59,7 @@ const useSingleRunFormParams = ({ const vars: InputVar[] = [] if (caseItem.conditions && caseItem.conditions.length) { caseItem.conditions.forEach((condition) => { - // eslint-disable-next-line ts/no-use-before-define + // oxlint-disable-next-line typescript/no-use-before-define const conditionVars = getInputVarsFromConditionValue(condition) vars.push(...conditionVars) }) @@ -114,7 +114,7 @@ const useSingleRunFormParams = ({ const vars: ValueSelector[] = [] if (caseItem.conditions && caseItem.conditions.length) { caseItem.conditions.forEach((condition) => { - // eslint-disable-next-line ts/no-use-before-define + // oxlint-disable-next-line typescript/no-use-before-define const conditionVars = getVarFromCondition(condition) vars.push(...conditionVars) }) diff --git a/web/app/components/workflow/nodes/list-operator/__tests__/integration.spec.tsx b/web/app/components/workflow/nodes/list-operator/__tests__/integration.spec.tsx index f9c3ac0bf6c..d901d7561c6 100644 --- a/web/app/components/workflow/nodes/list-operator/__tests__/integration.spec.tsx +++ b/web/app/components/workflow/nodes/list-operator/__tests__/integration.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ListFilterNodeType } from '../types' import type { PanelProps } from '@/types/workflow' import { fireEvent, render, screen, waitFor } from '@testing-library/react' diff --git a/web/app/components/workflow/nodes/question-classifier/__tests__/integration.spec.tsx b/web/app/components/workflow/nodes/question-classifier/__tests__/integration.spec.tsx index c61673353bd..7301a0a72b8 100644 --- a/web/app/components/workflow/nodes/question-classifier/__tests__/integration.spec.tsx +++ b/web/app/components/workflow/nodes/question-classifier/__tests__/integration.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { QuestionClassifierNodeType, Topic } from '../types' import type { PanelProps } from '@/types/workflow' import { fireEvent, render, screen } from '@testing-library/react' diff --git a/web/app/components/workflow/nodes/trigger-schedule/__tests__/panel.spec.tsx b/web/app/components/workflow/nodes/trigger-schedule/__tests__/panel.spec.tsx index 2a876382cac..edf8dbe62e5 100644 --- a/web/app/components/workflow/nodes/trigger-schedule/__tests__/panel.spec.tsx +++ b/web/app/components/workflow/nodes/trigger-schedule/__tests__/panel.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ScheduleTriggerNodeType } from '../types' import type { PanelProps } from '@/types/workflow' import { fireEvent, render, screen } from '@testing-library/react' diff --git a/web/app/components/workflow/nodes/trigger-schedule/components/__tests__/integration.spec.tsx b/web/app/components/workflow/nodes/trigger-schedule/components/__tests__/integration.spec.tsx index 7956ef0f767..224d36ae4ff 100644 --- a/web/app/components/workflow/nodes/trigger-schedule/components/__tests__/integration.spec.tsx +++ b/web/app/components/workflow/nodes/trigger-schedule/components/__tests__/integration.spec.tsx @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ScheduleTriggerNodeType } from '../../types' import { render, screen, waitFor } from '@testing-library/react' import userEvent from '@testing-library/user-event' diff --git a/web/app/components/workflow/nodes/trigger-schedule/default.ts b/web/app/components/workflow/nodes/trigger-schedule/default.ts index 847d8afec19..57c9e69734b 100644 --- a/web/app/components/workflow/nodes/trigger-schedule/default.ts +++ b/web/app/components/workflow/nodes/trigger-schedule/default.ts @@ -149,7 +149,7 @@ const nodeDefault: NodeDefault = { // Validate timezone format if provided (timezone will be auto-filled by use-config.ts if undefined) if (!errorMessages && payload.timezone) { try { - // eslint-disable-next-line no-new + // oxlint-disable-next-line no-new new Intl.DateTimeFormat(undefined, { timeZone: payload.timezone }) } catch { errorMessages = t(($) => $['nodes.triggerSchedule.invalidTimezone'], { ns: 'workflow' }) diff --git a/web/app/components/workflow/nodes/trigger-webhook/components/generic-table.tsx b/web/app/components/workflow/nodes/trigger-webhook/components/generic-table.tsx index 644beab54c8..e9a428f5220 100644 --- a/web/app/components/workflow/nodes/trigger-webhook/components/generic-table.tsx +++ b/web/app/components/workflow/nodes/trigger-webhook/components/generic-table.tsx @@ -325,7 +325,7 @@ const GenericTable: FC = ({ className="p-1" aria-label="Delete row" > - {/* eslint-disable-next-line hyoban/prefer-tailwind-icons */} + {/* oxlint-disable-next-line hyoban/prefer-tailwind-icons */} diff --git a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-resume.spec.ts b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-resume.spec.ts index 1e82dc275e4..f680189e937 100644 --- a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-resume.spec.ts +++ b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-resume.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ChatItemInTree } from '@/app/components/base/chat/types' import { act, renderHook } from '@testing-library/react' import { useChat } from '../../hooks' diff --git a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-send.spec.ts b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-send.spec.ts index f815463a3c9..c594a0a511b 100644 --- a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-send.spec.ts +++ b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-send.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { act, renderHook } from '@testing-library/react' import { useChat } from '../../hooks' diff --git a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-stop-restart.spec.ts b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-stop-restart.spec.ts index 7beaee43e4e..8a44eb4936f 100644 --- a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-stop-restart.spec.ts +++ b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/handle-stop-restart.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { act, renderHook } from '@testing-library/react' import { useChat } from '../../hooks' diff --git a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/misc.spec.ts b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/misc.spec.ts index aa730402c6c..567f3d1c3b5 100644 --- a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/misc.spec.ts +++ b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/misc.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ChatItemInTree } from '@/app/components/base/chat/types' import { act, renderHook } from '@testing-library/react' import { useChat } from '../../hooks' diff --git a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/opening-statement.spec.ts b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/opening-statement.spec.ts index 1e562b29923..294ad2e572d 100644 --- a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/opening-statement.spec.ts +++ b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/opening-statement.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import type { ChatItemInTree } from '@/app/components/base/chat/types' import { renderHook } from '@testing-library/react' import { useChat } from '../../hooks' diff --git a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/sse-callbacks.spec.ts b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/sse-callbacks.spec.ts index d90d0381faf..f7ac54f4fbb 100644 --- a/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/sse-callbacks.spec.ts +++ b/web/app/components/workflow/panel/debug-and-preview/__tests__/hooks/sse-callbacks.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable ts/no-explicit-any */ +/* oxlint-disable typescript/no-explicit-any */ import { act, renderHook } from '@testing-library/react' import { useChat } from '../../hooks' diff --git a/web/app/components/workflow/panel/env-panel/index.tsx b/web/app/components/workflow/panel/env-panel/index.tsx index 237d4f584d6..9a3ebef2e22 100644 --- a/web/app/components/workflow/panel/env-panel/index.tsx +++ b/web/app/components/workflow/panel/env-panel/index.tsx @@ -275,7 +275,7 @@ const EnvPanel = () => { className="flex size-6 cursor-pointer items-center justify-center" onClick={() => setShowEnvPanel(false)} > - {/* eslint-disable-next-line hyoban/prefer-tailwind-icons */} + {/* oxlint-disable-next-line hyoban/prefer-tailwind-icons */} diff --git a/web/app/components/workflow/run/iteration-log/iteration-log-trigger.tsx b/web/app/components/workflow/run/iteration-log/iteration-log-trigger.tsx index e254f8f64c3..5daec7636c5 100644 --- a/web/app/components/workflow/run/iteration-log/iteration-log-trigger.tsx +++ b/web/app/components/workflow/run/iteration-log/iteration-log-trigger.tsx @@ -135,7 +135,7 @@ const IterationLogTrigger = ({ className="flex w-full cursor-pointer items-center gap-2 self-stretch rounded-lg border-none bg-components-button-tertiary-bg-hover px-3 py-2 hover:bg-components-button-tertiary-bg-hover" onClick={handleOnShowIterationDetail} > - {/* eslint-disable-next-line hyoban/prefer-tailwind-icons */} + {/* oxlint-disable-next-line hyoban/prefer-tailwind-icons */}
{t(($) => $['nodes.iteration.iteration'], { ns: 'workflow', count: displayIterationCount })} @@ -146,7 +146,7 @@ const IterationLogTrigger = ({ )}
- {/* eslint-disable-next-line hyoban/prefer-tailwind-icons */} + {/* oxlint-disable-next-line hyoban/prefer-tailwind-icons */} ) diff --git a/web/app/components/workflow/workflow-generator/__tests__/example-prompts.spec.tsx b/web/app/components/workflow/workflow-generator/__tests__/example-prompts.spec.tsx index f54f3e95410..0619c3ebb47 100644 --- a/web/app/components/workflow/workflow-generator/__tests__/example-prompts.spec.tsx +++ b/web/app/components/workflow/workflow-generator/__tests__/example-prompts.spec.tsx @@ -137,7 +137,7 @@ describe('ExamplePrompts', () => { it('should gracefully handle empty response structure', async () => { // Simulate an empty response with no suggestions array - // eslint-disable-next-line ts/no-explicit-any + // oxlint-disable-next-line typescript/no-explicit-any mockFetch.mockResolvedValue({} as any) render() diff --git a/web/app/components/workflow/workflow-generator/example-prompts.tsx b/web/app/components/workflow/workflow-generator/example-prompts.tsx index 0d94c139162..735ae1dbf3c 100644 --- a/web/app/components/workflow/workflow-generator/example-prompts.tsx +++ b/web/app/components/workflow/workflow-generator/example-prompts.tsx @@ -97,7 +97,7 @@ const ExamplePrompts = ({ mode, onSelect }: Props) => { abortRef.current?.abort() abortRef.current = null } - // eslint-disable-next-line react/exhaustive-deps + // oxlint-disable-next-line react/exhaustive-deps }, [mode]) const aiPrompts = cached ?? [] diff --git a/web/app/components/workflow/workflow-generator/index.tsx b/web/app/components/workflow/workflow-generator/index.tsx index 8af216cc770..7bcb4b6a56b 100644 --- a/web/app/components/workflow/workflow-generator/index.tsx +++ b/web/app/components/workflow/workflow-generator/index.tsx @@ -306,7 +306,7 @@ const WorkflowGeneratorModal: React.FC = () => { // The cleanup function reads refs only, so it's stable; we intentionally // exclude ``abortInFlight`` from deps to avoid re-running this effect on // every render. - // eslint-disable-next-line react/exhaustive-deps + // oxlint-disable-next-line react/exhaustive-deps }, []) // Note: the modal is mounted lazily by ``mount.tsx`` which unmounts it when @@ -619,7 +619,7 @@ const WorkflowGeneratorModal: React.FC = () => {