From e5f62d4713e19c58a7b856e06192ee5cd46ff14f Mon Sep 17 00:00:00 2001 From: Dream Hunter Date: Mon, 15 Dec 2025 02:55:50 +0800 Subject: [PATCH] feat: optimize email filtering with frontend-only search (#787) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: optimize email filtering with frontend-only search - Remove backend keyword parameter from mail APIs (breaking change) - Implement frontend filtering on current page (20-100 items) - Add message_id database index for UPDATE performance - Support desktop and mobile responsive layouts - Update API documentation and CHANGELOG BREAKING CHANGE: /admin/mails and /user_api/mails no longer accept keyword parameter 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude Sonnet 4.5 * fix: restore Mail ID query input in Index.vue - Keep showMailIdQuery UI input for querying specific mail by ID - Triggered when URL contains mail_id parameter 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude Sonnet 4.5 --------- Co-authored-by: Claude Sonnet 4.5 --- CHANGELOG.md | 2 + db/2025-12-15-message-id-index.sql | 4 + db/schema.sql | 2 + frontend/package.json | 2 +- frontend/pnpm-lock.yaml | 182 ++--- frontend/src/components/MailBox.vue | 49 +- frontend/src/views/Index.vue | 2 +- frontend/src/views/admin/Mails.vue | 10 +- frontend/src/views/user/UserMailBox.vue | 8 +- .../docs/en/guide/feature/mail-api.md | 18 +- .../docs/zh/guide/feature/mail-api.md | 18 +- vitepress-docs/package.json | 2 +- vitepress-docs/pnpm-lock.yaml | 52 +- worker/package.json | 6 +- worker/pnpm-lock.yaml | 662 ++++++++---------- worker/src/admin_api/admin_mail_api.ts | 8 +- worker/src/user_api/user_mail_api.ts | 8 +- 17 files changed, 489 insertions(+), 546 deletions(-) create mode 100644 db/2025-12-15-message-id-index.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index 186020e0..12bf4420 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ## v1.2.0(main) +- feat: |邮件过滤| 移除后端 keyword 参数,改为前端过滤当前页邮件,优化查询性能 +- feat: |数据库| 为 `message_id` 字段添加索引,优化邮件更新操作性能,需执行 `db/2025-12-15-message-id-index.sql` 更新数据库 - feat: |Admin| 维护页面增加自定义 SQL 清理功能,支持定时任务执行自定义清理语句 ## v1.1.0 diff --git a/db/2025-12-15-message-id-index.sql b/db/2025-12-15-message-id-index.sql new file mode 100644 index 00000000..0f7c8990 --- /dev/null +++ b/db/2025-12-15-message-id-index.sql @@ -0,0 +1,4 @@ +-- Add index on message_id column in raw_mails table +-- This index improves performance for queries filtering/updating by message_id +-- Example: UPDATE raw_mails SET metadata = ? WHERE message_id = ? +CREATE INDEX IF NOT EXISTS idx_raw_mails_message_id ON raw_mails(message_id); diff --git a/db/schema.sql b/db/schema.sql index 56057608..7c2ccf4f 100644 --- a/db/schema.sql +++ b/db/schema.sql @@ -12,6 +12,8 @@ CREATE INDEX IF NOT EXISTS idx_raw_mails_address ON raw_mails(address); CREATE INDEX IF NOT EXISTS idx_raw_mails_created_at ON raw_mails(created_at); +CREATE INDEX IF NOT EXISTS idx_raw_mails_message_id ON raw_mails(message_id); + CREATE TABLE IF NOT EXISTS address ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE, diff --git a/frontend/package.json b/frontend/package.json index cc6a9133..0fe66b64 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -40,7 +40,7 @@ "devDependencies": { "@vicons/fa": "^0.13.0", "@vicons/material": "^0.13.0", - "@vitejs/plugin-vue": "^6.0.2", + "@vitejs/plugin-vue": "^6.0.3", "unplugin-auto-import": "^20.3.0", "unplugin-vue-components": "^30.0.0", "vite": "^7.2.7", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 945a02fe..6e6fab71 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^5.0.1 version: 5.0.1 '@simplewebauthn/browser': - specifier: 13.2.2 - version: 13.2.2 + specifier: 10.0.0 + version: 10.0.0 '@unhead/vue': specifier: ^2.0.19 version: 2.0.19(vue@3.5.25(typescript@5.4.5)) @@ -64,8 +64,8 @@ importers: specifier: ^0.13.0 version: 0.13.0 '@vitejs/plugin-vue': - specifier: ^6.0.2 - version: 6.0.2(vite@7.2.7(terser@5.44.1))(vue@3.5.25(typescript@5.4.5)) + specifier: ^6.0.3 + version: 6.0.3(vite@7.2.7(terser@5.44.1))(vue@3.5.25(typescript@5.4.5)) unplugin-auto-import: specifier: ^20.3.0 version: 20.3.0(@vueuse/core@14.1.0(vue@3.5.25(typescript@5.4.5))) @@ -1129,17 +1129,17 @@ packages: '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - '@poppinss/colors@4.1.5': - resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} '@poppinss/dumper@0.6.5': resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - '@poppinss/exception@1.2.2': - resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - '@rolldown/pluginutils@1.0.0-beta.50': - resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==} + '@rolldown/pluginutils@1.0.0-beta.53': + resolution: {integrity: sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==} '@rollup/plugin-babel@5.3.1': resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} @@ -1309,8 +1309,12 @@ packages: cpu: [x64] os: [win32] - '@simplewebauthn/browser@13.2.2': - resolution: {integrity: sha512-FNW1oLQpTJyqG5kkDg5ZsotvWgmBaC6jCHR7Ej0qUNep36Wl9tj2eZu7J5rP+uhXgHaLk+QQ3lqcw2vS5MX1IA==} + '@simplewebauthn/browser@10.0.0': + resolution: {integrity: sha512-hG0JMZD+LiLUbpQcAjS4d+t4gbprE/dLYop/CkE01ugU/9sKXflxV5s0DRjdz3uNMFecatRfb4ZLG3XvF8m5zg==} + + '@simplewebauthn/types@10.0.0': + resolution: {integrity: sha512-SFXke7xkgPRowY2E+8djKbdEznTVnD5R6GO7GPTthpHrokLvNKw8C3lFZypTxLI7KkCfGPfhtqB3d7OVGGa9jQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@sindresorhus/is@7.1.1': resolution: {integrity: sha512-rO92VvpgMc3kfiTjGT52LEtJ8Yc5kCWhZjLQ3LwlA4pSgPpQO7bVpYXParOD8Jwf+cVQECJo3yP/4I8aZtUQTQ==} @@ -1322,68 +1326,68 @@ packages: '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} - '@swc/core-darwin-arm64@1.15.3': - resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} + '@swc/core-darwin-arm64@1.15.4': + resolution: {integrity: sha512-NU/Of+ShFGG/i0lXKsF6GaGeTBNsr9iD8uUzdXxFfGbEjTeuKNXc5CWn3/Uo4Gr4LMAGD3hsRwG2Jq5iBDMalw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.15.3': - resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==} + '@swc/core-darwin-x64@1.15.4': + resolution: {integrity: sha512-9oWYMZHiEfHLqjjRGrXL17I8HdAOpWK/Rps34RKQ74O+eliygi1Iyq1TDUzYqUXcNvqN2K5fHgoMLRIni41ClQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.15.3': - resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==} + '@swc/core-linux-arm-gnueabihf@1.15.4': + resolution: {integrity: sha512-I1dPxXli3N1Vr71JXogUTLcspM5ICgCYaA16RE+JKchj3XKKmxLlYjwAHAA4lh/Cy486ikzACaG6pIBcegoGkg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.15.3': - resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==} + '@swc/core-linux-arm64-gnu@1.15.4': + resolution: {integrity: sha512-iGpuS/2PDZ68ioAlhkxiN5M4+pB9uDJolTKk4mZ0JM29uFf9YIkiyk7Bbr2y1QtmD82rF0tDHhoG9jtnV8mZMg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.15.3': - resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==} + '@swc/core-linux-arm64-musl@1.15.4': + resolution: {integrity: sha512-Ly95wc+VXDhl08pjAoPUhVu5vNbuPMbURknRZa5QOZuiizJ6DkaSI0/zsEc26PpC6HTc4prNLY3ARVwZ7j/IJQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.15.3': - resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==} + '@swc/core-linux-x64-gnu@1.15.4': + resolution: {integrity: sha512-7pIG0BnaMn4zTpHeColPwyrWoTY9Drr+ISZQIgYHUKh3oaPtNCrXb289ScGbPPPjLsSfcGTeOy2pXmNczMC+yg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.15.3': - resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==} + '@swc/core-linux-x64-musl@1.15.4': + resolution: {integrity: sha512-oaqTV25V9H+PpSkvTcK25q6Q56FvXc6d2xBu486dv9LAPCHWgeAworE8WpBLV26g8rubcN5nGhO5HwSunXA7Ww==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.15.3': - resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==} + '@swc/core-win32-arm64-msvc@1.15.4': + resolution: {integrity: sha512-VcPuUJw27YbGo1HcOaAriI50dpM3ZZeDW3x2cMnJW6vtkeyzUFk1TADmTwFax0Fn+yicCxhaWjnFE3eAzGAxIQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.15.3': - resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==} + '@swc/core-win32-ia32-msvc@1.15.4': + resolution: {integrity: sha512-dREjghAZEuKAK9nQzJETAiCSihSpAVS6Vk9+y2ElaoeTj68tNB1txV/m1RTPPD/+Kgbz6ITPNyXRWxPdkP5aXw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.15.3': - resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==} + '@swc/core-win32-x64-msvc@1.15.4': + resolution: {integrity: sha512-o/odIBuQkoxKbRweJWOMI9LeRSOenFKN2zgPeaaNQ/cyuVk2r6DCAobKMOodvDdZWlMn6N1xJrldeCRSTZIgiQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.15.3': - resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==} + '@swc/core@1.15.4': + resolution: {integrity: sha512-fH81BPo6EiJ7BUb6Qa5SY/NLWIRVambqU3740g0XPFPEz5KFPnzRYpR6zodQNOcEb9XUtZzRO1Y0WyIJP7iBxQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -1397,8 +1401,8 @@ packages: '@swc/types@0.1.25': resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} - '@swc/wasm@1.15.3': - resolution: {integrity: sha512-NrjGmAplk+v4wokIaLxp1oLoCMVqdQcWoBXopQg57QqyPRcJXLKe+kg5ehhW6z8XaU4Bu5cRkDxUTDY5P0Zy9Q==} + '@swc/wasm@1.15.4': + resolution: {integrity: sha512-waPWVrijKwM8qpUEJGpnQRDlpNE4nQyRmPxjjbJ+5dpmua132o1Nd9f5KQQIgVQqAKSKshKMHskIec8ussNsUg==} '@transloadit/prettier-bytes@0.0.7': resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==} @@ -1458,11 +1462,11 @@ packages: '@vicons/material@0.13.0': resolution: {integrity: sha512-lKVxFNprM+CaBkUH3gt6VjIeiMsKQl2zARQMwTCZruQl2vRHzyeZiKeCflWS99CEfv2JzX/6y697smxlzyxcVw==} - '@vitejs/plugin-vue@6.0.2': - resolution: {integrity: sha512-iHmwV3QcVGGvSC1BG5bZ4z6iwa1SOpAPWmnjOErd4Ske+lZua5K9TtAVdx0gMBClJ28DViCbSmZitjWZsWO3LA==} + '@vitejs/plugin-vue@6.0.3': + resolution: {integrity: sha512-TlGPkLFLVOY3T7fZrwdvKpjprR3s4fxRln0ORDo1VQ7HHyxJwTlrjKU3kpVWTlaAjIEuCTokmjkZnr8Tpc925w==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 vue: ^3.2.25 '@vue/compiler-core@3.5.25': @@ -1680,8 +1684,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.9.6: - resolution: {integrity: sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==} + baseline-browser-mapping@2.9.7: + resolution: {integrity: sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==} hasBin: true blake3-wasm@2.1.5: @@ -1871,8 +1875,8 @@ packages: error-stack-parser-es@1.0.5: resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -2844,8 +2848,8 @@ packages: resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} - unimport@5.5.0: - resolution: {integrity: sha512-/JpWMG9s1nBSlXJAQ8EREFTFy3oy6USFd8T6AoBaw1q2GGcF4R9yp3ofg32UODZlYEO5VD0EWE1RpI9XDWyPYg==} + unimport@5.6.0: + resolution: {integrity: sha512-8rqAmtJV8o60x46kBAJKtHpJDJWkA2xcBqWKPI14MgUb05o1pnpnCnXSxedUXyeq7p8fR5g3pTo2BaswZ9lD9A==} engines: {node: '>=18.12.0'} unique-string@2.0.0: @@ -4132,19 +4136,19 @@ snapshots: '@juggle/resize-observer@3.4.0': {} - '@poppinss/colors@4.1.5': + '@poppinss/colors@4.1.6': dependencies: kleur: 4.1.5 '@poppinss/dumper@0.6.5': dependencies: - '@poppinss/colors': 4.1.5 + '@poppinss/colors': 4.1.6 '@sindresorhus/is': 7.1.1 supports-color: 10.2.2 - '@poppinss/exception@1.2.2': {} + '@poppinss/exception@1.2.3': {} - '@rolldown/pluginutils@1.0.0-beta.50': {} + '@rolldown/pluginutils@1.0.0-beta.53': {} '@rollup/plugin-babel@5.3.1(@babel/core@7.28.5)(rollup@2.79.2)': dependencies: @@ -4264,7 +4268,11 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true - '@simplewebauthn/browser@13.2.2': {} + '@simplewebauthn/browser@10.0.0': + dependencies: + '@simplewebauthn/types': 10.0.0 + + '@simplewebauthn/types@10.0.0': {} '@sindresorhus/is@7.1.1': {} @@ -4277,51 +4285,51 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.12 - '@swc/core-darwin-arm64@1.15.3': + '@swc/core-darwin-arm64@1.15.4': optional: true - '@swc/core-darwin-x64@1.15.3': + '@swc/core-darwin-x64@1.15.4': optional: true - '@swc/core-linux-arm-gnueabihf@1.15.3': + '@swc/core-linux-arm-gnueabihf@1.15.4': optional: true - '@swc/core-linux-arm64-gnu@1.15.3': + '@swc/core-linux-arm64-gnu@1.15.4': optional: true - '@swc/core-linux-arm64-musl@1.15.3': + '@swc/core-linux-arm64-musl@1.15.4': optional: true - '@swc/core-linux-x64-gnu@1.15.3': + '@swc/core-linux-x64-gnu@1.15.4': optional: true - '@swc/core-linux-x64-musl@1.15.3': + '@swc/core-linux-x64-musl@1.15.4': optional: true - '@swc/core-win32-arm64-msvc@1.15.3': + '@swc/core-win32-arm64-msvc@1.15.4': optional: true - '@swc/core-win32-ia32-msvc@1.15.3': + '@swc/core-win32-ia32-msvc@1.15.4': optional: true - '@swc/core-win32-x64-msvc@1.15.3': + '@swc/core-win32-x64-msvc@1.15.4': optional: true - '@swc/core@1.15.3': + '@swc/core@1.15.4': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.15.3 - '@swc/core-darwin-x64': 1.15.3 - '@swc/core-linux-arm-gnueabihf': 1.15.3 - '@swc/core-linux-arm64-gnu': 1.15.3 - '@swc/core-linux-arm64-musl': 1.15.3 - '@swc/core-linux-x64-gnu': 1.15.3 - '@swc/core-linux-x64-musl': 1.15.3 - '@swc/core-win32-arm64-msvc': 1.15.3 - '@swc/core-win32-ia32-msvc': 1.15.3 - '@swc/core-win32-x64-msvc': 1.15.3 + '@swc/core-darwin-arm64': 1.15.4 + '@swc/core-darwin-x64': 1.15.4 + '@swc/core-linux-arm-gnueabihf': 1.15.4 + '@swc/core-linux-arm64-gnu': 1.15.4 + '@swc/core-linux-arm64-musl': 1.15.4 + '@swc/core-linux-x64-gnu': 1.15.4 + '@swc/core-linux-x64-musl': 1.15.4 + '@swc/core-win32-arm64-msvc': 1.15.4 + '@swc/core-win32-ia32-msvc': 1.15.4 + '@swc/core-win32-x64-msvc': 1.15.4 '@swc/counter@0.1.3': {} @@ -4329,7 +4337,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@swc/wasm@1.15.3': {} + '@swc/wasm@1.15.4': {} '@transloadit/prettier-bytes@0.0.7': {} @@ -4392,9 +4400,9 @@ snapshots: '@vicons/material@0.13.0': {} - '@vitejs/plugin-vue@6.0.2(vite@7.2.7(terser@5.44.1))(vue@3.5.25(typescript@5.4.5))': + '@vitejs/plugin-vue@6.0.3(vite@7.2.7(terser@5.44.1))(vue@3.5.25(typescript@5.4.5))': dependencies: - '@rolldown/pluginutils': 1.0.0-beta.50 + '@rolldown/pluginutils': 1.0.0-beta.53 vite: 7.2.7(terser@5.44.1) vue: 3.5.25(typescript@5.4.5) @@ -4608,7 +4616,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -4661,7 +4669,7 @@ snapshots: balanced-match@1.0.2: {} - baseline-browser-mapping@2.9.6: {} + baseline-browser-mapping@2.9.7: {} blake3-wasm@2.1.5: {} @@ -4671,7 +4679,7 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.6 + baseline-browser-mapping: 2.9.7 caniuse-lite: 1.0.30001760 electron-to-chromium: 1.5.267 node-releases: 2.0.27 @@ -4844,7 +4852,7 @@ snapshots: error-stack-parser-es@1.0.5: {} - es-abstract@1.24.0: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -5581,7 +5589,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -5845,7 +5853,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -5862,7 +5870,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -6011,7 +6019,7 @@ snapshots: unicode-property-aliases-ecmascript@2.2.0: {} - unimport@5.5.0: + unimport@5.6.0: dependencies: acorn: 8.15.0 escape-string-regexp: 5.0.0 @@ -6039,7 +6047,7 @@ snapshots: local-pkg: 1.1.2 magic-string: 0.30.21 picomatch: 4.0.3 - unimport: 5.5.0 + unimport: 5.6.0 unplugin: 2.3.11 unplugin-utils: 0.3.1 optionalDependencies: @@ -6104,8 +6112,8 @@ snapshots: vite-plugin-top-level-await@1.6.0(rollup@2.79.2)(vite@7.2.7(terser@5.44.1)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@2.79.2) - '@swc/core': 1.15.3 - '@swc/wasm': 1.15.3 + '@swc/core': 1.15.4 + '@swc/wasm': 1.15.4 uuid: 10.0.0 vite: 7.2.7(terser@5.44.1) transitivePeerDependencies: @@ -6382,12 +6390,12 @@ snapshots: youch-core@0.3.3: dependencies: - '@poppinss/exception': 1.2.2 + '@poppinss/exception': 1.2.3 error-stack-parser-es: 1.0.5 youch@4.1.0-beta.10: dependencies: - '@poppinss/colors': 4.1.5 + '@poppinss/colors': 4.1.6 '@poppinss/dumper': 0.6.5 '@speed-highlight/core': 1.2.12 cookie: 1.1.1 diff --git a/frontend/src/components/MailBox.vue b/frontend/src/components/MailBox.vue index baa5de4e..e1e2b7ea 100644 --- a/frontend/src/components/MailBox.vue +++ b/frontend/src/components/MailBox.vue @@ -49,20 +49,44 @@ const props = defineProps({ default: (mail_id, filename, blob) => { }, required: false }, + showFilterInput: { + type: Boolean, + default: false, + required: false + }, }) +const localFilterKeyword = ref('') + const { isDark, mailboxSplitSize, indexTab, loading, useUTCDate, autoRefresh, configAutoRefreshInterval, sendMailModel } = useGlobalState() const autoRefreshInterval = ref(configAutoRefreshInterval.value) -const data = ref([]) +const rawData = ref([]) const timer = ref(null) const count = ref(0) const page = ref(1) const pageSize = ref(20) +// Computed property for filtered data (only filter current page) +const data = computed(() => { + if (!localFilterKeyword.value || localFilterKeyword.value.trim() === '') { + return rawData.value; + } + const keyword = localFilterKeyword.value.toLowerCase(); + return rawData.value.filter(mail => { + // Search in subject, text, message fields + const searchFields = [ + mail.subject || '', + mail.text || '', + mail.message || '' + ].map(field => field.toLowerCase()); + return searchFields.some(field => field.includes(keyword)); + }); +}) + const canGoPrevMail = computed(() => { if (!curMail.value) return false const currentIndex = data.value.findIndex(mail => mail.id === curMail.value.id) @@ -136,6 +160,8 @@ const { t } = useI18n({ unselectAll: 'Unselect All', prevMail: 'Previous', nextMail: 'Next', + keywordQueryTip: 'Filter current page', + query: 'Query', }, zh: { success: '成功', @@ -158,6 +184,8 @@ const { t } = useI18n({ unselectAll: '取消全选', prevMail: '上一封', nextMail: '下一封', + keywordQueryTip: '过滤当前页', + query: '查询', } } }); @@ -197,7 +225,7 @@ const refresh = async () => { pageSize.value, (page.value - 1) * pageSize.value ); loading.value = true; - data.value = await Promise.all(results.map(async (item) => { + rawData.value = await Promise.all(results.map(async (item) => { item.checked = false; return await processItem(item); })); @@ -370,7 +398,7 @@ onBeforeUnmount(() => {
- + {{ t('cancelMultiAction') }} @@ -393,7 +421,7 @@ onBeforeUnmount(() => { {{ t('downloadMail') }} - + {{ t('multiAction') }} @@ -410,6 +438,9 @@ onBeforeUnmount(() => { {{ t('refresh') }} +
{
- -
- -
+ + diff --git a/frontend/src/views/user/UserMailBox.vue b/frontend/src/views/user/UserMailBox.vue index 69269668..00fa2576 100644 --- a/frontend/src/views/user/UserMailBox.vue +++ b/frontend/src/views/user/UserMailBox.vue @@ -10,12 +10,10 @@ const { t } = useI18n({ messages: { en: { addressQueryTip: 'Leave blank to query all addresses', - keywordQueryTip: 'Leave blank to not query by keyword', query: 'Query', }, zh: { addressQueryTip: '留空查询所有地址', - keywordQueryTip: '留空不按关键字查询', query: '查询', } } @@ -23,12 +21,10 @@ const { t } = useI18n({ const mailBoxKey = ref("") const addressFilter = ref(); -const mailKeyword = ref("") const addressFilterOptions = ref([]); const queryMail = () => { addressFilter.value = addressFilter.value ? addressFilter.value.trim() : addressFilter.value; - mailKeyword.value = mailKeyword.value.trim(); mailBoxKey.value = Date.now(); } @@ -38,7 +34,6 @@ const fetchMailData = async (limit, offset) => { + `?limit=${limit}` + `&offset=${offset}` + (addressFilter.value ? `&address=${addressFilter.value}` : '') - + (mailKeyword.value ? `&keyword=${mailKeyword.value}` : '') ); } @@ -77,13 +72,12 @@ onMounted(() => { - {{ t('query') }}
+ :deleteMail="deleteMail" :showFilterInput="true" />
diff --git a/vitepress-docs/docs/en/guide/feature/mail-api.md b/vitepress-docs/docs/en/guide/feature/mail-api.md index 05dc72ea..30aa982e 100644 --- a/vitepress-docs/docs/en/guide/feature/mail-api.md +++ b/vitepress-docs/docs/en/guide/feature/mail-api.md @@ -19,7 +19,7 @@ res = requests.get( ## Admin Mail API -Supports `address` filter and `keyword` filter +Supports `address` filter ```python import requests @@ -29,9 +29,8 @@ url = "https:///admin/mails" querystring = { "limit":"20", "offset":"0", - # address and keyword are optional parameters - "address":"xxxx@awsl.uk", - "keyword":"xxxx" + # address is optional parameter + "address":"xxxx@awsl.uk" } headers = {"x-admin-auth": ""} @@ -41,9 +40,11 @@ response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` +**Note**: Keyword filtering has been removed from the backend API. If you need to filter emails by content, please use the frontend filter input in the UI, which filters the currently displayed page. + ## User Mail API -Supports `address` filter and `keyword` filter +Supports `address` filter ```python import requests @@ -53,9 +54,8 @@ url = "https:///user_api/mails" querystring = { "limit":"20", "offset":"0", - # address and keyword are optional parameters - "address":"xxxx@awsl.uk", - "keyword":"xxxx" + # address is optional parameter + "address":"xxxx@awsl.uk" } headers = {"x-admin-auth": ""} @@ -64,3 +64,5 @@ response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` + +**Note**: Keyword filtering has been removed from the backend API. If you need to filter emails by content, please use the frontend filter input in the UI, which filters the currently displayed page. diff --git a/vitepress-docs/docs/zh/guide/feature/mail-api.md b/vitepress-docs/docs/zh/guide/feature/mail-api.md index d776b22f..ad0b8b22 100644 --- a/vitepress-docs/docs/zh/guide/feature/mail-api.md +++ b/vitepress-docs/docs/zh/guide/feature/mail-api.md @@ -19,7 +19,7 @@ res = requests.get( ## admin 邮件 API -支持 `address` filter 和 `keyword` filter +支持 `address` 过滤 ```python import requests @@ -29,9 +29,8 @@ url = "https://<你的worker地址>/admin/mails" querystring = { "limit":"20", "offset":"0", - # adress 和 keyword 为可选参数 - "address":"xxxx@awsl.uk", - "keyword":"xxxx" + # address 为可选参数 + "address":"xxxx@awsl.uk" } headers = {"x-admin-auth": "<你的Admin密码>"} @@ -41,9 +40,11 @@ response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` +**注意**:后端 API 已移除关键词过滤功能。如需按内容过滤邮件,请使用前端界面的过滤输入框,该功能可过滤当前显示的页面。 + ## user 邮件 API -支持 `address` filter 和 `keyword` filter +支持 `address` 过滤 ```python import requests @@ -53,9 +54,8 @@ url = "https://<你的worker地址>/user_api/mails" querystring = { "limit":"20", "offset":"0", - # adress 和 keyword 为可选参数 - "address":"xxxx@awsl.uk", - "keyword":"xxxx" + # address 为可选参数 + "address":"xxxx@awsl.uk" } headers = {"x-admin-auth": "<你的Admin密码>"} @@ -64,3 +64,5 @@ response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` + +**注意**:后端 API 已移除关键词过滤功能。如需按内容过滤邮件,请使用前端界面的过滤输入框,该功能可过滤当前显示的页面。 diff --git a/vitepress-docs/package.json b/vitepress-docs/package.json index e8c56b9e..b48503ad 100644 --- a/vitepress-docs/package.json +++ b/vitepress-docs/package.json @@ -4,7 +4,7 @@ "version": "1.2.0", "type": "module", "devDependencies": { - "@types/node": "^25.0.0", + "@types/node": "^25.0.2", "vitepress": "^1.6.4", "wrangler": "^4.54.0" }, diff --git a/vitepress-docs/pnpm-lock.yaml b/vitepress-docs/pnpm-lock.yaml index 31001c3a..a1b13b21 100644 --- a/vitepress-docs/pnpm-lock.yaml +++ b/vitepress-docs/pnpm-lock.yaml @@ -13,11 +13,11 @@ importers: version: 3.10.1 devDependencies: '@types/node': - specifier: ^25.0.0 - version: 25.0.0 + specifier: ^25.0.2 + version: 25.0.2 vitepress: specifier: ^1.6.4 - version: 1.6.4(@algolia/client-search@5.46.0)(@types/node@25.0.0)(postcss@8.5.6)(search-insights@2.13.0)(typescript@5.4.5) + version: 1.6.4(@algolia/client-search@5.46.0)(@types/node@25.0.2)(postcss@8.5.6)(search-insights@2.13.0)(typescript@5.4.5) wrangler: specifier: ^4.54.0 version: 4.54.0 @@ -484,8 +484,8 @@ packages: cpu: [x64] os: [win32] - '@iconify-json/simple-icons@1.2.62': - resolution: {integrity: sha512-GpWQ294d4lraB3D2eBSSMROh1x9uKgpmyereLlGzVQjGZ7lbeFzby2ywXxyp4vEODmTDyf1/4WcOYs/yH4rJ5Q==} + '@iconify-json/simple-icons@1.2.63': + resolution: {integrity: sha512-xZl2UWCwE58VlqZ+pDPmaUhE2tq8MVSTJRr4/9nzzHlDdjJ0Ud1VxNXPrwTSgESKY29iCQw3S0r2nJTSNNngHw==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -605,14 +605,14 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@poppinss/colors@4.1.5': - resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} '@poppinss/dumper@0.6.5': resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - '@poppinss/exception@1.2.2': - resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} '@rollup/rollup-android-arm-eabi@4.53.3': resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} @@ -773,8 +773,8 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@25.0.0': - resolution: {integrity: sha512-rl78HwuZlaDIUSeUKkmogkhebA+8K1Hy7tddZuJ3D0xV8pZSfsYGTsliGUol1JPzu9EKnTxPC4L1fiWouStRew==} + '@types/node@25.0.2': + resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -1645,7 +1645,7 @@ snapshots: '@esbuild/win32-x64@0.27.0': optional: true - '@iconify-json/simple-icons@1.2.62': + '@iconify-json/simple-icons@1.2.63': dependencies: '@iconify/types': 2.0.0 @@ -1735,17 +1735,17 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@poppinss/colors@4.1.5': + '@poppinss/colors@4.1.6': dependencies: kleur: 4.1.5 '@poppinss/dumper@0.6.5': dependencies: - '@poppinss/colors': 4.1.5 + '@poppinss/colors': 4.1.6 '@sindresorhus/is': 7.1.1 supports-color: 10.2.2 - '@poppinss/exception@1.2.2': {} + '@poppinss/exception@1.2.3': {} '@rollup/rollup-android-arm-eabi@4.53.3': optional: true @@ -1876,7 +1876,7 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@25.0.0': + '@types/node@25.0.2': dependencies: undici-types: 7.16.0 @@ -1886,9 +1886,9 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@25.0.0))(vue@3.5.25(typescript@5.4.5))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@25.0.2))(vue@3.5.25(typescript@5.4.5))': dependencies: - vite: 5.4.21(@types/node@25.0.0) + vite: 5.4.21(@types/node@25.0.2) vue: 3.5.25(typescript@5.4.5) '@vue/compiler-core@3.5.25': @@ -2440,25 +2440,25 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@5.4.21(@types/node@25.0.0): + vite@5.4.21(@types/node@25.0.2): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.53.3 optionalDependencies: - '@types/node': 25.0.0 + '@types/node': 25.0.2 fsevents: 2.3.3 - vitepress@1.6.4(@algolia/client-search@5.46.0)(@types/node@25.0.0)(postcss@8.5.6)(search-insights@2.13.0)(typescript@5.4.5): + vitepress@1.6.4(@algolia/client-search@5.46.0)(@types/node@25.0.2)(postcss@8.5.6)(search-insights@2.13.0)(typescript@5.4.5): dependencies: '@docsearch/css': 3.8.2 '@docsearch/js': 3.8.2(@algolia/client-search@5.46.0)(search-insights@2.13.0) - '@iconify-json/simple-icons': 1.2.62 + '@iconify-json/simple-icons': 1.2.63 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 '@shikijs/types': 2.5.0 '@types/markdown-it': 14.1.2 - '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@25.0.0))(vue@3.5.25(typescript@5.4.5)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@25.0.2))(vue@3.5.25(typescript@5.4.5)) '@vue/devtools-api': 7.7.9 '@vue/shared': 3.5.25 '@vueuse/core': 12.8.2(typescript@5.4.5) @@ -2467,7 +2467,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.2.0 shiki: 2.5.0 - vite: 5.4.21(@types/node@25.0.0) + vite: 5.4.21(@types/node@25.0.2) vue: 3.5.25(typescript@5.4.5) optionalDependencies: postcss: 8.5.6 @@ -2536,12 +2536,12 @@ snapshots: youch-core@0.3.3: dependencies: - '@poppinss/exception': 1.2.2 + '@poppinss/exception': 1.2.3 error-stack-parser-es: 1.0.5 youch@4.1.0-beta.10: dependencies: - '@poppinss/colors': 4.1.5 + '@poppinss/colors': 4.1.6 '@poppinss/dumper': 0.6.5 '@speed-highlight/core': 1.2.12 cookie: 1.1.1 diff --git a/worker/package.json b/worker/package.json index 4e9ac2c1..a24a977c 100644 --- a/worker/package.json +++ b/worker/package.json @@ -11,10 +11,10 @@ "build": "wrangler deploy --dry-run --outdir dist --minify" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20251211.0", + "@cloudflare/workers-types": "^4.20251213.0", "@eslint/js": "9.39.1", "@simplewebauthn/types": "10.0.0", - "@types/node": "^25.0.0", + "@types/node": "^25.0.2", "eslint": "9.39.1", "globals": "^16.5.0", "typescript-eslint": "^8.49.0", @@ -24,7 +24,7 @@ "@aws-sdk/client-s3": "3.888.0", "@aws-sdk/s3-request-presigner": "3.888.0", "@simplewebauthn/server": "10.0.1", - "hono": "^4.10.8", + "hono": "^4.11.0", "jsonpath-plus": "^10.3.0", "mimetext": "^3.0.27", "postal-mime": "^2.6.1", diff --git a/worker/pnpm-lock.yaml b/worker/pnpm-lock.yaml index 70813171..9d40d52e 100644 --- a/worker/pnpm-lock.yaml +++ b/worker/pnpm-lock.yaml @@ -14,17 +14,17 @@ importers: .: dependencies: '@aws-sdk/client-s3': - specifier: 3.948.0 - version: 3.948.0 + specifier: 3.888.0 + version: 3.888.0 '@aws-sdk/s3-request-presigner': - specifier: 3.948.0 - version: 3.948.0 + specifier: 3.888.0 + version: 3.888.0 '@simplewebauthn/server': - specifier: 13.2.2 - version: 13.2.2 + specifier: 10.0.1 + version: 10.0.1 hono: - specifier: ^4.10.8 - version: 4.10.8 + specifier: ^4.11.0 + version: 4.11.0 jsonpath-plus: specifier: ^10.3.0 version: 10.3.0 @@ -45,17 +45,17 @@ importers: version: 1.2.1 devDependencies: '@cloudflare/workers-types': - specifier: ^4.20251211.0 - version: 4.20251211.0 + specifier: ^4.20251213.0 + version: 4.20251213.0 '@eslint/js': specifier: 9.39.1 version: 9.39.1 '@simplewebauthn/types': - specifier: 12.0.0 - version: 12.0.0 + specifier: 10.0.0 + version: 10.0.0 '@types/node': - specifier: ^25.0.0 - version: 25.0.0 + specifier: ^25.0.2 + version: 25.0.2 eslint: specifier: 9.39.1 version: 9.39.1 @@ -67,7 +67,7 @@ importers: version: 8.49.0(eslint@9.39.1)(typescript@5.4.5) wrangler: specifier: ^4.54.0 - version: 4.54.0(@cloudflare/workers-types@4.20251211.0) + version: 4.54.0(@cloudflare/workers-types@4.20251213.0) packages: @@ -94,135 +94,131 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.948.0': - resolution: {integrity: sha512-uvEjds8aYA9SzhBS8RKDtsDUhNV9VhqKiHTcmvhM7gJO92q0WTn8/QeFTdNyLc6RxpiDyz+uBxS7PcdNiZzqfA==} + '@aws-sdk/client-s3@3.888.0': + resolution: {integrity: sha512-MgYyF/qpvCMYVSiOpRJ5C/EtdFxuYAeF5SprtMsbf71xBiiCH5GurB616i+ZxJqHlfhBQTTvR0qugnWvk1Wqvw==} engines: {node: '>=18.0.0'} - '@aws-sdk/client-sso@3.948.0': - resolution: {integrity: sha512-iWjchXy8bIAVBUsKnbfKYXRwhLgRg3EqCQ5FTr3JbR+QR75rZm4ZOYXlvHGztVTmtAZ+PQVA1Y4zO7v7N87C0A==} + '@aws-sdk/client-sso@3.888.0': + resolution: {integrity: sha512-8CLy/ehGKUmekjH+VtZJ4w40PqDg3u0K7uPziq/4P8Q7LLgsy8YQoHNbuY4am7JU3HWrqLXJI9aaz1+vPGPoWA==} engines: {node: '>=18.0.0'} - '@aws-sdk/core@3.947.0': - resolution: {integrity: sha512-Khq4zHhuAkvCFuFbgcy3GrZTzfSX7ZIjIcW1zRDxXRLZKRtuhnZdonqTUfaWi5K42/4OmxkYNpsO7X7trQOeHw==} + '@aws-sdk/core@3.888.0': + resolution: {integrity: sha512-L3S2FZywACo4lmWv37Y4TbefuPJ1fXWyWwIJ3J4wkPYFJ47mmtUPqThlVrSbdTHkEjnZgJe5cRfxk0qCLsFh1w==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-env@3.947.0': - resolution: {integrity: sha512-VR2V6dRELmzwAsCpK4GqxUi6UW5WNhAXS9F9AzWi5jvijwJo3nH92YNJUP4quMpgFZxJHEWyXLWgPjh9u0zYOA==} + '@aws-sdk/credential-provider-env@3.888.0': + resolution: {integrity: sha512-shPi4AhUKbIk7LugJWvNpeZA8va7e5bOHAEKo89S0Ac8WDZt2OaNzbh/b9l0iSL2eEyte8UgIsYGcFxOwIF1VA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-http@3.947.0': - resolution: {integrity: sha512-inF09lh9SlHj63Vmr5d+LmwPXZc2IbK8lAruhOr3KLsZAIHEgHgGPXWDC2ukTEMzg0pkexQ6FOhXXad6klK4RA==} + '@aws-sdk/credential-provider-http@3.888.0': + resolution: {integrity: sha512-Jvuk6nul0lE7o5qlQutcqlySBHLXOyoPtiwE6zyKbGc7RVl0//h39Lab7zMeY2drMn8xAnIopL4606Fd8JI/Hw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-ini@3.948.0': - resolution: {integrity: sha512-Cl//Qh88e8HBL7yYkJNpF5eq76IO6rq8GsatKcfVBm7RFVxCqYEPSSBtkHdbtNwQdRQqAMXc6E/lEB/CZUDxnA==} + '@aws-sdk/credential-provider-ini@3.888.0': + resolution: {integrity: sha512-M82ItvS5yq+tO6ZOV1ruaVs2xOne+v8HW85GFCXnz8pecrzYdgxh6IsVqEbbWruryG/mUGkWMbkBZoEsy4MgyA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-login@3.948.0': - resolution: {integrity: sha512-gcKO2b6eeTuZGp3Vvgr/9OxajMrD3W+FZ2FCyJox363ZgMoYJsyNid1vuZrEuAGkx0jvveLXfwiVS0UXyPkgtw==} + '@aws-sdk/credential-provider-node@3.888.0': + resolution: {integrity: sha512-KCrQh1dCDC8Y+Ap3SZa6S81kHk+p+yAaOQ5jC3dak4zhHW3RCrsGR/jYdemTOgbEGcA6ye51UbhWfrrlMmeJSA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-node@3.948.0': - resolution: {integrity: sha512-ep5vRLnrRdcsP17Ef31sNN4g8Nqk/4JBydcUJuFRbGuyQtrZZrVT81UeH2xhz6d0BK6ejafDB9+ZpBjXuWT5/Q==} + '@aws-sdk/credential-provider-process@3.888.0': + resolution: {integrity: sha512-+aX6piSukPQ8DUS4JAH344GePg8/+Q1t0+kvSHAZHhYvtQ/1Zek3ySOJWH2TuzTPCafY4nmWLcQcqvU1w9+4Lw==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-process@3.947.0': - resolution: {integrity: sha512-WpanFbHe08SP1hAJNeDdBDVz9SGgMu/gc0XJ9u3uNpW99nKZjDpvPRAdW7WLA4K6essMjxWkguIGNOpij6Do2Q==} + '@aws-sdk/credential-provider-sso@3.888.0': + resolution: {integrity: sha512-b1ZJji7LJ6E/j1PhFTyvp51in2iCOQ3VP6mj5H6f5OUnqn7efm41iNMoinKr87n0IKZw7qput5ggXVxEdPhouA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-sso@3.948.0': - resolution: {integrity: sha512-gqLhX1L+zb/ZDnnYbILQqJ46j735StfWV5PbDjxRzBKS7GzsiYoaf6MyHseEopmWrez5zl5l6aWzig7UpzSeQQ==} + '@aws-sdk/credential-provider-web-identity@3.888.0': + resolution: {integrity: sha512-7P0QNtsDzMZdmBAaY/vY1BsZHwTGvEz3bsn2bm5VSKFAeMmZqsHK1QeYdNsFjLtegnVh+wodxMq50jqLv3LFlA==} engines: {node: '>=18.0.0'} - '@aws-sdk/credential-provider-web-identity@3.948.0': - resolution: {integrity: sha512-MvYQlXVoJyfF3/SmnNzOVEtANRAiJIObEUYYyjTqKZTmcRIVVky0tPuG26XnB8LmTYgtESwJIZJj/Eyyc9WURQ==} + '@aws-sdk/middleware-bucket-endpoint@3.887.0': + resolution: {integrity: sha512-qRCte/3MtNiMhPh4ZEGk9cHfAXq6IDTflvi2t1tkOIVZFyshkSCvNQNJrrE2D/ljVbOK1f3XbBDaF43EoQzIRQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.936.0': - resolution: {integrity: sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==} + '@aws-sdk/middleware-expect-continue@3.887.0': + resolution: {integrity: sha512-AlrTZZScDTG9SYeT82BC5cK/6Q4N0miN5xqMW/pbBqP3fNXlsdJOWKB+EKD3V6DV41EV5GVKHKe/1065xKSQ4w==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-expect-continue@3.936.0': - resolution: {integrity: sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==} + '@aws-sdk/middleware-flexible-checksums@3.888.0': + resolution: {integrity: sha512-vdwd4wMAlXSg1bldhXyTsDSnyPP+bbEVihapejGKNd4gLfyyHwjTfbli+B/hEONGttQs5Dp54UMn8yW/UA189g==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.947.0': - resolution: {integrity: sha512-kXXxS2raNESNO+zR0L4YInVjhcGGNI2Mx0AE1ThRhDkAt2se3a+rGf9equ9YvOqA1m8Jl/GSI8cXYvSxXmS9Ag==} + '@aws-sdk/middleware-host-header@3.887.0': + resolution: {integrity: sha512-ulzqXv6NNqdu/kr0sgBYupWmahISHY+azpJidtK6ZwQIC+vBUk9NdZeqQpy7KVhIk2xd4+5Oq9rxapPwPI21CA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-host-header@3.936.0': - resolution: {integrity: sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==} + '@aws-sdk/middleware-location-constraint@3.887.0': + resolution: {integrity: sha512-eU/9Cq4gg2sS32bOomxdx2YF43kb+o70pMhnEBBnVVeqzE8co78SO5FQdWfRTfhNJgTyQ6Vgosx//CNMPIfZPg==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-location-constraint@3.936.0': - resolution: {integrity: sha512-SCMPenDtQMd9o5da9JzkHz838w3327iqXk3cbNnXWqnNRx6unyW8FL0DZ84gIY12kAyVHz5WEqlWuekc15ehfw==} + '@aws-sdk/middleware-logger@3.887.0': + resolution: {integrity: sha512-YbbgLI6jKp2qSoAcHnXrQ5jcuc5EYAmGLVFgMVdk8dfCfJLfGGSaOLxF4CXC7QYhO50s+mPPkhBYejCik02Kug==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-logger@3.936.0': - resolution: {integrity: sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==} + '@aws-sdk/middleware-recursion-detection@3.887.0': + resolution: {integrity: sha512-tjrUXFtQnFLo+qwMveq5faxP5MQakoLArXtqieHphSqZTXm21wDJM73hgT4/PQQGTwgYjDKqnqsE1hvk0hcfDw==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-recursion-detection@3.948.0': - resolution: {integrity: sha512-Qa8Zj+EAqA0VlAVvxpRnpBpIWJI9KUwaioY1vkeNVwXPlNaz9y9zCKVM9iU9OZ5HXpoUg6TnhATAHXHAE8+QsQ==} + '@aws-sdk/middleware-sdk-s3@3.888.0': + resolution: {integrity: sha512-rKOFNfqgqOfrdcLGF8fcO75azWS2aq2ksRHFoIEFru5FJxzu/yDAhY4C2FKiP/X34xeIUS2SbE/gQgrgWHSN2g==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-sdk-s3@3.947.0': - resolution: {integrity: sha512-DS2tm5YBKhPW2PthrRBDr6eufChbwXe0NjtTZcYDfUCXf0OR+W6cIqyKguwHMJ+IyYdey30AfVw9/Lb5KB8U8A==} + '@aws-sdk/middleware-ssec@3.887.0': + resolution: {integrity: sha512-1ixZks0IDkdac1hjPe4vdLSuD9HznkhblCEb4T0wNyw3Ee1fdXg+MlcPWywzG5zkPXLcIrULUzJg/OSYfaDXcQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-ssec@3.936.0': - resolution: {integrity: sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==} + '@aws-sdk/middleware-user-agent@3.888.0': + resolution: {integrity: sha512-ZkcUkoys8AdrNNG7ATjqw2WiXqrhTvT+r4CIK3KhOqIGPHX0p0DQWzqjaIl7ZhSUToKoZ4Ud7MjF795yUr73oA==} engines: {node: '>=18.0.0'} - '@aws-sdk/middleware-user-agent@3.947.0': - resolution: {integrity: sha512-7rpKV8YNgCP2R4F9RjWZFcD2R+SO/0R4VHIbY9iZJdH2MzzJ8ZG7h8dZ2m8QkQd1fjx4wrFJGGPJUTYXPV3baA==} + '@aws-sdk/nested-clients@3.888.0': + resolution: {integrity: sha512-py4o4RPSGt+uwGvSBzR6S6cCBjS4oTX5F8hrHFHfPCdIOMVjyOBejn820jXkCrcdpSj3Qg1yUZXxsByvxc9Lyg==} engines: {node: '>=18.0.0'} - '@aws-sdk/nested-clients@3.948.0': - resolution: {integrity: sha512-zcbJfBsB6h254o3NuoEkf0+UY1GpE9ioiQdENWv7odo69s8iaGBEQ4BDpsIMqcuiiUXw1uKIVNxCB1gUGYz8lw==} + '@aws-sdk/region-config-resolver@3.887.0': + resolution: {integrity: sha512-VdSMrIqJ3yjJb/fY+YAxrH/lCVv0iL8uA+lbMNfQGtO5tB3Zx6SU9LEpUwBNX8fPK1tUpI65CNE4w42+MY/7Mg==} engines: {node: '>=18.0.0'} - '@aws-sdk/region-config-resolver@3.936.0': - resolution: {integrity: sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==} + '@aws-sdk/s3-request-presigner@3.888.0': + resolution: {integrity: sha512-3VAF0tJxW0p/ttUzJEgrMe52zZVoEG9dcJGdp4N0RG+LD41lp7QuQEYAZ/LGn7mwJsT0q18+tEJ5XzKmJFrOiA==} engines: {node: '>=18.0.0'} - '@aws-sdk/s3-request-presigner@3.948.0': - resolution: {integrity: sha512-tlQhMDsDWwUDUzzlo8XYGpmMfjGDmXgbysv1+h1v2xJe0A+ogv/nJ6KFVP94uf1j4ePmCN/gDdxEp2PWZMBPOQ==} + '@aws-sdk/signature-v4-multi-region@3.888.0': + resolution: {integrity: sha512-FmOHUaJzEhqfcpyh0L7HLwYcYopK13Dbmuf+oUyu56/RoeB1nLnltH1VMQVj8v3Am2IwlGR+/JpFyrdkErN+cA==} engines: {node: '>=18.0.0'} - '@aws-sdk/signature-v4-multi-region@3.947.0': - resolution: {integrity: sha512-UaYmzoxf9q3mabIA2hc4T6x5YSFUG2BpNjAZ207EA1bnQMiK+d6vZvb83t7dIWL/U1de1sGV19c1C81Jf14rrA==} + '@aws-sdk/token-providers@3.888.0': + resolution: {integrity: sha512-WA3NF+3W8GEuCMG1WvkDYbB4z10G3O8xuhT7QSjhvLYWQ9CPt3w4VpVIfdqmUn131TCIbhCzD0KN/1VJTjAjyw==} engines: {node: '>=18.0.0'} - '@aws-sdk/token-providers@3.948.0': - resolution: {integrity: sha512-V487/kM4Teq5dcr1t5K6eoUKuqlGr9FRWL3MIMukMERJXHZvio6kox60FZ/YtciRHRI75u14YUqm2Dzddcu3+A==} + '@aws-sdk/types@3.887.0': + resolution: {integrity: sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==} engines: {node: '>=18.0.0'} - '@aws-sdk/types@3.936.0': - resolution: {integrity: sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==} + '@aws-sdk/util-arn-parser@3.873.0': + resolution: {integrity: sha512-qag+VTqnJWDn8zTAXX4wiVioa0hZDQMtbZcGRERVnLar4/3/VIKBhxX2XibNQXFu1ufgcRn4YntT/XEPecFWcg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-arn-parser@3.893.0': - resolution: {integrity: sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==} + '@aws-sdk/util-endpoints@3.887.0': + resolution: {integrity: sha512-kpegvT53KT33BMeIcGLPA65CQVxLUL/C3gTz9AzlU/SDmeusBHX4nRApAicNzI/ltQ5lxZXbQn18UczzBuwF1w==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-endpoints@3.936.0': - resolution: {integrity: sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==} - engines: {node: '>=18.0.0'} - - '@aws-sdk/util-format-url@3.936.0': - resolution: {integrity: sha512-MS5eSEtDUFIAMHrJaMERiHAvDPdfxc/T869ZjDNFAIiZhyc037REw0aoTNeimNXDNy2txRNZJaAUn/kE4RwN+g==} + '@aws-sdk/util-format-url@3.887.0': + resolution: {integrity: sha512-ABDSP6KsrdD+JC7qwMqUpLXqPidvfgT+Q+W8sGGuk/IBy7smgZDOdYSZLE4VBbQpH3N/zSJuslAWhL2x37Qwww==} engines: {node: '>=18.0.0'} '@aws-sdk/util-locate-window@3.893.0': resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-user-agent-browser@3.936.0': - resolution: {integrity: sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==} + '@aws-sdk/util-user-agent-browser@3.887.0': + resolution: {integrity: sha512-X71UmVsYc6ZTH4KU6hA5urOzYowSXc3qvroagJNLJYU1ilgZ529lP4J9XOYfEvTXkLR1hPFSRxa43SrwgelMjA==} - '@aws-sdk/util-user-agent-node@3.947.0': - resolution: {integrity: sha512-+vhHoDrdbb+zerV4noQk1DHaUMNzWFWPpPYjVTwW2186k5BEJIecAMChYkghRrBVJ3KPWP1+JnZwOd72F3d4rQ==} + '@aws-sdk/util-user-agent-node@3.888.0': + resolution: {integrity: sha512-rSB3OHyuKXotIGfYEo//9sU0lXAUrTY28SUUnxzOGYuQsAt0XR5iYwBAp+RjV6x8f+Hmtbg0PdCsy1iNAXa0UQ==} engines: {node: '>=18.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -230,12 +226,12 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.930.0': - resolution: {integrity: sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==} + '@aws-sdk/xml-builder@3.887.0': + resolution: {integrity: sha512-lMwgWK1kNgUhHGfBvO/5uLe7TKhycwOn3eRCqsKPT9aPCx/HWuTlpcQp8oW2pCRGLS7qzcxqpQulcD+bbUL7XQ==} engines: {node: '>=18.0.0'} - '@aws/lambda-invoke-store@0.2.2': - resolution: {integrity: sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==} + '@aws/lambda-invoke-store@0.0.1': + resolution: {integrity: sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==} engines: {node: '>=18.0.0'} '@babel/runtime-corejs3@7.28.4': @@ -289,8 +285,8 @@ packages: cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20251211.0': - resolution: {integrity: sha512-e87o6KbelCz7dnI5ngrGT2ca15vJZ+COb2eqJ52iDHmOaujyC6aYZ71e2vor8X6V9T6tcDElC5sAqPR93j09EA==} + '@cloudflare/workers-types@4.20251213.0': + resolution: {integrity: sha512-PJAGdKfU7hs39C2YOFNLTdrfdqG6rbaVj5UuI306zS+TPokiskRLEgUXKqS6avN9Uu9Nyuf2a0hqoumLQCnJlQ==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -645,48 +641,26 @@ packages: '@peculiar/asn1-android@2.6.0': resolution: {integrity: sha512-cBRCKtYPF7vJGN76/yG8VbxRcHLPF3HnkoHhKOZeHpoVtbMYfY9ROKtH3DtYUY9m8uI1Mh47PRhHf2hSK3xcSQ==} - '@peculiar/asn1-cms@2.6.0': - resolution: {integrity: sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==} - - '@peculiar/asn1-csr@2.6.0': - resolution: {integrity: sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==} - '@peculiar/asn1-ecc@2.6.0': resolution: {integrity: sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==} - '@peculiar/asn1-pfx@2.6.0': - resolution: {integrity: sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==} - - '@peculiar/asn1-pkcs8@2.6.0': - resolution: {integrity: sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==} - - '@peculiar/asn1-pkcs9@2.6.0': - resolution: {integrity: sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==} - '@peculiar/asn1-rsa@2.6.0': resolution: {integrity: sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==} '@peculiar/asn1-schema@2.6.0': resolution: {integrity: sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==} - '@peculiar/asn1-x509-attr@2.6.0': - resolution: {integrity: sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==} - '@peculiar/asn1-x509@2.6.0': resolution: {integrity: sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==} - '@peculiar/x509@1.14.2': - resolution: {integrity: sha512-r2w1Hg6pODDs0zfAKHkSS5HLkOLSeburtcgwvlLLWWCixw+MmW3U6kD5ddyvc2Y2YdbGuVwCF2S2ASoU1cFAag==} - engines: {node: '>=22.0.0'} - - '@poppinss/colors@4.1.5': - resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} '@poppinss/dumper@0.6.5': resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - '@poppinss/exception@1.2.2': - resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} '@react-email/render@1.1.2': resolution: {integrity: sha512-RnRehYN3v9gVlNMehHPHhyp2RQo7+pSkHDtXPvg3s0GbzM9SQMW4Qrf8GRNvtpLC4gsI+Wt0VatNRUFqjvevbw==} @@ -698,12 +672,12 @@ packages: '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@simplewebauthn/server@13.2.2': - resolution: {integrity: sha512-HcWLW28yTMGXpwE9VLx9J+N2KEUaELadLrkPEEI9tpI5la70xNEVEsu/C+m3u7uoq4FulLqZQhgBCzR9IZhFpA==} + '@simplewebauthn/server@10.0.1': + resolution: {integrity: sha512-djNWcRn+H+6zvihBFJSpG3fzb0NQS9c/Mw5dYOtZ9H+oDw8qn9Htqxt4cpqRvSOAfwqP7rOvE9rwqVaoGGc3hg==} engines: {node: '>=20.0.0'} - '@simplewebauthn/types@12.0.0': - resolution: {integrity: sha512-q6y8MkoV8V8jB4zzp18Uyj2I7oFp2/ONL8c3j8uT06AOWu3cIChc1au71QYHrP2b+xDapkGTiv+9lX7xkTlAsA==} + '@simplewebauthn/types@10.0.0': + resolution: {integrity: sha512-SFXke7xkgPRowY2E+8djKbdEznTVnD5R6GO7GPTthpHrokLvNKw8C3lFZypTxLI7KkCfGPfhtqB3d7OVGGa9jQ==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@sindresorhus/is@7.1.1': @@ -941,11 +915,14 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@22.19.2': - resolution: {integrity: sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==} + '@types/node@22.19.3': + resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} - '@types/node@25.0.0': - resolution: {integrity: sha512-rl78HwuZlaDIUSeUKkmogkhebA+8K1Hy7tddZuJ3D0xV8pZSfsYGTsliGUol1JPzu9EKnTxPC4L1fiWouStRew==} + '@types/node@25.0.2': + resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} '@typescript-eslint/eslint-plugin@8.49.0': resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} @@ -1099,6 +1076,9 @@ packages: core-js-pure@3.47.0: resolution: {integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==} + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1272,8 +1252,8 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - hono@4.10.8: - resolution: {integrity: sha512-DDT0A0r6wzhe8zCGoYOmMeuGu3dyTAE40HHjwUsWFTEy5WxK1x2WDSsBPlEXgPbRIFY6miDualuUDbasPogIww==} + hono@4.11.0: + resolution: {integrity: sha512-Jg8uZzN2ul8/qlyid5FO8O624F3AK0wKtkgoeEON1qBum1rM1itYBxoMKu/1SPJC7F1+xlIZsJMmc4HHhJ1AWg==} engines: {node: '>=16.9.0'} html-to-text@9.0.5: @@ -1495,9 +1475,6 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -1555,8 +1532,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strnum@2.1.1: - resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + strnum@2.1.2: + resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} supports-color@10.2.2: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} @@ -1587,16 +1564,9 @@ packages: peerDependencies: typescript: '>=4.8.4' - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsyringe@4.10.0: - resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} - engines: {node: '>= 6.0.0'} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -1636,6 +1606,10 @@ packages: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -1699,20 +1673,20 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@aws-sdk/util-locate-window': 3.893.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -1722,7 +1696,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@aws-sdk/util-locate-window': 3.893.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -1730,7 +1704,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -1739,33 +1713,34 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.948.0': + '@aws-sdk/client-s3@3.888.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.947.0 - '@aws-sdk/credential-provider-node': 3.948.0 - '@aws-sdk/middleware-bucket-endpoint': 3.936.0 - '@aws-sdk/middleware-expect-continue': 3.936.0 - '@aws-sdk/middleware-flexible-checksums': 3.947.0 - '@aws-sdk/middleware-host-header': 3.936.0 - '@aws-sdk/middleware-location-constraint': 3.936.0 - '@aws-sdk/middleware-logger': 3.936.0 - '@aws-sdk/middleware-recursion-detection': 3.948.0 - '@aws-sdk/middleware-sdk-s3': 3.947.0 - '@aws-sdk/middleware-ssec': 3.936.0 - '@aws-sdk/middleware-user-agent': 3.947.0 - '@aws-sdk/region-config-resolver': 3.936.0 - '@aws-sdk/signature-v4-multi-region': 3.947.0 - '@aws-sdk/types': 3.936.0 - '@aws-sdk/util-endpoints': 3.936.0 - '@aws-sdk/util-user-agent-browser': 3.936.0 - '@aws-sdk/util-user-agent-node': 3.947.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/credential-provider-node': 3.888.0 + '@aws-sdk/middleware-bucket-endpoint': 3.887.0 + '@aws-sdk/middleware-expect-continue': 3.887.0 + '@aws-sdk/middleware-flexible-checksums': 3.888.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-location-constraint': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-sdk-s3': 3.888.0 + '@aws-sdk/middleware-ssec': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.888.0 + '@aws-sdk/region-config-resolver': 3.887.0 + '@aws-sdk/signature-v4-multi-region': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.887.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.888.0 + '@aws-sdk/xml-builder': 3.887.0 '@smithy/config-resolver': 4.4.3 '@smithy/core': 3.18.7 '@smithy/eventstream-serde-browser': 4.2.5 @@ -1799,24 +1774,26 @@ snapshots: '@smithy/util-stream': 4.5.6 '@smithy/util-utf8': 4.2.0 '@smithy/util-waiter': 4.2.5 + '@types/uuid': 9.0.8 tslib: 2.8.1 + uuid: 9.0.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso@3.948.0': + '@aws-sdk/client-sso@3.888.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.947.0 - '@aws-sdk/middleware-host-header': 3.936.0 - '@aws-sdk/middleware-logger': 3.936.0 - '@aws-sdk/middleware-recursion-detection': 3.948.0 - '@aws-sdk/middleware-user-agent': 3.947.0 - '@aws-sdk/region-config-resolver': 3.936.0 - '@aws-sdk/types': 3.936.0 - '@aws-sdk/util-endpoints': 3.936.0 - '@aws-sdk/util-user-agent-browser': 3.936.0 - '@aws-sdk/util-user-agent-node': 3.947.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.888.0 + '@aws-sdk/region-config-resolver': 3.887.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.887.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.888.0 '@smithy/config-resolver': 4.4.3 '@smithy/core': 3.18.7 '@smithy/fetch-http-handler': 5.3.6 @@ -1846,10 +1823,10 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.947.0': + '@aws-sdk/core@3.888.0': dependencies: - '@aws-sdk/types': 3.936.0 - '@aws-sdk/xml-builder': 3.930.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/xml-builder': 3.887.0 '@smithy/core': 3.18.7 '@smithy/node-config-provider': 4.3.5 '@smithy/property-provider': 4.2.5 @@ -1858,22 +1835,24 @@ snapshots: '@smithy/smithy-client': 4.9.10 '@smithy/types': 4.9.0 '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-middleware': 4.2.5 '@smithy/util-utf8': 4.2.0 + fast-xml-parser: 5.2.5 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.947.0': + '@aws-sdk/credential-provider-env@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/property-provider': 4.2.5 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.947.0': + '@aws-sdk/credential-provider-http@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/fetch-http-handler': 5.3.6 '@smithy/node-http-handler': 4.4.5 '@smithy/property-provider': 4.2.5 @@ -1883,17 +1862,16 @@ snapshots: '@smithy/util-stream': 4.5.6 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.948.0': + '@aws-sdk/credential-provider-ini@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/credential-provider-env': 3.947.0 - '@aws-sdk/credential-provider-http': 3.947.0 - '@aws-sdk/credential-provider-login': 3.948.0 - '@aws-sdk/credential-provider-process': 3.947.0 - '@aws-sdk/credential-provider-sso': 3.948.0 - '@aws-sdk/credential-provider-web-identity': 3.948.0 - '@aws-sdk/nested-clients': 3.948.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/credential-provider-env': 3.888.0 + '@aws-sdk/credential-provider-http': 3.888.0 + '@aws-sdk/credential-provider-process': 3.888.0 + '@aws-sdk/credential-provider-sso': 3.888.0 + '@aws-sdk/credential-provider-web-identity': 3.888.0 + '@aws-sdk/nested-clients': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/credential-provider-imds': 4.2.5 '@smithy/property-provider': 4.2.5 '@smithy/shared-ini-file-loader': 4.4.0 @@ -1902,28 +1880,15 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-login@3.948.0': + '@aws-sdk/credential-provider-node@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/nested-clients': 3.948.0 - '@aws-sdk/types': 3.936.0 - '@smithy/property-provider': 4.2.5 - '@smithy/protocol-http': 5.3.5 - '@smithy/shared-ini-file-loader': 4.4.0 - '@smithy/types': 4.9.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.948.0': - dependencies: - '@aws-sdk/credential-provider-env': 3.947.0 - '@aws-sdk/credential-provider-http': 3.947.0 - '@aws-sdk/credential-provider-ini': 3.948.0 - '@aws-sdk/credential-provider-process': 3.947.0 - '@aws-sdk/credential-provider-sso': 3.948.0 - '@aws-sdk/credential-provider-web-identity': 3.948.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/credential-provider-env': 3.888.0 + '@aws-sdk/credential-provider-http': 3.888.0 + '@aws-sdk/credential-provider-ini': 3.888.0 + '@aws-sdk/credential-provider-process': 3.888.0 + '@aws-sdk/credential-provider-sso': 3.888.0 + '@aws-sdk/credential-provider-web-identity': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/credential-provider-imds': 4.2.5 '@smithy/property-provider': 4.2.5 '@smithy/shared-ini-file-loader': 4.4.0 @@ -1932,21 +1897,21 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.947.0': + '@aws-sdk/credential-provider-process@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/property-provider': 4.2.5 '@smithy/shared-ini-file-loader': 4.4.0 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.948.0': + '@aws-sdk/credential-provider-sso@3.888.0': dependencies: - '@aws-sdk/client-sso': 3.948.0 - '@aws-sdk/core': 3.947.0 - '@aws-sdk/token-providers': 3.948.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/client-sso': 3.888.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/token-providers': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/property-provider': 4.2.5 '@smithy/shared-ini-file-loader': 4.4.0 '@smithy/types': 4.9.0 @@ -1954,42 +1919,41 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.948.0': + '@aws-sdk/credential-provider-web-identity@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/nested-clients': 3.948.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/nested-clients': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/property-provider': 4.2.5 - '@smithy/shared-ini-file-loader': 4.4.0 '@smithy/types': 4.9.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/middleware-bucket-endpoint@3.936.0': + '@aws-sdk/middleware-bucket-endpoint@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 - '@aws-sdk/util-arn-parser': 3.893.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-arn-parser': 3.873.0 '@smithy/node-config-provider': 4.3.5 '@smithy/protocol-http': 5.3.5 '@smithy/types': 4.9.0 '@smithy/util-config-provider': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.936.0': + '@aws-sdk/middleware-expect-continue@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/protocol-http': 5.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.947.0': + '@aws-sdk/middleware-flexible-checksums@3.888.0': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.947.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/is-array-buffer': 4.2.0 '@smithy/node-config-provider': 4.3.5 '@smithy/protocol-http': 5.3.5 @@ -1999,38 +1963,38 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.936.0': + '@aws-sdk/middleware-host-header@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/protocol-http': 5.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.936.0': + '@aws-sdk/middleware-location-constraint@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.936.0': + '@aws-sdk/middleware-logger@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.948.0': + '@aws-sdk/middleware-recursion-detection@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 - '@aws/lambda-invoke-store': 0.2.2 + '@aws-sdk/types': 3.887.0 + '@aws/lambda-invoke-store': 0.0.1 '@smithy/protocol-http': 5.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.947.0': + '@aws-sdk/middleware-sdk-s3@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/types': 3.936.0 - '@aws-sdk/util-arn-parser': 3.893.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-arn-parser': 3.873.0 '@smithy/core': 3.18.7 '@smithy/node-config-provider': 4.3.5 '@smithy/protocol-http': 5.3.5 @@ -2043,36 +2007,36 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.936.0': + '@aws-sdk/middleware-ssec@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.947.0': + '@aws-sdk/middleware-user-agent@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/types': 3.936.0 - '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.887.0 '@smithy/core': 3.18.7 '@smithy/protocol-http': 5.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.948.0': + '@aws-sdk/nested-clients@3.888.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.947.0 - '@aws-sdk/middleware-host-header': 3.936.0 - '@aws-sdk/middleware-logger': 3.936.0 - '@aws-sdk/middleware-recursion-detection': 3.948.0 - '@aws-sdk/middleware-user-agent': 3.947.0 - '@aws-sdk/region-config-resolver': 3.936.0 - '@aws-sdk/types': 3.936.0 - '@aws-sdk/util-endpoints': 3.936.0 - '@aws-sdk/util-user-agent-browser': 3.936.0 - '@aws-sdk/util-user-agent-node': 3.947.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.888.0 + '@aws-sdk/region-config-resolver': 3.887.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.887.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.888.0 '@smithy/config-resolver': 4.4.3 '@smithy/core': 3.18.7 '@smithy/fetch-http-handler': 5.3.6 @@ -2102,39 +2066,40 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/region-config-resolver@3.936.0': + '@aws-sdk/region-config-resolver@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 - '@smithy/config-resolver': 4.4.3 + '@aws-sdk/types': 3.887.0 '@smithy/node-config-provider': 4.3.5 '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.5 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.948.0': + '@aws-sdk/s3-request-presigner@3.888.0': dependencies: - '@aws-sdk/signature-v4-multi-region': 3.947.0 - '@aws-sdk/types': 3.936.0 - '@aws-sdk/util-format-url': 3.936.0 + '@aws-sdk/signature-v4-multi-region': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-format-url': 3.887.0 '@smithy/middleware-endpoint': 4.3.14 '@smithy/protocol-http': 5.3.5 '@smithy/smithy-client': 4.9.10 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.947.0': + '@aws-sdk/signature-v4-multi-region@3.888.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.947.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/middleware-sdk-s3': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/protocol-http': 5.3.5 '@smithy/signature-v4': 5.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.948.0': + '@aws-sdk/token-providers@3.888.0': dependencies: - '@aws-sdk/core': 3.947.0 - '@aws-sdk/nested-clients': 3.948.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/nested-clients': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/property-provider': 4.2.5 '@smithy/shared-ini-file-loader': 4.4.0 '@smithy/types': 4.9.0 @@ -2142,26 +2107,26 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/types@3.936.0': + '@aws-sdk/types@3.887.0': dependencies: '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/util-arn-parser@3.893.0': + '@aws-sdk/util-arn-parser@3.873.0': dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.936.0': + '@aws-sdk/util-endpoints@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/types': 4.9.0 '@smithy/url-parser': 4.2.5 '@smithy/util-endpoints': 3.2.5 tslib: 2.8.1 - '@aws-sdk/util-format-url@3.936.0': + '@aws-sdk/util-format-url@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/querystring-builder': 4.2.5 '@smithy/types': 4.9.0 tslib: 2.8.1 @@ -2170,28 +2135,27 @@ snapshots: dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.936.0': + '@aws-sdk/util-user-agent-browser@3.887.0': dependencies: - '@aws-sdk/types': 3.936.0 + '@aws-sdk/types': 3.887.0 '@smithy/types': 4.9.0 bowser: 2.13.1 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.947.0': + '@aws-sdk/util-user-agent-node@3.888.0': dependencies: - '@aws-sdk/middleware-user-agent': 3.947.0 - '@aws-sdk/types': 3.936.0 + '@aws-sdk/middleware-user-agent': 3.888.0 + '@aws-sdk/types': 3.887.0 '@smithy/node-config-provider': 4.3.5 '@smithy/types': 4.9.0 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.930.0': + '@aws-sdk/xml-builder@3.887.0': dependencies: '@smithy/types': 4.9.0 - fast-xml-parser: 5.2.5 tslib: 2.8.1 - '@aws/lambda-invoke-store@0.2.2': {} + '@aws/lambda-invoke-store@0.0.1': {} '@babel/runtime-corejs3@7.28.4': dependencies: @@ -2224,7 +2188,7 @@ snapshots: '@cloudflare/workerd-windows-64@1.20251210.0': optional: true - '@cloudflare/workers-types@4.20251211.0': {} + '@cloudflare/workers-types@4.20251213.0': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -2472,21 +2436,6 @@ snapshots: asn1js: 3.0.7 tslib: 2.8.1 - '@peculiar/asn1-cms@2.6.0': - dependencies: - '@peculiar/asn1-schema': 2.6.0 - '@peculiar/asn1-x509': 2.6.0 - '@peculiar/asn1-x509-attr': 2.6.0 - asn1js: 3.0.7 - tslib: 2.8.1 - - '@peculiar/asn1-csr@2.6.0': - dependencies: - '@peculiar/asn1-schema': 2.6.0 - '@peculiar/asn1-x509': 2.6.0 - asn1js: 3.0.7 - tslib: 2.8.1 - '@peculiar/asn1-ecc@2.6.0': dependencies: '@peculiar/asn1-schema': 2.6.0 @@ -2494,33 +2443,6 @@ snapshots: asn1js: 3.0.7 tslib: 2.8.1 - '@peculiar/asn1-pfx@2.6.0': - dependencies: - '@peculiar/asn1-cms': 2.6.0 - '@peculiar/asn1-pkcs8': 2.6.0 - '@peculiar/asn1-rsa': 2.6.0 - '@peculiar/asn1-schema': 2.6.0 - asn1js: 3.0.7 - tslib: 2.8.1 - - '@peculiar/asn1-pkcs8@2.6.0': - dependencies: - '@peculiar/asn1-schema': 2.6.0 - '@peculiar/asn1-x509': 2.6.0 - asn1js: 3.0.7 - tslib: 2.8.1 - - '@peculiar/asn1-pkcs9@2.6.0': - dependencies: - '@peculiar/asn1-cms': 2.6.0 - '@peculiar/asn1-pfx': 2.6.0 - '@peculiar/asn1-pkcs8': 2.6.0 - '@peculiar/asn1-schema': 2.6.0 - '@peculiar/asn1-x509': 2.6.0 - '@peculiar/asn1-x509-attr': 2.6.0 - asn1js: 3.0.7 - tslib: 2.8.1 - '@peculiar/asn1-rsa@2.6.0': dependencies: '@peculiar/asn1-schema': 2.6.0 @@ -2534,13 +2456,6 @@ snapshots: pvtsutils: 1.3.6 tslib: 2.8.1 - '@peculiar/asn1-x509-attr@2.6.0': - dependencies: - '@peculiar/asn1-schema': 2.6.0 - '@peculiar/asn1-x509': 2.6.0 - asn1js: 3.0.7 - tslib: 2.8.1 - '@peculiar/asn1-x509@2.6.0': dependencies: '@peculiar/asn1-schema': 2.6.0 @@ -2548,31 +2463,17 @@ snapshots: pvtsutils: 1.3.6 tslib: 2.8.1 - '@peculiar/x509@1.14.2': - dependencies: - '@peculiar/asn1-cms': 2.6.0 - '@peculiar/asn1-csr': 2.6.0 - '@peculiar/asn1-ecc': 2.6.0 - '@peculiar/asn1-pkcs9': 2.6.0 - '@peculiar/asn1-rsa': 2.6.0 - '@peculiar/asn1-schema': 2.6.0 - '@peculiar/asn1-x509': 2.6.0 - pvtsutils: 1.3.6 - reflect-metadata: 0.2.2 - tslib: 2.8.1 - tsyringe: 4.10.0 - - '@poppinss/colors@4.1.5': + '@poppinss/colors@4.1.6': dependencies: kleur: 4.1.5 '@poppinss/dumper@0.6.5': dependencies: - '@poppinss/colors': 4.1.5 + '@poppinss/colors': 4.1.6 '@sindresorhus/is': 7.1.1 supports-color: 10.2.2 - '@poppinss/exception@1.2.2': {} + '@poppinss/exception@1.2.3': {} '@react-email/render@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -2589,7 +2490,7 @@ snapshots: selderee: 0.11.0 optional: true - '@simplewebauthn/server@13.2.2': + '@simplewebauthn/server@10.0.1': dependencies: '@hexagon/base64': 1.1.28 '@levischuck/tiny-cbor': 0.2.11 @@ -2598,9 +2499,12 @@ snapshots: '@peculiar/asn1-rsa': 2.6.0 '@peculiar/asn1-schema': 2.6.0 '@peculiar/asn1-x509': 2.6.0 - '@peculiar/x509': 1.14.2 + '@simplewebauthn/types': 10.0.0 + cross-fetch: 4.1.0 + transitivePeerDependencies: + - encoding - '@simplewebauthn/types@12.0.0': {} + '@simplewebauthn/types@10.0.0': {} '@sindresorhus/is@7.1.1': {} @@ -2952,14 +2856,16 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/node@22.19.2': + '@types/node@22.19.3': dependencies: undici-types: 6.21.0 - '@types/node@25.0.0': + '@types/node@25.0.2': dependencies: undici-types: 7.16.0 + '@types/uuid@9.0.8': {} + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.4.5))(eslint@9.39.1)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -3137,6 +3043,12 @@ snapshots: core-js-pure@3.47.0: {} + cross-fetch@4.1.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -3297,7 +3209,7 @@ snapshots: fast-xml-parser@5.2.5: dependencies: - strnum: 2.1.1 + strnum: 2.1.2 fdir@6.5.0(picomatch@4.0.3): optionalDependencies: @@ -3334,7 +3246,7 @@ snapshots: has-flag@4.0.0: {} - hono@4.10.8: {} + hono@4.11.0: {} html-to-text@9.0.5: dependencies: @@ -3549,8 +3461,6 @@ snapshots: loose-envify: 1.4.0 optional: true - reflect-metadata@0.2.2: {} - requires-port@1.0.0: {} resend@6.6.0(@react-email/render@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): @@ -3619,7 +3529,7 @@ snapshots: strip-json-comments@3.1.1: {} - strnum@2.1.1: {} + strnum@2.1.2: {} supports-color@10.2.2: {} @@ -3630,7 +3540,7 @@ snapshots: svix@1.76.1: dependencies: '@stablelib/base64': 1.0.1 - '@types/node': 22.19.2 + '@types/node': 22.19.3 es6-promise: 4.2.8 fast-sha256: 1.3.0 url-parse: 1.5.10 @@ -3661,14 +3571,8 @@ snapshots: dependencies: typescript: 5.4.5 - tslib@1.14.1: {} - tslib@2.8.1: {} - tsyringe@4.10.0: - dependencies: - tslib: 1.14.1 - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -3707,6 +3611,8 @@ snapshots: uuid@10.0.0: {} + uuid@9.0.1: {} + webidl-conversions@3.0.1: {} whatwg-url@5.0.0: @@ -3730,7 +3636,7 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20251210.0 '@cloudflare/workerd-windows-64': 1.20251210.0 - wrangler@4.54.0(@cloudflare/workers-types@4.20251211.0): + wrangler@4.54.0(@cloudflare/workers-types@4.20251213.0): dependencies: '@cloudflare/kv-asset-handler': 0.4.1 '@cloudflare/unenv-preset': 2.7.13(unenv@2.0.0-rc.24)(workerd@1.20251210.0) @@ -3741,7 +3647,7 @@ snapshots: unenv: 2.0.0-rc.24 workerd: 1.20251210.0 optionalDependencies: - '@cloudflare/workers-types': 4.20251211.0 + '@cloudflare/workers-types': 4.20251213.0 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil @@ -3753,12 +3659,12 @@ snapshots: youch-core@0.3.3: dependencies: - '@poppinss/exception': 1.2.2 + '@poppinss/exception': 1.2.3 error-stack-parser-es: 1.0.5 youch@4.1.0-beta.10: dependencies: - '@poppinss/colors': 4.1.5 + '@poppinss/colors': 4.1.6 '@poppinss/dumper': 0.6.5 '@speed-highlight/core': 1.2.12 cookie: 1.1.1 diff --git a/worker/src/admin_api/admin_mail_api.ts b/worker/src/admin_api/admin_mail_api.ts index f075f9f3..2524b704 100644 --- a/worker/src/admin_api/admin_mail_api.ts +++ b/worker/src/admin_api/admin_mail_api.ts @@ -3,14 +3,12 @@ import { handleListQuery } from "../common"; export default { getMails: async (c: Context) => { - const { address, limit, offset, keyword } = c.req.query(); + const { address, limit, offset } = c.req.query(); const addressQuery = address ? `address = ?` : ""; const addressParams = address ? [address] : []; - const keywordQuery = keyword ? `raw like ?` : ""; - const keywordParams = keyword ? [`%${keyword}%`] : []; - const filterQuerys = [addressQuery, keywordQuery].filter((item) => item).join(" and "); + const filterQuerys = [addressQuery].filter((item) => item).join(" and "); const finalQuery = filterQuerys.length > 0 ? `where ${filterQuerys}` : ""; - const filterParams = [...addressParams, ...keywordParams] + const filterParams = [...addressParams] return await handleListQuery(c, `SELECT * FROM raw_mails ${finalQuery}`, `SELECT count(*) as count FROM raw_mails ${finalQuery}`, diff --git a/worker/src/user_api/user_mail_api.ts b/worker/src/user_api/user_mail_api.ts index fd3534af..c8c75dff 100644 --- a/worker/src/user_api/user_mail_api.ts +++ b/worker/src/user_api/user_mail_api.ts @@ -5,22 +5,20 @@ import UserBindAddressModule from "./bind_address"; export default { getMails: async (c: Context) => { const { user_id } = c.get("userPayload"); - const { address, limit, offset, keyword } = c.req.query(); + const { address, limit, offset } = c.req.query(); const bindedAddressList = await UserBindAddressModule.getBindedAddressListById(c, user_id); const addressList = address ? bindedAddressList.filter((item) => item == address) : bindedAddressList; const addressQuery = `address IN (${addressList.map(() => "?").join(",")})`; const addressParams = addressList; - const keywordQuery = keyword ? `raw like ?` : ""; - const keywordParams = keyword ? [`%${keyword}%`] : []; // user must have at least one binded address to query mails if (addressList.length <= 0) { return c.json({ results: [], count: 0 }); } - const filterQuerys = [addressQuery, keywordQuery].filter((item) => item).join(" and "); + const filterQuerys = [addressQuery].filter((item) => item).join(" and "); const finalQuery = filterQuerys.length > 0 ? `where ${filterQuerys}` : ""; - const filterParams = [...addressParams, ...keywordParams] + const filterParams = [...addressParams] return await handleListQuery(c, `SELECT * FROM raw_mails ${finalQuery}`, `SELECT count(*) as count FROM raw_mails ${finalQuery}`,