{ "name": "arb-pulse", "version": "1.0.0", "description": "Real-time BTC cross-exchange arbitrage detection & simulation bot (Kraken, Bybit, OKX, Binance)", "type": "module", "engines": { "node": ">=20" }, "scripts": { "dev": "tsx watch src/index.ts", "dev:web": "npm --prefix web run dev", "start": "tsx src/index.ts", "build": "npm --prefix web install && npm --prefix web run build", "typecheck": "tsc --noEmit && npm --prefix web run typecheck", "test": "node scripts/run-tests.mjs", "test:e2e": "playwright test", "test:observability": "playwright test observability.spec.ts", "lint": "eslint .", "prepare": "husky" }, "lint-staged": { "src/**/*.ts": [ "eslint --fix", "prettier --write" ], "web/src/**/*.{ts,tsx}": [ "eslint --fix", "prettier --write" ] }, "dependencies": { "@asteasolutions/zod-to-openapi": "^8.5.0", "@opentelemetry/api": "^1.9.1", "@opentelemetry/sdk-trace-node": "^2.7.1", "@scalar/express-api-reference": "^0.8.48", "@sentry/node": "^10.57.0", "@sentry/opentelemetry": "^10.57.0", "@upstash/ratelimit": "^2.0.6", "@upstash/redis": "^1.35.3", "express": "^4.21.2", "pino": "^10.3.1", "pino-pretty": "^13.1.3", "tsx": "^4.19.2", "ws": "^8.18.0", "zod": "^4.4.3" }, "devDependencies": { "@eslint/js": "^9.18.0", "@playwright/test": "^1.51.1", "@types/express": "^4.17.21", "@types/node": "^22.10.5", "@types/ws": "^8.5.13", "eslint": "^9.18.0", "eslint-plugin-react-hooks": "^5.1.0", "globals": "^15.14.0", "husky": "^9.1.7", "lint-staged": "^16.4.0", "prettier": "^3.8.3", "typescript": "^5.7.3", "typescript-eslint": "^8.26.0" } }