Runtime: lazy-load Discord channel ops
This commit is contained in:
parent
d572188f61
commit
abb21d9163
21
src/plugins/runtime/runtime-discord-ops.runtime.ts
Normal file
21
src/plugins/runtime/runtime-discord-ops.runtime.ts
Normal file
@ -0,0 +1,21 @@
|
||||
export { auditDiscordChannelPermissions } from "../../../extensions/discord/src/audit.js";
|
||||
export {
|
||||
listDiscordDirectoryGroupsLive,
|
||||
listDiscordDirectoryPeersLive,
|
||||
} from "../../../extensions/discord/src/directory-live.js";
|
||||
export { monitorDiscordProvider } from "../../../extensions/discord/src/monitor.js";
|
||||
export { probeDiscord } from "../../../extensions/discord/src/probe.js";
|
||||
export { resolveDiscordChannelAllowlist } from "../../../extensions/discord/src/resolve-channels.js";
|
||||
export { resolveDiscordUserAllowlist } from "../../../extensions/discord/src/resolve-users.js";
|
||||
export {
|
||||
createThreadDiscord,
|
||||
deleteMessageDiscord,
|
||||
editChannelDiscord,
|
||||
editMessageDiscord,
|
||||
pinMessageDiscord,
|
||||
sendDiscordComponentMessage,
|
||||
sendMessageDiscord,
|
||||
sendPollDiscord,
|
||||
sendTypingDiscord,
|
||||
unpinMessageDiscord,
|
||||
} from "../../../extensions/discord/src/send.js";
|
||||
@ -1,10 +1,4 @@
|
||||
import { auditDiscordChannelPermissions } from "../../../extensions/discord/src/audit.js";
|
||||
import { discordMessageActions } from "../../../extensions/discord/src/channel-actions.js";
|
||||
import {
|
||||
listDiscordDirectoryGroupsLive,
|
||||
listDiscordDirectoryPeersLive,
|
||||
} from "../../../extensions/discord/src/directory-live.js";
|
||||
import { monitorDiscordProvider } from "../../../extensions/discord/src/monitor.js";
|
||||
import {
|
||||
getThreadBindingManager,
|
||||
resolveThreadBindingIdleTimeoutMs,
|
||||
@ -15,37 +9,134 @@ import {
|
||||
setThreadBindingMaxAgeBySessionKey,
|
||||
unbindThreadBindingsBySessionKey,
|
||||
} from "../../../extensions/discord/src/monitor/thread-bindings.js";
|
||||
import { probeDiscord } from "../../../extensions/discord/src/probe.js";
|
||||
import { resolveDiscordChannelAllowlist } from "../../../extensions/discord/src/resolve-channels.js";
|
||||
import { resolveDiscordUserAllowlist } from "../../../extensions/discord/src/resolve-users.js";
|
||||
import {
|
||||
createThreadDiscord,
|
||||
deleteMessageDiscord,
|
||||
editChannelDiscord,
|
||||
editMessageDiscord,
|
||||
pinMessageDiscord,
|
||||
sendDiscordComponentMessage,
|
||||
sendMessageDiscord,
|
||||
sendPollDiscord,
|
||||
sendTypingDiscord,
|
||||
unpinMessageDiscord,
|
||||
} from "../../../extensions/discord/src/send.js";
|
||||
import { createDiscordTypingLease } from "./runtime-discord-typing.js";
|
||||
import type { PluginRuntimeChannel } from "./types-channel.js";
|
||||
|
||||
let runtimeDiscordOpsPromise: Promise<typeof import("./runtime-discord-ops.runtime.js")> | null =
|
||||
null;
|
||||
|
||||
function loadRuntimeDiscordOps() {
|
||||
runtimeDiscordOpsPromise ??= import("./runtime-discord-ops.runtime.js");
|
||||
return runtimeDiscordOpsPromise;
|
||||
}
|
||||
|
||||
const auditChannelPermissionsLazy: PluginRuntimeChannel["discord"]["auditChannelPermissions"] =
|
||||
async (...args) => {
|
||||
const { auditDiscordChannelPermissions } = await loadRuntimeDiscordOps();
|
||||
return auditDiscordChannelPermissions(...args);
|
||||
};
|
||||
|
||||
const listDirectoryGroupsLiveLazy: PluginRuntimeChannel["discord"]["listDirectoryGroupsLive"] =
|
||||
async (...args) => {
|
||||
const { listDiscordDirectoryGroupsLive } = await loadRuntimeDiscordOps();
|
||||
return listDiscordDirectoryGroupsLive(...args);
|
||||
};
|
||||
|
||||
const listDirectoryPeersLiveLazy: PluginRuntimeChannel["discord"]["listDirectoryPeersLive"] =
|
||||
async (...args) => {
|
||||
const { listDiscordDirectoryPeersLive } = await loadRuntimeDiscordOps();
|
||||
return listDiscordDirectoryPeersLive(...args);
|
||||
};
|
||||
|
||||
const probeDiscordLazy: PluginRuntimeChannel["discord"]["probeDiscord"] = async (...args) => {
|
||||
const { probeDiscord } = await loadRuntimeDiscordOps();
|
||||
return probeDiscord(...args);
|
||||
};
|
||||
|
||||
const resolveChannelAllowlistLazy: PluginRuntimeChannel["discord"]["resolveChannelAllowlist"] =
|
||||
async (...args) => {
|
||||
const { resolveDiscordChannelAllowlist } = await loadRuntimeDiscordOps();
|
||||
return resolveDiscordChannelAllowlist(...args);
|
||||
};
|
||||
|
||||
const resolveUserAllowlistLazy: PluginRuntimeChannel["discord"]["resolveUserAllowlist"] = async (
|
||||
...args
|
||||
) => {
|
||||
const { resolveDiscordUserAllowlist } = await loadRuntimeDiscordOps();
|
||||
return resolveDiscordUserAllowlist(...args);
|
||||
};
|
||||
|
||||
const sendComponentMessageLazy: PluginRuntimeChannel["discord"]["sendComponentMessage"] = async (
|
||||
...args
|
||||
) => {
|
||||
const { sendDiscordComponentMessage } = await loadRuntimeDiscordOps();
|
||||
return sendDiscordComponentMessage(...args);
|
||||
};
|
||||
|
||||
const sendMessageDiscordLazy: PluginRuntimeChannel["discord"]["sendMessageDiscord"] = async (
|
||||
...args
|
||||
) => {
|
||||
const { sendMessageDiscord } = await loadRuntimeDiscordOps();
|
||||
return sendMessageDiscord(...args);
|
||||
};
|
||||
|
||||
const sendPollDiscordLazy: PluginRuntimeChannel["discord"]["sendPollDiscord"] = async (...args) => {
|
||||
const { sendPollDiscord } = await loadRuntimeDiscordOps();
|
||||
return sendPollDiscord(...args);
|
||||
};
|
||||
|
||||
const monitorDiscordProviderLazy: PluginRuntimeChannel["discord"]["monitorDiscordProvider"] =
|
||||
async (...args) => {
|
||||
const { monitorDiscordProvider } = await loadRuntimeDiscordOps();
|
||||
return monitorDiscordProvider(...args);
|
||||
};
|
||||
|
||||
const sendTypingDiscordLazy: PluginRuntimeChannel["discord"]["typing"]["pulse"] = async (
|
||||
...args
|
||||
) => {
|
||||
const { sendTypingDiscord } = await loadRuntimeDiscordOps();
|
||||
return sendTypingDiscord(...args);
|
||||
};
|
||||
|
||||
const editMessageDiscordLazy: PluginRuntimeChannel["discord"]["conversationActions"]["editMessage"] =
|
||||
async (...args) => {
|
||||
const { editMessageDiscord } = await loadRuntimeDiscordOps();
|
||||
return editMessageDiscord(...args);
|
||||
};
|
||||
|
||||
const deleteMessageDiscordLazy: PluginRuntimeChannel["discord"]["conversationActions"]["deleteMessage"] =
|
||||
async (...args) => {
|
||||
const { deleteMessageDiscord } = await loadRuntimeDiscordOps();
|
||||
return deleteMessageDiscord(...args);
|
||||
};
|
||||
|
||||
const pinMessageDiscordLazy: PluginRuntimeChannel["discord"]["conversationActions"]["pinMessage"] =
|
||||
async (...args) => {
|
||||
const { pinMessageDiscord } = await loadRuntimeDiscordOps();
|
||||
return pinMessageDiscord(...args);
|
||||
};
|
||||
|
||||
const unpinMessageDiscordLazy: PluginRuntimeChannel["discord"]["conversationActions"]["unpinMessage"] =
|
||||
async (...args) => {
|
||||
const { unpinMessageDiscord } = await loadRuntimeDiscordOps();
|
||||
return unpinMessageDiscord(...args);
|
||||
};
|
||||
|
||||
const createThreadDiscordLazy: PluginRuntimeChannel["discord"]["conversationActions"]["createThread"] =
|
||||
async (...args) => {
|
||||
const { createThreadDiscord } = await loadRuntimeDiscordOps();
|
||||
return createThreadDiscord(...args);
|
||||
};
|
||||
|
||||
const editChannelDiscordLazy: PluginRuntimeChannel["discord"]["conversationActions"]["editChannel"] =
|
||||
async (...args) => {
|
||||
const { editChannelDiscord } = await loadRuntimeDiscordOps();
|
||||
return editChannelDiscord(...args);
|
||||
};
|
||||
|
||||
export function createRuntimeDiscord(): PluginRuntimeChannel["discord"] {
|
||||
return {
|
||||
messageActions: discordMessageActions,
|
||||
auditChannelPermissions: auditDiscordChannelPermissions,
|
||||
listDirectoryGroupsLive: listDiscordDirectoryGroupsLive,
|
||||
listDirectoryPeersLive: listDiscordDirectoryPeersLive,
|
||||
probeDiscord,
|
||||
resolveChannelAllowlist: resolveDiscordChannelAllowlist,
|
||||
resolveUserAllowlist: resolveDiscordUserAllowlist,
|
||||
sendComponentMessage: sendDiscordComponentMessage,
|
||||
sendMessageDiscord,
|
||||
sendPollDiscord,
|
||||
monitorDiscordProvider,
|
||||
auditChannelPermissions: auditChannelPermissionsLazy,
|
||||
listDirectoryGroupsLive: listDirectoryGroupsLiveLazy,
|
||||
listDirectoryPeersLive: listDirectoryPeersLiveLazy,
|
||||
probeDiscord: probeDiscordLazy,
|
||||
resolveChannelAllowlist: resolveChannelAllowlistLazy,
|
||||
resolveUserAllowlist: resolveUserAllowlistLazy,
|
||||
sendComponentMessage: sendComponentMessageLazy,
|
||||
sendMessageDiscord: sendMessageDiscordLazy,
|
||||
sendPollDiscord: sendPollDiscordLazy,
|
||||
monitorDiscordProvider: monitorDiscordProviderLazy,
|
||||
threadBindings: {
|
||||
getManager: getThreadBindingManager,
|
||||
resolveIdleTimeoutMs: resolveThreadBindingIdleTimeoutMs,
|
||||
@ -57,7 +148,7 @@ export function createRuntimeDiscord(): PluginRuntimeChannel["discord"] {
|
||||
unbindBySessionKey: unbindThreadBindingsBySessionKey,
|
||||
},
|
||||
typing: {
|
||||
pulse: sendTypingDiscord,
|
||||
pulse: sendTypingDiscordLazy,
|
||||
start: async ({ channelId, accountId, cfg, intervalMs }) =>
|
||||
await createDiscordTypingLease({
|
||||
channelId,
|
||||
@ -65,16 +156,16 @@ export function createRuntimeDiscord(): PluginRuntimeChannel["discord"] {
|
||||
cfg,
|
||||
intervalMs,
|
||||
pulse: async ({ channelId, accountId, cfg }) =>
|
||||
void (await sendTypingDiscord(channelId, { accountId, cfg })),
|
||||
void (await sendTypingDiscordLazy(channelId, { accountId, cfg })),
|
||||
}),
|
||||
},
|
||||
conversationActions: {
|
||||
editMessage: editMessageDiscord,
|
||||
deleteMessage: deleteMessageDiscord,
|
||||
pinMessage: pinMessageDiscord,
|
||||
unpinMessage: unpinMessageDiscord,
|
||||
createThread: createThreadDiscord,
|
||||
editChannel: editChannelDiscord,
|
||||
editMessage: editMessageDiscordLazy,
|
||||
deleteMessage: deleteMessageDiscordLazy,
|
||||
pinMessage: pinMessageDiscordLazy,
|
||||
unpinMessage: unpinMessageDiscordLazy,
|
||||
createThread: createThreadDiscordLazy,
|
||||
editChannel: editChannelDiscordLazy,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user