refactor: dedupe plugin runtime stores

This commit is contained in:
Peter Steinberger
2026-03-08 19:40:17 +00:00
parent 3e70109cb2
commit 8d7778d1d6
23 changed files with 116 additions and 258 deletions

View File

@@ -194,6 +194,7 @@ export { buildOauthProviderAuthResult } from "./provider-auth-result.js";
export { formatResolvedUnresolvedNote } from "./resolution-notes.js";
export { buildChannelSendResult } from "./channel-send-result.js";
export type { ChannelSendRawResult } from "./channel-send-result.js";
export { createPluginRuntimeStore } from "./runtime-store.js";
export type { ChannelDock } from "../channels/dock.js";
export { getChatChannelMeta } from "../channels/registry.js";
export { resolveAllowlistMatchByCandidates } from "../channels/allowlist-match.js";

View File

@@ -0,0 +1,26 @@
export function createPluginRuntimeStore<T>(errorMessage: string): {
setRuntime: (next: T) => void;
clearRuntime: () => void;
tryGetRuntime: () => T | null;
getRuntime: () => T;
} {
let runtime: T | null = null;
return {
setRuntime(next: T) {
runtime = next;
},
clearRuntime() {
runtime = null;
},
tryGetRuntime() {
return runtime;
},
getRuntime() {
if (!runtime) {
throw new Error(errorMessage);
}
return runtime;
},
};
}