

























@@ -1,6 +1,7 @@
11import { Mock, vi } from "vitest";
2233type SlackHandler = (args: unknown) => Promise<void>;
4+type SlackMiddleware = (args: { next: () => Promise<void> } & Record<string, unknown>) => unknown;
45type SlackProviderMonitor = (params: {
56botToken: string;
67appToken: string;
@@ -255,12 +256,33 @@ vi.mock("@slack/bolt", () => {
255256class App {
256257client = slackClient;
257258receiver: unknown;
259+middlewares: SlackMiddleware[] = [];
258260259261constructor(args?: { receiver?: unknown }) {
260262this.receiver = args?.receiver;
261263}
264+use(middleware: SlackMiddleware) {
265+this.middlewares.push(middleware);
266+}
262267event(name: string, handler: SlackHandler) {
263-handlers.set(name, handler);
268+handlers.set(name, async (args: unknown) => {
269+const eventArgs =
270+args && typeof args === "object" && !Array.isArray(args)
271+ ? (args as Record<string, unknown>)
272+ : {};
273+const run = async (index: number): Promise<void> => {
274+const middleware = this.middlewares[index];
275+if (!middleware) {
276+await handler(args);
277+return;
278+}
279+await middleware({
280+ ...eventArgs,
281+next: () => run(index + 1),
282+});
283+};
284+await run(0);
285+});
264286}
265287command() {
266288/* no-op */
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。