From 97e1810a86e43566d0055ac4a2d58d4f60af3bdf Mon Sep 17 00:00:00 2001 From: Jean du Plessis Date: Wed, 25 Mar 2026 18:10:23 +0200 Subject: [PATCH 1/6] refactor: remove ESLint and port all lint rules to oxlint ESLint was causing slowdowns in the pre-push hook for some team members. This replaces it entirely with oxlint, which runs 50-100x faster. - Delete 25 eslint config files, packages/eslint-config, eslint.fallback.config.mjs - Port drizzle enforce-delete/update-with-where rules to a custom oxlint JS plugin - Port type-aware TS rules (no-unsafe-*, await-thenable, etc.) to workspace overrides - Create kilo-app/.oxlintrc.json with react-native jsPlugin, import, promise, unicorn - Simplify pre-push hook from 4 parallel jobs to 3 (lint is now fast enough) - Remove 13 ESLint npm packages, add oxlint-plugin-react-native - Fix pre-existing unused imports in cloudflare-gastown exposed by migration - Update AGENTS.md files and knip.json to reflect new tooling --- .gitignore | 3 - .husky/pre-push | 14 +- .oxlintrc.json | 56 +- cloud-agent-next/AGENTS.md | 3 +- cloud-agent-next/eslint.config.mjs | 17 - cloud-agent-next/package.json | 6 +- cloud-agent/eslint.config.mjs | 17 - cloud-agent/package.json | 6 +- cloudflare-ai-attribution/eslint.config.mjs | 8 - cloudflare-ai-attribution/package.json | 5 +- cloudflare-app-builder/eslint.config.mjs | 8 - cloudflare-app-builder/package.json | 5 +- cloudflare-auto-fix-infra/eslint.config.mjs | 8 - cloudflare-auto-fix-infra/package.json | 7 +- .../eslint.config.mjs | 8 - cloudflare-auto-triage-infra/package.json | 7 +- .../eslint.config.mjs | 8 - cloudflare-code-review-infra/package.json | 7 +- cloudflare-db-proxy/eslint.config.mjs | 8 - cloudflare-db-proxy/package.json | 5 +- .../builder/eslint.config.mjs | 8 - cloudflare-deploy-infra/builder/package.json | 5 +- .../dispatcher/eslint.config.mjs | 8 - .../dispatcher/package.json | 5 +- .../container/eslint.config.mjs | 8 - cloudflare-gastown/container/package.json | 4 +- .../container/src/process-manager.ts | 2 +- cloudflare-gastown/eslint.config.mjs | 16 - cloudflare-gastown/package.json | 4 +- cloudflare-gastown/src/dos/Town.do.ts | 5 +- cloudflare-gastown/src/dos/town/patrol.ts | 7 +- cloudflare-gastown/src/dos/town/reconciler.ts | 1 - .../src/dos/town/review-queue.ts | 6 - cloudflare-gastown/src/dos/town/scheduling.ts | 3 +- .../eslint.config.mjs | 8 - cloudflare-git-token-service/package.json | 5 +- cloudflare-gmail-push/eslint.config.mjs | 8 - cloudflare-gmail-push/package.json | 4 +- cloudflare-images-mcp/eslint.config.mjs | 8 - cloudflare-images-mcp/package.json | 5 +- cloudflare-o11y/.gitignore | 4 - cloudflare-o11y/eslint.config.mjs | 8 - cloudflare-o11y/package.json | 7 +- .../eslint.config.mjs | 8 - .../package.json | 4 +- cloudflare-security-sync/eslint.config.mjs | 8 - cloudflare-security-sync/package.json | 4 +- cloudflare-session-ingest/eslint.config.mjs | 8 - cloudflare-session-ingest/package.json | 7 +- cloudflare-webhook-agent-ingest/.gitignore | 4 - .../eslint.config.mjs | 16 - cloudflare-webhook-agent-ingest/package.json | 6 +- eslint.fallback.config.mjs | 47 - kilo-app/.oxlintrc.json | 113 + kilo-app/AGENTS.md | 8 +- kilo-app/eslint.config.js | 160 -- kilo-app/knip.json | 3 - kilo-app/package.json | 12 +- kiloclaw/.gitignore | 4 - kiloclaw/AGENTS.md | 2 +- kiloclaw/eslint.config.mjs | 16 - kiloclaw/package.json | 6 +- oxlint-plugin-drizzle.js | 150 ++ package.json | 16 +- packages/db/eslint.config.mjs | 8 - packages/db/package.json | 7 +- packages/encryption/eslint.config.mjs | 8 - packages/encryption/package.json | 7 +- packages/eslint-config/eslint.config.base.mjs | 68 - packages/eslint-config/package.json | 15 - packages/worker-utils/eslint.config.mjs | 8 - packages/worker-utils/package.json | 7 +- pnpm-lock.yaml | 2188 +---------------- pnpm-workspace.yaml | 5 - 74 files changed, 413 insertions(+), 2855 deletions(-) delete mode 100644 cloud-agent-next/eslint.config.mjs delete mode 100644 cloud-agent/eslint.config.mjs delete mode 100644 cloudflare-ai-attribution/eslint.config.mjs delete mode 100644 cloudflare-app-builder/eslint.config.mjs delete mode 100644 cloudflare-auto-fix-infra/eslint.config.mjs delete mode 100644 cloudflare-auto-triage-infra/eslint.config.mjs delete mode 100644 cloudflare-code-review-infra/eslint.config.mjs delete mode 100644 cloudflare-db-proxy/eslint.config.mjs delete mode 100644 cloudflare-deploy-infra/builder/eslint.config.mjs delete mode 100644 cloudflare-deploy-infra/dispatcher/eslint.config.mjs delete mode 100644 cloudflare-gastown/container/eslint.config.mjs delete mode 100644 cloudflare-gastown/eslint.config.mjs delete mode 100644 cloudflare-git-token-service/eslint.config.mjs delete mode 100644 cloudflare-gmail-push/eslint.config.mjs delete mode 100644 cloudflare-images-mcp/eslint.config.mjs delete mode 100644 cloudflare-o11y/eslint.config.mjs delete mode 100644 cloudflare-security-auto-analysis/eslint.config.mjs delete mode 100644 cloudflare-security-sync/eslint.config.mjs delete mode 100644 cloudflare-session-ingest/eslint.config.mjs delete mode 100644 cloudflare-webhook-agent-ingest/eslint.config.mjs delete mode 100644 eslint.fallback.config.mjs create mode 100644 kilo-app/.oxlintrc.json delete mode 100644 kilo-app/eslint.config.js delete mode 100644 kiloclaw/eslint.config.mjs create mode 100644 oxlint-plugin-drizzle.js delete mode 100644 packages/db/eslint.config.mjs delete mode 100644 packages/encryption/eslint.config.mjs delete mode 100644 packages/eslint-config/eslint.config.base.mjs delete mode 100644 packages/eslint-config/package.json delete mode 100644 packages/worker-utils/eslint.config.mjs diff --git a/.gitignore b/.gitignore index b10883eab64..ba5bebd3b64 100644 --- a/.gitignore +++ b/.gitignore @@ -54,9 +54,6 @@ yarn-error.log* *.tsbuildinfo next-env.d.ts -# eslint cache -.eslintcache - # kdiff3 *.orig dev-debug-request-logs/* diff --git a/.husky/pre-push b/.husky/pre-push index 36698157541..daac5c5ad74 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,23 +1,15 @@ pnpm format:check & pid_format=$! -pnpm lint:oxlint & -pid_oxlint=$! - -pnpm lint:eslint:fallback & -pid_eslint=$! - -pnpm -r --filter '!kilocode-backend' --filter '!storybook' run lint & -pid_workspace_lint=$! +pnpm lint & +pid_lint=$! pnpm typecheck & pid_typecheck=$! failed="" wait $pid_format || failed="$failed format:check" -wait $pid_oxlint || failed="$failed lint:oxlint" -wait $pid_eslint || failed="$failed lint:eslint:fallback" -wait $pid_workspace_lint || failed="$failed workspace-lint" +wait $pid_lint || failed="$failed lint" wait $pid_typecheck || failed="$failed typecheck" if [ -n "$failed" ]; then diff --git a/.oxlintrc.json b/.oxlintrc.json index cceb1ba63e7..f558a7a7572 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,6 +1,9 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["oxc", "typescript", "unicorn", "nextjs"], + "plugins": ["oxc", "typescript", "unicorn", "nextjs", "import"], + "jsPlugins": [ + { "name": "drizzle", "specifier": "./oxlint-plugin-drizzle.js" } + ], "options": { "typeAware": true }, @@ -116,7 +119,15 @@ "@next/next/no-document-import-in-page": "error", "@next/next/no-duplicate-head": "error", "@next/next/no-head-import-in-document": "error", - "@next/next/no-script-component-in-head": "error" + "@next/next/no-script-component-in-head": "error", + "drizzle/enforce-delete-with-where": [ + "error", + { "drizzleObjectName": ["db", "ctx.db"] } + ], + "drizzle/enforce-update-with-where": [ + "error", + { "drizzleObjectName": ["db", "ctx.db"] } + ] }, "overrides": [ { @@ -156,6 +167,47 @@ "rules": { "@typescript-eslint/no-non-null-assertion": "off" } + }, + { + "files": [ + "cloud-agent/**/*.ts", + "cloud-agent-next/**/*.ts", + "cloudflare-*/**/*.ts", + "kiloclaw/**/*.ts", + "packages/**/*.ts" + ], + "rules": { + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-base-to-string": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unsafe-argument": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", + "@typescript-eslint/no-unsafe-enum-comparison": "error", + "@typescript-eslint/no-unsafe-member-access": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-unsafe-unary-minus": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "@typescript-eslint/restrict-template-expressions": "error", + "@typescript-eslint/unbound-method": "error" + } + }, + { + "files": [ + "cloud-agent/src/session/queries/*.ts", + "cloud-agent-next/src/session/queries/*.ts", + "cloudflare-gastown/**/*.ts", + "cloudflare-webhook-agent-ingest/**/*.ts", + "kiloclaw/**/*.ts" + ], + "rules": { + "@typescript-eslint/restrict-template-expressions": "off" + } } ] } diff --git a/cloud-agent-next/AGENTS.md b/cloud-agent-next/AGENTS.md index 1a7bbcdf6e6..6a10afff680 100644 --- a/cloud-agent-next/AGENTS.md +++ b/cloud-agent-next/AGENTS.md @@ -25,8 +25,7 @@ Cloudflare Worker that powers Kilocode Cloud Agents. It exposes a tRPC API for s ### Code Quality -- `pnpm run lint` - ESLint -- `pnpm run lint:fix` - ESLint with auto-fix +- `pnpm run lint` - oxlint - `pnpm run format` - oxfmt write (src only) - `pnpm run format:check` - oxfmt check (src only) - `pnpm run typecheck` - TypeScript (tsgo) + wrapper typecheck diff --git a/cloud-agent-next/eslint.config.mjs b/cloud-agent-next/eslint.config.mjs deleted file mode 100644 index 2d16fb69448..00000000000 --- a/cloud-agent-next/eslint.config.mjs +++ /dev/null @@ -1,17 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([ - ...baseConfig(__dirname), - // Allow table interpolators (objects with toString()) in template literals for SQL query files - { - files: ['src/session/queries/*.ts'], - rules: { - '@typescript-eslint/restrict-template-expressions': 'off', - }, - }, -]); diff --git a/cloud-agent-next/package.json b/cloud-agent-next/package.json index c123d1b6190..b1a291f66f7 100644 --- a/cloud-agent-next/package.json +++ b/cloud-agent-next/package.json @@ -14,10 +14,8 @@ "prestart": "pnpm run build:wrapper", "start": "wrangler dev", "types": "wrangler types", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloud-agent-next/src cloud-agent-next/wrapper/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts' 'wrapper/src/**/*.ts'", - "lint:fix": "eslint --config eslint.config.mjs --cache --fix 'src/**/*.ts' 'wrapper/src/**/*.ts'", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "build:wrapper": "bun run --cwd wrapper build", @@ -46,13 +44,11 @@ "devDependencies": { "@cloudflare/containers": "0.1.1", "@cloudflare/vitest-pool-workers": "^0.12.21", - "@kilocode/eslint-config": "workspace:*", "@types/jsonwebtoken": "catalog:", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", "@vitest/ui": "^3.2.4", "drizzle-kit": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "^3.2.4", "wrangler": "catalog:" diff --git a/cloud-agent/eslint.config.mjs b/cloud-agent/eslint.config.mjs deleted file mode 100644 index 2d16fb69448..00000000000 --- a/cloud-agent/eslint.config.mjs +++ /dev/null @@ -1,17 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([ - ...baseConfig(__dirname), - // Allow table interpolators (objects with toString()) in template literals for SQL query files - { - files: ['src/session/queries/*.ts'], - rules: { - '@typescript-eslint/restrict-template-expressions': 'off', - }, - }, -]); diff --git a/cloud-agent/package.json b/cloud-agent/package.json index 5c9e2777d01..689400c0139 100644 --- a/cloud-agent/package.json +++ b/cloud-agent/package.json @@ -14,10 +14,8 @@ "prestart": "pnpm run build:wrapper", "start": "wrangler dev", "types": "wrangler types", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloud-agent/src cloud-agent/wrapper/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts' 'wrapper/src/**/*.ts'", - "lint:fix": "eslint --config eslint.config.mjs --cache --fix 'src/**/*.ts' 'wrapper/src/**/*.ts'", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "build:wrapper": "bun run --cwd wrapper build", @@ -43,13 +41,11 @@ "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.12.21", "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@types/jsonwebtoken": "catalog:", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", "@vitest/ui": "^3.2.4", "drizzle-kit": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "^3.2.4", "wrangler": "catalog:" diff --git a/cloudflare-ai-attribution/eslint.config.mjs b/cloudflare-ai-attribution/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-ai-attribution/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-ai-attribution/package.json b/cloudflare-ai-attribution/package.json index 714369e6b27..fb4c8df57bb 100644 --- a/cloudflare-ai-attribution/package.json +++ b/cloudflare-ai-attribution/package.json @@ -7,9 +7,8 @@ "dev": "wrangler dev --env dev", "deploy": "wrangler deploy", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-ai-attribution/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "test": "jest" }, "keywords": [ @@ -21,11 +20,9 @@ "author": "Kilo Code", "license": "UNLICENSED", "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@types/jest": "^29.5.14", "@typescript/native-preview": "catalog:", "drizzle-kit": "catalog:", - "eslint": "catalog:", "jest": "^29.7.0", "typescript": "catalog:", "wrangler": "catalog:" diff --git a/cloudflare-app-builder/eslint.config.mjs b/cloudflare-app-builder/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-app-builder/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-app-builder/package.json b/cloudflare-app-builder/package.json index 405677bb1ce..a1a4e666521 100644 --- a/cloudflare-app-builder/package.json +++ b/cloudflare-app-builder/package.json @@ -8,9 +8,8 @@ "deploy": "wrangler deploy", "cf-typegen": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-app-builder/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "test": "vitest run", "test:git": "tsx src/_integration_tests/test-git-integration.ts", "test:git-head": "tsx src/_integration_tests/test-git-head-and-history.ts", @@ -29,12 +28,10 @@ "@cloudflare/containers": "0.1.1", "@cloudflare/sandbox": "0.7.13", "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@types/jsonwebtoken": "catalog:", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", "drizzle-kit": "catalog:", - "eslint": "catalog:", "tsx": "^4.21.0", "typescript": "catalog:", "vitest": "^4.1.0", diff --git a/cloudflare-auto-fix-infra/eslint.config.mjs b/cloudflare-auto-fix-infra/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-auto-fix-infra/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-auto-fix-infra/package.json b/cloudflare-auto-fix-infra/package.json index a1888287b2f..6c76074a0fa 100644 --- a/cloudflare-auto-fix-infra/package.json +++ b/cloudflare-auto-fix-infra/package.json @@ -8,15 +8,12 @@ "dev": "wrangler dev", "tail": "wrangler tail", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-auto-fix-infra/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm run lint:oxlint", + "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-auto-fix-infra/src" }, "devDependencies": { "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "wrangler": "catalog:" }, diff --git a/cloudflare-auto-triage-infra/eslint.config.mjs b/cloudflare-auto-triage-infra/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-auto-triage-infra/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-auto-triage-infra/package.json b/cloudflare-auto-triage-infra/package.json index f5dd5b4c2b9..d0fa77bd23e 100644 --- a/cloudflare-auto-triage-infra/package.json +++ b/cloudflare-auto-triage-infra/package.json @@ -8,15 +8,12 @@ "dev": "wrangler dev", "tail": "wrangler tail", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-auto-triage-infra/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm run lint:oxlint", + "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-auto-triage-infra/src" }, "devDependencies": { "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "wrangler": "catalog:" }, diff --git a/cloudflare-code-review-infra/eslint.config.mjs b/cloudflare-code-review-infra/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-code-review-infra/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-code-review-infra/package.json b/cloudflare-code-review-infra/package.json index 3cc6060d352..b30cd558c60 100644 --- a/cloudflare-code-review-infra/package.json +++ b/cloudflare-code-review-infra/package.json @@ -8,15 +8,12 @@ "dev": "wrangler dev", "tail": "wrangler tail", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-code-review-infra/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm run lint:oxlint", + "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-code-review-infra/src" }, "devDependencies": { "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "wrangler": "catalog:" }, diff --git a/cloudflare-db-proxy/eslint.config.mjs b/cloudflare-db-proxy/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-db-proxy/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-db-proxy/package.json b/cloudflare-db-proxy/package.json index 16ebb267308..bfdf8c6c1fb 100644 --- a/cloudflare-db-proxy/package.json +++ b/cloudflare-db-proxy/package.json @@ -7,9 +7,8 @@ "deploy": "wrangler deploy", "cf-typegen": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-db-proxy/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "test": "jest" }, "dependencies": { @@ -21,11 +20,9 @@ }, "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.12.21", - "@kilocode/eslint-config": "workspace:*", "@types/jest": "^30.0.0", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "jest": "^30.3.0", "ts-jest": "^29.4.6", "typescript": "catalog:", diff --git a/cloudflare-deploy-infra/builder/eslint.config.mjs b/cloudflare-deploy-infra/builder/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-deploy-infra/builder/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-deploy-infra/builder/package.json b/cloudflare-deploy-infra/builder/package.json index b768820372c..1c21de9f751 100644 --- a/cloudflare-deploy-infra/builder/package.json +++ b/cloudflare-deploy-infra/builder/package.json @@ -12,9 +12,8 @@ "deploy:local": "tsx scripts/deploy-local.ts", "types": "wrangler types", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-deploy-infra/builder/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "sentry:sourcemaps": "_SENTRY_RELEASE=$(sentry-cli releases propose-version) && sentry-cli releases new $_SENTRY_RELEASE --org=kilo-code --project=kilocode-cloudflare-deploy && sentry-cli sourcemaps upload --org=kilo-code --project=kilocode-cloudflare-deploy --release=$_SENTRY_RELEASE --strip-prefix 'dist/..' dist", "postdeploy": "pnpm sentry:sourcemaps" }, @@ -28,13 +27,11 @@ "devDependencies": { "@cloudflare/sandbox": "0.6.9", "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@sentry/cli": "^2.58.5", "@types/jest": "^29.5.14", "@types/node": "^22.19.15", "@types/tar-stream": "^3.1.4", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "jest": "^29.7.0", "ts-jest": "^29.4.6", "tsx": "^4.21.0", diff --git a/cloudflare-deploy-infra/dispatcher/eslint.config.mjs b/cloudflare-deploy-infra/dispatcher/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-deploy-infra/dispatcher/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-deploy-infra/dispatcher/package.json b/cloudflare-deploy-infra/dispatcher/package.json index 06257a7ab2b..a952101e88a 100644 --- a/cloudflare-deploy-infra/dispatcher/package.json +++ b/cloudflare-deploy-infra/dispatcher/package.json @@ -7,18 +7,15 @@ "deploy": "wrangler deploy", "cf-typegen": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-deploy-infra/dispatcher/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "test": "jest" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@swc/jest": "^0.2.39", "@types/jest": "^30.0.0", "@types/jsonwebtoken": "catalog:", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "jest": "^30.3.0", "typescript": "catalog:", "wrangler": "catalog:" diff --git a/cloudflare-gastown/container/eslint.config.mjs b/cloudflare-gastown/container/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-gastown/container/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-gastown/container/package.json b/cloudflare-gastown/container/package.json index 74bc8dbeaf3..685386aef16 100644 --- a/cloudflare-gastown/container/package.json +++ b/cloudflare-gastown/container/package.json @@ -9,7 +9,7 @@ "test": "vitest run", "test:watch": "vitest", "typecheck": "tsc --noEmit", - "lint": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-gastown/container/src" }, "dependencies": { "@kilocode/plugin": "7.0.37", @@ -18,9 +18,7 @@ "zod": "catalog:" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@types/bun": "^1.2.17", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "^3.2.4" } diff --git a/cloudflare-gastown/container/src/process-manager.ts b/cloudflare-gastown/container/src/process-manager.ts index 10dcf978873..f0008e320fb 100644 --- a/cloudflare-gastown/container/src/process-manager.ts +++ b/cloudflare-gastown/container/src/process-manager.ts @@ -10,7 +10,7 @@ import { createKilo, type KiloClient } from '@kilocode/sdk'; import { z } from 'zod'; import type { ManagedAgent, StartAgentRequest } from './types'; import { reportAgentCompleted } from './completion-reporter'; -import { buildKiloConfigContent, kiloModel } from './agent-runner'; +import { buildKiloConfigContent } from './agent-runner'; import { log } from './logger'; const MANAGER_LOG = '[process-manager]'; diff --git a/cloudflare-gastown/eslint.config.mjs b/cloudflare-gastown/eslint.config.mjs deleted file mode 100644 index 4792c67f5c0..00000000000 --- a/cloudflare-gastown/eslint.config.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([ - ...baseConfig(__dirname), - { - files: ['**/*.ts'], - rules: { - '@typescript-eslint/restrict-template-expressions': 'off', - }, - }, -]); diff --git a/cloudflare-gastown/package.json b/cloudflare-gastown/package.json index 1086947086e..0fd9edcd971 100644 --- a/cloudflare-gastown/package.json +++ b/cloudflare-gastown/package.json @@ -20,7 +20,7 @@ "test:integration:watch": "vitest --config vitest.workers.config.ts", "typecheck": "tsgo --noEmit --incremental false", "build:types": "tsgo -p tsconfig.types.json || true", - "lint": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-gastown/src" }, "dependencies": { "@cloudflare/containers": "^0.1.0", @@ -41,12 +41,10 @@ "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.12.8", "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@sentry/cli": "^2.58.2", "@types/jsonwebtoken": "catalog:", "@types/node": "^22", "@typescript/native-preview": "7.0.0-dev.20251019.1", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "^3.2.4", "wrangler": "catalog:" diff --git a/cloudflare-gastown/src/dos/Town.do.ts b/cloudflare-gastown/src/dos/Town.do.ts index 427c5aed266..b3eeaa158c8 100644 --- a/cloudflare-gastown/src/dos/Town.do.ts +++ b/cloudflare-gastown/src/dos/Town.do.ts @@ -41,8 +41,7 @@ import { EscalationBeadRecord, ConvoyBeadRecord, } from '../db/tables/beads.table'; -import { agent_metadata, AgentMetadataRecord } from '../db/tables/agent-metadata.table'; -import { review_metadata } from '../db/tables/review-metadata.table'; +import { agent_metadata } from '../db/tables/agent-metadata.table'; import { escalation_metadata } from '../db/tables/escalation-metadata.table'; import { convoy_metadata } from '../db/tables/convoy-metadata.table'; import { bead_dependencies } from '../db/tables/bead-dependencies.table'; @@ -278,8 +277,6 @@ export class TownDO extends DurableObject { let systemPromptOverride: string | undefined; if (agent.role === 'refinery' && bead.type === 'merge_request') { const reviewMeta = reviewQueue.getReviewMetadata(this.sql, beadId); - const sourceBeadId = - typeof bead.metadata?.source_bead_id === 'string' ? bead.metadata.source_bead_id : null; const townConfig = await this.getTownConfig(); systemPromptOverride = buildRefinerySystemPrompt({ identity: agent.identity, diff --git a/cloudflare-gastown/src/dos/town/patrol.ts b/cloudflare-gastown/src/dos/town/patrol.ts index b0e540ea53f..b1617599a1c 100644 --- a/cloudflare-gastown/src/dos/town/patrol.ts +++ b/cloudflare-gastown/src/dos/town/patrol.ts @@ -10,13 +10,8 @@ import { z } from 'zod'; import { beads, BeadRecord as BeadRecordSchema } from '../../db/tables/beads.table'; -import { agent_metadata, AgentMetadataRecord } from '../../db/tables/agent-metadata.table'; -import { agent_nudges } from '../../db/tables/agent-nudges.table'; -import { bead_dependencies } from '../../db/tables/bead-dependencies.table'; -import { convoy_metadata } from '../../db/tables/convoy-metadata.table'; import { query } from '../../util/query.util'; -import { deleteAgent, getOrCreateAgent, hookBead, unhookBead } from './agents'; -import { createBead, updateBeadStatus } from './beads'; +import { createBead } from './beads'; const LOG = '[patrol]'; diff --git a/cloudflare-gastown/src/dos/town/reconciler.ts b/cloudflare-gastown/src/dos/town/reconciler.ts index 116f8f0b40c..e9fef8d2131 100644 --- a/cloudflare-gastown/src/dos/town/reconciler.ts +++ b/cloudflare-gastown/src/dos/town/reconciler.ts @@ -20,7 +20,6 @@ import { bead_dependencies } from '../../db/tables/bead-dependencies.table'; import { agent_nudges } from '../../db/tables/agent-nudges.table'; import { query } from '../../util/query.util'; import { - GUPP_WARN_MS, GUPP_ESCALATE_MS, GUPP_FORCE_STOP_MS, AGENT_GC_RETENTION_MS, diff --git a/cloudflare-gastown/src/dos/town/review-queue.ts b/cloudflare-gastown/src/dos/town/review-queue.ts index 886d7b88211..e1a1e19d67c 100644 --- a/cloudflare-gastown/src/dos/town/review-queue.ts +++ b/cloudflare-gastown/src/dos/town/review-queue.ts @@ -29,12 +29,6 @@ import { getAgent, unhookBead, updateAgentStatus } from './agents'; import { getRig } from './rigs'; import type { ReviewQueueInput, ReviewQueueEntry, AgentDoneInput, Molecule } from '../../types'; -// Review entries stuck in 'running' past this timeout are reset to 'pending'. -// Only applies when no agent (working or idle) is hooked to the MR bead. -// Set to 30 min — reviews can legitimately take 10-15 min for clone + build -// + test + merge, and the refinery hook guard is the primary protection. -const REVIEW_RUNNING_TIMEOUT_MS = 30 * 60 * 1000; - function generateId(): string { return crypto.randomUUID(); } diff --git a/cloudflare-gastown/src/dos/town/scheduling.ts b/cloudflare-gastown/src/dos/town/scheduling.ts index e18d14eff71..2c48347b57d 100644 --- a/cloudflare-gastown/src/dos/town/scheduling.ts +++ b/cloudflare-gastown/src/dos/town/scheduling.ts @@ -7,8 +7,7 @@ */ import * as Sentry from '@sentry/cloudflare'; -import { z } from 'zod'; -import { beads, AgentBeadRecord } from '../../db/tables/beads.table'; +import { beads } from '../../db/tables/beads.table'; import { agent_metadata } from '../../db/tables/agent-metadata.table'; import { query } from '../../util/query.util'; import * as beadOps from './beads'; diff --git a/cloudflare-git-token-service/eslint.config.mjs b/cloudflare-git-token-service/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-git-token-service/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-git-token-service/package.json b/cloudflare-git-token-service/package.json index e4a5fdc1e80..87bfe1d1531 100644 --- a/cloudflare-git-token-service/package.json +++ b/cloudflare-git-token-service/package.json @@ -7,9 +7,8 @@ "dev:test": "wrangler dev --config wrangler.test.jsonc", "deploy": "wrangler deploy", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-git-token-service/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "types": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts" }, "dependencies": { @@ -19,9 +18,7 @@ "zod": "catalog:" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "wrangler": "catalog:" } diff --git a/cloudflare-gmail-push/eslint.config.mjs b/cloudflare-gmail-push/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-gmail-push/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-gmail-push/package.json b/cloudflare-gmail-push/package.json index 6cdab35e6aa..79796f95eac 100644 --- a/cloudflare-gmail-push/package.json +++ b/cloudflare-gmail-push/package.json @@ -6,9 +6,8 @@ "deploy": "wrangler deploy", "test": "vitest run", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-gmail-push/src", - "lint:eslint:fallback": "eslint src/", "cf-typegen": "wrangler types --env-file /dev/null" }, "dependencies": { @@ -18,7 +17,6 @@ }, "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.8.71", - "@kilocode/eslint-config": "workspace:*", "@typescript/native-preview": "catalog:", "typescript": "catalog:", "vitest": "~3.2.4", diff --git a/cloudflare-images-mcp/eslint.config.mjs b/cloudflare-images-mcp/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-images-mcp/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-images-mcp/package.json b/cloudflare-images-mcp/package.json index 7cf65b3a731..424eb496635 100644 --- a/cloudflare-images-mcp/package.json +++ b/cloudflare-images-mcp/package.json @@ -7,9 +7,8 @@ "deploy": "wrangler deploy", "cf-typegen": "wrangler types", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-images-mcp/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "test": "vitest run" }, "dependencies": { @@ -22,11 +21,9 @@ }, "devDependencies": { "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@types/jsonwebtoken": "catalog:", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "^3.2.4", "wrangler": "catalog:" diff --git a/cloudflare-o11y/.gitignore b/cloudflare-o11y/.gitignore index 4138168d756..4c0c476e171 100644 --- a/cloudflare-o11y/.gitignore +++ b/cloudflare-o11y/.gitignore @@ -65,10 +65,6 @@ web_modules/ .npm -# Optional eslint cache - -.eslintcache - # Optional stylelint cache .stylelintcache diff --git a/cloudflare-o11y/eslint.config.mjs b/cloudflare-o11y/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-o11y/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-o11y/package.json b/cloudflare-o11y/package.json index ac830c0e56b..1060806f7dd 100644 --- a/cloudflare-o11y/package.json +++ b/cloudflare-o11y/package.json @@ -9,17 +9,14 @@ "test": "vitest", "cf-typegen": "wrangler types", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-o11y/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm run lint:oxlint", + "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-o11y/src" }, "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.12.21", - "@kilocode/eslint-config": "workspace:*", "@types/node": "^25.5.0", "@typescript/native-preview": "catalog:", "drizzle-kit": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "~3.2.4", "wrangler": "catalog:" diff --git a/cloudflare-security-auto-analysis/eslint.config.mjs b/cloudflare-security-auto-analysis/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-security-auto-analysis/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-security-auto-analysis/package.json b/cloudflare-security-auto-analysis/package.json index 4733761fe36..c86e482fe04 100644 --- a/cloudflare-security-auto-analysis/package.json +++ b/cloudflare-security-auto-analysis/package.json @@ -6,9 +6,8 @@ "deploy:prod": "wrangler deploy", "deploy:dev": "wrangler deploy --env dev", "dev": "wrangler dev --env dev", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-security-auto-analysis/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "typecheck": "tsgo --noEmit --incremental false", "types": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts", "test": "vitest run" @@ -20,7 +19,6 @@ "zod": "catalog:" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", "typescript": "catalog:", diff --git a/cloudflare-security-sync/eslint.config.mjs b/cloudflare-security-sync/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-security-sync/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-security-sync/package.json b/cloudflare-security-sync/package.json index afaf1d63483..1da4d986d3f 100644 --- a/cloudflare-security-sync/package.json +++ b/cloudflare-security-sync/package.json @@ -6,9 +6,8 @@ "dev": "wrangler dev --env dev", "deploy:prod": "wrangler deploy", "deploy:dev": "wrangler deploy --env dev", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-security-sync/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", "typecheck": "tsgo --noEmit --incremental false", "types": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts" }, @@ -18,7 +17,6 @@ "zod": "catalog:" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", "typescript": "catalog:", diff --git a/cloudflare-session-ingest/eslint.config.mjs b/cloudflare-session-ingest/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/cloudflare-session-ingest/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/cloudflare-session-ingest/package.json b/cloudflare-session-ingest/package.json index 4acd61c6627..eacb0e9ddae 100644 --- a/cloudflare-session-ingest/package.json +++ b/cloudflare-session-ingest/package.json @@ -10,9 +10,8 @@ "test:integration": "vitest run --config vitest.workers.config.ts", "test:integration:watch": "vitest --config vitest.workers.config.ts", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-session-ingest/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm run lint:oxlint", + "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-session-ingest/src" }, "dependencies": { "@kilocode/db": "workspace:*", @@ -25,11 +24,9 @@ "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.12.21", "@cloudflare/workers-types": "catalog:", - "@kilocode/eslint-config": "workspace:*", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", "drizzle-kit": "catalog:", - "eslint": "catalog:", "jose": "catalog:", "typescript": "catalog:", "vitest": "^3.2.4", diff --git a/cloudflare-webhook-agent-ingest/.gitignore b/cloudflare-webhook-agent-ingest/.gitignore index 4138168d756..4c0c476e171 100644 --- a/cloudflare-webhook-agent-ingest/.gitignore +++ b/cloudflare-webhook-agent-ingest/.gitignore @@ -65,10 +65,6 @@ web_modules/ .npm -# Optional eslint cache - -.eslintcache - # Optional stylelint cache .stylelintcache diff --git a/cloudflare-webhook-agent-ingest/eslint.config.mjs b/cloudflare-webhook-agent-ingest/eslint.config.mjs deleted file mode 100644 index 4792c67f5c0..00000000000 --- a/cloudflare-webhook-agent-ingest/eslint.config.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([ - ...baseConfig(__dirname), - { - files: ['**/*.ts'], - rules: { - '@typescript-eslint/restrict-template-expressions': 'off', - }, - }, -]); diff --git a/cloudflare-webhook-agent-ingest/package.json b/cloudflare-webhook-agent-ingest/package.json index 04e9d15b683..81e4dad1658 100644 --- a/cloudflare-webhook-agent-ingest/package.json +++ b/cloudflare-webhook-agent-ingest/package.json @@ -11,10 +11,8 @@ "dev": "wrangler dev --env dev", "start": "wrangler dev --env dev", "types": "wrangler types", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-webhook-agent-ingest/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", - "lint:fix": "eslint --config eslint.config.mjs --cache --fix 'src/**/*.ts'", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "test": "vitest run", @@ -34,12 +32,10 @@ }, "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.12.21", - "@kilocode/eslint-config": "workspace:*", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", "@vitest/ui": "^3.2.4", "drizzle-kit": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "^3.2.4", "wrangler": "catalog:" diff --git a/eslint.fallback.config.mjs b/eslint.fallback.config.mjs deleted file mode 100644 index cac84836695..00000000000 --- a/eslint.fallback.config.mjs +++ /dev/null @@ -1,47 +0,0 @@ -import drizzlePlugin from 'eslint-plugin-drizzle'; -import tseslint from 'typescript-eslint'; -import { defineConfig } from 'eslint/config'; -import tanstackQueryPlugin from '@tanstack/eslint-plugin-query'; - -export default defineConfig([ - { - linterOptions: { - reportUnusedDisableDirectives: 'off', - }, - }, - ...tanstackQueryPlugin.configs['flat/recommended'], - { - ignores: [ - '.next/**', - 'node_modules/**', - 'build/**', - 'supabase/functions/**', - 'src/types/opencode.gen.ts', - 'src/lib/gastown/types/**', - ], - }, - { - files: ['src/**/*.{ts,tsx}'], - languageOptions: { - parser: tseslint.parser, - }, - plugins: { - '@typescript-eslint': tseslint.plugin, - drizzle: drizzlePlugin, - }, - rules: { - 'drizzle/enforce-delete-with-where': [ - 'error', - { - drizzleObjectName: ['db', 'ctx.db'], - }, - ], - 'drizzle/enforce-update-with-where': [ - 'error', - { - drizzleObjectName: ['db', 'ctx.db'], - }, - ], - }, - }, -]); diff --git a/kilo-app/.oxlintrc.json b/kilo-app/.oxlintrc.json new file mode 100644 index 00000000000..50dbcaa7468 --- /dev/null +++ b/kilo-app/.oxlintrc.json @@ -0,0 +1,113 @@ +{ + "$schema": "../node_modules/oxlint/configuration_schema.json", + "plugins": ["oxc", "typescript", "unicorn", "react", "import", "promise"], + "jsPlugins": [ + { "name": "react-native", "specifier": "oxlint-plugin-react-native" } + ], + "options": { + "typeAware": true + }, + "categories": { + "correctness": "error", + "suspicious": "error" + }, + "ignorePatterns": ["dist/*", "node_modules/**"], + "rules": { + "no-restricted-imports": [ + "error", + { + "paths": [ + { + "name": "react-native", + "importNames": ["Image"], + "message": "Import Image from @/components/ui/image instead." + }, + { + "name": "expo-image", + "message": "Import Image from @/components/ui/image instead." + } + ] + } + ], + "import/no-default-export": "error", + "import/no-cycle": "error", + "import/no-self-import": "error", + "import/no-duplicates": "error", + "import/no-mutable-exports": "error", + "import/consistent-type-specifier-style": ["error", "prefer-inline"], + "promise/always-return": "error", + "promise/catch-or-return": "error", + "promise/no-nesting": "error", + "promise/no-promise-in-callback": "error", + "promise/no-callback-in-promise": "error", + "promise/prefer-await-to-then": "error", + "promise/prefer-await-to-callbacks": "error", + "promise/no-return-wrap": "error", + "react-native/no-unused-styles": "error", + "react-native/no-inline-styles": "error", + "react-native/no-raw-text": "error", + "react-native/no-single-element-style-arrays": "error", + "react-native/no-color-literals": "error", + "@typescript-eslint/consistent-type-assertions": [ + "error", + { + "assertionStyle": "as", + "objectLiteralTypeAssertions": "never" + } + ], + "@typescript-eslint/consistent-type-imports": "error", + "@typescript-eslint/no-empty-object-type": "error", + "@typescript-eslint/no-require-imports": "error", + "@typescript-eslint/no-wrapper-object-types": "error", + "@typescript-eslint/no-unsafe-type-assertion": "off", + "@typescript-eslint/no-unnecessary-condition": "error", + "@typescript-eslint/no-confusing-void-expression": "error", + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-base-to-string": "error", + "@typescript-eslint/no-duplicate-type-constituents": "error", + "@typescript-eslint/no-for-in-array": "error", + "@typescript-eslint/no-implied-eval": "error", + "@typescript-eslint/no-redundant-type-constituents": "error", + "@typescript-eslint/no-unnecessary-type-assertion": "error", + "@typescript-eslint/no-unsafe-argument": "error", + "@typescript-eslint/no-unsafe-assignment": "error", + "@typescript-eslint/no-unsafe-call": "error", + "@typescript-eslint/no-unsafe-enum-comparison": "error", + "@typescript-eslint/no-unsafe-member-access": "error", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-unsafe-unary-minus": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "@typescript-eslint/restrict-template-expressions": "error", + "@typescript-eslint/unbound-method": "error", + "no-unused-vars": [ + "error", + { + "vars": "all", + "args": "all", + "argsIgnorePattern": "^_", + "ignoreRestSiblings": true, + "caughtErrors": "all" + } + ], + "react/no-is-mounted": "off", + "react/jsx-no-useless-fragment": "off", + "react/rules-of-hooks": "error", + "react/exhaustive-deps": "error", + "react/react-in-jsx-scope": "off", + "import/no-unassigned-import": "off" + }, + "overrides": [ + { + "files": ["src/components/ui/image.tsx"], + "rules": { + "no-restricted-imports": "off" + } + }, + { + "files": ["src/app/**/_layout.tsx", "src/app/**/*.tsx"], + "rules": { + "import/no-default-export": "off" + } + } + ] +} diff --git a/kilo-app/AGENTS.md b/kilo-app/AGENTS.md index fbf5c79dc16..dc605a7041a 100644 --- a/kilo-app/AGENTS.md +++ b/kilo-app/AGENTS.md @@ -11,7 +11,7 @@ Kilo App is an Expo (React Native) mobile application using Expo Router for file - **Language**: TypeScript (strict mode, `tsgo`) - **Styling**: NativeWind v5 (Tailwind CSS v4) — docs: https://www.nativewind.dev/v5/llms-full.txt - **UI Components**: [React Native Reusables](https://reactnativereusables.com/) (shadcn/ui for React Native) in `src/components/ui/` -- **Linting**: ESLint 9 flat config with strict type-checked rules, unicorn, sonarjs, import-x, promise, react-native +- **Linting**: oxlint with type-aware rules, unicorn, react-native (jsPlugin), import, promise - **Formatting**: oxfmt ## Environment Setup @@ -24,7 +24,7 @@ The dev server (`pnpm start`) is always started by the user — do not start it ```bash pnpm typecheck # tsgo --noEmit -pnpm lint # expo lint (eslint) +pnpm lint # oxlint pnpm format # oxfmt src pnpm format:check # oxfmt --list-different src pnpm check:unused # knip (unused exports/deps) @@ -54,10 +54,10 @@ npx expo install --dev # devDependencies ## Fixing Lint Errors -When resolving lint errors, always try the autofix first before editing manually: +When resolving lint errors, try the autofix first before editing manually: ```bash -npx eslint --fix +pnpm -w exec oxlint --config kilo-app/.oxlintrc.json --fix kilo-app/src ``` Only hand-fix errors that `--fix` cannot resolve. diff --git a/kilo-app/eslint.config.js b/kilo-app/eslint.config.js deleted file mode 100644 index 97df1d3be24..00000000000 --- a/kilo-app/eslint.config.js +++ /dev/null @@ -1,160 +0,0 @@ -// https://docs.expo.dev/guides/using-eslint/ -const { defineConfig } = require('eslint/config'); -const expoConfig = require('eslint-config-expo/flat'); -const tseslint = require('typescript-eslint'); -const reactNativePlugin = require('eslint-plugin-react-native'); -const importXPlugin = require('eslint-plugin-import-x'); -const unicornPlugin = require('eslint-plugin-unicorn').default; -const promisePlugin = require('eslint-plugin-promise'); -const sonarjsPlugin = require('eslint-plugin-sonarjs'); - -module.exports = defineConfig([ - // Base Expo config (includes React, React Hooks, basic TS rules) - expoConfig, - - // TypeScript strict type-checked rules (overrides Expo's loose TS config) - ...tseslint.configs.strictTypeChecked, - ...tseslint.configs.stylisticTypeChecked, - { - languageOptions: { - parserOptions: { - projectService: true, - tsconfigRootDir: __dirname, - }, - }, - }, - - // React Native - { - plugins: { - 'react-native': reactNativePlugin, - }, - rules: { - 'react-native/no-unused-styles': 'error', - 'react-native/no-inline-styles': 'error', - 'react-native/no-raw-text': 'error', - 'react-native/no-single-element-style-arrays': 'error', - 'react-native/no-color-literals': 'error', - }, - }, - - // Import hygiene - importXPlugin.flatConfigs.recommended, - importXPlugin.flatConfigs.typescript, - { - rules: { - 'import-x/no-unresolved': 'error', - 'import-x/no-cycle': 'error', - 'import-x/no-self-import': 'error', - 'import-x/no-useless-path-segments': 'error', - 'import-x/no-duplicates': 'error', - 'import-x/no-mutable-exports': 'error', - 'import-x/no-default-export': 'error', - 'import-x/consistent-type-specifier-style': ['error', 'prefer-inline'], - 'import-x/order': [ - 'error', - { - groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'], - 'newlines-between': 'always', - alphabetize: { order: 'asc', caseInsensitive: true }, - }, - ], - }, - }, - - // Unicorn — all recommended rules as errors - unicornPlugin.configs['flat/all'], - { - rules: { - 'unicorn/prevent-abbreviations': 'off', - 'unicorn/no-keyword-prefix': ['error', { disallowedPrefixes: ['new', 'for'] }], - }, - }, - - // Promise - promisePlugin.configs['flat/recommended'], - { - rules: { - 'promise/always-return': 'error', - 'promise/no-return-wrap': 'error', - 'promise/catch-or-return': 'error', - 'promise/no-nesting': 'error', - 'promise/no-promise-in-callback': 'error', - 'promise/no-callback-in-promise': 'error', - 'promise/no-return-in-finally': 'error', - 'promise/prefer-await-to-then': 'error', - 'promise/prefer-await-to-callbacks': 'error', - }, - }, - - // SonarJS — all recommended rules - sonarjsPlugin.configs.recommended, - - // Restricted imports - { - rules: { - 'no-restricted-imports': [ - 'error', - { - paths: [ - { - name: 'react-native', - importNames: ['Image'], - message: 'Import Image from @/components/ui/image instead.', - }, - { - name: 'expo-image', - message: 'Import Image from @/components/ui/image instead.', - }, - ], - }, - ], - }, - }, - - // Upgrade all warnings from Expo's config to errors - { - rules: { - '@typescript-eslint/no-unused-vars': [ - 'error', - { - vars: 'all', - args: 'all', - argsIgnorePattern: '^_', - ignoreRestSiblings: true, - caughtErrors: 'all', - }, - ], - '@typescript-eslint/no-require-imports': 'error', - '@typescript-eslint/no-empty-object-type': 'error', - '@typescript-eslint/no-wrapper-object-types': 'error', - '@typescript-eslint/consistent-type-assertions': [ - 'error', - { - assertionStyle: 'as', - objectLiteralTypeAssertions: 'never', - }, - ], - }, - }, - - // Allow expo-image import in the wrapper component - { - files: ['src/components/ui/image.tsx'], - rules: { - 'no-restricted-imports': 'off', - }, - }, - - // Allow default exports in route/layout files (Expo Router requires them) - { - files: ['src/app/**/_layout.tsx', 'src/app/**/*.tsx'], - rules: { - 'import-x/no-default-export': 'off', - }, - }, - - { - ignores: ['dist/*'], - }, -]); diff --git a/kilo-app/knip.json b/kilo-app/knip.json index 35434fc2eff..e0ada460c01 100644 --- a/kilo-app/knip.json +++ b/kilo-app/knip.json @@ -5,9 +5,6 @@ "ignoreDependencies": ["react-native-worklets", "expo-updates", "expo-system-ui", "postcss"], "ignoreBinaries": ["eas", "oxfmt"], "ignore": ["src/components/ui/**"], - "eslint": { - "config": ["eslint.config.js"] - }, "postcss": { "config": ["postcss.config.mjs"] } diff --git a/kilo-app/package.json b/kilo-app/package.json index 9fb588a2864..8384d2af9dd 100644 --- a/kilo-app/package.json +++ b/kilo-app/package.json @@ -10,7 +10,7 @@ "build:ios": "eas build -p ios --profile development", "build:android": "eas build -p android --profile development", "typecheck": "tsgo --noEmit --incremental false", - "lint": "expo lint", + "lint": "pnpm -w exec oxlint --config kilo-app/.oxlintrc.json kilo-app/src", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "check:unused": "knip" @@ -52,16 +52,8 @@ "devDependencies": { "@types/react": "~19.2.2", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", - "eslint-config-expo": "~55.0.0", - "eslint-plugin-import-x": "^4.16.2", - "eslint-plugin-promise": "^7.2.1", - "eslint-plugin-react-native": "^5.0.0", - "eslint-plugin-sonarjs": "^4.0.2", - "eslint-plugin-unicorn": "^63.0.0", "knip": "^5.86.0", - "typescript": "catalog:", - "typescript-eslint": "catalog:" + "typescript": "catalog:" }, "private": true } diff --git a/kiloclaw/.gitignore b/kiloclaw/.gitignore index 11d62ad0fcf..b94c3f1df53 100644 --- a/kiloclaw/.gitignore +++ b/kiloclaw/.gitignore @@ -65,10 +65,6 @@ web_modules/ .npm -# Optional eslint cache - -.eslintcache - # Optional stylelint cache .stylelintcache diff --git a/kiloclaw/AGENTS.md b/kiloclaw/AGENTS.md index f0c462d7eeb..f16aac40390 100644 --- a/kiloclaw/AGENTS.md +++ b/kiloclaw/AGENTS.md @@ -143,7 +143,7 @@ Volumes are region-pinned. Once a user's volume is created in a region, their ma ```bash pnpm typecheck # tsgo -pnpm lint # eslint v9 + typescript-eslint +pnpm lint # oxlint pnpm format # oxfmt pnpm test # vitest (node) pnpm types # regenerate worker-configuration.d.ts (run after changing wrangler.jsonc) diff --git a/kiloclaw/eslint.config.mjs b/kiloclaw/eslint.config.mjs deleted file mode 100644 index 4792c67f5c0..00000000000 --- a/kiloclaw/eslint.config.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([ - ...baseConfig(__dirname), - { - files: ['**/*.ts'], - rules: { - '@typescript-eslint/restrict-template-expressions': 'off', - }, - }, -]); diff --git a/kiloclaw/package.json b/kiloclaw/package.json index ca4c499a0f2..9d478250f5e 100644 --- a/kiloclaw/package.json +++ b/kiloclaw/package.json @@ -12,10 +12,8 @@ "dev": "wrangler dev", "types": "wrangler types", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", + "lint": "pnpm run lint:oxlint", "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json kiloclaw/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'", - "lint:fix": "eslint --config eslint.config.mjs --cache --fix 'src/**/*.ts'", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "test": "vitest run", @@ -33,11 +31,9 @@ "zod": "catalog:" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", "@vitest/coverage-v8": "^4.1.0", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "^4.1.0", "wrangler": "catalog:" diff --git a/oxlint-plugin-drizzle.js b/oxlint-plugin-drizzle.js new file mode 100644 index 00000000000..6d4b1a8ce92 --- /dev/null +++ b/oxlint-plugin-drizzle.js @@ -0,0 +1,150 @@ +// Oxlint JS plugin: drizzle enforce-delete-with-where / enforce-update-with-where. + +function isDrizzleObjName(name, drizzleObjectName) { + if (typeof drizzleObjectName === "string") return name === drizzleObjectName; + if (Array.isArray(drizzleObjectName)) { + return drizzleObjectName.length === 0 || drizzleObjectName.includes(name); + } + return false; +} + +function resolveMemberPath(node) { + if (node.type === "Identifier") return node.name; + if (node.type === "MemberExpression" && node.property.type === "Identifier") { + const objectPath = resolveMemberPath(node.object); + return objectPath ? `${objectPath}.${node.property.name}` : null; + } + if (node.type === "ThisExpression") return "this"; + return null; +} + +function isDrizzleObj(node, drizzleObjectName) { + // Check the object the method is called on (e.g. db in db.delete, ctx.db in ctx.db.delete) + const objectPath = resolveMemberPath(node.object); + if (objectPath && isDrizzleObjName(objectPath, drizzleObjectName)) { + return true; + } + // Also check the callee for patterns like getDb().delete(...) + if (node.object.type === "CallExpression") { + const calleePath = resolveMemberPath(node.object.callee); + if (calleePath && isDrizzleObjName(calleePath, drizzleObjectName)) { + return true; + } + } + return false; +} + +function hasWhereInChain(node) { + let current = node.parent; + while (current) { + if ( + current.type === "MemberExpression" && + current.property.type === "Identifier" && + current.property.name === "where" + ) { + return true; + } + if ( + current.type !== "CallExpression" && + current.type !== "MemberExpression" && + current.type !== "AwaitExpression" + ) { + break; + } + current = current.parent; + } + return false; +} + +function resolveMemberExpressionPath(node) { + let objectExpression = node.object; + let fullName = ""; + const addToFullName = (name) => { + const prefix = fullName ? "." : ""; + fullName = `${name}${prefix}${fullName}`; + }; + while (objectExpression) { + if (objectExpression.type === "MemberExpression") { + if (objectExpression.property.type === "Identifier") { + addToFullName(objectExpression.property.name); + } + objectExpression = objectExpression.object; + } else if ( + objectExpression.type === "CallExpression" && + objectExpression.callee.type === "Identifier" + ) { + addToFullName(`${objectExpression.callee.name}(...)`); + break; + } else if ( + objectExpression.type === "CallExpression" && + objectExpression.callee.type === "MemberExpression" + ) { + if (objectExpression.callee.property.type === "Identifier") { + addToFullName(`${objectExpression.callee.property.name}(...)`); + } + objectExpression = objectExpression.callee.object; + } else if (objectExpression.type === "Identifier") { + addToFullName(objectExpression.name); + break; + } else if (objectExpression.type === "ThisExpression") { + addToFullName("this"); + break; + } else { + break; + } + } + return fullName; +} + +function createRule(method, messageId) { + return { + meta: { + type: "problem", + messages: { + [messageId]: `Without \`.where(...)\` you will ${method} all the rows in a table. Use \`{{ drizzleObjName }}.${method}(...).where(...)\` instead.`, + }, + schema: [ + { + type: "object", + properties: { + drizzleObjectName: { type: ["string", "array"] }, + }, + additionalProperties: false, + }, + ], + }, + create(context) { + const drizzleObjectName = + (context.options[0] && context.options[0].drizzleObjectName) || []; + return { + MemberExpression(node) { + if ( + node.property.type === "Identifier" && + node.property.name === method && + isDrizzleObj(node, drizzleObjectName) && + !hasWhereInChain(node) + ) { + context.report({ + node, + messageId, + data: { drizzleObjName: resolveMemberExpressionPath(node) }, + }); + } + }, + }; + }, + }; +} + +module.exports = { + rules: { + "enforce-delete-with-where": createRule( + "delete", + "enforceDeleteWithWhere", + ), + "enforce-update-with-where": createRule( + "update", + "enforceUpdateWithWhere", + ), + }, +}; diff --git a/package.json b/package.json index 930782b7d71..6ca21f18e94 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,8 @@ "build": "next build", "start": "next start", "stripe": "stripe listen --forward-to http://localhost:3000/api/stripe/webhook", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback && pnpm -r --filter '!kilocode-backend' --filter '!storybook' run lint", + "lint": "pnpm run lint:oxlint && pnpm -r --filter '!kilocode-backend' --filter '!storybook' run lint", "lint:oxlint": "oxlint --config .oxlintrc.json src", - "lint:eslint:fallback": "eslint --config eslint.fallback.config.mjs --cache --cache-strategy content 'src/**/*.{ts,tsx}'", "format": "oxfmt .", "format:check": "oxfmt --list-different .", "format:changed": "git diff --name-only $(git merge-base origin/main HEAD) --diff-filter=ACMR -- '**/*.js' '**/*.jsx' '**/*.ts' '**/*.tsx' '**/*.json' '**/*.css' '**/*.md' | xargs -r oxfmt --no-error-on-unmatched-pattern", @@ -148,15 +147,11 @@ "devDependencies": { "@chromatic-com/playwright": "^0.12.8", "@cloudflare/workers-types": "catalog:", - "@eslint/eslintrc": "catalog:", - "@eslint/js": "catalog:", "@jest/globals": "^30.3.0", - "@next/eslint-plugin-next": "^16.1.6", "@playwright/test": "^1.58.2", "@swc/jest": "^0.2.39", "@tailwindcss/postcss": "^4.2.1", "@tailwindcss/typography": "^0.5.19", - "@tanstack/eslint-plugin-query": "^5.91.4", "@types/jest": "^30.0.0", "@types/jsonwebtoken": "catalog:", "@types/node": "^22.19.15", @@ -166,13 +161,6 @@ "babel-plugin-react-compiler": "^1.0.0", "dependency-cruiser": "^17.3.9", "dotenv": "^17.3.1", - "eslint": "catalog:", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-drizzle": "^0.2.3", - "eslint-plugin-n": "^17.24.0", - "eslint-plugin-oxlint": "^1.55.0", - "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-tailwindcss": "4.0.0-beta.0", "husky": "^9.1.7", "jest": "^30.3.0", "knip": "^5.86.0", @@ -188,7 +176,7 @@ "tsx": "^4.21.0", "tw-animate-css": "^1.4.0", "typescript": "catalog:", - "typescript-eslint": "catalog:" + "oxlint-plugin-react-native": "^0.2.8" }, "pnpm": { "overrides": { diff --git a/packages/db/eslint.config.mjs b/packages/db/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/packages/db/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/packages/db/package.json b/packages/db/package.json index 6b9803df4ce..0301f54ac3c 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -5,9 +5,8 @@ "type": "module", "scripts": { "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/db/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm run lint:oxlint", + "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/db/src" }, "exports": { ".": "./src/index.ts", @@ -21,11 +20,9 @@ "zod": "catalog:" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@types/pg": "^8.18.0", "@typescript/native-preview": "catalog:", "drizzle-kit": "^0.31.9", - "eslint": "catalog:", "typescript": "catalog:" } } diff --git a/packages/encryption/eslint.config.mjs b/packages/encryption/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/packages/encryption/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/packages/encryption/package.json b/packages/encryption/package.json index 6444a575310..28284ad829c 100644 --- a/packages/encryption/package.json +++ b/packages/encryption/package.json @@ -10,15 +10,12 @@ "test": "vitest run", "test:watch": "vitest", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/encryption/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm run lint:oxlint", + "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/encryption/src" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@types/node": "^22.19.15", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "~3.2.4" } diff --git a/packages/eslint-config/eslint.config.base.mjs b/packages/eslint-config/eslint.config.base.mjs deleted file mode 100644 index 829ce69e1a4..00000000000 --- a/packages/eslint-config/eslint.config.base.mjs +++ /dev/null @@ -1,68 +0,0 @@ -import tseslint from 'typescript-eslint'; -import eslint from '@eslint/js'; -import { defineConfig } from 'eslint/config'; -import oxlint from 'eslint-plugin-oxlint'; - -/** - * Shared ESLint base config for all packages. - * @param {string} tsconfigRootDir - The package's __dirname, used for TypeScript project resolution. - */ -export default function baseConfig(tsconfigRootDir) { - return defineConfig([ - { - linterOptions: { - reportUnusedDisableDirectives: 'off', - }, - }, - { - ignores: ['node_modules/**', 'dist/**', '.wrangler/**'], - }, - { - files: ['**/*.ts', '**/*.tsx'], - extends: [eslint.configs.recommended, tseslint.configs.recommendedTypeChecked], - languageOptions: { - parser: tseslint.parser, - parserOptions: { - projectService: { - allowDefaultProject: ['*.js', '*.mjs'], - }, - tsconfigRootDir, - }, - }, - rules: { - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - '@typescript-eslint/no-floating-promises': 'error', - '@typescript-eslint/no-misused-promises': [ - 'error', - { - checksVoidReturn: false, - }, - ], - '@typescript-eslint/require-await': 'off', - '@typescript-eslint/consistent-type-imports': 'error', - - '@typescript-eslint/no-unsafe-assignment': 'error', - '@typescript-eslint/no-unsafe-member-access': 'error', - '@typescript-eslint/no-unsafe-argument': 'error', - '@typescript-eslint/no-base-to-string': 'error', - '@typescript-eslint/no-unsafe-call': 'error', - '@typescript-eslint/no-empty-object-type': 'error', - }, - }, - ...oxlint.configs['flat/eslint'], - ...oxlint.configs['flat/typescript'], - { - files: ['**/*.ts', '**/*.tsx'], - rules: { - '@typescript-eslint/no-empty-object-type': 'error', - }, - }, - ]); -} diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json deleted file mode 100644 index 286be7dd086..00000000000 --- a/packages/eslint-config/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@kilocode/eslint-config", - "version": "0.0.0", - "private": true, - "type": "module", - "exports": { - ".": "./eslint.config.base.mjs" - }, - "dependencies": { - "@eslint/js": "catalog:", - "eslint": "catalog:", - "eslint-plugin-oxlint": "^1.55.0", - "typescript-eslint": "catalog:" - } -} diff --git a/packages/worker-utils/eslint.config.mjs b/packages/worker-utils/eslint.config.mjs deleted file mode 100644 index 826249d2656..00000000000 --- a/packages/worker-utils/eslint.config.mjs +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname } from 'path'; -import { fileURLToPath } from 'url'; -import { defineConfig } from 'eslint/config'; -import baseConfig from '@kilocode/eslint-config'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default defineConfig([...baseConfig(__dirname)]); diff --git a/packages/worker-utils/package.json b/packages/worker-utils/package.json index 08e50a6b036..df64c04656e 100644 --- a/packages/worker-utils/package.json +++ b/packages/worker-utils/package.json @@ -10,9 +10,8 @@ "test": "vitest run", "test:watch": "vitest", "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint && pnpm run lint:eslint:fallback", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/worker-utils/src", - "lint:eslint:fallback": "eslint --config eslint.config.mjs --cache 'src/**/*.ts'" + "lint": "pnpm run lint:oxlint", + "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/worker-utils/src" }, "dependencies": { "aws4fetch": "catalog:", @@ -21,9 +20,7 @@ "zod": "catalog:" }, "devDependencies": { - "@kilocode/eslint-config": "workspace:*", "@typescript/native-preview": "catalog:", - "eslint": "catalog:", "typescript": "catalog:", "vitest": "~3.2.4" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6282bbe613b..2d133542d86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,12 +9,6 @@ catalogs: '@cloudflare/workers-types': specifier: ^4.20260313.1 version: 4.20260313.1 - '@eslint/eslintrc': - specifier: ^3.3.5 - version: 3.3.5 - '@eslint/js': - specifier: ^9.39.4 - version: 9.39.4 '@octokit/auth-app': specifier: ^8.2.0 version: 8.2.0 @@ -48,9 +42,6 @@ catalogs: drizzle-orm: specifier: ^0.45.1 version: 0.45.1 - eslint: - specifier: ^9.39.4 - version: 9.39.4 jose: specifier: ^6.2.1 version: 6.2.1 @@ -63,9 +54,6 @@ catalogs: typescript: specifier: ^5.9.3 version: 5.9.3 - typescript-eslint: - specifier: ^8.57.0 - version: 8.57.0 workers-tagged-logger: specifier: ^1.0.0 version: 1.0.0 @@ -429,18 +417,9 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@eslint/eslintrc': - specifier: 'catalog:' - version: 3.3.5 - '@eslint/js': - specifier: 'catalog:' - version: 9.39.4 '@jest/globals': specifier: ^30.3.0 version: 30.3.0 - '@next/eslint-plugin-next': - specifier: ^16.1.6 - version: 16.1.6 '@playwright/test': specifier: ^1.58.2 version: 1.58.2 @@ -453,9 +432,6 @@ importers: '@tailwindcss/typography': specifier: ^0.5.19 version: 0.5.19(tailwindcss@4.2.1) - '@tanstack/eslint-plugin-query': - specifier: ^5.91.4 - version: 5.91.4(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) '@types/jest': specifier: ^30.0.0 version: 30.0.0 @@ -483,27 +459,6 @@ importers: dotenv: specifier: ^17.3.1 version: 17.3.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) - eslint-config-prettier: - specifier: ^10.1.8 - version: 10.1.8(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-drizzle: - specifier: ^0.2.3 - version: 0.2.3(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-n: - specifier: ^17.24.0 - version: 17.24.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-oxlint: - specifier: ^1.55.0 - version: 1.55.0 - eslint-plugin-react-hooks: - specifier: ^7.0.1 - version: 7.0.1(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-tailwindcss: - specifier: 4.0.0-beta.0 - version: 4.0.0-beta.0(tailwindcss@4.2.1) husky: specifier: ^9.1.7 version: 9.1.7 @@ -522,6 +477,9 @@ importers: oxlint: specifier: ^1.55.0 version: 1.55.0(oxlint-tsgolint@0.17.1) + oxlint-plugin-react-native: + specifier: ^0.2.8 + version: 0.2.9(oxlint@1.55.0(oxlint-tsgolint@0.17.1)) oxlint-tsgolint: specifier: ^0.17.1 version: 0.17.1 @@ -549,9 +507,6 @@ importers: typescript: specifier: 'catalog:' version: 5.9.3 - typescript-eslint: - specifier: 'catalog:' - version: 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) cloud-agent: dependencies: @@ -592,9 +547,6 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/jsonwebtoken': specifier: 'catalog:' version: 9.0.10 @@ -610,9 +562,6 @@ importers: drizzle-kit: specifier: 'catalog:' version: 0.31.9 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -671,9 +620,6 @@ importers: '@cloudflare/vitest-pool-workers': specifier: ^0.12.21 version: 0.12.21(@cloudflare/workers-types@4.20260313.1)(@vitest/runner@4.1.0)(@vitest/snapshot@4.1.0)(vitest@3.2.4) - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/jsonwebtoken': specifier: 'catalog:' version: 9.0.10 @@ -689,9 +635,6 @@ importers: drizzle-kit: specifier: 'catalog:' version: 0.31.9 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -754,9 +697,6 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/jest': specifier: ^29.5.14 version: 29.5.14 @@ -766,9 +706,6 @@ importers: drizzle-kit: specifier: 'catalog:' version: 0.31.9 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) jest: specifier: ^29.7.0 version: 29.7.0(@types/node@25.5.0) @@ -812,9 +749,6 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/jsonwebtoken': specifier: 'catalog:' version: 9.0.10 @@ -827,9 +761,6 @@ importers: drizzle-kit: specifier: 'catalog:' version: 0.31.9 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -855,15 +786,9 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -886,15 +811,9 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -914,15 +833,9 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -951,9 +864,6 @@ importers: '@cloudflare/vitest-pool-workers': specifier: ^0.12.21 version: 0.12.21(@cloudflare/workers-types@4.20260313.1)(@vitest/runner@4.1.0)(@vitest/snapshot@4.1.0)(vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/jest': specifier: ^30.0.0 version: 30.0.0 @@ -963,9 +873,6 @@ importers: '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) jest: specifier: ^30.3.0 version: 30.3.0(@types/node@22.19.15)(esbuild-register@3.6.0(esbuild@0.27.4)) @@ -1003,9 +910,6 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../../packages/eslint-config '@sentry/cli': specifier: ^2.58.5 version: 2.58.5 @@ -1021,9 +925,6 @@ importers: '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) jest: specifier: ^29.7.0 version: 29.7.0(@types/node@22.19.15) @@ -1055,9 +956,6 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../../packages/eslint-config '@swc/jest': specifier: ^0.2.39 version: 0.2.39(@swc/core@1.15.18) @@ -1070,9 +968,6 @@ importers: '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) jest: specifier: ^30.3.0 version: 30.3.0(@types/node@22.19.15)(esbuild-register@3.6.0(esbuild@0.27.4)) @@ -1134,9 +1029,6 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@sentry/cli': specifier: ^2.58.2 version: 2.58.5 @@ -1149,9 +1041,6 @@ importers: '@typescript/native-preview': specifier: 7.0.0-dev.20251019.1 version: 7.0.0-dev.20251019.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1177,15 +1066,9 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../../packages/eslint-config '@types/bun': specifier: ^1.2.17 version: 1.3.10 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1208,15 +1091,9 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1239,9 +1116,6 @@ importers: '@cloudflare/vitest-pool-workers': specifier: ^0.8.71 version: 0.8.71(@cloudflare/workers-types@4.20260313.1)(@vitest/runner@4.1.0)(@vitest/snapshot@4.1.0)(vitest@3.2.4) - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 @@ -1279,9 +1153,6 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/jsonwebtoken': specifier: 'catalog:' version: 9.0.10 @@ -1291,9 +1162,6 @@ importers: '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1322,9 +1190,6 @@ importers: '@cloudflare/vitest-pool-workers': specifier: ^0.12.21 version: 0.12.21(@cloudflare/workers-types@4.20260313.1)(@vitest/runner@4.1.0)(@vitest/snapshot@4.1.0)(vitest@3.2.4) - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/node': specifier: ^25.5.0 version: 25.5.0 @@ -1334,9 +1199,6 @@ importers: drizzle-kit: specifier: 'catalog:' version: 0.31.9 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1362,9 +1224,6 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/node': specifier: ^22.19.15 version: 22.19.15 @@ -1393,9 +1252,6 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/node': specifier: ^22.19.15 version: 22.19.15 @@ -1436,9 +1292,6 @@ importers: '@cloudflare/workers-types': specifier: 'catalog:' version: 4.20260313.1 - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/node': specifier: ^22.19.15 version: 22.19.15 @@ -1448,9 +1301,6 @@ importers: drizzle-kit: specifier: 'catalog:' version: 0.31.9 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) jose: specifier: 'catalog:' version: 6.2.1 @@ -1491,9 +1341,6 @@ importers: '@cloudflare/vitest-pool-workers': specifier: ^0.12.21 version: 0.12.21(@cloudflare/workers-types@4.20260313.1)(@vitest/runner@4.1.0)(@vitest/snapshot@4.1.0)(vitest@3.2.4) - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/node': specifier: ^22.19.15 version: 22.19.15 @@ -1506,9 +1353,6 @@ importers: drizzle-kit: specifier: 'catalog:' version: 0.31.9 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1624,36 +1468,12 @@ importers: '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) - eslint-config-expo: - specifier: ~55.0.0 - version: 55.0.0(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-import-x: - specifier: ^4.16.2 - version: 4.16.2(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-promise: - specifier: ^7.2.1 - version: 7.2.1(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react-native: - specifier: ^5.0.0 - version: 5.0.0(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-sonarjs: - specifier: ^4.0.2 - version: 4.0.2(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-unicorn: - specifier: ^63.0.0 - version: 63.0.0(eslint@9.39.4(jiti@2.6.1)) knip: specifier: ^5.86.0 - version: 5.86.0(@types/node@22.19.15)(typescript@5.9.3) + version: 5.86.0(@types/node@25.5.0)(typescript@5.9.3) typescript: specifier: 'catalog:' version: 5.9.3 - typescript-eslint: - specifier: 'catalog:' - version: 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) kiloclaw: dependencies: @@ -1682,9 +1502,6 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../packages/eslint-config '@types/node': specifier: ^22.19.15 version: 22.19.15 @@ -1694,9 +1511,6 @@ importers: '@vitest/coverage-v8': specifier: ^4.1.0 version: 4.1.0(vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1735,9 +1549,6 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../eslint-config '@types/pg': specifier: ^8.18.0 version: 8.18.0 @@ -1747,27 +1558,18 @@ importers: drizzle-kit: specifier: ^0.31.9 version: 0.31.9 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 packages/encryption: devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../eslint-config '@types/node': specifier: ^22.19.15 version: 22.19.15 '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -1775,21 +1577,6 @@ importers: specifier: ~3.2.4 version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.15)(@vitest/ui@3.2.4)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) - packages/eslint-config: - dependencies: - '@eslint/js': - specifier: 'catalog:' - version: 9.39.4 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) - eslint-plugin-oxlint: - specifier: ^1.55.0 - version: 1.55.0 - typescript-eslint: - specifier: 'catalog:' - version: 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - packages/trpc: dependencies: '@kilocode/kiloclaw-secret-catalog': @@ -1851,15 +1638,9 @@ importers: specifier: 'catalog:' version: 4.3.6 devDependencies: - '@kilocode/eslint-config': - specifier: workspace:* - version: link:../eslint-config '@typescript/native-preview': specifier: 'catalog:' version: 7.0.0-dev.20260319.1 - eslint: - specifier: 'catalog:' - version: 9.39.4(jiti@2.6.1) typescript: specifier: 'catalog:' version: 5.9.3 @@ -3346,44 +3127,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.39.4': - resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@expo-google-fonts/material-symbols@0.4.27': resolution: {integrity: sha512-cnb3DZnWUWpezGFkJ8y4MT5f/lw6FcgDzeJzic+T+vpQHLHG1cg3SC3i1w1i8Bk4xKR4HPY3t9iIRNvtr5ml8A==} @@ -3594,22 +3337,6 @@ packages: '@trpc/server': ^10.10.0 || >11.0.0-rc hono: ^4.12.7 - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.7': - resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} @@ -4150,9 +3877,6 @@ packages: '@next/env@16.1.6': resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} - '@next/eslint-plugin-next@16.1.6': - resolution: {integrity: sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==} - '@next/mdx@16.1.6': resolution: {integrity: sha512-PT5JR4WPPYOls7WD6xEqUVVI9HDY8kY7XLQsNYB2lSZk5eJSXWu3ECtIYmfR0hZpx8Sg7BKZYKi2+u5OTSEx0w==} peerDependencies: @@ -4234,10 +3958,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nolyfill/is-core-module@1.0.39': - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} - '@octokit/auth-app@8.2.0': resolution: {integrity: sha512-vVjdtQQwomrZ4V46B9LaCsxsySxGoHsyw6IYBov/TqJVROrlYdyNgw5q6tQbB7KZt53v1l1W53RiqTvpzL907g==} engines: {node: '>= 20'} @@ -4989,8 +4709,9 @@ packages: cpu: [x64] os: [win32] - '@package-json/types@0.0.12': - resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} + '@oxlint/plugins@1.56.0': + resolution: {integrity: sha512-V3gtudfeu5S5ilC6sqajBzGXcCXtNldBBTGi4M45NS5e1h35923u7Yrzycb26NSAd1z/d5YoG5jg9r6rqmdEuw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@panva/hkdf@1.2.1': resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} @@ -6015,9 +5736,6 @@ packages: cpu: [x64] os: [win32] - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@sapphire/async-queue@1.5.5': resolution: {integrity: sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} @@ -6910,15 +6628,6 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tanstack/eslint-plugin-query@5.91.4': - resolution: {integrity: sha512-8a+GAeR7oxJ5laNyYBQ6miPK09Hi18o5Oie/jx8zioXODv/AUFLZQecKabPdpQSLmuDXEBPKFh+W5DKbWlahjQ==} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - '@tanstack/query-core@5.90.20': resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==} @@ -7084,9 +6793,6 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/jsonwebtoken@9.0.10': resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} @@ -7176,44 +6882,18 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.57.0': - resolution: {integrity: sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.57.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/parser@8.57.0': - resolution: {integrity: sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.57.0': resolution: {integrity: sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.57.0': - resolution: {integrity: sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.57.0': resolution: {integrity: sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.57.0': - resolution: {integrity: sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.57.0': resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7224,13 +6904,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.57.0': - resolution: {integrity: sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.57.0': resolution: {integrity: sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -7786,41 +7459,9 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} - array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -7849,10 +7490,6 @@ packages: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -8156,14 +7793,6 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - - builtin-modules@5.0.0: - resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} - engines: {node: '>=18.20'} - builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} @@ -8242,9 +7871,6 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@5.4.4: - resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} - char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -8331,10 +7957,6 @@ packages: clean-git-ref@2.0.1: resolution: {integrity: sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==} - clean-regexp@1.0.0: - resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} - engines: {node: '>=4'} - clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -8448,10 +8070,6 @@ packages: resolution: {integrity: sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==} engines: {node: '>= 6'} - comment-parser@1.4.5: - resolution: {integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==} - engines: {node: '>= 12.0.0'} - common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} @@ -8469,12 +8087,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - confbox@0.2.4: - resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} - connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} @@ -8655,18 +8267,6 @@ packages: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} @@ -8738,9 +8338,6 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -8887,10 +8484,6 @@ packages: dnssd-advertise@1.1.3: resolution: {integrity: sha512-XENsHi3MBzWOCAXif3yZvU1Ah0l+nhJj1sjWL6TnOAYKvGiFhbTx32xHN7+wLMLUOCj7Nr0evADWG4R8JtqCDA==} - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -9137,10 +8730,6 @@ packages: error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-abstract@1.24.1: - resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} - engines: {node: '>= 0.4'} - es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -9149,10 +8738,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.3.1: - resolution: {integrity: sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==} - engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -9167,14 +8752,6 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - es-toolkit@1.45.1: resolution: {integrity: sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==} @@ -9225,210 +8802,19 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-compat-utils@0.5.1: - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - - eslint-config-expo@55.0.0: - resolution: {integrity: sha512-YvhaKrp1g7pR/qjdI12E5nw9y0DJZWgYr815vyW8wskGLsFvxATY3mtKL8zm3ZYzWj3Bvc37tRIS661TEkrv9A==} - peerDependencies: - eslint: '>=8.10' - - eslint-config-prettier@10.1.8: - resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-import-context@0.1.9: - resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - peerDependencies: - unrs-resolver: ^1.0.0 - peerDependenciesMeta: - unrs-resolver: - optional: true - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-import-resolver-typescript@3.10.1: - resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-module-utils@2.12.1: - resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-drizzle@0.2.3: - resolution: {integrity: sha512-BO+ymHo33IUNoJlC0rbd7HP9EwwpW4VIp49R/tWQF/d2E1K2kgTf0tCXT0v9MSiBr6gGR1LtPwMLapTKEWSg9A==} - peerDependencies: - eslint: '>=8.0.0' - - eslint-plugin-es-x@7.8.0: - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - - eslint-plugin-expo@1.0.0: - resolution: {integrity: sha512-qLtunR+cNFtC+jwYCBia5c/PJurMjSLMOV78KrEOyQK02ohZapU4dCFFnS2hfrJuw0zxfsjVkjqg3QBqi933QA==} - engines: {node: '>=18.0.0'} - peerDependencies: - eslint: '>=8.10' - - eslint-plugin-import-x@4.16.2: - resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/utils': ^8.56.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - eslint-import-resolver-node: '*' - peerDependenciesMeta: - '@typescript-eslint/utils': - optional: true - eslint-import-resolver-node: - optional: true - - eslint-plugin-import@2.32.0: - resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-n@17.24.0: - resolution: {integrity: sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.23.0' - - eslint-plugin-oxlint@1.55.0: - resolution: {integrity: sha512-5ng7DOuikSE64e7hX2HBqEWdmql+Q4FWppBoBkxKKflLt1j9LXhab5BN3bYJKyrAihuK1/VH2JvfNefeOZAqpA==} - - eslint-plugin-promise@7.2.1: - resolution: {integrity: sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - - eslint-plugin-react-hooks@5.2.0: - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - - eslint-plugin-react-hooks@7.0.1: - resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} - engines: {node: '>=18'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - - eslint-plugin-react-native-globals@0.1.2: - resolution: {integrity: sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==} - - eslint-plugin-react-native@5.0.0: - resolution: {integrity: sha512-VyWlyCC/7FC/aONibOwLkzmyKg4j9oI8fzrk9WYNs4I8/m436JuOTAFwLvEn1CVvc7La4cPfbCyspP4OYpP52Q==} - peerDependencies: - eslint: ^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-plugin-sonarjs@4.0.2: - resolution: {integrity: sha512-BTcT1zr1iTbmJtVlcesISwnXzh+9uhf9LEOr+RRNf4kR8xA0HQTPft4oiyOCzCOGKkpSJxjR8ZYF6H7VPyplyw==} - peerDependencies: - eslint: ^8.0.0 || ^9.0.0 || ^10.0.0 - - eslint-plugin-tailwindcss@4.0.0-beta.0: - resolution: {integrity: sha512-WWCajZgQu38Sd67ZCl2W6i3MRzqB0d+H8s4qV9iB6lBJbsDOIpIlj6R1Fj2FXkoWErbo05pZnZYbCGIU9o/DsA==} - engines: {node: '>=18.12.0'} - peerDependencies: - tailwindcss: ^3.4.0 || ^4.0.0 - - eslint-plugin-unicorn@63.0.0: - resolution: {integrity: sha512-Iqecl9118uQEXYh7adylgEmGfkn5es3/mlQTLLkd4pXkIk9CTGrAbeUux+YljSa2ohXCBmQQ0+Ej1kZaFgcfkA==} - engines: {node: ^20.10.0 || >=21.0.0} - peerDependencies: - eslint: '>=9.38.0' - eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - 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} - eslint@9.39.4: - resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} - esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} @@ -9753,10 +9139,6 @@ packages: fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - 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'} @@ -9767,9 +9149,6 @@ packages: fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} @@ -9815,10 +9194,6 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - filesize@10.1.6: resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} engines: {node: '>= 10.4.0'} @@ -9868,10 +9243,6 @@ packages: resolution: {integrity: sha512-mAOh9gGk9WZ4ip5UjV0o6Vb4SrfnAmtsFNzkMRH9HQiFXVQnDyQFrSHTK5UoG6E+KV+s+cIznbtwpfN41l2nFA==} hasBin: true - find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} - engines: {node: '>=18'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -9892,10 +9263,6 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - flatted@3.4.1: resolution: {integrity: sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==} @@ -9994,16 +9361,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - - functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -10043,10 +9400,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - get-tsconfig@4.13.6: resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} @@ -10058,10 +9411,6 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -10081,29 +9430,6 @@ packages: resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} engines: {node: '>=0.10.0'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - - globals@16.5.0: - resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} - engines: {node: '>=18'} - - globals@17.4.0: - resolution: {integrity: sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==} - engines: {node: '>=18'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - gonzales-pe@4.3.0: resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} engines: {node: '>=0.6.0'} @@ -10125,10 +9451,6 @@ packages: engines: {node: '>=0.4.7'} hasBin: true - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -10140,10 +9462,6 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -10187,9 +9505,6 @@ packages: hermes-compiler@0.14.1: resolution: {integrity: sha512-+RPPQlayoZ9n6/KXKt5SFILWXCGJ/LV5d24L5smXrvTDrPS4L6dSctPczXauuvzFP3QEJbD1YO7Z3Ra4a+4IhA==} - hermes-estree@0.25.1: - resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} - hermes-estree@0.32.0: resolution: {integrity: sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==} @@ -10199,9 +9514,6 @@ packages: hermes-estree@0.33.3: resolution: {integrity: sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==} - hermes-parser@0.25.1: - resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - hermes-parser@0.32.0: resolution: {integrity: sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==} @@ -10354,10 +9666,6 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -10371,10 +9679,6 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} @@ -10404,39 +9708,16 @@ packages: resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} is-arrayish@0.3.4: resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - - is-builtin-module@5.0.0: - resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} - engines: {node: '>=18.20'} - - is-bun-module@2.0.0: - resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -10445,14 +9726,6 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -10468,10 +9741,6 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -10503,22 +9772,10 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -10553,26 +9810,10 @@ packages: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -10591,18 +9832,6 @@ packages: is-url@1.2.4: resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - is-windows@0.2.0: resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} engines: {node: '>=0.10.0'} @@ -10664,10 +9893,6 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - itty-time@1.0.6: resolution: {integrity: sha512-+P8IZaLLBtFv8hCkIjcymZOp4UJ+xW6bSlQsXGqrkmJh7vSiMFSlNne0mCYagEE0N7HDNR5jJBRxwN0oYv61Rw==} @@ -11045,16 +10270,9 @@ packages: json-schema@0.4.0: resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-with-bigint@3.5.7: resolution: {integrity: sha512-7ei3MdAI5+fJPVnKlW77TKNKwQ5ppSzWvhPuSuINT/GYW9ZOC1eRKOuhV9yHG5aEsUPj9BBx5JIekkmoLHxZOw==} - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -11070,14 +10288,6 @@ packages: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} - jsx-ast-utils-x@0.1.0: - resolution: {integrity: sha512-eQQBjBnsVtGacsG9uJNB8qOr3yA8rga4wAaGG1qRcBzSIvfhERLrWxMAM1hp5fcS6Abo8M4+bUBTekYR0qTPQw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} @@ -11111,10 +10321,6 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} @@ -11349,10 +10555,6 @@ packages: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} - local-pkg@1.1.2: - resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} - engines: {node: '>=14'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -11392,9 +10594,6 @@ packages: lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} @@ -11906,9 +11105,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.8.1: - resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==} - module-definition@6.0.1: resolution: {integrity: sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g==} engines: {node: '>=18'} @@ -12034,10 +11230,6 @@ packages: node-abort-controller@3.1.1: resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-exports-info@1.6.0: - resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} - engines: {node: '>= 0.4'} - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -12129,22 +11321,6 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - objectorarray@1.0.5: resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} @@ -12208,10 +11384,6 @@ packages: openid-client@5.7.1: resolution: {integrity: sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==} - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - ora@3.4.0: resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} engines: {node: '>=6'} @@ -12227,10 +11399,6 @@ packages: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - oxc-resolver@11.19.1: resolution: {integrity: sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg==} @@ -12239,6 +11407,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + oxlint-plugin-react-native@0.2.9: + resolution: {integrity: sha512-Xou1mil4rdxDRjon2PSawF4NebxijgjwuWFxsAQYtumVRPiVKELJQgOvTWphYfd751F5Q/8LK7NccPC4M1sBxw==} + peerDependencies: + oxlint: '>=1.0.0' + oxlint-tsgolint@0.17.1: resolution: {integrity: sha512-gJc7hb1ZQFbWjRDYpu1XG+5IRdr1S/Jz/W2ohcpaqIXuDmHU0ujGiM0x05J0nIfwMF3HOEcANi/+j6T0Uecdpg==} hasBin: true @@ -12464,12 +11637,6 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} - playwright-core@1.58.2: resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} engines: {node: '>=18'} @@ -12602,10 +11769,6 @@ packages: engines: {node: '>=18'} hasBin: true - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} @@ -12650,9 +11813,6 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -12687,9 +11847,6 @@ packages: resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} engines: {node: '>=0.6'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - query-selector-shadow-dom@1.0.1: resolution: {integrity: sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==} @@ -12968,14 +12125,6 @@ packages: redux@5.0.1: resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} - refa@0.12.1: - resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - regenerate-unicode-properties@10.2.2: resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} @@ -12989,18 +12138,10 @@ packages: regex-parser@2.3.1: resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} - regexp-ast-analysis@0.7.1: - resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - regexpu-core@6.4.0: resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} engines: {node: '>=4'} @@ -13110,11 +12251,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - resolve@2.0.0-next.6: - resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} - engines: {node: '>= 0.4'} - hasBin: true - restore-cursor@2.0.0: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} @@ -13176,10 +12312,6 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -13189,10 +12321,6 @@ packages: safe-identifier@0.4.2: resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -13244,10 +12372,6 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - scslre@0.3.0: - resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} - engines: {node: ^14.0.0 || >=16.0.0} - seedrandom@3.0.5: resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} @@ -13300,14 +12424,6 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -13471,13 +12587,6 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stable-hash-x@0.2.0: - resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} - engines: {node: '>=12.0.0'} - - stable-hash@0.0.5: - resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -13509,10 +12618,6 @@ packages: std-env@4.0.0: resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} - stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} @@ -13567,25 +12672,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -13736,11 +12822,6 @@ packages: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} - tailwind-api-utils@1.0.3: - resolution: {integrity: sha512-KpzUHkH1ug1sq4394SLJX38ZtpeTiqQ1RVyFTTSY2XuHsNSTWUkRo108KmyyrMWdDbQrLYkSHaNKj/a3bmA4sQ==} - peerDependencies: - tailwindcss: ^3.3.0 || ^4.0.0 || ^4.0.0-beta - tailwind-merge@3.5.0: resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} @@ -13895,11 +12976,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-declaration-location@1.0.7: - resolution: {integrity: sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==} - peerDependencies: - typescript: '>=4.0.0' - ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -13942,9 +13018,6 @@ packages: resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} engines: {node: '>=10.13.0'} - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} @@ -13963,10 +13036,6 @@ packages: tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} @@ -13999,28 +13068,9 @@ packages: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript-eslint@8.57.0: - resolution: {integrity: sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -14042,10 +13092,6 @@ packages: resolution: {integrity: sha512-X2wH19RAPZE3+ldGicOkoj/SIA83OIxcJ6Cuaw23hf8Xc6fQpvZXY0SftE2JgS0QhYLUG4uwodSI3R53keyh7w==} engines: {node: '>=14'} - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -14435,18 +13481,6 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} @@ -14468,10 +13502,6 @@ packages: engines: {node: '>=8'} hasBin: true - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -14665,12 +13695,6 @@ packages: peerDependencies: zod: ^3.25 || ^4 - zod-validation-error@4.0.2: - resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - zod@3.22.3: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} @@ -16560,52 +15584,6 @@ snapshots: '@esbuild/win32-x64@0.27.4': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1))': - dependencies: - eslint: 9.39.4(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.2': {} - - '@eslint/config-array@0.21.2': - dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3 - minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.4.2': - dependencies: - '@eslint/core': 0.17.0 - - '@eslint/core@0.17.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.5': - dependencies: - ajv: 6.14.0 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.4': {} - - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': - dependencies: - '@eslint/core': 0.17.0 - levn: 0.4.1 - '@expo-google-fonts/material-symbols@0.4.27': {} '@expo/cli@55.0.18(@expo/metro-runtime@55.0.6)(expo-constants@55.0.9)(expo-font@55.0.4)(expo-router@55.0.7)(expo@55.0.8)(react-dom@19.2.4(react@19.2.0))(react-native@0.83.2(@babel/core@7.29.0)(@types/react@19.2.14)(react@19.2.0))(react@19.2.0)(typescript@5.9.3)': @@ -16992,17 +15970,6 @@ snapshots: '@trpc/server': 11.13.0(typescript@5.9.3) hono: 4.12.8 - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.7': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.4.3 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.4.3': {} - '@img/colour@1.1.0': {} '@img/sharp-darwin-arm64@0.33.5': @@ -17696,10 +16663,6 @@ snapshots: '@next/env@16.1.6': {} - '@next/eslint-plugin-next@16.1.6': - dependencies: - fast-glob: 3.3.1 - '@next/mdx@16.1.6(@mdx-js/loader@3.1.1(webpack@5.105.4(@swc/core@1.15.18)(esbuild@0.27.4)))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))': dependencies: source-map: 0.7.6 @@ -17749,8 +16712,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@nolyfill/is-core-module@1.0.39': {} - '@octokit/auth-app@8.2.0': dependencies: '@octokit/auth-oauth-app': 9.0.3 @@ -18408,7 +17369,7 @@ snapshots: '@oxlint/binding-win32-x64-msvc@1.55.0': optional: true - '@package-json/types@0.0.12': {} + '@oxlint/plugins@1.56.0': {} '@panva/hkdf@1.2.1': {} @@ -19561,8 +18522,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true - '@rtsao/scc@1.1.0': {} - '@sapphire/async-queue@1.5.5': {} '@sapphire/shapeshift@4.0.0': @@ -20979,15 +19938,6 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 4.2.1 - '@tanstack/eslint-plugin-query@5.91.4(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@tanstack/query-core@5.90.20': {} '@tanstack/react-query@5.90.21(react@19.2.0)': @@ -21180,8 +20130,6 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} - '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 @@ -21278,34 +20226,6 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/type-utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 - eslint: 9.39.4(jiti@2.6.1) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.57.0 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.57.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3) @@ -21315,27 +20235,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.57.0': - dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/visitor-keys': 8.57.0 - '@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/types@8.57.0': {} '@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)': @@ -21353,17 +20256,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.57.0 - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/visitor-keys@8.57.0': dependencies: '@typescript-eslint/types': 8.57.0 @@ -21918,78 +20810,11 @@ snapshots: aria-query@5.3.2: {} - array-buffer-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 + array-timsort@1.0.3: {} + + asap@2.0.6: {} - array-includes@3.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - math-intrinsics: 1.1.0 - - array-timsort@1.0.3: {} - - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - - array.prototype.findlastindex@1.2.6: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-shim-unscopables: 1.1.0 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-shim-unscopables: 1.1.0 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - - asap@2.0.6: {} - - asn1.js@4.10.1: + asn1.js@4.10.1: dependencies: bn.js: 4.12.3 inherits: 2.0.4 @@ -22019,8 +20844,6 @@ snapshots: astring@1.9.0: {} - async-function@1.0.0: {} - asynckit@0.4.0: {} available-typed-arrays@1.0.7: @@ -22417,10 +21240,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - builtin-modules@3.3.0: {} - - builtin-modules@5.0.0: {} - builtin-status-codes@3.0.0: {} bun-types@1.3.10: @@ -22499,8 +21318,6 @@ snapshots: chalk@5.6.2: {} - change-case@5.4.4: {} - char-regex@1.0.2: {} char-regex@2.0.2: {} @@ -22591,10 +21408,6 @@ snapshots: clean-git-ref@2.0.1: {} - clean-regexp@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - clean-stack@2.2.0: {} cli-cursor@2.1.0: @@ -22694,8 +21507,6 @@ snapshots: array-timsort: 1.0.3 esprima: 4.0.1 - comment-parser@1.4.5: {} - common-path-prefix@3.0.0: {} commondir@1.0.1: {} @@ -22718,10 +21529,6 @@ snapshots: concat-map@0.0.1: {} - confbox@0.1.8: {} - - confbox@0.2.4: {} - connect@3.7.0: dependencies: debug: 2.6.9 @@ -22943,24 +21750,6 @@ snapshots: d3-timer@3.0.1: {} - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - date-fns@4.1.0: {} dayjs@1.11.20: {} @@ -23001,8 +21790,6 @@ snapshots: deep-extend@0.6.0: {} - deep-is@0.1.4: {} - deepmerge@4.3.1: {} default-require-extensions@3.0.1: @@ -23181,10 +21968,6 @@ snapshots: dnssd-advertise@1.1.3: {} - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - doctrine@3.0.0: dependencies: esutils: 2.0.3 @@ -23356,87 +22139,10 @@ snapshots: dependencies: stackframe: 1.3.4 - es-abstract@1.24.1: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.20 - es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-iterator-helpers@1.3.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - math-intrinsics: 1.1.0 - safe-array-concat: 1.1.3 - es-module-lexer@1.7.0: {} es-module-lexer@2.0.0: {} @@ -23452,16 +22158,6 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 - es-shim-unscopables@1.1.0: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.3.0: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - es-toolkit@1.45.1: {} es6-error@4.1.1: {} @@ -23536,323 +22232,15 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.1(eslint@9.39.4(jiti@2.6.1)): - dependencies: - eslint: 9.39.4(jiti@2.6.1) - semver: 7.7.4 - - eslint-config-expo@55.0.0(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-expo: 1.0.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.39.4(jiti@2.6.1)) - globals: 16.5.0 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - eslint-plugin-import-x - - supports-color - - typescript - - eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.6.1)): - dependencies: - eslint: 9.39.4(jiti@2.6.1) - - eslint-import-context@0.1.9(unrs-resolver@1.11.1): - dependencies: - get-tsconfig: 4.13.6 - stable-hash-x: 0.2.0 - optionalDependencies: - unrs-resolver: 1.11.1 - - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 1.22.11 - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - get-tsconfig: 4.13.6 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.15 - unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) - transitivePeerDependencies: - - supports-color - - eslint-plugin-drizzle@0.2.3(eslint@9.39.4(jiti@2.6.1)): - dependencies: - eslint: 9.39.4(jiti@2.6.1) - - eslint-plugin-es-x@7.8.0(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.2 - eslint: 9.39.4(jiti@2.6.1) - eslint-compat-utils: 0.5.1(eslint@9.39.4(jiti@2.6.1)) - - eslint-plugin-expo@1.0.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@typescript-eslint/types': 8.57.0 - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@package-json/types': 0.0.12 - '@typescript-eslint/types': 8.57.0 - comment-parser: 1.4.5 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - eslint-import-context: 0.1.9(unrs-resolver@1.11.1) - is-glob: 4.0.3 - minimatch: 10.2.4 - semver: 7.7.4 - stable-hash-x: 0.2.0 - unrs-resolver: 1.11.1 - optionalDependencies: - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.39.4(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) - hasown: 2.0.2 - is-core-module: 2.16.1 - is-glob: 4.0.3 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-n@17.24.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - enhanced-resolve: 5.20.0 - eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-es-x: 7.8.0(eslint@9.39.4(jiti@2.6.1)) - get-tsconfig: 4.13.6 - globals: 15.15.0 - globrex: 0.1.2 - ignore: 5.3.2 - semver: 7.7.4 - ts-declaration-location: 1.0.7(typescript@5.9.3) - transitivePeerDependencies: - - typescript - - eslint-plugin-oxlint@1.55.0: - dependencies: - jsonc-parser: 3.3.1 - - eslint-plugin-promise@7.2.1(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - eslint: 9.39.4(jiti@2.6.1) - - eslint-plugin-react-hooks@5.2.0(eslint@9.39.4(jiti@2.6.1)): - dependencies: - eslint: 9.39.4(jiti@2.6.1) - - eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.0 - eslint: 9.39.4(jiti@2.6.1) - hermes-parser: 0.25.1 - zod: 4.3.6 - zod-validation-error: 4.0.2(zod@4.3.6) - transitivePeerDependencies: - - supports-color - - eslint-plugin-react-native-globals@0.1.2: {} - - eslint-plugin-react-native@5.0.0(eslint@9.39.4(jiti@2.6.1)): - dependencies: - eslint: 9.39.4(jiti@2.6.1) - eslint-plugin-react-native-globals: 0.1.2 - - eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.6.1)): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.3.1 - eslint: 9.39.4(jiti@2.6.1) - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.5 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.6 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-plugin-sonarjs@4.0.2(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@eslint-community/regexpp': 4.12.2 - builtin-modules: 3.3.0 - bytes: 3.1.2 - eslint: 9.39.4(jiti@2.6.1) - functional-red-black-tree: 1.0.1 - globals: 17.4.0 - jsx-ast-utils-x: 0.1.0 - lodash.merge: 4.6.2 - minimatch: 10.2.4 - scslre: 0.3.0 - semver: 7.7.4 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - - eslint-plugin-tailwindcss@4.0.0-beta.0(tailwindcss@4.2.1): - dependencies: - fast-glob: 3.3.3 - postcss: 8.5.8 - synckit: 0.11.12 - tailwind-api-utils: 1.0.3(tailwindcss@4.2.1) - tailwindcss: 4.2.1 - - eslint-plugin-unicorn@63.0.0(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - change-case: 5.4.4 - ci-info: 4.4.0 - clean-regexp: 1.0.0 - core-js-compat: 3.48.0 - eslint: 9.39.4(jiti@2.6.1) - find-up-simple: 1.0.1 - globals: 16.5.0 - indent-string: 5.0.0 - is-builtin-module: 5.0.0 - jsesc: 3.1.0 - pluralize: 8.0.0 - regexp-tree: 0.1.27 - regjsparser: 0.13.0 - semver: 7.7.4 - strip-indent: 4.1.1 - eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - eslint-visitor-keys@5.0.1: {} - eslint@9.39.4(jiti@2.6.1): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.7 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.14.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.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 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.6.1 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 4.2.1 - esprima@4.0.1: {} - esquery@1.7.0: - dependencies: - estraverse: 5.3.0 - esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -24266,14 +22654,6 @@ snapshots: fast-fifo@1.3.2: {} - 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 @@ -24286,8 +22666,6 @@ snapshots: fast-json-stable-stringify@2.1.0: {} - fast-levenshtein@2.0.6: {} - fast-uri@3.1.0: {} fast-xml-builder@1.1.3: @@ -24326,10 +22704,6 @@ snapshots: fflate@0.8.2: {} - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - filesize@10.1.6: {} filing-cabinet@5.2.0: @@ -24403,8 +22777,6 @@ snapshots: commander: 12.1.0 loglevel: 1.9.2 - find-up-simple@1.0.1: {} - find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -24432,11 +22804,6 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 - flat-cache@4.0.1: - dependencies: - flatted: 3.4.1 - keyv: 4.5.4 - flatted@3.4.1: {} flow-enums-runtime@0.0.6: {} @@ -24521,19 +22888,6 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 - - functional-red-black-tree@1.0.1: {} - - functions-have-names@1.2.3: {} - generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} @@ -24571,12 +22925,6 @@ snapshots: get-stream@6.0.1: {} - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - get-tsconfig@4.13.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -24587,10 +22935,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - glob-to-regexp@0.4.1: {} glob@13.0.6: @@ -24615,21 +22959,6 @@ snapshots: is-windows: 0.2.0 which: 1.3.1 - globals@14.0.0: {} - - globals@15.15.0: {} - - globals@16.5.0: {} - - globals@17.4.0: {} - - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - - globrex@0.1.2: {} - gonzales-pe@4.3.0: dependencies: minimist: 1.2.8 @@ -24651,8 +22980,6 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - has-bigints@1.1.0: {} - has-flag@3.0.0: {} has-flag@4.0.0: {} @@ -24661,10 +22988,6 @@ snapshots: dependencies: es-define-property: 1.0.1 - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -24746,18 +23069,12 @@ snapshots: hermes-compiler@0.14.1: {} - hermes-estree@0.25.1: {} - hermes-estree@0.32.0: {} hermes-estree@0.32.1: {} hermes-estree@0.33.3: {} - hermes-parser@0.25.1: - dependencies: - hermes-estree: 0.25.1 - hermes-parser@0.32.0: dependencies: hermes-estree: 0.32.0 @@ -24911,8 +23228,6 @@ snapshots: indent-string@4.0.0: {} - indent-string@5.0.0: {} - inherits@2.0.4: {} ini@1.3.8: {} @@ -24921,12 +23236,6 @@ snapshots: inline-style-parser@0.2.7: {} - internal-slot@1.1.0: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.1.0 - internmap@2.0.3: {} interpret@3.1.1: {} @@ -24951,62 +23260,20 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-array-buffer@3.0.5: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-arrayish@0.2.1: {} is-arrayish@0.3.4: {} - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-bigint@1.1.0: - dependencies: - has-bigints: 1.1.0 - is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.2.2: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-builtin-module@5.0.0: - dependencies: - builtin-modules: 5.0.0 - - is-bun-module@2.0.0: - dependencies: - semver: 7.7.4 - is-callable@1.2.7: {} is-core-module@2.16.1: dependencies: hasown: 2.0.2 - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - - is-date-object@1.1.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - is-decimal@2.0.1: {} is-docker@2.2.1: {} @@ -25015,10 +23282,6 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.4 - is-fullwidth-code-point@3.0.0: {} is-generator-fn@2.1.0: {} @@ -25046,20 +23309,11 @@ snapshots: is-interactive@1.0.0: {} - is-map@2.0.3: {} - is-nan@1.3.2: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - is-negative-zero@2.0.3: {} - - is-number-object@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - is-number@7.0.0: {} is-obj@1.0.1: {} @@ -25074,35 +23328,18 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.8 - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-regexp@1.0.0: {} - - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.4: - dependencies: - call-bound: 1.0.4 - - is-stream@2.0.1: {} + '@types/estree': 1.0.8 - is-string@1.1.1: + is-regex@1.2.1: dependencies: call-bound: 1.0.4 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 - is-symbol@1.1.1: - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 + is-regexp@1.0.0: {} + + is-stream@2.0.1: {} is-typed-array@1.1.15: dependencies: @@ -25116,17 +23353,6 @@ snapshots: is-url@1.2.4: {} - is-weakmap@2.0.2: {} - - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-weakset@2.0.4: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-windows@0.2.0: {} is-windows@1.0.2: {} @@ -25212,15 +23438,6 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - itty-time@1.0.6: {} javascript-stringify@2.1.0: {} @@ -26034,14 +24251,8 @@ snapshots: json-schema@0.4.0: {} - json-stable-stringify-without-jsonify@1.0.1: {} - json-with-bigint@3.5.7: {} - json5@1.0.2: - dependencies: - minimist: 1.2.8 - json5@2.2.3: {} jsonc-parser@3.3.1: {} @@ -26065,15 +24276,6 @@ snapshots: ms: 2.1.3 semver: 7.7.4 - jsx-ast-utils-x@0.1.0: {} - - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 @@ -26111,15 +24313,28 @@ snapshots: yaml: 2.8.2 zod: 4.3.6 + knip@5.86.0(@types/node@25.5.0)(typescript@5.9.3): + dependencies: + '@nodelib/fs.walk': 1.2.8 + '@types/node': 25.5.0 + fast-glob: 3.3.3 + formatly: 0.3.0 + jiti: 2.6.1 + minimist: 1.2.8 + oxc-resolver: 11.19.1 + picocolors: 1.1.1 + picomatch: 4.0.3 + smol-toml: 1.6.0 + strip-json-comments: 5.0.3 + typescript: 5.9.3 + unbash: 2.2.0 + yaml: 2.8.2 + zod: 4.3.6 + lan-network@0.2.0: {} leven@3.1.0: {} - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 @@ -26282,12 +24497,6 @@ snapshots: loader-utils@3.3.1: {} - local-pkg@1.1.2: - dependencies: - mlly: 1.8.1 - pkg-types: 2.3.0 - quansync: 0.2.11 - locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -26318,8 +24527,6 @@ snapshots: lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: {} - lodash.once@4.1.1: {} lodash.snakecase@4.1.1: {} @@ -27334,13 +25541,6 @@ snapshots: mkdirp@1.0.4: {} - mlly@1.8.1: - dependencies: - acorn: 8.16.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.6.3 - module-definition@6.0.1: dependencies: ast-module-types: 6.0.1 @@ -27451,13 +25651,6 @@ snapshots: node-abort-controller@3.1.1: {} - node-exports-info@1.6.0: - dependencies: - array.prototype.flatmap: 1.3.3 - es-errors: 1.3.0 - object.entries: 1.1.9 - semver: 6.3.1 - node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -27588,33 +25781,6 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 - object.entries@1.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-object-atoms: 1.1.1 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - objectorarray@1.0.5: {} obug@2.1.1: {} @@ -27670,15 +25836,6 @@ snapshots: object-hash: 2.2.0 oidc-token-hash: 5.2.0 - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - ora@3.4.0: dependencies: chalk: 2.4.2 @@ -27704,12 +25861,6 @@ snapshots: os-homedir@1.0.2: {} - own-keys@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - oxc-resolver@11.19.1: optionalDependencies: '@oxc-resolver/binding-android-arm-eabi': 11.19.1 @@ -27757,6 +25908,11 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.40.0 '@oxfmt/binding-win32-x64-msvc': 0.40.0 + oxlint-plugin-react-native@0.2.9(oxlint@1.55.0(oxlint-tsgolint@0.17.1)): + dependencies: + '@oxlint/plugins': 1.56.0 + oxlint: 1.55.0(oxlint-tsgolint@0.17.1) + oxlint-tsgolint@0.17.1: optionalDependencies: '@oxlint-tsgolint/darwin-arm64': 0.17.1 @@ -27990,18 +26146,6 @@ snapshots: dependencies: find-up: 6.3.0 - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.8.1 - pathe: 2.0.3 - - pkg-types@2.3.0: - dependencies: - confbox: 0.2.4 - exsolve: 1.0.8 - pathe: 2.0.3 - playwright-core@1.58.2: {} playwright@1.58.2: @@ -28152,8 +26296,6 @@ snapshots: transitivePeerDependencies: - supports-color - prelude-ls@1.2.1: {} - pretty-error@4.0.0: dependencies: lodash: 4.17.23 @@ -28198,12 +26340,6 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - property-information@7.1.0: {} protobufjs@7.5.4: @@ -28249,8 +26385,6 @@ snapshots: dependencies: side-channel: 1.1.0 - quansync@0.2.11: {} - query-selector-shadow-dom@1.0.1: {} query-string@7.1.3: @@ -28683,21 +26817,6 @@ snapshots: redux@5.0.1: {} - refa@0.12.1: - dependencies: - '@eslint-community/regexpp': 4.12.2 - - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 @@ -28708,22 +26827,8 @@ snapshots: regex-parser@2.3.1: {} - regexp-ast-analysis@0.7.1: - dependencies: - '@eslint-community/regexpp': 4.12.2 - refa: 0.12.1 - regexp-tree@0.1.27: {} - regexp.prototype.flags@1.5.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - regexpu-core@6.4.0: dependencies: regenerate: 1.4.2 @@ -28861,15 +26966,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.6: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.1 - node-exports-info: 1.6.0 - object-keys: 1.1.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@2.0.0: dependencies: onetime: 2.0.1 @@ -28981,25 +27077,12 @@ snapshots: dependencies: tslib: 2.8.1 - safe-array-concat@1.1.3: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} safe-identifier@0.4.2: {} - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - safe-regex-test@1.1.0: dependencies: call-bound: 1.0.4 @@ -29040,12 +27123,6 @@ snapshots: ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.18.0) - scslre@0.3.0: - dependencies: - '@eslint-community/regexpp': 4.12.2 - refa: 0.12.1 - regexp-ast-analysis: 0.7.1 - seedrandom@3.0.5: {} semver@6.3.1: {} @@ -29123,19 +27200,6 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - setimmediate@1.0.5: {} setprototypeof@1.2.0: {} @@ -29348,10 +27412,6 @@ snapshots: sprintf-js@1.0.3: {} - stable-hash-x@0.2.0: {} - - stable-hash@0.0.5: {} - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -29374,11 +27434,6 @@ snapshots: std-env@4.0.0: {} - stop-iteration-iterator@1.1.0: - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - stoppable@1.1.0: {} storybook@9.1.19(vite@8.0.0(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.6.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): @@ -29493,50 +27548,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.1 - - string.prototype.trim@1.2.10: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.1 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - - string.prototype.trimend@1.0.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -29666,13 +27677,6 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tailwind-api-utils@1.0.3(tailwindcss@4.2.1): - dependencies: - enhanced-resolve: 5.20.0 - jiti: 2.6.1 - local-pkg: 1.1.2 - tailwindcss: 4.2.1 - tailwind-merge@3.5.0: {} tailwindcss-animate@1.0.7(tailwindcss@4.2.1): @@ -29805,11 +27809,6 @@ snapshots: dependencies: typescript: 5.9.3 - ts-declaration-location@1.0.7(typescript@5.9.3): - dependencies: - picomatch: 4.0.3 - typescript: 5.9.3 - ts-dedent@2.2.0: {} ts-graphviz@2.1.6: @@ -29870,13 +27869,6 @@ snapshots: tapable: 2.3.0 tsconfig-paths: 4.2.0 - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 @@ -29896,10 +27888,6 @@ snapshots: tw-animate-css@1.4.0: {} - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - type-detect@4.0.8: {} type-fest@0.21.3: {} @@ -29924,48 +27912,10 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.7: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 - typescript-eslint@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.57.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - typescript@5.9.3: {} ufo@1.6.3: {} @@ -29977,13 +27927,6 @@ snapshots: unbash@2.2.0: {} - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - undici-types@6.21.0: {} undici-types@7.18.2: {} @@ -30600,37 +28543,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.2 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.20 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - which-module@2.0.1: {} which-typed-array@1.1.20: @@ -30656,8 +28568,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - word-wrap@1.2.5: {} - wordwrap@1.0.0: {} workerd@1.20250906.0: @@ -30866,10 +28776,6 @@ snapshots: dependencies: zod: 4.3.6 - zod-validation-error@4.0.2(zod@4.3.6): - dependencies: - zod: 4.3.6 - zod@3.22.3: {} zod@3.25.76: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fe5b4a15e26..1ae229bd9f4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,7 +2,6 @@ packages: - packages/db - packages/worker-utils - packages/encryption - - packages/eslint-config - packages/trpc - storybook - cloudflare-deploy-infra/builder @@ -33,8 +32,6 @@ packages: catalog: '@cloudflare/workers-types': ^4.20260313.1 - '@eslint/eslintrc': ^3.3.5 - '@eslint/js': ^9.39.4 '@octokit/auth-app': ^8.2.0 '@tanstack/react-query': ^5.90.21 '@trpc/client': ^11.13.0 @@ -46,13 +43,11 @@ catalog: aws4fetch: ^1.0.20 drizzle-kit: ^0.31.9 drizzle-orm: ^0.45.1 - eslint: ^9.39.4 hono: ^4.12.7 jose: ^6.2.1 jsonwebtoken: ^9.0.3 stripe: ^19.3.0 typescript: ^5.9.3 - typescript-eslint: ^8.57.0 workers-tagged-logger: ^1.0.0 wrangler: ^4.73.0 zod: ^4.3.6 From 7d8d7ef8ae4e2d1c396dbfe273423e9f72c4b2b8 Mon Sep 17 00:00:00 2001 From: Jean du Plessis Date: Wed, 25 Mar 2026 22:48:27 +0200 Subject: [PATCH 2/6] refactor: simplify lint/typecheck scripts and enable tsgo incremental caching - Remove lint:oxlint indirection, simplify per-package lint to direct oxlint call - Drop --incremental false from all tsgo typecheck commands - Add scripts/lint-all.sh: centralized lint across all workspaces - Add scripts/typecheck-all.sh: full & incremental typecheck modes - Update pre-push hook to use centralized scripts - Reformat oxlint-plugin-drizzle.js (double -> single quotes) --- .husky/pre-push | 4 +- cloud-agent-next/package.json | 5 +- cloud-agent-next/wrapper/package.json | 2 +- cloud-agent/package.json | 5 +- cloud-agent/wrapper/package.json | 2 +- cloudflare-ai-attribution/package.json | 5 +- cloudflare-app-builder/package.json | 5 +- cloudflare-auto-fix-infra/package.json | 5 +- cloudflare-auto-triage-infra/package.json | 5 +- cloudflare-code-review-infra/package.json | 5 +- cloudflare-db-proxy/package.json | 5 +- cloudflare-deploy-infra/builder/package.json | 5 +- .../dispatcher/package.json | 5 +- cloudflare-gastown/package.json | 6 +- cloudflare-git-token-service/package.json | 5 +- cloudflare-gmail-push/package.json | 5 +- cloudflare-images-mcp/package.json | 5 +- cloudflare-o11y/package.json | 5 +- .../package.json | 5 +- cloudflare-security-sync/package.json | 5 +- cloudflare-session-ingest/package.json | 5 +- cloudflare-webhook-agent-ingest/package.json | 5 +- kilo-app/package.json | 2 +- kiloclaw/package.json | 5 +- kiloclaw/packages/secret-catalog/package.json | 2 +- oxlint-plugin-drizzle.js | 69 +++++++--------- package.json | 5 +- packages/db/package.json | 5 +- packages/encryption/package.json | 5 +- packages/trpc/package.json | 2 +- packages/worker-utils/package.json | 5 +- scripts/lint-all.sh | 42 ++++++++++ scripts/typecheck-all.sh | 80 +++++++++++++++++++ storybook/package.json | 2 +- 34 files changed, 210 insertions(+), 118 deletions(-) create mode 100755 scripts/lint-all.sh create mode 100755 scripts/typecheck-all.sh diff --git a/.husky/pre-push b/.husky/pre-push index daac5c5ad74..d387b95dad8 100644 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,10 +1,10 @@ pnpm format:check & pid_format=$! -pnpm lint & +scripts/lint-all.sh & pid_lint=$! -pnpm typecheck & +scripts/typecheck-all.sh --changes-only & pid_typecheck=$! failed="" diff --git a/cloud-agent-next/package.json b/cloud-agent-next/package.json index b1a291f66f7..bb3f2307094 100644 --- a/cloud-agent-next/package.json +++ b/cloud-agent-next/package.json @@ -14,8 +14,7 @@ "prestart": "pnpm run build:wrapper", "start": "wrangler dev", "types": "wrangler types", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloud-agent-next/src cloud-agent-next/wrapper/src", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloud-agent-next/src cloud-agent-next/wrapper/src", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "build:wrapper": "bun run --cwd wrapper build", @@ -24,7 +23,7 @@ "test:integration": "vitest run --config vitest.workers.config.ts", "test:integration:watch": "vitest --config vitest.workers.config.ts", "test:all": "vitest run && vitest run --config vitest.workers.config.ts", - "typecheck": "tsgo --noEmit --incremental false && pnpm -C wrapper run typecheck" + "typecheck": "tsgo --noEmit && pnpm -C wrapper run typecheck" }, "dependencies": { "@cloudflare/sandbox": "0.7.13", diff --git a/cloud-agent-next/wrapper/package.json b/cloud-agent-next/wrapper/package.json index 962bc410152..68c62765d7f 100644 --- a/cloud-agent-next/wrapper/package.json +++ b/cloud-agent-next/wrapper/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "build": "bun run build.ts", - "typecheck": "tsgo --noEmit --incremental false" + "typecheck": "tsgo --noEmit" }, "dependencies": { "@kilocode/sdk": "7.0.50" diff --git a/cloud-agent/package.json b/cloud-agent/package.json index 689400c0139..407478dd130 100644 --- a/cloud-agent/package.json +++ b/cloud-agent/package.json @@ -14,8 +14,7 @@ "prestart": "pnpm run build:wrapper", "start": "wrangler dev", "types": "wrangler types", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloud-agent/src cloud-agent/wrapper/src", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloud-agent/src cloud-agent/wrapper/src", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "build:wrapper": "bun run --cwd wrapper build", @@ -24,7 +23,7 @@ "test:integration": "vitest run --config vitest.workers.config.ts", "test:integration:watch": "vitest --config vitest.workers.config.ts", "test:all": "vitest run && vitest run --config vitest.workers.config.ts", - "typecheck": "tsgo --noEmit --incremental false && pnpm -C wrapper run typecheck" + "typecheck": "tsgo --noEmit && pnpm -C wrapper run typecheck" }, "dependencies": { "@cloudflare/sandbox": "0.6.7", diff --git a/cloud-agent/wrapper/package.json b/cloud-agent/wrapper/package.json index f227e3718bb..0213427f093 100644 --- a/cloud-agent/wrapper/package.json +++ b/cloud-agent/wrapper/package.json @@ -4,7 +4,7 @@ "type": "module", "scripts": { "build": "bun run build.ts", - "typecheck": "tsgo --noEmit --incremental false" + "typecheck": "tsgo --noEmit" }, "devDependencies": { "@types/bun": "latest", diff --git a/cloudflare-ai-attribution/package.json b/cloudflare-ai-attribution/package.json index fb4c8df57bb..06803512f2f 100644 --- a/cloudflare-ai-attribution/package.json +++ b/cloudflare-ai-attribution/package.json @@ -6,9 +6,8 @@ "scripts": { "dev": "wrangler dev --env dev", "deploy": "wrangler deploy", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-ai-attribution/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-ai-attribution/src", "test": "jest" }, "keywords": [ diff --git a/cloudflare-app-builder/package.json b/cloudflare-app-builder/package.json index a1a4e666521..3d45d299f27 100644 --- a/cloudflare-app-builder/package.json +++ b/cloudflare-app-builder/package.json @@ -7,9 +7,8 @@ "dev": "wrangler dev", "deploy": "wrangler deploy", "cf-typegen": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-app-builder/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-app-builder/src", "test": "vitest run", "test:git": "tsx src/_integration_tests/test-git-integration.ts", "test:git-head": "tsx src/_integration_tests/test-git-head-and-history.ts", diff --git a/cloudflare-auto-fix-infra/package.json b/cloudflare-auto-fix-infra/package.json index 6c76074a0fa..dea1ef23433 100644 --- a/cloudflare-auto-fix-infra/package.json +++ b/cloudflare-auto-fix-infra/package.json @@ -7,9 +7,8 @@ "deploy": "wrangler deploy", "dev": "wrangler dev", "tail": "wrangler tail", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-auto-fix-infra/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-auto-fix-infra/src" }, "devDependencies": { "@cloudflare/workers-types": "catalog:", diff --git a/cloudflare-auto-triage-infra/package.json b/cloudflare-auto-triage-infra/package.json index d0fa77bd23e..00c192e9892 100644 --- a/cloudflare-auto-triage-infra/package.json +++ b/cloudflare-auto-triage-infra/package.json @@ -7,9 +7,8 @@ "deploy": "wrangler deploy", "dev": "wrangler dev", "tail": "wrangler tail", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-auto-triage-infra/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-auto-triage-infra/src" }, "devDependencies": { "@cloudflare/workers-types": "catalog:", diff --git a/cloudflare-code-review-infra/package.json b/cloudflare-code-review-infra/package.json index b30cd558c60..efb209a8294 100644 --- a/cloudflare-code-review-infra/package.json +++ b/cloudflare-code-review-infra/package.json @@ -7,9 +7,8 @@ "deploy": "wrangler deploy", "dev": "wrangler dev", "tail": "wrangler tail", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-code-review-infra/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-code-review-infra/src" }, "devDependencies": { "@cloudflare/workers-types": "catalog:", diff --git a/cloudflare-db-proxy/package.json b/cloudflare-db-proxy/package.json index bfdf8c6c1fb..271490f764e 100644 --- a/cloudflare-db-proxy/package.json +++ b/cloudflare-db-proxy/package.json @@ -6,9 +6,8 @@ "dev": "wrangler dev", "deploy": "wrangler deploy", "cf-typegen": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-db-proxy/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-db-proxy/src", "test": "jest" }, "dependencies": { diff --git a/cloudflare-deploy-infra/builder/package.json b/cloudflare-deploy-infra/builder/package.json index 1c21de9f751..a3c6192f2ef 100644 --- a/cloudflare-deploy-infra/builder/package.json +++ b/cloudflare-deploy-infra/builder/package.json @@ -11,9 +11,8 @@ "test-deploy": "tsx test-deploy.ts", "deploy:local": "tsx scripts/deploy-local.ts", "types": "wrangler types", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-deploy-infra/builder/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-deploy-infra/builder/src", "sentry:sourcemaps": "_SENTRY_RELEASE=$(sentry-cli releases propose-version) && sentry-cli releases new $_SENTRY_RELEASE --org=kilo-code --project=kilocode-cloudflare-deploy && sentry-cli sourcemaps upload --org=kilo-code --project=kilocode-cloudflare-deploy --release=$_SENTRY_RELEASE --strip-prefix 'dist/..' dist", "postdeploy": "pnpm sentry:sourcemaps" }, diff --git a/cloudflare-deploy-infra/dispatcher/package.json b/cloudflare-deploy-infra/dispatcher/package.json index a952101e88a..d9c4bb11147 100644 --- a/cloudflare-deploy-infra/dispatcher/package.json +++ b/cloudflare-deploy-infra/dispatcher/package.json @@ -6,9 +6,8 @@ "dev": "wrangler dev", "deploy": "wrangler deploy", "cf-typegen": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-deploy-infra/dispatcher/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-deploy-infra/dispatcher/src", "test": "jest" }, "devDependencies": { diff --git a/cloudflare-gastown/package.json b/cloudflare-gastown/package.json index 0fd9edcd971..65a87d5bf93 100644 --- a/cloudflare-gastown/package.json +++ b/cloudflare-gastown/package.json @@ -18,9 +18,9 @@ "test:watch": "vitest", "test:integration": "vitest run --config vitest.workers.config.ts", "test:integration:watch": "vitest --config vitest.workers.config.ts", - "typecheck": "tsgo --noEmit --incremental false", - "build:types": "tsgo -p tsconfig.types.json || true", - "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-gastown/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-gastown/src", + "build:types": "tsgo -p tsconfig.types.json || true" }, "dependencies": { "@cloudflare/containers": "^0.1.0", diff --git a/cloudflare-git-token-service/package.json b/cloudflare-git-token-service/package.json index 87bfe1d1531..831adfa05e3 100644 --- a/cloudflare-git-token-service/package.json +++ b/cloudflare-git-token-service/package.json @@ -6,9 +6,8 @@ "dev": "wrangler dev", "dev:test": "wrangler dev --config wrangler.test.jsonc", "deploy": "wrangler deploy", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-git-token-service/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-git-token-service/src", "types": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts" }, "dependencies": { diff --git a/cloudflare-gmail-push/package.json b/cloudflare-gmail-push/package.json index 79796f95eac..3ab876d2687 100644 --- a/cloudflare-gmail-push/package.json +++ b/cloudflare-gmail-push/package.json @@ -5,9 +5,8 @@ "dev": "wrangler dev", "deploy": "wrangler deploy", "test": "vitest run", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-gmail-push/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-gmail-push/src", "cf-typegen": "wrangler types --env-file /dev/null" }, "dependencies": { diff --git a/cloudflare-images-mcp/package.json b/cloudflare-images-mcp/package.json index 424eb496635..07a3e37f4d3 100644 --- a/cloudflare-images-mcp/package.json +++ b/cloudflare-images-mcp/package.json @@ -6,9 +6,8 @@ "dev": "wrangler dev --env dev", "deploy": "wrangler deploy", "cf-typegen": "wrangler types", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-images-mcp/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-images-mcp/src", "test": "vitest run" }, "dependencies": { diff --git a/cloudflare-o11y/package.json b/cloudflare-o11y/package.json index 1060806f7dd..bcdc8b3bcee 100644 --- a/cloudflare-o11y/package.json +++ b/cloudflare-o11y/package.json @@ -8,9 +8,8 @@ "start": "wrangler dev", "test": "vitest", "cf-typegen": "wrangler types", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-o11y/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-o11y/src" }, "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.12.21", diff --git a/cloudflare-security-auto-analysis/package.json b/cloudflare-security-auto-analysis/package.json index c86e482fe04..e0a8ab0e679 100644 --- a/cloudflare-security-auto-analysis/package.json +++ b/cloudflare-security-auto-analysis/package.json @@ -6,9 +6,8 @@ "deploy:prod": "wrangler deploy", "deploy:dev": "wrangler deploy --env dev", "dev": "wrangler dev --env dev", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-security-auto-analysis/src", - "typecheck": "tsgo --noEmit --incremental false", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-security-auto-analysis/src", "types": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts", "test": "vitest run" }, diff --git a/cloudflare-security-sync/package.json b/cloudflare-security-sync/package.json index 1da4d986d3f..f6fb9eaaece 100644 --- a/cloudflare-security-sync/package.json +++ b/cloudflare-security-sync/package.json @@ -6,9 +6,8 @@ "dev": "wrangler dev --env dev", "deploy:prod": "wrangler deploy", "deploy:dev": "wrangler deploy --env dev", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-security-sync/src", - "typecheck": "tsgo --noEmit --incremental false", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-security-sync/src", "types": "wrangler types --env-interface CloudflareEnv worker-configuration.d.ts" }, "dependencies": { diff --git a/cloudflare-session-ingest/package.json b/cloudflare-session-ingest/package.json index eacb0e9ddae..9cae88dd8a1 100644 --- a/cloudflare-session-ingest/package.json +++ b/cloudflare-session-ingest/package.json @@ -9,9 +9,8 @@ "test:watch": "vitest", "test:integration": "vitest run --config vitest.workers.config.ts", "test:integration:watch": "vitest --config vitest.workers.config.ts", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-session-ingest/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-session-ingest/src" }, "dependencies": { "@kilocode/db": "workspace:*", diff --git a/cloudflare-webhook-agent-ingest/package.json b/cloudflare-webhook-agent-ingest/package.json index 81e4dad1658..c41859a6478 100644 --- a/cloudflare-webhook-agent-ingest/package.json +++ b/cloudflare-webhook-agent-ingest/package.json @@ -11,15 +11,14 @@ "dev": "wrangler dev --env dev", "start": "wrangler dev --env dev", "types": "wrangler types", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-webhook-agent-ingest/src", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json cloudflare-webhook-agent-ingest/src", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "test": "vitest run", "test:watch": "vitest", "test:integration": "vitest run --config vitest.workers.config.ts", "test:integration:watch": "vitest --config vitest.workers.config.ts", - "typecheck": "tsgo --noEmit --incremental false" + "typecheck": "tsgo --noEmit" }, "dependencies": { "@kilocode/db": "workspace:*", diff --git a/kilo-app/package.json b/kilo-app/package.json index 8384d2af9dd..4790880031d 100644 --- a/kilo-app/package.json +++ b/kilo-app/package.json @@ -9,7 +9,7 @@ "build": "eas build --profile development", "build:ios": "eas build -p ios --profile development", "build:android": "eas build -p android --profile development", - "typecheck": "tsgo --noEmit --incremental false", + "typecheck": "tsgo --noEmit", "lint": "pnpm -w exec oxlint --config kilo-app/.oxlintrc.json kilo-app/src", "format": "oxfmt src", "format:check": "oxfmt --list-different src", diff --git a/kiloclaw/package.json b/kiloclaw/package.json index 9d478250f5e..f0260ec4fcf 100644 --- a/kiloclaw/package.json +++ b/kiloclaw/package.json @@ -11,9 +11,8 @@ "start": "wrangler dev", "dev": "wrangler dev", "types": "wrangler types", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json kiloclaw/src", + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json kiloclaw/src", "format": "oxfmt src", "format:check": "oxfmt --list-different src", "test": "vitest run", diff --git a/kiloclaw/packages/secret-catalog/package.json b/kiloclaw/packages/secret-catalog/package.json index 73bffac8d09..0ae38c6a33c 100644 --- a/kiloclaw/packages/secret-catalog/package.json +++ b/kiloclaw/packages/secret-catalog/package.json @@ -10,7 +10,7 @@ ".": "./src/index.ts" }, "scripts": { - "typecheck": "tsgo --noEmit --incremental false", + "typecheck": "tsgo --noEmit", "test": "vitest run", "test:watch": "vitest" }, diff --git a/oxlint-plugin-drizzle.js b/oxlint-plugin-drizzle.js index 6d4b1a8ce92..0142e3cd27c 100644 --- a/oxlint-plugin-drizzle.js +++ b/oxlint-plugin-drizzle.js @@ -1,7 +1,7 @@ // Oxlint JS plugin: drizzle enforce-delete-with-where / enforce-update-with-where. function isDrizzleObjName(name, drizzleObjectName) { - if (typeof drizzleObjectName === "string") return name === drizzleObjectName; + if (typeof drizzleObjectName === 'string') return name === drizzleObjectName; if (Array.isArray(drizzleObjectName)) { return drizzleObjectName.length === 0 || drizzleObjectName.includes(name); } @@ -9,12 +9,12 @@ function isDrizzleObjName(name, drizzleObjectName) { } function resolveMemberPath(node) { - if (node.type === "Identifier") return node.name; - if (node.type === "MemberExpression" && node.property.type === "Identifier") { + if (node.type === 'Identifier') return node.name; + if (node.type === 'MemberExpression' && node.property.type === 'Identifier') { const objectPath = resolveMemberPath(node.object); return objectPath ? `${objectPath}.${node.property.name}` : null; } - if (node.type === "ThisExpression") return "this"; + if (node.type === 'ThisExpression') return 'this'; return null; } @@ -25,7 +25,7 @@ function isDrizzleObj(node, drizzleObjectName) { return true; } // Also check the callee for patterns like getDb().delete(...) - if (node.object.type === "CallExpression") { + if (node.object.type === 'CallExpression') { const calleePath = resolveMemberPath(node.object.callee); if (calleePath && isDrizzleObjName(calleePath, drizzleObjectName)) { return true; @@ -38,16 +38,16 @@ function hasWhereInChain(node) { let current = node.parent; while (current) { if ( - current.type === "MemberExpression" && - current.property.type === "Identifier" && - current.property.name === "where" + current.type === 'MemberExpression' && + current.property.type === 'Identifier' && + current.property.name === 'where' ) { return true; } if ( - current.type !== "CallExpression" && - current.type !== "MemberExpression" && - current.type !== "AwaitExpression" + current.type !== 'CallExpression' && + current.type !== 'MemberExpression' && + current.type !== 'AwaitExpression' ) { break; } @@ -58,36 +58,36 @@ function hasWhereInChain(node) { function resolveMemberExpressionPath(node) { let objectExpression = node.object; - let fullName = ""; - const addToFullName = (name) => { - const prefix = fullName ? "." : ""; + let fullName = ''; + const addToFullName = name => { + const prefix = fullName ? '.' : ''; fullName = `${name}${prefix}${fullName}`; }; while (objectExpression) { - if (objectExpression.type === "MemberExpression") { - if (objectExpression.property.type === "Identifier") { + if (objectExpression.type === 'MemberExpression') { + if (objectExpression.property.type === 'Identifier') { addToFullName(objectExpression.property.name); } objectExpression = objectExpression.object; } else if ( - objectExpression.type === "CallExpression" && - objectExpression.callee.type === "Identifier" + objectExpression.type === 'CallExpression' && + objectExpression.callee.type === 'Identifier' ) { addToFullName(`${objectExpression.callee.name}(...)`); break; } else if ( - objectExpression.type === "CallExpression" && - objectExpression.callee.type === "MemberExpression" + objectExpression.type === 'CallExpression' && + objectExpression.callee.type === 'MemberExpression' ) { - if (objectExpression.callee.property.type === "Identifier") { + if (objectExpression.callee.property.type === 'Identifier') { addToFullName(`${objectExpression.callee.property.name}(...)`); } objectExpression = objectExpression.callee.object; - } else if (objectExpression.type === "Identifier") { + } else if (objectExpression.type === 'Identifier') { addToFullName(objectExpression.name); break; - } else if (objectExpression.type === "ThisExpression") { - addToFullName("this"); + } else if (objectExpression.type === 'ThisExpression') { + addToFullName('this'); break; } else { break; @@ -99,27 +99,26 @@ function resolveMemberExpressionPath(node) { function createRule(method, messageId) { return { meta: { - type: "problem", + type: 'problem', messages: { [messageId]: `Without \`.where(...)\` you will ${method} all the rows in a table. Use \`{{ drizzleObjName }}.${method}(...).where(...)\` instead.`, }, schema: [ { - type: "object", + type: 'object', properties: { - drizzleObjectName: { type: ["string", "array"] }, + drizzleObjectName: { type: ['string', 'array'] }, }, additionalProperties: false, }, ], }, create(context) { - const drizzleObjectName = - (context.options[0] && context.options[0].drizzleObjectName) || []; + const drizzleObjectName = (context.options[0] && context.options[0].drizzleObjectName) || []; return { MemberExpression(node) { if ( - node.property.type === "Identifier" && + node.property.type === 'Identifier' && node.property.name === method && isDrizzleObj(node, drizzleObjectName) && !hasWhereInChain(node) @@ -138,13 +137,7 @@ function createRule(method, messageId) { module.exports = { rules: { - "enforce-delete-with-where": createRule( - "delete", - "enforceDeleteWithWhere", - ), - "enforce-update-with-where": createRule( - "update", - "enforceUpdateWithWhere", - ), + 'enforce-delete-with-where': createRule('delete', 'enforceDeleteWithWhere'), + 'enforce-update-with-where': createRule('update', 'enforceUpdateWithWhere'), }, }; diff --git a/package.json b/package.json index 6ca21f18e94..af58838199d 100644 --- a/package.json +++ b/package.json @@ -11,13 +11,12 @@ "build": "next build", "start": "next start", "stripe": "stripe listen --forward-to http://localhost:3000/api/stripe/webhook", - "lint": "pnpm run lint:oxlint && pnpm -r --filter '!kilocode-backend' --filter '!storybook' run lint", - "lint:oxlint": "oxlint --config .oxlintrc.json src", + "lint": "oxlint --config .oxlintrc.json src", "format": "oxfmt .", "format:check": "oxfmt --list-different .", "format:changed": "git diff --name-only $(git merge-base origin/main HEAD) --diff-filter=ACMR -- '**/*.js' '**/*.jsx' '**/*.ts' '**/*.tsx' '**/*.json' '**/*.css' '**/*.md' | xargs -r oxfmt --no-error-on-unmatched-pattern", "test": "NODE_ENV=test jest", - "typecheck": "pnpm --filter @kilocode/trpc run build && tsgo --noEmit --incremental false && pnpm -r --filter '!kilocode-backend' --filter '!@kilocode/trpc' run typecheck", + "typecheck": "pnpm --filter @kilocode/trpc run build && tsgo --noEmit && pnpm -r --filter '!kilocode-backend' --filter '!@kilocode/trpc' run typecheck", "dependency-cycle-check": "madge --circular --warning --extensions ts,tsx --ts-config tsconfig.json --basedir . src", "validate": "pnpm run typecheck && pnpm run lint && pnpm run format:changed && pnpm run test && pnpm run dependency-cycle-check", "prepare": "husky", diff --git a/packages/db/package.json b/packages/db/package.json index 0301f54ac3c..8bd4999950e 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -4,9 +4,8 @@ "private": true, "type": "module", "scripts": { - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/db/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json packages/db/src" }, "exports": { ".": "./src/index.ts", diff --git a/packages/encryption/package.json b/packages/encryption/package.json index 28284ad829c..2ddb840e85b 100644 --- a/packages/encryption/package.json +++ b/packages/encryption/package.json @@ -9,9 +9,8 @@ "scripts": { "test": "vitest run", "test:watch": "vitest", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/encryption/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json packages/encryption/src" }, "devDependencies": { "@types/node": "^22.19.15", diff --git a/packages/trpc/package.json b/packages/trpc/package.json index ab126d3fc10..3077dd08304 100644 --- a/packages/trpc/package.json +++ b/packages/trpc/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "build": "tsc -p tsconfig.json && rollup -c rollup.config.mjs", - "typecheck": "tsgo --noEmit --incremental false" + "typecheck": "tsgo --noEmit" }, "exports": { ".": { diff --git a/packages/worker-utils/package.json b/packages/worker-utils/package.json index df64c04656e..f6ed3063454 100644 --- a/packages/worker-utils/package.json +++ b/packages/worker-utils/package.json @@ -9,9 +9,8 @@ "scripts": { "test": "vitest run", "test:watch": "vitest", - "typecheck": "tsgo --noEmit --incremental false", - "lint": "pnpm run lint:oxlint", - "lint:oxlint": "pnpm -w exec oxlint --config .oxlintrc.json packages/worker-utils/src" + "typecheck": "tsgo --noEmit", + "lint": "pnpm -w exec oxlint --config .oxlintrc.json packages/worker-utils/src" }, "dependencies": { "aws4fetch": "catalog:", diff --git a/scripts/lint-all.sh b/scripts/lint-all.sh new file mode 100755 index 00000000000..8a620449187 --- /dev/null +++ b/scripts/lint-all.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Build src paths from pnpm-workspace.yaml. Each workspace with a src/ dir +# gets linted. kilo-app uses its own config; everything else shares the root. + +PATH="node_modules/.bin:$PATH" + +lint_dirs=(src) +kilo_app_lint_dirs=() + +# Parse workspace entries: lines matching " - " under the "packages:" key. +# Stop when we hit a non-indented, non-comment line that isn't a list item. +in_packages=false +while IFS= read -r line; do + if [[ "$line" == "packages:" ]]; then + in_packages=true + continue + fi + if $in_packages; then + # Stop at next top-level key (any non-blank, non-comment line that doesn't start with whitespace) + if [[ -n "$line" && ! "$line" =~ ^[[:space:]] && ! "$line" =~ ^# ]]; then + break + fi + if [[ "$line" =~ ^[[:space:]]*-[[:space:]]+(.*) ]]; then + pkg="${BASH_REMATCH[1]}" + if [ -d "$pkg/src" ]; then + if [[ "$pkg" == kilo-app ]]; then + kilo_app_lint_dirs+=("$pkg/src") + else + lint_dirs+=("$pkg/src") + fi + fi + fi + fi +done < pnpm-workspace.yaml + +oxlint --config .oxlintrc.json "${lint_dirs[@]}" + +if [ ${#kilo_app_lint_dirs[@]} -gt 0 ]; then + oxlint --config kilo-app/.oxlintrc.json "${kilo_app_lint_dirs[@]}" +fi diff --git a/scripts/typecheck-all.sh b/scripts/typecheck-all.sh new file mode 100755 index 00000000000..4dedbec4f64 --- /dev/null +++ b/scripts/typecheck-all.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Typecheck all workspace packages. +# +# Usage: +# scripts/typecheck-all.sh # full (all workspace packages) +# scripts/typecheck-all.sh --changes-only # incremental (changed packages only) + +PATH="node_modules/.bin:$PATH" + +changes_only=false +case "${1:-}" in + --changes-only) changes_only=true ;; + "") ;; + *) echo "Unknown option: $1" >&2; exit 1 ;; +esac + +base="" +if $changes_only; then + base=$(git merge-base origin/main HEAD 2>/dev/null || true) + if [ -z "$base" ]; then + echo "[typecheck] no merge base found, running full typecheck" + changes_only=false + fi +fi + +# 1. Build trpc (skip if --changes-only and source unchanged) +if $changes_only; then + trpc_changed=$(git diff --name-only "$base" -- 'packages/trpc/src/**' 'packages/trpc/tsconfig.json' 'packages/trpc/rollup.config.mjs' 'packages/trpc/package.json' | head -1 || true) + if [ -n "$trpc_changed" ]; then + echo "[typecheck] trpc source changed, rebuilding" + pnpm --filter @kilocode/trpc run build + else + echo "[typecheck] trpc source unchanged, skipping build" + fi +else + pnpm --filter @kilocode/trpc run build +fi + +# 2. Root typecheck (always — it's fast with incremental tsgo) +tsgo --noEmit + +# 3. Workspace typecheck +if ! $changes_only; then + echo "[typecheck] checking all workspace packages" + pnpm -r --filter '!kilocode-backend' --filter '!@kilocode/trpc' run typecheck + exit 0 +fi + +# Incremental: find workspace packages with TS changes and typecheck only those +changed_dirs=$(git diff --name-only "$base" -- '*.ts' '*.tsx' | \ + { grep -v '^src/' || true; } | \ + sed 's|/src/.*||; s|/[^/]*\.[^/]*$||' | \ + sort -u) + +if [ -z "$changed_dirs" ]; then + echo "[typecheck] no workspace TS changes, skipping workspace typecheck" + exit 0 +fi + +# Map directories to pnpm package names and include dependents +pnpm_filters=() +while IFS= read -r dir; do + [ -z "$dir" ] && continue + [ -f "$dir/package.json" ] || continue + name=$(node -e "console.log(require('./$dir/package.json').name || '')" 2>/dev/null) + [ -z "$name" ] && continue + [[ "$name" == "kilocode-backend" ]] && continue + [[ "$name" == "@kilocode/trpc" ]] && continue + pnpm_filters+=(--filter "$name...") +done <<< "$changed_dirs" + +if [ ${#pnpm_filters[@]} -eq 0 ]; then + echo "[typecheck] no matching workspace packages, skipping workspace typecheck" + exit 0 +fi + +echo "[typecheck] checking affected packages: ${pnpm_filters[*]}" +pnpm -r "${pnpm_filters[@]}" --filter '!kilocode-backend' --filter '!@kilocode/trpc' run typecheck diff --git a/storybook/package.json b/storybook/package.json index 243d8d14e4e..c5ef9c2f62e 100644 --- a/storybook/package.json +++ b/storybook/package.json @@ -8,7 +8,7 @@ "preview": "storybook preview", "chromatic": "chromatic --exit-zero-on-changes", "generate-screenshot-stories": "node scripts/generate-playwright-screenshot-stories.js", - "typecheck": "tsgo --noEmit --incremental false", + "typecheck": "tsgo --noEmit", "clean": "rimraf storybook-static .turbo stories/generated public/screenshots" }, "dependencies": { From 57fd611764d0398af06eb15828caa1aec77e74c9 Mon Sep 17 00:00:00 2001 From: Jean du Plessis Date: Wed, 25 Mar 2026 22:50:11 +0200 Subject: [PATCH 3/6] chore: clean up stale ESLint references - Remove ESLint extension and settings from .vscode/ - Remove ESLint package ignores from dependabot.yml - Remove per-workspace lint steps from CI (lint scripts removed in prior commit) - Update kiloclaw docs to reference oxlint instead of eslint - Remove dead eslint-disable comments from tests, configs, and source - Formatting cleanup for oxlint configs - Remove unused COMPANY_TYPES import --- .dependency-cruiser.js | 2 +- .github/dependabot.yml | 7 +------ .github/workflows/ci.yml | 12 ------------ .oxlintrc.json | 14 +++----------- .vscode/extensions.json | 7 +------ .vscode/settings.json | 4 ---- .../builder/scripts/deploy-local.ts | 4 ---- jest.config.ts | 1 - kilo-app/.oxlintrc.json | 4 +--- kiloclaw/DEVELOPMENT.md | 3 +-- kiloclaw/README.md | 2 +- postcss.config.mjs | 1 - .../[findingId]/route.test.ts | 2 -- src/lib/auth/verify-turnstile-jwt.test.ts | 1 - src/lib/autoTopUp.test.ts | 4 ---- src/lib/kilo-pass/stripe-handlers-utils.test.ts | 2 -- src/lib/organizations/organization-usage.test.ts | 1 - src/lib/r2/cli-sessions.test.ts | 1 - src/lib/security-agent/router/shared-handlers.ts | 2 +- src/lib/stripe-3ds.test.ts | 2 -- src/tests/profile-balance.test.ts | 1 - storybook/src/mockData/providers.ts | 1 - 22 files changed, 10 insertions(+), 68 deletions(-) diff --git a/.dependency-cruiser.js b/.dependency-cruiser.js index 5aa444aeb93..13ba1339595 100644 --- a/.dependency-cruiser.js +++ b/.dependency-cruiser.js @@ -18,7 +18,7 @@ module.exports = { "This is an orphan module - it's likely not used (anymore?). Either use it or " + "remove it. If it's logical this module is an orphan (i.e. it's a config file), " + 'add an exception for it in your dependency-cruiser configuration. By default ' + - 'this rule does not scrutinize dot-files (e.g. .eslintrc.js), TypeScript declaration ' + + 'this rule does not scrutinize dot-files (e.g. .oxlintrc.json), TypeScript declaration ' + 'files (.d.ts), tsconfig.json and some of the babel and webpack configs.', severity: 'warn', from: { diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f2e0055b152..3d680c70474 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -24,12 +24,7 @@ updates: - dependency-name: '@next/third-parties' # Stay on Next.js v15 for now versions: ['>=16.0.0'] - - dependency-name: '@next/eslint-plugin-next' - # Stay on Next.js v15 for now - versions: ['>=16.0.0'] - - dependency-name: 'eslint-config-next' - # Stay on Next.js v15 for now - versions: ['>=16.0.0'] + groups: npm-dependencies: # Group all npm dependencies together diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 149f01762a9..3ff54d83d0c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -309,9 +309,6 @@ jobs: - name: Typecheck (cloud-agent) run: pnpm --filter cloud-agent typecheck - - name: Lint (cloud-agent) - run: pnpm --filter cloud-agent lint - - name: Run cloud-agent tests run: pnpm --filter cloud-agent test:all @@ -352,9 +349,6 @@ jobs: - name: Typecheck (cloud-agent-next) run: pnpm --filter cloud-agent-next typecheck - - name: Lint (cloud-agent-next) - run: pnpm --filter cloud-agent-next lint - - name: Run cloud-agent-next tests run: pnpm --filter cloud-agent-next test:all @@ -385,9 +379,6 @@ jobs: - name: Typecheck (webhook-agent-ingest) run: pnpm --filter cloudflare-webhook-agent-ingest typecheck - - name: Lint (webhook-agent-ingest) - run: pnpm --filter cloudflare-webhook-agent-ingest lint - - name: Run webhook-agent-ingest tests run: pnpm --filter cloudflare-webhook-agent-ingest test @@ -448,9 +439,6 @@ jobs: - name: Typecheck (kiloclaw) run: pnpm --filter kiloclaw typecheck - - name: Lint (kiloclaw) - run: pnpm --filter kiloclaw lint - - name: Run kiloclaw tests run: pnpm --filter kiloclaw test diff --git a/.oxlintrc.json b/.oxlintrc.json index f558a7a7572..30864fea410 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,9 +1,7 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", "plugins": ["oxc", "typescript", "unicorn", "nextjs", "import"], - "jsPlugins": [ - { "name": "drizzle", "specifier": "./oxlint-plugin-drizzle.js" } - ], + "jsPlugins": [{ "name": "drizzle", "specifier": "./oxlint-plugin-drizzle.js" }], "options": { "typeAware": true }, @@ -120,14 +118,8 @@ "@next/next/no-duplicate-head": "error", "@next/next/no-head-import-in-document": "error", "@next/next/no-script-component-in-head": "error", - "drizzle/enforce-delete-with-where": [ - "error", - { "drizzleObjectName": ["db", "ctx.db"] } - ], - "drizzle/enforce-update-with-where": [ - "error", - { "drizzleObjectName": ["db", "ctx.db"] } - ] + "drizzle/enforce-delete-with-where": ["error", { "drizzleObjectName": ["db", "ctx.db"] }], + "drizzle/enforce-update-with-where": ["error", { "drizzleObjectName": ["db", "ctx.db"] }] }, "overrides": [ { diff --git a/.vscode/extensions.json b/.vscode/extensions.json index e4b429651dd..583500f7d74 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,3 @@ { - "recommendations": [ - "dbaeumer.vscode-eslint", - "oxc.oxc-vscode", - "orta.vscode-jest", - "bradlc.vscode-tailwindcss" - ] + "recommendations": ["oxc.oxc-vscode", "orta.vscode-jest", "bradlc.vscode-tailwindcss"] } diff --git a/.vscode/settings.json b/.vscode/settings.json index b077f39a009..8cff204f3ae 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,4 @@ { - "eslint.codeActionsOnSave.mode": "all", - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" - }, "typescript.preferences.importModuleSpecifier": "non-relative", "editor.defaultFormatter": "oxc.oxc-vscode", "editor.formatOnSave": true, diff --git a/cloudflare-deploy-infra/builder/scripts/deploy-local.ts b/cloudflare-deploy-infra/builder/scripts/deploy-local.ts index 8b4860f3deb..d869083d1fc 100644 --- a/cloudflare-deploy-infra/builder/scripts/deploy-local.ts +++ b/cloudflare-deploy-infra/builder/scripts/deploy-local.ts @@ -58,10 +58,8 @@ function loadEnvFile(): Record { const envFile = loadEnvFile(); -/* eslint-disable n/no-process-env */ const BUILDER_URL = process.env['BUILDER_URL'] || 'http://localhost:8787'; const BUILDER_AUTH_TOKEN = process.env['BACKEND_AUTH_TOKEN'] || envFile['BACKEND_AUTH_TOKEN']; -/* eslint-enable n/no-process-env */ const POLL_INTERVAL = 2000; // ms async function sleep(ms: number): Promise { @@ -199,9 +197,7 @@ async function main() { try { // On macOS, set COPYFILE_DISABLE=1 to prevent tar from copying resource fork files - /* eslint-disable n/no-process-env */ const tarEnv = { ...process.env, COPYFILE_DISABLE: '1' }; - /* eslint-enable n/no-process-env */ execSync(`tar -czf "${archivePath}" -C "${directory}" ${excludeFlags} .`, { stdio: 'pipe', env: tarEnv, diff --git a/jest.config.ts b/jest.config.ts index 3fe6cce8c0d..9ac6b0c867b 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -1,6 +1,5 @@ /** @jest-config-loader esbuild-register */ -/* eslint-disable n/no-process-env */ import type { Config } from 'jest'; const config: Config = { diff --git a/kilo-app/.oxlintrc.json b/kilo-app/.oxlintrc.json index 50dbcaa7468..53f1e969d3e 100644 --- a/kilo-app/.oxlintrc.json +++ b/kilo-app/.oxlintrc.json @@ -1,9 +1,7 @@ { "$schema": "../node_modules/oxlint/configuration_schema.json", "plugins": ["oxc", "typescript", "unicorn", "react", "import", "promise"], - "jsPlugins": [ - { "name": "react-native", "specifier": "oxlint-plugin-react-native" } - ], + "jsPlugins": [{ "name": "react-native", "specifier": "oxlint-plugin-react-native" }], "options": { "typeAware": true }, diff --git a/kiloclaw/DEVELOPMENT.md b/kiloclaw/DEVELOPMENT.md index 38f80a54a26..82ed2eaeced 100644 --- a/kiloclaw/DEVELOPMENT.md +++ b/kiloclaw/DEVELOPMENT.md @@ -164,8 +164,7 @@ If you see either, check: pnpm start # wrangler dev (local development) pnpm run dev # alias for wrangler dev pnpm typecheck # tsgo --noEmit -pnpm lint # eslint -pnpm lint:fix # eslint --fix +pnpm lint # oxlint pnpm format # oxfmt pnpm format:check # oxfmt --list-different pnpm test # vitest run diff --git a/kiloclaw/README.md b/kiloclaw/README.md index d5eb1b0e804..9587c25d149 100644 --- a/kiloclaw/README.md +++ b/kiloclaw/README.md @@ -67,7 +67,7 @@ This prevents orphaning resources on transient Fly API errors. ```bash pnpm typecheck # type checking via tsgo -pnpm lint # eslint +pnpm lint # oxlint pnpm test # vitest pnpm format # oxfmt pnpm start # wrangler dev diff --git a/postcss.config.mjs b/postcss.config.mjs index 1608c378948..a34a3d560dc 100644 --- a/postcss.config.mjs +++ b/postcss.config.mjs @@ -1,4 +1,3 @@ -// eslint-disable-next-line import/no-anonymous-default-export export default { plugins: { '@tailwindcss/postcss': {}, diff --git a/src/app/api/internal/security-analysis-callback/[findingId]/route.test.ts b/src/app/api/internal/security-analysis-callback/[findingId]/route.test.ts index 194adebdaac..981a6cf5dae 100644 --- a/src/app/api/internal/security-analysis-callback/[findingId]/route.test.ts +++ b/src/app/api/internal/security-analysis-callback/[findingId]/route.test.ts @@ -44,7 +44,6 @@ let afterPromises: Promise[] = []; jest.mock('next/server', () => { return { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion ...(jest.requireActual('next/server') as Record), after: (fn: () => Promise) => { afterPromises.push(fn()); @@ -107,7 +106,6 @@ jest.mock('@/lib/drizzle', () => { const chain = { from: jest.fn().mockReturnThis(), where: jest.fn().mockReturnThis(), - // eslint-disable-next-line @typescript-eslint/no-unsafe-return limit: jest.fn(() => mockDbSelect()), }; return { diff --git a/src/lib/auth/verify-turnstile-jwt.test.ts b/src/lib/auth/verify-turnstile-jwt.test.ts index 71e22dec736..03f73e0b981 100644 --- a/src/lib/auth/verify-turnstile-jwt.test.ts +++ b/src/lib/auth/verify-turnstile-jwt.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unsafe-return */ import { describe, it, expect, beforeEach } from '@jest/globals'; import { verifyTurnstileJWT } from './verify-turnstile-jwt'; import jwt from 'jsonwebtoken'; diff --git a/src/lib/autoTopUp.test.ts b/src/lib/autoTopUp.test.ts index 65264528841..4ca9424f23c 100644 --- a/src/lib/autoTopUp.test.ts +++ b/src/lib/autoTopUp.test.ts @@ -562,7 +562,6 @@ describe('maybePerformAutoTopUp with Kilo Pass', () => { await maybePerformAutoTopUp(user); - // eslint-disable-next-line @typescript-eslint/unbound-method expect(client.invoices.create).not.toHaveBeenCalled(); }); @@ -644,7 +643,6 @@ describe('maybePerformAutoTopUp with Kilo Pass', () => { await maybePerformAutoTopUp(user); - // eslint-disable-next-line @typescript-eslint/unbound-method expect(client.invoices.create).toHaveBeenCalledTimes(1); }); }); @@ -680,9 +678,7 @@ describe('invoice metadata includes traceId', () => { const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; - // eslint-disable-next-line @typescript-eslint/unbound-method expect(client.invoices.create).toHaveBeenCalledTimes(1); - // eslint-disable-next-line @typescript-eslint/unbound-method expect(client.invoices.create).toHaveBeenCalledWith( expect.objectContaining({ metadata: expect.objectContaining({ diff --git a/src/lib/kilo-pass/stripe-handlers-utils.test.ts b/src/lib/kilo-pass/stripe-handlers-utils.test.ts index 753b486df5a..d7b0205b08d 100644 --- a/src/lib/kilo-pass/stripe-handlers-utils.test.ts +++ b/src/lib/kilo-pass/stripe-handlers-utils.test.ts @@ -265,7 +265,6 @@ describe('getInvoiceSubscription', () => { // Should return the freshly fetched subscription, not the embedded one expect(result).toBe(freshSubscription); expect(result?.status).toBe('canceled'); - // eslint-disable-next-line @typescript-eslint/unbound-method expect(mockStripe.subscriptions.retrieve).toHaveBeenCalledWith('sub_123'); }); @@ -292,7 +291,6 @@ describe('getInvoiceSubscription', () => { const result = await getInvoiceSubscription({ invoice, stripe: mockStripe }); expect(result).toBe(subscriptionObject); - // eslint-disable-next-line @typescript-eslint/unbound-method expect(mockStripe.subscriptions.retrieve).toHaveBeenCalledWith('sub_123'); }); }); diff --git a/src/lib/organizations/organization-usage.test.ts b/src/lib/organizations/organization-usage.test.ts index fe4a34e03b4..393cdf8fec3 100644 --- a/src/lib/organizations/organization-usage.test.ts +++ b/src/lib/organizations/organization-usage.test.ts @@ -19,7 +19,6 @@ import { createOrganizationUsage } from '@/tests/helpers/microdollar-usage.helpe // Mock next/server's after function which requires request context jest.mock('next/server', () => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return return { ...jest.requireActual('next/server'), after: jest.fn((fn: () => Promise) => { diff --git a/src/lib/r2/cli-sessions.test.ts b/src/lib/r2/cli-sessions.test.ts index fccfbe21b7b..8acf04d8123 100644 --- a/src/lib/r2/cli-sessions.test.ts +++ b/src/lib/r2/cli-sessions.test.ts @@ -40,7 +40,6 @@ import { import { r2Client } from './client'; import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; -// eslint-disable-next-line @typescript-eslint/unbound-method const mockSend = r2Client.send as jest.Mock; const mockGetSignedUrl = getSignedUrl as jest.Mock; diff --git a/src/lib/security-agent/router/shared-handlers.ts b/src/lib/security-agent/router/shared-handlers.ts index a1cc870fc60..bfcc809032d 100644 --- a/src/lib/security-agent/router/shared-handlers.ts +++ b/src/lib/security-agent/router/shared-handlers.ts @@ -112,7 +112,7 @@ export function createSecurityAgentHandlers(deps: SecurityAgentDeps // router the middleware always injects `{ organizationId }`. The cast is // the single unavoidable type-unsafe bridge between tRPC's `unknown` input // and our generic callbacks. - // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any const toExtra = (input: unknown): TExtra => (input ?? {}) as any; return { diff --git a/src/lib/stripe-3ds.test.ts b/src/lib/stripe-3ds.test.ts index 09e5b740fac..5cdc80c6b72 100644 --- a/src/lib/stripe-3ds.test.ts +++ b/src/lib/stripe-3ds.test.ts @@ -23,9 +23,7 @@ import { handleUpdateSeatCount } from './stripe'; import { client } from '@/lib/stripe-client'; // Get references to the mocked functions after import -// eslint-disable-next-line @typescript-eslint/unbound-method const mockSubscriptionsRetrieve = client.subscriptions.retrieve as jest.Mock; -// eslint-disable-next-line @typescript-eslint/unbound-method const mockSubscriptionsUpdate = client.subscriptions.update as jest.Mock; describe('handleUpdateSeatCount with 3DS', () => { diff --git a/src/tests/profile-balance.test.ts b/src/tests/profile-balance.test.ts index d7c1bd6bd58..a86947046a3 100644 --- a/src/tests/profile-balance.test.ts +++ b/src/tests/profile-balance.test.ts @@ -4,7 +4,6 @@ import { getBalanceForUser } from '@/lib/user.balance'; // Mock next/server's after function which requires request context jest.mock('next/server', () => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return return { ...jest.requireActual('next/server'), after: jest.fn(), diff --git a/storybook/src/mockData/providers.ts b/storybook/src/mockData/providers.ts index 86ab5688584..0754e5a19f1 100644 --- a/storybook/src/mockData/providers.ts +++ b/storybook/src/mockData/providers.ts @@ -4,7 +4,6 @@ import type { OpenRouterModel } from '@/lib/providers/openrouter/openrouter-type import { OpenRouterModel as OpenRouterModelSchema } from '@/lib/providers/openrouter/openrouter-types'; import { mockDataRng as rng, randomChoice, randomBoolean, randomInt } from './random'; import { - COMPANY_TYPES, MODELS, PROVIDER_DESCRIPTION_ADJECTIVES, PROVIDER_HEADQUARTERS, From 58bd0d49fe70e36c36f95d7d8d0c3e2cdac8441d Mon Sep 17 00:00:00 2001 From: Jean du Plessis Date: Wed, 25 Mar 2026 23:14:20 +0200 Subject: [PATCH 4/6] fix: include tsconfig and package.json in incremental typecheck change detection Address review feedback: the --changes-only mode now detects changes to tsconfig*.json and */package.json in addition to .ts/.tsx files, so config-only changes that can break workspace typechecks are not missed. --- scripts/typecheck-all.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/typecheck-all.sh b/scripts/typecheck-all.sh index 4dedbec4f64..2315ec05911 100755 --- a/scripts/typecheck-all.sh +++ b/scripts/typecheck-all.sh @@ -48,14 +48,14 @@ if ! $changes_only; then exit 0 fi -# Incremental: find workspace packages with TS changes and typecheck only those -changed_dirs=$(git diff --name-only "$base" -- '*.ts' '*.tsx' | \ +# Incremental: find workspace packages with TS or config changes and typecheck only those +changed_dirs=$(git diff --name-only "$base" -- '*.ts' '*.tsx' 'tsconfig*.json' '*/package.json' | \ { grep -v '^src/' || true; } | \ sed 's|/src/.*||; s|/[^/]*\.[^/]*$||' | \ sort -u) if [ -z "$changed_dirs" ]; then - echo "[typecheck] no workspace TS changes, skipping workspace typecheck" + echo "[typecheck] no workspace changes, skipping workspace typecheck" exit 0 fi From a0a1eb9e3c76844ff58bc795193bb7dadd5903b0 Mon Sep 17 00:00:00 2001 From: Jean du Plessis Date: Wed, 25 Mar 2026 23:19:40 +0200 Subject: [PATCH 5/6] fix: detect nested tsconfig and pnpm-workspace.yaml changes in incremental typecheck - Fix pathspec: use '**/tsconfig*.json' and '**/package.json' so nested workspace configs (e.g. cloud-agent/tsconfig.json) are detected - Fall back to full workspace typecheck when pnpm-workspace.yaml changes, since catalog version bumps can alter the type surface across packages --- scripts/typecheck-all.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/typecheck-all.sh b/scripts/typecheck-all.sh index 2315ec05911..2f9b2179002 100755 --- a/scripts/typecheck-all.sh +++ b/scripts/typecheck-all.sh @@ -48,8 +48,16 @@ if ! $changes_only; then exit 0 fi -# Incremental: find workspace packages with TS or config changes and typecheck only those -changed_dirs=$(git diff --name-only "$base" -- '*.ts' '*.tsx' 'tsconfig*.json' '*/package.json' | \ +# Incremental: find workspace packages with TS or config changes and typecheck only those. +# Also fall back to full typecheck if pnpm-workspace.yaml changed (catalog bumps can +# alter the type surface across packages). +if git diff --name-only "$base" -- pnpm-workspace.yaml | grep -q .; then + echo "[typecheck] pnpm-workspace.yaml changed, running full workspace typecheck" + pnpm -r --filter '!kilocode-backend' --filter '!@kilocode/trpc' run typecheck + exit 0 +fi + +changed_dirs=$(git diff --name-only "$base" -- '*.ts' '*.tsx' '**/tsconfig*.json' '**/package.json' | \ { grep -v '^src/' || true; } | \ sed 's|/src/.*||; s|/[^/]*\.[^/]*$||' | \ sort -u) From 9a0f8efd5b3e088e6c1fab390f6415290697195c Mon Sep 17 00:00:00 2001 From: Jean du Plessis Date: Wed, 25 Mar 2026 23:25:44 +0200 Subject: [PATCH 6/6] fix: rebuild trpc before full typecheck on pnpm-workspace.yaml changes The catalog fallback path was running workspace typechecks against potentially stale trpc declarations. Ensure trpc is rebuilt first. --- scripts/typecheck-all.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/typecheck-all.sh b/scripts/typecheck-all.sh index 2f9b2179002..4a86c003b34 100755 --- a/scripts/typecheck-all.sh +++ b/scripts/typecheck-all.sh @@ -52,7 +52,8 @@ fi # Also fall back to full typecheck if pnpm-workspace.yaml changed (catalog bumps can # alter the type surface across packages). if git diff --name-only "$base" -- pnpm-workspace.yaml | grep -q .; then - echo "[typecheck] pnpm-workspace.yaml changed, running full workspace typecheck" + echo "[typecheck] pnpm-workspace.yaml changed, rebuilding trpc and running full workspace typecheck" + pnpm --filter @kilocode/trpc run build pnpm -r --filter '!kilocode-backend' --filter '!@kilocode/trpc' run typecheck exit 0 fi