mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-13 18:32:12 +03:00
chore(deps): refresh runtimes and adopt ESLint 10 (#11259)
Co-authored-by: backryun <backryun@daonlab.local>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# ── Multi-stage Dockerfile for Native Bun Runtime (web-latest-bun) ───────────
|
||||
FROM oven/bun:1.3.14-slim AS base
|
||||
FROM oven/bun:1.4.0-slim AS base
|
||||
WORKDIR /app
|
||||
|
||||
RUN apt-get update \
|
||||
@@ -58,7 +58,7 @@ ENV NODE_ENV=production
|
||||
RUN bun run --quiet build
|
||||
|
||||
# ── Runner Base stage (100% Bun Native Production Runtime) ──────────────────
|
||||
FROM oven/bun:1.3.14-slim AS runner-base
|
||||
FROM oven/bun:1.4.0-slim AS runner-base
|
||||
|
||||
LABEL org.opencontainers.image.title="omniroute" \
|
||||
org.opencontainers.image.description="Unified AI proxy — route any LLM through one endpoint (Bun Native)" \
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"@dnd-kit/core",
|
||||
"@dnd-kit/sortable",
|
||||
"@dnd-kit/utilities",
|
||||
"@eslint/compat",
|
||||
"@huggingface/transformers",
|
||||
"@lobehub/icons",
|
||||
"@modelcontextprotocol/sdk",
|
||||
@@ -65,6 +66,7 @@
|
||||
"eslint-config-next",
|
||||
"eslint-plugin-react-hooks",
|
||||
"eslint-plugin-sonarjs",
|
||||
"espree",
|
||||
"express",
|
||||
"fast-check",
|
||||
"fetch-socks",
|
||||
|
||||
@@ -297,11 +297,6 @@
|
||||
"count": 1
|
||||
}
|
||||
},
|
||||
"open-sse/handlers/videoGeneration/openai.ts": {
|
||||
"@typescript-eslint/no-unused-vars": {
|
||||
"count": 1
|
||||
}
|
||||
},
|
||||
"open-sse/mcp-server/__tests__/a2aLifecycle.test.ts": {
|
||||
"@typescript-eslint/no-explicit-any": {
|
||||
"count": 1
|
||||
@@ -806,11 +801,6 @@
|
||||
"count": 1
|
||||
}
|
||||
},
|
||||
"open-sse/utils/streamPayloadCollector.ts": {
|
||||
"no-restricted-syntax": {
|
||||
"count": 1
|
||||
}
|
||||
},
|
||||
"open-sse/utils/usageTracking.ts": {
|
||||
"@typescript-eslint/no-unused-vars": {
|
||||
"count": 1
|
||||
@@ -1519,11 +1509,6 @@
|
||||
"count": 2
|
||||
}
|
||||
},
|
||||
"src/lib/credentialHealth/scheduler.ts": {
|
||||
"@typescript-eslint/no-unused-vars": {
|
||||
"count": 1
|
||||
}
|
||||
},
|
||||
"src/lib/db/apiKeys.ts": {
|
||||
"@typescript-eslint/no-unused-vars": {
|
||||
"count": 3
|
||||
@@ -3130,9 +3115,6 @@
|
||||
"tests/unit/cli-nodes-commands.test.ts": {
|
||||
"@typescript-eslint/no-explicit-any": {
|
||||
"count": 15
|
||||
},
|
||||
"@typescript-eslint/no-unused-vars": {
|
||||
"count": 2
|
||||
}
|
||||
},
|
||||
"tests/unit/cli-oauth-commands.test.ts": {
|
||||
@@ -5116,11 +5098,6 @@
|
||||
"count": 1
|
||||
}
|
||||
},
|
||||
"tests/unit/stream-payload-collector.test.ts": {
|
||||
"@typescript-eslint/no-explicit-any": {
|
||||
"count": 2
|
||||
}
|
||||
},
|
||||
"tests/unit/stream-prompt-tokens-zero-upstream.test.ts": {
|
||||
"@typescript-eslint/no-unused-vars": {
|
||||
"count": 1
|
||||
@@ -5265,11 +5242,6 @@
|
||||
"count": 5
|
||||
}
|
||||
},
|
||||
"tests/unit/translator-antigravity-to-openai.test.ts": {
|
||||
"@typescript-eslint/no-explicit-any": {
|
||||
"count": 4
|
||||
}
|
||||
},
|
||||
"tests/unit/translator-claude-helper-thinking.test.ts": {
|
||||
"@typescript-eslint/no-explicit-any": {
|
||||
"count": 21
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { fixupConfigRules } from "@eslint/compat";
|
||||
import nextVitals from "eslint-config-next/core-web-vitals";
|
||||
import * as espree from "espree";
|
||||
import tseslint from "typescript-eslint";
|
||||
|
||||
// #7879: bar NEW local `toNumber` definitions outside the canonical helper.
|
||||
@@ -37,7 +39,22 @@ const IMPORT_BOUNDARY_RESTRICTIONS = {
|
||||
|
||||
/** @type {import("eslint").Linter.Config[]} */
|
||||
const eslintConfig = [
|
||||
...nextVitals,
|
||||
...fixupConfigRules(nextVitals),
|
||||
// eslint-config-next's Babel parser has not adopted ESLint 10's ScopeManager
|
||||
// finalize contract yet. Plain JS/JSX does not need that parser, so use the
|
||||
// ESLint-native parser while retaining Next's plugins and rules.
|
||||
{
|
||||
files: ["**/*.{js,jsx,mjs,cjs}"],
|
||||
languageOptions: {
|
||||
parser: espree,
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ["**/*.{mts,cts}"],
|
||||
languageOptions: {
|
||||
parser: tseslint.parser,
|
||||
},
|
||||
},
|
||||
// Pacote 4 (plano mestre testes+CI, 2026-07-04) — zero-warning policy: TODA regra roda
|
||||
// como "error" e a dívida pré-existente vive congelada por arquivo+regra em
|
||||
// config/quality/eslint-suppressions.json (ESLint bulk suppressions nativo). Violação
|
||||
@@ -133,28 +150,45 @@ const eslintConfig = [
|
||||
"no-restricted-syntax": "off",
|
||||
},
|
||||
},
|
||||
// Relaxed rules for open-sse and tests (incremental adoption)
|
||||
// Relaxed rules for TypeScript in open-sse and tests (incremental adoption).
|
||||
// eslint-config-next already registers @typescript-eslint for every TS file;
|
||||
// registering a second plugin object is rejected by ESLint 10.
|
||||
{
|
||||
files: ["open-sse/**/*.ts", "tests/**/*.mjs", "tests/**/*.ts"],
|
||||
plugins: {
|
||||
"@typescript-eslint": tseslint.plugin,
|
||||
},
|
||||
files: ["open-sse/**/*.ts", "tests/**/*.ts"],
|
||||
rules: {
|
||||
"@typescript-eslint/no-explicit-any": "error",
|
||||
"@next/next/no-assign-module-variable": "off",
|
||||
"react-hooks/rules-of-hooks": "off",
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ["tests/**/*.mjs"],
|
||||
plugins: {
|
||||
"@typescript-eslint": tseslint.plugin,
|
||||
},
|
||||
rules: {
|
||||
"@next/next/no-assign-module-variable": "off",
|
||||
"react-hooks/rules-of-hooks": "off",
|
||||
},
|
||||
},
|
||||
// JS/JSX files do not match eslint-config-next's TypeScript block. Register
|
||||
// the plugin only for that disjoint scope so the shared unused-vars ratchet
|
||||
// works without redefining the plugin for TS/TSX under ESLint 10.
|
||||
{
|
||||
files: ["src/**/*.{js,jsx}"],
|
||||
plugins: {
|
||||
"@typescript-eslint": tseslint.plugin,
|
||||
},
|
||||
},
|
||||
// Ratchet: bar NEW unused vars/args/catches outside the `_` escape hatch.
|
||||
// Pre-existing violations are frozen via config/quality/eslint-suppressions.json
|
||||
// (same pattern as #7879 toNumber); only genuinely NEW unused bindings fail
|
||||
// lint. `args: "all"` (not `after-used`) so a leading unused param is never
|
||||
// silently skipped, e.g. `function handle(req, _opts, next)` must flag `req`.
|
||||
// eslint-config-next already registers @typescript-eslint; registering it again
|
||||
// in this block is rejected by ESLint 10.
|
||||
{
|
||||
files: ["src/**/*.{ts,tsx,js,jsx}", "open-sse/**/*.ts", "tests/**/*.{ts,tsx,mjs}"],
|
||||
plugins: {
|
||||
"@typescript-eslint": tseslint.plugin,
|
||||
},
|
||||
rules: {
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
|
||||
4047
package-lock.json
generated
4047
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
63
package.json
63
package.json
@@ -270,7 +270,7 @@
|
||||
"alibaba:sync-allowlist": "node --import tsx/esm scripts/ops/sync-alibaba-allowlist.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-bedrock-runtime": "^3.1116.0",
|
||||
"@aws-sdk/client-bedrock-runtime": "^3.1120.0",
|
||||
"@dnd-kit/core": "^6.3.1",
|
||||
"@dnd-kit/sortable": "^10.0.0",
|
||||
"@dnd-kit/utilities": "^3.2.2",
|
||||
@@ -281,10 +281,10 @@
|
||||
"@swc/helpers": "0.5.23",
|
||||
"@toon-format/toon": "^4.1.1",
|
||||
"@types/mdx": "^2.0.13",
|
||||
"@xyflow/react": "^12.11.3",
|
||||
"@xyflow/react": "^12.11.5",
|
||||
"ajv": "^8.20.0",
|
||||
"ajv-formats": "^3.0.1",
|
||||
"axios": "^1.19.0",
|
||||
"axios": "^1.20.0",
|
||||
"bcryptjs": "^3.0.3",
|
||||
"bottleneck": "^2.19.5",
|
||||
"clsx": "^2.1.1",
|
||||
@@ -295,8 +295,8 @@
|
||||
"express": "^5.2.1",
|
||||
"fetch-socks": "^1.3.3",
|
||||
"fflate": "^0.8.3",
|
||||
"fumadocs-core": "^16.15.0",
|
||||
"fumadocs-ui": "^16.15.0",
|
||||
"fumadocs-core": "^16.15.4",
|
||||
"fumadocs-ui": "^16.15.4",
|
||||
"http-proxy-middleware": "^4.0.0",
|
||||
"https-proxy-agent": "^9.0.0",
|
||||
"ink": "^7.0.3",
|
||||
@@ -304,17 +304,17 @@
|
||||
"ink-text-input": "^6.0.0",
|
||||
"ioredis": "^5.10.1",
|
||||
"jose": "^6.2.10",
|
||||
"js-yaml": "^5.3.0",
|
||||
"js-yaml": "^5.4.1",
|
||||
"jsonc-parser": "^3.3.1",
|
||||
"lowdb": "^7.0.1",
|
||||
"lucide-react": "^1.33.0",
|
||||
"marked": "^18.0.10",
|
||||
"marked": "^18.0.11",
|
||||
"marked-terminal": "^7.3.0",
|
||||
"material-symbols": "^0.46.0",
|
||||
"mermaid": "^11.17.0",
|
||||
"mermaid": "^11.17.2",
|
||||
"monaco-editor": "^0.56.0",
|
||||
"next": "16.3.2",
|
||||
"next-intl": "^4.13.7",
|
||||
"next": "16.3.3",
|
||||
"next-intl": "^4.14.0",
|
||||
"next-themes": "^0.4.6",
|
||||
"node-machine-id": "^1.1.12",
|
||||
"omniglyph": "^1.4.0",
|
||||
@@ -335,7 +335,7 @@
|
||||
"recharts": "^3.8.1",
|
||||
"safe-regex": "^2.1.1",
|
||||
"selfsigned": "^5.5.0",
|
||||
"sharp": "^0.35.3",
|
||||
"sharp": "^0.35.4",
|
||||
"smol-toml": "1.8.0",
|
||||
"socks": "^2.8.7",
|
||||
"sql.js": "^1.14.2",
|
||||
@@ -346,7 +346,7 @@
|
||||
"turndown-plugin-gfm": "1.0.2",
|
||||
"undici": "^8.10.0",
|
||||
"update-notifier": "^7.3.1",
|
||||
"uuid": "^14.0.0",
|
||||
"uuid": "^14.0.2",
|
||||
"ws": "^8.21.3",
|
||||
"xxhash-wasm": "^1.1.0",
|
||||
"yazl": "^3.3.1",
|
||||
@@ -362,11 +362,12 @@
|
||||
"onnxruntime-node": "1.24.3",
|
||||
"sqlite-vec": "^0.1.9",
|
||||
"tls-client-node": "^0.2.0",
|
||||
"wreq-js": "^3.1.0"
|
||||
"wreq-js": "^3.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@axe-core/playwright": "^4.13.0",
|
||||
"@cyclonedx/cyclonedx-npm": "6.0.1",
|
||||
"@eslint/compat": "^2.1.0",
|
||||
"@playwright/test": "^1.62.1",
|
||||
"@size-limit/file": "^13.0.3",
|
||||
"@stryker-mutator/core": "^10.0.0",
|
||||
@@ -374,13 +375,13 @@
|
||||
"@tailwindcss/postcss": "^4.3.0",
|
||||
"@testing-library/dom": "^10.4.1",
|
||||
"@testing-library/jest-dom": "^7.0.1",
|
||||
"@testing-library/react": "^16.3.2",
|
||||
"@testing-library/react": "^16.3.3",
|
||||
"@testing-library/user-event": "^14.6.6",
|
||||
"@types/better-sqlite3": "^9.6.0",
|
||||
"@types/bun": "latest",
|
||||
"@types/node": "^26.2.0",
|
||||
"@types/bun": "1.4.0",
|
||||
"@types/node": "^26.4.0",
|
||||
"@types/react": "^19.2.18",
|
||||
"@types/react-dom": "^19.2.4",
|
||||
"@types/react-dom": "^19.2.5",
|
||||
"@types/safe-regex": "^1.1.6",
|
||||
"@types/ws": "^8.18.0",
|
||||
"@vitejs/plugin-react": "^6.1.0",
|
||||
@@ -391,32 +392,33 @@
|
||||
"ctrf": "^0.3.0",
|
||||
"dpdm": "^4.3.0",
|
||||
"esbuild": "0.28.2",
|
||||
"eslint": "^9.39.4",
|
||||
"eslint-config-next": "16.3.2",
|
||||
"eslint": "^10.9.0",
|
||||
"eslint-config-next": "16.3.3",
|
||||
"eslint-plugin-react-hooks": "7.0.1",
|
||||
"eslint-plugin-sonarjs": "^4.1.0",
|
||||
"espree": "^11.2.0",
|
||||
"fast-check": "^4.8.0",
|
||||
"fumadocs-mdx": "^15.3.1",
|
||||
"fumadocs-mdx": "^15.4.0",
|
||||
"glob": "^13.0.6",
|
||||
"httpyac": "^6.16.7",
|
||||
"husky": "^9.1.7",
|
||||
"jscpd": "^4.3.0",
|
||||
"jsdom": "^30.0.1",
|
||||
"junit-to-ctrf": "^0.0.14",
|
||||
"knip": "^6.32.2",
|
||||
"knip": "^6.32.3",
|
||||
"license-checker-rseidelsohn": "^5.0.1",
|
||||
"lint-staged": "^17.3.0",
|
||||
"lint-staged": "^17.4.1",
|
||||
"lockfile-lint": "^5.0.1",
|
||||
"node-loader": "^2.1.0",
|
||||
"opencode-ai": "1.18.21",
|
||||
"opencode-ai": "1.18.23",
|
||||
"playwright-ctrf-json-reporter": "^0.0.29",
|
||||
"prettier": "^3.9.6",
|
||||
"promptfoo": "^0.122.0",
|
||||
"promptfoo": "^0.122.1",
|
||||
"size-limit": "^13.0.3",
|
||||
"tailwindcss": "^4.3.0",
|
||||
"type-coverage": "^2.30.1",
|
||||
"typescript": "^6.0.3",
|
||||
"typescript-eslint": "^8.67.0",
|
||||
"typescript-eslint": "^8.68.0",
|
||||
"vitest": "^4.1.11",
|
||||
"wait-on": "^9.1.0",
|
||||
"wtfnode": "^0.10.1"
|
||||
@@ -451,12 +453,13 @@
|
||||
},
|
||||
"overrides": {
|
||||
"onnxruntime-node": "1.24.3",
|
||||
"eslint-plugin-react-hooks": "7.0.1",
|
||||
"fast-xml-parser": "^5.10.1",
|
||||
"sharp": "^0.35.3",
|
||||
"sharp": "^0.35.4",
|
||||
"postcss": "^8.5.18",
|
||||
"ip-address": "^10.3.1",
|
||||
"qs": "^6.15.2",
|
||||
"uuid": "^14.0.0",
|
||||
"uuid": "^14.0.2",
|
||||
"form-data": "^4.0.6",
|
||||
"vite": "^8.0.16",
|
||||
"protobufjs": "^7.6.5",
|
||||
@@ -484,10 +487,6 @@
|
||||
},
|
||||
"socket.io-parser": "^4.2.7",
|
||||
"tar": "^7.5.21",
|
||||
"brace-expansion": "^5.0.9",
|
||||
"minimatch": {
|
||||
"brace-expansion": "^1.1.18"
|
||||
},
|
||||
"libxmljs2": {
|
||||
"minimatch": {
|
||||
"brace-expansion": "^2.1.4"
|
||||
@@ -512,7 +511,7 @@
|
||||
},
|
||||
"nanoid": "^3.3.17",
|
||||
"monaco-editor": {
|
||||
"dompurify": "^3.4.13"
|
||||
"dompurify": "^3.4.14"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user