mirror of
https://github.com/root-fr/jmap-webmail.git
synced 2026-09-27 08:01:19 +00:00
- Setup Vitest testing framework with React Testing Library - Add 27 test cases for email-sanitization.ts - XSS prevention (scripts, event handlers, iframes) - Safe HTML preservation (tables, formatting) - Signature-specific sanitization rules - HTML parsing safety checks - Add 29 test cases for validation.ts - RFC 5322 email validation - Header injection prevention - Length limit enforcement - Email list validation Coverage: >90% for both security-critical utilities Zero new runtime dependencies (dev-only) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
77 lines
2.0 KiB
JSON
77 lines
2.0 KiB
JSON
{
|
|
"name": "jmap-webmail",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"description": "A modern JMAP webmail client built for Stalwart Mail Server",
|
|
"author": "Matthieu MALVACHE <matthieu@root.cloud>",
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/root-fr/jmap-webmail.git"
|
|
},
|
|
"homepage": "https://github.com/root-fr/jmap-webmail",
|
|
"bugs": {
|
|
"url": "https://github.com/root-fr/jmap-webmail/issues"
|
|
},
|
|
"keywords": [
|
|
"jmap",
|
|
"webmail",
|
|
"stalwart",
|
|
"email",
|
|
"nextjs",
|
|
"react",
|
|
"typescript"
|
|
],
|
|
"scripts": {
|
|
"dev": "next dev --turbopack",
|
|
"build": "next build --turbopack",
|
|
"start": "next start",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"prepare": "husky",
|
|
"typecheck": "tsc --noEmit",
|
|
"seed:demo": "npx tsx scripts/seed-demo.ts",
|
|
"test": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:coverage": "vitest --coverage"
|
|
},
|
|
"dependencies": {
|
|
"@types/dompurify": "^3.0.5",
|
|
"clsx": "^2.1.1",
|
|
"date-fns": "^4.1.0",
|
|
"dompurify": "^3.2.7",
|
|
"jmap-jam": "^0.13.1",
|
|
"lucide-react": "^0.562.0",
|
|
"next": "^16.0.8",
|
|
"next-auth": "^4.24.11",
|
|
"next-intl": "^4.5.8",
|
|
"react": "^19.2.1",
|
|
"react-dom": "^19.2.1",
|
|
"tailwind-merge": "^3.3.1",
|
|
"zustand": "^5.0.9"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/postcss": "^4",
|
|
"@testing-library/dom": "^10.4.1",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.1",
|
|
"@types/node": "^22",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"@typescript-eslint/eslint-plugin": "^8.49.0",
|
|
"@typescript-eslint/parser": "^8.49.0",
|
|
"@vitejs/plugin-react": "^5.1.2",
|
|
"@vitest/ui": "^4.0.16",
|
|
"eslint": "^9.39.1",
|
|
"eslint-config-next": "^16.0.8",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"globals": "^16.5.0",
|
|
"husky": "^9.1.7",
|
|
"jsdom": "^27.4.0",
|
|
"lint-staged": "^16.2.7",
|
|
"tailwindcss": "^4.1.17",
|
|
"typescript": "^5",
|
|
"vitest": "^4.0.16"
|
|
}
|
|
}
|