type Environment = 'development' | 'testing' | 'production'; interface Domain { apiDomain: string; walnutcupDomain: string; stpageplayerDomain: string; contestIdeDomain: string; contestHost: string; contestDomain: string; } type AllDomain = { [key in Environment]: Domain; }; export function extractUrlValue(key: string, url?: string) { if (typeof url === 'undefined') url = window.location.search; const match = url.match('[?&]' + key + '=([^&]+)'); return match ? match[1] : null; } export function getEnvironment(): Environment { if (process.env.NODE_ENV === 'development') { return 'development'; } const debugEnv = extractUrlValue('debugenv'); if (debugEnv) { return debugEnv as Environment; } const hostname = window.location.hostname; if (hostname.indexOf('testing') >= 0 || hostname.indexOf('huodong') >= 0) { return 'testing'; } return 'production'; } const allDomain: AllDomain = { development: { apiDomain: '', walnutcupDomain: `https://walnutcup.testing11.xxxxxx.com`, stpageplayerDomain: `https://stpageplayer.testing11.xxxxxx.com`, contestIdeDomain: `https://contestide.testing11.xxxxxx.com`, contestHost: `contest.testing11.xxxxxx.com`, contestDomain: `https://contest.testing11.xxxxxx.com`, }, testing: { apiDomain: 'https://contest.testing11.xxxxxx.com', walnutcupDomain: `https://walnutcup.testing11.xxxxxx.com`, stpageplayerDomain: `https://stpageplayer.testing11.xxxxxx.com`, contestIdeDomain: `https://contestide.testing11.xxxxxx.com`, contestHost: `contest.testing11.xxxxxx.com`, contestDomain: `https://contest.testing11.xxxxxx.com`, }, production: { apiDomain: 'https://contest.xxxxxx.com', walnutcupDomain: `https://walnutcup.xxxxxx.com`, stpageplayerDomain: `https://stpageplayer.xxxxxx.com`, contestIdeDomain: `https://contestide.xxxxxx.com`, contestHost: `contest.xxxxxx.com`, contestDomain: `https://contest.xxxxxx.com`, }, }; export const environment = getEnvironment(); export const domains = allDomain[environment]; export const tagName = extractUrlValue('tag') || '-1'; function getContestName() { const contestNameMatch = window.location.pathname.match(/[^/]+/); return contestNameMatch ? contestNameMatch[0] : ''; } export const contestName = getContestName();