mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 09:20:24 +00:00
refactor(cli): share outbound send dependency mapping
This commit is contained in:
@@ -5,6 +5,7 @@ import type { OutboundSendDeps } from "../infra/outbound/deliver.js";
|
||||
import type { sendMessageSignal } from "../signal/send.js";
|
||||
import type { sendMessageSlack } from "../slack/send.js";
|
||||
import type { sendMessageTelegram } from "../telegram/send.js";
|
||||
import { createOutboundSendDepsFromCliSource } from "./outbound-send-mapping.js";
|
||||
|
||||
export type CliDeps = {
|
||||
sendMessageWhatsApp: typeof sendMessageWhatsApp;
|
||||
@@ -44,16 +45,8 @@ export function createDefaultDeps(): CliDeps {
|
||||
};
|
||||
}
|
||||
|
||||
// Provider docking: extend this mapping when adding new outbound send deps.
|
||||
export function createOutboundSendDeps(deps: CliDeps): OutboundSendDeps {
|
||||
return {
|
||||
sendWhatsApp: deps.sendMessageWhatsApp,
|
||||
sendTelegram: deps.sendMessageTelegram,
|
||||
sendDiscord: deps.sendMessageDiscord,
|
||||
sendSlack: deps.sendMessageSlack,
|
||||
sendSignal: deps.sendMessageSignal,
|
||||
sendIMessage: deps.sendMessageIMessage,
|
||||
};
|
||||
return createOutboundSendDepsFromCliSource(deps);
|
||||
}
|
||||
|
||||
export { logWebSelfId } from "../web/auth-store.js";
|
||||
|
||||
@@ -1,22 +1,11 @@
|
||||
import type { OutboundSendDeps } from "../infra/outbound/deliver.js";
|
||||
import {
|
||||
createOutboundSendDepsFromCliSource,
|
||||
type CliOutboundSendSource,
|
||||
} from "./outbound-send-mapping.js";
|
||||
|
||||
export type CliDeps = {
|
||||
sendMessageWhatsApp: NonNullable<OutboundSendDeps["sendWhatsApp"]>;
|
||||
sendMessageTelegram: NonNullable<OutboundSendDeps["sendTelegram"]>;
|
||||
sendMessageDiscord: NonNullable<OutboundSendDeps["sendDiscord"]>;
|
||||
sendMessageSlack: NonNullable<OutboundSendDeps["sendSlack"]>;
|
||||
sendMessageSignal: NonNullable<OutboundSendDeps["sendSignal"]>;
|
||||
sendMessageIMessage: NonNullable<OutboundSendDeps["sendIMessage"]>;
|
||||
};
|
||||
export type CliDeps = Required<CliOutboundSendSource>;
|
||||
|
||||
// Provider docking: extend this mapping when adding new outbound send deps.
|
||||
export function createOutboundSendDeps(deps: CliDeps): OutboundSendDeps {
|
||||
return {
|
||||
sendWhatsApp: deps.sendMessageWhatsApp,
|
||||
sendTelegram: deps.sendMessageTelegram,
|
||||
sendDiscord: deps.sendMessageDiscord,
|
||||
sendSlack: deps.sendMessageSlack,
|
||||
sendSignal: deps.sendMessageSignal,
|
||||
sendIMessage: deps.sendMessageIMessage,
|
||||
};
|
||||
return createOutboundSendDepsFromCliSource(deps);
|
||||
}
|
||||
|
||||
29
src/cli/outbound-send-mapping.test.ts
Normal file
29
src/cli/outbound-send-mapping.test.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
createOutboundSendDepsFromCliSource,
|
||||
type CliOutboundSendSource,
|
||||
} from "./outbound-send-mapping.js";
|
||||
|
||||
describe("createOutboundSendDepsFromCliSource", () => {
|
||||
it("maps CLI send deps to outbound send deps", () => {
|
||||
const deps: CliOutboundSendSource = {
|
||||
sendMessageWhatsApp: vi.fn() as CliOutboundSendSource["sendMessageWhatsApp"],
|
||||
sendMessageTelegram: vi.fn() as CliOutboundSendSource["sendMessageTelegram"],
|
||||
sendMessageDiscord: vi.fn() as CliOutboundSendSource["sendMessageDiscord"],
|
||||
sendMessageSlack: vi.fn() as CliOutboundSendSource["sendMessageSlack"],
|
||||
sendMessageSignal: vi.fn() as CliOutboundSendSource["sendMessageSignal"],
|
||||
sendMessageIMessage: vi.fn() as CliOutboundSendSource["sendMessageIMessage"],
|
||||
};
|
||||
|
||||
const outbound = createOutboundSendDepsFromCliSource(deps);
|
||||
|
||||
expect(outbound).toEqual({
|
||||
sendWhatsApp: deps.sendMessageWhatsApp,
|
||||
sendTelegram: deps.sendMessageTelegram,
|
||||
sendDiscord: deps.sendMessageDiscord,
|
||||
sendSlack: deps.sendMessageSlack,
|
||||
sendSignal: deps.sendMessageSignal,
|
||||
sendIMessage: deps.sendMessageIMessage,
|
||||
});
|
||||
});
|
||||
});
|
||||
22
src/cli/outbound-send-mapping.ts
Normal file
22
src/cli/outbound-send-mapping.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import type { OutboundSendDeps } from "../infra/outbound/deliver.js";
|
||||
|
||||
export type CliOutboundSendSource = {
|
||||
sendMessageWhatsApp: OutboundSendDeps["sendWhatsApp"];
|
||||
sendMessageTelegram: OutboundSendDeps["sendTelegram"];
|
||||
sendMessageDiscord: OutboundSendDeps["sendDiscord"];
|
||||
sendMessageSlack: OutboundSendDeps["sendSlack"];
|
||||
sendMessageSignal: OutboundSendDeps["sendSignal"];
|
||||
sendMessageIMessage: OutboundSendDeps["sendIMessage"];
|
||||
};
|
||||
|
||||
// Provider docking: extend this mapping when adding new outbound send deps.
|
||||
export function createOutboundSendDepsFromCliSource(deps: CliOutboundSendSource): OutboundSendDeps {
|
||||
return {
|
||||
sendWhatsApp: deps.sendMessageWhatsApp,
|
||||
sendTelegram: deps.sendMessageTelegram,
|
||||
sendDiscord: deps.sendMessageDiscord,
|
||||
sendSlack: deps.sendMessageSlack,
|
||||
sendSignal: deps.sendMessageSignal,
|
||||
sendIMessage: deps.sendMessageIMessage,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user