/** * Service-discovery map: service label → subdomain. The game client fetches the * generated `{ label: "https://." }` document from `/`. * * The base domain is injected at deploy time via the `DOMAIN` var (see * `run-wrangler-deploy`), so the real domain never lives in a versioned file. */ const SERVICE_SUBDOMAINS = { Accounts: 'accounts', AI: 'ai', API: 'api', Auth: 'auth', BugReporting: 'bugreporting', Cards: 'cards', CDN: 'cdn', Chat: 'chat', Clubs: 'clubs', CMS: 'cms', Commerce: 'commerce', Data: 'data', DataCollection: 'datacollection', Discovery: 'discovery', Econ: 'econ', GameLogs: 'gamelogs', Geo: 'geo', Images: 'img', Leaderboard: 'leaderboard', Link: 'link', Lists: 'lists', Matchmaking: 'match', Moderation: 'api', Notifications: 'notify', PlatformNotifications: 'platformnotifications', PlayerSettings: 'playersettings', RoomComments: 'roomcomments', RoomieIntegrations: 'roomieintegrations', Rooms: 'rooms', Storage: 'storage', Strings: 'strings', StringsCDN: 'strings-cdn', Studio: 'studio', Thorn: 'thorn', Videos: 'videos', WWW: 'www', } as const /** Builds the endpoints document for `domain`, e.g. `rec.example.com`. */ export function buildEndpoints(domain: string): Record { return Object.fromEntries( Object.entries(SERVICE_SUBDOMAINS).map(([label, sub]) => [label, `https://${sub}.${domain}`]) ) }