summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/stickers/registry.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/lib/stickers/registry.ts')
-rw-r--r--apps/web/src/lib/stickers/registry.ts31
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());
+}