mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
SQLite background asynchronous backups () generate native thread promises that are not implicitly terminated by Node 22's test runner upon suite completion when the DB connection is closed. This causes the CI test job to hang indefinitely. Added cross-env DISABLE_SQLITE_AUTO_BACKUP flag to the test suite.
180 lines
6.4 KiB
JSON
180 lines
6.4 KiB
JSON
{
|
|
"name": "omniroute",
|
|
"version": "3.5.0",
|
|
"description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",
|
|
"type": "module",
|
|
"bin": {
|
|
"omniroute": "bin/omniroute.mjs",
|
|
"omniroute-reset-password": "bin/reset-password.mjs"
|
|
},
|
|
"files": [
|
|
"bin/",
|
|
"app/",
|
|
"open-sse/mcp-server/",
|
|
"src/shared/contracts/",
|
|
"scripts/postinstall.mjs",
|
|
"scripts/native-binary-compat.mjs",
|
|
"README.md",
|
|
"LICENSE"
|
|
],
|
|
"workspaces": [
|
|
"open-sse"
|
|
],
|
|
"engines": {
|
|
"node": ">=18.0.0 <24.0.0"
|
|
},
|
|
"keywords": [
|
|
"ai",
|
|
"router",
|
|
"proxy",
|
|
"openai",
|
|
"claude",
|
|
"anthropic",
|
|
"gemini",
|
|
"fallback",
|
|
"cursor",
|
|
"cline",
|
|
"codex",
|
|
"llm",
|
|
"auto-fallback"
|
|
],
|
|
"license": "MIT",
|
|
"author": "diegosouzapw",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/diegosouzapw/OmniRoute"
|
|
},
|
|
"homepage": "https://omniroute.online",
|
|
"scripts": {
|
|
"dev": "node scripts/run-next.mjs dev",
|
|
"build": "node scripts/build-next-isolated.mjs",
|
|
"build:cli": "node scripts/prepublish.mjs",
|
|
"start": "node scripts/run-next.mjs start",
|
|
"lint": "eslint .",
|
|
"electron:dev": "concurrently \"npm run dev\" \"wait-on http://localhost:20128 && cd electron && npm run dev\"",
|
|
"electron:build": "npm run build && cd electron && npm run build",
|
|
"electron:build:win": "npm run build && cd electron && npm run build:win",
|
|
"electron:build:mac": "npm run build && cd electron && npm run build:mac",
|
|
"electron:build:linux": "npm run build && cd electron && npm run build:linux",
|
|
"test": "cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --test tests/unit/*.test.mjs",
|
|
"test:unit": "cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --test tests/unit/*.test.mjs",
|
|
"test:plan3": "cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --test tests/unit/plan3-p0.test.mjs",
|
|
"test:fixes": "cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --test tests/unit/fixes-p1.test.mjs",
|
|
"test:security": "cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --test tests/unit/security-fase01.test.mjs",
|
|
"check:cycles": "node scripts/check-cycles.mjs",
|
|
"check:route-validation:t06": "node scripts/check-route-validation.mjs",
|
|
"check:any-budget:t11": "node scripts/check-t11-any-budget.mjs",
|
|
"check:docs-sync": "node scripts/check-docs-sync.mjs",
|
|
"typecheck:core": "tsc --pretty false -p tsconfig.typecheck-core.json",
|
|
"typecheck:noimplicit:core": "tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json",
|
|
"test:integration": "node --import tsx/esm --test tests/integration/*.test.mjs",
|
|
"test:e2e": "node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts",
|
|
"test:protocols:e2e": "node scripts/run-protocol-clients-tests.mjs",
|
|
"test:vitest": "vitest run --config vitest.mcp.config.ts",
|
|
"test:ecosystem": "node scripts/run-ecosystem-tests.mjs",
|
|
"test:coverage": "c8 --exclude=tests/** --exclude=**/*.test.* --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov --check-coverage --statements 55 --lines 55 --functions 55 --branches 60 node --import tsx/esm --test tests/unit/*.test.mjs",
|
|
"test:coverage:legacy": "c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs",
|
|
"coverage:report": "c8 report --exclude=tests/** --exclude=**/*.test.* --reporter=text --reporter=text-summary --reporter=html --reporter=json-summary --reporter=lcov",
|
|
"coverage:report:legacy": "c8 report --exclude=open-sse --reporter=text --reporter=text-summary",
|
|
"test:all": "npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",
|
|
"check": "npm run lint && npm run test",
|
|
"prepublishOnly": "npm run build:cli",
|
|
"postinstall": "node scripts/postinstall.mjs",
|
|
"prepare": "husky",
|
|
"system-info": "node scripts/system-info.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@lobehub/icons": "^5.0.1",
|
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@swc/helpers": "0.5.19",
|
|
"bcryptjs": "^3.0.3",
|
|
"better-sqlite3": "^12.6.2",
|
|
"bottleneck": "^2.19.5",
|
|
"dompurify": "^3.3.2",
|
|
"express": "^5.2.1",
|
|
"fetch-socks": "^1.3.2",
|
|
"http-proxy-middleware": "^3.0.5",
|
|
"https-proxy-agent": "^8.0.0",
|
|
"jose": "^6.1.3",
|
|
"js-yaml": "^4.1.0",
|
|
"lowdb": "^7.0.1",
|
|
"monaco-editor": "^0.55.1",
|
|
"next": "^16.0.10",
|
|
"next-intl": "^4.8.3",
|
|
"node-machine-id": "^1.1.12",
|
|
"open": "^11.0.0",
|
|
"ora": "^9.1.0",
|
|
"pino": "^10.3.1",
|
|
"pino-pretty": "^13.1.3",
|
|
"react": "19.2.4",
|
|
"react-dom": "19.2.4",
|
|
"recharts": "^3.7.0",
|
|
"selfsigned": "^5.5.0",
|
|
"tsx": "^4.21.0",
|
|
"undici": "^7.19.2",
|
|
"uuid": "^13.0.0",
|
|
"wreq-js": "^2.0.1",
|
|
"yazl": "^3.3.1",
|
|
"zod": "^4.3.6",
|
|
"zustand": "^5.0.10"
|
|
},
|
|
"optionalDependencies": {
|
|
"keytar": "^7.9.0"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.58.2",
|
|
"@tailwindcss/postcss": "^4.1.18",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@types/bcryptjs": "^3.0.0",
|
|
"@types/better-sqlite3": "^7.6.13",
|
|
"@types/keytar": "^4.4.0",
|
|
"@types/node": "^25.2.3",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@vitejs/plugin-react": "^6.0.1",
|
|
"c8": "^11.0.0",
|
|
"concurrently": "^9.2.1",
|
|
"cross-env": "^10.1.0",
|
|
"eslint": "^9.39.2",
|
|
"eslint-config-next": "^16.0.10",
|
|
"husky": "^9.1.7",
|
|
"jsdom": "^29.0.1",
|
|
"lint-staged": "^16.2.7",
|
|
"prettier": "^3.8.1",
|
|
"prop-types": "^15.8.1",
|
|
"tailwindcss": "^4",
|
|
"typescript": "^5.9.3",
|
|
"typescript-eslint": "^8.56.0",
|
|
"vitest": "^4.1.2",
|
|
"wait-on": "^9.0.4"
|
|
},
|
|
"lint-staged": {
|
|
"*.{js,jsx,ts,tsx,mjs}": [
|
|
"prettier --write",
|
|
"eslint --fix --no-error-on-unmatched-pattern"
|
|
],
|
|
"*.{json,md,yml,yaml,css}": [
|
|
"prettier --write"
|
|
]
|
|
},
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"@parcel/watcher",
|
|
"@swc/core",
|
|
"better-sqlite3",
|
|
"esbuild",
|
|
"omniroute",
|
|
"sharp"
|
|
]
|
|
},
|
|
"overrides": {
|
|
"lodash-es": "^4.18.1",
|
|
"dompurify": "^3.3.2",
|
|
"path-to-regexp": "^8.4.0",
|
|
"react": "$react",
|
|
"react-dom": "$react-dom"
|
|
}
|
|
}
|