unoffical wafrn mirror
wafrn.net
atproto
social-network
activitypub
1{
2 "name": "wafrn-backend",
3 "version": "2025.09.01",
4 "description": "wafrn backend",
5 "main": "index.js",
6 "type": "module",
7 "scripts": {
8 "start": "tsx index.ts",
9 "migration:generate": "tsx migrate.ts create",
10 "db:migrate:status": "tsx migrate.ts pending && echo '-----' && tsx migrate.ts executed",
11 "db:migrate": "tsx migrate.ts up",
12 "db:rollback": "tsx migrate.ts down",
13 "test": "echo \"Error: no test specified\" && exit 1",
14 "type-check": "tsc --noEmit",
15 "lint": "eslint .",
16 "prettier-format": "prettier --config .prettierrc '**/*.ts' --write"
17 },
18 "author": "",
19 "license": "MIT",
20 "dependencies": {
21 "@atcute/bluesky-richtext-builder": "^1.0.2",
22 "@atcute/bluesky-richtext-parser": "^1.0.7",
23 "@atproto/api": "^0.13.35",
24 "@atproto/identity": "^0.4.8",
25 "@atproto/sync": "^0.1.4",
26 "@opera7133/mfmp": "^1.0.2-5",
27 "@peertube/http-signature": "^1.7.0",
28 "@rushstack/ts-command-line": "^5.0.0",
29 "@skyware/firehose": "^0.3.2",
30 "@skyware/jetstream": "^0.2.0",
31 "@types/archiver": "^6.0.3",
32 "@types/bcrypt": "5.0.0",
33 "@types/body-parser": "^1.19.5",
34 "@types/cors": "^2.8.12",
35 "@types/dompurify": "^3.0.5",
36 "@types/express": "^4.17.21",
37 "@types/express-ws": "^3.0.5",
38 "@types/fluent-ffmpeg": "^2.1.27",
39 "@types/fs-extra": "^11.0.4",
40 "@types/jsonld": "^1.5.8",
41 "@types/jsonwebtoken": "^8.5.8",
42 "@types/multer": "^1.4.7",
43 "@types/node": "^20.14.13",
44 "@types/nodemailer": "^6.4.14",
45 "@types/sanitize-html": "^2.13.0",
46 "@types/sequelize": "^4.28.20",
47 "@types/showdown": "^2.0.6",
48 "@types/swagger-ui-express": "^4.1.3",
49 "@types/underscore": "^1.11.5",
50 "@types/unzip-stream": "^0.3.4",
51 "@types/uuid": "^10.0.0",
52 "@types/validator": "^13.12.0",
53 "@types/web-push": "^3.6.4",
54 "@typescript-eslint/eslint-plugin": "^8.39.1",
55 "@typescript-eslint/parser": "^8.39.1",
56 "archiver": "^7.0.1",
57 "atproto-firehose": "^0.2.2",
58 "axios": "^1.8.2",
59 "bcrypt": "^6.0.0",
60 "blurhash": "^2.0.5",
61 "body-parser": "^1.20.3",
62 "bullmq": "^5.8.4",
63 "cacher": "^3.0.0",
64 "cheerio": "^1.1.0",
65 "cors": "^2.8.5",
66 "csv-parse": "^5.4.0",
67 "did-resolver": "^4.1.0",
68 "dompurify": "^3.2.4",
69 "exiftool": "^0.0.3",
70 "expo-server-sdk": "^3.14.0",
71 "express": "^4.21.2",
72 "express-rate-limit": "^6.7.0",
73 "express-ws": "^5.0.2",
74 "feed": "^5.1.0",
75 "file-type": "^19.5.0",
76 "fluent-ffmpeg": "^2.1.2",
77 "fs-extra": "^11.2.0",
78 "htmlparser2": "^9.0.0",
79 "ioredis": "^5.3.2",
80 "isomorphic-dompurify": "^2.7.0",
81 "jsonld": "^8.3.2",
82 "jsonwebtoken": "^9.0.0",
83 "link-preview-js": "^3.0.14",
84 "mariadb": "^2.5.5",
85 "mfm-js": "^0.24.0",
86 "multer": "^2.0.2",
87 "node-cron": "^4.2.1",
88 "node-stream-zip": "^1.15.0",
89 "nodemailer": "^6.7.2",
90 "otpauth": "^9.4.0",
91 "pg": "^8.11.0",
92 "pg-hstore": "^2.3.4",
93 "pino": "^8.11.0",
94 "pino-http": "^10.2.0",
95 "pino-pretty": "^9.4.0",
96 "plc-did-resolver": "^1.0.0",
97 "pony-cause": "^2.1.11",
98 "reflect-metadata": "^0.2.2",
99 "rxjs": "^7.8.2",
100 "sanitize-html": "^2.13.1",
101 "sequelize": "^6.37.3",
102 "sequelize-typescript": "^2.1.6",
103 "sharp": "^0.33.4",
104 "showdown": "^2.1.0",
105 "sshpk": "^1.17.0",
106 "stream-mime-type": "^2.0.0",
107 "swagger-autogen": "^2.21.5",
108 "swagger-ui-express": "^4.5.0",
109 "tsx": "^4.20.3",
110 "turndown": "^7.2.0",
111 "typescript": "^5.8.0",
112 "umzug": "^3.8.2",
113 "underscore": "^1.13.6",
114 "unzip-stream": "^0.3.4",
115 "uuid": "^11.1.0",
116 "web-push": "^3.6.7"
117 },
118 "devDependencies": {
119 "eslint": "^9.13.0",
120 "eslint-config-google": "^0.14.0",
121 "eslint-config-prettier": "^9.1.0",
122 "eslint-plugin-prettier": "^5.2.1",
123 "prettier": "^3.4.2"
124 }
125}