From decede7ed352759d3410f9a1c6eceb2706aaadbc Mon Sep 17 00:00:00 2001 From: Dream Hunter Date: Fri, 23 Jan 2026 21:30:44 +0800 Subject: [PATCH] feat(oauth2): add email format transformation support (#818) * feat(oauth2): add email format transformation support - Add enableEmailFormat, userEmailFormat, userEmailReplace fields - Support regex pattern matching and replacement template ($1, $2, etc.) - Add Linux Do OAuth2 template with email format pre-configured - Add input length limit (256 chars) to prevent ReDoS attacks - Update admin UI with conditional display and tooltips - Update documentation (zh/en) with configuration examples Co-Authored-By: Claude Opus 4.5 * chore: update lock files and version Co-Authored-By: Claude Opus 4.5 * fix: restore accessTokenFormat as optional field Co-Authored-By: Claude Opus 4.5 --------- Co-authored-by: Claude Opus 4.5 --- frontend/package.json | 4 +- frontend/pnpm-lock.yaml | 454 +++++++------- frontend/src/models/index.ts | 3 + .../src/views/admin/UserOauth2Settings.vue | 139 +++-- pages/package.json | 2 +- .../docs/en/guide/feature/user-oauth2.md | 42 ++ .../docs/zh/guide/feature/user-oauth2.md | 42 ++ vitepress-docs/package.json | 4 +- vitepress-docs/pnpm-lock.yaml | 582 +++++++++--------- worker/package.json | 14 +- worker/pnpm-lock.yaml | 386 ++++++------ worker/src/models/index.ts | 3 + worker/src/user_api/oauth2.ts | 22 +- 13 files changed, 906 insertions(+), 791 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 65846221..0148c892 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "cloudflare_temp_email", - "version": "1.2.1", + "version": "1.3.0", "private": true, "type": "module", "scripts": { @@ -49,7 +49,7 @@ "vite-plugin-wasm": "^3.5.0", "workbox-build": "^7.4.0", "workbox-window": "^7.4.0", - "wrangler": "^4.59.2" + "wrangler": "^4.60.0" }, "packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 6b24a6ba..528f47c0 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -91,8 +91,8 @@ importers: specifier: ^7.4.0 version: 7.4.0 wrangler: - specifier: ^4.59.2 - version: 4.59.2 + specifier: ^4.60.0 + version: 4.60.0 packages: @@ -601,41 +601,41 @@ packages: resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} - '@cloudflare/unenv-preset@2.10.0': - resolution: {integrity: sha512-/uII4vLQXhzCAZzEVeYAjFLBNg2nqTJ1JGzd2lRF6ItYe6U2zVoYGfeKpGx/EkBF6euiU+cyBXgMdtJih+nQ6g==} + '@cloudflare/unenv-preset@2.11.0': + resolution: {integrity: sha512-z3hxFajL765VniNPGV0JRStZolNz63gU3B3AktwoGdDlnQvz5nP+Ah4RL04PONlZQjwmDdGHowEStJ94+RsaJg==} peerDependencies: unenv: 2.0.0-rc.24 - workerd: ^1.20251221.0 + workerd: ^1.20260115.0 peerDependenciesMeta: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20260114.0': - resolution: {integrity: sha512-HNlsRkfNgardCig2P/5bp/dqDECsZ4+NU5XewqArWxMseqt3C5daSuptI620s4pn7Wr0ZKg7jVLH0PDEBkA+aA==} + '@cloudflare/workerd-darwin-64@1.20260120.0': + resolution: {integrity: sha512-JLHx3p5dpwz4wjVSis45YNReftttnI3ndhdMh5BUbbpdreN/g0jgxNt5Qp9tDFqEKl++N63qv+hxJiIIvSLR+Q==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260114.0': - resolution: {integrity: sha512-qyE1UdFnAlxzb+uCfN/d9c8icch7XRiH49/DjoqEa+bCDihTuRS7GL1RmhVIqHJhb3pX3DzxmKgQZBDBL83Inw==} + '@cloudflare/workerd-darwin-arm64@1.20260120.0': + resolution: {integrity: sha512-1Md2tCRhZjwajsZNOiBeOVGiS3zbpLPzUDjHr4+XGTXWOA6FzzwScJwQZLa0Doc28Cp4Nr1n7xGL0Dwiz1XuOA==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260114.0': - resolution: {integrity: sha512-Z0BLvAj/JPOabzads2ddDEfgExWTlD22pnwsuNbPwZAGTSZeQa3Y47eGUWyHk+rSGngknk++S7zHTGbKuG7RRg==} + '@cloudflare/workerd-linux-64@1.20260120.0': + resolution: {integrity: sha512-O0mIfJfvU7F8N5siCoRDaVDuI12wkz2xlG4zK6/Ct7U9c9FiE0ViXNFWXFQm5PPj+qbkNRyhjUwhP+GCKTk5EQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260114.0': - resolution: {integrity: sha512-kPUmEtUxUWlr9PQ64kuhdK0qyo8idPe5IIXUgi7xCD7mDd6EOe5J7ugDpbfvfbYKEjx4DpLvN2t45izyI/Sodw==} + '@cloudflare/workerd-linux-arm64@1.20260120.0': + resolution: {integrity: sha512-aRHO/7bjxVpjZEmVVcpmhbzpN6ITbFCxuLLZSW0H9O0C0w40cDCClWSi19T87Ax/PQcYjFNT22pTewKsupkckA==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260114.0': - resolution: {integrity: sha512-MJnKgm6i1jZGyt2ZHQYCnRlpFTEZcK2rv9y7asS3KdVEXaDgGF8kOns5u6YL6/+eMogfZuHRjfDS+UqRTUYIFA==} + '@cloudflare/workerd-windows-64@1.20260120.0': + resolution: {integrity: sha512-ASZIz1E8sqZQqQCgcfY1PJbBpUDrxPt8NZ+lqNil0qxnO4qX38hbCsdDF2/TDAuq0Txh7nu8ztgTelfNDlb4EA==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -1231,128 +1231,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.55.2': - resolution: {integrity: sha512-21J6xzayjy3O6NdnlO6aXi/urvSRjm6nCI6+nF6ra2YofKruGixN9kfT+dt55HVNwfDmpDHJcaS3JuP/boNnlA==} + '@rollup/rollup-android-arm-eabi@4.56.0': + resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.55.2': - resolution: {integrity: sha512-eXBg7ibkNUZ+sTwbFiDKou0BAckeV6kIigK7y5Ko4mB/5A1KLhuzEKovsmfvsL8mQorkoincMFGnQuIT92SKqA==} + '@rollup/rollup-android-arm64@4.56.0': + resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.55.2': - resolution: {integrity: sha512-UCbaTklREjrc5U47ypLulAgg4njaqfOVLU18VrCrI+6E5MQjuG0lSWaqLlAJwsD7NpFV249XgB0Bi37Zh5Sz4g==} + '@rollup/rollup-darwin-arm64@4.56.0': + resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.55.2': - resolution: {integrity: sha512-dP67MA0cCMHFT2g5XyjtpVOtp7y4UyUxN3dhLdt11at5cPKnSm4lY+EhwNvDXIMzAMIo2KU+mc9wxaAQJTn7sQ==} + '@rollup/rollup-darwin-x64@4.56.0': + resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.55.2': - resolution: {integrity: sha512-WDUPLUwfYV9G1yxNRJdXcvISW15mpvod1Wv3ok+Ws93w1HjIVmCIFxsG2DquO+3usMNCpJQ0wqO+3GhFdl6Fow==} + '@rollup/rollup-freebsd-arm64@4.56.0': + resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.2': - resolution: {integrity: sha512-Ng95wtHVEulRwn7R0tMrlUuiLVL/HXA8Lt/MYVpy88+s5ikpntzZba1qEulTuPnPIZuOPcW9wNEiqvZxZmgmqQ==} + '@rollup/rollup-freebsd-x64@4.56.0': + resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.55.2': - resolution: {integrity: sha512-AEXMESUDWWGqD6LwO/HkqCZgUE1VCJ1OhbvYGsfqX2Y6w5quSXuyoy/Fg3nRqiwro+cJYFxiw5v4kB2ZDLhxrw==} + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': + resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.55.2': - resolution: {integrity: sha512-ZV7EljjBDwBBBSv570VWj0hiNTdHt9uGznDtznBB4Caj3ch5rgD4I2K1GQrtbvJ/QiB+663lLgOdcADMNVC29Q==} + '@rollup/rollup-linux-arm-musleabihf@4.56.0': + resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.55.2': - resolution: {integrity: sha512-uvjwc8NtQVPAJtq4Tt7Q49FOodjfbf6NpqXyW/rjXoV+iZ3EJAHLNAnKT5UJBc6ffQVgmXTUL2ifYiLABlGFqA==} + '@rollup/rollup-linux-arm64-gnu@4.56.0': + resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.55.2': - resolution: {integrity: sha512-s3KoWVNnye9mm/2WpOZ3JeUiediUVw6AvY/H7jNA6qgKA2V2aM25lMkVarTDfiicn/DLq3O0a81jncXszoyCFA==} + '@rollup/rollup-linux-arm64-musl@4.56.0': + resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.55.2': - resolution: {integrity: sha512-gi21faacK+J8aVSyAUptML9VQN26JRxe484IbF+h3hpG+sNVoMXPduhREz2CcYr5my0NE3MjVvQ5bMKX71pfVA==} + '@rollup/rollup-linux-loong64-gnu@4.56.0': + resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.55.2': - resolution: {integrity: sha512-qSlWiXnVaS/ceqXNfnoFZh4IiCA0EwvCivivTGbEu1qv2o+WTHpn1zNmCTAoOG5QaVr2/yhCoLScQtc/7RxshA==} + '@rollup/rollup-linux-loong64-musl@4.56.0': + resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.55.2': - resolution: {integrity: sha512-rPyuLFNoF1B0+wolH277E780NUKf+KoEDb3OyoLbAO18BbeKi++YN6gC/zuJoPPDlQRL3fIxHxCxVEWiem2yXw==} + '@rollup/rollup-linux-ppc64-gnu@4.56.0': + resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.55.2': - resolution: {integrity: sha512-g+0ZLMook31iWV4PvqKU0i9E78gaZgYpSrYPed/4Bu+nGTgfOPtfs1h11tSSRPXSjC5EzLTjV/1A7L2Vr8pJoQ==} + '@rollup/rollup-linux-ppc64-musl@4.56.0': + resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.55.2': - resolution: {integrity: sha512-i+sGeRGsjKZcQRh3BRfpLsM3LX3bi4AoEVqmGDyc50L6KfYsN45wVCSz70iQMwPWr3E5opSiLOwsC9WB4/1pqg==} + '@rollup/rollup-linux-riscv64-gnu@4.56.0': + resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.55.2': - resolution: {integrity: sha512-C1vLcKc4MfFV6I0aWsC7B2Y9QcsiEcvKkfxprwkPfLaN8hQf0/fKHwSF2lcYzA9g4imqnhic729VB9Fo70HO3Q==} + '@rollup/rollup-linux-riscv64-musl@4.56.0': + resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.55.2': - resolution: {integrity: sha512-68gHUK/howpQjh7g7hlD9DvTTt4sNLp1Bb+Yzw2Ki0xvscm2cOdCLZNJNhd2jW8lsTPrHAHuF751BygifW4bkQ==} + '@rollup/rollup-linux-s390x-gnu@4.56.0': + resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.55.2': - resolution: {integrity: sha512-1e30XAuaBP1MAizaOBApsgeGZge2/Byd6wV4a8oa6jPdHELbRHBiw7wvo4dp7Ie2PE8TZT4pj9RLGZv9N4qwlw==} + '@rollup/rollup-linux-x64-gnu@4.56.0': + resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.55.2': - resolution: {integrity: sha512-4BJucJBGbuGnH6q7kpPqGJGzZnYrpAzRd60HQSt3OpX/6/YVgSsJnNzR8Ot74io50SeVT4CtCWe/RYIAymFPwA==} + '@rollup/rollup-linux-x64-musl@4.56.0': + resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.55.2': - resolution: {integrity: sha512-cT2MmXySMo58ENv8p6/O6wI/h/gLnD3D6JoajwXFZH6X9jz4hARqUhWpGuQhOgLNXscfZYRQMJvZDtWNzMAIDw==} + '@rollup/rollup-openbsd-x64@4.56.0': + resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.55.2': - resolution: {integrity: sha512-sZnyUgGkuzIXaK3jNMPmUIyJrxu/PjmATQrocpGA1WbCPX8H5tfGgRSuYtqBYAvLuIGp8SPRb1O4d1Fkb5fXaQ==} + '@rollup/rollup-openharmony-arm64@4.56.0': + resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.55.2': - resolution: {integrity: sha512-sDpFbenhmWjNcEbBcoTV0PWvW5rPJFvu+P7XoTY0YLGRupgLbFY0XPfwIbJOObzO7QgkRDANh65RjhPmgSaAjQ==} + '@rollup/rollup-win32-arm64-msvc@4.56.0': + resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.2': - resolution: {integrity: sha512-GvJ03TqqaweWCigtKQVBErw2bEhu1tyfNQbarwr94wCGnczA9HF8wqEe3U/Lfu6EdeNP0p6R+APeHVwEqVxpUQ==} + '@rollup/rollup-win32-ia32-msvc@4.56.0': + resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.55.2': - resolution: {integrity: sha512-KvXsBvp13oZz9JGe5NYS7FNizLe99Ny+W8ETsuCyjXiKdiGrcz2/J/N8qxZ/RSwivqjQguug07NLHqrIHrqfYw==} + '@rollup/rollup-win32-x64-gnu@4.56.0': + resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.55.2': - resolution: {integrity: sha512-xNO+fksQhsAckRtDSPWaMeT1uIM+JrDRXlerpnWNXhn1TdB3YZ6uKBMBTKP0eX9XtYEP978hHk1f8332i2AW8Q==} + '@rollup/rollup-win32-x64-msvc@4.56.0': + resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} cpu: [x64] os: [win32] @@ -1373,68 +1373,68 @@ packages: '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} - '@swc/core-darwin-arm64@1.15.8': - resolution: {integrity: sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==} + '@swc/core-darwin-arm64@1.15.10': + resolution: {integrity: sha512-U72pGqmJYbjrLhMndIemZ7u9Q9owcJczGxwtfJlz/WwMaGYAV/g4nkGiUVk/+QSX8sFCAjanovcU1IUsP2YulA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.15.8': - resolution: {integrity: sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==} + '@swc/core-darwin-x64@1.15.10': + resolution: {integrity: sha512-NZpDXtwHH083L40xdyj1sY31MIwLgOxKfZEAGCI8xHXdHa+GWvEiVdGiu4qhkJctoHFzAEc7ZX3GN5phuJcPuQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.15.8': - resolution: {integrity: sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==} + '@swc/core-linux-arm-gnueabihf@1.15.10': + resolution: {integrity: sha512-ioieF5iuRziUF1HkH1gg1r93e055dAdeBAPGAk40VjqpL5/igPJ/WxFHGvc6WMLhUubSJI4S0AiZAAhEAp1jDg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.15.8': - resolution: {integrity: sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==} + '@swc/core-linux-arm64-gnu@1.15.10': + resolution: {integrity: sha512-tD6BClOrxSsNus9cJL7Gxdv7z7Y2hlyvZd9l0NQz+YXzmTWqnfzLpg16ovEI7gknH2AgDBB5ywOsqu8hUgSeEQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.15.8': - resolution: {integrity: sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==} + '@swc/core-linux-arm64-musl@1.15.10': + resolution: {integrity: sha512-4uAHO3nbfbrTcmO/9YcVweTQdx5fN3l7ewwl5AEK4yoC4wXmoBTEPHAVdKNe4r9+xrTgd4BgyPsy0409OjjlMw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.15.8': - resolution: {integrity: sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==} + '@swc/core-linux-x64-gnu@1.15.10': + resolution: {integrity: sha512-W0h9ONNw1pVIA0cN7wtboOSTl4Jk3tHq+w2cMPQudu9/+3xoCxpFb9ZdehwCAk29IsvdWzGzY6P7dDVTyFwoqg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.15.8': - resolution: {integrity: sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==} + '@swc/core-linux-x64-musl@1.15.10': + resolution: {integrity: sha512-XQNZlLZB62S8nAbw7pqoqwy91Ldy2RpaMRqdRN3T+tAg6Xg6FywXRKCsLh6IQOadr4p1+lGnqM/Wn35z5a/0Vw==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.15.8': - resolution: {integrity: sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==} + '@swc/core-win32-arm64-msvc@1.15.10': + resolution: {integrity: sha512-qnAGrRv5Nj/DATxAmCnJQRXXQqnJwR0trxLndhoHoxGci9MuguNIjWahS0gw8YZFjgTinbTxOwzatkoySihnmw==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.15.8': - resolution: {integrity: sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==} + '@swc/core-win32-ia32-msvc@1.15.10': + resolution: {integrity: sha512-i4X/q8QSvzVlaRtv1xfnfl+hVKpCfiJ+9th484rh937fiEZKxZGf51C+uO0lfKDP1FfnT6C1yBYwHy7FLBVXFw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.15.8': - resolution: {integrity: sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==} + '@swc/core-win32-x64-msvc@1.15.10': + resolution: {integrity: sha512-HvY8XUFuoTXn6lSccDLYFlXv1SU/PzYi4PyUqGT++WfTnbw/68N/7BdUZqglGRwiSqr0qhYt/EhmBpULj0J9rA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.15.8': - resolution: {integrity: sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==} + '@swc/core@1.15.10': + resolution: {integrity: sha512-udNofxftduMUEv7nqahl2nvodCiCDQ4Ge0ebzsEm6P8s0RC2tBM0Hqx0nNF5J/6t9uagFJyWIDjXy3IIWMHDJw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -1448,8 +1448,8 @@ packages: '@swc/types@0.1.25': resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} - '@swc/wasm@1.15.8': - resolution: {integrity: sha512-RG2BxGbbsjtddFCo1ghKH6A/BMXbY1eMBfpysV0lJMCpI4DZOjW1BNBnxvBt7YsYmlJtmy5UXIg9/4ekBTFFaQ==} + '@swc/wasm@1.15.10': + resolution: {integrity: sha512-kVTb346oP16MOwDibhLr/nv+swrw/M8dcim6VjsWKZR5ZVOCZU9RrzrT5gMh72v4Y37Agilb8SCzEZ4wTvQGpQ==} '@transloadit/prettier-bytes@0.0.7': resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==} @@ -1722,8 +1722,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.9.15: - resolution: {integrity: sha512-kX8h7K2srmDyYnXRIppo4AH/wYgzWVCs+eKr3RusRSQ5PvRYoEFmR/I0PbdTjKFAoKqp5+kbxnNTFO9jOfSVJg==} + baseline-browser-mapping@2.9.17: + resolution: {integrity: sha512-agD0MgJFUP/4nvjqzIB29zRPUuCF7Ge6mEv9s8dHrtYD7QWXRcx75rOADE/d5ah1NI+0vkDl0yorDd5U852IQQ==} hasBin: true blake3-wasm@2.1.5: @@ -1752,8 +1752,8 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - caniuse-lite@1.0.30001765: - resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==} + caniuse-lite@1.0.30001766: + resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} @@ -1796,8 +1796,8 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} - core-js-compat@3.47.0: - resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} + core-js-compat@3.48.0: + resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -1890,8 +1890,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.267: - resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} + electron-to-chromium@1.5.277: + resolution: {integrity: sha512-wKXFZw4erWmmOz5N/grBoJ2XrNJGDFMu2+W5ACHza5rHtvsqrK4gb6rnLC7XxKB9WlJ+RmyQatuEXmtm86xbnw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1899,8 +1899,8 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - entities@7.0.0: - resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} error-stack-parser-es@1.0.5: @@ -2325,8 +2325,8 @@ packages: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} - lodash-es@4.17.22: - resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -2353,8 +2353,8 @@ packages: lodash.toarray@4.4.0: resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} lru-cache@11.2.4: resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} @@ -2387,8 +2387,8 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - miniflare@4.20260114.0: - resolution: {integrity: sha512-QwHT7S6XqGdQxIvql1uirH/7/i3zDEt0B/YBXTYzMfJtVCR4+ue3KPkU+Bl0zMxvpgkvjh9+eCHhJbKEqya70A==} + miniflare@4.20260120.0: + resolution: {integrity: sha512-XXZyE2pDKMtP5OLuv0LPHEAzIYhov4jrYjcqrhhqtxGGtXneWOHvXIPo+eV8sqwqWd3R7j4DlEKcyb+87BR49Q==} engines: {node: '>=18.0.0'} hasBin: true @@ -2574,8 +2574,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - rollup@4.55.2: - resolution: {integrity: sha512-PggGy4dhwx5qaW+CKBilA/98Ql9keyfnb7lh4SR6shQ91QQQi1ORJ1v4UinkdP2i87OBs9AQFooQylcrrRfIcg==} + rollup@4.56.0: + resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2831,8 +2831,8 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undici@7.14.0: - resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} + undici@7.18.2: + resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} engines: {node: '>=20.18.1'} unenv@2.0.0-rc.24: @@ -3100,17 +3100,17 @@ packages: workbox-window@7.4.0: resolution: {integrity: sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==} - workerd@1.20260114.0: - resolution: {integrity: sha512-kTJ+jNdIllOzWuVA3NRQRvywP0T135zdCjAE2dAUY1BFbxM6fmMZV8BbskEoQ4hAODVQUfZQmyGctcwvVCKxFA==} + workerd@1.20260120.0: + resolution: {integrity: sha512-R6X/VQOkwLTBGLp4VRUwLQZZVxZ9T9J8pGiJ6GQUMaRkY7TVWrCSkVfoNMM1/YyFsY5UYhhPoQe5IehnhZ3Pdw==} engines: {node: '>=16'} hasBin: true - wrangler@4.59.2: - resolution: {integrity: sha512-Z4xn6jFZTaugcOKz42xvRAYKgkVUERHVbuCJ5+f+gK+R6k12L02unakPGOA0L0ejhUl16dqDjKe4tmL9sedHcw==} + wrangler@4.60.0: + resolution: {integrity: sha512-n4kibm/xY0Qd5G2K/CbAQeVeOIlwPNVglmFjlDRCCYk3hZh8IggO/rg8AXt/vByK2Sxsugl5Z7yvgWxrUbmS6g==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20260114.0 + '@cloudflare/workers-types': ^4.20260120.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -3773,7 +3773,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.6) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.6) babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.6) - core-js-compat: 3.47.0 + core-js-compat: 3.48.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -3812,25 +3812,25 @@ snapshots: '@cloudflare/kv-asset-handler@0.4.2': {} - '@cloudflare/unenv-preset@2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0)': + '@cloudflare/unenv-preset@2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260120.0)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260114.0 + workerd: 1.20260120.0 - '@cloudflare/workerd-darwin-64@1.20260114.0': + '@cloudflare/workerd-darwin-64@1.20260120.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260114.0': + '@cloudflare/workerd-darwin-arm64@1.20260120.0': optional: true - '@cloudflare/workerd-linux-64@1.20260114.0': + '@cloudflare/workerd-linux-64@1.20260120.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20260114.0': + '@cloudflare/workerd-linux-arm64@1.20260120.0': optional: true - '@cloudflare/workerd-windows-64@1.20260114.0': + '@cloudflare/workerd-windows-64@1.20260120.0': optional: true '@cspotcode/source-map-support@0.8.1': @@ -4230,79 +4230,79 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/rollup-android-arm-eabi@4.55.2': + '@rollup/rollup-android-arm-eabi@4.56.0': optional: true - '@rollup/rollup-android-arm64@4.55.2': + '@rollup/rollup-android-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-arm64@4.55.2': + '@rollup/rollup-darwin-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-x64@4.55.2': + '@rollup/rollup-darwin-x64@4.56.0': optional: true - '@rollup/rollup-freebsd-arm64@4.55.2': + '@rollup/rollup-freebsd-arm64@4.56.0': optional: true - '@rollup/rollup-freebsd-x64@4.55.2': + '@rollup/rollup-freebsd-x64@4.56.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.2': + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.2': + '@rollup/rollup-linux-arm-musleabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.2': + '@rollup/rollup-linux-arm64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.55.2': + '@rollup/rollup-linux-arm64-musl@4.56.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.2': + '@rollup/rollup-linux-loong64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.55.2': + '@rollup/rollup-linux-loong64-musl@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.2': + '@rollup/rollup-linux-ppc64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.55.2': + '@rollup/rollup-linux-ppc64-musl@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.2': + '@rollup/rollup-linux-riscv64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.2': + '@rollup/rollup-linux-riscv64-musl@4.56.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.2': + '@rollup/rollup-linux-s390x-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.55.2': + '@rollup/rollup-linux-x64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-musl@4.55.2': + '@rollup/rollup-linux-x64-musl@4.56.0': optional: true - '@rollup/rollup-openbsd-x64@4.55.2': + '@rollup/rollup-openbsd-x64@4.56.0': optional: true - '@rollup/rollup-openharmony-arm64@4.55.2': + '@rollup/rollup-openharmony-arm64@4.56.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.2': + '@rollup/rollup-win32-arm64-msvc@4.56.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.2': + '@rollup/rollup-win32-ia32-msvc@4.56.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.55.2': + '@rollup/rollup-win32-x64-gnu@4.56.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.55.2': + '@rollup/rollup-win32-x64-msvc@4.56.0': optional: true '@simplewebauthn/browser@10.0.0': @@ -4322,51 +4322,51 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.12 - '@swc/core-darwin-arm64@1.15.8': + '@swc/core-darwin-arm64@1.15.10': optional: true - '@swc/core-darwin-x64@1.15.8': + '@swc/core-darwin-x64@1.15.10': optional: true - '@swc/core-linux-arm-gnueabihf@1.15.8': + '@swc/core-linux-arm-gnueabihf@1.15.10': optional: true - '@swc/core-linux-arm64-gnu@1.15.8': + '@swc/core-linux-arm64-gnu@1.15.10': optional: true - '@swc/core-linux-arm64-musl@1.15.8': + '@swc/core-linux-arm64-musl@1.15.10': optional: true - '@swc/core-linux-x64-gnu@1.15.8': + '@swc/core-linux-x64-gnu@1.15.10': optional: true - '@swc/core-linux-x64-musl@1.15.8': + '@swc/core-linux-x64-musl@1.15.10': optional: true - '@swc/core-win32-arm64-msvc@1.15.8': + '@swc/core-win32-arm64-msvc@1.15.10': optional: true - '@swc/core-win32-ia32-msvc@1.15.8': + '@swc/core-win32-ia32-msvc@1.15.10': optional: true - '@swc/core-win32-x64-msvc@1.15.8': + '@swc/core-win32-x64-msvc@1.15.10': optional: true - '@swc/core@1.15.8': + '@swc/core@1.15.10': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.15.8 - '@swc/core-darwin-x64': 1.15.8 - '@swc/core-linux-arm-gnueabihf': 1.15.8 - '@swc/core-linux-arm64-gnu': 1.15.8 - '@swc/core-linux-arm64-musl': 1.15.8 - '@swc/core-linux-x64-gnu': 1.15.8 - '@swc/core-linux-x64-musl': 1.15.8 - '@swc/core-win32-arm64-msvc': 1.15.8 - '@swc/core-win32-ia32-msvc': 1.15.8 - '@swc/core-win32-x64-msvc': 1.15.8 + '@swc/core-darwin-arm64': 1.15.10 + '@swc/core-darwin-x64': 1.15.10 + '@swc/core-linux-arm-gnueabihf': 1.15.10 + '@swc/core-linux-arm64-gnu': 1.15.10 + '@swc/core-linux-arm64-musl': 1.15.10 + '@swc/core-linux-x64-gnu': 1.15.10 + '@swc/core-linux-x64-musl': 1.15.10 + '@swc/core-win32-arm64-msvc': 1.15.10 + '@swc/core-win32-ia32-msvc': 1.15.10 + '@swc/core-win32-x64-msvc': 1.15.10 '@swc/counter@0.1.3': {} @@ -4374,7 +4374,7 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@swc/wasm@1.15.8': {} + '@swc/wasm@1.15.10': {} '@transloadit/prettier-bytes@0.0.7': {} @@ -4447,7 +4447,7 @@ snapshots: dependencies: '@babel/parser': 7.28.6 '@vue/shared': 3.5.27 - entities: 7.0.0 + entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 @@ -4689,7 +4689,7 @@ snapshots: dependencies: '@babel/core': 7.28.6 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6) - core-js-compat: 3.47.0 + core-js-compat: 3.48.0 transitivePeerDependencies: - supports-color @@ -4702,7 +4702,7 @@ snapshots: balanced-match@1.0.2: {} - baseline-browser-mapping@2.9.15: {} + baseline-browser-mapping@2.9.17: {} blake3-wasm@2.1.5: {} @@ -4712,9 +4712,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.9.15 - caniuse-lite: 1.0.30001765 - electron-to-chromium: 1.5.267 + baseline-browser-mapping: 2.9.17 + caniuse-lite: 1.0.30001766 + electron-to-chromium: 1.5.277 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -4737,7 +4737,7 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - caniuse-lite@1.0.30001765: {} + caniuse-lite@1.0.30001766: {} chokidar@4.0.3: dependencies: @@ -4773,7 +4773,7 @@ snapshots: cookie@1.1.1: {} - core-js-compat@3.47.0: + core-js-compat@3.48.0: dependencies: browserslist: 4.28.1 @@ -4865,13 +4865,13 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.267: {} + electron-to-chromium@1.5.277: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - entities@7.0.0: {} + entities@7.0.1: {} error-stack-parser-es@1.0.5: {} @@ -5388,7 +5388,7 @@ snapshots: pkg-types: 2.3.0 quansync: 0.2.11 - lodash-es@4.17.22: {} + lodash-es@4.17.23: {} lodash.camelcase@4.3.0: {} @@ -5406,7 +5406,7 @@ snapshots: lodash.toarray@4.4.0: {} - lodash@4.17.21: {} + lodash@4.17.23: {} lru-cache@11.2.4: {} @@ -5436,12 +5436,12 @@ snapshots: dependencies: mime-db: 1.52.0 - miniflare@4.20260114.0: + miniflare@4.20260120.0: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.34.5 - undici: 7.14.0 - workerd: 1.20260114.0 + undici: 7.18.2 + workerd: 1.20260120.0 ws: 8.18.0 youch: 4.1.0-beta.10 zod: 3.25.76 @@ -5482,8 +5482,8 @@ snapshots: date-fns-tz: 3.2.0(date-fns@4.1.0) evtd: 0.2.4 highlight.js: 11.11.1 - lodash: 4.17.21 - lodash-es: 4.17.22 + lodash: 4.17.23 + lodash-es: 4.17.23 seemly: 0.3.10 treemate: 0.3.11 vdirs: 0.1.8(vue@3.5.27(typescript@5.4.5)) @@ -5648,35 +5648,35 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.55.2: + rollup@4.56.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.55.2 - '@rollup/rollup-android-arm64': 4.55.2 - '@rollup/rollup-darwin-arm64': 4.55.2 - '@rollup/rollup-darwin-x64': 4.55.2 - '@rollup/rollup-freebsd-arm64': 4.55.2 - '@rollup/rollup-freebsd-x64': 4.55.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.55.2 - '@rollup/rollup-linux-arm-musleabihf': 4.55.2 - '@rollup/rollup-linux-arm64-gnu': 4.55.2 - '@rollup/rollup-linux-arm64-musl': 4.55.2 - '@rollup/rollup-linux-loong64-gnu': 4.55.2 - '@rollup/rollup-linux-loong64-musl': 4.55.2 - '@rollup/rollup-linux-ppc64-gnu': 4.55.2 - '@rollup/rollup-linux-ppc64-musl': 4.55.2 - '@rollup/rollup-linux-riscv64-gnu': 4.55.2 - '@rollup/rollup-linux-riscv64-musl': 4.55.2 - '@rollup/rollup-linux-s390x-gnu': 4.55.2 - '@rollup/rollup-linux-x64-gnu': 4.55.2 - '@rollup/rollup-linux-x64-musl': 4.55.2 - '@rollup/rollup-openbsd-x64': 4.55.2 - '@rollup/rollup-openharmony-arm64': 4.55.2 - '@rollup/rollup-win32-arm64-msvc': 4.55.2 - '@rollup/rollup-win32-ia32-msvc': 4.55.2 - '@rollup/rollup-win32-x64-gnu': 4.55.2 - '@rollup/rollup-win32-x64-msvc': 4.55.2 + '@rollup/rollup-android-arm-eabi': 4.56.0 + '@rollup/rollup-android-arm64': 4.56.0 + '@rollup/rollup-darwin-arm64': 4.56.0 + '@rollup/rollup-darwin-x64': 4.56.0 + '@rollup/rollup-freebsd-arm64': 4.56.0 + '@rollup/rollup-freebsd-x64': 4.56.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.56.0 + '@rollup/rollup-linux-arm-musleabihf': 4.56.0 + '@rollup/rollup-linux-arm64-gnu': 4.56.0 + '@rollup/rollup-linux-arm64-musl': 4.56.0 + '@rollup/rollup-linux-loong64-gnu': 4.56.0 + '@rollup/rollup-linux-loong64-musl': 4.56.0 + '@rollup/rollup-linux-ppc64-gnu': 4.56.0 + '@rollup/rollup-linux-ppc64-musl': 4.56.0 + '@rollup/rollup-linux-riscv64-gnu': 4.56.0 + '@rollup/rollup-linux-riscv64-musl': 4.56.0 + '@rollup/rollup-linux-s390x-gnu': 4.56.0 + '@rollup/rollup-linux-x64-gnu': 4.56.0 + '@rollup/rollup-linux-x64-musl': 4.56.0 + '@rollup/rollup-openbsd-x64': 4.56.0 + '@rollup/rollup-openharmony-arm64': 4.56.0 + '@rollup/rollup-win32-arm64-msvc': 4.56.0 + '@rollup/rollup-win32-ia32-msvc': 4.56.0 + '@rollup/rollup-win32-x64-gnu': 4.56.0 + '@rollup/rollup-win32-x64-msvc': 4.56.0 fsevents: 2.3.3 safe-array-concat@1.1.3: @@ -6010,7 +6010,7 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici@7.14.0: {} + undici@7.18.2: {} unenv@2.0.0-rc.24: dependencies: @@ -6124,8 +6124,8 @@ snapshots: vite-plugin-top-level-await@1.6.0(rollup@2.79.2)(vite@7.3.1(terser@5.46.0)): dependencies: '@rollup/plugin-virtual': 3.0.2(rollup@2.79.2) - '@swc/core': 1.15.8 - '@swc/wasm': 1.15.8 + '@swc/core': 1.15.10 + '@swc/wasm': 1.15.10 uuid: 10.0.0 vite: 7.3.1(terser@5.46.0) transitivePeerDependencies: @@ -6142,7 +6142,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.55.2 + rollup: 4.56.0 tinyglobby: 0.2.15 optionalDependencies: fsevents: 2.3.3 @@ -6272,7 +6272,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 fs-extra: 9.1.0 glob: 11.1.0 - lodash: 4.17.21 + lodash: 4.17.23 pretty-bytes: 5.6.0 rollup: 2.79.2 source-map: 0.8.0-beta.0 @@ -6360,24 +6360,24 @@ snapshots: '@types/trusted-types': 2.0.7 workbox-core: 7.4.0 - workerd@1.20260114.0: + workerd@1.20260120.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260114.0 - '@cloudflare/workerd-darwin-arm64': 1.20260114.0 - '@cloudflare/workerd-linux-64': 1.20260114.0 - '@cloudflare/workerd-linux-arm64': 1.20260114.0 - '@cloudflare/workerd-windows-64': 1.20260114.0 + '@cloudflare/workerd-darwin-64': 1.20260120.0 + '@cloudflare/workerd-darwin-arm64': 1.20260120.0 + '@cloudflare/workerd-linux-64': 1.20260120.0 + '@cloudflare/workerd-linux-arm64': 1.20260120.0 + '@cloudflare/workerd-windows-64': 1.20260120.0 - wrangler@4.59.2: + wrangler@4.60.0: dependencies: '@cloudflare/kv-asset-handler': 0.4.2 - '@cloudflare/unenv-preset': 2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0) + '@cloudflare/unenv-preset': 2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260120.0) blake3-wasm: 2.1.5 esbuild: 0.27.0 - miniflare: 4.20260114.0 + miniflare: 4.20260120.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260114.0 + workerd: 1.20260120.0 optionalDependencies: fsevents: 2.3.3 transitivePeerDependencies: diff --git a/frontend/src/models/index.ts b/frontend/src/models/index.ts index 1fbaf1ab..dc9a4cb2 100644 --- a/frontend/src/models/index.ts +++ b/frontend/src/models/index.ts @@ -9,6 +9,9 @@ export type UserOauth2Settings = { redirectURL: string; logoutURL?: string; userEmailKey: string; + enableEmailFormat?: boolean; // Enable email format transformation + userEmailFormat?: string; // Regex pattern to match email + userEmailReplace?: string; // Replacement template using $1, $2, etc. scope: string; enableMailAllowList?: boolean | undefined; mailAllowList?: string[] | undefined; diff --git a/frontend/src/views/admin/UserOauth2Settings.vue b/frontend/src/views/admin/UserOauth2Settings.vue index 24af4874..c07c1479 100644 --- a/frontend/src/views/admin/UserOauth2Settings.vue +++ b/frontend/src/views/admin/UserOauth2Settings.vue @@ -26,6 +26,10 @@ const { t } = useI18n({ addOauth2: 'Add Oauth2', name: 'Name', oauth2Type: 'Oauth2 Type', + enableEmailFormat: 'Enable Email Format', + userEmailFormat: 'Email Regex Pattern', + userEmailReplace: 'Replace Template', + userEmailFormatTip: 'Use regex to transform email. Example: ^(.+)@old\\.com$ with $1@new.com', tip: 'Third-party login will automatically use the user\'s email to register an account (the same email will be regarded as the same account), this account is the same as the registered account, and you can also set the password through the forget password', }, zh: { @@ -39,6 +43,10 @@ const { t } = useI18n({ addOauth2: '添加 Oauth2', name: '名称', oauth2Type: 'Oauth2 类型', + enableEmailFormat: '启用邮箱格式转换', + userEmailFormat: '邮箱正则表达式', + userEmailReplace: '替换模板', + userEmailFormatTip: '使用正则转换邮箱。示例: ^(.+)@old\\.com$ 配合 $1@new.com', tip: '第三方登录会自动使用用户邮箱注册账号(邮箱相同将视为同一账号), 此账号和注册的账号相同, 也可以通过忘记密码设置密码', } } @@ -75,80 +83,55 @@ const save = async () => { } const addNewOauth2 = () => { - const authorizationURL = () => { - switch (newOauth2Type.value) { - case 'github': - return 'https://github.com/login/oauth/authorize' - case 'authentik': - return 'https://youdomain/application/o/authorize/' - default: - return '' - } - } - const accessTokenURL = () => { - switch (newOauth2Type.value) { - case 'github': - return 'https://github.com/login/oauth/access_token' - case 'authentik': - return 'https://youdomain/application/o/token/' - default: - return '' - } - } - const accessTokenFormat = () => { - switch (newOauth2Type.value) { - case 'github': - return 'json' - case 'authentik': - return 'urlencoded' - default: - return '' - } - } - const userInfoURL = () => { - switch (newOauth2Type.value) { - case 'github': - return 'https://api.github.com/user' - case 'authentik': - return 'https://youdomain/application/o/userinfo/' - default: - return '' - } - } - const userEmailKey = () => { - switch (newOauth2Type.value) { - case 'github': - return 'email' - case 'authentik': - return 'email' - default: - return '' - } - } - const scope = () => { - switch (newOauth2Type.value) { - case 'github': - return 'user:email' - case 'authentik': - return 'email openid' - default: - return '' - } + const templates: Record> = { + github: { + authorizationURL: 'https://github.com/login/oauth/authorize', + accessTokenURL: 'https://github.com/login/oauth/access_token', + accessTokenFormat: 'json', + userInfoURL: 'https://api.github.com/user', + userEmailKey: 'email', + scope: 'user:email', + }, + linuxdo: { + authorizationURL: 'https://connect.linux.do/oauth2/authorize', + accessTokenURL: 'https://connect.linux.do/oauth2/token', + accessTokenFormat: 'urlencoded', + userInfoURL: 'https://connect.linux.do/api/user', + userEmailKey: 'id', + scope: 'user', + enableEmailFormat: true, + userEmailFormat: '^(.+)$', + userEmailReplace: 'linux_do_$1@oauth.linux.do', + }, + authentik: { + authorizationURL: 'https://youdomain/application/o/authorize/', + accessTokenURL: 'https://youdomain/application/o/token/', + accessTokenFormat: 'urlencoded', + userInfoURL: 'https://youdomain/application/o/userinfo/', + userEmailKey: 'email', + scope: 'email openid', + }, + custom: {}, } + const template = templates[newOauth2Type.value] || {} userOauth2Settings.value.push({ name: newOauth2Name.value, clientID: '', clientSecret: '', - authorizationURL: authorizationURL(), - accessTokenURL: accessTokenURL(), - accessTokenFormat: accessTokenFormat(), - userInfoURL: userInfoURL(), - userEmailKey: userEmailKey(), + authorizationURL: '', + accessTokenURL: '', + accessTokenFormat: '', + userInfoURL: '', + userEmailKey: '', redirectURL: `${window.location.origin}/user/oauth2/callback`, logoutURL: '', - scope: scope(), + scope: '', + enableEmailFormat: false, + userEmailFormat: '', + userEmailReplace: '', enableMailAllowList: false, - mailAllowList: constant.COMMOM_MAIL + mailAllowList: constant.COMMOM_MAIL, + ...template, } as UserOauth2Settings) newOauth2Name.value = '' showAddOauth2.value = false @@ -174,6 +157,7 @@ onMounted(async () => { + @@ -218,7 +202,7 @@ onMounted(async () => { - + @@ -235,6 +219,27 @@ onMounted(async () => { + + + {{ t('enable') }} + + + + + + {{ t('userEmailFormatTip') }} + + + + + + {{ t('userEmailFormatTip') }} + + diff --git a/pages/package.json b/pages/package.json index ed3353c1..199d7741 100644 --- a/pages/package.json +++ b/pages/package.json @@ -11,7 +11,7 @@ "author": "", "license": "ISC", "devDependencies": { - "wrangler": "^4.59.2" + "wrangler": "^4.60.0" }, "packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39" } diff --git a/vitepress-docs/docs/en/guide/feature/user-oauth2.md b/vitepress-docs/docs/en/guide/feature/user-oauth2.md index 113cfd3e..85bd2cc5 100644 --- a/vitepress-docs/docs/en/guide/feature/user-oauth2.md +++ b/vitepress-docs/docs/en/guide/feature/user-oauth2.md @@ -13,6 +13,11 @@ Reference: [Creating an OAuth App](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app) +### Linux Do + +- Create an application at [Linux Do Connect](https://connect.linux.do/) to obtain `Client ID` and `Client Secret` +- Linux Do returns a user ID instead of an email, so you need to enable the Email Format feature + ### Authentik - [Authentik OAuth2 Provider](https://docs.goauthentik.io/docs/providers/oauth2/) @@ -21,6 +26,43 @@ Reference: [Creating an OAuth App](https://docs.github.com/en/apps/oauth-apps/bu ![oauth2](/feature/oauth2.png) +### Configuration Fields + +| Field | Description | +|-------|-------------| +| Name | OAuth2 provider name, displayed on the login page | +| Client ID | OAuth2 application ID | +| Client Secret | OAuth2 application secret | +| Authorization URL | OAuth2 authorization endpoint | +| Access Token URL | Endpoint to obtain Access Token | +| Access Token Params Format | Token request format: `json` or `urlencoded` | +| User Info URL | Endpoint to get user information | +| User Email Key | Key for email field in user info, supports JSONPath (e.g., `$[0].email`) | +| Redirect URL | OAuth2 callback URL | +| Scope | OAuth2 permission scope | + +### Email Format Transformation + +When OAuth2 returns a non-standard email format (e.g., returns a user ID), you can enable the Email Format feature. + +| Field | Description | +|-------|-------------| +| Enable Email Format | Enable email format transformation | +| Email Regex Pattern | Regular expression to match the original value, use capture groups `()` | +| Replace Template | Replacement template, use `$1`, `$2`, etc. to reference capture groups | + +**Examples:** + +| Scenario | Original Value | Regex Pattern | Replace Template | Result | +|----------|---------------|---------------|------------------|--------| +| ID to Email | `12345` | `^(.+)$` | `linux_do_$1@oauth.linux.do` | `linux_do_12345@oauth.linux.do` | +| Change Domain | `john@old.com` | `^(.+)@old\.com$` | `$1@new.com` | `john@new.com` | +| Extract Username | `john@corp.com` | `^(.+)@.*$` | `$1@mymail.com` | `john@mymail.com` | + +### Email Address Allow List + +When enabled, only emails from specified domains can login. + ## Test User Login Page ![oauth2 login](/feature/oauth2-login.png) diff --git a/vitepress-docs/docs/zh/guide/feature/user-oauth2.md b/vitepress-docs/docs/zh/guide/feature/user-oauth2.md index a679fdce..a471499d 100644 --- a/vitepress-docs/docs/zh/guide/feature/user-oauth2.md +++ b/vitepress-docs/docs/zh/guide/feature/user-oauth2.md @@ -13,6 +13,11 @@ 参考 [Creating an OAuth App](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app) +### Linux Do + +- 在 [Linux Do Connect](https://connect.linux.do/) 创建应用获取 `Client ID` 和 `Client Secret` +- Linux Do 返回的是用户 ID 而非邮箱,需要启用邮箱格式转换功能 + ### Authentik - [Authentik OAuth2 Provider](https://docs.goauthentik.io/docs/providers/oauth2/) @@ -21,6 +26,43 @@ ![oauth2](/feature/oauth2.png) +### 配置字段说明 + +| 字段 | 说明 | +|------|------| +| Name | OAuth2 提供商名称,显示在登录页面 | +| Client ID | OAuth2 应用 ID | +| Client Secret | OAuth2 应用密钥 | +| Authorization URL | OAuth2 授权端点 | +| Access Token URL | 获取 Access Token 的端点 | +| Access Token Params Format | Token 请求格式:`json` 或 `urlencoded` | +| User Info URL | 获取用户信息的端点 | +| User Email Key | 用户信息中邮箱字段的 key,支持 JSONPath (如 `$[0].email`) | +| Redirect URL | OAuth2 回调地址 | +| Scope | OAuth2 权限范围 | + +### 邮箱格式转换 + +当 OAuth2 返回的不是标准邮箱格式时(如返回用户 ID),可以启用邮箱格式转换功能。 + +| 字段 | 说明 | +|------|------| +| Enable Email Format | 启用邮箱格式转换 | +| Email Regex Pattern | 正则表达式,用于匹配原始值,使用捕获组 `()` | +| Replace Template | 替换模板,使用 `$1`、`$2` 等引用捕获组 | + +**示例:** + +| 场景 | 原始值 | 正则表达式 | 替换模板 | 结果 | +|------|--------|-----------|----------|------| +| ID 转邮箱 | `12345` | `^(.+)$` | `linux_do_$1@oauth.linux.do` | `linux_do_12345@oauth.linux.do` | +| 换域名 | `john@old.com` | `^(.+)@old\.com$` | `$1@new.com` | `john@new.com` | +| 提取用户名 | `john@corp.com` | `^(.+)@.*$` | `$1@mymail.com` | `john@mymail.com` | + +### 邮件地址白名单 + +启用后,只有指定域名的邮箱才能登录。 + ## 测试用户登录页面 ![oauth2 login](/feature/oauth2-login.png) diff --git a/vitepress-docs/package.json b/vitepress-docs/package.json index 45449125..6c4af0c1 100644 --- a/vitepress-docs/package.json +++ b/vitepress-docs/package.json @@ -4,9 +4,9 @@ "version": "1.2.1", "type": "module", "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.0.10", "vitepress": "^1.6.4", - "wrangler": "^4.59.2" + "wrangler": "^4.60.0" }, "scripts": { "dev": "vitepress dev docs", diff --git a/vitepress-docs/pnpm-lock.yaml b/vitepress-docs/pnpm-lock.yaml index 0bce0e56..a2ec39ec 100644 --- a/vitepress-docs/pnpm-lock.yaml +++ b/vitepress-docs/pnpm-lock.yaml @@ -13,19 +13,19 @@ importers: version: 3.10.1 devDependencies: '@types/node': - specifier: ^25.0.9 - version: 25.0.9 + specifier: ^25.0.10 + version: 25.0.10 vitepress: specifier: ^1.6.4 - version: 1.6.4(@algolia/client-search@5.46.3)(@types/node@25.0.9)(postcss@8.5.6)(search-insights@2.13.0)(typescript@5.4.5) + version: 1.6.4(@algolia/client-search@5.47.0)(@types/node@25.0.10)(postcss@8.5.6)(search-insights@2.13.0)(typescript@5.4.5) wrangler: - specifier: ^4.59.2 - version: 4.59.2 + specifier: ^4.60.0 + version: 4.60.0 packages: - '@algolia/abtesting@1.12.3': - resolution: {integrity: sha512-0SpSdnME0RCS6UHSs9XD3ox4bMcCg1JTmjAJ3AU6rcTlX54CZOAEPc2as8uSghX6wfKGT0HWes4TeUpjJMg6FQ==} + '@algolia/abtesting@1.13.0': + resolution: {integrity: sha512-Zrqam12iorp3FjiKMXSTpedGYznZ3hTEOAr2oCxI8tbF8bS1kQHClyDYNq/eV0ewMNLyFkgZVWjaS+8spsOYiQ==} engines: {node: '>= 14.0.0'} '@algolia/autocomplete-core@1.17.7': @@ -48,56 +48,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.46.3': - resolution: {integrity: sha512-i2C8sBcl3EKXuCd5nlGohW+pZ9pY3P3JKJ2OYqsbCPg6wURiR32hNDiDvDq7/dqJ7KWWwC2snxJhokZzGlckgQ==} + '@algolia/client-abtesting@5.47.0': + resolution: {integrity: sha512-aOpsdlgS9xTEvz47+nXmw8m0NtUiQbvGWNuSEb7fA46iPL5FxOmOUZkh8PREBJpZ0/H8fclSc7BMJCVr+Dn72w==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.46.3': - resolution: {integrity: sha512-uFmD7m3LOym1SAURHeiqupHT9jui+9HK0lAiIvm077gXEscOM5KKXM4rg/ICzQ3UDHLZEA0Lb5TglWsXnieE6w==} + '@algolia/client-analytics@5.47.0': + resolution: {integrity: sha512-EcF4w7IvIk1sowrO7Pdy4Ako7x/S8+nuCgdk6En+u5jsaNQM4rTT09zjBPA+WQphXkA2mLrsMwge96rf6i7Mow==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.46.3': - resolution: {integrity: sha512-SN+yK840nXa+2+mF72hrDfGd8+B7eBjF8TK/8KoRMdjlAkO/P3o3vtpjKRKI/Sk4L8kYYkB/avW8l+cwR+O1Ew==} + '@algolia/client-common@5.47.0': + resolution: {integrity: sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.46.3': - resolution: {integrity: sha512-5ic1liG0VucNPi6gKCWh5bEUGWQfyEmVeXiNKS+rOSppg7B7nKH0PEEJOFXBbHmgK5aPfNNZINiKcyUoH4XsFA==} + '@algolia/client-insights@5.47.0': + resolution: {integrity: sha512-Ci+cn/FDIsDxSKMRBEiyKrqybblbk8xugo6ujDN1GSTv9RIZxwxqZYuHfdLnLEwLlX7GB8pqVyqrUSlRnR+sJA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.46.3': - resolution: {integrity: sha512-f4HNitgTip8tntKgluYBTc1LWSOkbNCdxZvRA3rRBZnEAYSvLe7jpE+AxRep6RY+prSWwMtyeCFhA/F1Um+TuQ==} + '@algolia/client-personalization@5.47.0': + resolution: {integrity: sha512-gsLnHPZmWcX0T3IigkDL2imCNtsQ7dR5xfnwiFsb+uTHCuYQt+IwSNjsd8tok6HLGLzZrliSaXtB5mfGBtYZvQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.46.3': - resolution: {integrity: sha512-/AaVqah2aYyJj7Cazu5QRkgcV3HF3lkBJo5TRkgqQ26xR4iHNRbLF2YsWJfJpJEFghlTF2HOCh7IgzaUCnM+8A==} + '@algolia/client-query-suggestions@5.47.0': + resolution: {integrity: sha512-PDOw0s8WSlR2fWFjPQldEpmm/gAoUgLigvC3k/jCSi/DzigdGX6RdC0Gh1RR1P8Cbk5KOWYDuL3TNzdYwkfDyA==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.46.3': - resolution: {integrity: sha512-hfpCIukPuwkrlwsYfJEWdU5R5bduBHEq2uuPcqmgPgNq5MSjmiNIzRuzxGZZgiBKcre6gZT00DR7G1AFn//wiQ==} + '@algolia/client-search@5.47.0': + resolution: {integrity: sha512-b5hlU69CuhnS2Rqgsz7uSW0t4VqrLMLTPbUpEl0QVz56rsSwr1Sugyogrjb493sWDA+XU1FU5m9eB8uH7MoI0g==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.46.3': - resolution: {integrity: sha512-ChVzNkCzAVxKozTnTgPWCG69WQLjzW7X6OqD91zUh8U38ZhPEX/t3qGhXs+M9ZNaHcJ7xToMB3jywNwONhpLGA==} + '@algolia/ingestion@1.47.0': + resolution: {integrity: sha512-WvwwXp5+LqIGISK3zHRApLT1xkuEk320/EGeD7uYy+K8WwDd5OjXnhjuXRhYr1685KnkvWkq1rQ/ihCJjOfHpQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.46.3': - resolution: {integrity: sha512-MZa+Z5iPmVMxVAQ0aq4HpGsja5utSLEMcOuY01X8D46vvMrSPkP8DnlDFtu1PgJ0RwyIGqqx7v+ClFo6iRJ6bA==} + '@algolia/monitoring@1.47.0': + resolution: {integrity: sha512-j2EUFKAlzM0TE4GRfkDE3IDfkVeJdcbBANWzK16Tb3RHz87WuDfQ9oeEW6XiRE1/bEkq2xf4MvZesvSeQrZRDA==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.46.3': - resolution: {integrity: sha512-cr3atJRJBKgAKZl/Oxo4sig6Se0+ukbyIOOluPV5H+ZAXVcxuMoXQgwQ1M5UHPnCnEsZ4uBXhBmilRgUQpUegw==} + '@algolia/recommend@5.47.0': + resolution: {integrity: sha512-+kTSE4aQ1ARj2feXyN+DMq0CIDHJwZw1kpxIunedkmpWUg8k3TzFwWsMCzJVkF2nu1UcFbl7xsIURz3Q3XwOXA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.46.3': - resolution: {integrity: sha512-/Ku9GImJf2SKoRM2S3e03MjCVaWJCP5olih4k54DRhNDdmxBkd3nsWuUXvDElY3Ucw/arBYGs5SYz79SoS5APw==} + '@algolia/requester-browser-xhr@5.47.0': + resolution: {integrity: sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.46.3': - resolution: {integrity: sha512-Uw+SPy/zpfwbH1AxQaeOWvWVzPEcO0XbtLbbSz0HPcEIiBGWyfa9LUCxD5UferbDjrSQNVimmzl3FaWi4u8Ykw==} + '@algolia/requester-fetch@5.47.0': + resolution: {integrity: sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.46.3': - resolution: {integrity: sha512-4No9iTjr1GZ0JWsFbQJj9aZBnmKyY1sTxOoEud9+SGe3U6iAulF0A0lI4cWi/F/Gcfg8V3jkaddcqSQKDnE45w==} + '@algolia/requester-node-http@5.47.0': + resolution: {integrity: sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA==} engines: {node: '>= 14.0.0'} '@babel/helper-string-parser@7.27.1': @@ -121,41 +121,41 @@ packages: resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} - '@cloudflare/unenv-preset@2.10.0': - resolution: {integrity: sha512-/uII4vLQXhzCAZzEVeYAjFLBNg2nqTJ1JGzd2lRF6ItYe6U2zVoYGfeKpGx/EkBF6euiU+cyBXgMdtJih+nQ6g==} + '@cloudflare/unenv-preset@2.11.0': + resolution: {integrity: sha512-z3hxFajL765VniNPGV0JRStZolNz63gU3B3AktwoGdDlnQvz5nP+Ah4RL04PONlZQjwmDdGHowEStJ94+RsaJg==} peerDependencies: unenv: 2.0.0-rc.24 - workerd: ^1.20251221.0 + workerd: ^1.20260115.0 peerDependenciesMeta: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20260114.0': - resolution: {integrity: sha512-HNlsRkfNgardCig2P/5bp/dqDECsZ4+NU5XewqArWxMseqt3C5daSuptI620s4pn7Wr0ZKg7jVLH0PDEBkA+aA==} + '@cloudflare/workerd-darwin-64@1.20260120.0': + resolution: {integrity: sha512-JLHx3p5dpwz4wjVSis45YNReftttnI3ndhdMh5BUbbpdreN/g0jgxNt5Qp9tDFqEKl++N63qv+hxJiIIvSLR+Q==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260114.0': - resolution: {integrity: sha512-qyE1UdFnAlxzb+uCfN/d9c8icch7XRiH49/DjoqEa+bCDihTuRS7GL1RmhVIqHJhb3pX3DzxmKgQZBDBL83Inw==} + '@cloudflare/workerd-darwin-arm64@1.20260120.0': + resolution: {integrity: sha512-1Md2tCRhZjwajsZNOiBeOVGiS3zbpLPzUDjHr4+XGTXWOA6FzzwScJwQZLa0Doc28Cp4Nr1n7xGL0Dwiz1XuOA==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260114.0': - resolution: {integrity: sha512-Z0BLvAj/JPOabzads2ddDEfgExWTlD22pnwsuNbPwZAGTSZeQa3Y47eGUWyHk+rSGngknk++S7zHTGbKuG7RRg==} + '@cloudflare/workerd-linux-64@1.20260120.0': + resolution: {integrity: sha512-O0mIfJfvU7F8N5siCoRDaVDuI12wkz2xlG4zK6/Ct7U9c9FiE0ViXNFWXFQm5PPj+qbkNRyhjUwhP+GCKTk5EQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260114.0': - resolution: {integrity: sha512-kPUmEtUxUWlr9PQ64kuhdK0qyo8idPe5IIXUgi7xCD7mDd6EOe5J7ugDpbfvfbYKEjx4DpLvN2t45izyI/Sodw==} + '@cloudflare/workerd-linux-arm64@1.20260120.0': + resolution: {integrity: sha512-aRHO/7bjxVpjZEmVVcpmhbzpN6ITbFCxuLLZSW0H9O0C0w40cDCClWSi19T87Ax/PQcYjFNT22pTewKsupkckA==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260114.0': - resolution: {integrity: sha512-MJnKgm6i1jZGyt2ZHQYCnRlpFTEZcK2rv9y7asS3KdVEXaDgGF8kOns5u6YL6/+eMogfZuHRjfDS+UqRTUYIFA==} + '@cloudflare/workerd-windows-64@1.20260120.0': + resolution: {integrity: sha512-ASZIz1E8sqZQqQCgcfY1PJbBpUDrxPt8NZ+lqNil0qxnO4qX38hbCsdDF2/TDAuq0Txh7nu8ztgTelfNDlb4EA==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -646,128 +646,128 @@ packages: '@poppinss/exception@1.2.3': resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - '@rollup/rollup-android-arm-eabi@4.55.2': - resolution: {integrity: sha512-21J6xzayjy3O6NdnlO6aXi/urvSRjm6nCI6+nF6ra2YofKruGixN9kfT+dt55HVNwfDmpDHJcaS3JuP/boNnlA==} + '@rollup/rollup-android-arm-eabi@4.56.0': + resolution: {integrity: sha512-LNKIPA5k8PF1+jAFomGe3qN3bbIgJe/IlpDBwuVjrDKrJhVWywgnJvflMt/zkbVNLFtF1+94SljYQS6e99klnw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.55.2': - resolution: {integrity: sha512-eXBg7ibkNUZ+sTwbFiDKou0BAckeV6kIigK7y5Ko4mB/5A1KLhuzEKovsmfvsL8mQorkoincMFGnQuIT92SKqA==} + '@rollup/rollup-android-arm64@4.56.0': + resolution: {integrity: sha512-lfbVUbelYqXlYiU/HApNMJzT1E87UPGvzveGg2h0ktUNlOCxKlWuJ9jtfvs1sKHdwU4fzY7Pl8sAl49/XaEk6Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.55.2': - resolution: {integrity: sha512-UCbaTklREjrc5U47ypLulAgg4njaqfOVLU18VrCrI+6E5MQjuG0lSWaqLlAJwsD7NpFV249XgB0Bi37Zh5Sz4g==} + '@rollup/rollup-darwin-arm64@4.56.0': + resolution: {integrity: sha512-EgxD1ocWfhoD6xSOeEEwyE7tDvwTgZc8Bss7wCWe+uc7wO8G34HHCUH+Q6cHqJubxIAnQzAsyUsClt0yFLu06w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.55.2': - resolution: {integrity: sha512-dP67MA0cCMHFT2g5XyjtpVOtp7y4UyUxN3dhLdt11at5cPKnSm4lY+EhwNvDXIMzAMIo2KU+mc9wxaAQJTn7sQ==} + '@rollup/rollup-darwin-x64@4.56.0': + resolution: {integrity: sha512-1vXe1vcMOssb/hOF8iv52A7feWW2xnu+c8BV4t1F//m9QVLTfNVpEdja5ia762j/UEJe2Z1jAmEqZAK42tVW3g==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.55.2': - resolution: {integrity: sha512-WDUPLUwfYV9G1yxNRJdXcvISW15mpvod1Wv3ok+Ws93w1HjIVmCIFxsG2DquO+3usMNCpJQ0wqO+3GhFdl6Fow==} + '@rollup/rollup-freebsd-arm64@4.56.0': + resolution: {integrity: sha512-bof7fbIlvqsyv/DtaXSck4VYQ9lPtoWNFCB/JY4snlFuJREXfZnm+Ej6yaCHfQvofJDXLDMTVxWscVSuQvVWUQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.55.2': - resolution: {integrity: sha512-Ng95wtHVEulRwn7R0tMrlUuiLVL/HXA8Lt/MYVpy88+s5ikpntzZba1qEulTuPnPIZuOPcW9wNEiqvZxZmgmqQ==} + '@rollup/rollup-freebsd-x64@4.56.0': + resolution: {integrity: sha512-KNa6lYHloW+7lTEkYGa37fpvPq+NKG/EHKM8+G/g9WDU7ls4sMqbVRV78J6LdNuVaeeK5WB9/9VAFbKxcbXKYg==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.55.2': - resolution: {integrity: sha512-AEXMESUDWWGqD6LwO/HkqCZgUE1VCJ1OhbvYGsfqX2Y6w5quSXuyoy/Fg3nRqiwro+cJYFxiw5v4kB2ZDLhxrw==} + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': + resolution: {integrity: sha512-E8jKK87uOvLrrLN28jnAAAChNq5LeCd2mGgZF+fGF5D507WlG/Noct3lP/QzQ6MrqJ5BCKNwI9ipADB6jyiq2A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.55.2': - resolution: {integrity: sha512-ZV7EljjBDwBBBSv570VWj0hiNTdHt9uGznDtznBB4Caj3ch5rgD4I2K1GQrtbvJ/QiB+663lLgOdcADMNVC29Q==} + '@rollup/rollup-linux-arm-musleabihf@4.56.0': + resolution: {integrity: sha512-jQosa5FMYF5Z6prEpTCCmzCXz6eKr/tCBssSmQGEeozA9tkRUty/5Vx06ibaOP9RCrW1Pvb8yp3gvZhHwTDsJw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.55.2': - resolution: {integrity: sha512-uvjwc8NtQVPAJtq4Tt7Q49FOodjfbf6NpqXyW/rjXoV+iZ3EJAHLNAnKT5UJBc6ffQVgmXTUL2ifYiLABlGFqA==} + '@rollup/rollup-linux-arm64-gnu@4.56.0': + resolution: {integrity: sha512-uQVoKkrC1KGEV6udrdVahASIsaF8h7iLG0U0W+Xn14ucFwi6uS539PsAr24IEF9/FoDtzMeeJXJIBo5RkbNWvQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.55.2': - resolution: {integrity: sha512-s3KoWVNnye9mm/2WpOZ3JeUiediUVw6AvY/H7jNA6qgKA2V2aM25lMkVarTDfiicn/DLq3O0a81jncXszoyCFA==} + '@rollup/rollup-linux-arm64-musl@4.56.0': + resolution: {integrity: sha512-vLZ1yJKLxhQLFKTs42RwTwa6zkGln+bnXc8ueFGMYmBTLfNu58sl5/eXyxRa2RarTkJbXl8TKPgfS6V5ijNqEA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.55.2': - resolution: {integrity: sha512-gi21faacK+J8aVSyAUptML9VQN26JRxe484IbF+h3hpG+sNVoMXPduhREz2CcYr5my0NE3MjVvQ5bMKX71pfVA==} + '@rollup/rollup-linux-loong64-gnu@4.56.0': + resolution: {integrity: sha512-FWfHOCub564kSE3xJQLLIC/hbKqHSVxy8vY75/YHHzWvbJL7aYJkdgwD/xGfUlL5UV2SB7otapLrcCj2xnF1dg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.55.2': - resolution: {integrity: sha512-qSlWiXnVaS/ceqXNfnoFZh4IiCA0EwvCivivTGbEu1qv2o+WTHpn1zNmCTAoOG5QaVr2/yhCoLScQtc/7RxshA==} + '@rollup/rollup-linux-loong64-musl@4.56.0': + resolution: {integrity: sha512-z1EkujxIh7nbrKL1lmIpqFTc/sr0u8Uk0zK/qIEFldbt6EDKWFk/pxFq3gYj4Bjn3aa9eEhYRlL3H8ZbPT1xvA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.55.2': - resolution: {integrity: sha512-rPyuLFNoF1B0+wolH277E780NUKf+KoEDb3OyoLbAO18BbeKi++YN6gC/zuJoPPDlQRL3fIxHxCxVEWiem2yXw==} + '@rollup/rollup-linux-ppc64-gnu@4.56.0': + resolution: {integrity: sha512-iNFTluqgdoQC7AIE8Q34R3AuPrJGJirj5wMUErxj22deOcY7XwZRaqYmB6ZKFHoVGqRcRd0mqO+845jAibKCkw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.55.2': - resolution: {integrity: sha512-g+0ZLMook31iWV4PvqKU0i9E78gaZgYpSrYPed/4Bu+nGTgfOPtfs1h11tSSRPXSjC5EzLTjV/1A7L2Vr8pJoQ==} + '@rollup/rollup-linux-ppc64-musl@4.56.0': + resolution: {integrity: sha512-MtMeFVlD2LIKjp2sE2xM2slq3Zxf9zwVuw0jemsxvh1QOpHSsSzfNOTH9uYW9i1MXFxUSMmLpeVeUzoNOKBaWg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.55.2': - resolution: {integrity: sha512-i+sGeRGsjKZcQRh3BRfpLsM3LX3bi4AoEVqmGDyc50L6KfYsN45wVCSz70iQMwPWr3E5opSiLOwsC9WB4/1pqg==} + '@rollup/rollup-linux-riscv64-gnu@4.56.0': + resolution: {integrity: sha512-in+v6wiHdzzVhYKXIk5U74dEZHdKN9KH0Q4ANHOTvyXPG41bajYRsy7a8TPKbYPl34hU7PP7hMVHRvv/5aCSew==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.55.2': - resolution: {integrity: sha512-C1vLcKc4MfFV6I0aWsC7B2Y9QcsiEcvKkfxprwkPfLaN8hQf0/fKHwSF2lcYzA9g4imqnhic729VB9Fo70HO3Q==} + '@rollup/rollup-linux-riscv64-musl@4.56.0': + resolution: {integrity: sha512-yni2raKHB8m9NQpI9fPVwN754mn6dHQSbDTwxdr9SE0ks38DTjLMMBjrwvB5+mXrX+C0npX0CVeCUcvvvD8CNQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.55.2': - resolution: {integrity: sha512-68gHUK/howpQjh7g7hlD9DvTTt4sNLp1Bb+Yzw2Ki0xvscm2cOdCLZNJNhd2jW8lsTPrHAHuF751BygifW4bkQ==} + '@rollup/rollup-linux-s390x-gnu@4.56.0': + resolution: {integrity: sha512-zhLLJx9nQPu7wezbxt2ut+CI4YlXi68ndEve16tPc/iwoylWS9B3FxpLS2PkmfYgDQtosah07Mj9E0khc3Y+vQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.55.2': - resolution: {integrity: sha512-1e30XAuaBP1MAizaOBApsgeGZge2/Byd6wV4a8oa6jPdHELbRHBiw7wvo4dp7Ie2PE8TZT4pj9RLGZv9N4qwlw==} + '@rollup/rollup-linux-x64-gnu@4.56.0': + resolution: {integrity: sha512-MVC6UDp16ZSH7x4rtuJPAEoE1RwS8N4oK9DLHy3FTEdFoUTCFVzMfJl/BVJ330C+hx8FfprA5Wqx4FhZXkj2Kw==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.55.2': - resolution: {integrity: sha512-4BJucJBGbuGnH6q7kpPqGJGzZnYrpAzRd60HQSt3OpX/6/YVgSsJnNzR8Ot74io50SeVT4CtCWe/RYIAymFPwA==} + '@rollup/rollup-linux-x64-musl@4.56.0': + resolution: {integrity: sha512-ZhGH1eA4Qv0lxaV00azCIS1ChedK0V32952Md3FtnxSqZTBTd6tgil4nZT5cU8B+SIw3PFYkvyR4FKo2oyZIHA==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.55.2': - resolution: {integrity: sha512-cT2MmXySMo58ENv8p6/O6wI/h/gLnD3D6JoajwXFZH6X9jz4hARqUhWpGuQhOgLNXscfZYRQMJvZDtWNzMAIDw==} + '@rollup/rollup-openbsd-x64@4.56.0': + resolution: {integrity: sha512-O16XcmyDeFI9879pEcmtWvD/2nyxR9mF7Gs44lf1vGGx8Vg2DRNx11aVXBEqOQhWb92WN4z7fW/q4+2NYzCbBA==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.55.2': - resolution: {integrity: sha512-sZnyUgGkuzIXaK3jNMPmUIyJrxu/PjmATQrocpGA1WbCPX8H5tfGgRSuYtqBYAvLuIGp8SPRb1O4d1Fkb5fXaQ==} + '@rollup/rollup-openharmony-arm64@4.56.0': + resolution: {integrity: sha512-LhN/Reh+7F3RCgQIRbgw8ZMwUwyqJM+8pXNT6IIJAqm2IdKkzpCh/V9EdgOMBKuebIrzswqy4ATlrDgiOwbRcQ==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.55.2': - resolution: {integrity: sha512-sDpFbenhmWjNcEbBcoTV0PWvW5rPJFvu+P7XoTY0YLGRupgLbFY0XPfwIbJOObzO7QgkRDANh65RjhPmgSaAjQ==} + '@rollup/rollup-win32-arm64-msvc@4.56.0': + resolution: {integrity: sha512-kbFsOObXp3LBULg1d3JIUQMa9Kv4UitDmpS+k0tinPBz3watcUiV2/LUDMMucA6pZO3WGE27P7DsfaN54l9ing==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.55.2': - resolution: {integrity: sha512-GvJ03TqqaweWCigtKQVBErw2bEhu1tyfNQbarwr94wCGnczA9HF8wqEe3U/Lfu6EdeNP0p6R+APeHVwEqVxpUQ==} + '@rollup/rollup-win32-ia32-msvc@4.56.0': + resolution: {integrity: sha512-vSSgny54D6P4vf2izbtFm/TcWYedw7f8eBrOiGGecyHyQB9q4Kqentjaj8hToe+995nob/Wv48pDqL5a62EWtg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.55.2': - resolution: {integrity: sha512-KvXsBvp13oZz9JGe5NYS7FNizLe99Ny+W8ETsuCyjXiKdiGrcz2/J/N8qxZ/RSwivqjQguug07NLHqrIHrqfYw==} + '@rollup/rollup-win32-x64-gnu@4.56.0': + resolution: {integrity: sha512-FeCnkPCTHQJFbiGG49KjV5YGW/8b9rrXAM2Mz2kiIoktq2qsJxRD5giEMEOD2lPdgs72upzefaUvS+nc8E3UzQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.55.2': - resolution: {integrity: sha512-xNO+fksQhsAckRtDSPWaMeT1uIM+JrDRXlerpnWNXhn1TdB3YZ6uKBMBTKP0eX9XtYEP978hHk1f8332i2AW8Q==} + '@rollup/rollup-win32-x64-msvc@4.56.0': + resolution: {integrity: sha512-H8AE9Ur/t0+1VXujj90w0HrSOuv0Nq9r1vSZF2t5km20NTfosQsGGUXDaKdQZzwuLts7IyL1fYT4hM95TI9c4g==} cpu: [x64] os: [win32] @@ -820,8 +820,8 @@ packages: '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/node@25.0.9': - resolution: {integrity: sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==} + '@types/node@25.0.10': + resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -927,8 +927,8 @@ packages: '@vueuse/shared@12.8.2': resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==} - algoliasearch@5.46.3: - resolution: {integrity: sha512-n/NdPglzmkcNYZfIT3Fo8pnDR/lKiK1kZ1Yaa315UoLyHymADhWw15+bzN5gBxrCA8KyeNu0JJD6mLtTov43lQ==} + algoliasearch@5.47.0: + resolution: {integrity: sha512-AGtz2U7zOV4DlsuYV84tLp2tBbA7RPtLA44jbVH4TTpDcc1dIWmULjHSsunlhscbzDydnjuFlNhflR3nV4VJaQ==} engines: {node: '>= 14.0.0'} birpc@2.9.0: @@ -977,8 +977,8 @@ packages: emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - entities@7.0.0: - resolution: {integrity: sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} error-stack-parser-es@1.0.5: @@ -1064,8 +1064,8 @@ packages: micromark-util-types@2.0.2: resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - miniflare@4.20260114.0: - resolution: {integrity: sha512-QwHT7S6XqGdQxIvql1uirH/7/i3zDEt0B/YBXTYzMfJtVCR4+ue3KPkU+Bl0zMxvpgkvjh9+eCHhJbKEqya70A==} + miniflare@4.20260120.0: + resolution: {integrity: sha512-XXZyE2pDKMtP5OLuv0LPHEAzIYhov4jrYjcqrhhqtxGGtXneWOHvXIPo+eV8sqwqWd3R7j4DlEKcyb+87BR49Q==} engines: {node: '>=18.0.0'} hasBin: true @@ -1126,8 +1126,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.55.2: - resolution: {integrity: sha512-PggGy4dhwx5qaW+CKBilA/98Ql9keyfnb7lh4SR6shQ91QQQi1ORJ1v4UinkdP2i87OBs9AQFooQylcrrRfIcg==} + rollup@4.56.0: + resolution: {integrity: sha512-9FwVqlgUHzbXtDg9RCMgodF3Ua4Na6Gau+Sdt9vyCN4RhHfVKX2DCHy3BjMLTDd47ITDhYAnTwGulWTblJSDLg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -1194,8 +1194,8 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@7.14.0: - resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} + undici@7.18.2: + resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} engines: {node: '>=20.18.1'} unenv@2.0.0-rc.24: @@ -1213,8 +1213,8 @@ packages: unist-util-visit-parents@6.0.2: resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -1276,17 +1276,17 @@ packages: typescript: optional: true - workerd@1.20260114.0: - resolution: {integrity: sha512-kTJ+jNdIllOzWuVA3NRQRvywP0T135zdCjAE2dAUY1BFbxM6fmMZV8BbskEoQ4hAODVQUfZQmyGctcwvVCKxFA==} + workerd@1.20260120.0: + resolution: {integrity: sha512-R6X/VQOkwLTBGLp4VRUwLQZZVxZ9T9J8pGiJ6GQUMaRkY7TVWrCSkVfoNMM1/YyFsY5UYhhPoQe5IehnhZ3Pdw==} engines: {node: '>=16'} hasBin: true - wrangler@4.59.2: - resolution: {integrity: sha512-Z4xn6jFZTaugcOKz42xvRAYKgkVUERHVbuCJ5+f+gK+R6k12L02unakPGOA0L0ejhUl16dqDjKe4tmL9sedHcw==} + wrangler@4.60.0: + resolution: {integrity: sha512-n4kibm/xY0Qd5G2K/CbAQeVeOIlwPNVglmFjlDRCCYk3hZh8IggO/rg8AXt/vByK2Sxsugl5Z7yvgWxrUbmS6g==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20260114.0 + '@cloudflare/workers-types': ^4.20260120.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -1317,117 +1317,117 @@ packages: snapshots: - '@algolia/abtesting@1.12.3': + '@algolia/abtesting@1.13.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3)(search-insights@2.13.0)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3)(search-insights@2.13.0)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0) search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3) - '@algolia/client-search': 5.46.3 - algoliasearch: 5.46.3 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0) + '@algolia/client-search': 5.47.0 + algoliasearch: 5.47.0 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)': dependencies: - '@algolia/client-search': 5.46.3 - algoliasearch: 5.46.3 + '@algolia/client-search': 5.47.0 + algoliasearch: 5.47.0 - '@algolia/client-abtesting@5.46.3': + '@algolia/client-abtesting@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-analytics@5.46.3': + '@algolia/client-analytics@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-common@5.46.3': {} + '@algolia/client-common@5.47.0': {} - '@algolia/client-insights@5.46.3': + '@algolia/client-insights@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-personalization@5.46.3': + '@algolia/client-personalization@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-query-suggestions@5.46.3': + '@algolia/client-query-suggestions@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/client-search@5.46.3': + '@algolia/client-search@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/ingestion@1.46.3': + '@algolia/ingestion@1.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/monitoring@1.46.3': + '@algolia/monitoring@1.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/recommend@5.46.3': + '@algolia/recommend@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/client-common': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 - '@algolia/requester-browser-xhr@5.46.3': + '@algolia/requester-browser-xhr@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 + '@algolia/client-common': 5.47.0 - '@algolia/requester-fetch@5.46.3': + '@algolia/requester-fetch@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 + '@algolia/client-common': 5.47.0 - '@algolia/requester-node-http@5.46.3': + '@algolia/requester-node-http@5.47.0': dependencies: - '@algolia/client-common': 5.46.3 + '@algolia/client-common': 5.47.0 '@babel/helper-string-parser@7.27.1': {} @@ -1444,25 +1444,25 @@ snapshots: '@cloudflare/kv-asset-handler@0.4.2': {} - '@cloudflare/unenv-preset@2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0)': + '@cloudflare/unenv-preset@2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260120.0)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260114.0 + workerd: 1.20260120.0 - '@cloudflare/workerd-darwin-64@1.20260114.0': + '@cloudflare/workerd-darwin-64@1.20260120.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260114.0': + '@cloudflare/workerd-darwin-arm64@1.20260120.0': optional: true - '@cloudflare/workerd-linux-64@1.20260114.0': + '@cloudflare/workerd-linux-64@1.20260120.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20260114.0': + '@cloudflare/workerd-linux-arm64@1.20260120.0': optional: true - '@cloudflare/workerd-windows-64@1.20260114.0': + '@cloudflare/workerd-windows-64@1.20260120.0': optional: true '@cspotcode/source-map-support@0.8.1': @@ -1471,9 +1471,9 @@ snapshots: '@docsearch/css@3.8.2': {} - '@docsearch/js@3.8.2(@algolia/client-search@5.46.3)(search-insights@2.13.0)': + '@docsearch/js@3.8.2(@algolia/client-search@5.47.0)(search-insights@2.13.0)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.46.3)(search-insights@2.13.0) + '@docsearch/react': 3.8.2(@algolia/client-search@5.47.0)(search-insights@2.13.0) preact: 10.28.2 transitivePeerDependencies: - '@algolia/client-search' @@ -1482,12 +1482,12 @@ snapshots: - react-dom - search-insights - '@docsearch/react@3.8.2(@algolia/client-search@5.46.3)(search-insights@2.13.0)': + '@docsearch/react@3.8.2(@algolia/client-search@5.47.0)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.46.3)(algoliasearch@5.46.3) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.47.0)(algoliasearch@5.47.0) '@docsearch/css': 3.8.2 - algoliasearch: 5.46.3 + algoliasearch: 5.47.0 optionalDependencies: search-insights: 2.13.0 transitivePeerDependencies: @@ -1768,79 +1768,79 @@ snapshots: '@poppinss/exception@1.2.3': {} - '@rollup/rollup-android-arm-eabi@4.55.2': + '@rollup/rollup-android-arm-eabi@4.56.0': optional: true - '@rollup/rollup-android-arm64@4.55.2': + '@rollup/rollup-android-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-arm64@4.55.2': + '@rollup/rollup-darwin-arm64@4.56.0': optional: true - '@rollup/rollup-darwin-x64@4.55.2': + '@rollup/rollup-darwin-x64@4.56.0': optional: true - '@rollup/rollup-freebsd-arm64@4.55.2': + '@rollup/rollup-freebsd-arm64@4.56.0': optional: true - '@rollup/rollup-freebsd-x64@4.55.2': + '@rollup/rollup-freebsd-x64@4.56.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.55.2': + '@rollup/rollup-linux-arm-gnueabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.55.2': + '@rollup/rollup-linux-arm-musleabihf@4.56.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.55.2': + '@rollup/rollup-linux-arm64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.55.2': + '@rollup/rollup-linux-arm64-musl@4.56.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.55.2': + '@rollup/rollup-linux-loong64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-loong64-musl@4.55.2': + '@rollup/rollup-linux-loong64-musl@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.55.2': + '@rollup/rollup-linux-ppc64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-ppc64-musl@4.55.2': + '@rollup/rollup-linux-ppc64-musl@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.55.2': + '@rollup/rollup-linux-riscv64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.55.2': + '@rollup/rollup-linux-riscv64-musl@4.56.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.55.2': + '@rollup/rollup-linux-s390x-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.55.2': + '@rollup/rollup-linux-x64-gnu@4.56.0': optional: true - '@rollup/rollup-linux-x64-musl@4.55.2': + '@rollup/rollup-linux-x64-musl@4.56.0': optional: true - '@rollup/rollup-openbsd-x64@4.55.2': + '@rollup/rollup-openbsd-x64@4.56.0': optional: true - '@rollup/rollup-openharmony-arm64@4.55.2': + '@rollup/rollup-openharmony-arm64@4.56.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.55.2': + '@rollup/rollup-win32-arm64-msvc@4.56.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.55.2': + '@rollup/rollup-win32-ia32-msvc@4.56.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.55.2': + '@rollup/rollup-win32-x64-gnu@4.56.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.55.2': + '@rollup/rollup-win32-x64-msvc@4.56.0': optional: true '@shikijs/core@2.5.0': @@ -1906,7 +1906,7 @@ snapshots: '@types/mdurl@2.0.0': {} - '@types/node@25.0.9': + '@types/node@25.0.10': dependencies: undici-types: 7.16.0 @@ -1916,16 +1916,16 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@25.0.9))(vue@3.5.27(typescript@5.4.5))': + '@vitejs/plugin-vue@5.2.4(vite@5.4.21(@types/node@25.0.10))(vue@3.5.27(typescript@5.4.5))': dependencies: - vite: 5.4.21(@types/node@25.0.9) + vite: 5.4.21(@types/node@25.0.10) vue: 3.5.27(typescript@5.4.5) '@vue/compiler-core@3.5.27': dependencies: '@babel/parser': 7.28.6 '@vue/shared': 3.5.27 - entities: 7.0.0 + entities: 7.0.1 estree-walker: 2.0.2 source-map-js: 1.2.1 @@ -2020,22 +2020,22 @@ snapshots: transitivePeerDependencies: - typescript - algoliasearch@5.46.3: + algoliasearch@5.47.0: dependencies: - '@algolia/abtesting': 1.12.3 - '@algolia/client-abtesting': 5.46.3 - '@algolia/client-analytics': 5.46.3 - '@algolia/client-common': 5.46.3 - '@algolia/client-insights': 5.46.3 - '@algolia/client-personalization': 5.46.3 - '@algolia/client-query-suggestions': 5.46.3 - '@algolia/client-search': 5.46.3 - '@algolia/ingestion': 1.46.3 - '@algolia/monitoring': 1.46.3 - '@algolia/recommend': 5.46.3 - '@algolia/requester-browser-xhr': 5.46.3 - '@algolia/requester-fetch': 5.46.3 - '@algolia/requester-node-http': 5.46.3 + '@algolia/abtesting': 1.13.0 + '@algolia/client-abtesting': 5.47.0 + '@algolia/client-analytics': 5.47.0 + '@algolia/client-common': 5.47.0 + '@algolia/client-insights': 5.47.0 + '@algolia/client-personalization': 5.47.0 + '@algolia/client-query-suggestions': 5.47.0 + '@algolia/client-search': 5.47.0 + '@algolia/ingestion': 1.47.0 + '@algolia/monitoring': 1.47.0 + '@algolia/recommend': 5.47.0 + '@algolia/requester-browser-xhr': 5.47.0 + '@algolia/requester-fetch': 5.47.0 + '@algolia/requester-node-http': 5.47.0 birpc@2.9.0: {} @@ -2069,7 +2069,7 @@ snapshots: emoji-regex-xs@1.0.0: {} - entities@7.0.0: {} + entities@7.0.1: {} error-stack-parser-es@1.0.5: {} @@ -2195,7 +2195,7 @@ snapshots: micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 micromark-util-character@2.1.1: @@ -2215,12 +2215,12 @@ snapshots: micromark-util-types@2.0.2: {} - miniflare@4.20260114.0: + miniflare@4.20260120.0: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.34.5 - undici: 7.14.0 - workerd: 1.20260114.0 + undici: 7.18.2 + workerd: 1.20260120.0 ws: 8.18.0 youch: 4.1.0-beta.10 zod: 3.25.76 @@ -2284,35 +2284,35 @@ snapshots: rfdc@1.4.1: {} - rollup@4.55.2: + rollup@4.56.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.55.2 - '@rollup/rollup-android-arm64': 4.55.2 - '@rollup/rollup-darwin-arm64': 4.55.2 - '@rollup/rollup-darwin-x64': 4.55.2 - '@rollup/rollup-freebsd-arm64': 4.55.2 - '@rollup/rollup-freebsd-x64': 4.55.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.55.2 - '@rollup/rollup-linux-arm-musleabihf': 4.55.2 - '@rollup/rollup-linux-arm64-gnu': 4.55.2 - '@rollup/rollup-linux-arm64-musl': 4.55.2 - '@rollup/rollup-linux-loong64-gnu': 4.55.2 - '@rollup/rollup-linux-loong64-musl': 4.55.2 - '@rollup/rollup-linux-ppc64-gnu': 4.55.2 - '@rollup/rollup-linux-ppc64-musl': 4.55.2 - '@rollup/rollup-linux-riscv64-gnu': 4.55.2 - '@rollup/rollup-linux-riscv64-musl': 4.55.2 - '@rollup/rollup-linux-s390x-gnu': 4.55.2 - '@rollup/rollup-linux-x64-gnu': 4.55.2 - '@rollup/rollup-linux-x64-musl': 4.55.2 - '@rollup/rollup-openbsd-x64': 4.55.2 - '@rollup/rollup-openharmony-arm64': 4.55.2 - '@rollup/rollup-win32-arm64-msvc': 4.55.2 - '@rollup/rollup-win32-ia32-msvc': 4.55.2 - '@rollup/rollup-win32-x64-gnu': 4.55.2 - '@rollup/rollup-win32-x64-msvc': 4.55.2 + '@rollup/rollup-android-arm-eabi': 4.56.0 + '@rollup/rollup-android-arm64': 4.56.0 + '@rollup/rollup-darwin-arm64': 4.56.0 + '@rollup/rollup-darwin-x64': 4.56.0 + '@rollup/rollup-freebsd-arm64': 4.56.0 + '@rollup/rollup-freebsd-x64': 4.56.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.56.0 + '@rollup/rollup-linux-arm-musleabihf': 4.56.0 + '@rollup/rollup-linux-arm64-gnu': 4.56.0 + '@rollup/rollup-linux-arm64-musl': 4.56.0 + '@rollup/rollup-linux-loong64-gnu': 4.56.0 + '@rollup/rollup-linux-loong64-musl': 4.56.0 + '@rollup/rollup-linux-ppc64-gnu': 4.56.0 + '@rollup/rollup-linux-ppc64-musl': 4.56.0 + '@rollup/rollup-linux-riscv64-gnu': 4.56.0 + '@rollup/rollup-linux-riscv64-musl': 4.56.0 + '@rollup/rollup-linux-s390x-gnu': 4.56.0 + '@rollup/rollup-linux-x64-gnu': 4.56.0 + '@rollup/rollup-linux-x64-musl': 4.56.0 + '@rollup/rollup-openbsd-x64': 4.56.0 + '@rollup/rollup-openharmony-arm64': 4.56.0 + '@rollup/rollup-win32-arm64-msvc': 4.56.0 + '@rollup/rollup-win32-ia32-msvc': 4.56.0 + '@rollup/rollup-win32-x64-gnu': 4.56.0 + '@rollup/rollup-win32-x64-msvc': 4.56.0 fsevents: 2.3.3 safe-buffer@5.1.2: {} @@ -2398,7 +2398,7 @@ snapshots: undici-types@7.16.0: {} - undici@7.14.0: {} + undici@7.18.2: {} unenv@2.0.0-rc.24: dependencies: @@ -2421,7 +2421,7 @@ snapshots: '@types/unist': 3.0.3 unist-util-is: 6.0.1 - unist-util-visit@5.0.0: + unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 @@ -2439,25 +2439,25 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@5.4.21(@types/node@25.0.9): + vite@5.4.21(@types/node@25.0.10): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.55.2 + rollup: 4.56.0 optionalDependencies: - '@types/node': 25.0.9 + '@types/node': 25.0.10 fsevents: 2.3.3 - vitepress@1.6.4(@algolia/client-search@5.46.3)(@types/node@25.0.9)(postcss@8.5.6)(search-insights@2.13.0)(typescript@5.4.5): + vitepress@1.6.4(@algolia/client-search@5.47.0)(@types/node@25.0.10)(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.3)(search-insights@2.13.0) + '@docsearch/js': 3.8.2(@algolia/client-search@5.47.0)(search-insights@2.13.0) '@iconify-json/simple-icons': 1.2.67 '@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.9))(vue@3.5.27(typescript@5.4.5)) + '@vitejs/plugin-vue': 5.2.4(vite@5.4.21(@types/node@25.0.10))(vue@3.5.27(typescript@5.4.5)) '@vue/devtools-api': 7.7.9 '@vue/shared': 3.5.27 '@vueuse/core': 12.8.2(typescript@5.4.5) @@ -2466,7 +2466,7 @@ snapshots: mark.js: 8.11.1 minisearch: 7.2.0 shiki: 2.5.0 - vite: 5.4.21(@types/node@25.0.9) + vite: 5.4.21(@types/node@25.0.10) vue: 3.5.27(typescript@5.4.5) optionalDependencies: postcss: 8.5.6 @@ -2507,24 +2507,24 @@ snapshots: optionalDependencies: typescript: 5.4.5 - workerd@1.20260114.0: + workerd@1.20260120.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260114.0 - '@cloudflare/workerd-darwin-arm64': 1.20260114.0 - '@cloudflare/workerd-linux-64': 1.20260114.0 - '@cloudflare/workerd-linux-arm64': 1.20260114.0 - '@cloudflare/workerd-windows-64': 1.20260114.0 + '@cloudflare/workerd-darwin-64': 1.20260120.0 + '@cloudflare/workerd-darwin-arm64': 1.20260120.0 + '@cloudflare/workerd-linux-64': 1.20260120.0 + '@cloudflare/workerd-linux-arm64': 1.20260120.0 + '@cloudflare/workerd-windows-64': 1.20260120.0 - wrangler@4.59.2: + wrangler@4.60.0: dependencies: '@cloudflare/kv-asset-handler': 0.4.2 - '@cloudflare/unenv-preset': 2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0) + '@cloudflare/unenv-preset': 2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260120.0) blake3-wasm: 2.1.5 esbuild: 0.27.0 - miniflare: 4.20260114.0 + miniflare: 4.20260120.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260114.0 + workerd: 1.20260120.0 optionalDependencies: fsevents: 2.3.3 transitivePeerDependencies: diff --git a/worker/package.json b/worker/package.json index dc2f9a37..f00be892 100644 --- a/worker/package.json +++ b/worker/package.json @@ -1,6 +1,6 @@ { "name": "cloudflare_temp_email", - "version": "1.2.1", + "version": "1.3.0", "private": true, "type": "module", "scripts": { @@ -11,24 +11,24 @@ "build": "wrangler deploy --dry-run --outdir dist --minify" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20260118.0", + "@cloudflare/workers-types": "^4.20260123.0", "@eslint/js": "9.39.1", "@simplewebauthn/types": "10.0.0", - "@types/node": "^25.0.9", + "@types/node": "^25.0.10", "eslint": "9.39.1", "globals": "^16.5.0", - "typescript-eslint": "^8.53.0", - "wrangler": "^4.59.2" + "typescript-eslint": "^8.53.1", + "wrangler": "^4.60.0" }, "dependencies": { "@aws-sdk/client-s3": "3.888.0", "@aws-sdk/s3-request-presigner": "3.888.0", "@simplewebauthn/server": "10.0.1", - "hono": "^4.11.4", + "hono": "^4.11.5", "jsonpath-plus": "^10.3.0", "mimetext": "^3.0.27", "postal-mime": "^2.7.3", - "resend": "^6.7.0", + "resend": "^6.8.0", "telegraf": "4.16.3", "worker-mailer": "^1.2.1" }, diff --git a/worker/pnpm-lock.yaml b/worker/pnpm-lock.yaml index 97360d90..2ba1b553 100644 --- a/worker/pnpm-lock.yaml +++ b/worker/pnpm-lock.yaml @@ -23,8 +23,8 @@ importers: specifier: 10.0.1 version: 10.0.1 hono: - specifier: ^4.11.4 - version: 4.11.4 + specifier: ^4.11.5 + version: 4.11.5 jsonpath-plus: specifier: ^10.3.0 version: 10.3.0 @@ -35,8 +35,8 @@ importers: specifier: ^2.7.3 version: 2.7.3 resend: - specifier: ^6.7.0 - version: 6.7.0(@react-email/render@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) + specifier: ^6.8.0 + version: 6.8.0(@react-email/render@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) telegraf: specifier: 4.16.3 version: 4.16.3(patch_hash=4ce8461c7f21d886ddd30d13d2be4fc8c72134fd7ffa5da3b27319c883447eed) @@ -45,8 +45,8 @@ importers: version: 1.2.1 devDependencies: '@cloudflare/workers-types': - specifier: ^4.20260118.0 - version: 4.20260118.0 + specifier: ^4.20260123.0 + version: 4.20260123.0 '@eslint/js': specifier: 9.39.1 version: 9.39.1 @@ -54,8 +54,8 @@ importers: specifier: 10.0.0 version: 10.0.0 '@types/node': - specifier: ^25.0.9 - version: 25.0.9 + specifier: ^25.0.10 + version: 25.0.10 eslint: specifier: 9.39.1 version: 9.39.1 @@ -63,11 +63,11 @@ importers: specifier: ^16.5.0 version: 16.5.0 typescript-eslint: - specifier: ^8.53.0 - version: 8.53.0(eslint@9.39.1)(typescript@5.4.5) + specifier: ^8.53.1 + version: 8.53.1(eslint@9.39.1)(typescript@5.4.5) wrangler: - specifier: ^4.59.2 - version: 4.59.2(@cloudflare/workers-types@4.20260118.0) + specifier: ^4.60.0 + version: 4.60.0(@cloudflare/workers-types@4.20260123.0) packages: @@ -210,8 +210,8 @@ packages: resolution: {integrity: sha512-ABDSP6KsrdD+JC7qwMqUpLXqPidvfgT+Q+W8sGGuk/IBy7smgZDOdYSZLE4VBbQpH3N/zSJuslAWhL2x37Qwww==} engines: {node: '>=18.0.0'} - '@aws-sdk/util-locate-window@3.965.2': - resolution: {integrity: sha512-qKgO7wAYsXzhwCHhdbaKFyxd83Fgs8/1Ka+jjSPrv2Ll7mB55Wbwlo0kkfMLh993/yEc8aoDIAc1Fz9h4Spi4Q==} + '@aws-sdk/util-locate-window@3.965.3': + resolution: {integrity: sha512-FNUqAjlKAGA7GM05kywE99q8wiPHPZqrzhq3wXRga6PRD6A0kzT85Pb0AzYBVTBRpSrKyyr6M92Y6bnSBVp2BA==} engines: {node: '>=20.0.0'} '@aws-sdk/util-user-agent-browser@3.887.0': @@ -246,47 +246,47 @@ packages: resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} engines: {node: '>=18.0.0'} - '@cloudflare/unenv-preset@2.10.0': - resolution: {integrity: sha512-/uII4vLQXhzCAZzEVeYAjFLBNg2nqTJ1JGzd2lRF6ItYe6U2zVoYGfeKpGx/EkBF6euiU+cyBXgMdtJih+nQ6g==} + '@cloudflare/unenv-preset@2.11.0': + resolution: {integrity: sha512-z3hxFajL765VniNPGV0JRStZolNz63gU3B3AktwoGdDlnQvz5nP+Ah4RL04PONlZQjwmDdGHowEStJ94+RsaJg==} peerDependencies: unenv: 2.0.0-rc.24 - workerd: ^1.20251221.0 + workerd: ^1.20260115.0 peerDependenciesMeta: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20260114.0': - resolution: {integrity: sha512-HNlsRkfNgardCig2P/5bp/dqDECsZ4+NU5XewqArWxMseqt3C5daSuptI620s4pn7Wr0ZKg7jVLH0PDEBkA+aA==} + '@cloudflare/workerd-darwin-64@1.20260120.0': + resolution: {integrity: sha512-JLHx3p5dpwz4wjVSis45YNReftttnI3ndhdMh5BUbbpdreN/g0jgxNt5Qp9tDFqEKl++N63qv+hxJiIIvSLR+Q==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260114.0': - resolution: {integrity: sha512-qyE1UdFnAlxzb+uCfN/d9c8icch7XRiH49/DjoqEa+bCDihTuRS7GL1RmhVIqHJhb3pX3DzxmKgQZBDBL83Inw==} + '@cloudflare/workerd-darwin-arm64@1.20260120.0': + resolution: {integrity: sha512-1Md2tCRhZjwajsZNOiBeOVGiS3zbpLPzUDjHr4+XGTXWOA6FzzwScJwQZLa0Doc28Cp4Nr1n7xGL0Dwiz1XuOA==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260114.0': - resolution: {integrity: sha512-Z0BLvAj/JPOabzads2ddDEfgExWTlD22pnwsuNbPwZAGTSZeQa3Y47eGUWyHk+rSGngknk++S7zHTGbKuG7RRg==} + '@cloudflare/workerd-linux-64@1.20260120.0': + resolution: {integrity: sha512-O0mIfJfvU7F8N5siCoRDaVDuI12wkz2xlG4zK6/Ct7U9c9FiE0ViXNFWXFQm5PPj+qbkNRyhjUwhP+GCKTk5EQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260114.0': - resolution: {integrity: sha512-kPUmEtUxUWlr9PQ64kuhdK0qyo8idPe5IIXUgi7xCD7mDd6EOe5J7ugDpbfvfbYKEjx4DpLvN2t45izyI/Sodw==} + '@cloudflare/workerd-linux-arm64@1.20260120.0': + resolution: {integrity: sha512-aRHO/7bjxVpjZEmVVcpmhbzpN6ITbFCxuLLZSW0H9O0C0w40cDCClWSi19T87Ax/PQcYjFNT22pTewKsupkckA==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260114.0': - resolution: {integrity: sha512-MJnKgm6i1jZGyt2ZHQYCnRlpFTEZcK2rv9y7asS3KdVEXaDgGF8kOns5u6YL6/+eMogfZuHRjfDS+UqRTUYIFA==} + '@cloudflare/workerd-windows-64@1.20260120.0': + resolution: {integrity: sha512-ASZIz1E8sqZQqQCgcfY1PJbBpUDrxPt8NZ+lqNil0qxnO4qX38hbCsdDF2/TDAuq0Txh7nu8ztgTelfNDlb4EA==} engines: {node: '>=16'} cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20260118.0': - resolution: {integrity: sha512-t+2Q421kAQqwBzMUDvgg2flp8zFVxOpiAyZPbyNcnPxMDHf0z3B7LqBIVQawwI6ntZinbk9f4oUmaA5bGeYwlg==} + '@cloudflare/workers-types@4.20260123.0': + resolution: {integrity: sha512-pQccZ8IDLFKkvdKBXZRPkbMtWtS7vVz1giJGkAAZ5cZH2RHK5Bs6p1OoVZA8Z2Sry8Q0tZbZ5Yjud4R7SrG3KQ==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -732,8 +732,8 @@ packages: resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.20.7': - resolution: {integrity: sha512-aO7jmh3CtrmPsIJxUwYIzI5WVlMK8BMCPQ4D4nTzqTqBhbzvxHNzBMGcEg13yg/z9R2Qsz49NUFl0F0lVbTVFw==} + '@smithy/core@3.21.1': + resolution: {integrity: sha512-NUH8R4O6FkN8HKMojzbGg/5pNjsfTjlMmeFclyPfPaXXUrbr5TzhWgbf7t92wfrpCHRgpjyz7ffASIS3wX28aA==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.2.8': @@ -796,12 +796,12 @@ packages: resolution: {integrity: sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.8': - resolution: {integrity: sha512-TV44qwB/T0OMMzjIuI+JeS0ort3bvlPJ8XIH0MSlGADraXpZqmyND27ueuAL3E14optleADWqtd7dUgc2w+qhQ==} + '@smithy/middleware-endpoint@4.4.11': + resolution: {integrity: sha512-/WqsrycweGGfb9sSzME4CrsuayjJF6BueBmkKlcbeU5q18OhxRrvvKlmfw3tpDsK5ilx2XUJvoukwxHB0nHs/Q==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.24': - resolution: {integrity: sha512-yiUY1UvnbUFfP5izoKLtfxDSTRv724YRRwyiC/5HYY6vdsVDcDOXKSXmkJl/Hovcxt5r+8tZEUAdrOaCJwrl9Q==} + '@smithy/middleware-retry@4.4.27': + resolution: {integrity: sha512-xFUYCGRVsfgiN5EjsJJSzih9+yjStgMTCLANPlf0LVQkPDYCe0hz97qbdTZosFOiYlGBlHYityGRxrQ/hxhfVQ==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.9': @@ -848,8 +848,8 @@ packages: resolution: {integrity: sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.10.9': - resolution: {integrity: sha512-Je0EvGXVJ0Vrrr2lsubq43JGRIluJ/hX17aN/W/A0WfE+JpoMdI8kwk2t9F0zTX9232sJDGcoH4zZre6m6f/sg==} + '@smithy/smithy-client@4.10.12': + resolution: {integrity: sha512-VKO/HKoQ5OrSHW6AJUmEnUKeXI1/5LfCwO9cwyao7CmLvGnZeM1i36Lyful3LK1XU7HwTVieTqO1y2C/6t3qtA==} engines: {node: '>=18.0.0'} '@smithy/types@4.12.0': @@ -884,12 +884,12 @@ packages: resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.3.23': - resolution: {integrity: sha512-mMg+r/qDfjfF/0psMbV4zd7F/i+rpyp7Hjh0Wry7eY15UnzTEId+xmQTGDU8IdZtDfbGQxuWNfgBZKBj+WuYbA==} + '@smithy/util-defaults-mode-browser@4.3.26': + resolution: {integrity: sha512-vva0dzYUTgn7DdE0uaha10uEdAgmdLnNFowKFjpMm6p2R0XDk5FHPX3CBJLzWQkQXuEprsb0hGz9YwbicNWhjw==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.2.26': - resolution: {integrity: sha512-EQqe/WkbCinah0h1lMWh9ICl0Ob4lyl20/10WTB35SC9vDQfD8zWsOT+x2FIOXKAoZQ8z/y0EFMoodbcqWJY/w==} + '@smithy/util-defaults-mode-node@4.2.29': + resolution: {integrity: sha512-c6D7IUBsZt/aNnTBHMTf+OVh+h/JcxUUgfTcIJaWRe6zhOum1X+pNKSZtZ+7fbOn5I99XVFtmrnXKv8yHHErTQ==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.2.8': @@ -947,69 +947,69 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@25.0.9': - resolution: {integrity: sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==} + '@types/node@25.0.10': + resolution: {integrity: sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==} '@types/uuid@9.0.8': resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - '@typescript-eslint/eslint-plugin@8.53.0': - resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==} + '@typescript-eslint/eslint-plugin@8.53.1': + resolution: {integrity: sha512-cFYYFZ+oQFi6hUnBTbLRXfTJiaQtYE3t4O692agbBl+2Zy+eqSKWtPjhPXJu1G7j4RLjKgeJPDdq3EqOwmX5Ag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.53.0 + '@typescript-eslint/parser': ^8.53.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.53.0': - resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==} + '@typescript-eslint/parser@8.53.1': + resolution: {integrity: sha512-nm3cvFN9SqZGXjmw5bZ6cGmvJSyJPn0wU9gHAZZHDnZl2wF9PhHv78Xf06E0MaNk4zLVHL8hb2/c32XvyJOLQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.53.0': - resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==} + '@typescript-eslint/project-service@8.53.1': + resolution: {integrity: sha512-WYC4FB5Ra0xidsmlPb+1SsnaSKPmS3gsjIARwbEkHkoWloQmuzcfypljaJcR78uyLA1h8sHdWWPHSLDI+MtNog==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.53.0': - resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==} + '@typescript-eslint/scope-manager@8.53.1': + resolution: {integrity: sha512-Lu23yw1uJMFY8cUeq7JlrizAgeQvWugNQzJp8C3x8Eo5Jw5Q2ykMdiiTB9vBVOOUBysMzmRRmUfwFrZuI2C4SQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.53.0': - resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==} + '@typescript-eslint/tsconfig-utils@8.53.1': + resolution: {integrity: sha512-qfvLXS6F6b1y43pnf0pPbXJ+YoXIC7HKg0UGZ27uMIemKMKA6XH2DTxsEDdpdN29D+vHV07x/pnlPNVLhdhWiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.53.0': - resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==} + '@typescript-eslint/type-utils@8.53.1': + resolution: {integrity: sha512-MOrdtNvyhy0rHyv0ENzub1d4wQYKb2NmIqG7qEqPWFW7Mpy2jzFC3pQ2yKDvirZB7jypm5uGjF2Qqs6OIqu47w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.53.0': - resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==} + '@typescript-eslint/types@8.53.1': + resolution: {integrity: sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.53.0': - resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==} + '@typescript-eslint/typescript-estree@8.53.1': + resolution: {integrity: sha512-RGlVipGhQAG4GxV1s34O91cxQ/vWiHJTDHbXRr0li2q/BGg3RR/7NM8QDWgkEgrwQYCvmJV9ichIwyoKCQ+DTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.53.0': - resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==} + '@typescript-eslint/utils@8.53.1': + resolution: {integrity: sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.53.0': - resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==} + '@typescript-eslint/visitor-keys@8.53.1': + resolution: {integrity: sha512-oy+wV7xDKFPRyNggmXuZQSBzvoLnpmJs+GhzRhPjrxl2b/jIlyjVokzm47CZCDUdXKr2zd7ZLodPfOBpOPyPlg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} abort-controller@3.0.0: @@ -1086,8 +1086,8 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} - core-js-pure@3.47.0: - resolution: {integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==} + core-js-pure@3.48.0: + resolution: {integrity: sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==} cross-fetch@4.1.0: resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} @@ -1255,8 +1255,8 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - hono@4.11.4: - resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} + hono@4.11.5: + resolution: {integrity: sha512-WemPi9/WfyMwZs+ZUXdiwcCh9Y+m7L+8vki9MzDw3jJ+W9Lc+12HGsd368Qc1vZi1xwW8BWMMsnK5efYKPdt4g==} engines: {node: '>=16.9.0'} html-to-text@9.0.5: @@ -1357,8 +1357,8 @@ packages: mimetext@3.0.27: resolution: {integrity: sha512-mUhWAsZD1N/K6dbN4+a5Yq78OPnYQw1ubOSMasBntsLQ2S7KVNlvDEA8dwpr4a7PszWMzeslKahAprtwYMgaBA==} - miniflare@4.20260114.0: - resolution: {integrity: sha512-QwHT7S6XqGdQxIvql1uirH/7/i3zDEt0B/YBXTYzMfJtVCR4+ue3KPkU+Bl0zMxvpgkvjh9+eCHhJbKEqya70A==} + miniflare@4.20260120.0: + resolution: {integrity: sha512-XXZyE2pDKMtP5OLuv0LPHEAzIYhov4jrYjcqrhhqtxGGtXneWOHvXIPo+eV8sqwqWd3R7j4DlEKcyb+87BR49Q==} engines: {node: '>=18.0.0'} hasBin: true @@ -1439,8 +1439,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier@3.8.0: - resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==} + prettier@3.8.1: + resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} engines: {node: '>=14'} hasBin: true @@ -1467,8 +1467,8 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - resend@6.7.0: - resolution: {integrity: sha512-2ZV0NDZsh4Gh+Nd1hvluZIitmGJ59O4+OxMufymG6Y8uz1Jgt2uS1seSENnkIUlmwg7/dwmfIJC9rAufByz7wA==} + resend@6.8.0: + resolution: {integrity: sha512-fDOXGqafQfQXl8nXe93wr93pus8tW7YPpowenE3SmG7dJJf0hH3xUWm3xqacnPvhqjCQTJH9xETg07rmUeSuqQ==} engines: {node: '>=20'} peerDependencies: '@react-email/render': '*' @@ -1556,8 +1556,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.53.0: - resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==} + typescript-eslint@8.53.1: + resolution: {integrity: sha512-gB+EVQfP5RDElh9ittfXlhZJdjSU4jUSTyE2+ia8CYyNvet4ElfaLlAIqDvQV9JPknKx0jQH1racTYe/4LaLSg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1571,8 +1571,8 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@7.14.0: - resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} + undici@7.18.2: + resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} engines: {node: '>=20.18.1'} unenv@2.0.0-rc.24: @@ -1607,17 +1607,17 @@ packages: worker-mailer@1.2.1: resolution: {integrity: sha512-gS2ei/mrpRqNs+AHmqxhT6vFPwCLw2qnz5ShmyGD0ULaU0Q9hxnFAcx9jhAip/MnD6+MjgnQu6hQQgA8mlOkVA==} - workerd@1.20260114.0: - resolution: {integrity: sha512-kTJ+jNdIllOzWuVA3NRQRvywP0T135zdCjAE2dAUY1BFbxM6fmMZV8BbskEoQ4hAODVQUfZQmyGctcwvVCKxFA==} + workerd@1.20260120.0: + resolution: {integrity: sha512-R6X/VQOkwLTBGLp4VRUwLQZZVxZ9T9J8pGiJ6GQUMaRkY7TVWrCSkVfoNMM1/YyFsY5UYhhPoQe5IehnhZ3Pdw==} engines: {node: '>=16'} hasBin: true - wrangler@4.59.2: - resolution: {integrity: sha512-Z4xn6jFZTaugcOKz42xvRAYKgkVUERHVbuCJ5+f+gK+R6k12L02unakPGOA0L0ejhUl16dqDjKe4tmL9sedHcw==} + wrangler@4.60.0: + resolution: {integrity: sha512-n4kibm/xY0Qd5G2K/CbAQeVeOIlwPNVglmFjlDRCCYk3hZh8IggO/rg8AXt/vByK2Sxsugl5Z7yvgWxrUbmS6g==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20260114.0 + '@cloudflare/workers-types': ^4.20260120.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -1666,7 +1666,7 @@ snapshots: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.887.0 - '@aws-sdk/util-locate-window': 3.965.2 + '@aws-sdk/util-locate-window': 3.965.3 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -1676,7 +1676,7 @@ snapshots: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 '@aws-sdk/types': 3.887.0 - '@aws-sdk/util-locate-window': 3.965.2 + '@aws-sdk/util-locate-window': 3.965.3 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -1721,7 +1721,7 @@ snapshots: '@aws-sdk/util-user-agent-node': 3.888.0 '@aws-sdk/xml-builder': 3.887.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.20.7 + '@smithy/core': 3.21.1 '@smithy/eventstream-serde-browser': 4.2.8 '@smithy/eventstream-serde-config-resolver': 4.3.8 '@smithy/eventstream-serde-node': 4.2.8 @@ -1732,21 +1732,21 @@ snapshots: '@smithy/invalid-dependency': 4.2.8 '@smithy/md5-js': 4.2.8 '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.8 - '@smithy/middleware-retry': 4.4.24 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/middleware-retry': 4.4.27 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.23 - '@smithy/util-defaults-mode-node': 4.2.26 + '@smithy/util-defaults-mode-browser': 4.3.26 + '@smithy/util-defaults-mode-node': 4.2.29 '@smithy/util-endpoints': 3.2.8 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -1774,26 +1774,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.887.0 '@aws-sdk/util-user-agent-node': 3.888.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.20.7 + '@smithy/core': 3.21.1 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.2.8 '@smithy/invalid-dependency': 4.2.8 '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.8 - '@smithy/middleware-retry': 4.4.24 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/middleware-retry': 4.4.27 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.23 - '@smithy/util-defaults-mode-node': 4.2.26 + '@smithy/util-defaults-mode-browser': 4.3.26 + '@smithy/util-defaults-mode-node': 4.2.29 '@smithy/util-endpoints': 3.2.8 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -1806,12 +1806,12 @@ snapshots: dependencies: '@aws-sdk/types': 3.887.0 '@aws-sdk/xml-builder': 3.887.0 - '@smithy/core': 3.20.7 + '@smithy/core': 3.21.1 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/signature-v4': 5.3.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 @@ -1836,7 +1836,7 @@ snapshots: '@smithy/node-http-handler': 4.4.8 '@smithy/property-provider': 4.2.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/util-stream': 4.5.10 tslib: 2.8.1 @@ -1974,11 +1974,11 @@ snapshots: '@aws-sdk/core': 3.888.0 '@aws-sdk/types': 3.887.0 '@aws-sdk/util-arn-parser': 3.873.0 - '@smithy/core': 3.20.7 + '@smithy/core': 3.21.1 '@smithy/node-config-provider': 4.3.8 '@smithy/protocol-http': 5.3.8 '@smithy/signature-v4': 5.3.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/util-config-provider': 4.2.0 '@smithy/util-middleware': 4.2.8 @@ -1997,7 +1997,7 @@ snapshots: '@aws-sdk/core': 3.888.0 '@aws-sdk/types': 3.887.0 '@aws-sdk/util-endpoints': 3.887.0 - '@smithy/core': 3.20.7 + '@smithy/core': 3.21.1 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -2017,26 +2017,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.887.0 '@aws-sdk/util-user-agent-node': 3.888.0 '@smithy/config-resolver': 4.4.6 - '@smithy/core': 3.20.7 + '@smithy/core': 3.21.1 '@smithy/fetch-http-handler': 5.3.9 '@smithy/hash-node': 4.2.8 '@smithy/invalid-dependency': 4.2.8 '@smithy/middleware-content-length': 4.2.8 - '@smithy/middleware-endpoint': 4.4.8 - '@smithy/middleware-retry': 4.4.24 + '@smithy/middleware-endpoint': 4.4.11 + '@smithy/middleware-retry': 4.4.27 '@smithy/middleware-serde': 4.2.9 '@smithy/middleware-stack': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/node-http-handler': 4.4.8 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/url-parser': 4.2.8 '@smithy/util-base64': 4.3.0 '@smithy/util-body-length-browser': 4.2.0 '@smithy/util-body-length-node': 4.2.1 - '@smithy/util-defaults-mode-browser': 4.3.23 - '@smithy/util-defaults-mode-node': 4.2.26 + '@smithy/util-defaults-mode-browser': 4.3.26 + '@smithy/util-defaults-mode-node': 4.2.29 '@smithy/util-endpoints': 3.2.8 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -2059,9 +2059,9 @@ snapshots: '@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.4.8 + '@smithy/middleware-endpoint': 4.4.11 '@smithy/protocol-http': 5.3.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -2110,7 +2110,7 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.2': + '@aws-sdk/util-locate-window@3.965.3': dependencies: tslib: 2.8.1 @@ -2138,34 +2138,34 @@ snapshots: '@babel/runtime-corejs3@7.28.6': dependencies: - core-js-pure: 3.47.0 + core-js-pure: 3.48.0 '@babel/runtime@7.28.6': {} '@cloudflare/kv-asset-handler@0.4.2': {} - '@cloudflare/unenv-preset@2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0)': + '@cloudflare/unenv-preset@2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260120.0)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260114.0 + workerd: 1.20260120.0 - '@cloudflare/workerd-darwin-64@1.20260114.0': + '@cloudflare/workerd-darwin-64@1.20260120.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260114.0': + '@cloudflare/workerd-darwin-arm64@1.20260120.0': optional: true - '@cloudflare/workerd-linux-64@1.20260114.0': + '@cloudflare/workerd-linux-64@1.20260120.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20260114.0': + '@cloudflare/workerd-linux-arm64@1.20260120.0': optional: true - '@cloudflare/workerd-windows-64@1.20260114.0': + '@cloudflare/workerd-windows-64@1.20260120.0': optional: true - '@cloudflare/workers-types@4.20260118.0': {} + '@cloudflare/workers-types@4.20260123.0': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -2476,7 +2476,7 @@ snapshots: '@react-email/render@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: html-to-text: 9.0.5 - prettier: 3.8.0 + prettier: 3.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-promise-suspense: 0.3.4 @@ -2529,7 +2529,7 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/core@3.20.7': + '@smithy/core@3.21.1': dependencies: '@smithy/middleware-serde': 4.2.9 '@smithy/protocol-http': 5.3.8 @@ -2633,9 +2633,9 @@ snapshots: '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.8': + '@smithy/middleware-endpoint@4.4.11': dependencies: - '@smithy/core': 3.20.7 + '@smithy/core': 3.21.1 '@smithy/middleware-serde': 4.2.9 '@smithy/node-config-provider': 4.3.8 '@smithy/shared-ini-file-loader': 4.4.3 @@ -2644,12 +2644,12 @@ snapshots: '@smithy/util-middleware': 4.2.8 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.24': + '@smithy/middleware-retry@4.4.27': dependencies: '@smithy/node-config-provider': 4.3.8 '@smithy/protocol-http': 5.3.8 '@smithy/service-error-classification': 4.2.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 '@smithy/util-middleware': 4.2.8 '@smithy/util-retry': 4.2.8 @@ -2723,10 +2723,10 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 - '@smithy/smithy-client@4.10.9': + '@smithy/smithy-client@4.10.12': dependencies: - '@smithy/core': 3.20.7 - '@smithy/middleware-endpoint': 4.4.8 + '@smithy/core': 3.21.1 + '@smithy/middleware-endpoint': 4.4.11 '@smithy/middleware-stack': 4.2.8 '@smithy/protocol-http': 5.3.8 '@smithy/types': 4.12.0 @@ -2771,20 +2771,20 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.3.23': + '@smithy/util-defaults-mode-browser@4.3.26': dependencies: '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.2.26': + '@smithy/util-defaults-mode-node@4.2.29': dependencies: '@smithy/config-resolver': 4.4.6 '@smithy/credential-provider-imds': 4.2.8 '@smithy/node-config-provider': 4.3.8 '@smithy/property-provider': 4.2.8 - '@smithy/smithy-client': 4.10.9 + '@smithy/smithy-client': 4.10.12 '@smithy/types': 4.12.0 tslib: 2.8.1 @@ -2854,20 +2854,20 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/node@25.0.9': + '@types/node@25.0.10': dependencies: undici-types: 7.16.0 '@types/uuid@9.0.8': {} - '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.1)(typescript@5.4.5))(eslint@9.39.1)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.1)(typescript@5.4.5))(eslint@9.39.1)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.53.0(eslint@9.39.1)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.53.0 - '@typescript-eslint/type-utils': 8.53.0(eslint@9.39.1)(typescript@5.4.5) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.1)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/parser': 8.53.1(eslint@9.39.1)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/type-utils': 8.53.1(eslint@9.39.1)(typescript@5.4.5) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.1)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.53.1 eslint: 9.39.1 ignore: 7.0.5 natural-compare: 1.4.0 @@ -2876,41 +2876,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.53.0(eslint@9.39.1)(typescript@5.4.5)': + '@typescript-eslint/parser@8.53.1(eslint@9.39.1)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 8.53.0 - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3 eslint: 9.39.1 typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.53.0(typescript@5.4.5)': + '@typescript-eslint/project-service@8.53.1(typescript@5.4.5)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.4.5) - '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.4.5) + '@typescript-eslint/types': 8.53.1 debug: 4.4.3 typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.53.0': + '@typescript-eslint/scope-manager@8.53.1': dependencies: - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 - '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.4.5)': + '@typescript-eslint/tsconfig-utils@8.53.1(typescript@5.4.5)': dependencies: typescript: 5.4.5 - '@typescript-eslint/type-utils@8.53.0(eslint@9.39.1)(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.53.1(eslint@9.39.1)(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.4.5) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.1)(typescript@5.4.5) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.4.5) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.1)(typescript@5.4.5) debug: 4.4.3 eslint: 9.39.1 ts-api-utils: 2.4.0(typescript@5.4.5) @@ -2918,14 +2918,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.53.0': {} + '@typescript-eslint/types@8.53.1': {} - '@typescript-eslint/typescript-estree@8.53.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@8.53.1(typescript@5.4.5)': dependencies: - '@typescript-eslint/project-service': 8.53.0(typescript@5.4.5) - '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.4.5) - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/visitor-keys': 8.53.0 + '@typescript-eslint/project-service': 8.53.1(typescript@5.4.5) + '@typescript-eslint/tsconfig-utils': 8.53.1(typescript@5.4.5) + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/visitor-keys': 8.53.1 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 @@ -2935,20 +2935,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.53.0(eslint@9.39.1)(typescript@5.4.5)': + '@typescript-eslint/utils@8.53.1(eslint@9.39.1)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.1) - '@typescript-eslint/scope-manager': 8.53.0 - '@typescript-eslint/types': 8.53.0 - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.53.1 + '@typescript-eslint/types': 8.53.1 + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.4.5) eslint: 9.39.1 typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.53.0': + '@typescript-eslint/visitor-keys@8.53.1': dependencies: - '@typescript-eslint/types': 8.53.0 + '@typescript-eslint/types': 8.53.1 eslint-visitor-keys: 4.2.1 abort-controller@3.0.0: @@ -3021,7 +3021,7 @@ snapshots: cookie@1.1.1: {} - core-js-pure@3.47.0: {} + core-js-pure@3.48.0: {} cross-fetch@4.1.0: dependencies: @@ -3220,7 +3220,7 @@ snapshots: has-flag@4.0.0: {} - hono@4.11.4: {} + hono@4.11.5: {} html-to-text@9.0.5: dependencies: @@ -3319,12 +3319,12 @@ snapshots: js-base64: 3.7.8 mime-types: 2.1.35 - miniflare@4.20260114.0: + miniflare@4.20260120.0: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.34.5 - undici: 7.14.0 - workerd: 1.20260114.0 + undici: 7.18.2 + workerd: 1.20260120.0 ws: 8.18.0 youch: 4.1.0-beta.10 zod: 3.25.76 @@ -3396,7 +3396,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier@3.8.0: + prettier@3.8.1: optional: true punycode@2.3.1: {} @@ -3424,7 +3424,7 @@ snapshots: loose-envify: 1.4.0 optional: true - resend@6.7.0(@react-email/render@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): + resend@6.8.0(@react-email/render@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)): dependencies: svix: 1.84.1 optionalDependencies: @@ -3538,12 +3538,12 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.53.0(eslint@9.39.1)(typescript@5.4.5): + typescript-eslint@8.53.1(eslint@9.39.1)(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.1)(typescript@5.4.5))(eslint@9.39.1)(typescript@5.4.5) - '@typescript-eslint/parser': 8.53.0(eslint@9.39.1)(typescript@5.4.5) - '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.4.5) - '@typescript-eslint/utils': 8.53.0(eslint@9.39.1)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 8.53.1(@typescript-eslint/parser@8.53.1(eslint@9.39.1)(typescript@5.4.5))(eslint@9.39.1)(typescript@5.4.5) + '@typescript-eslint/parser': 8.53.1(eslint@9.39.1)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.53.1(typescript@5.4.5) + '@typescript-eslint/utils': 8.53.1(eslint@9.39.1)(typescript@5.4.5) eslint: 9.39.1 typescript: 5.4.5 transitivePeerDependencies: @@ -3553,7 +3553,7 @@ snapshots: undici-types@7.16.0: {} - undici@7.14.0: {} + undici@7.18.2: {} unenv@2.0.0-rc.24: dependencies: @@ -3582,26 +3582,26 @@ snapshots: worker-mailer@1.2.1: {} - workerd@1.20260114.0: + workerd@1.20260120.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260114.0 - '@cloudflare/workerd-darwin-arm64': 1.20260114.0 - '@cloudflare/workerd-linux-64': 1.20260114.0 - '@cloudflare/workerd-linux-arm64': 1.20260114.0 - '@cloudflare/workerd-windows-64': 1.20260114.0 + '@cloudflare/workerd-darwin-64': 1.20260120.0 + '@cloudflare/workerd-darwin-arm64': 1.20260120.0 + '@cloudflare/workerd-linux-64': 1.20260120.0 + '@cloudflare/workerd-linux-arm64': 1.20260120.0 + '@cloudflare/workerd-windows-64': 1.20260120.0 - wrangler@4.59.2(@cloudflare/workers-types@4.20260118.0): + wrangler@4.60.0(@cloudflare/workers-types@4.20260123.0): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 - '@cloudflare/unenv-preset': 2.10.0(unenv@2.0.0-rc.24)(workerd@1.20260114.0) + '@cloudflare/unenv-preset': 2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260120.0) blake3-wasm: 2.1.5 esbuild: 0.27.0 - miniflare: 4.20260114.0 + miniflare: 4.20260120.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260114.0 + workerd: 1.20260120.0 optionalDependencies: - '@cloudflare/workers-types': 4.20260118.0 + '@cloudflare/workers-types': 4.20260123.0 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil diff --git a/worker/src/models/index.ts b/worker/src/models/index.ts index 72d90730..4d0ba68e 100644 --- a/worker/src/models/index.ts +++ b/worker/src/models/index.ts @@ -155,6 +155,9 @@ export type UserOauth2Settings = { redirectURL: string; logoutURL?: string; userEmailKey: string; + enableEmailFormat?: boolean; // Enable email format transformation + userEmailFormat?: string; // Regex pattern to match email + userEmailReplace?: string; // Replacement template using $1, $2, etc. scope: string; enableMailAllowList?: boolean | undefined; mailAllowList?: string[] | undefined; diff --git a/worker/src/user_api/oauth2.ts b/worker/src/user_api/oauth2.ts index ac6b7775..65dc6d6b 100644 --- a/worker/src/user_api/oauth2.ts +++ b/worker/src/user_api/oauth2.ts @@ -68,7 +68,7 @@ export default { } const userInfo = await userRes.json() - const email = await (async () => { + const rawEmail = await (async () => { if (setting.userEmailKey.startsWith("$")) { const { JSONPath } = await import('jsonpath-plus'); const email = JSONPath({ @@ -83,6 +83,26 @@ export default { return email; })() + if (!rawEmail) { + return c.text(msgs.Oauth2FailedGetUserEmailMsg, 400); + } + + // Apply email format transformation if enabled + const email = (() => { + const rawEmailStr = String(rawEmail).slice(0, 256).trim(); // 限制长度防止 ReDoS + if (!setting.enableEmailFormat || !setting.userEmailFormat) { + return rawEmailStr; + } + try { + const regex = new RegExp(setting.userEmailFormat); + const replacement = setting.userEmailReplace || '$1'; + return rawEmailStr.replace(regex, replacement).trim(); + } catch (e) { + console.error(`Invalid regex in userEmailFormat: ${setting.userEmailFormat}`, e); + return rawEmailStr; + } + })(); + if (!email) { return c.text(msgs.Oauth2FailedGetUserEmailMsg, 400); }