Compare commits

..

7 Commits

Author SHA1 Message Date
Dream Hunter
3c2a8ed056 feat: remove service workbox html cache (#486) 2024-11-15 01:39:14 +08:00
Dream Hunter
5f45ec7c14 feat: remove service workbox (#485) 2024-11-15 01:22:43 +08:00
Dream Hunter
1b7ebc98c5 feat: support transfer address from user to user (#484)
* feat: support transfer address from user to user

* feat: remove service worker
2024-11-15 01:10:25 +08:00
Dream Hunter
c102004f4d feat: |UI| show local datetime string and add useUTCDate option (#483) 2024-11-15 00:04:17 +08:00
Dream Hunter
3c81e05a2f feat: |UI| random fake name support MAX_ADDRESS_LEN (#482) 2024-11-14 23:58:42 +08:00
Dream Hunter
5ff2ceb5e8 feat: pages support Cloudflare Zero Trust (#477) 2024-11-11 23:55:49 +08:00
Dream Hunter
6c82efb738 feat: docs: ui_install worker update (#476) 2024-11-08 13:09:28 +08:00
25 changed files with 611 additions and 412 deletions

View File

@@ -1,6 +1,12 @@
<!-- markdownlint-disable-file MD004 MD024 MD034 MD036 --> <!-- markdownlint-disable-file MD004 MD024 MD034 MD036 -->
# CHANGE LOG # CHANGE LOG
## main(v0.8.0)
- feat: |UI| 随机生成地址时不超过最大长度
- feat: |UI| 邮件时间显示浏览器时区,可在设置中切换显示为 UTC 时间
- feat: 支持转移邮件到其他用户
## v0.7.6 ## v0.7.6
- feat: 支持提前设置 bot info, 降低 telegram 回调延迟 (#441) - feat: 支持提前设置 bot info, 降低 telegram 回调延迟 (#441)

View File

@@ -10,7 +10,7 @@ CREATE TABLE IF NOT EXISTS raw_mails (
CREATE INDEX IF NOT EXISTS idx_raw_mails_address ON raw_mails(address); CREATE INDEX IF NOT EXISTS idx_raw_mails_address ON raw_mails(address);
CREATE TABLE IF NOT EXISTS address ( CREATE TABLE IF NOT EXISTS address (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT UNIQUE, name TEXT UNIQUE,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP updated_at DATETIME DEFAULT CURRENT_TIMESTAMP

View File

@@ -1,6 +1,6 @@
{ {
"name": "cloudflare_temp_email", "name": "cloudflare_temp_email",
"version": "0.7.6", "version": "0.8.0",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
@@ -8,6 +8,7 @@
"build": "vite build -m prod --emptyOutDir", "build": "vite build -m prod --emptyOutDir",
"build:release": "vite build -m example --emptyOutDir", "build:release": "vite build -m example --emptyOutDir",
"build:pages": "vite build -m pages --emptyOutDir", "build:pages": "vite build -m pages --emptyOutDir",
"build:pages:nopwa": "VITE_PWA_DISABLED=true vite build -m pages --emptyOutDir",
"build:telegram": "VITE_IS_TELEGRAM=true vite build -m prod --emptyOutDir", "build:telegram": "VITE_IS_TELEGRAM=true vite build -m prod --emptyOutDir",
"build:telegram:release": "VITE_IS_TELEGRAM=true vite build -m example --emptyOutDir", "build:telegram:release": "VITE_IS_TELEGRAM=true vite build -m example --emptyOutDir",
"preview": "vite preview", "preview": "vite preview",

View File

@@ -6,6 +6,7 @@ import { useGlobalState } from '../store'
import { CloudDownloadRound, ReplyFilled } from '@vicons/material' import { CloudDownloadRound, ReplyFilled } from '@vicons/material'
import { useIsMobile } from '../utils/composables' import { useIsMobile } from '../utils/composables'
import { processItem, getDownloadEmlUrl } from '../utils/email-parser' import { processItem, getDownloadEmlUrl } from '../utils/email-parser'
import { utcToLocalDate } from '../utils';
const message = useMessage() const message = useMessage()
const isMobile = useIsMobile() const isMobile = useIsMobile()
@@ -49,7 +50,7 @@ const props = defineProps({
}) })
const { const {
isDark, mailboxSplitSize, indexTab, loading, isDark, mailboxSplitSize, indexTab, loading, useUTCDate,
useIframeShowMail, sendMailModel, preferShowTextMail useIframeShowMail, sendMailModel, preferShowTextMail
} = useGlobalState() } = useGlobalState()
const autoRefresh = ref(false) const autoRefresh = ref(false)
@@ -375,7 +376,7 @@ onBeforeUnmount(() => {
ID: {{ row.id }} ID: {{ row.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
{{ `${row.created_at} UTC` }} {{ utcToLocalDate(row.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
FROM: {{ row.source }} FROM: {{ row.source }}
@@ -397,7 +398,7 @@ onBeforeUnmount(() => {
ID: {{ curMail.id }} ID: {{ curMail.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
{{ `${curMail.created_at} UTC` }} {{ utcToLocalDate(curMail.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
FROM: {{ curMail.source }} FROM: {{ curMail.source }}
@@ -471,7 +472,7 @@ onBeforeUnmount(() => {
ID: {{ row.id }} ID: {{ row.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
{{ `${row.created_at} UTC` }} {{ utcToLocalDate(row.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
FROM: {{ row.source }} FROM: {{ row.source }}
@@ -493,7 +494,7 @@ onBeforeUnmount(() => {
ID: {{ curMail.id }} ID: {{ curMail.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
{{ `${curMail.created_at} UTC` }} {{ utcToLocalDate(curMail.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
FROM: {{ curMail.source }} FROM: {{ curMail.source }}

View File

@@ -4,6 +4,7 @@ import { useMessage } from 'naive-ui'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useGlobalState } from '../store' import { useGlobalState } from '../store'
import { useIsMobile } from '../utils/composables' import { useIsMobile } from '../utils/composables'
import { utcToLocalDate } from '../utils';
const message = useMessage() const message = useMessage()
const isMobile = useIsMobile() const isMobile = useIsMobile()
@@ -30,7 +31,7 @@ const props = defineProps({
}, },
}) })
const { isDark, mailboxSplitSize, loading } = useGlobalState() const { isDark, mailboxSplitSize, loading, useUTCDate } = useGlobalState()
const data = ref([]) const data = ref([])
const count = ref(0) const count = ref(0)
@@ -251,7 +252,7 @@ onMounted(async () => {
ID: {{ row.id }} ID: {{ row.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
{{ `${row.created_at} UTC` }} {{ utcToLocalDate(row.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag v-if="showEMailFrom" type="info"> <n-tag v-if="showEMailFrom" type="info">
FROM: {{ row.address }} FROM: {{ row.address }}
@@ -273,7 +274,7 @@ onMounted(async () => {
ID: {{ curMail.id }} ID: {{ curMail.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
{{ `${curMail.created_at} UTC` }} {{ utcToLocalDate(curMail.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
FROM: {{ curMail.address }} FROM: {{ curMail.address }}
@@ -320,7 +321,7 @@ onMounted(async () => {
ID: {{ row.id }} ID: {{ row.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
{{ `${row.created_at} UTC` }} {{ utcToLocalDate(row.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag v-if="showEMailFrom" type="info"> <n-tag v-if="showEMailFrom" type="info">
FROM: {{ row.address }} FROM: {{ row.address }}
@@ -342,7 +343,7 @@ onMounted(async () => {
ID: {{ curMail.id }} ID: {{ curMail.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
{{ `${curMail.created_at} UTC` }} {{ utcToLocalDate(curMail.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
FROM: {{ curMail.address }} FROM: {{ curMail.address }}

View File

@@ -2,10 +2,8 @@ import { createApp } from 'vue'
import App from './App.vue' import App from './App.vue'
import { createI18n } from 'vue-i18n' import { createI18n } from 'vue-i18n'
import router from './router' import router from './router'
import { registerSW } from 'virtual:pwa-register'
import { createHead } from '@unhead/vue' import { createHead } from '@unhead/vue'
registerSW({ immediate: true })
const i18n = createI18n({ const i18n = createI18n({
legacy: false, // you must set `false`, to use Composition API legacy: false, // you must set `false`, to use Composition API
locale: 'zh', // set locale locale: 'zh', // set locale

View File

@@ -70,6 +70,7 @@ export const useGlobalState = createGlobalState(
const indexTab = useSessionStorage('indexTab', 'mailbox'); const indexTab = useSessionStorage('indexTab', 'mailbox');
const globalTabplacement = useStorage('globalTabplacement', 'top'); const globalTabplacement = useStorage('globalTabplacement', 'top');
const useSideMargin = useStorage('useSideMargin', true); const useSideMargin = useStorage('useSideMargin', true);
const useUTCDate = useStorage('useUTCDate', false);
const userOpenSettings = ref({ const userOpenSettings = ref({
fetched: false, fetched: false,
enable: false, enable: false,
@@ -127,6 +128,7 @@ export const useGlobalState = createGlobalState(
userSettings, userSettings,
globalTabplacement, globalTabplacement,
useSideMargin, useSideMargin,
useUTCDate,
telegramApp, telegramApp,
isTelegram, isTelegram,
showAdminPage, showAdminPage,

View File

@@ -11,3 +11,17 @@ export const getRouterPathWithLang = (path: string, lang: string) => {
} }
return `/${lang}${path}`; return `/${lang}${path}`;
} }
export const utcToLocalDate = (utcDate: string, useUTCDate: boolean) => {
const utcDateString = `${utcDate} UTC`;
if (useUTCDate) {
return utcDateString;
}
try {
const date = new Date(utcDateString);
return date.toLocaleString();
} catch (e) {
console.error(e);
}
return utcDateString;
}

View File

@@ -6,7 +6,7 @@ import { useGlobalState } from '../../store'
const { const {
mailboxSplitSize, useIframeShowMail, preferShowTextMail, mailboxSplitSize, useIframeShowMail, preferShowTextMail,
globalTabplacement, useSideMargin globalTabplacement, useSideMargin, useUTCDate
} = useGlobalState() } = useGlobalState()
const isMobile = useIsMobile() const isMobile = useIsMobile()
@@ -22,6 +22,7 @@ const { t } = useI18n({
top: 'top', top: 'top',
right: 'right', right: 'right',
bottom: 'bottom', bottom: 'bottom',
useUTCDate: 'Use UTC Date',
}, },
zh: { zh: {
mailboxSplitSize: '邮箱界面分栏大小', mailboxSplitSize: '邮箱界面分栏大小',
@@ -33,6 +34,7 @@ const { t } = useI18n({
top: '顶部', top: '顶部',
right: '右侧', right: '右侧',
bottom: '底部', bottom: '底部',
useUTCDate: '使用 UTC 时间',
} }
} }
}); });
@@ -54,6 +56,9 @@ const { t } = useI18n({
<n-form-item-row :label="t('useIframeShowMail')"> <n-form-item-row :label="t('useIframeShowMail')">
<n-switch v-model:value="useIframeShowMail" :round="false" /> <n-switch v-model:value="useIframeShowMail" :round="false" />
</n-form-item-row> </n-form-item-row>
<n-form-item-row :label="t('useUTCDate')">
<n-switch v-model:value="useUTCDate" :round="false" />
</n-form-item-row>
<n-form-item-row v-if="!isMobile" :label="t('useSideMargin')"> <n-form-item-row v-if="!isMobile" :label="t('useSideMargin')">
<n-switch v-model:value="useSideMargin" :round="false" /> <n-switch v-model:value="useSideMargin" :round="false" />
</n-form-item-row> </n-form-item-row>

View File

@@ -124,6 +124,10 @@ const generateName = async () => {
.replace(/\.{2,}/g, '.') .replace(/\.{2,}/g, '.')
.replace(addressRegex.value, '') .replace(addressRegex.value, '')
.toLowerCase(); .toLowerCase();
// support maxAddressLen
if (emailName.value.length > openSettings.value.maxAddressLen) {
emailName.value = emailName.value.slice(0, openSettings.value.maxAddressLen);
}
} catch (error) { } catch (error) {
message.error(error.message || "error"); message.error(error.message || "error");
} finally { } finally {

View File

@@ -5,8 +5,9 @@ import { useGlobalState } from '../../store'
import { api } from '../../api' import { api } from '../../api'
import { onMounted, watch } from 'vue'; import { onMounted, watch } from 'vue';
import { processItem } from '../../utils/email-parser' import { processItem } from '../../utils/email-parser'
import { utcToLocalDate } from '../../utils';
const { telegramApp, loading } = useGlobalState() const { telegramApp, loading, useUTCDate } = useGlobalState()
const route = useRoute() const route = useRoute()
const curMail = ref({}); const curMail = ref({});
@@ -50,7 +51,7 @@ onMounted(async () => {
ID: {{ curMail.id }} ID: {{ curMail.id }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
Date: {{ curMail.created_at }} Date: {{ utcToLocalDate(curMail.created_at, useUTCDate) }}
</n-tag> </n-tag>
<n-tag type="info"> <n-tag type="info">
FROM: {{ curMail.source }} FROM: {{ curMail.source }}

View File

@@ -20,9 +20,12 @@ const { locale, t } = useI18n({
mail_count: 'Mail Count', mail_count: 'Mail Count',
send_count: 'Send Count', send_count: 'Send Count',
actions: 'Actions', actions: 'Actions',
changeMailAddress: 'Change Mail Address', changeMailAddress: 'Change Address',
unbindAddress: 'Unbind Address', unbindAddress: 'Unbind Address',
unbindAddressTip: 'Before unbinding, please switch to this email address and save the email address credential.', unbindAddressTip: 'Before unbinding, please switch to this email address and save the email address credential.',
transferAddress: 'Transfer Address',
targetUserEmail: 'Target User Email',
transferAddressTip: 'Transfer address to another user will remove the address from your account and transfer it to another user. Are you sure to transfer the address?'
}, },
zh: { zh: {
success: '成功', success: '成功',
@@ -30,14 +33,21 @@ const { locale, t } = useI18n({
mail_count: '邮件数量', mail_count: '邮件数量',
send_count: '发送数量', send_count: '发送数量',
actions: '操作', actions: '操作',
changeMailAddress: '切换邮箱地址', changeMailAddress: '切换地址',
unbindAddress: '解绑地址', unbindAddress: '解绑地址',
unbindAddressTip: '解绑前请切换到此邮箱地址并保存邮箱地址凭证。', unbindAddressTip: '解绑前请切换到此邮箱地址并保存邮箱地址凭证。',
transferAddress: '转移地址',
targetUserEmail: '目标用户邮箱',
transferAddressTip: '转移地址到其他用户将会从你的账户中移除此地址并转移给其他用户。确定要转移地址吗?'
} }
} }
}); });
const data = ref([]) const data = ref([])
const showTranferAddress = ref(false)
const currentAddress = ref("")
const currentAddressId = ref(0)
const targetUserEmail = ref('')
const changeMailAddress = async (address_id) => { const changeMailAddress = async (address_id) => {
try { try {
@@ -70,6 +80,35 @@ const unbindAddress = async (address_id) => {
} }
} }
const transferAddress = async () => {
if (!targetUserEmail.value) {
message.error("targetUserEmail is required");
return;
}
if (!currentAddressId.value) {
message.error("currentAddressId is required");
return;
}
try {
const res = await api.fetch(`/user_api/transfer_address`, {
method: 'POST',
body: JSON.stringify({
address_id: currentAddressId.value,
target_user_email: targetUserEmail.value
})
});
message.success(t('transferAddress') + " " + t('success'));
await fetchData();
showTranferAddress.value = false;
currentAddressId.value = 0;
currentAddress.value = "";
targetUserEmail.value = "";
} catch (error) {
console.log(error)
message.error(error.message || "error");
}
}
const fetchData = async () => { const fetchData = async () => {
try { try {
const { results, count: addressCount } = await api.fetch( const { results, count: addressCount } = await api.fetch(
@@ -138,6 +177,18 @@ const columns = [
default: () => `${t('changeMailAddress')}?` default: () => `${t('changeMailAddress')}?`
} }
), ),
h(NButton,
{
tertiary: true,
type: "primary",
onClick: () => {
currentAddressId.value = row.id;
currentAddress.value = row.name;
showTranferAddress.value = true;
}
},
{ default: () => t('transferAddress') }
),
h(NPopconfirm, h(NPopconfirm,
{ {
onPositiveClick: () => unbindAddress(row.id) onPositiveClick: () => unbindAddress(row.id)
@@ -164,6 +215,18 @@ onMounted(async () => {
</script> </script>
<template> <template>
<n-modal v-model:show="showTranferAddress" preset="dialog" :title="t('transferAddress')">
<span>
<p>{{ t("transferAddressTip") }}</p>
<p>{{ t('transferAddress') + ": " + currentAddress }}</p>
<n-input v-model:value="targetUserEmail" :placeholder="t('targetUserEmail')" />
</span>
<template #action>
<n-button :loading="loading" @click="transferAddress" size="small" tertiary type="error">
{{ t('transferAddress') }}
</n-button>
</template>
</n-modal>
<div style="overflow: auto;"> <div style="overflow: auto;">
<n-data-table :columns="columns" :data="data" :bordered="false" embedded /> <n-data-table :columns="columns" :data="data" :bordered="false" embedded />
</div> </div>

View File

@@ -35,13 +35,16 @@ export default defineConfig({
resolvers: [NaiveUiResolver()] resolvers: [NaiveUiResolver()]
}), }),
VitePWA({ VitePWA({
registerType: 'autoUpdate', registerType: null,
devOptions: { devOptions: {
enabled: true enabled: true
}, },
workbox: { workbox: {
disableDevLogs: true, disableDevLogs: true,
globPatterns: ['**/*.{js,css,html,ico,png,svg}'], globPatterns: [],
runtimeCaching: [],
navigateFallback: null,
cleanupOutdatedCaches: true,
}, },
manifest: { manifest: {
name: 'Temp Email', name: 'Temp Email',

View File

@@ -1,6 +1,6 @@
{ {
"name": "temp-email-pages", "name": "temp-email-pages",
"version": "0.7.6", "version": "0.8.0",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@@ -11,6 +11,6 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"wrangler": "^3.84.1" "wrangler": "^3.85.0"
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -41,6 +41,7 @@ pnpm run deploy
```bash ```bash
cd frontend cd frontend
pnpm install pnpm install
# 如果你要启用 Cloudflare Zero Trust, 需要使用 pnpm build:pages:nopwa 来禁用缓存
pnpm build:pages pnpm build:pages
cd ../pages cd ../pages
pnpm run deploy pnpm run deploy

View File

@@ -25,6 +25,21 @@ pnpm wrangler secret put TELEGRAM_BOT_TOKEN
## Mini App ## Mini App
可以通过命令行部署,或者 UI 界面部署
### UI 部署
其他步骤参考 [UI 部署](/zh/guide/cli/pages) 中的 `前后端分离部署`
> [!NOTE]
> 从这里下载 zip, [telegram-frontend.zip](https://github.com/dreamhunter2333/cloudflare_temp_email/releases/latest/download/telegram-frontend.zip)
>
> 修改压缩包里面的 index-xxx.js 文件 xx 是随机的字符串
>
> 搜索 `https://temp-email-api.xxx.xxx` 替换成你worker 的域名然后部署新的zip文件
### 命令行部署
```bash ```bash
cd frontend cd frontend
pnpm install pnpm install

View File

@@ -8,9 +8,13 @@
![worker1](/ui_install/worker-1.png) ![worker1](/ui_install/worker-1.png)
3. 下载 [worker.js](https://github.com/dreamhunter2333/cloudflare_temp_email/releases/latest/download/worker.js) 3. 回到 `Overview`,找到刚刚创建的 worker点击 `Settings` -> `Runtime`, 修改 `Compatibility flags`, 增加 `nodejs_compat`
4. 回到 `Overview`,找到刚刚创建的 worker点击 `Edit Code`, 删除原来的文件,上传 `worker.js`, 点击 `Deploy` ![worker-runtime](/ui_install/worker-runtime.png)
4. 下载 [worker.js](https://github.com/dreamhunter2333/cloudflare_temp_email/releases/latest/download/worker.js)
5. 回到 `Overview`,找到刚刚创建的 worker点击 `Edit Code`, 删除原来的文件,上传 `worker.js`, 点击 `Deploy`
> [!NOTE] > [!NOTE]
> 上传需要先点击左侧菜单的 Explorer, > 上传需要先点击左侧菜单的 Explorer,
@@ -22,7 +26,7 @@
![worker2](/ui_install/worker-2.png) ![worker2](/ui_install/worker-2.png)
![worker-upload](/ui_install/worker-upload.png) ![worker-upload](/ui_install/worker-upload.png)
5. 点击 `Settings` -> `Trggers`, 这里可以添加自己的域名,你也可以使用自动生成的 `*.workers.dev` 的域名。记录下这个域名,后面部署前端会用到。 6. 点击 `Settings` -> `Trggers`, 这里可以添加自己的域名,你也可以使用自动生成的 `*.workers.dev` 的域名。记录下这个域名,后面部署前端会用到。
> [!NOTE] > [!NOTE]
> 打开 `worker` 的 `url`,如果显示 `OK` 说明部署成功 > 打开 `worker` 的 `url`,如果显示 `OK` 说明部署成功
@@ -31,7 +35,7 @@
![worker3](/ui_install/worker-3.png) ![worker3](/ui_install/worker-3.png)
6. 点击 `Settings` -> `Variables`, 如图所示添加变量,参考 [修改 wrangler.toml 配置文件](/zh/guide/cli/worker.html#修改-wrangler-toml-配置文件) 中的 `[vars]` 部分 7. 点击 `Settings` -> `Variables`, 如图所示添加变量,参考 [修改 wrangler.toml 配置文件](/zh/guide/cli/worker.html#修改-wrangler-toml-配置文件) 中的 `[vars]` 部分
> [!NOTE] > [!NOTE]
> 注意字符串格式的变量的最外层的引号是不需要的 > 注意字符串格式的变量的最外层的引号是不需要的
@@ -40,18 +44,18 @@
![worker-var](/ui_install/worker-var.png) ![worker-var](/ui_install/worker-var.png)
7. 点击 `Settings` -> `Variables`, 下拉找到 `D1 Database`, 点击 `Add Binding`, 名称如图,选择刚刚创建的 D1 数据库,点击 `Deploy` 8. 点击 `Settings` -> `Variables`, 下拉找到 `D1 Database`, 点击 `Add Binding`, 名称如图,选择刚刚创建的 D1 数据库,点击 `Deploy`
![worker-d1](/ui_install/worker-d1.png) ![worker-d1](/ui_install/worker-d1.png)
8. 如果你要启用注册用户功能,并需要发送邮件验证,则需要创建 `KV` 缓存, 不需要可跳过此步骤,点击 `Workers & Pages` -> `KV` -> `Create Namespace`, 如图,点击 `Create Namespace`,然后在 `Settings` -> `Variables`, 下拉找到 `KV`, 点击 `Add Binding`, 名称如图,选择刚刚创建的 `KV` 缓存,点击 `Deploy` 9. 如果你要启用注册用户功能,并需要发送邮件验证,则需要创建 `KV` 缓存, 不需要可跳过此步骤,点击 `Workers & Pages` -> `KV` -> `Create Namespace`, 如图,点击 `Create Namespace`,然后在 `Settings` -> `Variables`, 下拉找到 `KV`, 点击 `Add Binding`, 名称如图,选择刚刚创建的 `KV` 缓存,点击 `Deploy`
> [!NOTE] > [!NOTE]
> 如果你要启用注册用户功能,并需要发送邮件验证,则需要创建 `KV` 缓存, 不需要可跳过此步骤 > 如果你要启用注册用户功能,并需要发送邮件验证,则需要创建 `KV` 缓存, 不需要可跳过此步骤
![worker-kv](/ui_install/worker-kv.png) ![worker-kv](/ui_install/worker-kv.png)
![worker-kv-bind](/ui_install/worker-kv-bind.png) ![worker-kv-bind](/ui_install/worker-kv-bind.png)
9. Telegram Bot 配置 10. Telegram Bot 配置
> [!NOTE] > [!NOTE]
> 如果不需要 Telegram Bot, 可跳过此步骤 > 如果不需要 Telegram Bot, 可跳过此步骤

View File

@@ -1,12 +1,12 @@
{ {
"name": "temp-mail-docs", "name": "temp-mail-docs",
"private": true, "private": true,
"version": "0.7.6", "version": "0.8.0",
"type": "module", "type": "module",
"devDependencies": { "devDependencies": {
"@types/node": "^22.9.0", "@types/node": "^22.9.0",
"vitepress": "^1.5.0", "vitepress": "^1.5.0",
"wrangler": "^3.84.1" "wrangler": "^3.85.0"
}, },
"scripts": { "scripts": {
"dev": "vitepress dev docs", "dev": "vitepress dev docs",

View File

@@ -17,10 +17,10 @@ importers:
version: 22.9.0 version: 22.9.0
vitepress: vitepress:
specifier: ^1.5.0 specifier: ^1.5.0
version: 1.5.0(@algolia/client-search@5.12.0)(@types/node@22.9.0)(postcss@8.4.47)(search-insights@2.13.0)(typescript@5.4.5) version: 1.5.0(@algolia/client-search@5.13.0)(@types/node@22.9.0)(postcss@8.4.47)(search-insights@2.13.0)(typescript@5.4.5)
wrangler: wrangler:
specifier: ^3.84.1 specifier: ^3.85.0
version: 3.84.1 version: 3.85.0
packages: packages:
@@ -44,56 +44,56 @@ packages:
'@algolia/client-search': '>= 4.9.1 < 6' '@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6'
'@algolia/client-abtesting@5.12.0': '@algolia/client-abtesting@5.13.0':
resolution: {integrity: sha512-hx4eVydkm3yrFCFxmcBtSzI/ykt0cZ6sDWch+v3JTgKpD2WtosMJU3Upv1AjQ4B6COSHCOWEX3vfFxW6OoH6aA==} resolution: {integrity: sha512-6CoQjlMi1pmQYMQO8tXfuGxSPf6iKX5FP9MuMe6IWmvC81wwTvOehnwchyBl2wuPVhcw2Ar53K53mQ60DAC64g==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/client-analytics@5.12.0': '@algolia/client-analytics@5.13.0':
resolution: {integrity: sha512-EpTsSv6IW8maCfXCDIptgT7+mQJj7pImEkcNUnxR8yUKAHzTogTXv9yGm2WXOZFVuwstd2i0sImhQ1Vz8RH/hA==} resolution: {integrity: sha512-pS3qyXiWTwKnrt/jE79fqkNqZp7kjsFNlJDcBGkSWid74DNc6DmArlkvPqyLxnoaYGjUGACT6g56n7E3mVV2TA==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/client-common@5.12.0': '@algolia/client-common@5.13.0':
resolution: {integrity: sha512-od3WmO8qxyfNhKc+K3D17tvun3IMs/xMNmxCG9MiElAkYVbPPTRUYMkRneCpmJyQI0hNx2/EA4kZgzVfQjO86Q==} resolution: {integrity: sha512-2SP6bGGWOTN920MLZv8s7yIR3OqY03vEe4U+vb2MGdL8a/8EQznF3L/nTC/rGf/hvEfZlX2tGFxPJaF2waravg==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/client-insights@5.12.0': '@algolia/client-insights@5.13.0':
resolution: {integrity: sha512-8alajmsYUd+7vfX5lpRNdxqv3Xx9clIHLUItyQK0Z6gwGMbVEFe6YYhgDtwslMAP0y6b0WeJEIZJMLgT7VYpRw==} resolution: {integrity: sha512-ldHTe+LVgC6L4Wr6doAQQ7Ku0jAdhaaPg1T+IHzmmiRZb2Uq5OsjW2yC65JifOmzPCiMkIZE2mGRpWgkn5ktlw==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/client-personalization@5.12.0': '@algolia/client-personalization@5.13.0':
resolution: {integrity: sha512-bUV9HtfkTBgpoVhxFrMkmVPG03ZN1Rtn51kiaEtukucdk3ggjR9Qu1YUfRSU2lFgxr9qJc8lTxwfvhjCeJRcqw==} resolution: {integrity: sha512-RnCfOSN4OUJDuMNHFca2M8lY64Tmw0kQOZikge4TknTqHmlbKJb8IbJE7Rol79Z80W2Y+B1ydcjV7DPje4GMRA==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/client-query-suggestions@5.12.0': '@algolia/client-query-suggestions@5.13.0':
resolution: {integrity: sha512-Q5CszzGWfxbIDs9DJ/QJsL7bP6h+lJMg27KxieEnI9KGCu0Jt5iFA3GkREkgRZxRdzlHbZKkrIzhtHVbSHw/rg==} resolution: {integrity: sha512-pYo0jbLUtPDN1r341UHTaF2fgN5rbaZfDZqjPRKPM+FRlRmxFxqFQm1UUfpkSUWYGn7lECwDpbKYiKUf81MTwA==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/client-search@5.12.0': '@algolia/client-search@5.13.0':
resolution: {integrity: sha512-R3qzEytgVLHOGNri+bpta6NtTt7YtkvUe/QBcAmMDjW4Jk1P0eBYIPfvnzIPbINRsLxIq9fZs9uAYBgsrts4Zg==} resolution: {integrity: sha512-s2ge3uZ6Zg2sPSFibqijgEYsuorxcc8KVHg3I95nOPHvFHdnBtSHymhZvq4sp/fu8ijt/Y8jLwkuqm5myn+2Sg==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/ingestion@1.12.0': '@algolia/ingestion@1.13.0':
resolution: {integrity: sha512-zpHo6qhR22tL8FsdSI4DvEraPDi/019HmMrCFB/TUX98yzh5ooAU7sNW0qPL1I7+S++VbBmNzJOEU9VI8tEC8A==} resolution: {integrity: sha512-fm5LEOe4FPDOc1D+M9stEs8hfcdmbdD+pt9og5shql6ueTZJANDbFoQhDOpiPJizR/ps1GwmjkWfUEywx3sV+Q==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/monitoring@1.12.0': '@algolia/monitoring@1.13.0':
resolution: {integrity: sha512-i2AJZED/zf4uhxezAJUhMKoL5QoepCBp2ynOYol0N76+TSoohaMADdPnWCqOULF4RzOwrG8wWynAwBlXsAI1RQ==} resolution: {integrity: sha512-e8Hshlnm2G5fapyUgWTBwhJ22yXcnLtPC4LWZKx7KOvv35GcdoHtlUBX94I/sWCJLraUr65JvR8qOo3LXC43dg==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/recommend@5.12.0': '@algolia/recommend@5.13.0':
resolution: {integrity: sha512-0jmZyKvYnB/Bj5c7WKsKedOUjnr0UtXm0LVFUdQrxXfqOqvWv9n6Vpr65UjdYG4Q49kRQxhlwtal9WJYrYymXg==} resolution: {integrity: sha512-53/wW96oaj1FKMzGdFcZ/epygfTppLDUvgI1thLkd475EtVZCH3ZZVUNCEvf1AtnNyH1RnItkFzX8ayWCpx2PQ==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/requester-browser-xhr@5.12.0': '@algolia/requester-browser-xhr@5.13.0':
resolution: {integrity: sha512-KxwleraFuVoEGCoeW6Y1RAEbgBMS7SavqeyzWdtkJc6mXeCOJXn1iZitb8Tyn2FcpMNUKlSm0adrUTt7G47+Ow==} resolution: {integrity: sha512-NV6oSCt5lFuzfsVQoSBpewEWf/h4ySr7pv2bfwu9yF/jc/g39pig8+YpuqsxlRWBm/lTGVA2V0Ai9ySwrNumIA==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/requester-fetch@5.12.0': '@algolia/requester-fetch@5.13.0':
resolution: {integrity: sha512-FuDZXUGU1pAg2HCnrt8+q1VGHKChV/LhvjvZlLOT7e56GJie6p+EuLu4/hMKPOVuQQ8XXtrTHKIU3Lw+7O5/bQ==} resolution: {integrity: sha512-094bK4rumf+rXJazxv3mq6eKRM0ep5AxIo8T0YmOdldswQt79apeufFiPLN19nHEWH22xR2FelimD+T/wRSP+Q==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@algolia/requester-node-http@5.12.0': '@algolia/requester-node-http@5.13.0':
resolution: {integrity: sha512-ncDDY7CxZhMs6LIoPl+vHFQceIBhYPY5EfuGF1V7beO0U38xfsCYEyutEFB2kRzf4D9Gqppn3iWX71sNtrKcuw==} resolution: {integrity: sha512-JY5xhEYMgki53Wm+A6R2jUpOUdD0zZnBq+PC5R1TGMNOYL1s6JjDrJeMsvaI2YWxYMUSoCnRoltN/yf9RI8n3A==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
'@babel/helper-string-parser@7.25.9': '@babel/helper-string-parser@7.25.9':
@@ -723,8 +723,8 @@ packages:
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
hasBin: true hasBin: true
algoliasearch@5.12.0: algoliasearch@5.13.0:
resolution: {integrity: sha512-psGBRYdGgik8I6m28iAB8xpubvjEt7UQU+w5MAJUA2324WHiGoHap5BPkkjB14rMaXeRts6pmOsrVIglGyOVwg==} resolution: {integrity: sha512-04lyQX3Ev/oLYQx+aagamQDXvkUUfX1mwrLrus15+9fNaYj28GDxxEzbwaRfvmHFcZyoxvup7mMtDTTw8SrTEQ==}
engines: {node: '>= 14.0.0'} engines: {node: '>= 14.0.0'}
anymatch@3.1.3: anymatch@3.1.3:
@@ -1238,8 +1238,8 @@ packages:
engines: {node: '>=16'} engines: {node: '>=16'}
hasBin: true hasBin: true
wrangler@3.84.1: wrangler@3.85.0:
resolution: {integrity: sha512-w27/QpIk2qz6aMIVi9T8cDcXMvh/RXjcL+vf4o5J2GpQAE4U7wTCNHyaY9H3oTJWRN97KqCAEbiHBNtTKoUJEw==} resolution: {integrity: sha512-r5YCWUaF4ApLnloNE6jHHgRYdFzYHoajTlC1tns42UzQ2Ls63VAqD3b0cxOqzDUfmlSb3skpmu0B0Ssi3QWPAg==}
engines: {node: '>=16.17.0'} engines: {node: '>=16.17.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -1274,110 +1274,110 @@ packages:
snapshots: snapshots:
'@algolia/autocomplete-core@1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)(search-insights@2.13.0)': '@algolia/autocomplete-core@1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)(search-insights@2.13.0)':
dependencies: dependencies:
'@algolia/autocomplete-plugin-algolia-insights': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)(search-insights@2.13.0) '@algolia/autocomplete-plugin-algolia-insights': 1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)(search-insights@2.13.0)
'@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0) '@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@algolia/client-search' - '@algolia/client-search'
- algoliasearch - algoliasearch
- search-insights - search-insights
'@algolia/autocomplete-plugin-algolia-insights@1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)(search-insights@2.13.0)': '@algolia/autocomplete-plugin-algolia-insights@1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)(search-insights@2.13.0)':
dependencies: dependencies:
'@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0) '@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)
search-insights: 2.13.0 search-insights: 2.13.0
transitivePeerDependencies: transitivePeerDependencies:
- '@algolia/client-search' - '@algolia/client-search'
- algoliasearch - algoliasearch
'@algolia/autocomplete-preset-algolia@1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)': '@algolia/autocomplete-preset-algolia@1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)':
dependencies: dependencies:
'@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0) '@algolia/autocomplete-shared': 1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)
'@algolia/client-search': 5.12.0 '@algolia/client-search': 5.13.0
algoliasearch: 5.12.0 algoliasearch: 5.13.0
'@algolia/autocomplete-shared@1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)': '@algolia/autocomplete-shared@1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)':
dependencies: dependencies:
'@algolia/client-search': 5.12.0 '@algolia/client-search': 5.13.0
algoliasearch: 5.12.0 algoliasearch: 5.13.0
'@algolia/client-abtesting@5.12.0': '@algolia/client-abtesting@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/client-analytics@5.12.0': '@algolia/client-analytics@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/client-common@5.12.0': {} '@algolia/client-common@5.13.0': {}
'@algolia/client-insights@5.12.0': '@algolia/client-insights@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/client-personalization@5.12.0': '@algolia/client-personalization@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/client-query-suggestions@5.12.0': '@algolia/client-query-suggestions@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/client-search@5.12.0': '@algolia/client-search@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/ingestion@1.12.0': '@algolia/ingestion@1.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/monitoring@1.12.0': '@algolia/monitoring@1.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/recommend@5.12.0': '@algolia/recommend@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
'@algolia/requester-browser-xhr@5.12.0': '@algolia/requester-browser-xhr@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-fetch@5.12.0': '@algolia/requester-fetch@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/requester-node-http@5.12.0': '@algolia/requester-node-http@5.13.0':
dependencies: dependencies:
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@babel/helper-string-parser@7.25.9': {} '@babel/helper-string-parser@7.25.9': {}
@@ -1422,9 +1422,9 @@ snapshots:
'@docsearch/css@3.7.0': {} '@docsearch/css@3.7.0': {}
'@docsearch/js@3.7.0(@algolia/client-search@5.12.0)(search-insights@2.13.0)': '@docsearch/js@3.7.0(@algolia/client-search@5.13.0)(search-insights@2.13.0)':
dependencies: dependencies:
'@docsearch/react': 3.7.0(@algolia/client-search@5.12.0)(search-insights@2.13.0) '@docsearch/react': 3.7.0(@algolia/client-search@5.13.0)(search-insights@2.13.0)
preact: 10.24.3 preact: 10.24.3
transitivePeerDependencies: transitivePeerDependencies:
- '@algolia/client-search' - '@algolia/client-search'
@@ -1433,12 +1433,12 @@ snapshots:
- react-dom - react-dom
- search-insights - search-insights
'@docsearch/react@3.7.0(@algolia/client-search@5.12.0)(search-insights@2.13.0)': '@docsearch/react@3.7.0(@algolia/client-search@5.13.0)(search-insights@2.13.0)':
dependencies: dependencies:
'@algolia/autocomplete-core': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0)(search-insights@2.13.0) '@algolia/autocomplete-core': 1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)(search-insights@2.13.0)
'@algolia/autocomplete-preset-algolia': 1.17.6(@algolia/client-search@5.12.0)(algoliasearch@5.12.0) '@algolia/autocomplete-preset-algolia': 1.17.6(@algolia/client-search@5.13.0)(algoliasearch@5.13.0)
'@docsearch/css': 3.7.0 '@docsearch/css': 3.7.0
algoliasearch: 5.12.0 algoliasearch: 5.13.0
optionalDependencies: optionalDependencies:
search-insights: 2.13.0 search-insights: 2.13.0
transitivePeerDependencies: transitivePeerDependencies:
@@ -1837,21 +1837,21 @@ snapshots:
acorn@8.14.0: {} acorn@8.14.0: {}
algoliasearch@5.12.0: algoliasearch@5.13.0:
dependencies: dependencies:
'@algolia/client-abtesting': 5.12.0 '@algolia/client-abtesting': 5.13.0
'@algolia/client-analytics': 5.12.0 '@algolia/client-analytics': 5.13.0
'@algolia/client-common': 5.12.0 '@algolia/client-common': 5.13.0
'@algolia/client-insights': 5.12.0 '@algolia/client-insights': 5.13.0
'@algolia/client-personalization': 5.12.0 '@algolia/client-personalization': 5.13.0
'@algolia/client-query-suggestions': 5.12.0 '@algolia/client-query-suggestions': 5.13.0
'@algolia/client-search': 5.12.0 '@algolia/client-search': 5.13.0
'@algolia/ingestion': 1.12.0 '@algolia/ingestion': 1.13.0
'@algolia/monitoring': 1.12.0 '@algolia/monitoring': 1.13.0
'@algolia/recommend': 5.12.0 '@algolia/recommend': 5.13.0
'@algolia/requester-browser-xhr': 5.12.0 '@algolia/requester-browser-xhr': 5.13.0
'@algolia/requester-fetch': 5.12.0 '@algolia/requester-fetch': 5.13.0
'@algolia/requester-node-http': 5.12.0 '@algolia/requester-node-http': 5.13.0
anymatch@3.1.3: anymatch@3.1.3:
dependencies: dependencies:
@@ -2369,10 +2369,10 @@ snapshots:
'@types/node': 22.9.0 '@types/node': 22.9.0
fsevents: 2.3.3 fsevents: 2.3.3
vitepress@1.5.0(@algolia/client-search@5.12.0)(@types/node@22.9.0)(postcss@8.4.47)(search-insights@2.13.0)(typescript@5.4.5): vitepress@1.5.0(@algolia/client-search@5.13.0)(@types/node@22.9.0)(postcss@8.4.47)(search-insights@2.13.0)(typescript@5.4.5):
dependencies: dependencies:
'@docsearch/css': 3.7.0 '@docsearch/css': 3.7.0
'@docsearch/js': 3.7.0(@algolia/client-search@5.12.0)(search-insights@2.13.0) '@docsearch/js': 3.7.0(@algolia/client-search@5.13.0)(search-insights@2.13.0)
'@iconify-json/simple-icons': 1.2.11 '@iconify-json/simple-icons': 1.2.11
'@shikijs/core': 1.22.2 '@shikijs/core': 1.22.2
'@shikijs/transformers': 1.22.2 '@shikijs/transformers': 1.22.2
@@ -2441,7 +2441,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20241022.0 '@cloudflare/workerd-linux-arm64': 1.20241022.0
'@cloudflare/workerd-windows-64': 1.20241022.0 '@cloudflare/workerd-windows-64': 1.20241022.0
wrangler@3.84.1: wrangler@3.85.0:
dependencies: dependencies:
'@cloudflare/kv-asset-handler': 0.3.4 '@cloudflare/kv-asset-handler': 0.3.4
'@cloudflare/workers-shared': 0.7.0 '@cloudflare/workers-shared': 0.7.0

View File

@@ -1,6 +1,6 @@
{ {
"name": "cloudflare_temp_email", "name": "cloudflare_temp_email",
"version": "0.7.6", "version": "0.8.0",
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
@@ -11,17 +11,17 @@
"build": "wrangler deploy --dry-run --outdir dist --minify" "build": "wrangler deploy --dry-run --outdir dist --minify"
}, },
"devDependencies": { "devDependencies": {
"@cloudflare/workers-types": "^4.20241022.0", "@cloudflare/workers-types": "^4.20241106.0",
"@eslint/js": "8.56.0", "@eslint/js": "8.56.0",
"@simplewebauthn/types": "^10.0.0", "@simplewebauthn/types": "^10.0.0",
"eslint": "8.56.0", "eslint": "8.56.0",
"globals": "^15.12.0", "globals": "^15.12.0",
"typescript-eslint": "^7.18.0", "typescript-eslint": "^7.18.0",
"wrangler": "^3.84.1" "wrangler": "^3.85.0"
}, },
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "^3.685.0", "@aws-sdk/client-s3": "^3.687.0",
"@aws-sdk/s3-request-presigner": "^3.685.0", "@aws-sdk/s3-request-presigner": "^3.687.0",
"@simplewebauthn/server": "^10.0.1", "@simplewebauthn/server": "^10.0.1",
"hono": "^4.6.9", "hono": "^4.6.9",
"mimetext": "^3.0.24", "mimetext": "^3.0.24",

496
worker/pnpm-lock.yaml generated
View File

@@ -14,11 +14,11 @@ importers:
.: .:
dependencies: dependencies:
'@aws-sdk/client-s3': '@aws-sdk/client-s3':
specifier: ^3.685.0 specifier: ^3.687.0
version: 3.685.0 version: 3.687.0
'@aws-sdk/s3-request-presigner': '@aws-sdk/s3-request-presigner':
specifier: ^3.685.0 specifier: ^3.687.0
version: 3.685.0 version: 3.687.0
'@simplewebauthn/server': '@simplewebauthn/server':
specifier: ^10.0.1 specifier: ^10.0.1
version: 10.0.1 version: 10.0.1
@@ -39,8 +39,8 @@ importers:
version: 4.16.3(patch_hash=pnqp5pf7vetkijrc5uah4r5w6m) version: 4.16.3(patch_hash=pnqp5pf7vetkijrc5uah4r5w6m)
devDependencies: devDependencies:
'@cloudflare/workers-types': '@cloudflare/workers-types':
specifier: ^4.20241022.0 specifier: ^4.20241106.0
version: 4.20241022.0 version: 4.20241106.0
'@eslint/js': '@eslint/js':
specifier: 8.56.0 specifier: 8.56.0
version: 8.56.0 version: 8.56.0
@@ -57,8 +57,8 @@ importers:
specifier: ^7.18.0 specifier: ^7.18.0
version: 7.18.0(eslint@8.56.0)(typescript@5.4.5) version: 7.18.0(eslint@8.56.0)(typescript@5.4.5)
wrangler: wrangler:
specifier: ^3.84.1 specifier: ^3.85.0
version: 3.84.1(@cloudflare/workers-types@4.20241022.0) version: 3.85.0(@cloudflare/workers-types@4.20241106.0)
packages: packages:
@@ -85,143 +85,143 @@ packages:
'@aws-crypto/util@5.2.0': '@aws-crypto/util@5.2.0':
resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==}
'@aws-sdk/client-s3@3.685.0': '@aws-sdk/client-s3@3.687.0':
resolution: {integrity: sha512-ClvMeQHbLhWkpxnVymo4qWS5/yZcPXjorDbSday3joCWYWCSHTO409nWd+jx6eA4MKT/EY/uJ6ZBJRFfByKLuA==} resolution: {integrity: sha512-2IoaVAd7HCIDhfeTTrk8CAosEVqnQig47Tra2uOBEyzpcCFQLmcY57/sbHCpJ3ntnU8see53q0bQ+fdew4MGLA==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/client-sso-oidc@3.682.0': '@aws-sdk/client-sso-oidc@3.687.0':
resolution: {integrity: sha512-ZPZ7Y/r/w3nx/xpPzGSqSQsB090Xk5aZZOH+WBhTDn/pBEuim09BYXCLzvvxb7R7NnuoQdrTJiwimdJAhHl7ZQ==} resolution: {integrity: sha512-Rdd8kLeTeh+L5ZuG4WQnWgYgdv7NorytKdZsGjiag1D8Wv3PcJvPqqWdgnI0Og717BSXVoaTYaN34FyqFYSx6Q==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
peerDependencies: peerDependencies:
'@aws-sdk/client-sts': ^3.682.0 '@aws-sdk/client-sts': ^3.687.0
'@aws-sdk/client-sso@3.682.0': '@aws-sdk/client-sso@3.687.0':
resolution: {integrity: sha512-PYH9RFUMYLFl66HSBq4tIx6fHViMLkhJHTYJoJONpBs+Td+NwVJ895AdLtDsBIhMS0YseCbPpuyjUCJgsUrwUw==} resolution: {integrity: sha512-dfj0y9fQyX4kFill/ZG0BqBTLQILKlL7+O5M4F9xlsh2WNuV2St6WtcOg14Y1j5UODPJiJs//pO+mD1lihT5Kw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/client-sts@3.682.0': '@aws-sdk/client-sts@3.687.0':
resolution: {integrity: sha512-xKuo4HksZ+F8m9DOfx/ZuWNhaPuqZFPwwy0xqcBT6sWH7OAuBjv/fnpOTzyQhpVTWddlf+ECtMAMrxjxuOExGQ==} resolution: {integrity: sha512-SQjDH8O4XCTtouuCVYggB0cCCrIaTzUZIkgJUpOsIEJBLlTbNOb/BZqUShAQw2o9vxr2rCeOGjAQOYPysW/Pmg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/core@3.679.0': '@aws-sdk/core@3.686.0':
resolution: {integrity: sha512-CS6PWGX8l4v/xyvX8RtXnBisdCa5+URzKd0L6GvHChype9qKUVxO/Gg6N/y43Hvg7MNWJt9FBPNWIxUB+byJwg==} resolution: {integrity: sha512-Xt3DV4DnAT3v2WURwzTxWQK34Ew+iiLzoUoguvLaZrVMFOqMMrwVjP+sizqIaHp1j7rGmFcN5I8saXnsDLuQLA==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/credential-provider-env@3.679.0': '@aws-sdk/credential-provider-env@3.686.0':
resolution: {integrity: sha512-EdlTYbzMm3G7VUNAMxr9S1nC1qUNqhKlAxFU8E7cKsAe8Bp29CD5HAs3POc56AVo9GC4yRIS+/mtlZSmrckzUA==} resolution: {integrity: sha512-osD7lPO8OREkgxPiTWmA1i6XEmOth1uW9HWWj/+A2YGCj1G/t2sHu931w4Qj9NWHYZtbTTXQYVRg+TErALV7nQ==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/credential-provider-http@3.679.0': '@aws-sdk/credential-provider-http@3.686.0':
resolution: {integrity: sha512-ZoKLubW5DqqV1/2a3TSn+9sSKg0T8SsYMt1JeirnuLJF0mCoYFUaWMyvxxKuxPoqvUsaycxKru4GkpJ10ltNBw==} resolution: {integrity: sha512-xyGAD/f3vR/wssUiZrNFWQWXZvI4zRm2wpHhoHA1cC2fbRMNFYtFn365yw6dU7l00ZLcdFB1H119AYIUZS7xbw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/credential-provider-ini@3.682.0': '@aws-sdk/credential-provider-ini@3.687.0':
resolution: {integrity: sha512-6eqWeHdK6EegAxqDdiCi215nT3QZPwukgWAYuVxNfJ/5m0/P7fAzF+D5kKVgByUvGJEbq/FEL8Fw7OBe64AA+g==} resolution: {integrity: sha512-6d5ZJeZch+ZosJccksN0PuXv7OSnYEmanGCnbhUqmUSz9uaVX6knZZfHCZJRgNcfSqg9QC0zsFA/51W5HCUqSQ==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
peerDependencies: peerDependencies:
'@aws-sdk/client-sts': ^3.682.0 '@aws-sdk/client-sts': ^3.687.0
'@aws-sdk/credential-provider-node@3.682.0': '@aws-sdk/credential-provider-node@3.687.0':
resolution: {integrity: sha512-HSmDqZcBVZrTctHCT9m++vdlDfJ1ARI218qmZa+TZzzOFNpKWy6QyHMEra45GB9GnkkMmV6unoDSPMuN0AqcMg==} resolution: {integrity: sha512-Pqld8Nx11NYaBUrVk3bYiGGpLCxkz8iTONlpQWoVWFhSOzlO7zloNOaYbD2XgFjjqhjlKzE91drs/f41uGeCTA==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/credential-provider-process@3.679.0': '@aws-sdk/credential-provider-process@3.686.0':
resolution: {integrity: sha512-u/p4TV8kQ0zJWDdZD4+vdQFTMhkDEJFws040Gm113VHa/Xo1SYOjbpvqeuFoz6VmM0bLvoOWjxB9MxnSQbwKpQ==} resolution: {integrity: sha512-sXqaAgyzMOc+dm4CnzAR5Q6S9OWVHyZjLfW6IQkmGjqeQXmZl24c4E82+w64C+CTkJrFLzH1VNOYp1Hy5gE6Qw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/credential-provider-sso@3.682.0': '@aws-sdk/credential-provider-sso@3.687.0':
resolution: {integrity: sha512-h7IH1VsWgV6YAJSWWV6y8uaRjGqLY3iBpGZlXuTH/c236NMLaNv+WqCBLeBxkFGUb2WeQ+FUPEJDCD69rgLIkg==} resolution: {integrity: sha512-N1YCoE7DovIRF2ReyRrA4PZzF0WNi4ObPwdQQkVxhvSm7PwjbWxrfq7rpYB+6YB1Uq3QPzgVwUFONE36rdpxUQ==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/credential-provider-web-identity@3.679.0': '@aws-sdk/credential-provider-web-identity@3.686.0':
resolution: {integrity: sha512-a74tLccVznXCaBefWPSysUcLXYJiSkeUmQGtalNgJ1vGkE36W5l/8czFiiowdWdKWz7+x6xf0w+Kjkjlj42Ung==} resolution: {integrity: sha512-40UqCpPxyHCXDP7CGd9JIOZDgDZf+u1OyLaGBpjQJlz1HYuEsIWnnbTe29Yg3Ah/Zc3g4NBWcUdlGVotlnpnDg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
peerDependencies: peerDependencies:
'@aws-sdk/client-sts': ^3.679.0 '@aws-sdk/client-sts': ^3.686.0
'@aws-sdk/middleware-bucket-endpoint@3.679.0': '@aws-sdk/middleware-bucket-endpoint@3.686.0':
resolution: {integrity: sha512-5EpiPhhGgnF+uJR4DzWUk6Lx3pOn9oM6JGXxeHsiynfoBfq7vHMleq+uABHHSQS+y7XzbyZ7x8tXNQlliMwOsg==} resolution: {integrity: sha512-6qCoWI73/HDzQE745MHQUYz46cAQxHCgy1You8MZQX9vHAQwqBnkcsb2hGp7S6fnQY5bNsiZkMWVQ/LVd2MNjg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-expect-continue@3.679.0': '@aws-sdk/middleware-expect-continue@3.686.0':
resolution: {integrity: sha512-nYsh9PdWrF4EahTRdXHGlNud82RPc508CNGdh1lAGfPU3tNveGfMBX3PcGBtPOse3p9ebNKRWVmUc9eXSjGvHA==} resolution: {integrity: sha512-5yYqIbyhLhH29vn4sHiTj7sU6GttvLMk3XwCmBXjo2k2j3zHqFUwh9RyFGF9VY6Z392Drf/E/cl+qOGypwULpg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-flexible-checksums@3.682.0': '@aws-sdk/middleware-flexible-checksums@3.687.0':
resolution: {integrity: sha512-5u1STth6iZUtAvPDO0NJVYKUX2EYKU7v84MYYaZ3O27HphRjFqDos0keL2KTnHn/KmMD68rM3yiUareWR8hnAQ==} resolution: {integrity: sha512-hsEr3eiJs7gOzj9nDMCMfhLkoYv4Z8m7fbic63TkeyimXvsHycqqF6PX0TkPykwa1ueyxVpz0vtO5u1rlucN2w==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-host-header@3.679.0': '@aws-sdk/middleware-host-header@3.686.0':
resolution: {integrity: sha512-y176HuQ8JRY3hGX8rQzHDSbCl9P5Ny9l16z4xmaiLo+Qfte7ee4Yr3yaAKd7GFoJ3/Mhud2XZ37fR015MfYl2w==} resolution: {integrity: sha512-+Yc6rO02z+yhFbHmRZGvEw1vmzf/ifS9a4aBjJGeVVU+ZxaUvnk+IUZWrj4YQopUQ+bSujmMUzJLXSkbDq7yuw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-location-constraint@3.679.0': '@aws-sdk/middleware-location-constraint@3.686.0':
resolution: {integrity: sha512-SA1C1D3XgoKTGxyNsOqd016ONpk46xJLWDgJUd00Zb21Ox5wYCoY6aDRKiaMRW+1VfCJdezs1Do3XLyIU9KxyA==} resolution: {integrity: sha512-pCLeZzt5zUGY3NbW4J/5x3kaHyJEji4yqtoQcUlJmkoEInhSxJ0OE8sTxAfyL3nIOF4yr6L2xdaLCqYgQT8Aog==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-logger@3.679.0': '@aws-sdk/middleware-logger@3.686.0':
resolution: {integrity: sha512-0vet8InEj7nvIvGKk+ch7bEF5SyZ7Us9U7YTEgXPrBNStKeRUsgwRm0ijPWWd0a3oz2okaEwXsFl7G/vI0XiEA==} resolution: {integrity: sha512-cX43ODfA2+SPdX7VRxu6gXk4t4bdVJ9pkktbfnkE5t27OlwNfvSGGhnHrQL8xTOFeyQ+3T+oowf26gf1OI+vIg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-recursion-detection@3.679.0': '@aws-sdk/middleware-recursion-detection@3.686.0':
resolution: {integrity: sha512-sQoAZFsQiW/LL3DfKMYwBoGjYDEnMbA9WslWN8xneCmBAwKo6IcSksvYs23PP8XMIoBGe2I2J9BSr654XWygTQ==} resolution: {integrity: sha512-jF9hQ162xLgp9zZ/3w5RUNhmwVnXDBlABEUX8jCgzaFpaa742qR/KKtjjZQ6jMbQnP+8fOCSXFAVNMU+s6v81w==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-sdk-s3@3.685.0': '@aws-sdk/middleware-sdk-s3@3.687.0':
resolution: {integrity: sha512-C4w92b3A99NbghrA2Ssw6y1RbDF3I3Bgzi2Izh0pXgyIoDiX0xs9bUs/FGYLK4uepYr78DAZY8DwEpzjWIXkSA==} resolution: {integrity: sha512-YGHYqiyRiNNucmvLrfx3QxIkjSDWR/+cc72bn0lPvqFUQBRHZgmYQLxVYrVZSmRzzkH2FQ1HsZcXhOafLbq4vQ==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-ssec@3.679.0': '@aws-sdk/middleware-ssec@3.686.0':
resolution: {integrity: sha512-4GNUxXbs1M71uFHRiCAZtN0/g23ogI9YjMe5isAuYMHXwDB3MhqF7usKf954mBP6tplvN44vYlbJ84faaLrTtg==} resolution: {integrity: sha512-zJXml/CpVHFUdlGQqja87vNQ3rPB5SlDbfdwxlj1KBbjnRRwpBtxxmOlWRShg8lnVV6aIMGv95QmpIFy4ayqnQ==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/middleware-user-agent@3.682.0': '@aws-sdk/middleware-user-agent@3.687.0':
resolution: {integrity: sha512-7TyvYR9HdGH1/Nq0eeApUTM4izB6rExiw87khVYuJwZHr6FmvIL1FsOVFro/4WlXa0lg4LiYOm/8H8dHv+fXTg==} resolution: {integrity: sha512-nUgsKiEinyA50CaDXojAkOasAU3Apdg7Qox6IjNUC4ZjgOu7QWsCDB5N28AYMUt06cNYeYQdfMX1aEzG85a1Mg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/region-config-resolver@3.679.0': '@aws-sdk/region-config-resolver@3.686.0':
resolution: {integrity: sha512-Ybx54P8Tg6KKq5ck7uwdjiKif7n/8g1x+V0V9uTjBjRWqaIgiqzXwKWoPj6NCNkE7tJNtqI4JrNxp/3S3HvmRw==} resolution: {integrity: sha512-6zXD3bSD8tcsMAVVwO1gO7rI1uy2fCD3czgawuPGPopeLiPpo6/3FoUWCQzk2nvEhj7p9Z4BbjwZGSlRkVrXTw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/s3-request-presigner@3.685.0': '@aws-sdk/s3-request-presigner@3.687.0':
resolution: {integrity: sha512-OTFQRXlAff/tRE2GfhqAgVaWkRSHUzj9ebvdd3979zcIELHY3kWBJ/XbefElXg1lhsumKdZl/gLpeA76GyQDPQ==} resolution: {integrity: sha512-/fX3F4nYjVEgdlVamsb2tDgnFA5dtzxkeN+hH91e+ZoBMJBow+FUb2EEtjloreGUynPx6E00UxdDXIKWmt99lA==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/signature-v4-multi-region@3.685.0': '@aws-sdk/signature-v4-multi-region@3.687.0':
resolution: {integrity: sha512-IHLwuAZGqfUWVrNqw0ugnBa7iL8uBP4x6A7bfBDXRXWCWjUCed/1/D//0lKDHwpFkV74fGW6KoBacnWSUlXmwA==} resolution: {integrity: sha512-vdOQHCRHJPX9mT8BM6xOseazHD6NodvHl9cyF5UjNtLn+gERRJEItIA9hf0hlt62odGD8Fqp+rFRuqdmbNkcNw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/token-providers@3.679.0': '@aws-sdk/token-providers@3.686.0':
resolution: {integrity: sha512-1/+Zso/x2jqgutKixYFQEGli0FELTgah6bm7aB+m2FAWH4Hz7+iMUsazg6nSWm714sG9G3h5u42Dmpvi9X6/hA==} resolution: {integrity: sha512-9oL4kTCSePFmyKPskibeiOXV6qavPZ63/kXM9Wh9V6dTSvBtLeNnMxqGvENGKJcTdIgtoqyqA6ET9u0PJ5IRIg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
peerDependencies: peerDependencies:
'@aws-sdk/client-sso-oidc': ^3.679.0 '@aws-sdk/client-sso-oidc': ^3.686.0
'@aws-sdk/types@3.679.0': '@aws-sdk/types@3.686.0':
resolution: {integrity: sha512-NwVq8YvInxQdJ47+zz4fH3BRRLC6lL+WLkvr242PVBbUOLRyK/lkwHlfiKUoeVIMyK5NF+up6TRg71t/8Bny6Q==} resolution: {integrity: sha512-xFnrb3wxOoJcW2Xrh63ZgFo5buIu9DF7bOHnwoUxHdNpUXicUh0AHw85TjXxyxIAd0d1psY/DU7QHoNI3OswgQ==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/util-arn-parser@3.679.0': '@aws-sdk/util-arn-parser@3.679.0':
resolution: {integrity: sha512-CwzEbU8R8rq9bqUFryO50RFBlkfufV9UfMArHPWlo+lmsC+NlSluHQALoj6Jkq3zf5ppn1CN0c1DDLrEqdQUXg==} resolution: {integrity: sha512-CwzEbU8R8rq9bqUFryO50RFBlkfufV9UfMArHPWlo+lmsC+NlSluHQALoj6Jkq3zf5ppn1CN0c1DDLrEqdQUXg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/util-endpoints@3.679.0': '@aws-sdk/util-endpoints@3.686.0':
resolution: {integrity: sha512-YL6s4Y/1zC45OvddvgE139fjeWSKKPgLlnfrvhVL7alNyY9n7beR4uhoDpNrt5mI6sn9qiBF17790o+xLAXjjg==} resolution: {integrity: sha512-7msZE2oYl+6QYeeRBjlDgxQUhq/XRky3cXE0FqLFs2muLS7XSuQEXkpOXB3R782ygAP6JX0kmBxPTLurRTikZg==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/util-format-url@3.679.0': '@aws-sdk/util-format-url@3.686.0':
resolution: {integrity: sha512-pqV1b/hJ/kumtF8AwObJ7bsGgs/2zuAdZtalSD8Pu4jdjOji3IBwP79giAHyhVwoXaMjkpG3mG4ldn9CVtzZJA==} resolution: {integrity: sha512-9doB6O4FAlnWZrvnFDUxTtSFtuL8kUqxlP00HTiDgL1uDJZ8e0S4gqjKR+9+N5goFtxGi7IJeNsDEz2H7imvgw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/util-locate-window@3.679.0': '@aws-sdk/util-locate-window@3.679.0':
resolution: {integrity: sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA==} resolution: {integrity: sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@aws-sdk/util-user-agent-browser@3.679.0': '@aws-sdk/util-user-agent-browser@3.686.0':
resolution: {integrity: sha512-CusSm2bTBG1kFypcsqU8COhnYc6zltobsqs3nRrvYqYaOqtMnuE46K4XTWpnzKgwDejgZGOE+WYyprtAxrPvmQ==} resolution: {integrity: sha512-YiQXeGYZegF1b7B2GOR61orhgv79qmI0z7+Agm3NXLO6hGfVV3kFUJbXnjtH1BgWo5hbZYW7HQ2omGb3dnb6Lg==}
'@aws-sdk/util-user-agent-node@3.682.0': '@aws-sdk/util-user-agent-node@3.687.0':
resolution: {integrity: sha512-so5s+j0gPoTS0HM4HPL+G0ajk0T6cQAg8JXzRgvyiQAxqie+zGCZAV3VuVeMNWMVbzsgZl0pYZaatPFTLG/AxA==} resolution: {integrity: sha512-idkP6ojSTZ4ek1pJ8wIN7r9U3KR5dn0IkJn3KQBXQ58LWjkRqLtft2vxzdsktWwhPKjjmIKl1S0kbvqLawf8XQ==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
peerDependencies: peerDependencies:
aws-crt: '>=1.0.0' aws-crt: '>=1.0.0'
@@ -229,8 +229,8 @@ packages:
aws-crt: aws-crt:
optional: true optional: true
'@aws-sdk/xml-builder@3.679.0': '@aws-sdk/xml-builder@3.686.0':
resolution: {integrity: sha512-nPmhVZb39ty5bcQ7mAwtjezBcsBqTYZ9A2D9v/lE92KCLdu5RhSkPH7O71ZqbZx1mUSg9fAOxHPiG79U5VlpLQ==} resolution: {integrity: sha512-k0z5b5dkYSuOHY0AOZ4iyjcGBeVL9lWsQNF4+c+1oK3OW4fRWl/bNa1soMRMpangsHPzgyn/QkzuDbl7qR4qrw==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@babel/runtime-corejs3@7.26.0': '@babel/runtime-corejs3@7.26.0':
@@ -279,8 +279,8 @@ packages:
resolution: {integrity: sha512-LLQRTqx7lKC7o2eCYMpyc5FXV8d0pUX6r3A+agzhqS9aoR5A6zCPefwQGcvbKx83ozX22ATZcemwxQXn12UofQ==} resolution: {integrity: sha512-LLQRTqx7lKC7o2eCYMpyc5FXV8d0pUX6r3A+agzhqS9aoR5A6zCPefwQGcvbKx83ozX22ATZcemwxQXn12UofQ==}
engines: {node: '>=16.7.0'} engines: {node: '>=16.7.0'}
'@cloudflare/workers-types@4.20241022.0': '@cloudflare/workers-types@4.20241106.0':
resolution: {integrity: sha512-1zOAw5QIDKItzGatzCrEpfLOB1AuMTwVqKmbw9B9eBfCUGRFNfJYMrJxIwcse9EmKahsQt2GruqU00pY/GyXgg==} resolution: {integrity: sha512-pI4ivacmp+vgNO/siHDsZ6BdITR0LC4Mh/1+yzVLcl9U75pt5DUDCOWOiqIRFXRq6H65DPnJbEPFo3x9UfgofQ==}
'@cspotcode/source-map-support@0.8.1': '@cspotcode/source-map-support@0.8.1':
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
@@ -575,9 +575,6 @@ packages:
resolution: {integrity: sha512-ewG1GHbbqsFZ4asaq40KmxCmXO+AFSM1b+DcO2C03dyJj/ZH71CiTg853FSE/3SHK9q3jiYQIFjlGSwfxQ9kww==} resolution: {integrity: sha512-ewG1GHbbqsFZ4asaq40KmxCmXO+AFSM1b+DcO2C03dyJj/ZH71CiTg853FSE/3SHK9q3jiYQIFjlGSwfxQ9kww==}
engines: {node: '>=16.0.0'} engines: {node: '>=16.0.0'}
'@smithy/fetch-http-handler@3.2.9':
resolution: {integrity: sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==}
'@smithy/fetch-http-handler@4.0.0': '@smithy/fetch-http-handler@4.0.0':
resolution: {integrity: sha512-MLb1f5tbBO2X6K4lMEKJvxeLooyg7guq48C2zKr4qM7F2Gpkz4dc+hdSgu77pCJ76jVqFBjZczHYAs6dp15N+g==} resolution: {integrity: sha512-MLb1f5tbBO2X6K4lMEKJvxeLooyg7guq48C2zKr4qM7F2Gpkz4dc+hdSgu77pCJ76jVqFBjZczHYAs6dp15N+g==}
@@ -943,8 +940,8 @@ packages:
cross-fetch@4.0.0: cross-fetch@4.0.0:
resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
cross-spawn@7.0.3: cross-spawn@7.0.5:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
data-uri-to-buffer@2.0.2: data-uri-to-buffer@2.0.2:
@@ -1704,8 +1701,8 @@ packages:
engines: {node: '>=16'} engines: {node: '>=16'}
hasBin: true hasBin: true
wrangler@3.84.1: wrangler@3.85.0:
resolution: {integrity: sha512-w27/QpIk2qz6aMIVi9T8cDcXMvh/RXjcL+vf4o5J2GpQAE4U7wTCNHyaY9H3oTJWRN97KqCAEbiHBNtTKoUJEw==} resolution: {integrity: sha512-r5YCWUaF4ApLnloNE6jHHgRYdFzYHoajTlC1tns42UzQ2Ls63VAqD3b0cxOqzDUfmlSb3skpmu0B0Ssi3QWPAg==}
engines: {node: '>=16.17.0'} engines: {node: '>=16.17.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -1755,20 +1752,20 @@ snapshots:
'@aws-crypto/crc32@5.2.0': '@aws-crypto/crc32@5.2.0':
dependencies: dependencies:
'@aws-crypto/util': 5.2.0 '@aws-crypto/util': 5.2.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-crypto/crc32c@5.2.0': '@aws-crypto/crc32c@5.2.0':
dependencies: dependencies:
'@aws-crypto/util': 5.2.0 '@aws-crypto/util': 5.2.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-crypto/sha1-browser@5.2.0': '@aws-crypto/sha1-browser@5.2.0':
dependencies: dependencies:
'@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0
'@aws-crypto/util': 5.2.0 '@aws-crypto/util': 5.2.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-locate-window': 3.679.0 '@aws-sdk/util-locate-window': 3.679.0
'@smithy/util-utf8': 2.3.0 '@smithy/util-utf8': 2.3.0
tslib: 2.8.1 tslib: 2.8.1
@@ -1778,7 +1775,7 @@ snapshots:
'@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/sha256-js': 5.2.0
'@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0
'@aws-crypto/util': 5.2.0 '@aws-crypto/util': 5.2.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-locate-window': 3.679.0 '@aws-sdk/util-locate-window': 3.679.0
'@smithy/util-utf8': 2.3.0 '@smithy/util-utf8': 2.3.0
tslib: 2.8.1 tslib: 2.8.1
@@ -1786,7 +1783,7 @@ snapshots:
'@aws-crypto/sha256-js@5.2.0': '@aws-crypto/sha256-js@5.2.0':
dependencies: dependencies:
'@aws-crypto/util': 5.2.0 '@aws-crypto/util': 5.2.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-crypto/supports-web-crypto@5.2.0': '@aws-crypto/supports-web-crypto@5.2.0':
@@ -1795,42 +1792,42 @@ snapshots:
'@aws-crypto/util@5.2.0': '@aws-crypto/util@5.2.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/util-utf8': 2.3.0 '@smithy/util-utf8': 2.3.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/client-s3@3.685.0': '@aws-sdk/client-s3@3.687.0':
dependencies: dependencies:
'@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha1-browser': 5.2.0
'@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/sha256-js': 5.2.0
'@aws-sdk/client-sso-oidc': 3.682.0(@aws-sdk/client-sts@3.682.0) '@aws-sdk/client-sso-oidc': 3.687.0(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/client-sts': 3.682.0 '@aws-sdk/client-sts': 3.687.0
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/credential-provider-node': 3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))(@aws-sdk/client-sts@3.682.0) '@aws-sdk/credential-provider-node': 3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/middleware-bucket-endpoint': 3.679.0 '@aws-sdk/middleware-bucket-endpoint': 3.686.0
'@aws-sdk/middleware-expect-continue': 3.679.0 '@aws-sdk/middleware-expect-continue': 3.686.0
'@aws-sdk/middleware-flexible-checksums': 3.682.0 '@aws-sdk/middleware-flexible-checksums': 3.687.0
'@aws-sdk/middleware-host-header': 3.679.0 '@aws-sdk/middleware-host-header': 3.686.0
'@aws-sdk/middleware-location-constraint': 3.679.0 '@aws-sdk/middleware-location-constraint': 3.686.0
'@aws-sdk/middleware-logger': 3.679.0 '@aws-sdk/middleware-logger': 3.686.0
'@aws-sdk/middleware-recursion-detection': 3.679.0 '@aws-sdk/middleware-recursion-detection': 3.686.0
'@aws-sdk/middleware-sdk-s3': 3.685.0 '@aws-sdk/middleware-sdk-s3': 3.687.0
'@aws-sdk/middleware-ssec': 3.679.0 '@aws-sdk/middleware-ssec': 3.686.0
'@aws-sdk/middleware-user-agent': 3.682.0 '@aws-sdk/middleware-user-agent': 3.687.0
'@aws-sdk/region-config-resolver': 3.679.0 '@aws-sdk/region-config-resolver': 3.686.0
'@aws-sdk/signature-v4-multi-region': 3.685.0 '@aws-sdk/signature-v4-multi-region': 3.687.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-endpoints': 3.679.0 '@aws-sdk/util-endpoints': 3.686.0
'@aws-sdk/util-user-agent-browser': 3.679.0 '@aws-sdk/util-user-agent-browser': 3.686.0
'@aws-sdk/util-user-agent-node': 3.682.0 '@aws-sdk/util-user-agent-node': 3.687.0
'@aws-sdk/xml-builder': 3.679.0 '@aws-sdk/xml-builder': 3.686.0
'@smithy/config-resolver': 3.0.10 '@smithy/config-resolver': 3.0.10
'@smithy/core': 2.5.1 '@smithy/core': 2.5.1
'@smithy/eventstream-serde-browser': 3.0.11 '@smithy/eventstream-serde-browser': 3.0.11
'@smithy/eventstream-serde-config-resolver': 3.0.8 '@smithy/eventstream-serde-config-resolver': 3.0.8
'@smithy/eventstream-serde-node': 3.0.10 '@smithy/eventstream-serde-node': 3.0.10
'@smithy/fetch-http-handler': 3.2.9 '@smithy/fetch-http-handler': 4.0.0
'@smithy/hash-blob-browser': 3.1.7 '@smithy/hash-blob-browser': 3.1.7
'@smithy/hash-node': 3.0.8 '@smithy/hash-node': 3.0.8
'@smithy/hash-stream-node': 3.1.7 '@smithy/hash-stream-node': 3.1.7
@@ -1862,25 +1859,25 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
'@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0)': '@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0)':
dependencies: dependencies:
'@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/sha256-js': 5.2.0
'@aws-sdk/client-sts': 3.682.0 '@aws-sdk/client-sts': 3.687.0
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/credential-provider-node': 3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))(@aws-sdk/client-sts@3.682.0) '@aws-sdk/credential-provider-node': 3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/middleware-host-header': 3.679.0 '@aws-sdk/middleware-host-header': 3.686.0
'@aws-sdk/middleware-logger': 3.679.0 '@aws-sdk/middleware-logger': 3.686.0
'@aws-sdk/middleware-recursion-detection': 3.679.0 '@aws-sdk/middleware-recursion-detection': 3.686.0
'@aws-sdk/middleware-user-agent': 3.682.0 '@aws-sdk/middleware-user-agent': 3.687.0
'@aws-sdk/region-config-resolver': 3.679.0 '@aws-sdk/region-config-resolver': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-endpoints': 3.679.0 '@aws-sdk/util-endpoints': 3.686.0
'@aws-sdk/util-user-agent-browser': 3.679.0 '@aws-sdk/util-user-agent-browser': 3.686.0
'@aws-sdk/util-user-agent-node': 3.682.0 '@aws-sdk/util-user-agent-node': 3.687.0
'@smithy/config-resolver': 3.0.10 '@smithy/config-resolver': 3.0.10
'@smithy/core': 2.5.1 '@smithy/core': 2.5.1
'@smithy/fetch-http-handler': 3.2.9 '@smithy/fetch-http-handler': 4.0.0
'@smithy/hash-node': 3.0.8 '@smithy/hash-node': 3.0.8
'@smithy/invalid-dependency': 3.0.8 '@smithy/invalid-dependency': 3.0.8
'@smithy/middleware-content-length': 3.0.10 '@smithy/middleware-content-length': 3.0.10
@@ -1907,23 +1904,23 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
'@aws-sdk/client-sso@3.682.0': '@aws-sdk/client-sso@3.687.0':
dependencies: dependencies:
'@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/sha256-js': 5.2.0
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/middleware-host-header': 3.679.0 '@aws-sdk/middleware-host-header': 3.686.0
'@aws-sdk/middleware-logger': 3.679.0 '@aws-sdk/middleware-logger': 3.686.0
'@aws-sdk/middleware-recursion-detection': 3.679.0 '@aws-sdk/middleware-recursion-detection': 3.686.0
'@aws-sdk/middleware-user-agent': 3.682.0 '@aws-sdk/middleware-user-agent': 3.687.0
'@aws-sdk/region-config-resolver': 3.679.0 '@aws-sdk/region-config-resolver': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-endpoints': 3.679.0 '@aws-sdk/util-endpoints': 3.686.0
'@aws-sdk/util-user-agent-browser': 3.679.0 '@aws-sdk/util-user-agent-browser': 3.686.0
'@aws-sdk/util-user-agent-node': 3.682.0 '@aws-sdk/util-user-agent-node': 3.687.0
'@smithy/config-resolver': 3.0.10 '@smithy/config-resolver': 3.0.10
'@smithy/core': 2.5.1 '@smithy/core': 2.5.1
'@smithy/fetch-http-handler': 3.2.9 '@smithy/fetch-http-handler': 4.0.0
'@smithy/hash-node': 3.0.8 '@smithy/hash-node': 3.0.8
'@smithy/invalid-dependency': 3.0.8 '@smithy/invalid-dependency': 3.0.8
'@smithy/middleware-content-length': 3.0.10 '@smithy/middleware-content-length': 3.0.10
@@ -1950,25 +1947,25 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
'@aws-sdk/client-sts@3.682.0': '@aws-sdk/client-sts@3.687.0':
dependencies: dependencies:
'@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0
'@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/sha256-js': 5.2.0
'@aws-sdk/client-sso-oidc': 3.682.0(@aws-sdk/client-sts@3.682.0) '@aws-sdk/client-sso-oidc': 3.687.0(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/credential-provider-node': 3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))(@aws-sdk/client-sts@3.682.0) '@aws-sdk/credential-provider-node': 3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/middleware-host-header': 3.679.0 '@aws-sdk/middleware-host-header': 3.686.0
'@aws-sdk/middleware-logger': 3.679.0 '@aws-sdk/middleware-logger': 3.686.0
'@aws-sdk/middleware-recursion-detection': 3.679.0 '@aws-sdk/middleware-recursion-detection': 3.686.0
'@aws-sdk/middleware-user-agent': 3.682.0 '@aws-sdk/middleware-user-agent': 3.687.0
'@aws-sdk/region-config-resolver': 3.679.0 '@aws-sdk/region-config-resolver': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-endpoints': 3.679.0 '@aws-sdk/util-endpoints': 3.686.0
'@aws-sdk/util-user-agent-browser': 3.679.0 '@aws-sdk/util-user-agent-browser': 3.686.0
'@aws-sdk/util-user-agent-node': 3.682.0 '@aws-sdk/util-user-agent-node': 3.687.0
'@smithy/config-resolver': 3.0.10 '@smithy/config-resolver': 3.0.10
'@smithy/core': 2.5.1 '@smithy/core': 2.5.1
'@smithy/fetch-http-handler': 3.2.9 '@smithy/fetch-http-handler': 4.0.0
'@smithy/hash-node': 3.0.8 '@smithy/hash-node': 3.0.8
'@smithy/invalid-dependency': 3.0.8 '@smithy/invalid-dependency': 3.0.8
'@smithy/middleware-content-length': 3.0.10 '@smithy/middleware-content-length': 3.0.10
@@ -1995,9 +1992,9 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
'@aws-sdk/core@3.679.0': '@aws-sdk/core@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/core': 2.5.1 '@smithy/core': 2.5.1
'@smithy/node-config-provider': 3.1.9 '@smithy/node-config-provider': 3.1.9
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
@@ -2009,19 +2006,19 @@ snapshots:
fast-xml-parser: 4.4.1 fast-xml-parser: 4.4.1
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/credential-provider-env@3.679.0': '@aws-sdk/credential-provider-env@3.686.0':
dependencies: dependencies:
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/credential-provider-http@3.679.0': '@aws-sdk/credential-provider-http@3.686.0':
dependencies: dependencies:
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/fetch-http-handler': 3.2.9 '@smithy/fetch-http-handler': 4.0.0
'@smithy/node-http-handler': 3.2.5 '@smithy/node-http-handler': 3.2.5
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
@@ -2030,16 +2027,16 @@ snapshots:
'@smithy/util-stream': 3.2.1 '@smithy/util-stream': 3.2.1
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/credential-provider-ini@3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))(@aws-sdk/client-sts@3.682.0)': '@aws-sdk/credential-provider-ini@3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))(@aws-sdk/client-sts@3.687.0)':
dependencies: dependencies:
'@aws-sdk/client-sts': 3.682.0 '@aws-sdk/client-sts': 3.687.0
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/credential-provider-env': 3.679.0 '@aws-sdk/credential-provider-env': 3.686.0
'@aws-sdk/credential-provider-http': 3.679.0 '@aws-sdk/credential-provider-http': 3.686.0
'@aws-sdk/credential-provider-process': 3.679.0 '@aws-sdk/credential-provider-process': 3.686.0
'@aws-sdk/credential-provider-sso': 3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0)) '@aws-sdk/credential-provider-sso': 3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))
'@aws-sdk/credential-provider-web-identity': 3.679.0(@aws-sdk/client-sts@3.682.0) '@aws-sdk/credential-provider-web-identity': 3.686.0(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/credential-provider-imds': 3.2.5 '@smithy/credential-provider-imds': 3.2.5
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
'@smithy/shared-ini-file-loader': 3.1.9 '@smithy/shared-ini-file-loader': 3.1.9
@@ -2049,15 +2046,15 @@ snapshots:
- '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sso-oidc'
- aws-crt - aws-crt
'@aws-sdk/credential-provider-node@3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))(@aws-sdk/client-sts@3.682.0)': '@aws-sdk/credential-provider-node@3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))(@aws-sdk/client-sts@3.687.0)':
dependencies: dependencies:
'@aws-sdk/credential-provider-env': 3.679.0 '@aws-sdk/credential-provider-env': 3.686.0
'@aws-sdk/credential-provider-http': 3.679.0 '@aws-sdk/credential-provider-http': 3.686.0
'@aws-sdk/credential-provider-ini': 3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))(@aws-sdk/client-sts@3.682.0) '@aws-sdk/credential-provider-ini': 3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/credential-provider-process': 3.679.0 '@aws-sdk/credential-provider-process': 3.686.0
'@aws-sdk/credential-provider-sso': 3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0)) '@aws-sdk/credential-provider-sso': 3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))
'@aws-sdk/credential-provider-web-identity': 3.679.0(@aws-sdk/client-sts@3.682.0) '@aws-sdk/credential-provider-web-identity': 3.686.0(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/credential-provider-imds': 3.2.5 '@smithy/credential-provider-imds': 3.2.5
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
'@smithy/shared-ini-file-loader': 3.1.9 '@smithy/shared-ini-file-loader': 3.1.9
@@ -2068,21 +2065,21 @@ snapshots:
- '@aws-sdk/client-sts' - '@aws-sdk/client-sts'
- aws-crt - aws-crt
'@aws-sdk/credential-provider-process@3.679.0': '@aws-sdk/credential-provider-process@3.686.0':
dependencies: dependencies:
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
'@smithy/shared-ini-file-loader': 3.1.9 '@smithy/shared-ini-file-loader': 3.1.9
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/credential-provider-sso@3.682.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))': '@aws-sdk/credential-provider-sso@3.687.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))':
dependencies: dependencies:
'@aws-sdk/client-sso': 3.682.0 '@aws-sdk/client-sso': 3.687.0
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/token-providers': 3.679.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0)) '@aws-sdk/token-providers': 3.686.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
'@smithy/shared-ini-file-loader': 3.1.9 '@smithy/shared-ini-file-loader': 3.1.9
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
@@ -2091,18 +2088,18 @@ snapshots:
- '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sso-oidc'
- aws-crt - aws-crt
'@aws-sdk/credential-provider-web-identity@3.679.0(@aws-sdk/client-sts@3.682.0)': '@aws-sdk/credential-provider-web-identity@3.686.0(@aws-sdk/client-sts@3.687.0)':
dependencies: dependencies:
'@aws-sdk/client-sts': 3.682.0 '@aws-sdk/client-sts': 3.687.0
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-bucket-endpoint@3.679.0': '@aws-sdk/middleware-bucket-endpoint@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-arn-parser': 3.679.0 '@aws-sdk/util-arn-parser': 3.679.0
'@smithy/node-config-provider': 3.1.9 '@smithy/node-config-provider': 3.1.9
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
@@ -2110,57 +2107,58 @@ snapshots:
'@smithy/util-config-provider': 3.0.0 '@smithy/util-config-provider': 3.0.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-expect-continue@3.679.0': '@aws-sdk/middleware-expect-continue@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-flexible-checksums@3.682.0': '@aws-sdk/middleware-flexible-checksums@3.687.0':
dependencies: dependencies:
'@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32': 5.2.0
'@aws-crypto/crc32c': 5.2.0 '@aws-crypto/crc32c': 5.2.0
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/is-array-buffer': 3.0.0 '@smithy/is-array-buffer': 3.0.0
'@smithy/node-config-provider': 3.1.9 '@smithy/node-config-provider': 3.1.9
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
'@smithy/util-middleware': 3.0.8 '@smithy/util-middleware': 3.0.8
'@smithy/util-stream': 3.2.1
'@smithy/util-utf8': 3.0.0 '@smithy/util-utf8': 3.0.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-host-header@3.679.0': '@aws-sdk/middleware-host-header@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-location-constraint@3.679.0': '@aws-sdk/middleware-location-constraint@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-logger@3.679.0': '@aws-sdk/middleware-logger@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-recursion-detection@3.679.0': '@aws-sdk/middleware-recursion-detection@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-sdk-s3@3.685.0': '@aws-sdk/middleware-sdk-s3@3.687.0':
dependencies: dependencies:
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-arn-parser': 3.679.0 '@aws-sdk/util-arn-parser': 3.679.0
'@smithy/core': 2.5.1 '@smithy/core': 2.5.1
'@smithy/node-config-provider': 3.1.9 '@smithy/node-config-provider': 3.1.9
@@ -2174,61 +2172,61 @@ snapshots:
'@smithy/util-utf8': 3.0.0 '@smithy/util-utf8': 3.0.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-ssec@3.679.0': '@aws-sdk/middleware-ssec@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/middleware-user-agent@3.682.0': '@aws-sdk/middleware-user-agent@3.687.0':
dependencies: dependencies:
'@aws-sdk/core': 3.679.0 '@aws-sdk/core': 3.686.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-endpoints': 3.679.0 '@aws-sdk/util-endpoints': 3.686.0
'@smithy/core': 2.5.1 '@smithy/core': 2.5.1
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/region-config-resolver@3.679.0': '@aws-sdk/region-config-resolver@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/node-config-provider': 3.1.9 '@smithy/node-config-provider': 3.1.9
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
'@smithy/util-config-provider': 3.0.0 '@smithy/util-config-provider': 3.0.0
'@smithy/util-middleware': 3.0.8 '@smithy/util-middleware': 3.0.8
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/s3-request-presigner@3.685.0': '@aws-sdk/s3-request-presigner@3.687.0':
dependencies: dependencies:
'@aws-sdk/signature-v4-multi-region': 3.685.0 '@aws-sdk/signature-v4-multi-region': 3.687.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@aws-sdk/util-format-url': 3.679.0 '@aws-sdk/util-format-url': 3.686.0
'@smithy/middleware-endpoint': 3.2.1 '@smithy/middleware-endpoint': 3.2.1
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
'@smithy/smithy-client': 3.4.2 '@smithy/smithy-client': 3.4.2
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/signature-v4-multi-region@3.685.0': '@aws-sdk/signature-v4-multi-region@3.687.0':
dependencies: dependencies:
'@aws-sdk/middleware-sdk-s3': 3.685.0 '@aws-sdk/middleware-sdk-s3': 3.687.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
'@smithy/signature-v4': 4.2.1 '@smithy/signature-v4': 4.2.1
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/token-providers@3.679.0(@aws-sdk/client-sso-oidc@3.682.0(@aws-sdk/client-sts@3.682.0))': '@aws-sdk/token-providers@3.686.0(@aws-sdk/client-sso-oidc@3.687.0(@aws-sdk/client-sts@3.687.0))':
dependencies: dependencies:
'@aws-sdk/client-sso-oidc': 3.682.0(@aws-sdk/client-sts@3.682.0) '@aws-sdk/client-sso-oidc': 3.687.0(@aws-sdk/client-sts@3.687.0)
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/property-provider': 3.1.8 '@smithy/property-provider': 3.1.8
'@smithy/shared-ini-file-loader': 3.1.9 '@smithy/shared-ini-file-loader': 3.1.9
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/types@3.679.0': '@aws-sdk/types@3.686.0':
dependencies: dependencies:
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
@@ -2237,16 +2235,16 @@ snapshots:
dependencies: dependencies:
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/util-endpoints@3.679.0': '@aws-sdk/util-endpoints@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
'@smithy/util-endpoints': 2.1.4 '@smithy/util-endpoints': 2.1.4
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/util-format-url@3.679.0': '@aws-sdk/util-format-url@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/querystring-builder': 3.0.8 '@smithy/querystring-builder': 3.0.8
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
@@ -2255,22 +2253,22 @@ snapshots:
dependencies: dependencies:
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/util-user-agent-browser@3.679.0': '@aws-sdk/util-user-agent-browser@3.686.0':
dependencies: dependencies:
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
bowser: 2.11.0 bowser: 2.11.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/util-user-agent-node@3.682.0': '@aws-sdk/util-user-agent-node@3.687.0':
dependencies: dependencies:
'@aws-sdk/middleware-user-agent': 3.682.0 '@aws-sdk/middleware-user-agent': 3.687.0
'@aws-sdk/types': 3.679.0 '@aws-sdk/types': 3.686.0
'@smithy/node-config-provider': 3.1.9 '@smithy/node-config-provider': 3.1.9
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@aws-sdk/xml-builder@3.679.0': '@aws-sdk/xml-builder@3.686.0':
dependencies: dependencies:
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
@@ -2308,7 +2306,7 @@ snapshots:
mime: 3.0.0 mime: 3.0.0
zod: 3.23.8 zod: 3.23.8
'@cloudflare/workers-types@4.20241022.0': {} '@cloudflare/workers-types@4.20241106.0': {}
'@cspotcode/source-map-support@0.8.1': '@cspotcode/source-map-support@0.8.1':
dependencies: dependencies:
@@ -2600,14 +2598,6 @@ snapshots:
'@smithy/types': 3.6.0 '@smithy/types': 3.6.0
tslib: 2.8.1 tslib: 2.8.1
'@smithy/fetch-http-handler@3.2.9':
dependencies:
'@smithy/protocol-http': 4.1.5
'@smithy/querystring-builder': 3.0.8
'@smithy/types': 3.6.0
'@smithy/util-base64': 3.0.0
tslib: 2.8.1
'@smithy/fetch-http-handler@4.0.0': '@smithy/fetch-http-handler@4.0.0':
dependencies: dependencies:
'@smithy/protocol-http': 4.1.5 '@smithy/protocol-http': 4.1.5
@@ -3094,7 +3084,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
cross-spawn@7.0.3: cross-spawn@7.0.5:
dependencies: dependencies:
path-key: 3.1.1 path-key: 3.1.1
shebang-command: 2.0.0 shebang-command: 2.0.0
@@ -3201,7 +3191,7 @@ snapshots:
'@ungap/structured-clone': 1.2.0 '@ungap/structured-clone': 1.2.0
ajv: 6.12.6 ajv: 6.12.6
chalk: 4.1.2 chalk: 4.1.2
cross-spawn: 7.0.3 cross-spawn: 7.0.5
debug: 4.3.7 debug: 4.3.7
doctrine: 3.0.0 doctrine: 3.0.0
escape-string-regexp: 4.0.0 escape-string-regexp: 4.0.0
@@ -3303,7 +3293,7 @@ snapshots:
foreground-child@3.3.0: foreground-child@3.3.0:
dependencies: dependencies:
cross-spawn: 7.0.3 cross-spawn: 7.0.5
signal-exit: 4.1.0 signal-exit: 4.1.0
fs.realpath@1.0.0: {} fs.realpath@1.0.0: {}
@@ -3863,7 +3853,7 @@ snapshots:
'@cloudflare/workerd-linux-arm64': 1.20241022.0 '@cloudflare/workerd-linux-arm64': 1.20241022.0
'@cloudflare/workerd-windows-64': 1.20241022.0 '@cloudflare/workerd-windows-64': 1.20241022.0
wrangler@3.84.1(@cloudflare/workers-types@4.20241022.0): wrangler@3.85.0(@cloudflare/workers-types@4.20241106.0):
dependencies: dependencies:
'@cloudflare/kv-asset-handler': 0.3.4 '@cloudflare/kv-asset-handler': 0.3.4
'@cloudflare/workers-shared': 0.7.0 '@cloudflare/workers-shared': 0.7.0
@@ -3885,7 +3875,7 @@ snapshots:
workerd: 1.20241022.0 workerd: 1.20241022.0
xxhash-wasm: 1.0.2 xxhash-wasm: 1.0.2
optionalDependencies: optionalDependencies:
'@cloudflare/workers-types': 4.20241022.0 '@cloudflare/workers-types': 4.20241106.0
fsevents: 2.3.3 fsevents: 2.3.3
transitivePeerDependencies: transitivePeerDependencies:
- bufferutil - bufferutil

View File

@@ -1,5 +1,5 @@
export const CONSTANTS = { export const CONSTANTS = {
VERSION: 'v0.7.6', VERSION: 'v0.8.0',
// DB settings // DB settings
ADDRESS_BLOCK_LIST_KEY: 'address_block_list', ADDRESS_BLOCK_LIST_KEY: 'address_block_list',

View File

@@ -5,6 +5,7 @@ import { HonoCustomType } from '../types';
import { UserSettings } from "../models"; import { UserSettings } from "../models";
import { getJsonSetting } from "../utils" import { getJsonSetting } from "../utils"
import { CONSTANTS } from "../constants"; import { CONSTANTS } from "../constants";
import { unbindTelegramByAddress } from '../telegram_api/common';
export default { export default {
bind: async (c: Context<HonoCustomType>) => { bind: async (c: Context<HonoCustomType>) => {
@@ -89,7 +90,7 @@ export default {
return c.text("Failed to unbind", 500) return c.text("Failed to unbind", 500)
} }
} catch (e) { } catch (e) {
return c.text("Invalid address token", 400) return c.text("Failed to unbind", 500)
} }
return c.json({ success: true }) return c.json({ success: true })
}, },
@@ -139,4 +140,92 @@ export default {
jwt: jwt jwt: jwt
}) })
}, },
transferAddress: async (c: Context<HonoCustomType>) => {
const { user_id } = c.get("userPayload");
const { address_id, target_user_email } = await c.req.json();
// check if address exists
const address = await c.env.DB.prepare(
`SELECT name FROM address where id = ?`
).bind(address_id).first<string>("name");
if (!address) {
return c.text("Address not found", 400)
}
// check if user exists
const db_user_id = await c.env.DB.prepare(
`SELECT id FROM users where id = ?`
).bind(user_id).first("id");
if (!db_user_id) {
return c.text("User not found", 400)
}
// check if target user exists
const target_user_id = await c.env.DB.prepare(
`SELECT id FROM users where user_email = ?`
).bind(target_user_email).first("id");
if (!target_user_id) {
return c.text("Target user not found", 400)
}
// check target user binded address count
const value = await getJsonSetting(c, CONSTANTS.USER_SETTINGS_KEY);
const settings = new UserSettings(value);
if (settings.maxAddressCount > 0) {
const { count } = await c.env.DB.prepare(
`SELECT COUNT(*) as count FROM users_address where user_id = ?`
).bind(target_user_id).first<{ count: number }>() || { count: 0 };
if (count >= settings.maxAddressCount) {
return c.text("Target User Max address count reached", 400)
}
}
// check if binded
const db_user_address_id = await c.env.DB.prepare(
`SELECT user_id FROM users_address where user_id = ? and address_id = ?`
).bind(user_id, address_id).first("user_id");
if (!db_user_address_id) return c.text("Address not binded", 400)
// unbind telegram address
await unbindTelegramByAddress(c, address);
// unbind user address
try {
const { success } = await c.env.DB.prepare(
`DELETE FROM users_address where user_id = ? and address_id = ?`
).bind(user_id, address_id).run();
if (!success) {
return c.text("Failed to unbind", 500)
}
} catch (e) {
return c.text("Failed to unbind user", 500)
}
// delete address
await c.env.DB.prepare(
`DELETE FROM address WHERE id = ? `
).bind(address_id).run();
// new address
const { success: newAddressSuccess } = await c.env.DB.prepare(
`INSERT INTO address(name) VALUES(?)`
).bind(address).run();
if (!newAddressSuccess) {
throw new Error("Failed to create address")
}
// find new address id
let new_address_id = await c.env.DB.prepare(
`SELECT id FROM address WHERE name = ?`
).bind(address).first<number | null | undefined>("id");
if (!new_address_id) {
throw new Error("Failed to find new address id")
}
// bind
try {
const { success } = await c.env.DB.prepare(
`INSERT INTO users_address (user_id, address_id) VALUES (?, ?)`
).bind(target_user_id, new_address_id).run();
if (!success) {
return c.text("Failed to bind", 500)
}
} catch (e) {
const error = e as Error;
if (error.message && error.message.includes("UNIQUE")) {
return c.text("Address already binded, please unbind first", 400)
}
return c.text("Failed to bind", 500)
}
return c.json({ success: true })
}
} }

View File

@@ -27,6 +27,7 @@ api.get('/user_api/bind_address', bind_address.getBindedAddresses);
api.post('/user_api/bind_address', bind_address.bind); api.post('/user_api/bind_address', bind_address.bind);
api.get('/user_api/bind_address_jwt/:address_id', bind_address.getBindedAddressJwt); api.get('/user_api/bind_address_jwt/:address_id', bind_address.getBindedAddressJwt);
api.post('/user_api/unbind_address', bind_address.unbind); api.post('/user_api/unbind_address', bind_address.unbind);
api.post('/user_api/transfer_address', bind_address.transferAddress);
// passkey api // passkey api
api.get('/user_api/passkey', passkey.getPassKeys); api.get('/user_api/passkey', passkey.getPassKeys);