diff --git a/.github/workflows/backend_deploy.yaml b/.github/workflows/backend_deploy.yaml index 749d760a..5fdd9cc5 100644 --- a/.github/workflows/backend_deploy.yaml +++ b/.github/workflows/backend_deploy.yaml @@ -32,6 +32,14 @@ jobs: - name: Deploy Backend for ${{ github.ref_name }} run: | + export use_worker_assets=${{ secrets.USE_WORKER_ASSETS }} + if [ -n "$use_worker_assets" ]; then + cd frontend/ + pnpm install --no-frozen-lockfile + pnpm build:pages + cd .. + fi + export debug_mode=${{ secrets.DEBUG_MODE }} export use_mail_wasm_parser=${{ secrets.BACKEND_USE_MAIL_WASM_PARSER }} cd worker/ diff --git a/frontend/package.json b/frontend/package.json index 3fe80023..44c609fe 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -47,6 +47,6 @@ "vite-plugin-wasm": "^3.4.1", "workbox-build": "^7.3.0", "workbox-window": "^7.3.0", - "wrangler": "^4.7.2" + "wrangler": "^4.9.1" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index fe9f067f..624e8248 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -88,8 +88,8 @@ importers: specifier: ^7.3.0 version: 7.3.0 wrangler: - specifier: ^4.7.2 - version: 4.7.2 + specifier: ^4.9.1 + version: 4.9.1 packages: @@ -601,32 +601,32 @@ packages: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20250404.0': - resolution: {integrity: sha512-+z67wjimn7pZDJI5Ibt2TtNxreFJdFPd5dBMmQqtIfkwrlIsL4PkjHYdiffO7guFP9UygomThuKUaBOU4JA15Q==} + '@cloudflare/workerd-darwin-64@1.20250408.0': + resolution: {integrity: sha512-bxhIwBWxaNItZLXDNOKY2dCv0FHjDiDkfJFpwv4HvtvU5MKcrivZHVmmfDzLW85rqzfcDOmKbZeMPVfiKxdBZw==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20250404.0': - resolution: {integrity: sha512-MxFuWqR5bMcc92khreSlYOJxr0OIlJxABdrWQsaogWsxI6p7Df9gV1T36pqg+ERa9fVhkkGERkalt9DJYyYicA==} + '@cloudflare/workerd-darwin-arm64@1.20250408.0': + resolution: {integrity: sha512-5XZ2Oykr8bSo7zBmERtHh18h5BZYC/6H1YFWVxEj3PtalF3+6SHsO4KZsbGvDml9Pu7sHV277jiZE5eny8Hlyw==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20250404.0': - resolution: {integrity: sha512-f4rNJ45376vGB6WHmxxiZ50nmxMws337EvWthhNAZTyeoTYmJUbZjjWCaHR8clWXN8LLK1Tu1bkjsih730X41g==} + '@cloudflare/workerd-linux-64@1.20250408.0': + resolution: {integrity: sha512-WbgItXWln6G5d7GvYLWcuOzAVwafysZaWunH3UEfsm95wPuRofpYnlDD861gdWJX10IHSVgMStGESUcs7FLerQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20250404.0': - resolution: {integrity: sha512-UW54a/vZG6W1oiA9PUSatQ0LLWrxnwAX7rN/bCFLiT6n51PP8KgpM1LzrIvQM80WjH/ufqopZJe/TSgrrSss6Q==} + '@cloudflare/workerd-linux-arm64@1.20250408.0': + resolution: {integrity: sha512-pAhEywPPvr92SLylnQfZEPgXz+9pOG9G9haAPLpEatncZwYiYd9yiR6HYWhKp2erzCoNrOqKg9IlQwU3z1IDiw==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20250404.0': - resolution: {integrity: sha512-AJJP8vjJ6ioBzqUxVyByv5tE74z5LZ7G5To7w7dtYjWvKZzFo39bZZwGCGryHmH4yaOylXubFv72YVH8+Y4GSQ==} + '@cloudflare/workerd-windows-64@1.20250408.0': + resolution: {integrity: sha512-nJ3RjMKGae2aF2rZ/CNeBvQPM+W5V1SUK0FYWG/uomyr7uQ2l4IayHna1ODg/OHHTEgIjwom0Mbn58iXb0WOcQ==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -1812,8 +1812,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.132: - resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} + electron-to-chromium@1.5.134: + resolution: {integrity: sha512-zSwzrLg3jNP3bwsLqWHmS5z2nIOQ5ngMnfMZOWWtXnqqQkPVyOipxK98w+1beLw1TB+EImPNcG8wVP/cLVs2Og==} entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -2329,8 +2329,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - miniflare@4.20250404.0: - resolution: {integrity: sha512-OeNnXrOdgSoN5iDA+u1Ue3etOyPY89BJFFizMgGEPJvGTYL+kZhKqeBKeZiZIS7xjjlrfXNqleYGnCyomQ1pDQ==} + miniflare@4.20250408.0: + resolution: {integrity: sha512-h1FAK1l/RzZyhGAeLKD+XawWBWowY8tjOcj0Yz8RmCpZ5xBfl255O5eGw4Xk1rcpgxyEB0qiaL2CmV9HAyMfhw==} engines: {node: '>=18.0.0'} hasBin: true @@ -2761,8 +2761,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} @@ -2797,8 +2797,8 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - unimport@4.1.3: - resolution: {integrity: sha512-H+IVJ7rAkE3b+oC8rSJ2FsPaVsweeMC8eKZc+C6Mz7+hxDF45AnrY/tVCNRBvzMwWNcJEV67WdAVcal27iMjOw==} + unimport@4.2.0: + resolution: {integrity: sha512-mYVtA0nmzrysnYnyb3ALMbByJ+Maosee2+WyE0puXl+Xm2bUwPorPaaeZt0ETfuroPOtG8jj1g/qeFZ6buFnag==} engines: {node: '>=18.12.0'} unique-string@2.0.0: @@ -3035,17 +3035,17 @@ packages: workbox-window@7.3.0: resolution: {integrity: sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==} - workerd@1.20250404.0: - resolution: {integrity: sha512-dvXsRdy49/vd4nPENpTDFjbPvR3XdPa8lJrxcnDKL1XtoioYXflq3ys8ljuu+X71ojqAAjnQj62AzrmmKM095g==} + workerd@1.20250408.0: + resolution: {integrity: sha512-bBUX+UsvpzAqiWFNeZrlZmDGddiGZdBBbftZJz2wE6iUg/cIAJeVQYTtS/3ahaicguoLBz4nJiDo8luqM9fx1A==} engines: {node: '>=16'} hasBin: true - wrangler@4.7.2: - resolution: {integrity: sha512-fK9h7PL8wrrdSLCFXVDotoSHOebRmdNdB4VRkUDWOIyiP0Dx54TBfXTt3bXB98EYx7VT+vj6CNVnEC8gSCxt0w==} + wrangler@4.9.1: + resolution: {integrity: sha512-wBV0OKFp+4Ii4bFIIBRm1JJi1od5KGhzsUjWw+2jtlX/H0n2TkdskMDQtrOdV9ybFKj2h+v93VxhAEBePghAkQ==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20250404.0 + '@cloudflare/workers-types': ^4.20250408.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -3734,25 +3734,25 @@ snapshots: dependencies: mime: 3.0.0 - '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250404.0)': + '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250408.0)': dependencies: unenv: 2.0.0-rc.15 optionalDependencies: - workerd: 1.20250404.0 + workerd: 1.20250408.0 - '@cloudflare/workerd-darwin-64@1.20250404.0': + '@cloudflare/workerd-darwin-64@1.20250408.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20250404.0': + '@cloudflare/workerd-darwin-arm64@1.20250408.0': optional: true - '@cloudflare/workerd-linux-64@1.20250404.0': + '@cloudflare/workerd-linux-64@1.20250408.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20250404.0': + '@cloudflare/workerd-linux-arm64@1.20250408.0': optional: true - '@cloudflare/workerd-windows-64@1.20250404.0': + '@cloudflare/workerd-windows-64@1.20250408.0': optional: true '@cspotcode/source-map-support@0.8.1': @@ -4597,7 +4597,7 @@ snapshots: browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001712 - electron-to-chromium: 1.5.132 + electron-to-chromium: 1.5.134 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -4772,7 +4772,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.132: {} + electron-to-chromium@1.5.134: {} entities@4.5.0: {} @@ -5357,7 +5357,7 @@ snapshots: mime@3.0.0: {} - miniflare@4.20250404.0: + miniflare@4.20250408.0: dependencies: '@cspotcode/source-map-support': 0.8.1 acorn: 8.14.0 @@ -5366,7 +5366,7 @@ snapshots: glob-to-regexp: 0.4.1 stoppable: 1.1.0 undici: 5.29.0 - workerd: 1.20250404.0 + workerd: 1.20250408.0 ws: 8.18.0 youch: 3.3.4 zod: 3.22.3 @@ -5387,7 +5387,7 @@ snapshots: acorn: 8.14.1 pathe: 2.0.3 pkg-types: 1.3.1 - ufo: 1.5.4 + ufo: 1.6.1 ms@2.1.3: {} @@ -5916,7 +5916,7 @@ snapshots: typescript@5.4.5: optional: true - ufo@1.5.4: {} + ufo@1.6.1: {} unbox-primitive@1.1.0: dependencies: @@ -5938,7 +5938,7 @@ snapshots: exsolve: 1.0.4 ohash: 2.0.11 pathe: 2.0.3 - ufo: 1.5.4 + ufo: 1.6.1 unhead@1.11.20: dependencies: @@ -5958,7 +5958,7 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} - unimport@4.1.3: + unimport@4.2.0: dependencies: acorn: 8.14.1 escape-string-regexp: 5.0.0 @@ -5986,7 +5986,7 @@ snapshots: local-pkg: 1.1.1 magic-string: 0.30.17 picomatch: 4.0.2 - unimport: 4.1.3 + unimport: 4.2.0 unplugin: 2.2.2 unplugin-utils: 0.2.4 optionalDependencies: @@ -6278,24 +6278,24 @@ snapshots: '@types/trusted-types': 2.0.7 workbox-core: 7.3.0 - workerd@1.20250404.0: + workerd@1.20250408.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250404.0 - '@cloudflare/workerd-darwin-arm64': 1.20250404.0 - '@cloudflare/workerd-linux-64': 1.20250404.0 - '@cloudflare/workerd-linux-arm64': 1.20250404.0 - '@cloudflare/workerd-windows-64': 1.20250404.0 + '@cloudflare/workerd-darwin-64': 1.20250408.0 + '@cloudflare/workerd-darwin-arm64': 1.20250408.0 + '@cloudflare/workerd-linux-64': 1.20250408.0 + '@cloudflare/workerd-linux-arm64': 1.20250408.0 + '@cloudflare/workerd-windows-64': 1.20250408.0 - wrangler@4.7.2: + wrangler@4.9.1: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250404.0) + '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250408.0) blake3-wasm: 2.1.5 esbuild: 0.24.2 - miniflare: 4.20250404.0 + miniflare: 4.20250408.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.15 - workerd: 1.20250404.0 + workerd: 1.20250408.0 optionalDependencies: fsevents: 2.3.3 sharp: 0.33.5 diff --git a/pages/functions/_middleware.js b/pages/functions/_middleware.js index a49687e3..a95df437 100644 --- a/pages/functions/_middleware.js +++ b/pages/functions/_middleware.js @@ -3,7 +3,8 @@ const API_PATHS = [ "/open_api/", "/user_api/", "/admin/", - "/telegram/" + "/telegram/", + "/external/", ]; export async function onRequest(context) { diff --git a/pages/package.json b/pages/package.json index 7d7ea582..a63ab441 100644 --- a/pages/package.json +++ b/pages/package.json @@ -11,6 +11,6 @@ "author": "", "license": "ISC", "devDependencies": { - "wrangler": "^4.7.2" + "wrangler": "^4.9.1" } } diff --git a/vitepress-docs/docs/.vitepress/config.ts b/vitepress-docs/docs/.vitepress/config.ts index be9ed5f8..6ca91456 100644 --- a/vitepress-docs/docs/.vitepress/config.ts +++ b/vitepress-docs/docs/.vitepress/config.ts @@ -27,7 +27,6 @@ export default defineConfig({ } }, themeConfig: { - logo: { src: '/logo.png', width: 24, height: 24 }, search: { provider: 'local' }, socialLinks: [ diff --git a/vitepress-docs/docs/.vitepress/en.ts b/vitepress-docs/docs/.vitepress/en.ts index 3d5232b9..c40caa0b 100644 --- a/vitepress-docs/docs/.vitepress/en.ts +++ b/vitepress-docs/docs/.vitepress/en.ts @@ -6,6 +6,7 @@ export const en = defineConfig({ description: 'CloudFlare Free sending and receiving of temporary domain name mailboxes', themeConfig: { + outline: 'deep', nav: nav(), editLink: { diff --git a/vitepress-docs/docs/.vitepress/zh.ts b/vitepress-docs/docs/.vitepress/zh.ts index 719f6ebb..8b86ab63 100644 --- a/vitepress-docs/docs/.vitepress/zh.ts +++ b/vitepress-docs/docs/.vitepress/zh.ts @@ -28,6 +28,7 @@ export const zh = defineConfig({ }, outline: { + level: 'deep', label: '页面导航' }, @@ -121,6 +122,7 @@ function sidebarGuide(): DefaultTheme.SidebarItem[] { text: '通过 Github Actions 部署', collapsed: true, items: [ + { text: 'Github Actions 部署准备', link: 'actions/pre-requisite' }, { text: 'D1 数据库', link: 'actions/d1' }, { text: 'Github Actions 配置', link: 'actions/github-action' }, { text: '配置邮件转发', link: 'email-routing.md' }, diff --git a/vitepress-docs/docs/zh/guide/actions/github-action.md b/vitepress-docs/docs/zh/guide/actions/github-action.md index 984eeb6e..cafb8aa0 100644 --- a/vitepress-docs/docs/zh/guide/actions/github-action.md +++ b/vitepress-docs/docs/zh/guide/actions/github-action.md @@ -7,23 +7,50 @@ ## 部署步骤 -1. 在 GitHub fork 本仓库 +### Fork 仓库并启用 Actions -2. 打开仓库的 `Actions` 页面,找到 `Deploy Backend Production` 和 `Deploy Frontend`,点击 `enable workflow` 启用 `workflow` +- 在 GitHub fork 本仓库 +- 打开仓库的 `Actions` 页面 +- 找到 `Deploy Backend` 点击 `enable workflow` 启用 `workflow` +- 如果需要前后端分离部署, 找到`Deploy Frontend` 点击 `enable workflow` 启用 `workflow` -3. 然后在仓库页面 `Settings` -> `Secrets and variables` -> `Actions` -> `Repository secrets`, 添加以下 `secrets`: +### 配置 Secrets - - `CLOUDFLARE_ACCOUNT_ID`: Cloudflare 账户 ID, [参考文档](https://developers.cloudflare.com/workers/wrangler/ci-cd/#cloudflare-account-id) - - `CLOUDFLARE_API_TOKEN`: Cloudflare API Token, [参考文档](https://developers.cloudflare.com/workers/wrangler/ci-cd/#api-token) - - `BACKEND_TOML`: 后端配置文件,[参考此处](/zh/guide/cli/worker.html#修改-wrangler-toml-配置文件) - - `FRONTEND_ENV`: 前端配置文件,请复制 `frontend/.env.example` 的内容,[并参考此处修改](/zh/guide/cli/pages.html) - - `FRONTEND_NAME`: 你在 Cloudflare Pages 创建的项目名称,可通过 [用户界面](https://temp-mail-docs.awsl.uk/zh/guide/ui/pages.html) 或者 [命令行](https://temp-mail-docs.awsl.uk/zh/guide/cli/pages.html) 创建 - - `FRONTEND_BRANCH`: (可选) pages 部署的分支,可不配置,默认 `production` - - `TG_FRONTEND_NAME`: (可选) 你在 Cloudflare Pages 创建的项目名称,同 `FRONTEND_NAME`,如果需要 Telegram Mini App 功能,请填写 - - `DEBUG_MODE`: (可选) 是否开启调试模式,配置为 `true` 开启, 默认 worker 部署日志不会输出到 Github Actions 页面,开启后会输出 - - `BACKEND_USE_MAIL_WASM_PARSER`: (可选) 是否使用 wasm 解析邮件,配置为 `true` 开启, 功能参考 [配置 worker 使用 wasm 解析邮件](/zh/guide/feature/mail_parser_wasm_worker) +然后在仓库页面 `Settings` -> `Secrets and variables` -> `Actions` -> `Repository secrets`, 添加以下 `secrets`: -4. 打开仓库的 `Actions` 页面,找到 `Deploy Backend Production` 和 `Deploy Frontend`,点击 `Run workflow` 选择分支手动部署 +- 公共 `secrets` + + | 名称 | 说明 | + | ----------------------- | --------------------------------------------------------------------------------------------------------------- | + | `CLOUDFLARE_ACCOUNT_ID` | Cloudflare 账户 ID, [参考文档](https://developers.cloudflare.com/workers/wrangler/ci-cd/#cloudflare-account-id) | + | `CLOUDFLARE_API_TOKEN` | Cloudflare API Token, [参考文档](https://developers.cloudflare.com/workers/wrangler/ci-cd/#api-token) | + +- worker 后端 `secrets` + + | 名称 | 说明 | + | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | + | `BACKEND_TOML` | 后端配置文件,[参考此处](/zh/guide/cli/worker.html#修改-wrangler-toml-配置文件) | + | `DEBUG_MODE` | (可选) 是否开启调试模式,配置为 `true` 开启, 默认 worker 部署日志不会输出到 Github Actions 页面,开启后会输出 | + | `BACKEND_USE_MAIL_WASM_PARSER` | (可选) 是否使用 wasm 解析邮件,配置为 `true` 开启, 功能参考 [配置 worker 使用 wasm 解析邮件](/zh/guide/feature/mail_parser_wasm_worker) | + | `USE_WORKER_ASSETS` | (可选) 部署带有前端资源的 Worker, 配置为 `true` 开启 | + +- pages 前端 `secrets` + + > [!warning] 注意 + > 如果选择部署带有前端资源的 Worker, 则无须配置这些 `secrets` + + | 名称 | 说明 | + | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `FRONTEND_ENV` | 前端配置文件,请复制 `frontend/.env.example` 的内容,[并参考此处修改](/zh/guide/cli/pages.html) | + | `FRONTEND_NAME` | 你在 Cloudflare Pages 创建的项目名称,可通过 [用户界面](https://temp-mail-docs.awsl.uk/zh/guide/ui/pages.html) 或者 [命令行](https://temp-mail-docs.awsl.uk/zh/guide/cli/pages.html) 创建 | + | `FRONTEND_BRANCH` | (可选) pages 部署的分支,可不配置,默认 `production` | + | `TG_FRONTEND_NAME` | (可选) 你在 Cloudflare Pages 创建的项目名称,同 `FRONTEND_NAME`,如果需要 Telegram Mini App 功能,请填写 | + +### 部署 + +- 打开仓库的 `Actions` 页面 +- 找到 `Deploy Backend` 点击 `Run workflow` 选择分支手动部署 +- 如果需要前后端分离部署, 找到 `Deploy Frontend`, 点击 `Run workflow` 选择分支手动部署 ## 如何配置自动更新 diff --git a/vitepress-docs/docs/zh/guide/actions/pre-requisite.md b/vitepress-docs/docs/zh/guide/actions/pre-requisite.md new file mode 100644 index 00000000..b7530d19 --- /dev/null +++ b/vitepress-docs/docs/zh/guide/actions/pre-requisite.md @@ -0,0 +1,10 @@ +# Gihub Actions 部署准备 + +## GitHub 账户 + +- 需要一个 GitHub 账户 +- 良好的网络环境 + +## Fork 仓库 + +- 在 GitHub fork [本仓库](https://github.com/dreamhunter2333/cloudflare_temp_email.git) diff --git a/vitepress-docs/docs/zh/guide/cli/pages.md b/vitepress-docs/docs/zh/guide/cli/pages.md index f04d4596..897144ea 100644 --- a/vitepress-docs/docs/zh/guide/cli/pages.md +++ b/vitepress-docs/docs/zh/guide/cli/pages.md @@ -1,8 +1,11 @@ # Cloudflare Pages 前端 -::: warning -下面两种方式选择一种即可 -::: +> [!warning] 注意 +> 下面几种方式选择一种即可 + +## 部署带有前端资源的 Worker + +参考 [部署 Worker](/zh/guide/cli/worker#部署带有前端页面的-worker-可选) ## 前后端分离部署 diff --git a/vitepress-docs/docs/zh/guide/cli/worker.md b/vitepress-docs/docs/zh/guide/cli/worker.md index 97a22a0e..66fec40c 100644 --- a/vitepress-docs/docs/zh/guide/cli/worker.md +++ b/vitepress-docs/docs/zh/guide/cli/worker.md @@ -1,4 +1,4 @@ -# Cloudflare workers 后端 +# Cloudflare Worker 后端 ## 初始化项目 @@ -36,6 +36,12 @@ compatibility_flags = [ "nodejs_compat" ] # { pattern = "temp-email-api.xxxxx.xyz", custom_domain = true }, # ] +# 如果你想要部署带有前端资源的 worker, 你需要添加 assets 配置 +# [assets] +# directory = "../frontend/dist/" +# binding = "ASSETS" +# run_worker_first = true + # 如果你想要使用定时任务清理邮件,取消下面的注释,并修改 cron 表达式 # [triggers] # crons = [ "0 0 * * *" ] @@ -86,6 +92,29 @@ database_id = "xxx" # D1 数据库 ID # service = "auth-inbox" ``` +## 部署带有前端页面的 worker(可选) + +> [!NOTE] +> 如果不需要 [带有前端页面的 worker],可以跳过此步骤 +> 参考之后部署前端文档,可以进行前后端分离部署 + +确认已构建前端资源到 `frontend/dist` 目录 + +```bash +cd frontend +pnpm install --no-frozen-lockfile +pnpm build:pages +``` + +`worker` 目录下的 `wrangler.toml` 文件中添加下面的配置 + +```toml +[assets] +directory = "../frontend/dist/" +binding = "ASSETS" +run_worker_first = true +``` + ## Telegram Bot 配置 > [!NOTE] diff --git a/vitepress-docs/docs/zh/guide/feature/config-smtp-proxy.md b/vitepress-docs/docs/zh/guide/feature/config-smtp-proxy.md index 06c1d0a4..68f585d0 100644 --- a/vitepress-docs/docs/zh/guide/feature/config-smtp-proxy.md +++ b/vitepress-docs/docs/zh/guide/feature/config-smtp-proxy.md @@ -1,6 +1,6 @@ # 搭建 SMTP IMAP 代理服务 -::: warning +::: warning 注意 如果你使用了 `resend`, 可直接使用 `resend` 的 `SMTP` 服务,不需要使用此服务 ::: diff --git a/vitepress-docs/docs/zh/guide/feature/user-oauth2.md b/vitepress-docs/docs/zh/guide/feature/user-oauth2.md index 4e30ef86..a679fdce 100644 --- a/vitepress-docs/docs/zh/guide/feature/user-oauth2.md +++ b/vitepress-docs/docs/zh/guide/feature/user-oauth2.md @@ -1,6 +1,6 @@ # OAuth2 第三方登录 -> [!WARNING] +> [!WARNING] 注意 > 第三方登录会自动使用用户邮箱注册账号(邮箱相同将视为同一账号) > > 此账号和注册的账号相同, 也可以通过忘记密码设置密码 diff --git a/vitepress-docs/docs/zh/guide/quick-start.md b/vitepress-docs/docs/zh/guide/quick-start.md index 7280e896..f6ed57c5 100644 --- a/vitepress-docs/docs/zh/guide/quick-start.md +++ b/vitepress-docs/docs/zh/guide/quick-start.md @@ -8,7 +8,7 @@ - [通过命令行部署](/zh/guide/cli/pre-requisite) - [通过用户界面部署](/zh/guide/ui/d1) -- [通过Github Actions 部署](/zh/guide/actions/github-action) +- [通过Github Actions 部署](/zh/guide/actions/pre-requisite) ### 也可以参考网友提供的详细的小白教程 diff --git a/vitepress-docs/package.json b/vitepress-docs/package.json index ff01ead7..2bb8cb37 100644 --- a/vitepress-docs/package.json +++ b/vitepress-docs/package.json @@ -6,7 +6,7 @@ "devDependencies": { "@types/node": "^22.14.0", "vitepress": "^1.6.3", - "wrangler": "^4.7.2" + "wrangler": "^4.9.1" }, "scripts": { "dev": "vitepress dev docs", diff --git a/vitepress-docs/pnpm-lock.yaml b/vitepress-docs/pnpm-lock.yaml index 0020a264..2f19e7eb 100644 --- a/vitepress-docs/pnpm-lock.yaml +++ b/vitepress-docs/pnpm-lock.yaml @@ -17,10 +17,10 @@ importers: version: 22.14.0 vitepress: specifier: ^1.6.3 - version: 1.6.3(@algolia/client-search@5.23.2)(@types/node@22.14.0)(postcss@8.5.3)(search-insights@2.13.0)(typescript@5.4.5) + version: 1.6.3(@algolia/client-search@5.23.3)(@types/node@22.14.0)(postcss@8.5.3)(search-insights@2.13.0)(typescript@5.4.5) wrangler: - specifier: ^4.7.2 - version: 4.7.2 + specifier: ^4.9.1 + version: 4.9.1 packages: @@ -44,56 +44,56 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.23.2': - resolution: {integrity: sha512-EudQGeYEzviwqPH8WoqP5VTQssE/PW6sEdL0zzOyKt2bWnWoUp5Rnm67sCbxYDR44JpUchbkul0PfWrSYsBPjQ==} + '@algolia/client-abtesting@5.23.3': + resolution: {integrity: sha512-yHI0hBwYcNPc+nJoHPTmmlP8pG6nstCEhpHaZQCDwLZhdMtNhd1hliZMCtLgNnvd1yKEgTt/ZDnTSdZLehfKdA==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.23.2': - resolution: {integrity: sha512-zmJrkZqWFu+ft+VRcttZZJhw5ElkhBtOArRzQOu9sRnrSSodBOdPRhAfvu8tG93Hv67wh5qQaTBwLxM58AxuMg==} + '@algolia/client-analytics@5.23.3': + resolution: {integrity: sha512-/70Ey+nZm4bRr2DcNrGU251YIn9lDu0g8xeP4jTCyunGRNFZ/d8hQAw9El34pcTpO1QDojJWAi6ywKIrUaks9w==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.23.2': - resolution: {integrity: sha512-xaE6o4BMdqYBe0iB7JjX6G9/Qeqx6TSs9T4d6VJ0JHPsEyklSwIbKRiomPeYD7vzt2P4t45Io6QBhifOUP+0qg==} + '@algolia/client-common@5.23.3': + resolution: {integrity: sha512-fkpbPclIvaiyw3ADKRBCxMZhrNx/8//6DClfWGxeEiTJ0HEEYtHlqE6GjAkEJubz4v1ioCQkhZwMoFfFct2/vQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.23.2': - resolution: {integrity: sha512-F85hpMszbr5ZGt8gFdl7WOugELRF4z3R1nD9n3t7PZ/2alV7IR75UQY8/jMQDwij/lrnVaKbLeIvKKy6K7ncZw==} + '@algolia/client-insights@5.23.3': + resolution: {integrity: sha512-TXc5Ve6QOCihWCTWY9N56CZxF1iovzpBWBUhQhy6JSiUfX3MXceV3saV+sXHQ1NVt2NKkyUfEspYHBsTrYzIDg==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.23.2': - resolution: {integrity: sha512-TuGaGKiQvQqFNR4c3Vdl+JBe6dkEPmRzVyIdWLrurOPEmFmVCKRxtSnLr0TVFl6de/JfDAXuchvtvLHFxv9P2A==} + '@algolia/client-personalization@5.23.3': + resolution: {integrity: sha512-JlReruxxiw9LB53jF/BmvVV+c0thiWQUHRdgtbVIEusvRaiX1IdpWJSPQExEtBQ7VFg89nP8niCzWtA34ktKSA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.23.2': - resolution: {integrity: sha512-fg2tZf7Sf51Icjfrea0dnfbfwlJ7kXMcRsWSJN3DZhEi/Y4mMmK9L0Cq8sby6HDzxy5T8xEWNWC3TMx5FvrJ6w==} + '@algolia/client-query-suggestions@5.23.3': + resolution: {integrity: sha512-GDEExFMXwx0ScE0AZUA4F6ssztdJvGcXUkdWmWyt2hbYz43ukqmlVJqPaYgGmWdjJjvTx+dNF/hcinwWuXbCug==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.23.2': - resolution: {integrity: sha512-XiTjt0qgsJk9OqvDpMwTgUaPAYNSQcMILRfSYiorgiyc71yYM7Lq1vRSVxhB0m51mrViWj4rIR6kSiJRXebqvQ==} + '@algolia/client-search@5.23.3': + resolution: {integrity: sha512-mwofV6tGo0oHt4BPi+S5eLC3wnhOa4A1OVgPxetTxZuetod+2W4cxKavUW2v/Ma5CABXPLooXX+g9E67umELZw==} engines: {node: '>= 14.0.0'} - '@algolia/ingestion@1.23.2': - resolution: {integrity: sha512-7ClIghvUFZTomBipD8Kor9Z5llcAM3lHUBG3VFOvUsOxOJcaMMONlBXyoFDfI1na+u14lVaGehY2oIEfY1eB0w==} + '@algolia/ingestion@1.23.3': + resolution: {integrity: sha512-Zxgmi7Hk4lI52YFphzzJekUqWxYxVjY2GrCpOxV+QiojvUi8Ru+knq6REcwLHFSwpwaDh2Th5pOefMpn4EkQCw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.23.2': - resolution: {integrity: sha512-kF7KKd0iIIlaD70flFS+8+DNxRvIzrG9A22iWG5LDX225Kl6pITroq+qIUweqqyyoqJBYuIXKZGDGtnahEwQxw==} + '@algolia/monitoring@1.23.3': + resolution: {integrity: sha512-zi/IqvsmFW4E5gMaovAE4KRbXQ+LDYpPGG1nHtfuD5u3SSuQ31fT1vX2zqb6PbPTlgJMEmMk91Mbb7fIKmbQUw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.23.2': - resolution: {integrity: sha512-nAgS2O5ww8J4fgW6GAiybAdr0uH7MV74srPdx51cPJRpQBEge4WnYBaOWx1/a53qI0xwNtQudnEyBGUzsSYaAw==} + '@algolia/recommend@5.23.3': + resolution: {integrity: sha512-C9TwbT1zGwULLXGSUSB+G7o/30djacPmQcsTHepvT47PVfPr2ISK/5QVtUnjMU84LEP8uNjuPUeM4ZeWVJ2iuQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.23.2': - resolution: {integrity: sha512-yw6IzgQcwr4cZuoQCEoQui9G0rhVRGCyhPhW+gmrXe6oVr4qB50FV6mWGLA170+iqGVjPn/DVuOhExjBzcViTQ==} + '@algolia/requester-browser-xhr@5.23.3': + resolution: {integrity: sha512-/7oYeUhYzY0lls7WtkAURM6wy21/Wwmq9GdujW1MpoYVC0ATXXxwCiAfOpYL9xdWxLV0R3wjyD+yZEni+nboKg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.23.2': - resolution: {integrity: sha512-8rmSybTwIqmGx3P0qkOEUkkyeIewglaKq6yUnxnVkBJbd4USfIZsw9cME1YUEHeZI7aOhTQg9QteUHSKXclF5A==} + '@algolia/requester-fetch@5.23.3': + resolution: {integrity: sha512-r/4fKz4t+bSU1KdjRq+swdNvuGfJ0spV8aFTHPtcsF+1ZaN/VqmdXrTe5NkaZLSztFeMqKwZlJIVvE7VuGlFtw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.23.2': - resolution: {integrity: sha512-IHpUiW3d3oVE5tCYqQN7X71/EbXI7f8WxU85eWW1UYEWEknqW3csdGctyIW7+qMHFfxeDymI1Wln/gGHHIXLIw==} + '@algolia/requester-node-http@5.23.3': + resolution: {integrity: sha512-UZiTNmUBQFPl3tUKuXaDd8BxEC0t0ny86wwW6XgwfM9IQf4PrzuMpvuOGIJMcCGlrNolZDEI0mcbz/tqRdKW7A==} engines: {node: '>= 14.0.0'} '@babel/helper-string-parser@7.25.9': @@ -126,32 +126,32 @@ packages: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20250404.0': - resolution: {integrity: sha512-+z67wjimn7pZDJI5Ibt2TtNxreFJdFPd5dBMmQqtIfkwrlIsL4PkjHYdiffO7guFP9UygomThuKUaBOU4JA15Q==} + '@cloudflare/workerd-darwin-64@1.20250408.0': + resolution: {integrity: sha512-bxhIwBWxaNItZLXDNOKY2dCv0FHjDiDkfJFpwv4HvtvU5MKcrivZHVmmfDzLW85rqzfcDOmKbZeMPVfiKxdBZw==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20250404.0': - resolution: {integrity: sha512-MxFuWqR5bMcc92khreSlYOJxr0OIlJxABdrWQsaogWsxI6p7Df9gV1T36pqg+ERa9fVhkkGERkalt9DJYyYicA==} + '@cloudflare/workerd-darwin-arm64@1.20250408.0': + resolution: {integrity: sha512-5XZ2Oykr8bSo7zBmERtHh18h5BZYC/6H1YFWVxEj3PtalF3+6SHsO4KZsbGvDml9Pu7sHV277jiZE5eny8Hlyw==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20250404.0': - resolution: {integrity: sha512-f4rNJ45376vGB6WHmxxiZ50nmxMws337EvWthhNAZTyeoTYmJUbZjjWCaHR8clWXN8LLK1Tu1bkjsih730X41g==} + '@cloudflare/workerd-linux-64@1.20250408.0': + resolution: {integrity: sha512-WbgItXWln6G5d7GvYLWcuOzAVwafysZaWunH3UEfsm95wPuRofpYnlDD861gdWJX10IHSVgMStGESUcs7FLerQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20250404.0': - resolution: {integrity: sha512-UW54a/vZG6W1oiA9PUSatQ0LLWrxnwAX7rN/bCFLiT6n51PP8KgpM1LzrIvQM80WjH/ufqopZJe/TSgrrSss6Q==} + '@cloudflare/workerd-linux-arm64@1.20250408.0': + resolution: {integrity: sha512-pAhEywPPvr92SLylnQfZEPgXz+9pOG9G9haAPLpEatncZwYiYd9yiR6HYWhKp2erzCoNrOqKg9IlQwU3z1IDiw==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20250404.0': - resolution: {integrity: sha512-AJJP8vjJ6ioBzqUxVyByv5tE74z5LZ7G5To7w7dtYjWvKZzFo39bZZwGCGryHmH4yaOylXubFv72YVH8+Y4GSQ==} + '@cloudflare/workerd-windows-64@1.20250408.0': + resolution: {integrity: sha512-nJ3RjMKGae2aF2rZ/CNeBvQPM+W5V1SUK0FYWG/uomyr7uQ2l4IayHna1ODg/OHHTEgIjwom0Mbn58iXb0WOcQ==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -857,8 +857,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - algoliasearch@5.23.2: - resolution: {integrity: sha512-IhKP22Czzg8Y9HaF6aIb5aAHK2HBj4VAzLLnKEPUnxqDwxpryH9sXbm0NkeY7Cby9GlF81wF+AG/VulKDFBphg==} + algoliasearch@5.23.3: + resolution: {integrity: sha512-0JlUaY/hl3LrKvbidI5FysEi2ggAlcTHM8AHV2UsrJUXnNo8/lWBfhzc1b7o8bK3YZNiU26JtLyT9exoj5VBgA==} engines: {node: '>= 14.0.0'} as-table@1.0.55: @@ -1031,8 +1031,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - miniflare@4.20250404.0: - resolution: {integrity: sha512-OeNnXrOdgSoN5iDA+u1Ue3etOyPY89BJFFizMgGEPJvGTYL+kZhKqeBKeZiZIS7xjjlrfXNqleYGnCyomQ1pDQ==} + miniflare@4.20250408.0: + resolution: {integrity: sha512-h1FAK1l/RzZyhGAeLKD+XawWBWowY8tjOcj0Yz8RmCpZ5xBfl255O5eGw4Xk1rcpgxyEB0qiaL2CmV9HAyMfhw==} engines: {node: '>=18.0.0'} hasBin: true @@ -1178,8 +1178,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -1266,17 +1266,17 @@ packages: typescript: optional: true - workerd@1.20250404.0: - resolution: {integrity: sha512-dvXsRdy49/vd4nPENpTDFjbPvR3XdPa8lJrxcnDKL1XtoioYXflq3ys8ljuu+X71ojqAAjnQj62AzrmmKM095g==} + workerd@1.20250408.0: + resolution: {integrity: sha512-bBUX+UsvpzAqiWFNeZrlZmDGddiGZdBBbftZJz2wE6iUg/cIAJeVQYTtS/3ahaicguoLBz4nJiDo8luqM9fx1A==} engines: {node: '>=16'} hasBin: true - wrangler@4.7.2: - resolution: {integrity: sha512-fK9h7PL8wrrdSLCFXVDotoSHOebRmdNdB4VRkUDWOIyiP0Dx54TBfXTt3bXB98EYx7VT+vj6CNVnEC8gSCxt0w==} + wrangler@4.9.1: + resolution: {integrity: sha512-wBV0OKFp+4Ii4bFIIBRm1JJi1od5KGhzsUjWw+2jtlX/H0n2TkdskMDQtrOdV9ybFKj2h+v93VxhAEBePghAkQ==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20250404.0 + '@cloudflare/workers-types': ^4.20250408.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -1304,110 +1304,110 @@ packages: snapshots: - '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)(search-insights@2.13.0)': + '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)(search-insights@2.13.0)': + '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3) search-insights: 2.13.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)': + '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) - '@algolia/client-search': 5.23.2 - algoliasearch: 5.23.2 + '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3) + '@algolia/client-search': 5.23.3 + algoliasearch: 5.23.3 - '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)': + '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3)': dependencies: - '@algolia/client-search': 5.23.2 - algoliasearch: 5.23.2 + '@algolia/client-search': 5.23.3 + algoliasearch: 5.23.3 - '@algolia/client-abtesting@5.23.2': + '@algolia/client-abtesting@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/client-analytics@5.23.2': + '@algolia/client-analytics@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/client-common@5.23.2': {} + '@algolia/client-common@5.23.3': {} - '@algolia/client-insights@5.23.2': + '@algolia/client-insights@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/client-personalization@5.23.2': + '@algolia/client-personalization@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/client-query-suggestions@5.23.2': + '@algolia/client-query-suggestions@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/client-search@5.23.2': + '@algolia/client-search@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/ingestion@1.23.2': + '@algolia/ingestion@1.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/monitoring@1.23.2': + '@algolia/monitoring@1.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/recommend@5.23.2': + '@algolia/recommend@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-common': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 - '@algolia/requester-browser-xhr@5.23.2': + '@algolia/requester-browser-xhr@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 + '@algolia/client-common': 5.23.3 - '@algolia/requester-fetch@5.23.2': + '@algolia/requester-fetch@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 + '@algolia/client-common': 5.23.3 - '@algolia/requester-node-http@5.23.2': + '@algolia/requester-node-http@5.23.3': dependencies: - '@algolia/client-common': 5.23.2 + '@algolia/client-common': 5.23.3 '@babel/helper-string-parser@7.25.9': {} @@ -1426,25 +1426,25 @@ snapshots: dependencies: mime: 3.0.0 - '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250404.0)': + '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250408.0)': dependencies: unenv: 2.0.0-rc.15 optionalDependencies: - workerd: 1.20250404.0 + workerd: 1.20250408.0 - '@cloudflare/workerd-darwin-64@1.20250404.0': + '@cloudflare/workerd-darwin-64@1.20250408.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20250404.0': + '@cloudflare/workerd-darwin-arm64@1.20250408.0': optional: true - '@cloudflare/workerd-linux-64@1.20250404.0': + '@cloudflare/workerd-linux-64@1.20250408.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20250404.0': + '@cloudflare/workerd-linux-arm64@1.20250408.0': optional: true - '@cloudflare/workerd-windows-64@1.20250404.0': + '@cloudflare/workerd-windows-64@1.20250408.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.2)(search-insights@2.13.0)': + '@docsearch/js@3.8.2(@algolia/client-search@5.23.3)(search-insights@2.13.0)': dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.23.2)(search-insights@2.13.0) + '@docsearch/react': 3.8.2(@algolia/client-search@5.23.3)(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.2)(search-insights@2.13.0)': + '@docsearch/react@3.8.2(@algolia/client-search@5.23.3)(search-insights@2.13.0)': dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2)(search-insights@2.13.0) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.23.2)(algoliasearch@5.23.2) + '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3)(search-insights@2.13.0) + '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.23.3)(algoliasearch@5.23.3) '@docsearch/css': 3.8.2 - algoliasearch: 5.23.2 + algoliasearch: 5.23.3 optionalDependencies: search-insights: 2.13.0 transitivePeerDependencies: @@ -1953,21 +1953,21 @@ snapshots: acorn@8.14.0: {} - algoliasearch@5.23.2: + algoliasearch@5.23.3: dependencies: - '@algolia/client-abtesting': 5.23.2 - '@algolia/client-analytics': 5.23.2 - '@algolia/client-common': 5.23.2 - '@algolia/client-insights': 5.23.2 - '@algolia/client-personalization': 5.23.2 - '@algolia/client-query-suggestions': 5.23.2 - '@algolia/client-search': 5.23.2 - '@algolia/ingestion': 1.23.2 - '@algolia/monitoring': 1.23.2 - '@algolia/recommend': 5.23.2 - '@algolia/requester-browser-xhr': 5.23.2 - '@algolia/requester-fetch': 5.23.2 - '@algolia/requester-node-http': 5.23.2 + '@algolia/client-abtesting': 5.23.3 + '@algolia/client-analytics': 5.23.3 + '@algolia/client-common': 5.23.3 + '@algolia/client-insights': 5.23.3 + '@algolia/client-personalization': 5.23.3 + '@algolia/client-query-suggestions': 5.23.3 + '@algolia/client-search': 5.23.3 + '@algolia/ingestion': 1.23.3 + '@algolia/monitoring': 1.23.3 + '@algolia/recommend': 5.23.3 + '@algolia/requester-browser-xhr': 5.23.3 + '@algolia/requester-fetch': 5.23.3 + '@algolia/requester-node-http': 5.23.3 as-table@1.0.55: dependencies: @@ -2187,7 +2187,7 @@ snapshots: mime@3.0.0: {} - miniflare@4.20250404.0: + miniflare@4.20250408.0: 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.20250404.0 + workerd: 1.20250408.0 ws: 8.18.0 youch: 3.3.4 zod: 3.22.3 @@ -2382,7 +2382,7 @@ snapshots: typescript@5.4.5: optional: true - ufo@1.5.4: {} + ufo@1.6.1: {} undici-types@6.21.0: {} @@ -2396,7 +2396,7 @@ snapshots: exsolve: 1.0.4 ohash: 2.0.11 pathe: 2.0.3 - ufo: 1.5.4 + ufo: 1.6.1 unist-util-is@6.0.0: dependencies: @@ -2442,10 +2442,10 @@ snapshots: '@types/node': 22.14.0 fsevents: 2.3.3 - vitepress@1.6.3(@algolia/client-search@5.23.2)(@types/node@22.14.0)(postcss@8.5.3)(search-insights@2.13.0)(typescript@5.4.5): + vitepress@1.6.3(@algolia/client-search@5.23.3)(@types/node@22.14.0)(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.2)(search-insights@2.13.0) + '@docsearch/js': 3.8.2(@algolia/client-search@5.23.3)(search-insights@2.13.0) '@iconify-json/simple-icons': 1.2.31 '@shikijs/core': 2.5.0 '@shikijs/transformers': 2.5.0 @@ -2501,24 +2501,24 @@ snapshots: optionalDependencies: typescript: 5.4.5 - workerd@1.20250404.0: + workerd@1.20250408.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250404.0 - '@cloudflare/workerd-darwin-arm64': 1.20250404.0 - '@cloudflare/workerd-linux-64': 1.20250404.0 - '@cloudflare/workerd-linux-arm64': 1.20250404.0 - '@cloudflare/workerd-windows-64': 1.20250404.0 + '@cloudflare/workerd-darwin-64': 1.20250408.0 + '@cloudflare/workerd-darwin-arm64': 1.20250408.0 + '@cloudflare/workerd-linux-64': 1.20250408.0 + '@cloudflare/workerd-linux-arm64': 1.20250408.0 + '@cloudflare/workerd-windows-64': 1.20250408.0 - wrangler@4.7.2: + wrangler@4.9.1: dependencies: '@cloudflare/kv-asset-handler': 0.4.0 - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250404.0) + '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250408.0) blake3-wasm: 2.1.5 esbuild: 0.24.2 - miniflare: 4.20250404.0 + miniflare: 4.20250408.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.15 - workerd: 1.20250404.0 + workerd: 1.20250408.0 optionalDependencies: fsevents: 2.3.3 sharp: 0.33.5 diff --git a/worker/package.json b/worker/package.json index 587fe341..3855d8aa 100644 --- a/worker/package.json +++ b/worker/package.json @@ -11,19 +11,19 @@ "build": "wrangler deploy --dry-run --outdir dist --minify" }, "devDependencies": { - "@cloudflare/workers-types": "^4.20250407.0", + "@cloudflare/workers-types": "^4.20250409.0", "@eslint/js": "9.18.0", "@simplewebauthn/types": "10.0.0", "eslint": "9.18.0", "globals": "^15.15.0", - "typescript-eslint": "^8.29.0", - "wrangler": "^4.7.2" + "typescript-eslint": "^8.29.1", + "wrangler": "^4.9.1" }, "dependencies": { "@aws-sdk/client-s3": "^3.782.0", "@aws-sdk/s3-request-presigner": "^3.782.0", "@simplewebauthn/server": "10.0.1", - "hono": "^4.7.5", + "hono": "^4.7.6", "mimetext": "^3.0.27", "postal-mime": "^2.4.3", "resend": "^4.2.0", diff --git a/worker/pnpm-lock.yaml b/worker/pnpm-lock.yaml index 24c1a77c..1087b495 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.7.5 - version: 4.7.5 + specifier: ^4.7.6 + version: 4.7.6 mimetext: specifier: ^3.0.27 version: 3.0.27 @@ -42,8 +42,8 @@ importers: version: 1.1.1 devDependencies: '@cloudflare/workers-types': - specifier: ^4.20250407.0 - version: 4.20250407.0 + specifier: ^4.20250409.0 + version: 4.20250409.0 '@eslint/js': specifier: 9.18.0 version: 9.18.0 @@ -57,11 +57,11 @@ importers: specifier: ^15.15.0 version: 15.15.0 typescript-eslint: - specifier: ^8.29.0 - version: 8.29.0(eslint@9.18.0)(typescript@5.4.5) + specifier: ^8.29.1 + version: 8.29.1(eslint@9.18.0)(typescript@5.4.5) wrangler: - specifier: ^4.7.2 - version: 4.7.2(@cloudflare/workers-types@4.20250407.0) + specifier: ^4.9.1 + version: 4.9.1(@cloudflare/workers-types@4.20250409.0) packages: @@ -245,38 +245,38 @@ packages: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20250404.0': - resolution: {integrity: sha512-+z67wjimn7pZDJI5Ibt2TtNxreFJdFPd5dBMmQqtIfkwrlIsL4PkjHYdiffO7guFP9UygomThuKUaBOU4JA15Q==} + '@cloudflare/workerd-darwin-64@1.20250408.0': + resolution: {integrity: sha512-bxhIwBWxaNItZLXDNOKY2dCv0FHjDiDkfJFpwv4HvtvU5MKcrivZHVmmfDzLW85rqzfcDOmKbZeMPVfiKxdBZw==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20250404.0': - resolution: {integrity: sha512-MxFuWqR5bMcc92khreSlYOJxr0OIlJxABdrWQsaogWsxI6p7Df9gV1T36pqg+ERa9fVhkkGERkalt9DJYyYicA==} + '@cloudflare/workerd-darwin-arm64@1.20250408.0': + resolution: {integrity: sha512-5XZ2Oykr8bSo7zBmERtHh18h5BZYC/6H1YFWVxEj3PtalF3+6SHsO4KZsbGvDml9Pu7sHV277jiZE5eny8Hlyw==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20250404.0': - resolution: {integrity: sha512-f4rNJ45376vGB6WHmxxiZ50nmxMws337EvWthhNAZTyeoTYmJUbZjjWCaHR8clWXN8LLK1Tu1bkjsih730X41g==} + '@cloudflare/workerd-linux-64@1.20250408.0': + resolution: {integrity: sha512-WbgItXWln6G5d7GvYLWcuOzAVwafysZaWunH3UEfsm95wPuRofpYnlDD861gdWJX10IHSVgMStGESUcs7FLerQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20250404.0': - resolution: {integrity: sha512-UW54a/vZG6W1oiA9PUSatQ0LLWrxnwAX7rN/bCFLiT6n51PP8KgpM1LzrIvQM80WjH/ufqopZJe/TSgrrSss6Q==} + '@cloudflare/workerd-linux-arm64@1.20250408.0': + resolution: {integrity: sha512-pAhEywPPvr92SLylnQfZEPgXz+9pOG9G9haAPLpEatncZwYiYd9yiR6HYWhKp2erzCoNrOqKg9IlQwU3z1IDiw==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20250404.0': - resolution: {integrity: sha512-AJJP8vjJ6ioBzqUxVyByv5tE74z5LZ7G5To7w7dtYjWvKZzFo39bZZwGCGryHmH4yaOylXubFv72YVH8+Y4GSQ==} + '@cloudflare/workerd-windows-64@1.20250408.0': + resolution: {integrity: sha512-nJ3RjMKGae2aF2rZ/CNeBvQPM+W5V1SUK0FYWG/uomyr7uQ2l4IayHna1ODg/OHHTEgIjwom0Mbn58iXb0WOcQ==} engines: {node: '>=16'} cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20250407.0': - resolution: {integrity: sha512-M6cB247uy32VzM/P4NpRSHNNTcPgTn+s31wBV7gD14hkA07jMGBYlEcAv1LOghLNGZ5AEvYxLxQCVSvkF7HNIw==} + '@cloudflare/workers-types@4.20250409.0': + resolution: {integrity: sha512-yPxxwE5nr168huEfLNOB6904OsvIWcq0tWT23NMD6jT5SIp2ds3oOGANw7wz39r5y3jZYC2h1OnGwnZXJDDCOg==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -883,51 +883,51 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@typescript-eslint/eslint-plugin@8.29.0': - resolution: {integrity: sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==} + '@typescript-eslint/eslint-plugin@8.29.1': + resolution: {integrity: sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.29.0': - resolution: {integrity: sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==} + '@typescript-eslint/parser@8.29.1': + resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.29.0': - resolution: {integrity: sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==} + '@typescript-eslint/scope-manager@8.29.1': + resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.29.0': - resolution: {integrity: sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==} + '@typescript-eslint/type-utils@8.29.1': + resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.29.0': - resolution: {integrity: sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==} + '@typescript-eslint/types@8.29.1': + resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.29.0': - resolution: {integrity: sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==} + '@typescript-eslint/typescript-estree@8.29.1': + resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.29.0': - resolution: {integrity: sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==} + '@typescript-eslint/utils@8.29.1': + resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.29.0': - resolution: {integrity: sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==} + '@typescript-eslint/visitor-keys@8.29.1': + resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} abort-controller@3.0.0: @@ -1218,8 +1218,8 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - hono@4.7.5: - resolution: {integrity: sha512-fDOK5W2C1vZACsgLONigdZTRZxuBqFtcKh7bUQ5cVSbwI2RWjloJDcgFOVzbQrlI6pCmhlTsVYZ7zpLj4m4qMQ==} + hono@4.7.6: + resolution: {integrity: sha512-564rVzELU+9BRqqx5k8sT2NFwGD3I3Vifdb6P7CmM6FiarOSY+fDC+6B+k9wcCb86ReoayteZP2ki0cRLN1jbw==} engines: {node: '>=16.9.0'} html-to-text@9.0.5: @@ -1323,8 +1323,8 @@ packages: mimetext@3.0.27: resolution: {integrity: sha512-mUhWAsZD1N/K6dbN4+a5Yq78OPnYQw1ubOSMasBntsLQ2S7KVNlvDEA8dwpr4a7PszWMzeslKahAprtwYMgaBA==} - miniflare@4.20250404.0: - resolution: {integrity: sha512-OeNnXrOdgSoN5iDA+u1Ue3etOyPY89BJFFizMgGEPJvGTYL+kZhKqeBKeZiZIS7xjjlrfXNqleYGnCyomQ1pDQ==} + miniflare@4.20250408.0: + resolution: {integrity: sha512-h1FAK1l/RzZyhGAeLKD+XawWBWowY8tjOcj0Yz8RmCpZ5xBfl255O5eGw4Xk1rcpgxyEB0qiaL2CmV9HAyMfhw==} engines: {node: '>=18.0.0'} hasBin: true @@ -1544,8 +1544,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.29.0: - resolution: {integrity: sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==} + typescript-eslint@8.29.1: + resolution: {integrity: sha512-f8cDkvndhbQMPcysk6CUSGBWV+g1utqdn71P5YKwMumVMOG/5k7cHq0KyG4O52nB0oKS4aN2Tp5+wB4APJGC+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1556,8 +1556,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -1591,17 +1591,17 @@ packages: worker-mailer@1.1.1: resolution: {integrity: sha512-UPPd48aBMVuAE2j9ha7wDEhBakM23zKBk8wd9lLUhChExPeq8B8cO6C1ur4hMOypmJO7mZ+xTZff1KoCKprvGA==} - workerd@1.20250404.0: - resolution: {integrity: sha512-dvXsRdy49/vd4nPENpTDFjbPvR3XdPa8lJrxcnDKL1XtoioYXflq3ys8ljuu+X71ojqAAjnQj62AzrmmKM095g==} + workerd@1.20250408.0: + resolution: {integrity: sha512-bBUX+UsvpzAqiWFNeZrlZmDGddiGZdBBbftZJz2wE6iUg/cIAJeVQYTtS/3ahaicguoLBz4nJiDo8luqM9fx1A==} engines: {node: '>=16'} hasBin: true - wrangler@4.7.2: - resolution: {integrity: sha512-fK9h7PL8wrrdSLCFXVDotoSHOebRmdNdB4VRkUDWOIyiP0Dx54TBfXTt3bXB98EYx7VT+vj6CNVnEC8gSCxt0w==} + wrangler@4.9.1: + resolution: {integrity: sha512-wBV0OKFp+4Ii4bFIIBRm1JJi1od5KGhzsUjWw+2jtlX/H0n2TkdskMDQtrOdV9ybFKj2h+v93VxhAEBePghAkQ==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20250404.0 + '@cloudflare/workers-types': ^4.20250408.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -2119,28 +2119,28 @@ snapshots: dependencies: mime: 3.0.0 - '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250404.0)': + '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250408.0)': dependencies: unenv: 2.0.0-rc.15 optionalDependencies: - workerd: 1.20250404.0 + workerd: 1.20250408.0 - '@cloudflare/workerd-darwin-64@1.20250404.0': + '@cloudflare/workerd-darwin-64@1.20250408.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20250404.0': + '@cloudflare/workerd-darwin-arm64@1.20250408.0': optional: true - '@cloudflare/workerd-linux-64@1.20250404.0': + '@cloudflare/workerd-linux-64@1.20250408.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20250404.0': + '@cloudflare/workerd-linux-arm64@1.20250408.0': optional: true - '@cloudflare/workerd-windows-64@1.20250404.0': + '@cloudflare/workerd-windows-64@1.20250408.0': optional: true - '@cloudflare/workers-types@4.20250407.0': {} + '@cloudflare/workers-types@4.20250409.0': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -2786,14 +2786,14 @@ snapshots: '@types/json-schema@7.0.15': {} - '@typescript-eslint/eslint-plugin@8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.18.0)(typescript@5.4.5))(eslint@9.18.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.18.0)(typescript@5.4.5))(eslint@9.18.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.29.0(eslint@9.18.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/type-utils': 8.29.0(eslint@9.18.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.29.0(eslint@9.18.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/parser': 8.29.1(eslint@9.18.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/type-utils': 8.29.1(eslint@9.18.0)(typescript@5.4.5) + '@typescript-eslint/utils': 8.29.1(eslint@9.18.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.29.1 eslint: 9.18.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -2803,27 +2803,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.29.0(eslint@9.18.0)(typescript@5.4.5)': + '@typescript-eslint/parser@8.29.1(eslint@9.18.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 8.29.1 debug: 4.4.0 eslint: 9.18.0 typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.29.0': + '@typescript-eslint/scope-manager@8.29.1': dependencies: - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 - '@typescript-eslint/type-utils@8.29.0(eslint@9.18.0)(typescript@5.4.5)': + '@typescript-eslint/type-utils@8.29.1(eslint@9.18.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.4.5) - '@typescript-eslint/utils': 8.29.0(eslint@9.18.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.4.5) + '@typescript-eslint/utils': 8.29.1(eslint@9.18.0)(typescript@5.4.5) debug: 4.4.0 eslint: 9.18.0 ts-api-utils: 2.1.0(typescript@5.4.5) @@ -2831,12 +2831,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.29.0': {} + '@typescript-eslint/types@8.29.1': {} - '@typescript-eslint/typescript-estree@8.29.0(typescript@5.4.5)': + '@typescript-eslint/typescript-estree@8.29.1(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/visitor-keys': 8.29.0 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/visitor-keys': 8.29.1 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -2847,20 +2847,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.29.0(eslint@9.18.0)(typescript@5.4.5)': + '@typescript-eslint/utils@8.29.1(eslint@9.18.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.5.1(eslint@9.18.0) - '@typescript-eslint/scope-manager': 8.29.0 - '@typescript-eslint/types': 8.29.0 - '@typescript-eslint/typescript-estree': 8.29.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 8.29.1 + '@typescript-eslint/types': 8.29.1 + '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.4.5) eslint: 9.18.0 typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.29.0': + '@typescript-eslint/visitor-keys@8.29.1': dependencies: - '@typescript-eslint/types': 8.29.0 + '@typescript-eslint/types': 8.29.1 eslint-visitor-keys: 4.2.0 abort-controller@3.0.0: @@ -3178,7 +3178,7 @@ snapshots: has-flag@4.0.0: {} - hono@4.7.5: {} + hono@4.7.6: {} html-to-text@9.0.5: dependencies: @@ -3274,7 +3274,7 @@ snapshots: js-base64: 3.7.7 mime-types: 2.1.35 - miniflare@4.20250404.0: + miniflare@4.20250408.0: dependencies: '@cspotcode/source-map-support': 0.8.1 acorn: 8.14.0 @@ -3283,7 +3283,7 @@ snapshots: glob-to-regexp: 0.4.1 stoppable: 1.1.0 undici: 5.29.0 - workerd: 1.20250404.0 + workerd: 1.20250408.0 ws: 8.18.0 youch: 3.3.4 zod: 3.22.3 @@ -3503,11 +3503,11 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.29.0(eslint@9.18.0)(typescript@5.4.5): + typescript-eslint@8.29.1(eslint@9.18.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.29.0(@typescript-eslint/parser@8.29.0(eslint@9.18.0)(typescript@5.4.5))(eslint@9.18.0)(typescript@5.4.5) - '@typescript-eslint/parser': 8.29.0(eslint@9.18.0)(typescript@5.4.5) - '@typescript-eslint/utils': 8.29.0(eslint@9.18.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 8.29.1(@typescript-eslint/parser@8.29.1(eslint@9.18.0)(typescript@5.4.5))(eslint@9.18.0)(typescript@5.4.5) + '@typescript-eslint/parser': 8.29.1(eslint@9.18.0)(typescript@5.4.5) + '@typescript-eslint/utils': 8.29.1(eslint@9.18.0)(typescript@5.4.5) eslint: 9.18.0 typescript: 5.4.5 transitivePeerDependencies: @@ -3515,7 +3515,7 @@ snapshots: typescript@5.4.5: {} - ufo@1.5.4: {} + ufo@1.6.1: {} undici@5.29.0: dependencies: @@ -3527,7 +3527,7 @@ snapshots: exsolve: 1.0.4 ohash: 2.0.11 pathe: 2.0.3 - ufo: 1.5.4 + ufo: 1.6.1 uri-js@4.4.1: dependencies: @@ -3550,26 +3550,26 @@ snapshots: worker-mailer@1.1.1: {} - workerd@1.20250404.0: + workerd@1.20250408.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250404.0 - '@cloudflare/workerd-darwin-arm64': 1.20250404.0 - '@cloudflare/workerd-linux-64': 1.20250404.0 - '@cloudflare/workerd-linux-arm64': 1.20250404.0 - '@cloudflare/workerd-windows-64': 1.20250404.0 + '@cloudflare/workerd-darwin-64': 1.20250408.0 + '@cloudflare/workerd-darwin-arm64': 1.20250408.0 + '@cloudflare/workerd-linux-64': 1.20250408.0 + '@cloudflare/workerd-linux-arm64': 1.20250408.0 + '@cloudflare/workerd-windows-64': 1.20250408.0 - wrangler@4.7.2(@cloudflare/workers-types@4.20250407.0): + wrangler@4.9.1(@cloudflare/workers-types@4.20250409.0): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250404.0) + '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250408.0) blake3-wasm: 2.1.5 esbuild: 0.24.2 - miniflare: 4.20250404.0 + miniflare: 4.20250408.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.15 - workerd: 1.20250404.0 + workerd: 1.20250408.0 optionalDependencies: - '@cloudflare/workers-types': 4.20250407.0 + '@cloudflare/workers-types': 4.20250409.0 fsevents: 2.3.3 sharp: 0.33.5 transitivePeerDependencies: diff --git a/worker/src/types.d.ts b/worker/src/types.d.ts index 2fa50734..62393042 100644 --- a/worker/src/types.d.ts +++ b/worker/src/types.d.ts @@ -10,6 +10,7 @@ export type Bindings = { KV: KVNamespace RATE_LIMITER: any SEND_MAIL: any + ASSETS: Fetcher // config DEFAULT_LANG: string | undefined diff --git a/worker/src/worker.ts b/worker/src/worker.ts index 04c20aec..08161bc9 100644 --- a/worker/src/worker.ts +++ b/worker/src/worker.ts @@ -16,6 +16,15 @@ import { scheduled } from './scheduled'; import { getAdminPasswords, getPasswords, getBooleanValue, getStringArray } from './utils'; import { HonoCustomType, UserPayload } from './types'; +const API_PATHS = [ + "/api/", + "/open_api/", + "/user_api/", + "/admin/", + "/telegram/", + "/external/", +]; + const app = new Hono() //cors app.use('/*', cors()); @@ -24,8 +33,18 @@ app.onError((err, c) => { console.error(err) return c.text(`${err.name} ${err.message}`, 500) }) -// rate limit +// global middlewares app.use('/*', async (c, next) => { + + // check if the request is for static files + if (c.env.ASSETS && !API_PATHS.some(path => c.req.path.startsWith(path))) { + const url = new URL(c.req.raw.url); + if (!url.pathname.includes('.')) { + url.pathname = "" + } + return c.env.ASSETS.fetch(url); + } + // save language in context const lang = c.req.raw.headers.get("x-lang"); if (lang) { c.set("lang", lang); } diff --git a/worker/wrangler.toml.template b/worker/wrangler.toml.template index f29df687..619dd4bc 100644 --- a/worker/wrangler.toml.template +++ b/worker/wrangler.toml.template @@ -1,12 +1,18 @@ name = "cloudflare_temp_email" main = "src/worker.ts" -compatibility_date = "2024-09-23" +compatibility_date = "2025-04-01" compatibility_flags = [ "nodejs_compat" ] # if you want use custom_domain, you need to add routes # routes = [ # { pattern = "temp-email-api.xxxxx.xyz", custom_domain = true }, # ] +# if you want deploy worker with frontend assets, you need to add assets +# [assets] +# directory = "../frontend/dist/" +# binding = "ASSETS" +# run_worker_first = true + # enable cron if you want set auto clean up # [triggers] # crons = [ "0 0 * * *" ]