spb/social-runtime-crawler
Public
TypeScript 91.8%
HTML 3.2%
JavaScript 3%
SQL 1.4%
CSS 0.7%
1import type { Platform } from "@src/shared";2import type { SocialPlatformAdapter } from "./adapter.ts";3import { youtubeAdapter } from "./youtube.ts";4import { redditAdapter } from "./reddit.ts";5import { facebookAdapter } from "./facebook.ts";67export * from "./adapter.ts";8export { youtubeAdapter, redditAdapter, facebookAdapter };910const ADAPTERS: Partial<Record<Platform, SocialPlatformAdapter>> = {11 youtube: youtubeAdapter,12 reddit: redditAdapter,13 facebook: facebookAdapter,14};1516export const SUPPORTED_PLATFORMS = Object.keys(ADAPTERS) as Platform[];1718export function getAdapter(platform: Platform): SocialPlatformAdapter {19 const a = ADAPTERS[platform];20 if (!a) throw new Error(`No adapter for platform "${platform}" yet (available: ${SUPPORTED_PLATFORMS.join(", ")}). Use PLATFORM LEARNING mode to bootstrap one.`);21 return a;22}2324export function hasAdapter(platform: Platform): boolean {25 return !!ADAPTERS[platform];26}27