mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-08-12 01:04:09 +08:00
feat: add mail-parser-wasm-worker (#301)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "cloudflare_temp_email",
|
||||
"version": "0.5.0",
|
||||
"version": "0.5.1",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
@@ -15,14 +15,14 @@
|
||||
"deploy": "npm run build && wrangler pages deploy ./dist --branch production"
|
||||
},
|
||||
"dependencies": {
|
||||
"@unhead/vue": "^1.9.11",
|
||||
"@unhead/vue": "^1.9.12",
|
||||
"@vicons/material": "^0.12.0",
|
||||
"@vueuse/core": "^10.9.0",
|
||||
"@vueuse/core": "^10.10.0",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||
"axios": "^1.7.2",
|
||||
"jszip": "^3.10.1",
|
||||
"mail-parser-wasm": "^0.1.6",
|
||||
"mail-parser-wasm": "^0.1.8",
|
||||
"naive-ui": "^2.38.2",
|
||||
"postal-mime": "^2.2.5",
|
||||
"vooks": "^0.2.12",
|
||||
@@ -33,14 +33,14 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vicons/fa": "^0.12.0",
|
||||
"@vitejs/plugin-vue": "^5.0.4",
|
||||
"@vitejs/plugin-vue": "^5.0.5",
|
||||
"unplugin-auto-import": "^0.17.6",
|
||||
"unplugin-vue-components": "^0.27.0",
|
||||
"vite": "^5.2.11",
|
||||
"vite": "^5.2.12",
|
||||
"vite-plugin-pwa": "^0.19.8",
|
||||
"vite-plugin-top-level-await": "^1.4.1",
|
||||
"vite-plugin-wasm": "^3.3.0",
|
||||
"workbox-window": "^7.1.0",
|
||||
"wrangler": "^3.57.1"
|
||||
"wrangler": "^3.58.0"
|
||||
}
|
||||
}
|
||||
|
||||
1744
frontend/pnpm-lock.yaml
generated
1744
frontend/pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
1
mail-parser-wasm/.gitignore
vendored
1
mail-parser-wasm/.gitignore
vendored
@@ -12,3 +12,4 @@ Cargo.lock
|
||||
|
||||
# MSVC Windows builds of rustc generate these, which store debugging information
|
||||
*.pdb
|
||||
web/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "mail-parser-wasm"
|
||||
version = "0.1.6"
|
||||
version = "0.1.8"
|
||||
edition = "2021"
|
||||
description = "A simple mail parser for wasm"
|
||||
license = "MIT"
|
||||
|
||||
@@ -1,16 +1,45 @@
|
||||
# mail-parser-wasm
|
||||
# mail-parser-wasm web and cf worker
|
||||
|
||||
## usage
|
||||
## [mail-parser-wasm](https://www.npmjs.com/package/mail-parser-wasm)
|
||||
|
||||
### mail-parser-wasm usage
|
||||
|
||||
```bash
|
||||
pnpm add mail-parser-wasm
|
||||
```
|
||||
|
||||
```js
|
||||
import { parse_message } from 'mail-parser-wasm'
|
||||
|
||||
const parsedEmail = parse_message(item.raw);
|
||||
const parsedEmail = parse_message(rawEmail);
|
||||
```
|
||||
|
||||
## build
|
||||
### mail-parser-wasm build
|
||||
|
||||
```bash
|
||||
wasm-pack build --release
|
||||
wasm-pack publish
|
||||
```
|
||||
|
||||
## [mail-parser-wasm-worker](https://www.npmjs.com/package/mail-parser-wasm-worker)
|
||||
|
||||
### mail-parser-wasm-worker usage
|
||||
|
||||
```bash
|
||||
pnpm add mail-parser-wasm-worker
|
||||
```
|
||||
|
||||
```js
|
||||
import { parse_message_wrapper } from 'mail-parser-wasm-worker'
|
||||
|
||||
const parsedEmail = parse_message_wrapper(rawEmail);
|
||||
```
|
||||
|
||||
### mail-parser-wasm-worker build
|
||||
|
||||
```bash
|
||||
wasm-pack build --out-dir web --target web --release
|
||||
find web/ -type f ! -name '*.json' ! -name '.gitignore' -exec cp {} worker/ \;
|
||||
# modify worker/package.json version or whatever
|
||||
pnpm publish worker --no-git-checks
|
||||
```
|
||||
|
||||
9
mail-parser-wasm/worker/index.d.ts
vendored
Normal file
9
mail-parser-wasm/worker/index.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
import initAsync, { MessageResult } from './mail_parser_wasm';
|
||||
import MODULE from './mail_parser_wasm_bg.wasm';
|
||||
export { initAsync, MODULE };
|
||||
export * from './mail_parser_wasm';
|
||||
/**
|
||||
* @param {string} raw_message
|
||||
* @returns {MessageResult}
|
||||
*/
|
||||
export function parse_message_wrapper(raw_message: string): MessageResult;
|
||||
12
mail-parser-wasm/worker/index.js
Normal file
12
mail-parser-wasm/worker/index.js
Normal file
@@ -0,0 +1,12 @@
|
||||
import initAsync, { initSync, parse_message } from './mail_parser_wasm';
|
||||
import MODULE from './mail_parser_wasm_bg.wasm';
|
||||
|
||||
initSync(MODULE);
|
||||
|
||||
|
||||
export { initAsync, MODULE };
|
||||
export * from './mail_parser_wasm';
|
||||
export const parse_message_wrapper = (raw_message) => {
|
||||
initSync(MODULE);
|
||||
return parse_message(raw_message);
|
||||
}
|
||||
24
mail-parser-wasm/worker/package.json
Normal file
24
mail-parser-wasm/worker/package.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "mail-parser-wasm-worker",
|
||||
"description": "A simple mail parser for worker",
|
||||
"homepage": "https://github.com/dreamhunter2333/cloudflare_temp_email/tree/main/mail-parser-wasm",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dreamhunter2333/cloudflare_temp_email",
|
||||
"directory": "mail-parser-wasm"
|
||||
},
|
||||
"version": "0.1.8",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
"mail_parser_wasm_bg.wasm",
|
||||
"mail_parser_wasm.js",
|
||||
"mail_parser_wasm.d.ts",
|
||||
"index.js",
|
||||
"index.d.ts"
|
||||
],
|
||||
"module": "index.js",
|
||||
"types": "index.d.ts",
|
||||
"sideEffects": [
|
||||
"./snippets/*"
|
||||
]
|
||||
}
|
||||
@@ -136,6 +136,7 @@ function sidebarGuide(): DefaultTheme.SidebarItem[] {
|
||||
{ text: '配置子域名邮箱', link: 'feature/subdomain' },
|
||||
{ text: '配置 Telegram Bot', link: 'feature/telegram' },
|
||||
{ text: '配置 S3 附件', link: 'feature/s3-attachment' },
|
||||
{ text: '配置 worker 使用 wasm 解析邮件', link: 'feature/mail_parser_wasm_worker' },
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# mail-parser-wasm-worker
|
||||
|
||||
> [!NOTE]
|
||||
> 如果你使用了 webhook 转发,或者 telegram bot 接受邮件,但是邮件内容是乱码,或者无法解析,你对解析的需要更高的要求,可以使用这个功能。
|
||||
|
||||
## 修改代码
|
||||
|
||||
```bash
|
||||
cd worker
|
||||
pnpm add mail-parser-wasm-worker
|
||||
```
|
||||
|
||||
编辑 `worker/src/common.ts`, 取消注释这段代码,使用 mail-parser-wasm-worker 来解析邮件
|
||||
|
||||
```ts
|
||||
export const commonParseMail = async (raw_mail: string | undefined | null): Promise<{
|
||||
sender: string,
|
||||
subject: string,
|
||||
text: string,
|
||||
html: string
|
||||
} | undefined> => {
|
||||
if (!raw_mail) {
|
||||
return undefined;
|
||||
}
|
||||
// 取消注释这段代码,使用 mail-parser-wasm-worker 来解析邮件 start
|
||||
// TODO: WASM parse email
|
||||
try {
|
||||
const { parse_message_wrapper } = await import('mail-parser-wasm-worker');
|
||||
|
||||
const parsedEmail = parse_message_wrapper(raw_mail);
|
||||
return {
|
||||
sender: parsedEmail.sender || "",
|
||||
subject: parsedEmail.subject || "",
|
||||
text: parsedEmail.text || "",
|
||||
html: parsedEmail.body_html || "",
|
||||
};
|
||||
} catch (e) {
|
||||
console.error("Failed use mail-parser-wasm-worker to parse email", e);
|
||||
}
|
||||
// 取消注释这段代码,使用 mail-parser-wasm-worker 来解析邮件 end
|
||||
try {
|
||||
const { default: PostalMime } = await import('postal-mime');
|
||||
const parsedEmail = await PostalMime.parse(raw_mail);
|
||||
return {
|
||||
sender: parsedEmail.from ? `${parsedEmail.from.name} <${parsedEmail.from.address}>` : "",
|
||||
subject: parsedEmail.subject || "",
|
||||
text: parsedEmail.text || "",
|
||||
html: parsedEmail.html || "",
|
||||
};
|
||||
}
|
||||
catch (e) {
|
||||
console.error("Failed use PostalMime to parse email", e);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
```
|
||||
|
||||
## 部署
|
||||
|
||||
```bash
|
||||
cd worker
|
||||
pnpm run deploy
|
||||
```
|
||||
@@ -11,17 +11,17 @@
|
||||
"build": "wrangler deploy --dry-run --outdir dist --minify"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@cloudflare/workers-types": "^4.20240512.0",
|
||||
"@cloudflare/workers-types": "^4.20240603.0",
|
||||
"@eslint/js": "8.56.0",
|
||||
"eslint": "8.56.0",
|
||||
"globals": "^15.3.0",
|
||||
"typescript-eslint": "^7.10.0",
|
||||
"wrangler": "^3.57.1"
|
||||
"typescript-eslint": "^7.12.0",
|
||||
"wrangler": "^3.58.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "^3.588.0",
|
||||
"@aws-sdk/s3-request-presigner": "^3.588.0",
|
||||
"hono": "^4.3.9",
|
||||
"hono": "^4.4.3",
|
||||
"mimetext": "^3.0.24",
|
||||
"postal-mime": "^2.2.5",
|
||||
"resend": "^3.2.0",
|
||||
|
||||
304
worker/pnpm-lock.yaml
generated
304
worker/pnpm-lock.yaml
generated
@@ -20,8 +20,8 @@ importers:
|
||||
specifier: ^3.588.0
|
||||
version: 3.588.0
|
||||
hono:
|
||||
specifier: ^4.3.9
|
||||
version: 4.3.9
|
||||
specifier: ^4.4.3
|
||||
version: 4.4.3
|
||||
mimetext:
|
||||
specifier: ^3.0.24
|
||||
version: 3.0.24
|
||||
@@ -36,8 +36,8 @@ importers:
|
||||
version: 4.16.3(patch_hash=pnqp5pf7vetkijrc5uah4r5w6m)
|
||||
devDependencies:
|
||||
'@cloudflare/workers-types':
|
||||
specifier: ^4.20240512.0
|
||||
version: 4.20240512.0
|
||||
specifier: ^4.20240603.0
|
||||
version: 4.20240603.0
|
||||
'@eslint/js':
|
||||
specifier: 8.56.0
|
||||
version: 8.56.0
|
||||
@@ -48,11 +48,11 @@ importers:
|
||||
specifier: ^15.3.0
|
||||
version: 15.3.0
|
||||
typescript-eslint:
|
||||
specifier: ^7.10.0
|
||||
version: 7.10.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
specifier: ^7.12.0
|
||||
version: 7.12.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
wrangler:
|
||||
specifier: ^3.57.1
|
||||
version: 3.57.1(@cloudflare/workers-types@4.20240512.0)
|
||||
specifier: ^3.58.0
|
||||
version: 3.58.0(@cloudflare/workers-types@4.20240603.0)
|
||||
|
||||
packages:
|
||||
|
||||
@@ -233,50 +233,50 @@ packages:
|
||||
resolution: {integrity: sha512-cWgAwmbFYNCFzPwxL705+lWps0F3ZvOckufd2KKoEZUmtpVw9/txUXNrPySUXSmRTSRhoatIMABNfStWR043bQ==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
|
||||
'@babel/runtime-corejs3@7.24.5':
|
||||
resolution: {integrity: sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg==}
|
||||
'@babel/runtime-corejs3@7.24.6':
|
||||
resolution: {integrity: sha512-tbC3o8uHK9xMgMsvUm9qGqxVpbv6yborMBLbDteHIc7JDNHsTV0vDMQ5j1O1NXvO+BDELtL9KgoWYaUVIVGt8w==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@babel/runtime@7.24.5':
|
||||
resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
|
||||
'@babel/runtime@7.24.6':
|
||||
resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@cloudflare/kv-asset-handler@0.3.2':
|
||||
resolution: {integrity: sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA==}
|
||||
engines: {node: '>=16.13'}
|
||||
|
||||
'@cloudflare/workerd-darwin-64@1.20240512.0':
|
||||
resolution: {integrity: sha512-VMp+CsSHFALQiBzPdQ5dDI4T1qwLu0mQ0aeKVNDosXjueN0f3zj/lf+mFil5/9jBbG3t4mG0y+6MMnalP9Lobw==}
|
||||
'@cloudflare/workerd-darwin-64@1.20240524.0':
|
||||
resolution: {integrity: sha512-ATaXjefbTsrv4mpn4Fdua114RRDXcX5Ky+Mv+f4JTUllgalmqC4CYMN4jxRz9IpJU/fNMN8IEfvUyuJBAcl9Iw==}
|
||||
engines: {node: '>=16'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@cloudflare/workerd-darwin-arm64@1.20240512.0':
|
||||
resolution: {integrity: sha512-lZktXGmzMrB5rJqY9+PmnNfv1HKlj/YLZwMjPfF0WVKHUFdvQbAHsi7NlKv6mW9uIvlZnS+K4sIkWc0MDXcRnA==}
|
||||
'@cloudflare/workerd-darwin-arm64@1.20240524.0':
|
||||
resolution: {integrity: sha512-wnbsZI4CS0QPCd+wnBHQ40C28A/2Qo4ESi1YhE2735G3UNcc876MWksZhsubd+XH0XPIra6eNFqyw6wRMpQOXA==}
|
||||
engines: {node: '>=16'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@cloudflare/workerd-linux-64@1.20240512.0':
|
||||
resolution: {integrity: sha512-wrHvqCZZqXz6Y3MUTn/9pQNsvaoNjbJpuA6vcXsXu8iCzJi911iVW2WUEBX+MpUWD+mBIP0oXni5tTlhkokOPw==}
|
||||
'@cloudflare/workerd-linux-64@1.20240524.0':
|
||||
resolution: {integrity: sha512-E8mj+HPBryKwaJAiNsYzXtVjKCL0KvUBZbtxJxlWM4mLSQhT+uwGT3nydb/hFY59rZnQgZslw0oqEWht5TEYiQ==}
|
||||
engines: {node: '>=16'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@cloudflare/workerd-linux-arm64@1.20240512.0':
|
||||
resolution: {integrity: sha512-YPezHMySL9J9tFdzxz390eBswQ//QJNYcZolz9Dgvb3FEfdpK345cE/bsWbMOqw5ws2f82l388epoenghtYvAg==}
|
||||
'@cloudflare/workerd-linux-arm64@1.20240524.0':
|
||||
resolution: {integrity: sha512-/Fr1W671t2triNCDCBWdStxngnbUfZunZ/2e4kaMLzJDJLYDtYdmvOUCBDzUD4ssqmIMbn9RCQQ0U+CLEoqBqw==}
|
||||
engines: {node: '>=16'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@cloudflare/workerd-windows-64@1.20240512.0':
|
||||
resolution: {integrity: sha512-SxKapDrIYSscMR7lGIp/av0l6vokjH4xQ9ACxHgXh+OdOus9azppSmjaPyw4/ePvg7yqpkaNjf9o258IxWtvKQ==}
|
||||
'@cloudflare/workerd-windows-64@1.20240524.0':
|
||||
resolution: {integrity: sha512-G+ThDEx57g9mAEKqhWnHaaJgpeGYtyhkmwM/BDpLqPks/rAY5YEfZbY4YL1pNk1kkcZDXGrwIsY8xe9Apf5JdA==}
|
||||
engines: {node: '>=16'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@cloudflare/workers-types@4.20240512.0':
|
||||
resolution: {integrity: sha512-o2yTEWg+YK/I1t/Me+dA0oarO0aCbjibp6wSeaw52DSE9tDyKJ7S+Qdyw/XsMrKn4t8kF6f/YOba+9O4MJfW9w==}
|
||||
'@cloudflare/workers-types@4.20240603.0':
|
||||
resolution: {integrity: sha512-KmsjZcd/dPWM51FoT08cvUGCq9l3nFEriloQ12mcdJPoW911Gi5S/9Cq4xeFvTrtk9TJ2krvxP23IeobecRmOQ==}
|
||||
|
||||
'@cspotcode/source-map-support@0.8.1':
|
||||
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
|
||||
@@ -430,8 +430,8 @@ packages:
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
|
||||
|
||||
'@eslint-community/regexpp@4.10.0':
|
||||
resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
|
||||
'@eslint-community/regexpp@4.10.1':
|
||||
resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==}
|
||||
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
|
||||
|
||||
'@eslint/eslintrc@2.1.4':
|
||||
@@ -694,11 +694,11 @@ packages:
|
||||
'@types/node-forge@1.3.11':
|
||||
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
|
||||
|
||||
'@types/node@20.12.12':
|
||||
resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
|
||||
'@types/node@20.14.1':
|
||||
resolution: {integrity: sha512-T2MzSGEu+ysB/FkWfqmhV3PLyQlowdptmmgD20C6QxsS8Fmv5SjpZ1ayXaEC0S21/h5UJ9iA6W/5vSNU5l00OA==}
|
||||
|
||||
'@typescript-eslint/eslint-plugin@7.10.0':
|
||||
resolution: {integrity: sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw==}
|
||||
'@typescript-eslint/eslint-plugin@7.12.0':
|
||||
resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/parser': ^7.0.0
|
||||
@@ -708,8 +708,8 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/parser@7.10.0':
|
||||
resolution: {integrity: sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w==}
|
||||
'@typescript-eslint/parser@7.12.0':
|
||||
resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.56.0
|
||||
@@ -718,12 +718,12 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/scope-manager@7.10.0':
|
||||
resolution: {integrity: sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg==}
|
||||
'@typescript-eslint/scope-manager@7.12.0':
|
||||
resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
|
||||
'@typescript-eslint/type-utils@7.10.0':
|
||||
resolution: {integrity: sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g==}
|
||||
'@typescript-eslint/type-utils@7.12.0':
|
||||
resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.56.0
|
||||
@@ -732,12 +732,12 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/types@7.10.0':
|
||||
resolution: {integrity: sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg==}
|
||||
'@typescript-eslint/types@7.12.0':
|
||||
resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
|
||||
'@typescript-eslint/typescript-estree@7.10.0':
|
||||
resolution: {integrity: sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g==}
|
||||
'@typescript-eslint/typescript-estree@7.12.0':
|
||||
resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
@@ -745,14 +745,14 @@ packages:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
'@typescript-eslint/utils@7.10.0':
|
||||
resolution: {integrity: sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg==}
|
||||
'@typescript-eslint/utils@7.12.0':
|
||||
resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.56.0
|
||||
|
||||
'@typescript-eslint/visitor-keys@7.10.0':
|
||||
resolution: {integrity: sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg==}
|
||||
'@typescript-eslint/visitor-keys@7.12.0':
|
||||
resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
|
||||
'@ungap/structured-clone@1.2.0':
|
||||
@@ -891,8 +891,8 @@ packages:
|
||||
data-uri-to-buffer@2.0.2:
|
||||
resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
|
||||
|
||||
debug@4.3.4:
|
||||
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
|
||||
debug@4.3.5:
|
||||
resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
|
||||
engines: {node: '>=6.0'}
|
||||
peerDependencies:
|
||||
supports-color: '*'
|
||||
@@ -1099,8 +1099,8 @@ packages:
|
||||
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
hono@4.3.9:
|
||||
resolution: {integrity: sha512-6c5LVE23HnIS8iBhY+XPmYJlPeeClznOi7mBNsAsJCgxo8Ciz75LTjqRUf5wv4RYq8kL+1KPLUZHCtKmbZssNg==}
|
||||
hono@4.4.3:
|
||||
resolution: {integrity: sha512-G7rTruKzrHXPz1KB4B50deKydPA9+aeei+WC1hikP0abN9N+a6yORuweageaqWocYfYNkpoqA5ezGV2mzQasvw==}
|
||||
engines: {node: '>=16.0.0'}
|
||||
|
||||
html-to-text@9.0.5:
|
||||
@@ -1162,8 +1162,8 @@ packages:
|
||||
isexe@2.0.0:
|
||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||
|
||||
jackspeak@3.1.2:
|
||||
resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==}
|
||||
jackspeak@3.2.3:
|
||||
resolution: {integrity: sha512-htOzIMPbpLid/Gq9/zaz9SfExABxqRe1sSCdxntlO/aMD6u0issZQiY25n2GKQUtJ02j7z5sfptlAOMpWWOmvw==}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
js-base64@3.7.7:
|
||||
@@ -1246,8 +1246,8 @@ packages:
|
||||
mimetext@3.0.24:
|
||||
resolution: {integrity: sha512-UdG1KVfcxeEfo6el91lzFG2WLLTm8DxSK/rosxx5H2Pjla50+DSsjTgr9BRAfAkbQWaxvzcaTO+bHK5ZrdKdfA==}
|
||||
|
||||
miniflare@3.20240512.0:
|
||||
resolution: {integrity: sha512-X0PlKR0AROKpxFoJNmRtCMIuJxj+ngEcyTOlEokj2rAQ0TBwUhB4/1uiPvdI6ofW5NugPOD1uomAv+gLjwsLDQ==}
|
||||
miniflare@3.20240524.1:
|
||||
resolution: {integrity: sha512-5d3pRxvd5pT7lX1SsBH9+AjXuyHJnChSNOnYhubfi7pxMek4ZfULwhnUmNUp1R7b2xKuzqdFDZa0fsZuUoFxlw==}
|
||||
engines: {node: '>=16.13'}
|
||||
hasBin: true
|
||||
|
||||
@@ -1559,8 +1559,8 @@ packages:
|
||||
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
typescript-eslint@7.10.0:
|
||||
resolution: {integrity: sha512-thO8nyqptXdfWHQrMJJiJyftpW8aLmwRNs11xA8pSrXneoclFPstQZqXvDWuH1WNL4CHffqHvYUeCHTit6yfhQ==}
|
||||
typescript-eslint@7.12.0:
|
||||
resolution: {integrity: sha512-D6HKNbQcnNu3BaN4HkQCR16tgG8Q2AMUWPgvhrJksOXu+d6ys07yC06ONiV2kcsEfWC22voB6C3PvK2MqlBZ7w==}
|
||||
engines: {node: ^18.18.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
eslint: ^8.56.0
|
||||
@@ -1603,17 +1603,17 @@ packages:
|
||||
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
workerd@1.20240512.0:
|
||||
resolution: {integrity: sha512-VUBmR1PscAPHEE0OF/G2K7/H1gnr9aDWWZzdkIgWfNKkv8dKFCT75H+GJtUHjfwqz3rYCzaNZmatSXOpLGpF8A==}
|
||||
workerd@1.20240524.0:
|
||||
resolution: {integrity: sha512-LWLe5D8PVHBcqturmBbwgI71r7YPpIMYZoVEH6S4G35EqIJ55cb0n3FipoSyraoIfpcCxCFxX1K6WsRHbP3pFA==}
|
||||
engines: {node: '>=16'}
|
||||
hasBin: true
|
||||
|
||||
wrangler@3.57.1:
|
||||
resolution: {integrity: sha512-M8YnWUwdrb8AFiRePtVnzlDn02OX4osWvdl8oVh6eyZqqkqXYg7lwlYBr14Qj92pMN4JvMBmDZoukkYHvwpJRg==}
|
||||
wrangler@3.58.0:
|
||||
resolution: {integrity: sha512-h9gWER7LXLnmHABDNP1p3aqXtchlvSBN8Dp22ZurnkxaLMZ3L3H1Ze1ftiFSs0VRWv0BUnz7AWIUqZmzuBY4Nw==}
|
||||
engines: {node: '>=16.17.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@cloudflare/workers-types': ^4.20240512.0
|
||||
'@cloudflare/workers-types': ^4.20240524.0
|
||||
peerDependenciesMeta:
|
||||
'@cloudflare/workers-types':
|
||||
optional: true
|
||||
@@ -1714,10 +1714,10 @@ snapshots:
|
||||
'@aws-crypto/sha1-browser': 3.0.0
|
||||
'@aws-crypto/sha256-browser': 3.0.0
|
||||
'@aws-crypto/sha256-js': 3.0.0
|
||||
'@aws-sdk/client-sso-oidc': 3.588.0(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/client-sts': 3.588.0
|
||||
'@aws-sdk/client-sso-oidc': 3.588.0
|
||||
'@aws-sdk/client-sts': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)
|
||||
'@aws-sdk/core': 3.588.0
|
||||
'@aws-sdk/credential-provider-node': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/credential-provider-node': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))
|
||||
'@aws-sdk/middleware-bucket-endpoint': 3.587.0
|
||||
'@aws-sdk/middleware-expect-continue': 3.577.0
|
||||
'@aws-sdk/middleware-flexible-checksums': 3.587.0
|
||||
@@ -1772,13 +1772,13 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- aws-crt
|
||||
|
||||
'@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0)':
|
||||
'@aws-sdk/client-sso-oidc@3.588.0':
|
||||
dependencies:
|
||||
'@aws-crypto/sha256-browser': 3.0.0
|
||||
'@aws-crypto/sha256-js': 3.0.0
|
||||
'@aws-sdk/client-sts': 3.588.0
|
||||
'@aws-sdk/client-sts': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)
|
||||
'@aws-sdk/core': 3.588.0
|
||||
'@aws-sdk/credential-provider-node': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/credential-provider-node': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))
|
||||
'@aws-sdk/middleware-host-header': 3.577.0
|
||||
'@aws-sdk/middleware-logger': 3.577.0
|
||||
'@aws-sdk/middleware-recursion-detection': 3.577.0
|
||||
@@ -1815,7 +1815,6 @@ snapshots:
|
||||
'@smithy/util-utf8': 3.0.0
|
||||
tslib: 2.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@aws-sdk/client-sts'
|
||||
- aws-crt
|
||||
|
||||
'@aws-sdk/client-sso@3.588.0':
|
||||
@@ -1861,13 +1860,13 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- aws-crt
|
||||
|
||||
'@aws-sdk/client-sts@3.588.0':
|
||||
'@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0)':
|
||||
dependencies:
|
||||
'@aws-crypto/sha256-browser': 3.0.0
|
||||
'@aws-crypto/sha256-js': 3.0.0
|
||||
'@aws-sdk/client-sso-oidc': 3.588.0(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/client-sso-oidc': 3.588.0
|
||||
'@aws-sdk/core': 3.588.0
|
||||
'@aws-sdk/credential-provider-node': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/credential-provider-node': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))
|
||||
'@aws-sdk/middleware-host-header': 3.577.0
|
||||
'@aws-sdk/middleware-logger': 3.577.0
|
||||
'@aws-sdk/middleware-recursion-detection': 3.577.0
|
||||
@@ -1904,6 +1903,7 @@ snapshots:
|
||||
'@smithy/util-utf8': 3.0.0
|
||||
tslib: 2.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@aws-sdk/client-sso-oidc'
|
||||
- aws-crt
|
||||
|
||||
'@aws-sdk/core@3.588.0':
|
||||
@@ -1935,14 +1935,14 @@ snapshots:
|
||||
'@smithy/util-stream': 3.0.1
|
||||
tslib: 2.6.2
|
||||
|
||||
'@aws-sdk/credential-provider-ini@3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))(@aws-sdk/client-sts@3.588.0)':
|
||||
'@aws-sdk/credential-provider-ini@3.588.0(@aws-sdk/client-sso-oidc@3.588.0)(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))':
|
||||
dependencies:
|
||||
'@aws-sdk/client-sts': 3.588.0
|
||||
'@aws-sdk/client-sts': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)
|
||||
'@aws-sdk/credential-provider-env': 3.587.0
|
||||
'@aws-sdk/credential-provider-http': 3.587.0
|
||||
'@aws-sdk/credential-provider-process': 3.587.0
|
||||
'@aws-sdk/credential-provider-sso': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))
|
||||
'@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/credential-provider-sso': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)
|
||||
'@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))
|
||||
'@aws-sdk/types': 3.577.0
|
||||
'@smithy/credential-provider-imds': 3.1.0
|
||||
'@smithy/property-provider': 3.1.0
|
||||
@@ -1953,14 +1953,14 @@ snapshots:
|
||||
- '@aws-sdk/client-sso-oidc'
|
||||
- aws-crt
|
||||
|
||||
'@aws-sdk/credential-provider-node@3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))(@aws-sdk/client-sts@3.588.0)':
|
||||
'@aws-sdk/credential-provider-node@3.588.0(@aws-sdk/client-sso-oidc@3.588.0)(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))':
|
||||
dependencies:
|
||||
'@aws-sdk/credential-provider-env': 3.587.0
|
||||
'@aws-sdk/credential-provider-http': 3.587.0
|
||||
'@aws-sdk/credential-provider-ini': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/credential-provider-ini': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))
|
||||
'@aws-sdk/credential-provider-process': 3.587.0
|
||||
'@aws-sdk/credential-provider-sso': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))
|
||||
'@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/credential-provider-sso': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)
|
||||
'@aws-sdk/credential-provider-web-identity': 3.587.0(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))
|
||||
'@aws-sdk/types': 3.577.0
|
||||
'@smithy/credential-provider-imds': 3.1.0
|
||||
'@smithy/property-provider': 3.1.0
|
||||
@@ -1980,10 +1980,10 @@ snapshots:
|
||||
'@smithy/types': 3.0.0
|
||||
tslib: 2.6.2
|
||||
|
||||
'@aws-sdk/credential-provider-sso@3.588.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))':
|
||||
'@aws-sdk/credential-provider-sso@3.588.0(@aws-sdk/client-sso-oidc@3.588.0)':
|
||||
dependencies:
|
||||
'@aws-sdk/client-sso': 3.588.0
|
||||
'@aws-sdk/token-providers': 3.587.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))
|
||||
'@aws-sdk/token-providers': 3.587.0(@aws-sdk/client-sso-oidc@3.588.0)
|
||||
'@aws-sdk/types': 3.577.0
|
||||
'@smithy/property-provider': 3.1.0
|
||||
'@smithy/shared-ini-file-loader': 3.1.0
|
||||
@@ -1993,9 +1993,9 @@ snapshots:
|
||||
- '@aws-sdk/client-sso-oidc'
|
||||
- aws-crt
|
||||
|
||||
'@aws-sdk/credential-provider-web-identity@3.587.0(@aws-sdk/client-sts@3.588.0)':
|
||||
'@aws-sdk/credential-provider-web-identity@3.587.0(@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0))':
|
||||
dependencies:
|
||||
'@aws-sdk/client-sts': 3.588.0
|
||||
'@aws-sdk/client-sts': 3.588.0(@aws-sdk/client-sso-oidc@3.588.0)
|
||||
'@aws-sdk/types': 3.577.0
|
||||
'@smithy/property-provider': 3.1.0
|
||||
'@smithy/types': 3.0.0
|
||||
@@ -2120,9 +2120,9 @@ snapshots:
|
||||
'@smithy/types': 3.0.0
|
||||
tslib: 2.6.2
|
||||
|
||||
'@aws-sdk/token-providers@3.587.0(@aws-sdk/client-sso-oidc@3.588.0(@aws-sdk/client-sts@3.588.0))':
|
||||
'@aws-sdk/token-providers@3.587.0(@aws-sdk/client-sso-oidc@3.588.0)':
|
||||
dependencies:
|
||||
'@aws-sdk/client-sso-oidc': 3.588.0(@aws-sdk/client-sts@3.588.0)
|
||||
'@aws-sdk/client-sso-oidc': 3.588.0
|
||||
'@aws-sdk/types': 3.577.0
|
||||
'@smithy/property-provider': 3.1.0
|
||||
'@smithy/shared-ini-file-loader': 3.1.0
|
||||
@@ -2179,12 +2179,12 @@ snapshots:
|
||||
'@smithy/types': 3.0.0
|
||||
tslib: 2.6.2
|
||||
|
||||
'@babel/runtime-corejs3@7.24.5':
|
||||
'@babel/runtime-corejs3@7.24.6':
|
||||
dependencies:
|
||||
core-js-pure: 3.37.1
|
||||
regenerator-runtime: 0.14.1
|
||||
|
||||
'@babel/runtime@7.24.5':
|
||||
'@babel/runtime@7.24.6':
|
||||
dependencies:
|
||||
regenerator-runtime: 0.14.1
|
||||
|
||||
@@ -2192,22 +2192,22 @@ snapshots:
|
||||
dependencies:
|
||||
mime: 3.0.0
|
||||
|
||||
'@cloudflare/workerd-darwin-64@1.20240512.0':
|
||||
'@cloudflare/workerd-darwin-64@1.20240524.0':
|
||||
optional: true
|
||||
|
||||
'@cloudflare/workerd-darwin-arm64@1.20240512.0':
|
||||
'@cloudflare/workerd-darwin-arm64@1.20240524.0':
|
||||
optional: true
|
||||
|
||||
'@cloudflare/workerd-linux-64@1.20240512.0':
|
||||
'@cloudflare/workerd-linux-64@1.20240524.0':
|
||||
optional: true
|
||||
|
||||
'@cloudflare/workerd-linux-arm64@1.20240512.0':
|
||||
'@cloudflare/workerd-linux-arm64@1.20240524.0':
|
||||
optional: true
|
||||
|
||||
'@cloudflare/workerd-windows-64@1.20240512.0':
|
||||
'@cloudflare/workerd-windows-64@1.20240524.0':
|
||||
optional: true
|
||||
|
||||
'@cloudflare/workers-types@4.20240512.0': {}
|
||||
'@cloudflare/workers-types@4.20240603.0': {}
|
||||
|
||||
'@cspotcode/source-map-support@0.8.1':
|
||||
dependencies:
|
||||
@@ -2294,12 +2294,12 @@ snapshots:
|
||||
eslint: 8.56.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@eslint-community/regexpp@4.10.0': {}
|
||||
'@eslint-community/regexpp@4.10.1': {}
|
||||
|
||||
'@eslint/eslintrc@2.1.4':
|
||||
dependencies:
|
||||
ajv: 6.12.6
|
||||
debug: 4.3.4
|
||||
debug: 4.3.5
|
||||
espree: 9.6.1
|
||||
globals: 13.24.0
|
||||
ignore: 5.3.1
|
||||
@@ -2317,7 +2317,7 @@ snapshots:
|
||||
'@humanwhocodes/config-array@0.11.14':
|
||||
dependencies:
|
||||
'@humanwhocodes/object-schema': 2.0.3
|
||||
debug: 4.3.4
|
||||
debug: 4.3.5
|
||||
minimatch: 3.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -2691,20 +2691,20 @@ snapshots:
|
||||
|
||||
'@types/node-forge@1.3.11':
|
||||
dependencies:
|
||||
'@types/node': 20.12.12
|
||||
'@types/node': 20.14.1
|
||||
|
||||
'@types/node@20.12.12':
|
||||
'@types/node@20.14.1':
|
||||
dependencies:
|
||||
undici-types: 5.26.5
|
||||
|
||||
'@typescript-eslint/eslint-plugin@7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0)(typescript@5.4.5)':
|
||||
'@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0)(typescript@5.4.5)':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.10.0
|
||||
'@typescript-eslint/parser': 7.10.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/scope-manager': 7.10.0
|
||||
'@typescript-eslint/type-utils': 7.10.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/utils': 7.10.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/visitor-keys': 7.10.0
|
||||
'@eslint-community/regexpp': 4.10.1
|
||||
'@typescript-eslint/parser': 7.12.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/scope-manager': 7.12.0
|
||||
'@typescript-eslint/type-utils': 7.12.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/utils': 7.12.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/visitor-keys': 7.12.0
|
||||
eslint: 8.56.0
|
||||
graphemer: 1.4.0
|
||||
ignore: 5.3.1
|
||||
@@ -2715,29 +2715,29 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/parser@7.10.0(eslint@8.56.0)(typescript@5.4.5)':
|
||||
'@typescript-eslint/parser@7.12.0(eslint@8.56.0)(typescript@5.4.5)':
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 7.10.0
|
||||
'@typescript-eslint/types': 7.10.0
|
||||
'@typescript-eslint/typescript-estree': 7.10.0(typescript@5.4.5)
|
||||
'@typescript-eslint/visitor-keys': 7.10.0
|
||||
debug: 4.3.4
|
||||
'@typescript-eslint/scope-manager': 7.12.0
|
||||
'@typescript-eslint/types': 7.12.0
|
||||
'@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
|
||||
'@typescript-eslint/visitor-keys': 7.12.0
|
||||
debug: 4.3.5
|
||||
eslint: 8.56.0
|
||||
optionalDependencies:
|
||||
typescript: 5.4.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/scope-manager@7.10.0':
|
||||
'@typescript-eslint/scope-manager@7.12.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 7.10.0
|
||||
'@typescript-eslint/visitor-keys': 7.10.0
|
||||
'@typescript-eslint/types': 7.12.0
|
||||
'@typescript-eslint/visitor-keys': 7.12.0
|
||||
|
||||
'@typescript-eslint/type-utils@7.10.0(eslint@8.56.0)(typescript@5.4.5)':
|
||||
'@typescript-eslint/type-utils@7.12.0(eslint@8.56.0)(typescript@5.4.5)':
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 7.10.0(typescript@5.4.5)
|
||||
'@typescript-eslint/utils': 7.10.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
debug: 4.3.4
|
||||
'@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
|
||||
'@typescript-eslint/utils': 7.12.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
debug: 4.3.5
|
||||
eslint: 8.56.0
|
||||
ts-api-utils: 1.3.0(typescript@5.4.5)
|
||||
optionalDependencies:
|
||||
@@ -2745,13 +2745,13 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/types@7.10.0': {}
|
||||
'@typescript-eslint/types@7.12.0': {}
|
||||
|
||||
'@typescript-eslint/typescript-estree@7.10.0(typescript@5.4.5)':
|
||||
'@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.5)':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 7.10.0
|
||||
'@typescript-eslint/visitor-keys': 7.10.0
|
||||
debug: 4.3.4
|
||||
'@typescript-eslint/types': 7.12.0
|
||||
'@typescript-eslint/visitor-keys': 7.12.0
|
||||
debug: 4.3.5
|
||||
globby: 11.1.0
|
||||
is-glob: 4.0.3
|
||||
minimatch: 9.0.4
|
||||
@@ -2762,20 +2762,20 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@7.10.0(eslint@8.56.0)(typescript@5.4.5)':
|
||||
'@typescript-eslint/utils@7.12.0(eslint@8.56.0)(typescript@5.4.5)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
|
||||
'@typescript-eslint/scope-manager': 7.10.0
|
||||
'@typescript-eslint/types': 7.10.0
|
||||
'@typescript-eslint/typescript-estree': 7.10.0(typescript@5.4.5)
|
||||
'@typescript-eslint/scope-manager': 7.12.0
|
||||
'@typescript-eslint/types': 7.12.0
|
||||
'@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
|
||||
eslint: 8.56.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
'@typescript-eslint/visitor-keys@7.10.0':
|
||||
'@typescript-eslint/visitor-keys@7.12.0':
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 7.10.0
|
||||
'@typescript-eslint/types': 7.12.0
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@ungap/structured-clone@1.2.0': {}
|
||||
@@ -2858,7 +2858,7 @@ snapshots:
|
||||
|
||||
capnp-ts@0.7.0:
|
||||
dependencies:
|
||||
debug: 4.3.4
|
||||
debug: 4.3.5
|
||||
tslib: 2.6.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
@@ -2907,7 +2907,7 @@ snapshots:
|
||||
|
||||
data-uri-to-buffer@2.0.2: {}
|
||||
|
||||
debug@4.3.4:
|
||||
debug@4.3.5:
|
||||
dependencies:
|
||||
ms: 2.1.2
|
||||
|
||||
@@ -2993,7 +2993,7 @@ snapshots:
|
||||
eslint@8.56.0:
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
|
||||
'@eslint-community/regexpp': 4.10.0
|
||||
'@eslint-community/regexpp': 4.10.1
|
||||
'@eslint/eslintrc': 2.1.4
|
||||
'@eslint/js': 8.56.0
|
||||
'@humanwhocodes/config-array': 0.11.14
|
||||
@@ -3003,7 +3003,7 @@ snapshots:
|
||||
ajv: 6.12.6
|
||||
chalk: 4.1.2
|
||||
cross-spawn: 7.0.3
|
||||
debug: 4.3.4
|
||||
debug: 4.3.5
|
||||
doctrine: 3.0.0
|
||||
escape-string-regexp: 4.0.0
|
||||
eslint-scope: 7.2.2
|
||||
@@ -3130,7 +3130,7 @@ snapshots:
|
||||
glob@10.4.1:
|
||||
dependencies:
|
||||
foreground-child: 3.1.1
|
||||
jackspeak: 3.1.2
|
||||
jackspeak: 3.2.3
|
||||
minimatch: 9.0.4
|
||||
minipass: 7.1.2
|
||||
path-scurry: 1.11.1
|
||||
@@ -3167,7 +3167,7 @@ snapshots:
|
||||
dependencies:
|
||||
function-bind: 1.1.2
|
||||
|
||||
hono@4.3.9: {}
|
||||
hono@4.4.3: {}
|
||||
|
||||
html-to-text@9.0.5:
|
||||
dependencies:
|
||||
@@ -3224,7 +3224,7 @@ snapshots:
|
||||
|
||||
isexe@2.0.0: {}
|
||||
|
||||
jackspeak@3.1.2:
|
||||
jackspeak@3.2.3:
|
||||
dependencies:
|
||||
'@isaacs/cliui': 8.0.2
|
||||
optionalDependencies:
|
||||
@@ -3298,12 +3298,12 @@ snapshots:
|
||||
|
||||
mimetext@3.0.24:
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
'@babel/runtime-corejs3': 7.24.5
|
||||
'@babel/runtime': 7.24.6
|
||||
'@babel/runtime-corejs3': 7.24.6
|
||||
js-base64: 3.7.7
|
||||
mime-types: 2.1.35
|
||||
|
||||
miniflare@3.20240512.0:
|
||||
miniflare@3.20240524.1:
|
||||
dependencies:
|
||||
'@cspotcode/source-map-support': 0.8.1
|
||||
acorn: 8.11.3
|
||||
@@ -3313,7 +3313,7 @@ snapshots:
|
||||
glob-to-regexp: 0.4.1
|
||||
stoppable: 1.1.0
|
||||
undici: 5.28.4
|
||||
workerd: 1.20240512.0
|
||||
workerd: 1.20240524.0
|
||||
ws: 8.17.0
|
||||
youch: 3.3.3
|
||||
zod: 3.23.8
|
||||
@@ -3553,7 +3553,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@telegraf/types': 7.1.0
|
||||
abort-controller: 3.0.0
|
||||
debug: 4.3.4
|
||||
debug: 4.3.5
|
||||
mri: 1.2.0
|
||||
node-fetch: 2.7.0
|
||||
p-timeout: 4.1.0
|
||||
@@ -3585,11 +3585,11 @@ snapshots:
|
||||
|
||||
type-fest@0.20.2: {}
|
||||
|
||||
typescript-eslint@7.10.0(eslint@8.56.0)(typescript@5.4.5):
|
||||
typescript-eslint@7.12.0(eslint@8.56.0)(typescript@5.4.5):
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 7.10.0(@typescript-eslint/parser@7.10.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/parser': 7.10.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/utils': 7.10.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0(eslint@8.56.0)(typescript@5.4.5))(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/parser': 7.12.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
'@typescript-eslint/utils': 7.12.0(eslint@8.56.0)(typescript@5.4.5)
|
||||
eslint: 8.56.0
|
||||
optionalDependencies:
|
||||
typescript: 5.4.5
|
||||
@@ -3623,15 +3623,15 @@ snapshots:
|
||||
|
||||
word-wrap@1.2.5: {}
|
||||
|
||||
workerd@1.20240512.0:
|
||||
workerd@1.20240524.0:
|
||||
optionalDependencies:
|
||||
'@cloudflare/workerd-darwin-64': 1.20240512.0
|
||||
'@cloudflare/workerd-darwin-arm64': 1.20240512.0
|
||||
'@cloudflare/workerd-linux-64': 1.20240512.0
|
||||
'@cloudflare/workerd-linux-arm64': 1.20240512.0
|
||||
'@cloudflare/workerd-windows-64': 1.20240512.0
|
||||
'@cloudflare/workerd-darwin-64': 1.20240524.0
|
||||
'@cloudflare/workerd-darwin-arm64': 1.20240524.0
|
||||
'@cloudflare/workerd-linux-64': 1.20240524.0
|
||||
'@cloudflare/workerd-linux-arm64': 1.20240524.0
|
||||
'@cloudflare/workerd-windows-64': 1.20240524.0
|
||||
|
||||
wrangler@3.57.1(@cloudflare/workers-types@4.20240512.0):
|
||||
wrangler@3.58.0(@cloudflare/workers-types@4.20240603.0):
|
||||
dependencies:
|
||||
'@cloudflare/kv-asset-handler': 0.3.2
|
||||
'@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19)
|
||||
@@ -3639,7 +3639,7 @@ snapshots:
|
||||
blake3-wasm: 2.1.5
|
||||
chokidar: 3.6.0
|
||||
esbuild: 0.17.19
|
||||
miniflare: 3.20240512.0
|
||||
miniflare: 3.20240524.1
|
||||
nanoid: 3.3.7
|
||||
path-to-regexp: 6.2.2
|
||||
resolve: 1.22.8
|
||||
@@ -3648,7 +3648,7 @@ snapshots:
|
||||
source-map: 0.6.1
|
||||
xxhash-wasm: 1.0.2
|
||||
optionalDependencies:
|
||||
'@cloudflare/workers-types': 4.20240512.0
|
||||
'@cloudflare/workers-types': 4.20240603.0
|
||||
fsevents: 2.3.3
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
|
||||
@@ -166,3 +166,43 @@ export const handleListQuery = async (
|
||||
).bind(...params).first("count") : 0;
|
||||
return c.json({ results, count });
|
||||
}
|
||||
|
||||
|
||||
export const commonParseMail = async (raw_mail: string | undefined | null): Promise<{
|
||||
sender: string,
|
||||
subject: string,
|
||||
text: string,
|
||||
html: string
|
||||
} | undefined> => {
|
||||
if (!raw_mail) {
|
||||
return undefined;
|
||||
}
|
||||
// TODO: WASM parse email
|
||||
// try {
|
||||
// const { parse_message_wrapper } = await import('mail-parser-wasm-worker');
|
||||
|
||||
// const parsedEmail = parse_message_wrapper(raw_mail);
|
||||
// return {
|
||||
// sender: parsedEmail.sender || "",
|
||||
// subject: parsedEmail.subject || "",
|
||||
// text: parsedEmail.text || "",
|
||||
// html: parsedEmail.body_html || "",
|
||||
// };
|
||||
// } catch (e) {
|
||||
// console.error("Failed use mail-parser-wasm-worker to parse email", e);
|
||||
// }
|
||||
try {
|
||||
const { default: PostalMime } = await import('postal-mime');
|
||||
const parsedEmail = await PostalMime.parse(raw_mail);
|
||||
return {
|
||||
sender: parsedEmail.from ? `${parsedEmail.from.name} <${parsedEmail.from.address}>` : "",
|
||||
subject: parsedEmail.subject || "",
|
||||
text: parsedEmail.text || "",
|
||||
html: parsedEmail.html || "",
|
||||
};
|
||||
}
|
||||
catch (e) {
|
||||
console.error("Failed use PostalMime to parse email", e);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export const CONSTANTS = {
|
||||
VERSION: 'v0.5.0',
|
||||
VERSION: 'v0.5.1',
|
||||
|
||||
// DB settings
|
||||
ADDRESS_BLOCK_LIST_KEY: 'address_block_list',
|
||||
|
||||
@@ -3,7 +3,7 @@ import { HonoCustomType } from "../types";
|
||||
import { CONSTANTS } from "../constants";
|
||||
import { AdminWebhookSettings, WebhookMail } from "../models";
|
||||
import { getBooleanValue } from "../utils";
|
||||
import PostalMime from 'postal-mime';
|
||||
import { commonParseMail } from "../common";
|
||||
|
||||
|
||||
class WebhookSettings {
|
||||
@@ -15,10 +15,10 @@ class WebhookSettings {
|
||||
body: string = JSON.stringify({
|
||||
"from": "${from}",
|
||||
"to": "${to}",
|
||||
"headers": "${headers}",
|
||||
"subject": "${subject}",
|
||||
"raw": "${raw}",
|
||||
"parsedText": "${parsedText}",
|
||||
"parsedHtml": "${parsedHtml}",
|
||||
}, null, 2)
|
||||
}
|
||||
|
||||
@@ -98,14 +98,14 @@ export async function trigerWebhook(
|
||||
if (!settings) {
|
||||
return;
|
||||
}
|
||||
const parsedEmail = await PostalMime.parse(raw_mail);
|
||||
const parsedEmail = await commonParseMail(raw_mail);
|
||||
const res = await sendWebhook(settings, {
|
||||
from: parsedEmail.from.address || "",
|
||||
from: parsedEmail?.sender || "",
|
||||
to: address,
|
||||
headers: JSON.stringify(parsedEmail.headers),
|
||||
subject: parsedEmail.subject || "",
|
||||
subject: parsedEmail?.subject || "",
|
||||
raw: raw_mail,
|
||||
parsedText: parsedEmail.text || parsedEmail.html || ""
|
||||
parsedText: parsedEmail?.text || "",
|
||||
parsedHtml: parsedEmail?.html || ""
|
||||
});
|
||||
if (!res.success) {
|
||||
console.log(res.message);
|
||||
@@ -119,14 +119,15 @@ async function testWebhookSettings(c: Context<HonoCustomType>): Promise<Response
|
||||
const raw = await c.env.DB.prepare(
|
||||
`SELECT raw FROM raw_mails WHERE address = ? ORDER BY RANDOM() LIMIT 1`
|
||||
).bind(address).first<string>("raw");
|
||||
const parsedEmail = raw ? await PostalMime.parse(raw) : {} as any;
|
||||
|
||||
const parsedEmail = await commonParseMail(raw);
|
||||
const res = await sendWebhook(settings, {
|
||||
from: parsedEmail?.from?.address || "test@test.com",
|
||||
from: parsedEmail?.sender || "test@test.com",
|
||||
to: address,
|
||||
headers: JSON.stringify(parsedEmail?.headers || { "X-Test": "test" }),
|
||||
subject: parsedEmail?.subject || "test subject",
|
||||
raw: raw || "test raw email",
|
||||
parsedText: parsedEmail?.text || parsedEmail?.html || "test parsed text"
|
||||
parsedText: parsedEmail?.text || "test parsed text",
|
||||
parsedHtml: parsedEmail?.html || "test parsed html"
|
||||
});
|
||||
if (!res.success) {
|
||||
return c.text(res.message || "send webhook error", 400);
|
||||
|
||||
@@ -9,10 +9,10 @@ export class AdminWebhookSettings {
|
||||
export type WebhookMail = {
|
||||
from: string;
|
||||
to: string;
|
||||
headers: string;
|
||||
subject: string;
|
||||
raw: string;
|
||||
parsedText: string;
|
||||
parsedHtml: string;
|
||||
}
|
||||
|
||||
export class CleanupSettings {
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
|
||||
import { Context } from "hono";
|
||||
import { Jwt } from 'hono/utils/jwt'
|
||||
import { Telegraf, Context as TgContext, Markup } from "telegraf";
|
||||
import { callbackQuery } from "telegraf/filters";
|
||||
import PostalMime from 'postal-mime';
|
||||
|
||||
import { CONSTANTS } from "../constants";
|
||||
import { getDomains, getStringValue } from '../utils';
|
||||
import { HonoCustomType } from "../types";
|
||||
import { TelegramSettings } from "./settings";
|
||||
import { bindTelegramAddress, deleteTelegramAddress, jwtListToAddressData, tgUserNewAddress, unbindTelegramAddress, unbindTelegramByAddress } from "./common";
|
||||
import { commonParseMail } from "../common";
|
||||
|
||||
|
||||
const COMMANDS = [
|
||||
{
|
||||
@@ -195,13 +195,13 @@ export function newTelegramBot(c: Context<HonoCustomType>, token: string): Teleg
|
||||
if (!db_address_id) {
|
||||
return await ctx.reply("无效地址");
|
||||
}
|
||||
const { raw, id: mailId } = await c.env.DB.prepare(
|
||||
const { raw, id: mailId, created_at } = await c.env.DB.prepare(
|
||||
`SELECT * FROM raw_mails where address = ? `
|
||||
+ ` order by id desc limit 1 offset ?`
|
||||
).bind(
|
||||
queryAddress, mailIndex
|
||||
).first<{ raw: string, id: string }>() || {};
|
||||
const { mail } = raw ? await parseMail(raw) : { mail: "已经没有邮件了" };
|
||||
).first<{ raw: string, id: string, created_at: string }>() || {};
|
||||
const { mail } = raw ? await parseMail(raw, queryAddress, created_at) : { mail: "已经没有邮件了" };
|
||||
const settings = await c.env.KV.get<TelegramSettings>(CONSTANTS.TG_KV_SETTINGS_KEY, "json");
|
||||
const miniAppButtons = []
|
||||
if (settings?.miniAppUrl && settings?.miniAppUrl?.length > 0 && mailId) {
|
||||
@@ -265,22 +265,26 @@ export async function initTelegramBotCommands(bot: Telegraf) {
|
||||
await bot.telegram.setMyCommands(COMMANDS);
|
||||
}
|
||||
|
||||
const parseMail = async (raw_mail: string | undefined | null) => {
|
||||
const parseMail = async (
|
||||
raw_mail: string | undefined | null,
|
||||
address: string, created_at: string | undefined | null
|
||||
) => {
|
||||
if (!raw_mail) {
|
||||
return {};
|
||||
}
|
||||
try {
|
||||
const parsedEmail = await PostalMime.parse(raw_mail);
|
||||
if (parsedEmail?.text?.length && parsedEmail?.text?.length > 1000) {
|
||||
parsedEmail.text = parsedEmail.text.substring(0, 1000) + "...消息过长请到miniapp查看";
|
||||
const parsedEmail = await commonParseMail(raw_mail);
|
||||
let parsedText = parsedEmail?.text || "";
|
||||
if (parsedText.length && parsedText.length > 1000) {
|
||||
parsedText = parsedEmail?.text.substring(0, 1000) + "\n\n...\n消息过长请到miniapp查看";
|
||||
}
|
||||
return {
|
||||
isHtml: false,
|
||||
mail: `From: ${parsedEmail.from ? `${parsedEmail.from.name}[${parsedEmail.from.address}]` : "无发件人"}\n`
|
||||
+ `To: ${parsedEmail.to?.map(t => `${t.name}[${t.address}]`).join(" ")}\n`
|
||||
+ `Subject: ${parsedEmail.subject}\n`
|
||||
+ `Date: ${parsedEmail.date}\n`
|
||||
+ `Content:\n${parsedEmail.text || "解析失败,请打开 mini app 查看"}`
|
||||
mail: `From: ${parsedEmail?.sender || "无发件人"}\n`
|
||||
+ `To: ${address}\n`
|
||||
+ (created_at ? `Date: ${created_at}\n` : "")
|
||||
+ `Subject: ${parsedEmail?.subject}\n`
|
||||
+ `Content:\n${parsedEmail?.text || "解析失败,请打开 mini app 查看"}`
|
||||
};
|
||||
} catch (e) {
|
||||
return {
|
||||
@@ -299,7 +303,7 @@ export async function sendMailToTelegram(
|
||||
return;
|
||||
}
|
||||
const userId = await c.env.KV.get(`${CONSTANTS.TG_KV_PREFIX}:${address}`);
|
||||
const { mail } = await parseMail(raw_mail);
|
||||
const { mail } = await parseMail(raw_mail, address, new Date().toUTCString());
|
||||
if (!mail) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -125,8 +125,14 @@ app.route('/', apiV1)
|
||||
app.route('/', apiSendMail)
|
||||
app.route('/', telegramApi)
|
||||
|
||||
app.get('/', async c => c.text("OK"))
|
||||
app.get('/health_check', async c => c.text("OK"))
|
||||
app.get('/', async c => {
|
||||
if (!c.env.DB) { return c.text("DB is not available", 400); }
|
||||
return c.text("OK");
|
||||
})
|
||||
app.get('/health_check', async c => {
|
||||
if (!c.env.DB) { return c.text("DB is not available", 400); }
|
||||
return c.text("OK");
|
||||
})
|
||||
app.all('/*', async c => c.text("Not Found", 404))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user