{ "name": "semble", "version": "1.0.0", "description": "", "main": "index.js", "workspaces": [ "src/types", "src/webapp" ], "directories": { "doc": "docs" }, "scripts": { "build:webapp": "npm run build:types && npm run build --workspace=semble-webapp", "build:types": "npm run build --workspace=@semble/types", "dev:types": "npm run dev --workspace=@semble/types", "type-check": "tsc --noEmit", "start": "node dist/index.js", "worker:feeds": "node dist/workers/feed-worker.js", "worker:search": "node dist/workers/search-worker.js", "test": "jest", "test:unit": "jest --testPathIgnorePatterns='.integration.test.' --testPathIgnorePatterns='.e2e.test.'", "test:integration": "jest --testPathPattern='.integration.test.'", "test:integration:db": "jest --testPathPattern='.integration.test.' --testNamePattern='Drizzle'", "test:integration:db:watch": "jest --watch --testPathPattern='.integration.test.' --testNamePattern='Drizzle'", "test:integration:redis": "jest --testPathPattern='.integration.test.' --testNamePattern='BullMQ'", "test:integration:redis:watch": "jest --watch --testPathPattern='.integration.test.' --testNamePattern='BullMQ'", "test:e2e": "jest --testPathPattern='.e2e.test.' --testTimeout=300000", "test:watch": "jest --watch", "test:unit:watch": "jest --watch --testPathIgnorePatterns='.integration.test.' --testPathIgnorePatterns='.e2e.test.'", "test:integration:watch": "jest --watch --testPathPattern='.integration.test.'", "build": "tsup", "build:watch": "tsc --watch", "dev:app:inner": "dotenv -e .env.local -- concurrently -k -n TYPE,APP -c red,blue \"tsc --noEmit --watch\" \"tsup --watch --onSuccess='node dist/index.js'\"", "dev:worker:feeds:inner": "dotenv -e .env.local -- concurrently -k -n WORKER -c green \"tsup --watch --onSuccess='node dist/workers/feed-worker.js'\"", "dev:worker:search:inner": "dotenv -e .env.local -- concurrently -k -n WORKER -c yellow \"tsup --watch --onSuccess='node dist/workers/search-worker.js'\"", "dev:mock": "USE_MOCK_PERSISTENCE=true USE_FAKE_PUBLISHERS=true USE_MOCK_AUTH=true USE_MOCK_VECTOR_DB=true npm run dev:app:inner", "dev:mock:pub:auth": "USE_FAKE_PUBLISHERS=true USE_MOCK_AUTH=true npm run dev", "dev": "bash ./scripts/dev-combined.sh", "migrate": "node dist/scripts/migrate.js", "lexgen": "lex gen-server ./src/modules/atproto/infrastructure/lexicon ./src/modules/atproto/infrastructure/lexicons/*", "db:start": "docker run --name annos-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=annotations -p 5432:5432 -d postgres:14", "db:stop": "docker stop annos-postgres", "db:remove": "docker rm annos-postgres", "redis:start": "docker run --name annos-redis -p 6379:6379 -d redis:7-alpine", "redis:stop": "docker stop annos-redis", "redis:remove": "docker rm annos-redis", "db:generate": "drizzle-kit generate --schema=./src/modules/**/*.sql.ts --out=./src/shared/infrastructure/database/migrations --dialect=postgresql", "webapp:dev": "npm run build:types && cd src/webapp && npm run dev", "webapp:extension:dev": "cd src/webapp && npm run dev:extension", "webapp:build": "cd src/webapp && npm run build", "webapp:start": "cd src/webapp && npm run start", "webapp:storybook": "cd src/webapp && npm run storybook", "format": "prettier --write .", "format:check": "prettier --check .", "lint": "eslint .", "lint:fix": "eslint . --fix" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@atproto/api": "^0.15.2", "@atproto/common": "^0.4.10", "@atproto/identity": "^0.4.7", "@atproto/lexicon": "^0.4.10", "@atproto/oauth-client-node": "^0.2.15", "@atproto/sync": "^0.1.20", "@atproto/syntax": "^0.4.0", "@atproto/xrpc-server": "^0.7.15", "@semble/types": "*", "@upstash/vector": "^1.2.2", "bullmq": "^5.56.8", "cookie-parser": "^1.4.7", "cors": "^2.8.5", "dotenv": "^16.5.0", "express": "^5.1.0", "ioredis": "^5.6.1", "jsonwebtoken": "^9.0.2", "postgres": "^3.4.5", "redlock": "^5.0.0-beta.2", "uuid": "^11.1.0", "zod": "^3.22.4" }, "devDependencies": { "@atproto/lex-cli": "^0.8.0", "@flydotio/dockerfile": "^0.7.10", "@testcontainers/postgresql": "^11.0.3", "@testcontainers/redis": "^11.4.0", "@types/cookie-parser": "^1.4.9", "@types/cors": "^2.8.18", "@types/express": "^5.0.1", "@types/ioredis": "^5.0.0", "@types/jest": "^29.5.14", "@types/jsdom": "^21.1.7", "@types/jsonwebtoken": "^9.0.9", "@types/pg": "^8.11.13", "@types/supertest": "^6.0.3", "@typescript-eslint/eslint-plugin": "^8.37.0", "@typescript-eslint/parser": "^8.37.0", "concurrently": "^9.1.2", "dotenv-cli": "^8.0.0", "drizzle-kit": "^0.31.1", "drizzle-orm": "^0.43.1", "eslint": "^9.31.0", "eslint-config-prettier": "^10.1.5", "eslint-plugin-prettier": "^5.5.1", "eslint-plugin-storybook": "^9.1.2", "jest": "^29.7.0", "jsdom": "^26.1.0", "nodemon": "^3.1.10", "pg": "^8.14.1", "playwright": "^1.40.0", "prettier": "^3.6.2", "supertest": "^7.1.0", "testcontainers": "^11.0.3", "ts-jest": "^29.3.2", "tsconfig-paths": "^4.2.0", "tsup": "^8.4.0", "typescript": "^5.8.3" } }