{ "name": "wafrn-backend", "version": "2025.12.05", "description": "wafrn backend", "main": "index.js", "type": "module", "scripts": { "start": "tsx index.ts", "migration:generate": "tsx migrate.ts create", "db:migrate:status": "tsx migrate.ts pending && echo '-----' && tsx migrate.ts executed", "db:migrate": "tsx migrate.ts up", "db:rollback": "tsx migrate.ts down", "test": "echo \"Error: no test specified\" && exit 1", "type-check": "tsc --noEmit", "lint": "eslint .", "prettier-format": "prettier --config .prettierrc '**/*.ts' --write" }, "author": "", "license": "MIT", "dependencies": { "@atcute/bluesky-richtext-builder": "^1.0.2", "@atcute/bluesky-richtext-parser": "^1.0.7", "@atproto/api": "^0.18.0", "@atproto/identity": "^0.4.9", "@atproto/sync": "^0.1.36", "@opera7133/mfmp": "^1.0.2-5", "@peertube/http-signature": "^1.7.0", "@rushstack/ts-command-line": "^5.0.0", "@skyware/firehose": "^0.3.2", "@skyware/jetstream": "^0.2.5", "@types/archiver": "^6.0.3", "@types/bcrypt": "5.0.0", "@types/body-parser": "^1.19.5", "@types/color": "^4.2.0", "@types/cors": "^2.8.12", "@types/dompurify": "^3.0.5", "@types/express": "^4.17.21", "@types/express-ws": "^3.0.5", "@types/fluent-ffmpeg": "^2.1.27", "@types/fs-extra": "^11.0.4", "@types/jsonld": "^1.5.8", "@types/jsonwebtoken": "^8.5.8", "@types/multer": "^1.4.7", "@types/node": "^20.14.13", "@types/nodemailer": "^6.4.14", "@types/postcss-safe-parser": "^5.0.4", "@types/sanitize-html": "^2.13.0", "@types/sequelize": "^4.28.20", "@types/showdown": "^2.0.6", "@types/swagger-ui-express": "^4.1.3", "@types/underscore": "^1.11.5", "@types/unzip-stream": "^0.3.4", "@types/uuid": "^10.0.0", "@types/validator": "^13.12.0", "@types/web-push": "^3.6.4", "@typescript-eslint/eslint-plugin": "^8.39.1", "@typescript-eslint/parser": "^8.39.1", "archiver": "^7.0.1", "atproto-firehose": "^0.2.2", "axios": "^1.8.2", "bcrypt": "^6.0.0", "blurhash": "^2.0.5", "body-parser": "^1.20.3", "bullmq": "^5.8.4", "cacher": "^3.0.0", "cheerio": "^1.1.0", "color": "^4.2.3", "cors": "^2.8.5", "csv-parse": "^5.4.0", "did-resolver": "^4.1.0", "dompurify": "^3.2.4", "exiftool": "^0.0.3", "expo-server-sdk": "^3.14.0", "express": "^4.21.2", "express-rate-limit": "^6.7.0", "express-ws": "^5.0.2", "feed": "^5.1.0", "file-type": "^19.5.0", "fluent-ffmpeg": "^2.1.2", "fs-extra": "^11.2.0", "htmlparser2": "^9.0.0", "ioredis": "^5.3.2", "isomorphic-dompurify": "^2.7.0", "jsonld": "^8.3.2", "jsonwebtoken": "^9.0.0", "link-preview-js": "^3.0.14", "mariadb": "^2.5.5", "mfm-js": "^0.24.0", "multer": "^2.0.2", "node-cron": "^4.2.1", "node-stream-zip": "^1.15.0", "nodemailer": "^6.7.2", "otpauth": "^9.4.0", "pg": "^8.11.0", "pg-hstore": "^2.3.4", "pino": "^8.11.0", "pino-http": "^10.2.0", "pino-pretty": "^9.4.0", "plc-did-resolver": "^1.0.0", "pony-cause": "^2.1.11", "postcss-safe-parser": "^7.0.1", "reflect-metadata": "^0.2.2", "rehype-parse": "^9.0.1", "rehype-stringify": "^10.0.1", "rxjs": "^7.8.2", "sanitize-html": "^2.13.1", "sequelize": "^6.37.3", "sequelize-typescript": "^2.1.6", "sharp": "^0.33.4", "showdown": "^2.1.0", "sshpk": "^1.17.0", "stream-mime-type": "^2.0.0", "swagger-autogen": "^2.21.5", "swagger-ui-express": "^4.5.0", "tsx": "^4.20.3", "turndown": "^7.2.0", "typescript": "^5.8.0", "umzug": "^3.8.2", "underscore": "^1.13.6", "undici": "^7.16.0", "unified": "^11.0.5", "unzip-stream": "^0.3.4", "uuid": "^11.1.0", "web-push": "^3.6.7" }, "devDependencies": { "eslint": "^9.13.0", "eslint-config-google": "^0.14.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", "prettier": "^3.4.2" } }