diff --git a/src/channels/plugins/contracts/registry.ts b/src/channels/plugins/contracts/registry.ts index fe21565ba48..a36c90dc996 100644 --- a/src/channels/plugins/contracts/registry.ts +++ b/src/channels/plugins/contracts/registry.ts @@ -35,11 +35,21 @@ import { type SessionBindingContractChannelId, } from "./manifest.js"; -const { discordThreadBindingTesting } = loadBundledPluginTestApiSync<{ - discordThreadBindingTesting: { - resetThreadBindingsForTests: () => void; - }; -}>("discord"); +type DiscordThreadBindingTesting = { + resetThreadBindingsForTests: () => void; +}; + +let discordThreadBindingTestingCache: DiscordThreadBindingTesting | undefined; + +function getDiscordThreadBindingTesting(): DiscordThreadBindingTesting { + if (!discordThreadBindingTestingCache) { + ({ discordThreadBindingTesting: discordThreadBindingTestingCache } = + loadBundledPluginTestApiSync<{ + discordThreadBindingTesting: DiscordThreadBindingTesting; + }>("discord")); + } + return discordThreadBindingTestingCache; +} function buildBundledPluginModuleId(pluginId: string, artifactBasename: string): string { return ["..", "..", "..", "..", "extensions", pluginId, artifactBasename].join("/"); @@ -758,7 +768,7 @@ const sessionBindingContractEntries: Record< enableSweeper: false, }); manager.stop(); - discordThreadBindingTesting.resetThreadBindingsForTests(); + getDiscordThreadBindingTesting().resetThreadBindingsForTests(); expectClearedSessionBinding({ channel: "discord", accountId: "default", diff --git a/test/helpers/channels/registry-backed-contract.ts b/test/helpers/channels/registry-backed-contract.ts index 2724f2797ea..14b821a1e45 100644 --- a/test/helpers/channels/registry-backed-contract.ts +++ b/test/helpers/channels/registry-backed-contract.ts @@ -30,11 +30,21 @@ import { __testing as sessionBindingTesting } from "../../../src/infra/outbound/ import { resetPluginRuntimeStateForTest } from "../../../src/plugins/runtime.js"; import { loadBundledPluginTestApiSync } from "../../../src/test-utils/bundled-plugin-public-surface.js"; -const { discordThreadBindingTesting } = loadBundledPluginTestApiSync<{ - discordThreadBindingTesting: { - resetThreadBindingsForTests: () => void; - }; -}>("discord"); +type DiscordThreadBindingTesting = { + resetThreadBindingsForTests: () => void; +}; + +let discordThreadBindingTestingCache: DiscordThreadBindingTesting | undefined; + +function getDiscordThreadBindingTesting(): DiscordThreadBindingTesting { + if (!discordThreadBindingTestingCache) { + ({ discordThreadBindingTesting: discordThreadBindingTestingCache } = + loadBundledPluginTestApiSync<{ + discordThreadBindingTesting: DiscordThreadBindingTesting; + }>("discord")); + } + return discordThreadBindingTestingCache; +} const { resetTelegramThreadBindingsForTests } = loadBundledPluginTestApiSync<{ resetTelegramThreadBindingsForTests: () => Promise; }>("telegram"); @@ -153,7 +163,7 @@ export function describeSessionBindingRegistryBackedContract(id: string) { } setDefaultChannelPluginRegistryForTests(); sessionBindingTesting.resetSessionBindingAdaptersForTests(); - discordThreadBindingTesting.resetThreadBindingsForTests(); + getDiscordThreadBindingTesting().resetThreadBindingsForTests(); feishuThreadBindingTesting.resetFeishuThreadBindingsForTests(); resetMatrixThreadBindingsForTests(); await resetTelegramThreadBindingsForTests();