{ "name": "@overleaf/real-time", "description": "The socket.io layer of Overleaf for real-time editor interactions", "private": true, "main": "app.js", "type": "module", "scripts": { "start": "node app.js", "test:acceptance:_run": "mocha --recursive --timeout 15000 --exit --retries=$RETRIES $@ test/acceptance/js", "test:acceptance": "yarn run test:acceptance:_run -- --grep=$TEST_NAME_PATTERN", "test:unit:_run": "vitest --config ./vitest.config.unit.cjs", "test:unit": "yarn run test:unit:_run", "nodemon": "node --watch app.js", "lint": "eslint --cache --cache-location ../../.cache/eslint/ --max-warnings 0 .", "lint:fix": "eslint --cache --cache-location ../../.cache/eslint/ --fix .", "types:check": "tsc --noEmit" }, "dependencies": { "@overleaf/fetch-utils": "workspace:*", "@overleaf/logger": "workspace:*", "@overleaf/metrics": "workspace:*", "@overleaf/o-error": "workspace:*", "@overleaf/promise-utils": "workspace:*", "@overleaf/redis-wrapper": "workspace:*", "@overleaf/settings": "workspace:*", "@overleaf/validation-tools": "workspace:*", "async": "^3.2.5", "base64id": "0.1.0", "bunyan": "^1.8.15", "connect-redis": "^6.1.3", "cookie-parser": "^1.4.6", "express": "4.22.1", "express-session": "^1.17.1", "lodash": "^4.18.1", "overleaf-editor-core": "workspace:*", "proxy-addr": "^2.0.7", "socket.io": "github:overleaf/socket.io#0.9.19-overleaf-12", "socket.io-client": "https://github.com/overleaf/socket.io-client/archive/refs/tags/0.9.17-overleaf-6.tar.gz", "zod": "^4.0.0", "zod-validation-error": "^4.0.1" }, "devDependencies": { "@types/node": "^24.5.2", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", "cookie-signature": "^1.1.0", "eslint": "^10.4.0", "mocha": "^11.1.0", "mocha-junit-reporter": "^2.2.1", "mocha-multi-reporters": "^1.5.1", "sinon": "^9.2.4", "sinon-chai": "3.7.0", "timekeeper": "0.0.4", "typescript": "^5.0.4", "uid-safe": "^2.1.5", "vitest": "4.1.5", "ws": "^8.21.0" } }