mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-05-07 06:12:50 +08:00
* chore: upgrade dependencies - dompurify 3.3.1 → 3.3.2 - naive-ui 2.43.2 → 2.44.0 - vue-i18n 11.2.8 → 11.3.0 - @cloudflare/workers-types 4.20260305.1 → 4.20260307.1 - @types/node 25.3.3 → 25.3.5 - wrangler 4.70.0 → 4.71.0 (all subprojects) * feat: upgrade @simplewebauthn packages from v10 to v13 Breaking changes addressed: - [v11] startRegistration/startAuthentication now take object param - [v11] registrationInfo.credential replaces flat destructuring - [v11] authenticator param renamed to credential in verifyAuthenticationResponse - [v13] @simplewebauthn/types removed, types imported from @simplewebauthn/server Packages: - @simplewebauthn/server: 10.0.1 → 13.2.3 - @simplewebauthn/browser: 10.0.0 → 13.2.2 - @simplewebauthn/types: removed (deprecated) * test: add passkey API E2E tests - User registration and login flow - register_request/authenticate_request return valid WebAuthn options - authenticate_response with invalid credential returns 404 - register_response with invalid credential returns error - Passkey list empty for new user - Rename/delete operations with validation * fix: use UI login instead of localStorage injection in browser passkey test The localStorage approach doesn't work with VueUse's useStorage because it doesn't detect external changes during page navigation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: hash password before registration to match frontend login behavior The frontend hashes passwords with SHA-256 before sending to the API. Registration via API must use the same hashed password so that UI login matches the stored value. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: allow crypto.subtle in Docker browser tests The frontend uses crypto.subtle for password hashing, which requires a secure context (HTTPS or localhost). In Docker, the frontend runs at http://frontend:5173 which is not a secure context. Add Chromium flag to treat this origin as secure. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: serve frontend over HTTPS in Docker for WebAuthn secure context WebAuthn (navigator.credentials) and crypto.subtle both require a secure context (HTTPS or localhost). The Docker frontend was serving over HTTP, making passkey operations impossible. Changes: - Generate self-signed cert in Dockerfile.frontend - Configure Vite to serve over HTTPS - Update FRONTEND_URL to https:// - Add ignoreHTTPSErrors to Playwright browser config - Use localStorage injection for passkey test login Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add Vite proxy to avoid mixed-content blocking in HTTPS Docker frontend HTTPS pages cannot make HTTP API requests (mixed content). Add a Vite proxy for all API paths so the browser makes same-origin HTTPS requests, which Vite proxies to the HTTP worker server-to-server. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: store userJwt without JSON.stringify in localStorage VueUse's useStorage with a string default uses raw string serialization (no JSON wrapping). Using JSON.stringify added double quotes around the JWT token, causing 401 Unauthorized from the worker. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: clean up passkey API test per review feedback Remove unused variables and rename test to match actual behavior. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
61 lines
2.3 KiB
JSON
61 lines
2.3 KiB
JSON
{
|
|
"name": "cloudflare_temp_email",
|
|
"version": "1.5.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build -m prod --emptyOutDir",
|
|
"build:release": "vite build -m example --emptyOutDir",
|
|
"build:pages": "vite build -m pages --emptyOutDir",
|
|
"build:pages:nopwa": "VITE_PWA_DISABLED=true vite build -m pages --emptyOutDir",
|
|
"build:telegram": "VITE_IS_TELEGRAM=true vite build -m prod --emptyOutDir",
|
|
"build:telegram:pages": "VITE_IS_TELEGRAM=true vite build -m pages --emptyOutDir",
|
|
"build:telegram:release": "VITE_IS_TELEGRAM=true vite build -m example --emptyOutDir",
|
|
"preview": "vite preview",
|
|
"deploy:telegram": "npm run build:telegram && wrangler pages deploy ./dist --branch production",
|
|
"deploy:actions:telegram": "npm run build:telegram && wrangler pages deploy ./dist",
|
|
"deploy:preview": "npm run build && wrangler pages deploy ./dist --branch preview",
|
|
"deploy": "npm run build && wrangler pages deploy ./dist --branch production",
|
|
"deploy:actions": "npm run build && wrangler pages deploy ./dist",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest"
|
|
},
|
|
"dependencies": {
|
|
"@fingerprintjs/fingerprintjs": "^5.1.0",
|
|
"@simplewebauthn/browser": "13.2.2",
|
|
"@unhead/vue": "^2.1.10",
|
|
"@vueuse/core": "^14.2.1",
|
|
"@wangeditor/editor": "^5.1.23",
|
|
"@wangeditor/editor-for-vue": "^5.1.12",
|
|
"axios": "^1.13.6",
|
|
"dompurify": "^3.3.2",
|
|
"jszip": "^3.10.1",
|
|
"mail-parser-wasm": "^0.2.1",
|
|
"naive-ui": "^2.44.0",
|
|
"postal-mime": "^2.7.3",
|
|
"vooks": "^0.2.12",
|
|
"vue": "^3.5.29",
|
|
"vue-clipboard3": "^2.0.0",
|
|
"vue-i18n": "^11.3.0",
|
|
"vue-router": "^4.6.4"
|
|
},
|
|
"devDependencies": {
|
|
"@vicons/fa": "^0.13.0",
|
|
"@vicons/material": "^0.13.0",
|
|
"@vitejs/plugin-vue": "^6.0.4",
|
|
"jsdom": "^28.1.0",
|
|
"unplugin-auto-import": "^20.3.0",
|
|
"unplugin-vue-components": "^30.0.0",
|
|
"vite": "^7.3.1",
|
|
"vite-plugin-pwa": "^1.2.0",
|
|
"vite-plugin-top-level-await": "^1.6.0",
|
|
"vite-plugin-wasm": "^3.5.0",
|
|
"vitest": "^3.2.4",
|
|
"workbox-build": "^7.4.0",
|
|
"workbox-window": "^7.4.0",
|
|
"wrangler": "^4.71.0"
|
|
},
|
|
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"
|
|
}
|