mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 23:21:36 +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 { sendMessageSignal } from "../signal/send.js";
|
||||||
import type { sendMessageSlack } from "../slack/send.js";
|
import type { sendMessageSlack } from "../slack/send.js";
|
||||||
import type { sendMessageTelegram } from "../telegram/send.js";
|
import type { sendMessageTelegram } from "../telegram/send.js";
|
||||||
|
import { createOutboundSendDepsFromCliSource } from "./outbound-send-mapping.js";
|
||||||
|
|
||||||
export type CliDeps = {
|
export type CliDeps = {
|
||||||
sendMessageWhatsApp: typeof sendMessageWhatsApp;
|
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 {
|
export function createOutboundSendDeps(deps: CliDeps): OutboundSendDeps {
|
||||||
return {
|
return createOutboundSendDepsFromCliSource(deps);
|
||||||
sendWhatsApp: deps.sendMessageWhatsApp,
|
|
||||||
sendTelegram: deps.sendMessageTelegram,
|
|
||||||
sendDiscord: deps.sendMessageDiscord,
|
|
||||||
sendSlack: deps.sendMessageSlack,
|
|
||||||
sendSignal: deps.sendMessageSignal,
|
|
||||||
sendIMessage: deps.sendMessageIMessage,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export { logWebSelfId } from "../web/auth-store.js";
|
export { logWebSelfId } from "../web/auth-store.js";
|
||||||
|
|||||||
@@ -1,22 +1,11 @@
|
|||||||
import type { OutboundSendDeps } from "../infra/outbound/deliver.js";
|
import type { OutboundSendDeps } from "../infra/outbound/deliver.js";
|
||||||
|
import {
|
||||||
|
createOutboundSendDepsFromCliSource,
|
||||||
|
type CliOutboundSendSource,
|
||||||
|
} from "./outbound-send-mapping.js";
|
||||||
|
|
||||||
export type CliDeps = {
|
export type CliDeps = Required<CliOutboundSendSource>;
|
||||||
sendMessageWhatsApp: NonNullable<OutboundSendDeps["sendWhatsApp"]>;
|
|
||||||
sendMessageTelegram: NonNullable<OutboundSendDeps["sendTelegram"]>;
|
|
||||||
sendMessageDiscord: NonNullable<OutboundSendDeps["sendDiscord"]>;
|
|
||||||
sendMessageSlack: NonNullable<OutboundSendDeps["sendSlack"]>;
|
|
||||||
sendMessageSignal: NonNullable<OutboundSendDeps["sendSignal"]>;
|
|
||||||
sendMessageIMessage: NonNullable<OutboundSendDeps["sendIMessage"]>;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Provider docking: extend this mapping when adding new outbound send deps.
|
|
||||||
export function createOutboundSendDeps(deps: CliDeps): OutboundSendDeps {
|
export function createOutboundSendDeps(deps: CliDeps): OutboundSendDeps {
|
||||||
return {
|
return createOutboundSendDepsFromCliSource(deps);
|
||||||
sendWhatsApp: deps.sendMessageWhatsApp,
|
|
||||||
sendTelegram: deps.sendMessageTelegram,
|
|
||||||
sendDiscord: deps.sendMessageDiscord,
|
|
||||||
sendSlack: deps.sendMessageSlack,
|
|
||||||
sendSignal: deps.sendMessageSignal,
|
|
||||||
sendIMessage: deps.sendMessageIMessage,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
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