unoffical wafrn mirror
wafrn.net
atproto
social-network
activitypub
1{
2 "name": "wafrn-backend",
3 "version": "2025.12.05",
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.18.0",
24 "@atproto/identity": "^0.4.9",
25 "@atproto/sync": "^0.1.36",
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.5",
31 "@types/archiver": "^6.0.3",
32 "@types/bcrypt": "5.0.0",
33 "@types/body-parser": "^1.19.5",
34 "@types/color": "^4.2.0",
35 "@types/cors": "^2.8.12",
36 "@types/dompurify": "^3.0.5",
37 "@types/express": "^4.17.21",
38 "@types/express-ws": "^3.0.5",
39 "@types/fluent-ffmpeg": "^2.1.27",
40 "@types/fs-extra": "^11.0.4",
41 "@types/jsonld": "^1.5.8",
42 "@types/jsonwebtoken": "^8.5.8",
43 "@types/multer": "^1.4.7",
44 "@types/node": "^20.14.13",
45 "@types/nodemailer": "^6.4.14",
46 "@types/postcss-safe-parser": "^5.0.4",
47 "@types/sanitize-html": "^2.13.0",
48 "@types/sequelize": "^4.28.20",
49 "@types/showdown": "^2.0.6",
50 "@types/swagger-ui-express": "^4.1.3",
51 "@types/underscore": "^1.11.5",
52 "@types/unzip-stream": "^0.3.4",
53 "@types/uuid": "^10.0.0",
54 "@types/validator": "^13.12.0",
55 "@types/web-push": "^3.6.4",
56 "@typescript-eslint/eslint-plugin": "^8.39.1",
57 "@typescript-eslint/parser": "^8.39.1",
58 "archiver": "^7.0.1",
59 "atproto-firehose": "^0.2.2",
60 "axios": "^1.8.2",
61 "bcrypt": "^6.0.0",
62 "blurhash": "^2.0.5",
63 "body-parser": "^1.20.3",
64 "bullmq": "^5.8.4",
65 "cacher": "^3.0.0",
66 "cheerio": "^1.1.0",
67 "color": "^4.2.3",
68 "cors": "^2.8.5",
69 "csv-parse": "^5.4.0",
70 "did-resolver": "^4.1.0",
71 "dompurify": "^3.2.4",
72 "exiftool": "^0.0.3",
73 "expo-server-sdk": "^3.14.0",
74 "express": "^4.21.2",
75 "express-rate-limit": "^6.7.0",
76 "express-ws": "^5.0.2",
77 "feed": "^5.1.0",
78 "file-type": "^19.5.0",
79 "fluent-ffmpeg": "^2.1.2",
80 "fs-extra": "^11.2.0",
81 "htmlparser2": "^9.0.0",
82 "ioredis": "^5.3.2",
83 "isomorphic-dompurify": "^2.7.0",
84 "jsonld": "^8.3.2",
85 "jsonwebtoken": "^9.0.0",
86 "link-preview-js": "^3.0.14",
87 "mariadb": "^2.5.5",
88 "mfm-js": "^0.24.0",
89 "multer": "^2.0.2",
90 "node-cron": "^4.2.1",
91 "node-stream-zip": "^1.15.0",
92 "nodemailer": "^6.7.2",
93 "otpauth": "^9.4.0",
94 "pg": "^8.11.0",
95 "pg-hstore": "^2.3.4",
96 "pino": "^8.11.0",
97 "pino-http": "^10.2.0",
98 "pino-pretty": "^9.4.0",
99 "plc-did-resolver": "^1.0.0",
100 "pony-cause": "^2.1.11",
101 "postcss-safe-parser": "^7.0.1",
102 "reflect-metadata": "^0.2.2",
103 "rehype-parse": "^9.0.1",
104 "rehype-stringify": "^10.0.1",
105 "rxjs": "^7.8.2",
106 "sanitize-html": "^2.13.1",
107 "sequelize": "^6.37.3",
108 "sequelize-typescript": "^2.1.6",
109 "sharp": "^0.33.4",
110 "showdown": "^2.1.0",
111 "sshpk": "^1.17.0",
112 "stream-mime-type": "^2.0.0",
113 "swagger-autogen": "^2.21.5",
114 "swagger-ui-express": "^4.5.0",
115 "tsx": "^4.20.3",
116 "turndown": "^7.2.0",
117 "typescript": "^5.8.0",
118 "umzug": "^3.8.2",
119 "underscore": "^1.13.6",
120 "undici": "^7.16.0",
121 "unified": "^11.0.5",
122 "unzip-stream": "^0.3.4",
123 "uuid": "^11.1.0",
124 "web-push": "^3.6.7"
125 },
126 "devDependencies": {
127 "eslint": "^9.13.0",
128 "eslint-config-google": "^0.14.0",
129 "eslint-config-prettier": "^9.1.0",
130 "eslint-plugin-prettier": "^5.2.1",
131 "prettier": "^3.4.2"
132 }
133}