feature: update dependencies (#651)

This commit is contained in:
Dream Hunter
2025-05-07 00:13:26 +08:00
committed by GitHub
parent 07833d5ca9
commit e230801a1c
46 changed files with 1572 additions and 1616 deletions

View File

@@ -24,7 +24,7 @@
"@vueuse/core": "^12.8.2",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.8.4",
"axios": "^1.9.0",
"jszip": "^3.10.1",
"mail-parser-wasm": "^0.2.1",
"naive-ui": "^2.41.0",
@@ -33,20 +33,21 @@
"vue": "^3.5.13",
"vue-clipboard3": "^2.0.0",
"vue-i18n": "^11.1.3",
"vue-router": "^4.5.0"
"vue-router": "^4.5.1"
},
"devDependencies": {
"@vicons/fa": "^0.13.0",
"@vicons/material": "^0.13.0",
"@vitejs/plugin-vue": "^5.2.3",
"unplugin-auto-import": "^19.1.2",
"unplugin-auto-import": "^19.2.0",
"unplugin-vue-components": "^28.5.0",
"vite": "^6.3.3",
"vite": "^6.3.5",
"vite-plugin-pwa": "^1.0.0",
"vite-plugin-top-level-await": "^1.5.0",
"vite-plugin-wasm": "^3.4.1",
"workbox-build": "^7.3.0",
"workbox-window": "^7.3.0",
"wrangler": "^4.13.1"
}
"wrangler": "^4.14.2"
},
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"
}

1799
frontend/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@
"author": "",
"license": "ISC",
"devDependencies": {
"wrangler": "^4.13.1"
}
"wrangler": "^4.14.2"
},
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"
}

View File

@@ -4,9 +4,9 @@
"version": "0.10.0",
"type": "module",
"devDependencies": {
"@types/node": "^22.14.1",
"@types/node": "^22.15.12",
"vitepress": "^1.6.3",
"wrangler": "^4.13.1"
"wrangler": "^4.14.2"
},
"scripts": {
"dev": "vitepress dev docs",
@@ -16,5 +16,6 @@
},
"dependencies": {
"jszip": "^3.10.1"
}
},
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"
}

View File

@@ -13,14 +13,14 @@ importers:
version: 3.10.1
devDependencies:
'@types/node':
specifier: ^22.14.1
version: 22.14.1
specifier: ^22.15.12
version: 22.15.12
vitepress:
specifier: ^1.6.3
version: 1.6.3(@algolia/client-search@5.23.4)(@types/node@22.14.1)(postcss@8.5.3)(search-insights@2.13.0)(typescript@5.4.5)
version: 1.6.3(@algolia/client-search@5.24.0)(@types/node@22.15.12)(postcss@8.5.3)(search-insights@2.13.0)(typescript@5.4.5)
wrangler:
specifier: ^4.13.1
version: 4.13.1
specifier: ^4.14.2
version: 4.14.2
packages:
@@ -44,73 +44,73 @@ packages:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
'@algolia/client-abtesting@5.23.4':
resolution: {integrity: sha512-WIMT2Kxy+FFWXWQxIU8QgbTioL+SGE24zhpj0kipG4uQbzXwONaWt7ffaYLjfge3gcGSgJVv+1VlahVckafluQ==}
'@algolia/client-abtesting@5.24.0':
resolution: {integrity: sha512-pNTIB5YqVVwu6UogvdX8TqsRZENaflqMMjdY7/XIPMNGrBoNH9tewINLI7+qc9tIaOLcAp3ZldqoEwAihZZ3ig==}
engines: {node: '>= 14.0.0'}
'@algolia/client-analytics@5.23.4':
resolution: {integrity: sha512-4B9gChENsQA9kFmFlb+x3YhBz2Gx3vSsm81FHI1yJ3fn2zlxREHmfrjyqYoMunsU7BybT/o5Nb7ccCbm/vfseA==}
'@algolia/client-analytics@5.24.0':
resolution: {integrity: sha512-IF+r9RRQsIf0ylIBNFxo7c6hDxxuhIfIbffhBXEF1HD13rjhP5AVfiaea9RzbsAZoySkm318plDpH/nlGIjbRA==}
engines: {node: '>= 14.0.0'}
'@algolia/client-common@5.23.4':
resolution: {integrity: sha512-bsj0lwU2ytiWLtl7sPunr+oLe+0YJql9FozJln5BnIiqfKOaseSDdV42060vUy+D4373f2XBI009K/rm2IXYMA==}
'@algolia/client-common@5.24.0':
resolution: {integrity: sha512-p8K6tiXQTebRBxbrzWIfGCvfkT+Umml+2lzI92acZjHsvl6KYH6igOfVstKqXJRei9pvRzEEvVDNDLXDVleGTA==}
engines: {node: '>= 14.0.0'}
'@algolia/client-insights@5.23.4':
resolution: {integrity: sha512-XSCtAYvJ/hnfDHfRVMbBH0dayR+2ofVZy3jf5qyifjguC6rwxDsSdQvXpT0QFVyG+h8UPGtDhMPoUIng4wIcZA==}
'@algolia/client-insights@5.24.0':
resolution: {integrity: sha512-jOHF0+tixR3IZJMhZPquFNdCVPzwzzXoiqVsbTvfKojeaY6ZXybgUiTSB8JNX+YpsUT8Ebhu3UvRy4mw2PbEzw==}
engines: {node: '>= 14.0.0'}
'@algolia/client-personalization@5.23.4':
resolution: {integrity: sha512-l/0QvqgRFFOf7BnKSJ3myd1WbDr86ftVaa3PQwlsNh7IpIHmvVcT83Bi5zlORozVGMwaKfyPZo6O48PZELsOeA==}
'@algolia/client-personalization@5.24.0':
resolution: {integrity: sha512-Fx/Fp6d8UmDBHecTt0XYF8C9TAaA3qeCQortfGSZzWp4gVmtrUCFNZ1SUwb8ULREnO9DanVrM5hGE8R8C4zZTQ==}
engines: {node: '>= 14.0.0'}
'@algolia/client-query-suggestions@5.23.4':
resolution: {integrity: sha512-TB0htrDgVacVGtPDyENoM6VIeYqR+pMsDovW94dfi2JoaRxfqu/tYmLpvgWcOknP6wLbr8bA+G7t/NiGksNAwQ==}
'@algolia/client-query-suggestions@5.24.0':
resolution: {integrity: sha512-F8ypOedSMhz6W7zuT5O1SXXsdXSOVhY2U6GkRbYk/mzrhs3jWFR3uQIfeQVWmsJjUwIGZmPoAr9E+T/Zm2M4wA==}
engines: {node: '>= 14.0.0'}
'@algolia/client-search@5.23.4':
resolution: {integrity: sha512-uBGo6KwUP6z+u6HZWRui8UJClS7fgUIAiYd1prUqCbkzDiCngTOzxaJbEvrdkK0hGCQtnPDiuNhC5MhtVNN4Eg==}
'@algolia/client-search@5.24.0':
resolution: {integrity: sha512-k+nuciQuq7WERNNE+hsx3DX636zIy+9R4xdtvW3PANT2a2BDGOv3fv2mta8+QUMcVTVcGe/Mo3QCb4pc1HNoxA==}
engines: {node: '>= 14.0.0'}
'@algolia/ingestion@1.23.4':
resolution: {integrity: sha512-Si6rFuGnSeEUPU9QchYvbknvEIyCRK7nkeaPVQdZpABU7m4V/tsiWdHmjVodtx3h20VZivJdHeQO9XbHxBOcCw==}
'@algolia/ingestion@1.24.0':
resolution: {integrity: sha512-/lqVxmrvwoA+OyVK4XLMdz/PJaCTW4qYchX1AZ+98fdnH3K6XM/kMydQLfP0bUNGBQbmVrF88MqhqZRnZEn/MA==}
engines: {node: '>= 14.0.0'}
'@algolia/monitoring@1.23.4':
resolution: {integrity: sha512-EXGoVVTshraqPJgr5cMd1fq7Jm71Ew6MpGCEaxI5PErBpJAmKdtjRIzs6JOGKHRaWLi+jdbJPYc2y8RN4qcx5Q==}
'@algolia/monitoring@1.24.0':
resolution: {integrity: sha512-cRisDXQJhvfZCXL4hD22qca2CmW52TniOx6L7pvkaBDx0oQk1k9o+3w11fgfcCG+47OndMeNx5CMpu+K+COMzg==}
engines: {node: '>= 14.0.0'}
'@algolia/recommend@5.23.4':
resolution: {integrity: sha512-1t6glwKVCkjvBNlng2itTf8fwaLSqkL4JaMENgR3WTGR8mmW2akocUy/ZYSQcG4TcR7qu4zW2UMGAwLoWoflgQ==}
'@algolia/recommend@5.24.0':
resolution: {integrity: sha512-JTMz0JqN2gidvKa2QCF/rMe8LNtdHaght03px2cluZaZfBRYy8TgHgkCeBspKKvV/abWJwl7J0FzWThCshqT3w==}
engines: {node: '>= 14.0.0'}
'@algolia/requester-browser-xhr@5.23.4':
resolution: {integrity: sha512-UUuizcgc5+VSY8hqzDFVdJ3Wcto03lpbFRGPgW12pHTlUQHUTADtIpIhkLLOZRCjXmCVhtr97Z+eR6LcRYXa3Q==}
'@algolia/requester-browser-xhr@5.24.0':
resolution: {integrity: sha512-B2Gc+iSxct1WSza5CF6AgfNgmLvVb61d5bqmIWUZixtJIhyAC6lSQZuF+nvt+lmKhQwuY2gYjGGClil8onQvKQ==}
engines: {node: '>= 14.0.0'}
'@algolia/requester-fetch@5.23.4':
resolution: {integrity: sha512-UhDg6elsek6NnV5z4VG1qMwR6vbp+rTMBEnl/v4hUyXQazU+CNdYkl++cpdmLwGI/7nXc28xtZiL90Es3I7viQ==}
'@algolia/requester-fetch@5.24.0':
resolution: {integrity: sha512-6E5+hliqGc5w8ZbyTAQ+C3IGLZ/GiX623Jl2bgHA974RPyFWzVSj4rKqkboUAxQmrFY7Z02ybJWVZS5OhPQocA==}
engines: {node: '>= 14.0.0'}
'@algolia/requester-node-http@5.23.4':
resolution: {integrity: sha512-jXGzGBRUS0oywQwnaCA6mMDJO7LoC3dYSLsyNfIqxDR4SNGLhtg3je0Y31lc24OA4nYyKAYgVLtjfrpcpsWShg==}
'@algolia/requester-node-http@5.24.0':
resolution: {integrity: sha512-zM+nnqZpiQj20PyAh6uvgdSz+hD7Rj7UfAZwizqNP+bLvcbGXZwABERobuilkCQqyDBBH4uv0yqIcPRl8dSBEg==}
engines: {node: '>= 14.0.0'}
'@babel/helper-string-parser@7.25.9':
resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.25.9':
resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
'@babel/helper-validator-identifier@7.27.1':
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.27.0':
resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==}
'@babel/parser@7.27.1':
resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/types@7.27.0':
resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==}
'@babel/types@7.27.1':
resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==}
engines: {node: '>=6.9.0'}
'@cloudflare/kv-asset-handler@0.4.0':
@@ -126,32 +126,32 @@ packages:
workerd:
optional: true
'@cloudflare/workerd-darwin-64@1.20250424.0':
resolution: {integrity: sha512-E+9tyQfwKwg7iz+vI50UeF9m9MhO6uCTnn6VPBTobhgi0rKcfmCteUGz6YJejG6ex9OIfFHg/tIcr1+ywGZtiA==}
'@cloudflare/workerd-darwin-64@1.20250428.0':
resolution: {integrity: sha512-6nVe9oV4Hdec6ctzMtW80TiDvNTd2oFPi3VsKqSDVaJSJbL+4b6seyJ7G/UEPI+si6JhHBSLV2/9lNXNGLjClA==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
'@cloudflare/workerd-darwin-arm64@1.20250424.0':
resolution: {integrity: sha512-5vReSs+Gx4vPNR3zoU3a7BVBoTEc7aoe2gGcaxSSQKMOvVkp3bo9poOGZbISodhYnCCRXltZcl8Vgyi0l/YZLA==}
'@cloudflare/workerd-darwin-arm64@1.20250428.0':
resolution: {integrity: sha512-/TB7bh7SIJ5f+6r4PHsAz7+9Qal/TK1cJuKFkUno1kqGlZbdrMwH0ATYwlWC/nBFeu2FB3NUolsTntEuy23hnQ==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
'@cloudflare/workerd-linux-64@1.20250424.0':
resolution: {integrity: sha512-8kBNy7LpW/E4XKGrx/1Xql3Hfy8viDb+tFudu+sN/b6A2tNczNoOzDyNeWeWa99/zfyzncah1l0Wl2RBmVvY+Q==}
'@cloudflare/workerd-linux-64@1.20250428.0':
resolution: {integrity: sha512-9eCbj+R3CKqpiXP6DfAA20DxKge+OTj7Hyw3ZewiEhWH9INIHiJwJQYybu4iq9kJEGjnGvxgguLFjSCWm26hgg==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
'@cloudflare/workerd-linux-arm64@1.20250424.0':
resolution: {integrity: sha512-R4wLZNobQo5K96e3BEaTwCbZhyspeoW81k/yrkSRseLpSoIpLNguw6ckk5sGCjUkXEZQyu9TG6PzdYqlQo70gw==}
'@cloudflare/workerd-linux-arm64@1.20250428.0':
resolution: {integrity: sha512-D9NRBnW46nl1EQsP13qfkYb5lbt4C6nxl38SBKY/NOcZAUoHzNB5K0GaK8LxvpkM7X/97ySojlMfR5jh5DNXYQ==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
'@cloudflare/workerd-windows-64@1.20250424.0':
resolution: {integrity: sha512-uwzZhNaKjJKq6NGFPd0hQWecpf5OTZCrlWKQZm4kkufZ7uIzkn5t3kOjh/J3L9puM/GvIPxCiDUE2aG66P6YxA==}
'@cloudflare/workerd-windows-64@1.20250428.0':
resolution: {integrity: sha512-RQCRj28eitjKD0tmei6iFOuWqMuHMHdNGEigRmbkmuTlpbWHNAoHikgCzZQ/dkKDdatA76TmcpbyECNf31oaTA==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
@@ -599,103 +599,103 @@ packages:
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
'@rollup/rollup-android-arm-eabi@4.40.0':
resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==}
'@rollup/rollup-android-arm-eabi@4.40.2':
resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.40.0':
resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==}
'@rollup/rollup-android-arm64@4.40.2':
resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.40.0':
resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==}
'@rollup/rollup-darwin-arm64@4.40.2':
resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.40.0':
resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==}
'@rollup/rollup-darwin-x64@4.40.2':
resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.40.0':
resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==}
'@rollup/rollup-freebsd-arm64@4.40.2':
resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.40.0':
resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==}
'@rollup/rollup-freebsd-x64@4.40.2':
resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.40.0':
resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==}
'@rollup/rollup-linux-arm-gnueabihf@4.40.2':
resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.40.0':
resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==}
'@rollup/rollup-linux-arm-musleabihf@4.40.2':
resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.40.0':
resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==}
'@rollup/rollup-linux-arm64-gnu@4.40.2':
resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.40.0':
resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==}
'@rollup/rollup-linux-arm64-musl@4.40.2':
resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-loongarch64-gnu@4.40.0':
resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==}
'@rollup/rollup-linux-loongarch64-gnu@4.40.2':
resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==}
cpu: [loong64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.40.0':
resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==}
'@rollup/rollup-linux-powerpc64le-gnu@4.40.2':
resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.40.0':
resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==}
'@rollup/rollup-linux-riscv64-gnu@4.40.2':
resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-riscv64-musl@4.40.0':
resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==}
'@rollup/rollup-linux-riscv64-musl@4.40.2':
resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.40.0':
resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==}
'@rollup/rollup-linux-s390x-gnu@4.40.2':
resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.40.0':
resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==}
'@rollup/rollup-linux-x64-gnu@4.40.2':
resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.40.0':
resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==}
'@rollup/rollup-linux-x64-musl@4.40.2':
resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.40.0':
resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==}
'@rollup/rollup-win32-arm64-msvc@4.40.2':
resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.40.0':
resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==}
'@rollup/rollup-win32-ia32-msvc@4.40.2':
resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.40.0':
resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==}
'@rollup/rollup-win32-x64-msvc@4.40.2':
resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==}
cpu: [x64]
os: [win32]
@@ -741,8 +741,8 @@ packages:
'@types/mdurl@2.0.0':
resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
'@types/node@22.14.1':
resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==}
'@types/node@22.15.12':
resolution: {integrity: sha512-K0fpC/ZVeb8G9rm7bH7vI0KAec4XHEhBam616nVJCV51bKzJ6oA3luG4WdKoaztxe70QaNjS/xBmcDLmr4PiGw==}
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
@@ -772,14 +772,14 @@ packages:
'@vue/compiler-ssr@3.5.13':
resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
'@vue/devtools-api@7.7.5':
resolution: {integrity: sha512-HYV3tJGARROq5nlVMJh5KKHk7GU8Au3IrrmNNqr978m0edxgpHgYPDoNUGrvEgIbObz09SQezFR3A1EVmB5WZg==}
'@vue/devtools-api@7.7.6':
resolution: {integrity: sha512-b2Xx0KvXZObePpXPYHvBRRJLDQn5nhKjXh7vUhMEtWxz1AYNFOVIsh5+HLP8xDGL7sy+Q7hXeUxPHB/KgbtsPw==}
'@vue/devtools-kit@7.7.5':
resolution: {integrity: sha512-S9VAVJYVAe4RPx2JZb9ZTEi0lqTySz2CBeF0wHT5D3dkTLnT9yMMGegKNl4b2EIELwLSkcI9bl2qp0/jW+upqA==}
'@vue/devtools-kit@7.7.6':
resolution: {integrity: sha512-geu7ds7tem2Y7Wz+WgbnbZ6T5eadOvozHZ23Atk/8tksHMFOFylKi1xgGlQlVn0wlkEf4hu+vd5ctj1G4kFtwA==}
'@vue/devtools-shared@7.7.5':
resolution: {integrity: sha512-QBjG72RfpM0DKtpns2RZOxBltO226kOAls9e4Lri6YxS2gWTgL0H+wj1R2K76lxxIeOrqo4+2Ty6RQnzv+WSTQ==}
'@vue/devtools-shared@7.7.6':
resolution: {integrity: sha512-yFEgJZ/WblEsojQQceuyK6FzpFDx4kqrz2ohInxNj5/DnhoX023upTv4OD6lNPLAA5LLkbwPVb10o/7b+Y4FVA==}
'@vue/reactivity@3.5.13':
resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
@@ -857,8 +857,8 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
algoliasearch@5.23.4:
resolution: {integrity: sha512-QzAKFHl3fm53s44VHrTdEo0TkpL3XVUYQpnZy1r6/EHvMAyIg+O4hwprzlsNmcCHTNyVcF2S13DAUn7XhkC6qg==}
algoliasearch@5.24.0:
resolution: {integrity: sha512-CkaUygzZ91Xbw11s0CsHMawrK3tl+Ue57725HGRgRzKgt2Z4wvXVXRCtQfvzh8K7Tp4Zp7f1pyHAtMROtTJHxg==}
engines: {node: '>= 14.0.0'}
as-table@1.0.55:
@@ -1031,8 +1031,8 @@ packages:
engines: {node: '>=10.0.0'}
hasBin: true
miniflare@4.20250424.0:
resolution: {integrity: sha512-eROPDAx4KCIFtfRyRV9d3FJaF94UjW57gRUZz7gk2wyyOuHYVVJnWWyWrZfvRqzd4WfoJLDZlczhlZ9aZgJ2cQ==}
miniflare@4.20250428.1:
resolution: {integrity: sha512-M3qcJXjeAEimHrEeWXEhrJiC3YHB5M3QSqqK67pOTI+lHn0QyVG/2iFUjVJ/nv+i10uxeAEva8GRGeu+tKRCmQ==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -1103,8 +1103,8 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
rollup@4.40.0:
resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==}
rollup@4.40.2:
resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -1215,8 +1215,8 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
vite@5.4.18:
resolution: {integrity: sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==}
vite@5.4.19:
resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -1266,17 +1266,17 @@ packages:
typescript:
optional: true
workerd@1.20250424.0:
resolution: {integrity: sha512-3Nb69De9pfC21vLMW8Xpp5JXEPYd7e8MGcaEfo/6z1jOX9CFJVaqrAXr8RwYxDgN528ZahHqM51YQEcVlOu1Cw==}
workerd@1.20250428.0:
resolution: {integrity: sha512-JJNWkHkwPQKQdvtM9UORijgYdcdJsihA4SfYjwh02IUQsdMyZ9jizV1sX9yWi9B9ptlohTW8UNHJEATuphGgdg==}
engines: {node: '>=16'}
hasBin: true
wrangler@4.13.1:
resolution: {integrity: sha512-ofF1QAoRYwmg/8ukoW6235ig2oGw187ETDN99ATIf+i0RZ+iYc+5ykzNxomY+T7fvRHKs+xh3at3LdFlwTdPQQ==}
wrangler@4.14.2:
resolution: {integrity: sha512-kD0ilA7WXwhDt1lfyPwppZ2/lT9uwDLp93tfqnqrUENmP/uj+5tErzfZY51emtgXZoU1HFK6HytBEYLRCvCiPg==}
engines: {node: '>=18.0.0'}
hasBin: true
peerDependencies:
'@cloudflare/workers-types': ^4.20250424.0
'@cloudflare/workers-types': ^4.20250428.0
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -1304,147 +1304,147 @@ packages:
snapshots:
'@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)(search-insights@2.13.0)':
'@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)(search-insights@2.13.0)':
dependencies:
'@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)(search-insights@2.13.0)
'@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)
'@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)(search-insights@2.13.0)
'@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
'@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)(search-insights@2.13.0)':
'@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)(search-insights@2.13.0)':
dependencies:
'@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)
'@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)
search-insights: 2.13.0
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
'@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)':
'@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)':
dependencies:
'@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)
'@algolia/client-search': 5.23.4
algoliasearch: 5.23.4
'@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)
'@algolia/client-search': 5.24.0
algoliasearch: 5.24.0
'@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)':
'@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)':
dependencies:
'@algolia/client-search': 5.23.4
algoliasearch: 5.23.4
'@algolia/client-search': 5.24.0
algoliasearch: 5.24.0
'@algolia/client-abtesting@5.23.4':
'@algolia/client-abtesting@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/client-analytics@5.23.4':
'@algolia/client-analytics@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/client-common@5.23.4': {}
'@algolia/client-common@5.24.0': {}
'@algolia/client-insights@5.23.4':
'@algolia/client-insights@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/client-personalization@5.23.4':
'@algolia/client-personalization@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/client-query-suggestions@5.23.4':
'@algolia/client-query-suggestions@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/client-search@5.23.4':
'@algolia/client-search@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/ingestion@1.23.4':
'@algolia/ingestion@1.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/monitoring@1.23.4':
'@algolia/monitoring@1.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/recommend@5.23.4':
'@algolia/recommend@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
'@algolia/requester-browser-xhr@5.23.4':
'@algolia/requester-browser-xhr@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-fetch@5.23.4':
'@algolia/requester-fetch@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/client-common': 5.24.0
'@algolia/requester-node-http@5.23.4':
'@algolia/requester-node-http@5.24.0':
dependencies:
'@algolia/client-common': 5.23.4
'@algolia/client-common': 5.24.0
'@babel/helper-string-parser@7.25.9': {}
'@babel/helper-string-parser@7.27.1': {}
'@babel/helper-validator-identifier@7.25.9': {}
'@babel/helper-validator-identifier@7.27.1': {}
'@babel/parser@7.27.0':
'@babel/parser@7.27.1':
dependencies:
'@babel/types': 7.27.0
'@babel/types': 7.27.1
'@babel/types@7.27.0':
'@babel/types@7.27.1':
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
'@cloudflare/kv-asset-handler@0.4.0':
dependencies:
mime: 3.0.0
'@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250424.0)':
'@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250428.0)':
dependencies:
unenv: 2.0.0-rc.15
optionalDependencies:
workerd: 1.20250424.0
workerd: 1.20250428.0
'@cloudflare/workerd-darwin-64@1.20250424.0':
'@cloudflare/workerd-darwin-64@1.20250428.0':
optional: true
'@cloudflare/workerd-darwin-arm64@1.20250424.0':
'@cloudflare/workerd-darwin-arm64@1.20250428.0':
optional: true
'@cloudflare/workerd-linux-64@1.20250424.0':
'@cloudflare/workerd-linux-64@1.20250428.0':
optional: true
'@cloudflare/workerd-linux-arm64@1.20250424.0':
'@cloudflare/workerd-linux-arm64@1.20250428.0':
optional: true
'@cloudflare/workerd-windows-64@1.20250424.0':
'@cloudflare/workerd-windows-64@1.20250428.0':
optional: true
'@cspotcode/source-map-support@0.8.1':
@@ -1453,9 +1453,9 @@ snapshots:
'@docsearch/css@3.8.2': {}
'@docsearch/js@3.8.2(@algolia/client-search@5.23.4)(search-insights@2.13.0)':
'@docsearch/js@3.8.2(@algolia/client-search@5.24.0)(search-insights@2.13.0)':
dependencies:
'@docsearch/react': 3.8.2(@algolia/client-search@5.23.4)(search-insights@2.13.0)
'@docsearch/react': 3.8.2(@algolia/client-search@5.24.0)(search-insights@2.13.0)
preact: 10.26.5
transitivePeerDependencies:
- '@algolia/client-search'
@@ -1464,12 +1464,12 @@ snapshots:
- react-dom
- search-insights
'@docsearch/react@3.8.2(@algolia/client-search@5.23.4)(search-insights@2.13.0)':
'@docsearch/react@3.8.2(@algolia/client-search@5.24.0)(search-insights@2.13.0)':
dependencies:
'@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)(search-insights@2.13.0)
'@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.23.4)(algoliasearch@5.23.4)
'@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)(search-insights@2.13.0)
'@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.24.0)(algoliasearch@5.24.0)
'@docsearch/css': 3.8.2
algoliasearch: 5.23.4
algoliasearch: 5.24.0
optionalDependencies:
search-insights: 2.13.0
transitivePeerDependencies:
@@ -1716,64 +1716,64 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
'@rollup/rollup-android-arm-eabi@4.40.0':
'@rollup/rollup-android-arm-eabi@4.40.2':
optional: true
'@rollup/rollup-android-arm64@4.40.0':
'@rollup/rollup-android-arm64@4.40.2':
optional: true
'@rollup/rollup-darwin-arm64@4.40.0':
'@rollup/rollup-darwin-arm64@4.40.2':
optional: true
'@rollup/rollup-darwin-x64@4.40.0':
'@rollup/rollup-darwin-x64@4.40.2':
optional: true
'@rollup/rollup-freebsd-arm64@4.40.0':
'@rollup/rollup-freebsd-arm64@4.40.2':
optional: true
'@rollup/rollup-freebsd-x64@4.40.0':
'@rollup/rollup-freebsd-x64@4.40.2':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.40.0':
'@rollup/rollup-linux-arm-gnueabihf@4.40.2':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.40.0':
'@rollup/rollup-linux-arm-musleabihf@4.40.2':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.40.0':
'@rollup/rollup-linux-arm64-gnu@4.40.2':
optional: true
'@rollup/rollup-linux-arm64-musl@4.40.0':
'@rollup/rollup-linux-arm64-musl@4.40.2':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.40.0':
'@rollup/rollup-linux-loongarch64-gnu@4.40.2':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.40.0':
'@rollup/rollup-linux-powerpc64le-gnu@4.40.2':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.40.0':
'@rollup/rollup-linux-riscv64-gnu@4.40.2':
optional: true
'@rollup/rollup-linux-riscv64-musl@4.40.0':
'@rollup/rollup-linux-riscv64-musl@4.40.2':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.40.0':
'@rollup/rollup-linux-s390x-gnu@4.40.2':
optional: true
'@rollup/rollup-linux-x64-gnu@4.40.0':
'@rollup/rollup-linux-x64-gnu@4.40.2':
optional: true
'@rollup/rollup-linux-x64-musl@4.40.0':
'@rollup/rollup-linux-x64-musl@4.40.2':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.40.0':
'@rollup/rollup-win32-arm64-msvc@4.40.2':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.40.0':
'@rollup/rollup-win32-ia32-msvc@4.40.2':
optional: true
'@rollup/rollup-win32-x64-msvc@4.40.0':
'@rollup/rollup-win32-x64-msvc@4.40.2':
optional: true
'@shikijs/core@2.5.0':
@@ -1835,7 +1835,7 @@ snapshots:
'@types/mdurl@2.0.0': {}
'@types/node@22.14.1':
'@types/node@22.15.12':
dependencies:
undici-types: 6.21.0
@@ -1845,14 +1845,14 @@ snapshots:
'@ungap/structured-clone@1.3.0': {}
'@vitejs/plugin-vue@5.2.3(vite@5.4.18(@types/node@22.14.1))(vue@3.5.13(typescript@5.4.5))':
'@vitejs/plugin-vue@5.2.3(vite@5.4.19(@types/node@22.15.12))(vue@3.5.13(typescript@5.4.5))':
dependencies:
vite: 5.4.18(@types/node@22.14.1)
vite: 5.4.19(@types/node@22.15.12)
vue: 3.5.13(typescript@5.4.5)
'@vue/compiler-core@3.5.13':
dependencies:
'@babel/parser': 7.27.0
'@babel/parser': 7.27.1
'@vue/shared': 3.5.13
entities: 4.5.0
estree-walker: 2.0.2
@@ -1865,7 +1865,7 @@ snapshots:
'@vue/compiler-sfc@3.5.13':
dependencies:
'@babel/parser': 7.27.0
'@babel/parser': 7.27.1
'@vue/compiler-core': 3.5.13
'@vue/compiler-dom': 3.5.13
'@vue/compiler-ssr': 3.5.13
@@ -1880,13 +1880,13 @@ snapshots:
'@vue/compiler-dom': 3.5.13
'@vue/shared': 3.5.13
'@vue/devtools-api@7.7.5':
'@vue/devtools-api@7.7.6':
dependencies:
'@vue/devtools-kit': 7.7.5
'@vue/devtools-kit': 7.7.6
'@vue/devtools-kit@7.7.5':
'@vue/devtools-kit@7.7.6':
dependencies:
'@vue/devtools-shared': 7.7.5
'@vue/devtools-shared': 7.7.6
birpc: 2.3.0
hookable: 5.5.3
mitt: 3.0.1
@@ -1894,7 +1894,7 @@ snapshots:
speakingurl: 14.0.1
superjson: 2.2.2
'@vue/devtools-shared@7.7.5':
'@vue/devtools-shared@7.7.6':
dependencies:
rfdc: 1.4.1
@@ -1953,21 +1953,21 @@ snapshots:
acorn@8.14.0: {}
algoliasearch@5.23.4:
algoliasearch@5.24.0:
dependencies:
'@algolia/client-abtesting': 5.23.4
'@algolia/client-analytics': 5.23.4
'@algolia/client-common': 5.23.4
'@algolia/client-insights': 5.23.4
'@algolia/client-personalization': 5.23.4
'@algolia/client-query-suggestions': 5.23.4
'@algolia/client-search': 5.23.4
'@algolia/ingestion': 1.23.4
'@algolia/monitoring': 1.23.4
'@algolia/recommend': 5.23.4
'@algolia/requester-browser-xhr': 5.23.4
'@algolia/requester-fetch': 5.23.4
'@algolia/requester-node-http': 5.23.4
'@algolia/client-abtesting': 5.24.0
'@algolia/client-analytics': 5.24.0
'@algolia/client-common': 5.24.0
'@algolia/client-insights': 5.24.0
'@algolia/client-personalization': 5.24.0
'@algolia/client-query-suggestions': 5.24.0
'@algolia/client-search': 5.24.0
'@algolia/ingestion': 1.24.0
'@algolia/monitoring': 1.24.0
'@algolia/recommend': 5.24.0
'@algolia/requester-browser-xhr': 5.24.0
'@algolia/requester-fetch': 5.24.0
'@algolia/requester-node-http': 5.24.0
as-table@1.0.55:
dependencies:
@@ -2187,7 +2187,7 @@ snapshots:
mime@3.0.0: {}
miniflare@4.20250424.0:
miniflare@4.20250428.1:
dependencies:
'@cspotcode/source-map-support': 0.8.1
acorn: 8.14.0
@@ -2196,7 +2196,7 @@ snapshots:
glob-to-regexp: 0.4.1
stoppable: 1.1.0
undici: 5.29.0
workerd: 1.20250424.0
workerd: 1.20250428.0
ws: 8.18.0
youch: 3.3.4
zod: 3.22.3
@@ -2266,30 +2266,30 @@ snapshots:
rfdc@1.4.1: {}
rollup@4.40.0:
rollup@4.40.2:
dependencies:
'@types/estree': 1.0.7
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.40.0
'@rollup/rollup-android-arm64': 4.40.0
'@rollup/rollup-darwin-arm64': 4.40.0
'@rollup/rollup-darwin-x64': 4.40.0
'@rollup/rollup-freebsd-arm64': 4.40.0
'@rollup/rollup-freebsd-x64': 4.40.0
'@rollup/rollup-linux-arm-gnueabihf': 4.40.0
'@rollup/rollup-linux-arm-musleabihf': 4.40.0
'@rollup/rollup-linux-arm64-gnu': 4.40.0
'@rollup/rollup-linux-arm64-musl': 4.40.0
'@rollup/rollup-linux-loongarch64-gnu': 4.40.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.40.0
'@rollup/rollup-linux-riscv64-gnu': 4.40.0
'@rollup/rollup-linux-riscv64-musl': 4.40.0
'@rollup/rollup-linux-s390x-gnu': 4.40.0
'@rollup/rollup-linux-x64-gnu': 4.40.0
'@rollup/rollup-linux-x64-musl': 4.40.0
'@rollup/rollup-win32-arm64-msvc': 4.40.0
'@rollup/rollup-win32-ia32-msvc': 4.40.0
'@rollup/rollup-win32-x64-msvc': 4.40.0
'@rollup/rollup-android-arm-eabi': 4.40.2
'@rollup/rollup-android-arm64': 4.40.2
'@rollup/rollup-darwin-arm64': 4.40.2
'@rollup/rollup-darwin-x64': 4.40.2
'@rollup/rollup-freebsd-arm64': 4.40.2
'@rollup/rollup-freebsd-x64': 4.40.2
'@rollup/rollup-linux-arm-gnueabihf': 4.40.2
'@rollup/rollup-linux-arm-musleabihf': 4.40.2
'@rollup/rollup-linux-arm64-gnu': 4.40.2
'@rollup/rollup-linux-arm64-musl': 4.40.2
'@rollup/rollup-linux-loongarch64-gnu': 4.40.2
'@rollup/rollup-linux-powerpc64le-gnu': 4.40.2
'@rollup/rollup-linux-riscv64-gnu': 4.40.2
'@rollup/rollup-linux-riscv64-musl': 4.40.2
'@rollup/rollup-linux-s390x-gnu': 4.40.2
'@rollup/rollup-linux-x64-gnu': 4.40.2
'@rollup/rollup-linux-x64-musl': 4.40.2
'@rollup/rollup-win32-arm64-msvc': 4.40.2
'@rollup/rollup-win32-ia32-msvc': 4.40.2
'@rollup/rollup-win32-x64-msvc': 4.40.2
fsevents: 2.3.3
safe-buffer@5.1.2: {}
@@ -2433,26 +2433,26 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
vite@5.4.18(@types/node@22.14.1):
vite@5.4.19(@types/node@22.15.12):
dependencies:
esbuild: 0.21.5
postcss: 8.5.3
rollup: 4.40.0
rollup: 4.40.2
optionalDependencies:
'@types/node': 22.14.1
'@types/node': 22.15.12
fsevents: 2.3.3
vitepress@1.6.3(@algolia/client-search@5.23.4)(@types/node@22.14.1)(postcss@8.5.3)(search-insights@2.13.0)(typescript@5.4.5):
vitepress@1.6.3(@algolia/client-search@5.24.0)(@types/node@22.15.12)(postcss@8.5.3)(search-insights@2.13.0)(typescript@5.4.5):
dependencies:
'@docsearch/css': 3.8.2
'@docsearch/js': 3.8.2(@algolia/client-search@5.23.4)(search-insights@2.13.0)
'@docsearch/js': 3.8.2(@algolia/client-search@5.24.0)(search-insights@2.13.0)
'@iconify-json/simple-icons': 1.2.33
'@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.3(vite@5.4.18(@types/node@22.14.1))(vue@3.5.13(typescript@5.4.5))
'@vue/devtools-api': 7.7.5
'@vitejs/plugin-vue': 5.2.3(vite@5.4.19(@types/node@22.15.12))(vue@3.5.13(typescript@5.4.5))
'@vue/devtools-api': 7.7.6
'@vue/shared': 3.5.13
'@vueuse/core': 12.8.2(typescript@5.4.5)
'@vueuse/integrations': 12.8.2(focus-trap@7.6.4)(typescript@5.4.5)
@@ -2460,7 +2460,7 @@ snapshots:
mark.js: 8.11.1
minisearch: 7.1.2
shiki: 2.5.0
vite: 5.4.18(@types/node@22.14.1)
vite: 5.4.19(@types/node@22.15.12)
vue: 3.5.13(typescript@5.4.5)
optionalDependencies:
postcss: 8.5.3
@@ -2501,24 +2501,24 @@ snapshots:
optionalDependencies:
typescript: 5.4.5
workerd@1.20250424.0:
workerd@1.20250428.0:
optionalDependencies:
'@cloudflare/workerd-darwin-64': 1.20250424.0
'@cloudflare/workerd-darwin-arm64': 1.20250424.0
'@cloudflare/workerd-linux-64': 1.20250424.0
'@cloudflare/workerd-linux-arm64': 1.20250424.0
'@cloudflare/workerd-windows-64': 1.20250424.0
'@cloudflare/workerd-darwin-64': 1.20250428.0
'@cloudflare/workerd-darwin-arm64': 1.20250428.0
'@cloudflare/workerd-linux-64': 1.20250428.0
'@cloudflare/workerd-linux-arm64': 1.20250428.0
'@cloudflare/workerd-windows-64': 1.20250428.0
wrangler@4.13.1:
wrangler@4.14.2:
dependencies:
'@cloudflare/kv-asset-handler': 0.4.0
'@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250424.0)
'@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250428.0)
blake3-wasm: 2.1.5
esbuild: 0.25.2
miniflare: 4.20250424.0
miniflare: 4.20250428.1
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.15
workerd: 1.20250424.0
workerd: 1.20250428.0
optionalDependencies:
fsevents: 2.3.3
sharp: 0.33.5

View File

@@ -11,29 +11,30 @@
"build": "wrangler deploy --dry-run --outdir dist --minify"
},
"devDependencies": {
"@cloudflare/workers-types": "^4.20250424.0",
"@cloudflare/workers-types": "^4.20250506.0",
"@eslint/js": "9.18.0",
"@simplewebauthn/types": "10.0.0",
"eslint": "9.18.0",
"globals": "^15.15.0",
"typescript-eslint": "^8.31.0",
"wrangler": "^4.13.1"
"typescript-eslint": "^8.32.0",
"wrangler": "^4.14.2"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.787.0",
"@aws-sdk/s3-request-presigner": "^3.787.0",
"@aws-sdk/client-s3": "^3.803.0",
"@aws-sdk/s3-request-presigner": "^3.803.0",
"@simplewebauthn/server": "10.0.1",
"hono": "^4.7.7",
"hono": "^4.7.8",
"jsonpath-plus": "^10.3.0",
"mimetext": "^3.0.27",
"postal-mime": "^2.4.3",
"resend": "^4.4.1",
"resend": "^4.5.1",
"telegraf": "4.16.3",
"worker-mailer": "^1.1.3"
"worker-mailer": "^1.1.4"
},
"pnpm": {
"patchedDependencies": {
"telegraf@4.16.3": "patches/telegraf@4.16.3.patch"
}
}
},
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"
}

584
worker/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,4 @@
import { Context } from "hono";
import { HonoCustomType } from "../types";
import { handleListQuery } from "../common";
export default {

View File

@@ -4,7 +4,6 @@ import { CONSTANTS } from '../constants';
import { getJsonSetting, saveSetting, checkUserPassword, getDomains, getUserRoles } from '../utils';
import { UserSettings, GeoData, UserInfo } from "../models";
import { handleListQuery } from '../common'
import { HonoCustomType } from '../types';
import UserBindAddressModule from '../user_api/bind_address';
import i18n from '../i18n';

View File

@@ -4,7 +4,6 @@ import { cleanup } from '../common';
import { CONSTANTS } from '../constants';
import { getJsonSetting, saveSetting } from '../utils';
import { CleanupSettings } from '../models';
import { HonoCustomType } from '../types';
export default {
cleanup: async (c: Context<HonoCustomType>) => {

View File

@@ -2,7 +2,6 @@ import { Hono } from 'hono'
import { Jwt } from 'hono/utils/jwt'
import i18n from '../i18n'
import { HonoCustomType } from '../types'
import { sendAdminInternalMail, getJsonSetting, saveSetting, getUserRoles } from '../utils'
import { newAddress, handleListQuery } from '../common'
import { CONSTANTS } from '../constants'

View File

@@ -1,5 +1,4 @@
import { Context } from "hono";
import { HonoCustomType, ParsedEmailContext } from "../types";
import { CONSTANTS } from "../constants";
import { WebhookSettings } from "../models";
import { commonParseMail, sendWebhook } from "../common";

View File

@@ -2,7 +2,6 @@ import { Context } from 'hono';
import { CONSTANTS } from '../constants';
import { UserOauth2Settings } from "../models";
import { HonoCustomType } from '../types';
import { getJsonSetting, saveSetting } from '../utils';
async function getUserOauth2Settings(c: Context<HonoCustomType>): Promise<Response> {

View File

@@ -1,5 +1,4 @@
import { Context } from "hono";
import { HonoCustomType } from "../types";
import { sendMail } from "../mails_api/send_mail_api";
export const sendMailbyAdmin = async (c: Context<HonoCustomType>) => {

View File

@@ -1,5 +1,4 @@
import { Context } from "hono";
import { HonoCustomType } from "../types";
import { CONSTANTS } from "../constants";
import { AdminWebhookSettings } from "../models";

View File

@@ -1,7 +1,6 @@
import { Context } from 'hono';
import { HonoCustomType } from '../types';
import { getAdminPasswords, getBooleanValue, getDefaultDomains, getDomains, getIntValue, getPasswords, getStringArray, getStringValue, getUserRoles, getSubdomainForwardAddressList, getAnotherWorkerList, getSplitStringListValue } from '../utils';
import utils from '../utils';
import { CONSTANTS } from '../constants';
import { isS3Enabled } from '../mails_api/s3_attachment';
@@ -10,49 +9,49 @@ export default {
return c.json({
"DEFAULT_LANG": c.env.DEFAULT_LANG,
"TITLE": c.env.TITLE,
"HAS_PASSWORD": getPasswords(c).length,
"HAS_ADMIN_PASSWORDS": getAdminPasswords(c).length,
"ANNOUNCEMENT": getStringValue(c.env.ANNOUNCEMENT),
"HAS_PASSWORD": utils.getPasswords(c).length,
"HAS_ADMIN_PASSWORDS": utils.getAdminPasswords(c).length,
"ANNOUNCEMENT": utils.getStringValue(c.env.ANNOUNCEMENT),
"PREFIX": getStringValue(c.env.PREFIX),
"ADDRESS_CHECK_REGEX": getStringValue(c.env.ADDRESS_CHECK_REGEX),
"ADDRESS_REGEX": getStringValue(c.env.ADDRESS_REGEX),
"MIN_ADDRESS_LEN": getIntValue(c.env.MIN_ADDRESS_LEN, 1),
"MAX_ADDRESS_LEN": getIntValue(c.env.MAX_ADDRESS_LEN, 30),
"PREFIX": utils.getStringValue(c.env.PREFIX),
"ADDRESS_CHECK_REGEX": utils.getStringValue(c.env.ADDRESS_CHECK_REGEX),
"ADDRESS_REGEX": utils.getStringValue(c.env.ADDRESS_REGEX),
"MIN_ADDRESS_LEN": utils.getIntValue(c.env.MIN_ADDRESS_LEN, 1),
"MAX_ADDRESS_LEN": utils.getIntValue(c.env.MAX_ADDRESS_LEN, 30),
"FORWARD_ADDRESS_LIST": getStringArray(c.env.FORWARD_ADDRESS_LIST),
"SUBDOMAIN_FORWARD_ADDRESS_LIST": getSubdomainForwardAddressList(c),
"DEFAULT_DOMAINS": getDefaultDomains(c),
"DOMAINS": getDomains(c),
"DOMAIN_LABELS": getStringArray(c.env.DOMAIN_LABELS),
"FORWARD_ADDRESS_LIST": utils.getStringArray(c.env.FORWARD_ADDRESS_LIST),
"SUBDOMAIN_FORWARD_ADDRESS_LIST": utils.getJsonObjectValue<SubdomainForwardAddressList[]>(c.env.SUBDOMAIN_FORWARD_ADDRESS_LIST),
"DEFAULT_DOMAINS": utils.getDefaultDomains(c),
"DOMAINS": utils.getDomains(c),
"DOMAIN_LABELS": utils.getStringArray(c.env.DOMAIN_LABELS),
"HAS_JWT_SECRET": !!getStringValue(c.env.JWT_SECRET),
"HAS_JWT_SECRET": !!utils.getStringValue(c.env.JWT_SECRET),
"ADMIN_USER_ROLE": getStringValue(c.env.ADMIN_USER_ROLE),
"USER_DEFAULT_ROLE": getStringValue(c.env.USER_DEFAULT_ROLE),
"USER_ROLES": getUserRoles(c),
"NO_LIMIT_SEND_ROLE": getSplitStringListValue(c.env.NO_LIMIT_SEND_ROLE),
"ADMIN_USER_ROLE": utils.getStringValue(c.env.ADMIN_USER_ROLE),
"USER_DEFAULT_ROLE": utils.getStringValue(c.env.USER_DEFAULT_ROLE),
"USER_ROLES": utils.getUserRoles(c),
"NO_LIMIT_SEND_ROLE": utils.getSplitStringListValue(c.env.NO_LIMIT_SEND_ROLE),
"ADMIN_CONTACT": c.env.ADMIN_CONTACT,
"ENABLE_USER_CREATE_EMAIL": getBooleanValue(c.env.ENABLE_USER_CREATE_EMAIL),
"DISABLE_ANONYMOUS_USER_CREATE_EMAIL": getBooleanValue(c.env.DISABLE_ANONYMOUS_USER_CREATE_EMAIL),
"ENABLE_USER_DELETE_EMAIL": getBooleanValue(c.env.ENABLE_USER_DELETE_EMAIL),
"ENABLE_AUTO_REPLY": getBooleanValue(c.env.ENABLE_AUTO_REPLY),
"ENABLE_USER_CREATE_EMAIL": utils.getBooleanValue(c.env.ENABLE_USER_CREATE_EMAIL),
"DISABLE_ANONYMOUS_USER_CREATE_EMAIL": utils.getBooleanValue(c.env.DISABLE_ANONYMOUS_USER_CREATE_EMAIL),
"ENABLE_USER_DELETE_EMAIL": utils.getBooleanValue(c.env.ENABLE_USER_DELETE_EMAIL),
"ENABLE_AUTO_REPLY": utils.getBooleanValue(c.env.ENABLE_AUTO_REPLY),
"COPYRIGHT": c.env.COPYRIGHT,
"ENABLE_WEBHOOK": getBooleanValue(c.env.ENABLE_WEBHOOK),
"ENABLE_WEBHOOK": utils.getBooleanValue(c.env.ENABLE_WEBHOOK),
"S3_ENABLED": isS3Enabled(c),
"VERSION": CONSTANTS.VERSION,
"DISABLE_SHOW_GITHUB": !getBooleanValue(c.env.DISABLE_SHOW_GITHUB),
"DISABLE_ADMIN_PASSWORD_CHECK": getBooleanValue(c.env.DISABLE_ADMIN_PASSWORD_CHECK),
"ENABLE_CHECK_JUNK_MAIL": getBooleanValue(c.env.ENABLE_CHECK_JUNK_MAIL),
"JUNK_MAIL_CHECK_LIST": getStringArray(c.env.JUNK_MAIL_CHECK_LIST),
"JUNK_MAIL_FORCE_PASS_LIST": getStringArray(c.env.JUNK_MAIL_FORCE_PASS_LIST),
"DISABLE_SHOW_GITHUB": !utils.getBooleanValue(c.env.DISABLE_SHOW_GITHUB),
"DISABLE_ADMIN_PASSWORD_CHECK": utils.getBooleanValue(c.env.DISABLE_ADMIN_PASSWORD_CHECK),
"ENABLE_CHECK_JUNK_MAIL": utils.getBooleanValue(c.env.ENABLE_CHECK_JUNK_MAIL),
"JUNK_MAIL_CHECK_LIST": utils.getStringArray(c.env.JUNK_MAIL_CHECK_LIST),
"JUNK_MAIL_FORCE_PASS_LIST": utils.getStringArray(c.env.JUNK_MAIL_FORCE_PASS_LIST),
"REMOVE_EXCEED_SIZE_ATTACHMENT": getBooleanValue(c.env.REMOVE_EXCEED_SIZE_ATTACHMENT),
"REMOVE_ALL_ATTACHMENT": getBooleanValue(c.env.REMOVE_ALL_ATTACHMENT),
"REMOVE_EXCEED_SIZE_ATTACHMENT": utils.getBooleanValue(c.env.REMOVE_EXCEED_SIZE_ATTACHMENT),
"REMOVE_ALL_ATTACHMENT": utils.getBooleanValue(c.env.REMOVE_ALL_ATTACHMENT),
"ENABLE_ANOTHER_WORKER": getBooleanValue(c.env.ENABLE_ANOTHER_WORKER),
"ANOTHER_WORKER_LIST": getAnotherWorkerList(c),
"ENABLE_ANOTHER_WORKER": utils.getBooleanValue(c.env.ENABLE_ANOTHER_WORKER),
"ANOTHER_WORKER_LIST": utils.getAnotherWorkerList(c),
})
}
}

View File

@@ -2,7 +2,6 @@ import { Hono } from 'hono'
import { getDomains, getPasswords, getBooleanValue, getIntValue, getStringArray, getDefaultDomains, getStringValue } from './utils';
import { CONSTANTS } from './constants';
import { HonoCustomType } from './types';
import { isS3Enabled } from './mails_api/s3_attachment';
const api = new Hono<HonoCustomType>

View File

@@ -2,7 +2,6 @@ import { Context } from 'hono';
import { Jwt } from 'hono/utils/jwt'
import { getBooleanValue, getDomains, getStringValue, getIntValue, getUserRoles, getDefaultDomains, getJsonSetting, getAnotherWorkerList } from './utils';
import { HonoCustomType, UserRole, AnotherWorker, RPCEmailMessage, ParsedEmailContext } from './types';
import { unbindTelegramByAddress } from './telegram_api/common';
import { CONSTANTS } from './constants';
import { AdminWebhookSettings, WebhookMail, WebhookSettings } from './models';

View File

@@ -1,6 +1,5 @@
import { createMimeMessage } from "mimetext";
import { getBooleanValue } from "../utils";
import { Bindings } from "../types";
export const auto_reply = async (message: ForwardableEmailMessage, env: Bindings): Promise<void> => {
const message_id = message.headers.get("Message-ID");

View File

@@ -1,5 +1,4 @@
import { CONSTANTS } from "../constants";
import { Bindings } from "../types";
export const isBlocked = async (from: string, env: Bindings): Promise<boolean> => {
if (env.BLACK_LIST && env.BLACK_LIST.split(",").some(word => from.includes(word))) {

View File

@@ -1,4 +1,3 @@
import { Bindings, ParsedEmailContext } from "../types";
import { getBooleanValue } from "../utils";
import { commonParseMail } from "../common";
import { createMimeMessage } from "mimetext";

View File

@@ -1,4 +1,3 @@
import { Bindings, ParsedEmailContext } from "../types";
import { getBooleanValue, getStringArray } from "../utils";
import { commonParseMail } from "../common";

View File

@@ -1,9 +1,7 @@
import { Context } from "hono";
import { getEnvStringList } from "../utils";
import { getSubdomainForwardAddressList } from "../utils";
import { getEnvStringList, getJsonObjectValue } from "../utils";
import { sendMailToTelegram } from "../telegram_api";
import { Bindings, HonoCustomType, RPCEmailMessage, ParsedEmailContext } from "../types";
import { auto_reply } from "./auto_reply";
import { isBlocked } from "./black_list";
import { triggerWebhook, triggerAnotherWorker, commonParseMail } from "../common";
@@ -70,24 +68,24 @@ async function email(message: ForwardableEmailMessage, env: Bindings, ctx: Execu
// forward subdomain email
try {
// 遍历 FORWARD_ADDRESS_LIST
const subdomainForwardAddressList = getSubdomainForwardAddressList(env.SUBDOMAIN_FORWARD_ADDRESS_LIST)
for (const subdomainForwardAddress of subdomainForwardAddressList) {
// 检查邮件是否匹配 domains
if (subdomainForwardAddress.domains && subdomainForwardAddress.domains.length > 0) {
for (const domain of subdomainForwardAddress.domains) {
if (message.to.endsWith(domain)) {
// 转发邮件
await message.forward(subdomainForwardAddress.forward);
// 支持多邮箱转发收件,不进行截止
// break;
// 遍历 FORWARD_ADDRESS_LIST
const subdomainForwardAddressList = getJsonObjectValue<SubdomainForwardAddressList[]>(env.SUBDOMAIN_FORWARD_ADDRESS_LIST) || [];
for (const subdomainForwardAddress of subdomainForwardAddressList) {
// 检查邮件是否匹配 domains
if (subdomainForwardAddress.domains && subdomainForwardAddress.domains.length > 0) {
for (const domain of subdomainForwardAddress.domains) {
if (message.to.endsWith(domain)) {
// 转发邮件
await message.forward(subdomainForwardAddress.forward);
// 支持多邮箱转发收件,不进行截止
// break;
}
}
} else {
// 如果 domains 为空,则转发所有邮件
await message.forward(subdomainForwardAddress.forward);
}
}
} else {
// 如果 domains 为空,则转发所有邮件
await message.forward(subdomainForwardAddress.forward);
}
}
} catch (error) {
console.error("subdomain forward email error", error);
}

View File

@@ -1,7 +1,6 @@
import { LocaleMessages } from "./type";
import zh from "./zh";
import en from "./en";
import { HonoCustomType } from "../types";
import { Context } from "hono";
export default {

View File

@@ -1,6 +1,5 @@
import { Context } from "hono";
import { getBooleanValue } from "../utils";
import { HonoCustomType } from "../types";
export default {

View File

@@ -1,7 +1,6 @@
import { Hono } from 'hono'
import i18n from '../i18n';
import { HonoCustomType } from "../types";
import { getBooleanValue, getJsonSetting, checkCfTurnstile, getStringValue, getSplitStringListValue } from '../utils';
import { newAddress, handleListQuery, deleteAddressWithData, getAddressPrefix, getAllowDomains } from '../common'
import { CONSTANTS } from '../constants'

View File

@@ -1,4 +1,3 @@
import { HonoCustomType } from "../types";
import { Context } from "hono";
import {
S3Client,

View File

@@ -9,7 +9,6 @@ import { CONSTANTS } from '../constants'
import { getJsonSetting, getDomains, getIntValue, getBooleanValue, getStringValue, getJsonObjectValue, getSplitStringListValue } from '../utils';
import { GeoData } from '../models'
import { handleListQuery } from '../common'
import { HonoCustomType } from '../types';
export const api = new Hono<HonoCustomType>()

View File

@@ -1,8 +1,6 @@
import { Context } from "hono";
import { HonoCustomType, ParsedEmailContext } from "../types";
import { CONSTANTS } from "../constants";
import { AdminWebhookSettings, WebhookSettings } from "../models";
import { getBooleanValue } from "../utils";
import { commonParseMail, sendWebhook } from "../common";

View File

@@ -3,7 +3,6 @@ import { cleanup } from './common'
import { CONSTANTS } from './constants'
import { getJsonSetting } from './utils';
import { CleanupSettings } from './models';
import { Bindings, HonoCustomType } from './types';
export async function scheduled(event: ScheduledEvent, env: Bindings, ctx: any) {
console.log("Scheduled event: ", event);

View File

@@ -1,7 +1,6 @@
import { Context } from "hono";
import { Jwt } from "hono/utils/jwt";
import { CONSTANTS } from "../constants";
import { HonoCustomType } from "../types";
import { getIntValue, getJsonSetting } from "../utils";
import { deleteAddressWithData, newAddress } from "../common";

View File

@@ -2,7 +2,6 @@ import { Hono } from 'hono'
import { ServerResponse } from 'node:http'
import { Writable } from 'node:stream'
import { HonoCustomType } from '../types'
import { newTelegramBot, initTelegramBotCommands, sendMailToTelegram } from './telegram'
import settings from './settings'
import miniapp from './miniapp'

View File

@@ -1,6 +1,5 @@
import { Context } from "hono";
import { Jwt } from 'hono/utils/jwt'
import { HonoCustomType } from "../types";
import { CONSTANTS } from "../constants";
import { bindTelegramAddress, jwtListToAddressData, tgUserNewAddress, unbindTelegramAddress } from "./common";
import { checkCfTurnstile } from "../utils";

View File

@@ -1,5 +1,4 @@
import { Context } from "hono";
import { HonoCustomType } from "../types";
import { CONSTANTS } from "../constants";
export class TelegramSettings {

View File

@@ -5,7 +5,6 @@ import { callbackQuery } from "telegraf/filters";
import { CONSTANTS } from "../constants";
import { getDomains, getJsonObjectValue, getStringValue } from '../utils';
import { HonoCustomType, ParsedEmailContext } from "../types";
import { TelegramSettings } from "./settings";
import { bindTelegramAddress, deleteTelegramAddress, jwtListToAddressData, tgUserNewAddress, unbindTelegramAddress, unbindTelegramByAddress } from "./common";
import { commonParseMail } from "../common";

17
worker/src/types.d.ts vendored
View File

@@ -1,15 +1,10 @@
export type UserRole = {
type UserRole = {
domains: string[] | undefined | null,
role: string,
prefix: string | undefined | null
}
export type SubdomainForwardAddressList = {
domains: string[] | undefined | null,
forward: string
}
export type Bindings = {
type Bindings = {
// bindings
DB: D1Database
KV: KVNamespace
@@ -49,7 +44,6 @@ export type Bindings = {
COPYRIGHT: string | undefined
DISABLE_SHOW_GITHUB: string | boolean | undefined
FORWARD_ADDRESS_LIST: string | string[] | undefined
SUBDOMAIN_FORWARD_ADDRESS_LIST: string | SubdomainForwardAddressList[] | undefined
ENABLE_CHECK_JUNK_MAIL: string | boolean | undefined
JUNK_MAIL_CHECK_LIST: string | string[] | undefined
@@ -58,6 +52,8 @@ export type Bindings = {
ENABLE_ANOTHER_WORKER: string | boolean | undefined
ANOTHER_WORKER_LIST: string | AnotherWorker[] | undefined
SUBDOMAIN_FORWARD_ADDRESS_LIST: string | SubdomainForwardAddressList[] | undefined
REMOVE_ALL_ATTACHMENT: string | boolean | undefined
REMOVE_EXCEED_SIZE_ATTACHMENT: string | boolean | undefined
@@ -135,3 +131,8 @@ type ParsedEmailContext = {
headers?: Record<string, string>[]
} | undefined
}
type SubdomainForwardAddressList = {
domains: string[] | undefined | null,
forward: string,
}

View File

@@ -1,7 +1,6 @@
import { Context } from 'hono';
import { Jwt } from 'hono/utils/jwt'
import { HonoCustomType } from '../types';
import { UserSettings } from "../models";
import { getJsonSetting } from "../utils"
import { CONSTANTS } from "../constants";

View File

@@ -1,6 +1,5 @@
import { Hono } from 'hono';
import { HonoCustomType } from '../types';
import settings from './settings';
import user from './user';
import bind_address from './bind_address';

View File

@@ -2,7 +2,6 @@ import { Context } from 'hono';
import { Jwt } from 'hono/utils/jwt'
import i18n from '../i18n';
import { HonoCustomType } from '../types';
import { getJsonSetting } from '../utils';
import { UserOauth2Settings } from '../models';
import { CONSTANTS } from '../constants';

View File

@@ -7,7 +7,6 @@ import {
verifyAuthenticationResponse
} from '@simplewebauthn/server';
import { HonoCustomType } from '../types';
import { Passkey } from '../models';
import { PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types';
import { isoBase64URL } from '@simplewebauthn/server/helpers';

View File

@@ -1,7 +1,6 @@
import { Context } from "hono";
import i18n from "../i18n";
import { HonoCustomType } from "../types";
import { UserOauth2Settings, UserSettings } from "../models";
import { getJsonSetting, getUserRoles } from "../utils"
import { CONSTANTS } from "../constants";

View File

@@ -2,7 +2,6 @@ import { Context } from 'hono';
import { Jwt } from 'hono/utils/jwt'
import i18n from '../i18n';
import { HonoCustomType } from '../types';
import { checkCfTurnstile, getJsonSetting, checkUserPassword, getUserRoles, getStringValue } from "../utils"
import { CONSTANTS } from "../constants";
import { GeoData, UserInfo, UserSettings } from "../models";

View File

@@ -1,6 +1,5 @@
import { Context } from "hono";
import { handleListQuery } from "../common";
import { HonoCustomType } from "../types";
import UserBindAddressModule from "./bind_address";
export default {

View File

@@ -1,6 +1,5 @@
import { Context } from "hono";
import { createMimeMessage } from "mimetext";
import { HonoCustomType, UserRole, SubdomainForwardAddressList, AnotherWorker } from "./types";
export const getJsonObjectValue = <T = any>(
value: string | any
@@ -165,22 +164,6 @@ export const getUserRoles = (c: Context<HonoCustomType>): UserRole[] => {
return c.env.USER_ROLES;
}
export const getSubdomainForwardAddressList = (c: Context<HonoCustomType>): SubdomainForwardAddressList[] => {
if (!c.env.SUBDOMAIN_FORWARD_ADDRESS_LIST) {
return [];
}
// check if SUBDOMAIN_FORWARD_ADDRESS_LIST is an array, if not use json.parse
if (!Array.isArray(c.env.SUBDOMAIN_FORWARD_ADDRESS_LIST)) {
try {
return JSON.parse(c.env.SUBDOMAIN_FORWARD_ADDRESS_LIST);
} catch (e) {
console.error("Failed to parse SUBDOMAIN_FORWARD_ADDRESS_LIST", e);
return [];
}
}
return c.env.SUBDOMAIN_FORWARD_ADDRESS_LIST;
}
export const getAnotherWorkerList = (c: Context<HonoCustomType>): AnotherWorker[] => {
if (!c.env.ANOTHER_WORKER_LIST) {
return [];
@@ -312,3 +295,27 @@ export const checkUserPassword = (password: string) => {
}
return true;
}
export default {
getJsonObjectValue,
getSetting,
saveSetting,
getStringValue,
getSplitStringListValue,
getBooleanValue,
getIntValue,
getStringArray,
getDefaultDomains,
getDomains,
getUserRoles,
getAnotherWorkerList,
getPasswords,
getAdminPasswords,
getEnvStringList,
sendAdminInternalMail,
checkCfTurnstile,
checkUserPassword,
getJsonSetting,
getJsonValue: getJsonObjectValue,
getStringList: getStringArray
}

View File

@@ -14,7 +14,6 @@ import i18n from './i18n';
import { email } from './email';
import { scheduled } from './scheduled';
import { getAdminPasswords, getPasswords, getBooleanValue, getStringArray } from './utils';
import { HonoCustomType, UserPayload } from './types';
const API_PATHS = [
"/api/",

View File

@@ -81,7 +81,12 @@ ENABLE_AUTO_REPLY = false
# global forward address list, if set, all emails will be forwarded to these addresses
# FORWARD_ADDRESS_LIST = ["xxx@xxx.com"]
# subdomain forward address list, if set, subdomain emails will be forwarded to these addresses
# SUBDOMAIN_FORWARD_ADDRESS_LIST = [{"domains":[""],"forward":"xxx1@xxx.com",},{"domains":["subdomain-1.domain.com","subdomain-2.domain.com"],"forward":"xxx2@xxx.com"}]
# SUBDOMAIN_FORWARD_ADDRESS_LIST = """
# [
# {"domains":[""],"forward":"xxx1@xxx.com"},
# {"domains":["subdomain-1.domain.com","subdomain-2.domain.com"],"forward":"xxx2@xxx.com"}
# ]
# """
# Frontend URL
# FRONTEND_URL = "https://xxxx.xxx"
# Enable check junk mail