{ "name": "@affine/server", "private": true, "version": "0.20.0", "description": "Affine Node.js server", "type": "module", "bin": { "run-test": "./scripts/run-test.ts" }, "scripts": { "build": "tsc", "dev": "nodemon ./src/index.ts", "dev:mail": "email dev -d src/mails", "test": "ava --concurrency 1 --serial", "test:copilot": "ava \"src/__tests__/**/copilot-*.spec.ts\"", "test:coverage": "c8 ava --concurrency 1 --serial", "test:copilot:coverage": "c8 ava --timeout=5m \"src/__tests__/**/copilot-*.spec.ts\"", "e2e": "cross-env TEST_MODE=e2e ava", "e2e:coverage": "cross-env TEST_MODE=e2e c8 ava", "data-migration": "cross-env NODE_ENV=development r ./src/data/index.ts", "init": "yarn prisma migrate dev && yarn data-migration run", "seed": "r ./src/seed/index.ts", "predeploy": "yarn prisma migrate deploy && node --import ./scripts/register.js ./dist/data/index.js run", "postinstall": "prisma generate" }, "dependencies": { "@ai-sdk/google": "^1.1.19", "@apollo/server": "^4.11.2", "@aws-sdk/client-s3": "^3.709.0", "@fal-ai/serverless-client": "^0.15.0", "@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.20.0", "@google-cloud/opentelemetry-cloud-trace-exporter": "^2.4.1", "@google-cloud/opentelemetry-resource-util": "^2.4.0", "@nestjs-cls/transactional": "^2.4.4", "@nestjs-cls/transactional-adapter-prisma": "^1.2.7", "@nestjs/apollo": "^12.2.2", "@nestjs/bullmq": "^10.2.3", "@nestjs/common": "^10.4.15", "@nestjs/core": "^10.4.15", "@nestjs/graphql": "^12.2.2", "@nestjs/platform-express": "^10.4.15", "@nestjs/platform-socket.io": "^10.4.15", "@nestjs/schedule": "^4.1.2", "@nestjs/throttler": "6.4.0", "@nestjs/websockets": "^10.4.15", "@node-rs/argon2": "^2.0.2", "@node-rs/crc32": "^1.10.6", "@opentelemetry/api": "^1.9.0", "@opentelemetry/core": "^1.29.0", "@opentelemetry/exporter-prometheus": "^0.57.0", "@opentelemetry/exporter-zipkin": "^1.29.0", "@opentelemetry/host-metrics": "^0.35.4", "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/instrumentation-graphql": "^0.47.0", "@opentelemetry/instrumentation-http": "^0.57.0", "@opentelemetry/instrumentation-ioredis": "^0.47.0", "@opentelemetry/instrumentation-nestjs-core": "^0.44.0", "@opentelemetry/instrumentation-socket.io": "^0.46.0", "@opentelemetry/resources": "^1.29.0", "@opentelemetry/sdk-metrics": "^1.29.0", "@opentelemetry/sdk-node": "^0.57.0", "@opentelemetry/sdk-trace-node": "^1.29.0", "@opentelemetry/semantic-conventions": "^1.28.0", "@prisma/client": "^5.22.0", "@prisma/instrumentation": "^5.22.0", "@react-email/components": "0.0.33", "@socket.io/redis-adapter": "^8.3.0", "ai": "^4.1.51", "bullmq": "^5.40.2", "cookie-parser": "^1.4.7", "date-fns": "^4.0.0", "dotenv": "^16.4.7", "eventemitter2": "^6.4.9", "eventsource-parser": "^3.0.0", "express": "^4.21.2", "fast-xml-parser": "^5.0.0", "get-stream": "^9.0.1", "graphql": "^16.9.0", "graphql-scalars": "^1.24.0", "graphql-upload": "^17.0.0", "html-validate": "^9.0.0", "htmlrewriter": "^0.0.12", "http-errors": "^2.0.0", "ioredis": "^5.4.1", "is-mobile": "^5.0.0", "keyv": "^5.2.2", "lodash-es": "^4.17.21", "mixpanel": "^0.18.0", "mustache": "^4.2.0", "nanoid": "^5.0.9", "nest-commander": "^3.15.0", "nest-winston": "^1.9.7", "nestjs-cls": "^5.0.0", "nodemailer": "^6.9.16", "on-headers": "^1.0.2", "openai": "^4.83.0", "piscina": "^5.0.0-alpha.0", "prisma": "^5.22.0", "react": "19.0.0", "react-dom": "19.0.0", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", "semver": "^7.6.3", "ses": "^1.10.0", "socket.io": "^4.8.1", "stripe": "^17.4.0", "tldts": "^6.1.68", "ts-node": "^10.9.2", "typescript": "^5.7.2", "winston": "^3.17.0", "yjs": "^13.6.21", "zod": "^3.24.1" }, "devDependencies": { "@affine-test/kit": "workspace:*", "@affine-tools/cli": "workspace:*", "@affine-tools/utils": "workspace:*", "@affine/server-native": "workspace:*", "@faker-js/faker": "^9.6.0", "@nestjs/testing": "patch:@nestjs/testing@npm%3A10.4.15#~/.yarn/patches/@nestjs-testing-npm-10.4.15-d591a1705a.patch", "@types/cookie-parser": "^1.4.8", "@types/express": "^4.17.21", "@types/graphql-upload": "^17.0.0", "@types/http-errors": "^2.0.4", "@types/lodash-es": "^4.17.12", "@types/mixpanel": "^2.14.9", "@types/mustache": "^4.2.5", "@types/node": "^22.0.0", "@types/nodemailer": "^6.4.17", "@types/on-headers": "^1.0.3", "@types/react": "^19.0.1", "@types/react-dom": "^19.0.2", "@types/semver": "^7.5.8", "@types/sinon": "^17.0.3", "@types/supertest": "^6.0.2", "ava": "^6.2.0", "c8": "^10.1.3", "cross-env": "^7.0.3", "nodemon": "^3.1.7", "react-email": "3.0.7", "sinon": "^19.0.2", "supertest": "^7.0.0" }, "nodemonConfig": { "exec": "node", "ignore": [ "**/__tests__/**", "**/dist/**", "*.gen.*" ], "env": { "NODE_ENV": "development", "AFFINE_ENV": "dev", "AFFINE_SERVER_EXTERNAL_URL": "http://localhost:8080", "DEBUG": "affine:*", "FORCE_COLOR": true, "DEBUG_COLORS": true }, "delay": 1000 }, "c8": { "reporter": [ "text-summary", "lcov" ], "report-dir": ".coverage", "exclude": [ "scripts", "node_modules", "**/*.spec.ts", "**/*.e2e.ts" ] }, "stableVersion": "0.5.3", "installConfig": { "hoistingLimits": "workspaces" } }