/**
* 预热目标环境(三端统一)。
*
* 环境只决定"拉哪个 manifest URL",下游 hosts / warmupUrl 由 manifest 内容自描述,
* SDK 不硬编码任何业务 host。`PrewarmConfig.manifestUrl` 若显式传入则优先级更高。
*/
export enum PrewarmEnvironment {
/** 线上生产环境。 */
PROD = 0,
/** 客户联调 beta 环境。 */
BETA = 1,
/** 内部开发 test 环境。 */
TEST = 2
}
/**
* 各环境内置 manifest URL 映射。
*/
export function manifestUrlOf(env: PrewarmEnvironment): string {
switch (env) {
case PrewarmEnvironment.BETA:
return 'https://res.ess.tencent.cn/cdn/h5-std-beta/warmup-manifest.json';
case PrewarmEnvironment.TEST:
return 'https://res.ess.tencent.cn/cdn/h5-std-dev/warmup-manifest.json';
case PrewarmEnvironment.PROD:
default:
return 'https://res.ess.tencent.cn/cdn/h5-std/warmup-manifest.json';
}
}
/**
* 各环境已知的 `quick.*` 入口 host(用于 `open()` 环境错配检测)。
*/
export function knownQuickHostOf(env: PrewarmEnvironment): string {
switch (env) {
case PrewarmEnvironment.BETA:
return 'quick.beta.qian.tencent.cn';
case PrewarmEnvironment.TEST:
return 'quick.test.qian.tencent.cn';
case PrewarmEnvironment.PROD:
default:
return 'quick.qian.tencent.com';
}
}
/**
* 反查某 host 属于哪个已知环境;非 3 个已知 `quick.*` host 返回 `null`。
*/
export function environmentOfHost(host: string): PrewarmEnvironment | null {
const h: string = host.toLowerCase();
if (h === 'quick.qian.tencent.com') {
return PrewarmEnvironment.PROD;
}
if (h === 'quick.beta.qian.tencent.cn') {
return PrewarmEnvironment.BETA;
}
if (h === 'quick.test.qian.tencent.cn') {
return PrewarmEnvironment.TEST;
}
return null;
}
|