Add communication account plugin scaffolds

This commit is contained in:
Anthony Ettinger 2026-06-09 10:02:07 +00:00
parent 5cfeea6b57
commit c23ce42948
48 changed files with 1949 additions and 13 deletions

View file

@ -0,0 +1,28 @@
import type { LogicSrcAccountKind, LogicSrcAccountProviderManifest } from "./types.js";
export function createProviderRegistry(providers: LogicSrcAccountProviderManifest[]) {
const byId = new Map<string, LogicSrcAccountProviderManifest>();
for (const provider of providers) {
if (byId.has(provider.id)) {
throw new Error(`Duplicate account provider: ${provider.id}`);
}
byId.set(provider.id, provider);
}
return {
list(kind?: LogicSrcAccountKind) {
return providers.filter((provider) => !kind || provider.kind === kind);
},
get(id: string) {
return byId.get(id);
},
require(id: string) {
const provider = byId.get(id);
if (!provider) {
throw new Error(`Unknown account provider: ${id}`);
}
return provider;
}
};
}