diff --git a/src/cli/deps.ts b/src/cli/deps.ts index a3c3c72ac49..327da49b4cc 100644 --- a/src/cli/deps.ts +++ b/src/cli/deps.ts @@ -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"; diff --git a/src/cli/outbound-send-deps.ts b/src/cli/outbound-send-deps.ts index 242bc15dee7..81d7211bf9f 100644 --- a/src/cli/outbound-send-deps.ts +++ b/src/cli/outbound-send-deps.ts @@ -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; - sendMessageTelegram: NonNullable; - sendMessageDiscord: NonNullable; - sendMessageSlack: NonNullable; - sendMessageSignal: NonNullable; - sendMessageIMessage: NonNullable; -}; +export type CliDeps = Required; -// 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); } diff --git a/src/cli/outbound-send-mapping.test.ts b/src/cli/outbound-send-mapping.test.ts new file mode 100644 index 00000000000..0b31e21b299 --- /dev/null +++ b/src/cli/outbound-send-mapping.test.ts @@ -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, + }); + }); +}); diff --git a/src/cli/outbound-send-mapping.ts b/src/cli/outbound-send-mapping.ts new file mode 100644 index 00000000000..cf220084e3b --- /dev/null +++ b/src/cli/outbound-send-mapping.ts @@ -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, + }; +}