From 5172e2ec3db984b87ed3c7674f0b4d6a914e92b6 Mon Sep 17 00:00:00 2001 From: Shigma Date: Sat, 11 May 2024 21:53:09 +0800 Subject: [PATCH] refa: migrate framework API 1. HTTP.Error.is -> ctx.http.isError 2. @satorijs/satori -> @satorijs/core --- README.md | 4 ++-- adapters/dingtalk/.npmignore | 2 -- adapters/dingtalk/package.json | 7 ++++--- adapters/dingtalk/src/bot.ts | 14 ++++++------- adapters/dingtalk/src/http.ts | 2 +- adapters/dingtalk/src/internal.ts | 10 +++++----- adapters/dingtalk/src/message.ts | 2 +- adapters/dingtalk/src/utils.ts | 2 +- adapters/dingtalk/src/ws.ts | 2 +- adapters/discord/.npmignore | 2 -- adapters/discord/package.json | 7 ++++--- adapters/discord/src/bot.ts | 26 ++++++++++++++++++------- adapters/discord/src/message.ts | 4 ++-- adapters/discord/src/types/internal.ts | 10 +++++----- adapters/discord/src/utils.ts | 2 +- adapters/discord/src/ws.ts | 2 +- adapters/kook/.npmignore | 2 -- adapters/kook/package.json | 7 ++++--- adapters/kook/src/bot.ts | 10 +++++----- adapters/kook/src/http.ts | 2 +- adapters/kook/src/message.ts | 2 +- adapters/kook/src/types.ts | 8 ++++---- adapters/kook/src/utils.ts | 2 +- adapters/kook/src/ws.ts | 2 +- adapters/lark/.npmignore | 2 -- adapters/lark/package.json | 9 +++++---- adapters/lark/src/bot.ts | 12 ++++++------ adapters/lark/src/http.ts | 2 +- adapters/lark/src/index.ts | 4 ++-- adapters/lark/src/message.ts | 4 ++-- adapters/lark/src/types/internal.ts | 4 ++-- adapters/lark/src/utils.ts | 2 +- adapters/line/.npmignore | 2 -- adapters/line/package.json | 7 ++++--- adapters/line/src/bot.ts | 14 ++++++------- adapters/line/src/http.ts | 2 +- adapters/line/src/index.ts | 2 +- adapters/line/src/message.ts | 2 +- adapters/line/src/types/internal.ts | 12 ++++++------ adapters/line/src/utils.ts | 2 +- adapters/mail/.npmignore | 2 -- adapters/mail/package.json | 5 +++-- adapters/mail/src/bot.ts | 2 +- adapters/mail/src/index.ts | 7 ++++++- adapters/mail/src/mail.ts | 2 +- adapters/mail/src/message.ts | 2 +- adapters/mail/src/utils.ts | 2 +- adapters/matrix/.npmignore | 2 -- adapters/matrix/package.json | 7 ++++--- adapters/matrix/src/bot.ts | 8 ++++---- adapters/matrix/src/http.ts | 2 +- adapters/matrix/src/message.ts | 2 +- adapters/matrix/src/types.ts | 2 +- adapters/matrix/src/utils.ts | 2 +- adapters/qq/.npmignore | 2 -- adapters/qq/package.json | 7 ++++--- adapters/qq/src/bot/guild.ts | 4 ++-- adapters/qq/src/bot/index.ts | 12 ++++++------ adapters/qq/src/internal/internal.ts | 15 +++++++------- adapters/qq/src/message.ts | 8 ++++---- adapters/qq/src/utils.ts | 2 +- adapters/qq/src/ws.ts | 4 ++-- adapters/satori/.npmignore | 2 -- adapters/satori/package.json | 5 +++-- adapters/satori/src/bot.ts | 4 ++-- adapters/satori/src/ws.ts | 4 ++-- adapters/slack/.npmignore | 2 -- adapters/slack/package.json | 7 ++++--- adapters/slack/src/bot.ts | 10 +++++----- adapters/slack/src/http.ts | 2 +- adapters/slack/src/index.ts | 3 ++- adapters/slack/src/message.ts | 2 +- adapters/slack/src/types/internal.ts | 12 ++++++------ adapters/slack/src/utils.ts | 2 +- adapters/slack/src/ws.ts | 2 +- adapters/telegram/.npmignore | 2 -- adapters/telegram/package.json | 7 ++++--- adapters/telegram/src/bot.ts | 10 +++++----- adapters/telegram/src/message.ts | 2 +- adapters/telegram/src/polling.ts | 4 ++-- adapters/telegram/src/server.ts | 2 +- adapters/telegram/src/utils.ts | 2 +- adapters/wechat-official/.npmignore | 2 -- adapters/wechat-official/package.json | 7 ++++--- adapters/wechat-official/src/bot.ts | 8 ++++---- adapters/wechat-official/src/http.ts | 2 +- adapters/wechat-official/src/index.ts | 15 ++++++++------ adapters/wechat-official/src/message.ts | 2 +- adapters/wechat-official/src/utils.ts | 2 +- adapters/wecom/.npmignore | 2 -- adapters/wecom/package.json | 7 ++++--- adapters/wecom/src/bot.ts | 8 ++++---- adapters/wecom/src/http.ts | 2 +- adapters/wecom/src/index.ts | 13 ++++++++----- adapters/wecom/src/message.ts | 2 +- adapters/wecom/src/utils.ts | 2 +- adapters/whatsapp/.npmignore | 2 -- adapters/whatsapp/package.json | 7 ++++--- adapters/whatsapp/src/adapter.ts | 6 +++--- adapters/whatsapp/src/bot.ts | 4 ++-- adapters/whatsapp/src/index.ts | 4 ++-- adapters/whatsapp/src/internal.ts | 4 ++-- adapters/whatsapp/src/message.ts | 2 +- adapters/whatsapp/src/utils.ts | 2 +- adapters/zulip/.npmignore | 2 -- adapters/zulip/package.json | 7 ++++--- adapters/zulip/src/bot.ts | 8 ++++---- adapters/zulip/src/message.ts | 2 +- adapters/zulip/src/polling.ts | 4 ++-- adapters/zulip/src/types/internal.ts | 12 ++++++------ adapters/zulip/src/utils.ts | 2 +- package.json | 2 +- packages/core/package.json | 15 +++++++++++++- packages/core/src/index.ts | 3 ++- packages/core/src/session.ts | 3 ++- packages/database/package.json | 5 ++++- packages/database/src/channel.ts | 2 +- packages/database/src/guild.ts | 2 +- packages/database/src/span.ts | 2 +- packages/database/src/types.ts | 3 ++- packages/protocol/src/index.ts | 2 +- packages/satori/package.json | 7 ++++++- packages/satori/src/index.ts | 1 - packages/server-proxy/package.json | 4 ++-- packages/server-proxy/src/index.ts | 4 ++-- packages/server-satori/package.json | 4 ++-- packages/server-satori/src/index.ts | 2 +- tsconfig.json | 3 +-- 128 files changed, 320 insertions(+), 288 deletions(-) delete mode 100644 adapters/dingtalk/.npmignore delete mode 100644 adapters/discord/.npmignore delete mode 100644 adapters/kook/.npmignore delete mode 100644 adapters/lark/.npmignore delete mode 100644 adapters/line/.npmignore delete mode 100644 adapters/mail/.npmignore delete mode 100644 adapters/matrix/.npmignore delete mode 100644 adapters/qq/.npmignore delete mode 100644 adapters/satori/.npmignore delete mode 100644 adapters/slack/.npmignore delete mode 100644 adapters/telegram/.npmignore delete mode 100644 adapters/wechat-official/.npmignore delete mode 100644 adapters/wecom/.npmignore delete mode 100644 adapters/whatsapp/.npmignore delete mode 100644 adapters/zulip/.npmignore diff --git a/README.md b/README.md index 83d0f9e2..7e8597b9 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ ### Basic usage ```ts -import { Context } from '@satorijs/satori' +import { Context } from '@satorijs/core' import discord from '@satorijs/adapter-discord' // create a new context @@ -54,7 +54,7 @@ await ctx.start() ### Specifying protocol ```ts -import { Context } from '@satorijs/satori' +import { Context } from '@satorijs/core' import router from '@cordisjs/plugin-server' import telegram from '@satorijs/adapter-telegram' diff --git a/adapters/dingtalk/.npmignore b/adapters/dingtalk/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/dingtalk/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/dingtalk/package.json b/adapters/dingtalk/package.json index adf8b428..3e102381 100644 --- a/adapters/dingtalk/package.json +++ b/adapters/dingtalk/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-dingtalk", "description": "DingTalk (钉钉) Adapter for Satorijs", "version": "2.3.1", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -30,10 +31,10 @@ "chat" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0", + "@cordisjs/plugin-server": "^0.2.1", "@cordisjs/plugin-server-temp": "^0.4.0" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" } } diff --git a/adapters/dingtalk/src/bot.ts b/adapters/dingtalk/src/bot.ts index 52a266b8..0cf375d5 100644 --- a/adapters/dingtalk/src/bot.ts +++ b/adapters/dingtalk/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Quester, Schema } from '@satorijs/satori' +import { Bot, Context, HTTP, Schema } from '@satorijs/core' import { HttpServer } from './http' import { DingtalkMessageEncoder } from './message' import { WsClient } from './ws' @@ -9,8 +9,8 @@ export class DingtalkBot extends Bot = Schema.intersect([ @@ -122,8 +122,8 @@ export namespace DingtalkBot { secret: Schema.string().required().description('机器人密钥。'), agentId: Schema.number().description('AgentId'), appkey: Schema.string().required(), - api: Quester.createConfig('https://api.dingtalk.com/v1.0/'), - oldApi: Quester.createConfig('https://oapi.dingtalk.com/'), + api: HTTP.createConfig('https://api.dingtalk.com/v1.0/'), + oldApi: HTTP.createConfig('https://oapi.dingtalk.com/'), }), WsClient.Options, ]) diff --git a/adapters/dingtalk/src/http.ts b/adapters/dingtalk/src/http.ts index 03423dcf..81910987 100644 --- a/adapters/dingtalk/src/http.ts +++ b/adapters/dingtalk/src/http.ts @@ -1,4 +1,4 @@ -import { Adapter, Context, Logger } from '@satorijs/satori' +import { Adapter, Context, Logger } from '@satorijs/core' import {} from '@cordisjs/plugin-server' import { DingtalkBot } from './bot' import crypto from 'node:crypto' diff --git a/adapters/dingtalk/src/internal.ts b/adapters/dingtalk/src/internal.ts index aa7984b1..23d05590 100644 --- a/adapters/dingtalk/src/internal.ts +++ b/adapters/dingtalk/src/internal.ts @@ -1,13 +1,13 @@ -import { Dict, Quester } from '@satorijs/satori' +import { Dict, HTTP } from '@satorijs/core' import { DingtalkBot } from './bot' export class Internal { constructor(private bot: DingtalkBot) { } - static define(routes: Dict>>>) { + static define(routes: Dict>>>) { for (const path in routes) { for (const key in routes[path]) { - const method = key as Quester.Method + const method = key as HTTP.Method for (const name of Object.keys(routes[path][method])) { const isOldApi = routes[path][method][name] Internal.prototype[name] = async function (this: Internal, ...args: any[]) { @@ -16,7 +16,7 @@ export class Internal { if (!args.length) throw new Error(`too few arguments for ${path}, received ${raw}`) return args.shift() }) - const config: Quester.RequestConfig = {} + const config: HTTP.RequestConfig = {} if (args.length === 1) { if (method === 'GET' || method === 'DELETE') { config.params = args[0] @@ -36,7 +36,7 @@ export class Internal { try { return (await quester(method, url, config)).data } catch (error) { - if (!Quester.Error.is(error) || !error.response) throw error + if (!this.bot.http.isError(error) || !error.response) throw error throw new Error(`[${error.response.status}] ${JSON.stringify(error.response.data)}`) } } diff --git a/adapters/dingtalk/src/message.ts b/adapters/dingtalk/src/message.ts index 4573fba7..380eddfa 100644 --- a/adapters/dingtalk/src/message.ts +++ b/adapters/dingtalk/src/message.ts @@ -1,4 +1,4 @@ -import { Context, Dict, h, MessageEncoder } from '@satorijs/satori' +import { Context, Dict, h, MessageEncoder } from '@satorijs/core' import { DingtalkBot } from './bot' import { SendMessageData } from './types' import { Entry } from '@cordisjs/plugin-server-temp' diff --git a/adapters/dingtalk/src/utils.ts b/adapters/dingtalk/src/utils.ts index 5d44a1dc..4e096973 100644 --- a/adapters/dingtalk/src/utils.ts +++ b/adapters/dingtalk/src/utils.ts @@ -1,4 +1,4 @@ -import { Context, h } from '@satorijs/satori' +import { Context, h } from '@satorijs/core' import { Message } from './types' import { DingtalkBot } from './bot' diff --git a/adapters/dingtalk/src/ws.ts b/adapters/dingtalk/src/ws.ts index a1af57af..5c64ac33 100644 --- a/adapters/dingtalk/src/ws.ts +++ b/adapters/dingtalk/src/ws.ts @@ -1,4 +1,4 @@ -import { Adapter, Context, Schema } from '@satorijs/satori' +import { Adapter, Context, Schema } from '@satorijs/core' import { DingtalkBot } from './bot' import { decodeMessage } from './utils' diff --git a/adapters/discord/.npmignore b/adapters/discord/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/discord/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/discord/package.json b/adapters/discord/package.json index 88b18c3a..17a8f087 100644 --- a/adapters/discord/package.json +++ b/adapters/discord/package.json @@ -1,8 +1,9 @@ { "name": "@satorijs/adapter-discord", "description": "Discord Adapter for Satorijs", - "version": "4.3.1", - "main": "lib/index.js", + "version": "4.4.0", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -32,6 +33,6 @@ "chat" ], "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" } } diff --git a/adapters/discord/src/bot.ts b/adapters/discord/src/bot.ts index 31bc23ca..2c6287a3 100644 --- a/adapters/discord/src/bot.ts +++ b/adapters/discord/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Fragment, h, Quester, Schema, Universal } from '@satorijs/satori' +import { Bot, Context, Fragment, h, HTTP, Schema, Universal } from '@satorijs/core' import * as Discord from './utils' import { DiscordMessageEncoder } from './message' import { Internal, Webhook } from './types' @@ -11,7 +11,7 @@ export class DiscordBot extends Bot = {} public webhookLock: Record> = {} @@ -85,10 +85,22 @@ export class DiscordBot extends Bot Discord.decodeMessage(this, data, {}, undefined, false))) - return { data, next: data[0]?.id } + const prev = data.at(direction === 'after' ? -1 : 0)?.id + const next = data.at(direction === 'before' ? 0 : -1)?.id + if (order === 'desc') data.reverse() + return { data, prev, next } } async getUser(userId: string) { @@ -200,7 +212,7 @@ export class DiscordBot extends Bot extends MessageE return message } catch (e) { - if (Quester.Error.is(e) && e.response) { + if (this.bot.http.isError(e) && e.response) { if (e.response.data?.code === 10015) { this.bot.logger.debug('webhook has been deleted, recreating..., %o', e.response.data) if (!this.bot.webhookLock[this.channelId]) this.bot.webhooks[this.channelId] = null diff --git a/adapters/discord/src/types/internal.ts b/adapters/discord/src/types/internal.ts index 45a1e1b6..761fbd0d 100644 --- a/adapters/discord/src/types/internal.ts +++ b/adapters/discord/src/types/internal.ts @@ -1,13 +1,13 @@ -import { Dict, makeArray, Quester } from '@satorijs/satori' +import { Dict, HTTP, makeArray } from '@satorijs/core' import { DiscordBot } from '../bot' export class Internal { constructor(private bot: DiscordBot) {} - static define(routes: Dict>>) { + static define(routes: Dict>>) { for (const path in routes) { for (const key in routes[path]) { - const method = key as Quester.Method + const method = key as HTTP.Method for (const name of makeArray(routes[path][method])) { Internal.prototype[name] = async function (this: Internal, ...args: any[]) { const raw = args.join(', ') @@ -15,7 +15,7 @@ export class Internal { if (!args.length) throw new Error(`too few arguments for ${path}, received ${raw}`) return args.shift() }) - const config: Quester.RequestConfig = {} + const config: HTTP.RequestConfig = {} if (args.length === 1) { if (method === 'GET' || method === 'DELETE') { config.params = args[0] @@ -32,7 +32,7 @@ export class Internal { this.bot.logger.debug(`${method} ${url}`, config) return (await this.bot.http(method, url, config)).data } catch (error) { - if (!Quester.Error.is(error) || !error.response) throw error + if (!this.bot.http.isError(error) || !error.response) throw error throw new Error(`[${error.response.status}] ${JSON.stringify(error.response.data)}`) } } diff --git a/adapters/discord/src/utils.ts b/adapters/discord/src/utils.ts index 80b647a3..3fef03c7 100644 --- a/adapters/discord/src/utils.ts +++ b/adapters/discord/src/utils.ts @@ -1,4 +1,4 @@ -import { Context, Dict, h, pick, Session, Universal, valueMap } from '@satorijs/satori' +import { Context, Dict, h, pick, Session, Universal, valueMap } from '@satorijs/core' import { DiscordBot } from './bot' import * as Discord from './types' diff --git a/adapters/discord/src/ws.ts b/adapters/discord/src/ws.ts index 91f7fd54..4c023143 100644 --- a/adapters/discord/src/ws.ts +++ b/adapters/discord/src/ws.ts @@ -1,4 +1,4 @@ -import { Adapter, Context, Schema } from '@satorijs/satori' +import { Adapter, Context, Schema } from '@satorijs/core' import { Gateway } from './types' import { adaptSession, decodeUser } from './utils' import { DiscordBot } from './bot' diff --git a/adapters/kook/.npmignore b/adapters/kook/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/kook/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/kook/package.json b/adapters/kook/package.json index bcfe0874..2aafb4f8 100644 --- a/adapters/kook/package.json +++ b/adapters/kook/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-kook", "description": "KOOK (开黑啦) Adapter for Satorijs", "version": "4.5.1", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -29,9 +30,9 @@ "chat" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0" + "@cordisjs/plugin-server": "^0.2.1" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" } } diff --git a/adapters/kook/src/bot.ts b/adapters/kook/src/bot.ts index 53541965..c9ea2174 100644 --- a/adapters/kook/src/bot.ts +++ b/adapters/kook/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Fragment, h, Quester, Schema, Universal } from '@satorijs/satori' +import { Bot, Context, Fragment, h, HTTP, Schema, Universal } from '@satorijs/core' import { adaptGroup, adaptMessage, adaptUser, decodeGuildMember, decodeRole, encodeRole } from './utils' import * as Kook from './types' import { WsClient } from './ws' @@ -9,7 +9,7 @@ export class KookBot(method: Quester.Method, path: string, data = {}, headers: any = {}): Promise { + async request(method: HTTP.Method, path: string, data = {}, headers: any = {}): Promise { if (method === 'GET') { return (await this.http.get(path, { params: data, headers })).data } else { @@ -170,7 +170,7 @@ export class KookBot extends Bot _token?: string _refresher?: NodeJS.Timeout - http: Quester - assetsQuester: Quester + http: HTTP + assetsQuester: HTTP internal: Internal constructor(ctx: C, config: LarkBot.Config) { @@ -133,7 +133,7 @@ export class LarkBot extends Bot } export namespace LarkBot { - export interface Config extends HttpServer.Options, Quester.Config { + export interface Config extends HttpServer.Options, HTTP.Config { appId: string appSecret: string encryptKey?: string @@ -153,14 +153,14 @@ export namespace LarkBot { Schema.object({ platform: Schema.const('feishu').required(), }), - Quester.createConfig('https://open.feishu.cn/open-apis/'), + HTTP.createConfig('https://open.feishu.cn/open-apis/'), HttpServer.createConfig('/feishu'), ]), Schema.intersect([ Schema.object({ platform: Schema.const('lark').required(), }), - Quester.createConfig('https://open.larksuite.com/open-apis/'), + HTTP.createConfig('https://open.larksuite.com/open-apis/'), HttpServer.createConfig('/lark'), ]), ]), diff --git a/adapters/lark/src/http.ts b/adapters/lark/src/http.ts index 49e289ca..1f13ef6d 100644 --- a/adapters/lark/src/http.ts +++ b/adapters/lark/src/http.ts @@ -1,6 +1,6 @@ import { Readable } from 'node:stream' import { ReadableStream } from 'node:stream/web' -import { Adapter, Context, Logger, Schema } from '@satorijs/satori' +import { Adapter, Context, Logger, Schema } from '@satorijs/core' import {} from '@cordisjs/plugin-server' import { FeishuBot } from './bot' diff --git a/adapters/lark/src/index.ts b/adapters/lark/src/index.ts index 63928380..eb73a941 100644 --- a/adapters/lark/src/index.ts +++ b/adapters/lark/src/index.ts @@ -1,11 +1,11 @@ -import { FeishuBot } from './bot' +import { LarkBot } from './bot' import * as Lark from './types' export * from './bot' export { Lark, Lark as Feishu } -export default FeishuBot +export default LarkBot declare module '@satorijs/core' { interface Session { diff --git a/adapters/lark/src/message.ts b/adapters/lark/src/message.ts index de915931..17562df9 100644 --- a/adapters/lark/src/message.ts +++ b/adapters/lark/src/message.ts @@ -1,4 +1,4 @@ -import { Context, h, MessageEncoder, Quester } from '@satorijs/satori' +import { Context, h, MessageEncoder } from '@satorijs/core' import { LarkBot } from './bot' import { BaseResponse, Lark, MessageContent, MessageType } from './types' import { extractIdType } from './utils' @@ -36,7 +36,7 @@ export class LarkMessageEncoder extends MessageEnco this.results.push(session.event.message) } catch (e) { // try to extract error message from Lark API - if (Quester.Error.is(e)) { + if (this.bot.http.isError(e)) { if (e.response?.data?.code) { const generalErrorMsg = `Check error code at https://open.larksuite.com/document/server-docs/getting-started/server-error-codes` e.message += ` (Lark error code ${e.response.data.code}: ${e.response.data.msg ?? generalErrorMsg})` diff --git a/adapters/lark/src/types/internal.ts b/adapters/lark/src/types/internal.ts index a15e4dad..64256bba 100644 --- a/adapters/lark/src/types/internal.ts +++ b/adapters/lark/src/types/internal.ts @@ -1,4 +1,4 @@ -import { Dict, makeArray, Quester } from '@satorijs/satori' +import { Dict, HTTP, makeArray } from '@satorijs/core' import { LarkBot } from '../bot' export interface Internal {} @@ -36,7 +36,7 @@ export class Internal { if (!args.length) throw new Error(`too few arguments for ${path}, received ${raw}`) return args.shift() }) - const config: Quester.RequestConfig = {} + const config: HTTP.RequestConfig = {} if (args.length === 1) { if (method === 'GET' || method === 'DELETE') { config.params = args[0] diff --git a/adapters/lark/src/utils.ts b/adapters/lark/src/utils.ts index 2c35ae05..5788983b 100644 --- a/adapters/lark/src/utils.ts +++ b/adapters/lark/src/utils.ts @@ -1,5 +1,5 @@ import crypto from 'crypto' -import { Context, h, Session, trimSlash, Universal } from '@satorijs/satori' +import { Context, h, Session, trimSlash, Universal } from '@satorijs/core' import { FeishuBot, LarkBot } from './bot' import { AllEvents, Events, GetImChatResponse, Lark, MessageContentType, MessageType } from './types' diff --git a/adapters/line/.npmignore b/adapters/line/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/line/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/line/package.json b/adapters/line/package.json index 07ce900d..ed2b8cd6 100644 --- a/adapters/line/package.json +++ b/adapters/line/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-line", "description": "Line Adapter for Satorijs", "version": "2.3.2", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -29,9 +30,9 @@ "chat" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0" + "@cordisjs/plugin-server": "^0.2.1" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" } } diff --git a/adapters/line/src/bot.ts b/adapters/line/src/bot.ts index 979b9dbe..69720f27 100644 --- a/adapters/line/src/bot.ts +++ b/adapters/line/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Quester, Schema } from '@satorijs/satori' +import { Bot, Context, HTTP, Schema } from '@satorijs/core' import { HttpServer } from './http' import { Internal } from './types' import { LineMessageEncoder } from './message' @@ -7,8 +7,8 @@ export class LineBot extends Bot static inject = ['server', 'http'] static MessageEncoder = LineMessageEncoder - public http: Quester - public contentHttp: Quester + public http: HTTP + public contentHttp: HTTP public internal: Internal constructor(ctx: C, config: LineBot.Config) { @@ -83,8 +83,8 @@ export namespace LineBot { export interface Config { token: string secret: string - api: Quester.Config - content: Quester.Config + api: HTTP.Config + content: HTTP.Config } export const Config: Schema = Schema.intersect([ @@ -93,10 +93,10 @@ export namespace LineBot { secret: Schema.string().required().description('机器人密钥。'), }), Schema.object({ - api: Quester.createConfig('https://api.line.me/'), + api: HTTP.createConfig('https://api.line.me/'), }), Schema.object({ - content: Quester.createConfig('https://api-data.line.me/'), + content: HTTP.createConfig('https://api-data.line.me/'), }), ]) } diff --git a/adapters/line/src/http.ts b/adapters/line/src/http.ts index 4701a53a..5b87ff9f 100644 --- a/adapters/line/src/http.ts +++ b/adapters/line/src/http.ts @@ -1,4 +1,4 @@ -import { Adapter, Context } from '@satorijs/satori' +import { Adapter, Context } from '@satorijs/core' import {} from '@cordisjs/plugin-server' import crypto from 'node:crypto' import { LineBot } from './bot' diff --git a/adapters/line/src/index.ts b/adapters/line/src/index.ts index bd254b84..c2afed4b 100644 --- a/adapters/line/src/index.ts +++ b/adapters/line/src/index.ts @@ -1,4 +1,4 @@ -import { hyphenate } from '@satorijs/satori' +import { hyphenate } from '@satorijs/core' import { LineBot } from './bot' import * as Line from './types' diff --git a/adapters/line/src/message.ts b/adapters/line/src/message.ts index 92b18f70..2fc56781 100644 --- a/adapters/line/src/message.ts +++ b/adapters/line/src/message.ts @@ -1,4 +1,4 @@ -import { Context, Dict, h, MessageEncoder } from '@satorijs/satori' +import { Context, Dict, h, MessageEncoder } from '@satorijs/core' import { LineBot } from './bot' import * as Line from './types' diff --git a/adapters/line/src/types/internal.ts b/adapters/line/src/types/internal.ts index c199c1cd..ff5e5290 100644 --- a/adapters/line/src/types/internal.ts +++ b/adapters/line/src/types/internal.ts @@ -1,12 +1,12 @@ -import { Dict, makeArray, Quester } from '@satorijs/satori' +import { Dict, HTTP, makeArray } from '@satorijs/core' export class Internal { - constructor(private http: Quester) { } + constructor(private http: HTTP) { } - static define(routes: Dict>>) { + static define(routes: Dict>>) { for (const path in routes) { for (const key in routes[path]) { - const method = key as Quester.Method + const method = key as HTTP.Method for (const name of makeArray(routes[path][method])) { Internal.prototype[name] = async function (this: Internal, ...args: any[]) { const raw = args.join(', ') @@ -14,7 +14,7 @@ export class Internal { if (!args.length) throw new Error(`too few arguments for ${path}, received ${raw}`) return args.shift() }) - const config: Quester.RequestConfig = {} + const config: HTTP.RequestConfig = {} if (args.length === 1) { if (method === 'GET' || method === 'DELETE') { config.params = args[0] @@ -30,7 +30,7 @@ export class Internal { try { return (await this.http(method, url, config)).data } catch (error) { - if (!Quester.Error.is(error) || !error.response) throw error + if (!this.http.isError(error) || !error.response) throw error throw new Error(`[${error.response.status}] ${JSON.stringify(error.response.data)}`) } } diff --git a/adapters/line/src/utils.ts b/adapters/line/src/utils.ts index 578cd3cd..e80da29a 100644 --- a/adapters/line/src/utils.ts +++ b/adapters/line/src/utils.ts @@ -1,4 +1,4 @@ -import { h, hyphenate, Session } from '@satorijs/satori' +import { h, hyphenate, Session } from '@satorijs/core' import { LineBot } from './bot' import { EventMessage, WebhookEvent } from './types' // import jose from 'jose' diff --git a/adapters/mail/.npmignore b/adapters/mail/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/mail/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/mail/package.json b/adapters/mail/package.json index 63f56765..130bd11b 100644 --- a/adapters/mail/package.json +++ b/adapters/mail/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-mail", "description": "Mail Adapter for Satorijs", "version": "2.2.1", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -31,7 +32,7 @@ "chat" ], "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" }, "dependencies": { "@types/mailparser": "^3.4.4", diff --git a/adapters/mail/src/bot.ts b/adapters/mail/src/bot.ts index 2c8d9919..2c71da9c 100644 --- a/adapters/mail/src/bot.ts +++ b/adapters/mail/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Schema } from '@satorijs/satori' +import { Bot, Context, Schema } from '@satorijs/core' import { IMAP, SMTP } from './mail' import { MailMessageEncoder } from './message' diff --git a/adapters/mail/src/index.ts b/adapters/mail/src/index.ts index a8bbb419..e73f3ce8 100644 --- a/adapters/mail/src/index.ts +++ b/adapters/mail/src/index.ts @@ -7,4 +7,9 @@ declare module '@satorijs/satori' { } } -export { MailBot } +export * from './bot' +export * from './mail' +export * from './message' +export * from './utils' + +export default MailBot diff --git a/adapters/mail/src/mail.ts b/adapters/mail/src/mail.ts index 50f67311..90a2f745 100644 --- a/adapters/mail/src/mail.ts +++ b/adapters/mail/src/mail.ts @@ -2,7 +2,7 @@ import NodeIMAP from 'node-imap' import { createTransport, Transporter } from 'nodemailer' import { simpleParser } from 'mailparser' import { MailBot } from './bot' -import { Adapter, Context, Universal } from '@satorijs/satori' +import { Adapter, Context, Universal } from '@satorijs/core' import { dispatchSession } from './utils' export class IMAP extends Adapter> { diff --git a/adapters/mail/src/message.ts b/adapters/mail/src/message.ts index 7a85b0fb..dc71628d 100644 --- a/adapters/mail/src/message.ts +++ b/adapters/mail/src/message.ts @@ -1,4 +1,4 @@ -import { Context, Element, MessageEncoder } from '@satorijs/satori' +import { Context, Element, MessageEncoder } from '@satorijs/core' import { MailBot } from './bot' import { Attachment } from './mail' diff --git a/adapters/mail/src/utils.ts b/adapters/mail/src/utils.ts index 86d69b02..9dd73eb0 100644 --- a/adapters/mail/src/utils.ts +++ b/adapters/mail/src/utils.ts @@ -1,4 +1,4 @@ -import { defineProperty, segment, Universal } from '@satorijs/satori' +import { defineProperty, segment, Universal } from '@satorijs/core' import { ParsedMail } from 'mailparser' import { INode, parse, SyntaxKind } from 'html5parser' import { MailBot } from './bot' diff --git a/adapters/matrix/.npmignore b/adapters/matrix/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/matrix/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/matrix/package.json b/adapters/matrix/package.json index e934475f..629c5b42 100644 --- a/adapters/matrix/package.json +++ b/adapters/matrix/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-matrix", "description": "Matrix Adapter for Satorijs", "version": "4.2.1", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -27,10 +28,10 @@ "chat" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0" + "@cordisjs/plugin-server": "^0.2.1" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" }, "dependencies": { "html5parser": "^2.0.2", diff --git a/adapters/matrix/src/bot.ts b/adapters/matrix/src/bot.ts index e27d8c1f..02d06082 100644 --- a/adapters/matrix/src/bot.ts +++ b/adapters/matrix/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, omit, Quester, Schema, Universal } from '@satorijs/satori' +import { Bot, Context, HTTP, omit, Schema, Universal } from '@satorijs/core' import { HttpAdapter } from './http' import { MatrixMessageEncoder } from './message' import * as Matrix from './types' @@ -8,7 +8,7 @@ export class MatrixBot extends Bot extends Bot extends MessageEncoder> { diff --git a/adapters/matrix/src/types.ts b/adapters/matrix/src/types.ts index 6abdf2ce..667f66fd 100644 --- a/adapters/matrix/src/types.ts +++ b/adapters/matrix/src/types.ts @@ -1,5 +1,5 @@ import imageSize from 'image-size' -import { Dict } from '@satorijs/satori' +import { Dict } from '@satorijs/core' import { MatrixBot } from './bot' export interface Transaction { diff --git a/adapters/matrix/src/utils.ts b/adapters/matrix/src/utils.ts index 76250222..38d853df 100644 --- a/adapters/matrix/src/utils.ts +++ b/adapters/matrix/src/utils.ts @@ -1,4 +1,4 @@ -import { segment, Session, Universal } from '@satorijs/satori' +import { segment, Session, Universal } from '@satorijs/core' import { MatrixBot } from './bot' import * as Matrix from './types' import { INode, ITag, parse, SyntaxKind } from 'html5parser' diff --git a/adapters/qq/.npmignore b/adapters/qq/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/qq/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/qq/package.json b/adapters/qq/package.json index 2720db13..9ac28258 100644 --- a/adapters/qq/package.json +++ b/adapters/qq/package.json @@ -1,8 +1,9 @@ { "name": "@satorijs/adapter-qq", "description": "QQ Adapter for Satorijs", - "version": "4.6.2", - "main": "lib/index.js", + "version": "4.6.3", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -30,6 +31,6 @@ "chat" ], "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" } } diff --git a/adapters/qq/src/bot/guild.ts b/adapters/qq/src/bot/guild.ts index 053a47a7..46bc29f3 100644 --- a/adapters/qq/src/bot/guild.ts +++ b/adapters/qq/src/bot/guild.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Quester, Universal } from '@satorijs/satori' +import { Bot, Context, HTTP, Universal } from '@satorijs/core' import { QQBot } from '.' import { decodeChannel, decodeGuild, decodeGuildMember, decodeMessage, decodeUser } from '../utils' import { GuildInternal } from '../internal' @@ -14,7 +14,7 @@ export class QQGuildBot extends Bot { declare parent: QQBot hidden = true public internal: GuildInternal - public http: Quester + public http: HTTP static MessageEncoder = QQGuildMessageEncoder constructor(ctx: C, config: QQGuildBot.Config) { diff --git a/adapters/qq/src/bot/index.ts b/adapters/qq/src/bot/index.ts index c0342a83..a92d9b76 100644 --- a/adapters/qq/src/bot/index.ts +++ b/adapters/qq/src/bot/index.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Quester, Schema, Universal } from '@satorijs/satori' +import { Bot, Context, HTTP, Schema, Universal } from '@satorijs/core' import { WsClient } from '../ws' import * as QQ from '../types' import { QQGuildBot } from './guild' @@ -17,8 +17,8 @@ export class QQBot extends Bot { public guildBot: QQGuildBot internal: GroupInternal - groupHttp: Quester - guildHttp: Quester + http: HTTP + guildHttp: HTTP private _token: string private _timer: NodeJS.Timeout @@ -39,7 +39,7 @@ export class QQBot extends Bot { this.ctx.plugin(QQGuildBot, { parent: this, }) - this.internal = new GroupInternal(this, () => this.groupHttp) + this.internal = new GroupInternal(this, () => this.http) this.ctx.plugin(WsClient, this) } @@ -78,7 +78,7 @@ export class QQBot extends Bot { endpoint = endpoint.replace(/^(https?:\/\/)/, '$1sandbox.') } this._token = result.data.access_token - this.groupHttp = this.ctx.http.extend({ + this.http = this.ctx.http.extend({ endpoint, headers: { 'Authorization': `QQBot ${this._token}`, @@ -91,7 +91,7 @@ export class QQBot extends Bot { this._ensureAccessToken() }, (result.data.expires_in - 40) * 1000) } catch (e) { - if (!Quester.Error.is(e) || !e.response) throw e + if (!this.ctx.http.isError(e) || !e.response) throw e this.logger.warn(`POST https://bots.qq.com/app/getAppAccessToken response: %o, trace id: %s`, e.response.data, e.response.headers.get('x-tps-trace-id')) throw e } diff --git a/adapters/qq/src/internal/internal.ts b/adapters/qq/src/internal/internal.ts index 1734d31f..365b3073 100644 --- a/adapters/qq/src/internal/internal.ts +++ b/adapters/qq/src/internal/internal.ts @@ -1,12 +1,12 @@ -import { Bot, Dict, makeArray, Quester } from '@satorijs/satori' +import { Bot, Dict, HTTP, makeArray } from '@satorijs/core' export class Internal { - constructor(private bot: Bot, private http: () => Quester) { } + constructor(private bot: Bot, private http: () => HTTP) { } - static define(isGuild: boolean, routes: Dict>>) { + static define(isGuild: boolean, routes: Dict>>) { for (const path in routes) { for (const key in routes[path]) { - const method = key as Quester.Method + const method = key as HTTP.Method for (const name of makeArray(routes[path][method])) { (isGuild ? GuildInternal : GroupInternal).prototype[name] = async function (this: Internal, ...args: any[]) { const raw = args.join(', ') @@ -14,7 +14,7 @@ export class Internal { if (!args.length) throw new Error(`too few arguments for ${path}, received ${raw}`) return args.shift() }) - const config: Quester.RequestConfig = {} + const config: HTTP.RequestConfig = {} if (args.length === 1) { if (method === 'GET' || method === 'DELETE') { config.params = args[0] @@ -27,14 +27,15 @@ export class Internal { } else if (args.length > 1) { throw new Error(`too many arguments for ${path}, received ${raw}`) } + const http = this.http() try { this.bot.logger.debug(`${method} ${url} request: %o`, config) - const response = await this.http()(url, { ...config, method }) + const response = await http(url, { ...config, method }) this.bot.logger.debug(`${method} ${url} response: %o, trace id: %s`, response.data, response.headers.get('x-tps-trace-id')) return response.data } catch (error) { this.bot.logger.warn(`${method} ${url} request: %o`, config) - if (!Quester.Error.is(error) || !error.response) throw error + if (!http.isError(error) || !error.response) throw error this.bot.logger.warn(`${method} ${url} response: %o, trace id: %s`, error.response.data, error.response.headers.get('x-tps-trace-id')) throw error } diff --git a/adapters/qq/src/message.ts b/adapters/qq/src/message.ts index c2dbd878..8a73d7aa 100644 --- a/adapters/qq/src/message.ts +++ b/adapters/qq/src/message.ts @@ -1,5 +1,5 @@ import * as QQ from './types' -import { Context, Dict, h, MessageEncoder, Quester } from '@satorijs/satori' +import { Context, Dict, h, MessageEncoder } from '@satorijs/core' import { QQBot } from './bot' import { QQGuildBot } from './bot/guild' @@ -71,7 +71,7 @@ export class QQGuildMessageEncoder extends MessageE else r = await this.bot.internal.sendMessage(this.channelId, payload) } } catch (e) { - if (Quester.Error.is(e)) { + if (this.bot.http.isError(e)) { if (this.bot.parent.config.retryWhen.includes(e.response.data.code) && !this.retry && this.fileUrl) { this.bot.logger.warn('retry image sending') this.retry = true @@ -264,7 +264,7 @@ export class QQMessageEncoder extends MessageEncode } } } catch (e) { - if (!Quester.Error.is(e)) throw e + if (!this.bot.http.isError(e)) throw e this.errors.push(e) if (!this.retry && this.bot.config.retryWhen.includes(e.response.data.code)) { this.bot.logger.warn('%s retry message sending', this.session.cid) @@ -326,7 +326,7 @@ export class QQMessageEncoder extends MessageEncode res = await this.bot.internal.sendFileGuild(this.session.guildId, data) } } catch (e) { - if (!Quester.Error.is(e)) throw e + if (!this.bot.http.isError(e)) throw e this.errors.push(e) if (!this.retry && this.bot.config.retryWhen.includes(e.response.data.code)) { this.bot.logger.warn('%s retry message sending', this.session.cid) diff --git a/adapters/qq/src/utils.ts b/adapters/qq/src/utils.ts index d4cf46ea..d431e953 100644 --- a/adapters/qq/src/utils.ts +++ b/adapters/qq/src/utils.ts @@ -1,4 +1,4 @@ -import { Bot, Context, h, Session, Universal } from '@satorijs/satori' +import { Bot, Context, h, Session, Universal } from '@satorijs/core' import * as QQ from './types' import { QQBot } from './bot' diff --git a/adapters/qq/src/ws.ts b/adapters/qq/src/ws.ts index e17636f2..7f8f91c9 100644 --- a/adapters/qq/src/ws.ts +++ b/adapters/qq/src/ws.ts @@ -1,4 +1,4 @@ -import { Adapter, Context, Schema } from '@satorijs/satori' +import { Adapter, Context, Schema } from '@satorijs/core' import { QQBot } from './bot' import { Opcode, Payload } from './types' import { adaptSession, decodeUser } from './utils' @@ -13,7 +13,7 @@ export class WsClient extends Adapter.WsClient string) { if (!source || typeof source !== 'object') return source @@ -26,7 +26,7 @@ function createInternal(bot: SatoriBot, prefix = '') { } export class SatoriBot extends Bot { - public http: Quester + public http: HTTP public internal = createInternal(this) constructor(ctx: C, config: Universal.Login) { diff --git a/adapters/satori/src/ws.ts b/adapters/satori/src/ws.ts index d9013e91..8fa8f473 100644 --- a/adapters/satori/src/ws.ts +++ b/adapters/satori/src/ws.ts @@ -1,4 +1,4 @@ -import { Adapter, camelize, Context, Logger, Quester, Schema, Time, Universal } from '@satorijs/satori' +import { Adapter, camelize, Context, HTTP, Logger, Schema, Time, Universal } from '@satorijs/core' import { SatoriBot, transformKey } from './bot' export class SatoriAdapter extends Adapter.WsClientBase> { @@ -6,7 +6,7 @@ export class SatoriAdapter extends Adapter.WsClient static reusable = true static inject = ['http'] - public http: Quester + public http: HTTP public logger: Logger private _status = Universal.Status.OFFLINE diff --git a/adapters/slack/.npmignore b/adapters/slack/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/slack/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/slack/package.json b/adapters/slack/package.json index 84c02b0e..79e79871 100644 --- a/adapters/slack/package.json +++ b/adapters/slack/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-slack", "description": "Slack Adapter for Satorijs", "version": "2.3.0", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -29,10 +30,10 @@ "chat" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0" + "@cordisjs/plugin-server": "^0.2.1" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" }, "dependencies": { "@slack/types": "^2.11.0" diff --git a/adapters/slack/src/bot.ts b/adapters/slack/src/bot.ts index 70569a38..eacee3ee 100644 --- a/adapters/slack/src/bot.ts +++ b/adapters/slack/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Quester, Schema, Universal } from '@satorijs/satori' +import { Bot, Context, HTTP, Schema, Universal } from '@satorijs/core' import { WsClient } from './ws' import { HttpServer } from './http' import { adaptMessage, decodeChannel, decodeGuild, decodeGuildMember, decodeUser } from './utils' @@ -10,7 +10,7 @@ export class SlackBot(method: Quester.Method, path: string, data = {}, headers: any = {}, zap: boolean = false): Promise { + async request(method: HTTP.Method, path: string, data = {}, headers: any = {}, zap: boolean = false): Promise { headers['Authorization'] = `Bearer ${zap ? this.config.token : this.config.botToken}` if (method === 'GET') { return await this.http.get(path, { params: data, headers }) @@ -180,7 +180,7 @@ export class SlackBot>>>) { + static define(routes: Dict>>>) { for (const path in routes) { for (const key in routes[path]) { - const method = key as Quester.Method + const method = key as HTTP.Method for (const name of Object.keys(routes[path][method])) { Internal.prototype[name] = async function (this: Internal, ...args: any[]) { - const config: Quester.RequestConfig = { + const config: HTTP.RequestConfig = { headers: {}, } let token = '' @@ -46,7 +46,7 @@ export class Internal { try { return (await this.http(method, path, config)).data } catch (error) { - if (!Quester.Error.is(error) || !error.response) throw error + if (!this.http.isError(error) || !error.response) throw error throw new Error(`[${error.response.status}] ${JSON.stringify(error.response.data)}`) } } diff --git a/adapters/slack/src/utils.ts b/adapters/slack/src/utils.ts index 53464f21..3aee2e08 100644 --- a/adapters/slack/src/utils.ts +++ b/adapters/slack/src/utils.ts @@ -1,4 +1,4 @@ -import { Context, Element, h, Session, Universal } from '@satorijs/satori' +import { Context, Element, h, Session, Universal } from '@satorijs/core' import { SlackBot } from './bot' // eslint-disable-next-line max-len import { EnvelopedEvent, GenericMessageEvent, MessageChangedEvent, MessageDeletedEvent, ReactionAddedEvent, ReactionRemovedEvent, RichText, RichTextBlock, SlackEvent, SlackUser } from './types/events' diff --git a/adapters/slack/src/ws.ts b/adapters/slack/src/ws.ts index aee8cd71..89bc57e5 100644 --- a/adapters/slack/src/ws.ts +++ b/adapters/slack/src/ws.ts @@ -1,4 +1,4 @@ -import { Adapter, Context, Schema } from '@satorijs/satori' +import { Adapter, Context, Schema } from '@satorijs/core' import { SlackBot } from './bot' import { adaptSession } from './utils' import { SocketEvent } from './types/events' diff --git a/adapters/telegram/.npmignore b/adapters/telegram/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/telegram/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/telegram/package.json b/adapters/telegram/package.json index a8eae528..392dfa16 100644 --- a/adapters/telegram/package.json +++ b/adapters/telegram/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-telegram", "description": "Telegram Adapter for Satorijs", "version": "4.4.1", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -33,10 +34,10 @@ "chat" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0" + "@cordisjs/plugin-server": "^0.2.1" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" }, "dependencies": { "file-type": "^16.5.4" diff --git a/adapters/telegram/src/bot.ts b/adapters/telegram/src/bot.ts index 0055d0a8..ebd84672 100644 --- a/adapters/telegram/src/bot.ts +++ b/adapters/telegram/src/bot.ts @@ -1,4 +1,4 @@ -import { arrayBufferToBase64, Bot, Context, Dict, h, Quester, Schema, Time, Universal } from '@satorijs/satori' +import { arrayBufferToBase64, Bot, Context, Dict, h, HTTP, Schema, Time, Universal } from '@satorijs/core' import * as Telegram from './types' import { decodeGuildMember, decodeUser } from './utils' import { TelegramMessageEncoder } from './message' @@ -28,8 +28,8 @@ export class TelegramBot extends Adapter extends Bot extends Bot void } } + +export * from './bot' +export * from './utils' +export * from './types' +export * from './http' +export * from './message' + +export default WechatOfficialBot diff --git a/adapters/wechat-official/src/message.ts b/adapters/wechat-official/src/message.ts index 81bc5d74..ebf00d70 100644 --- a/adapters/wechat-official/src/message.ts +++ b/adapters/wechat-official/src/message.ts @@ -1,4 +1,4 @@ -import { Context, h, MessageEncoder } from '@satorijs/satori' +import { Context, h, MessageEncoder } from '@satorijs/core' import { WechatOfficialBot } from './bot' import xml2js from 'xml2js' import { SendMessage } from './types' diff --git a/adapters/wechat-official/src/utils.ts b/adapters/wechat-official/src/utils.ts index fbe3a6ab..e00b837e 100644 --- a/adapters/wechat-official/src/utils.ts +++ b/adapters/wechat-official/src/utils.ts @@ -1,6 +1,6 @@ import { Message } from './types' import { WechatOfficialBot } from './bot' -import { Context, h } from '@satorijs/satori' +import { Context, h } from '@satorijs/core' export async function decodeMessage(bot: WechatOfficialBot, message: Message) { const session = bot.session() diff --git a/adapters/wecom/.npmignore b/adapters/wecom/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/wecom/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/wecom/package.json b/adapters/wecom/package.json index 87835c2c..080ead6e 100644 --- a/adapters/wecom/package.json +++ b/adapters/wecom/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-wecom", "description": "Wecom Adapter for Satorijs", "version": "2.3.0", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -29,11 +30,11 @@ "chat" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0", + "@cordisjs/plugin-server": "^0.2.1", "@types/xml2js": "^0.4.14" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" }, "dependencies": { "@wecom/crypto": "^1.0.1", diff --git a/adapters/wecom/src/bot.ts b/adapters/wecom/src/bot.ts index 84c18270..7ee9796c 100644 --- a/adapters/wecom/src/bot.ts +++ b/adapters/wecom/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Quester, Schema, Universal } from '@satorijs/satori' +import { Bot, Context, HTTP, Schema, Universal } from '@satorijs/core' import { HttpServer } from './http' import { WecomMessageEncoder } from './message' @@ -6,7 +6,7 @@ export class WecomBot extends Bot extends Bot(bot: WecomBot, message: Message) { const session = bot.session() diff --git a/adapters/whatsapp/.npmignore b/adapters/whatsapp/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/whatsapp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/whatsapp/package.json b/adapters/whatsapp/package.json index ee0f7f39..ae7d6cfe 100644 --- a/adapters/whatsapp/package.json +++ b/adapters/whatsapp/package.json @@ -2,7 +2,8 @@ "name": "@satorijs/adapter-whatsapp", "description": "WhatsApp Adapter for Satorijs", "version": "2.4.0", - "main": "lib/index.js", + "type": "module", + "main": "lib/index.cjs", "typings": "lib/index.d.ts", "files": [ "lib", @@ -27,9 +28,9 @@ "satori" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0" + "@cordisjs/plugin-server": "^0.2.1" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" } } diff --git a/adapters/whatsapp/src/adapter.ts b/adapters/whatsapp/src/adapter.ts index 15cf449a..0763ee1f 100644 --- a/adapters/whatsapp/src/adapter.ts +++ b/adapters/whatsapp/src/adapter.ts @@ -1,4 +1,4 @@ -import { Adapter, Context, Logger, Quester, remove, Schema } from '@satorijs/satori' +import { Adapter, Context, HTTP, Logger, remove, Schema } from '@satorijs/core' import {} from '@cordisjs/plugin-server' import { Internal } from './internal' import { WhatsAppBot } from './bot' @@ -130,7 +130,7 @@ export class WhatsAppAdapter extends Adapter extends Bot { static MessageEncoder = WhatsAppMessageEncoder public internal: Internal - public http: Quester + public http: HTTP public platform = 'whatsapp' async createReaction(channelId: string, messageId: string, emoji: string): Promise { diff --git a/adapters/whatsapp/src/index.ts b/adapters/whatsapp/src/index.ts index 52af105e..4f962087 100644 --- a/adapters/whatsapp/src/index.ts +++ b/adapters/whatsapp/src/index.ts @@ -11,10 +11,10 @@ declare module '@satorijs/core' { } } -export default WhatsAppAdapter - export * from './adapter' export * from './bot' export * from './types' export * from './utils' export * from './message' + +export default WhatsAppAdapter diff --git a/adapters/whatsapp/src/internal.ts b/adapters/whatsapp/src/internal.ts index 62a5fd09..07d193e2 100644 --- a/adapters/whatsapp/src/internal.ts +++ b/adapters/whatsapp/src/internal.ts @@ -1,4 +1,4 @@ -import { Quester } from '@satorijs/satori' +import { HTTP } from '@satorijs/core' import { SendMessage } from './types' interface PhoneNumber { @@ -10,7 +10,7 @@ interface PhoneNumber { } export class Internal { - constructor(public http: Quester) { } + constructor(public http: HTTP) { } async getPhoneNumbers(id: string) { // https://developers.facebook.com/docs/whatsapp/business-management-api/manage-phone-numbers#all-phone-numbers diff --git a/adapters/whatsapp/src/message.ts b/adapters/whatsapp/src/message.ts index 47a25230..a7dd0f14 100644 --- a/adapters/whatsapp/src/message.ts +++ b/adapters/whatsapp/src/message.ts @@ -1,4 +1,4 @@ -import { Context, Dict, h, MessageEncoder } from '@satorijs/satori' +import { Context, Dict, h, MessageEncoder } from '@satorijs/core' import { WhatsAppBot } from './bot' import { Button, SendMessage } from './types' diff --git a/adapters/whatsapp/src/utils.ts b/adapters/whatsapp/src/utils.ts index c6c3e506..7b81c2c7 100644 --- a/adapters/whatsapp/src/utils.ts +++ b/adapters/whatsapp/src/utils.ts @@ -1,4 +1,4 @@ -import { h, Session, Universal } from '@satorijs/satori' +import { h, Session, Universal } from '@satorijs/core' import { WhatsAppBot } from './bot' import { Entry } from './types' diff --git a/adapters/zulip/.npmignore b/adapters/zulip/.npmignore deleted file mode 100644 index 7e5fcbc1..00000000 --- a/adapters/zulip/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -tsconfig.tsbuildinfo diff --git a/adapters/zulip/package.json b/adapters/zulip/package.json index fbbeedc8..47a388c4 100644 --- a/adapters/zulip/package.json +++ b/adapters/zulip/package.json @@ -2,8 +2,9 @@ "name": "@satorijs/adapter-zulip", "description": "Zulip Adapter for Satorijs", "version": "1.2.0", - "main": "lib/index.js", - "typings": "lib/index.d.ts", + "type": "module", + "main": "lib/index.cjs", + "types": "lib/index.d.ts", "files": [ "lib", "src" @@ -29,7 +30,7 @@ "chat" ], "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" }, "dependencies": { "marked": "^9.1.6" diff --git a/adapters/zulip/src/bot.ts b/adapters/zulip/src/bot.ts index 9974fcda..fd112231 100644 --- a/adapters/zulip/src/bot.ts +++ b/adapters/zulip/src/bot.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Quester, Schema, Universal } from '@satorijs/satori' +import { Bot, Context, HTTP, Schema, Universal } from '@satorijs/core' import { HttpPolling } from './polling' import { Internal } from './types' import { ZulipMessageEncoder } from './message' @@ -10,7 +10,7 @@ export class ZulipBot extends Bot extends Bot extends Adapter>>) { + static define(routes: Dict>>) { for (const path in routes) { for (const key in routes[path]) { - const method = key as Quester.Method + const method = key as HTTP.Method for (const name of makeArray(routes[path][method])) { Internal.prototype[name] = async function (this: Internal, ...args: any[]) { const raw = args.join(', ') @@ -14,7 +14,7 @@ export class Internal { if (!args.length) throw new Error(`too few arguments for ${path}, received ${raw}`) return args.shift() }) - const config: Quester.RequestConfig = {} + const config: HTTP.RequestConfig = {} if (args.length === 1) { if (method === 'GET' || method === 'DELETE') { config.params = args[0] @@ -30,7 +30,7 @@ export class Internal { try { return (await this.http(method, url, config)).data } catch (error) { - if (!Quester.Error.is(error) || !error.response) throw error + if (!this.http.isError(error) || !error.response) throw error throw new Error(`[${error.response.status}] ${JSON.stringify(error.response.data)}`) } } diff --git a/adapters/zulip/src/utils.ts b/adapters/zulip/src/utils.ts index 8cb27dc8..e35ffb3c 100644 --- a/adapters/zulip/src/utils.ts +++ b/adapters/zulip/src/utils.ts @@ -1,4 +1,4 @@ -import { Dict, h, Session, Universal } from '@satorijs/satori' +import { Dict, h, Session, Universal } from '@satorijs/core' import { ZulipBot } from './bot' import * as marked from 'marked' import * as Zulip from './types' diff --git a/package.json b/package.json index 6475a3b7..cbc1964a 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "eslint": "^8.57.0", "shx": "^0.3.4", "typescript": "^5.4.3", - "yakumo": "^1.0.0-beta.13", + "yakumo": "^1.0.0-beta.14", "yakumo-esbuild": "^1.0.0-beta.5", "yakumo-tsc": "^1.0.0-beta.3" } diff --git a/packages/core/package.json b/packages/core/package.json index 8fa518cd..b9cba7de 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -40,11 +40,24 @@ "compile:esm": "esbuild src/index.ts --outfile=lib/index.mjs --bundle --sourcemap --sources-content=false --platform=neutral --external:cosmokit --external:cordis --target=es2022", "build": "yarn compile:cjs && yarn compile:esm && yarn dtsc" }, + "cordis": { + "ecosystem": { + "inject": [ + "satori" + ], + "pattern": [ + "@satorijs/adapter-*", + "@satorijs/plugin-*", + "satori-adapter-*", + "satori-plugin-*" + ] + } + }, "devDependencies": { "@types/ws": "^8.5.10" }, "dependencies": { - "@cordisjs/plugin-http": "^0.4.0", + "@cordisjs/plugin-http": "^0.4.1", "@satorijs/element": "^3.1.7", "@satorijs/protocol": "^1.3.1", "cordis": "^3.14.0", diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 54bc5cb7..e4f4dc44 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -16,6 +16,7 @@ export type { Fragment, Render } from '@satorijs/element' export { h, h as Element, h as segment, HTTP, HTTP as Quester } export * from 'cordis' +export * from 'cosmokit' export * as Universal from '@satorijs/protocol' @@ -118,7 +119,7 @@ export class Context extends cordis.Context { } } -export class Satori extends cordis.Service { +export default class Satori extends cordis.Service { static [cordis.Service.provide] = 'satori' static [cordis.Service.immediate] = true diff --git a/packages/core/src/session.ts b/packages/core/src/session.ts index 009887ad..d06143e1 100644 --- a/packages/core/src/session.ts +++ b/packages/core/src/session.ts @@ -105,7 +105,8 @@ export class Session { } set content(value: string | undefined) { - (this.event.message ??= {}).elements = isNullable(value) ? value : h.parse(value) + this.event.message ??= {} + this.event.message.elements = isNullable(value) ? value : h.parse(value) } setInternal(type: string, data: any) { diff --git a/packages/database/package.json b/packages/database/package.json index a097e4ed..cb1e2fcd 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -42,7 +42,10 @@ "minato": "^3.2.0" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0", + "@satorijs/core": "^3.7.0", "minato": "^3.2.0" + }, + "dependencies": { + "cosmokit": "^1.6.2" } } diff --git a/packages/database/src/channel.ts b/packages/database/src/channel.ts index 71f0e8c1..5af15322 100644 --- a/packages/database/src/channel.ts +++ b/packages/database/src/channel.ts @@ -1,4 +1,4 @@ -import { Bot, Context, Logger, Session, Universal } from '@satorijs/satori' +import { Bot, Context, Logger, Session, Universal } from '@satorijs/core' import { Message } from './types' import { Span } from './span' diff --git a/packages/database/src/guild.ts b/packages/database/src/guild.ts index 30c748de..f9e028a9 100644 --- a/packages/database/src/guild.ts +++ b/packages/database/src/guild.ts @@ -1,4 +1,4 @@ -import { Bot, Universal } from '@satorijs/satori' +import { Bot, Universal } from '@satorijs/core' export class SyncGuild { public members?: Universal.List diff --git a/packages/database/src/span.ts b/packages/database/src/span.ts index a2d75d82..f6b29ee5 100644 --- a/packages/database/src/span.ts +++ b/packages/database/src/span.ts @@ -1,4 +1,4 @@ -import { clone, remove, Universal } from '@satorijs/satori' +import { clone, remove, Universal } from '@satorijs/core' import { $, Update } from 'minato' import { Message } from './types' import { SyncChannel } from './channel' diff --git a/packages/database/src/types.ts b/packages/database/src/types.ts index 0b99cc16..94b7879c 100644 --- a/packages/database/src/types.ts +++ b/packages/database/src/types.ts @@ -1,4 +1,4 @@ -import { Universal } from '@satorijs/satori' +import { Universal } from '@satorijs/core' import { Span } from './span' declare module 'minato' { @@ -17,6 +17,7 @@ declare module '@satorijs/protocol' { } export interface Message extends Universal.Message { + id: string uid: number sid: bigint platform: string diff --git a/packages/protocol/src/index.ts b/packages/protocol/src/index.ts index f9e18cfb..a835829b 100644 --- a/packages/protocol/src/index.ts +++ b/packages/protocol/src/index.ts @@ -221,7 +221,7 @@ export const enum Status { } export interface Message { - id: string + id?: string /** @deprecated */ messageId?: string channel?: Channel diff --git a/packages/satori/package.json b/packages/satori/package.json index 7e8de114..5557cf44 100644 --- a/packages/satori/package.json +++ b/packages/satori/package.json @@ -34,8 +34,13 @@ "satori", "element", "message", - "utilities" + "utilities", + "cordis", + "plugin" ], + "peerDependencies": { + "cordis": "^3.14.0" + }, "dependencies": { "@satorijs/core": "3.7.0", "cosmokit": "^1.6.2" diff --git a/packages/satori/src/index.ts b/packages/satori/src/index.ts index f0fe1faf..e282738c 100644 --- a/packages/satori/src/index.ts +++ b/packages/satori/src/index.ts @@ -1,2 +1 @@ export * from '@satorijs/core' -export * from 'cosmokit' diff --git a/packages/server-proxy/package.json b/packages/server-proxy/package.json index a5ec8a71..4354d427 100644 --- a/packages/server-proxy/package.json +++ b/packages/server-proxy/package.json @@ -28,9 +28,9 @@ "service" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0" + "@cordisjs/plugin-server": "^0.2.1" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" } } diff --git a/packages/server-proxy/src/index.ts b/packages/server-proxy/src/index.ts index 0509065a..8121441c 100644 --- a/packages/server-proxy/src/index.ts +++ b/packages/server-proxy/src/index.ts @@ -1,4 +1,4 @@ -import { Context, Quester, sanitize, Schema } from '@satorijs/satori' +import { Context, sanitize, Schema } from '@satorijs/core' import {} from '@cordisjs/plugin-server' import internal from 'stream' @@ -24,7 +24,7 @@ class ProxyServer { try { koa.body = await ctx.http.get(koa.params.url, { responseType: 'stream' }) } catch (error) { - if (!Quester.Error.is(error) || !error.response) throw error + if (!ctx.http.isError(error) || !error.response) throw error koa.status = error.response.status koa.body = error.response.data } diff --git a/packages/server-satori/package.json b/packages/server-satori/package.json index ae36e43b..7ae8e7e1 100644 --- a/packages/server-satori/package.json +++ b/packages/server-satori/package.json @@ -37,9 +37,9 @@ "api" ], "devDependencies": { - "@cordisjs/plugin-server": "^0.2.0" + "@cordisjs/plugin-server": "^0.2.1" }, "peerDependencies": { - "@satorijs/satori": "^3.7.0" + "@satorijs/core": "^3.7.0" } } diff --git a/packages/server-satori/src/index.ts b/packages/server-satori/src/index.ts index beaf11a4..8a9273c2 100644 --- a/packages/server-satori/src/index.ts +++ b/packages/server-satori/src/index.ts @@ -1,4 +1,4 @@ -import { camelCase, Context, sanitize, Schema, Session, snakeCase, Time, Universal } from '@satorijs/satori' +import { camelCase, Context, sanitize, Schema, Session, snakeCase, Time, Universal } from '@satorijs/core' import {} from '@cordisjs/plugin-server' import WebSocket from 'ws' diff --git a/tsconfig.json b/tsconfig.json index ae7f3f26..18133b6c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,9 +3,8 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "cordis-*": ["packages/*/src"], - "@satorijs/*": ["packages/*/src"], "@satorijs/adapter-*": ["adapters/*/src"], + "@satorijs/*": ["packages/*/src"], }, }, "files": [],