diff options
Diffstat (limited to 'apps/web/src/lib/stickers/registry.ts')
| -rw-r--r-- | apps/web/src/lib/stickers/registry.ts | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/apps/web/src/lib/stickers/registry.ts b/apps/web/src/lib/stickers/registry.ts new file mode 100644 index 00000000..0fbad594 --- /dev/null +++ b/apps/web/src/lib/stickers/registry.ts @@ -0,0 +1,31 @@ +import type { StickerProvider } from "@/types/stickers"; + +const providers = new Map<string, StickerProvider>(); + +export function registerProvider({ + provider, +}: { + provider: StickerProvider; +}): void { + providers.set(provider.id, provider); +} + +export function hasProvider({ providerId }: { providerId: string }): boolean { + return providers.has(providerId); +} + +export function getProvider({ + providerId, +}: { + providerId: string; +}): StickerProvider { + const provider = providers.get(providerId); + if (!provider) { + throw new Error(`Unknown sticker provider: ${providerId}`); + } + return provider; +} + +export function getAllProviders(): StickerProvider[] { + return Array.from(providers.values()); +} |
