-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpackage.json
More file actions
102 lines (102 loc) · 3.74 KB
/
Copy pathpackage.json
File metadata and controls
102 lines (102 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
{
"name": "saasmail",
"version": "0.5.2",
"private": true,
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"deploy": "vite build && wrangler deploy --minify",
"deploy:demo": "vite build && wrangler deploy --minify --config wrangler.demo.jsonc",
"auth:generate": "npx @better-auth/cli@latest generate --config worker/src/auth/index.ts --output worker/src/db/auth.schema.ts -y",
"auth:migrate": "npx @better-auth/cli@latest migrate --config worker/src/auth/index.ts",
"db:generate": "drizzle-kit generate",
"db:migrate:dev": "wrangler d1 migrations apply saasmail-db --local",
"db:migrate:prod": "wrangler d1 migrations apply saasmail-db --remote",
"db:seed:dev": "wrangler d1 execute saasmail-db --local --file=seeds/demo.sql && bash seeds/upload-attachments.sh",
"db:studio:dev": "drizzle-kit studio",
"db:studio:prod": "NODE_ENV=production drizzle-kit studio",
"cf-typegen": "node scripts/cf-typegen.mjs",
"vapid:generate": "tsx scripts/generate-vapid.ts",
"test": "vitest run --config vitest.config.test.ts",
"test:watch": "vitest --config vitest.config.test.ts",
"prepare": "husky",
"format": "prettier --write .",
"format:check": "prettier --check .",
"dev:e2e": "DEMO_MODE=1 DISABLE_PASSKEY_GATE=true vite dev --port 8788",
"db:reset:e2e": "node e2e/scripts/wipe-db.mjs",
"test:e2e": "node e2e/scripts/wipe-db.mjs && playwright test",
"test:e2e:ui": "playwright test --ui",
"test:e2e:debug": "PWDEBUG=1 playwright test"
},
"lint-staged": {
"*.{js,jsx,ts,tsx,json,css,md,html}": "prettier --write"
},
"dependencies": {
"@asteasolutions/zod-to-openapi": "8.5.0",
"@better-auth/passkey": "^1.6.11",
"@codemirror/lang-html": "^6.4.11",
"@codemirror/state": "^6.6.0",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.43.0",
"@hono/swagger-ui": "^0.6.1",
"@hono/zod-openapi": "^1.3.0",
"@opentelemetry/api": "^1.9.1",
"@paper-design/shaders-react": "^0.0.76",
"@radix-ui/react-avatar": "^1.1.11",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-separator": "^1.1.8",
"@radix-ui/react-slot": "^1.2.4",
"@tanstack/react-query": "^5.83.0",
"@tiptap/extension-image": "^3.23.6",
"@tiptap/extension-placeholder": "^3.23.6",
"@tiptap/pm": "^3.23.6",
"@tiptap/react": "^3.23.6",
"@tiptap/starter-kit": "^3.23.6",
"@types/dompurify": "^3.2.0",
"better-auth": "^1.6.11",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"codemirror": "^6.0.2",
"dompurify": "^3.4.0",
"drizzle-orm": "^0.45.2",
"hono": "^4.12.18",
"lucide-react": "^1.8.0",
"mimetext": "^3.0.28",
"nanoid": "^5.1.5",
"postal-mime": "^2.4.1",
"react": "^19.2.5",
"react-dom": "^19.2.5",
"react-router-dom": "^6.30.1",
"resend": "^6.9.2",
"tailwind-merge": "^3.0.2",
"zod": "^4.3.6"
},
"devDependencies": {
"@cloudflare/vite-plugin": "^1.38.0",
"@cloudflare/vitest-pool-workers": "^0.16.9",
"@cloudflare/workers-types": "^4.20260525.1",
"@playwright/test": "^1.60.0",
"@tailwindcss/vite": "^4.1.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^18.3.6",
"@vitejs/plugin-react-swc": "^4.3.0",
"@vitest/runner": "^4.1.7",
"@vitest/snapshot": "^4.1.7",
"autoprefixer": "^10.4.21",
"drizzle-kit": "^0.31.1",
"husky": "^9.1.7",
"lint-staged": "^16.4.0",
"postcss": "^8.5.10",
"prettier": "^3.8.3",
"tailwindcss": "^4.1.0",
"tsx": "^4.22.3",
"typescript": "^5.8.3",
"vite": "^7.0.0",
"vitest": "^4.1.7",
"wrangler": "^4.84.1"
}
}