feat: manually mirror opencoze's code from bytedance
Change-Id: I09a73aadda978ad9511264a756b2ce51f5761adf
This commit is contained in:
107
frontend/packages/arch/bot-env-adapter/src/base.ts
Normal file
107
frontend/packages/arch/bot-env-adapter/src/base.ts
Normal file
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* Copyright 2025 coze-dev Authors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { getCurrentBranch } from './utils/current-branch';
|
||||
|
||||
const processEnvs = {
|
||||
BUILD_TYPE: (process.env.BUILD_TYPE || 'local') as
|
||||
| 'online'
|
||||
| 'offline'
|
||||
| 'test'
|
||||
| 'local',
|
||||
CUSTOM_VERSION: (process.env.CUSTOM_VERSION || 'inhouse') as
|
||||
| 'release'
|
||||
| 'inhouse',
|
||||
BUILD_BRANCH: (process.env.BUILD_BRANCH || getCurrentBranch()) as string,
|
||||
REGION: (process.env.REGION || 'cn') as 'cn' | 'sg' | 'va',
|
||||
NODE_ENV: process.env.NODE_ENV as 'production' | 'development' | 'test',
|
||||
CDN_PATH_PREFIX: (process.env.CDN_PATH_PREFIX ?? '/') as string,
|
||||
// vmok 生产者使用,用来将生产者的 sourcemap 文件上传至对应的消费者版本下面
|
||||
CONSUMER_BUILD_VERSION: (process.env.CONSUMER_BUILD_VERSION ?? '') as string,
|
||||
};
|
||||
|
||||
const IS_OVERSEA = Boolean(process.env.REGION) && process.env.REGION !== 'cn';
|
||||
const IS_CN_REGION = process.env.REGION === 'cn';
|
||||
const IS_VA_REGION = process.env.REGION === 'va';
|
||||
const IS_RELEASE_VERSION = processEnvs.CUSTOM_VERSION === 'release'; // 为 ture 表示对外版本
|
||||
const IS_OVERSEA_RELEASE = IS_OVERSEA && IS_RELEASE_VERSION;
|
||||
const IS_PROD =
|
||||
processEnvs.BUILD_TYPE === 'online' ||
|
||||
process.env.CUSTOM_BUILD_TYPE === 'online'; // 是否是线上
|
||||
const IS_BOE = processEnvs.BUILD_TYPE === 'offline';
|
||||
const IS_DEV_MODE = processEnvs.NODE_ENV === 'development'; // 本地开发
|
||||
const IS_BOT_OP = false; // 是否是 bot 运营平台,默认都是 false,从运营平台构建会设置成 true
|
||||
const IS_OPEN_SOURCE = (process.env.IS_OPEN_SOURCE ?? 'false') === 'true';
|
||||
|
||||
const judgements = {
|
||||
IS_OVERSEA,
|
||||
IS_CN_REGION,
|
||||
IS_VA_REGION,
|
||||
IS_BOE,
|
||||
IS_RELEASE_VERSION,
|
||||
IS_OVERSEA_RELEASE,
|
||||
IS_DEV_MODE,
|
||||
IS_PROD,
|
||||
IS_BOT_OP,
|
||||
IS_OPEN_SOURCE,
|
||||
};
|
||||
|
||||
const getInnerCDN = () =>
|
||||
process.env[`CDN_INNER_${processEnvs.REGION.toUpperCase()}`];
|
||||
|
||||
const getOuterCDN = () =>
|
||||
process.env[`CDN_OUTER_${processEnvs.REGION.toUpperCase()}`];
|
||||
|
||||
const getCDN = () => {
|
||||
if (IS_DEV_MODE) {
|
||||
if (IS_RELEASE_VERSION) {
|
||||
return '';
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
if (IS_RELEASE_VERSION && processEnvs.BUILD_TYPE === 'online') {
|
||||
// 海外正式版使用独立业务线
|
||||
return getOuterCDN();
|
||||
} else {
|
||||
return getInnerCDN();
|
||||
}
|
||||
};
|
||||
|
||||
/** 对应CDN资源上传平台上的CDN地址 */
|
||||
const getUploadCDN = () => {
|
||||
const uploadCDNPrefixes = {
|
||||
UPLOAD_CDN_CN: '',
|
||||
UPLOAD_CDN_SG: '',
|
||||
UPLOAD_CDN_VA: '',
|
||||
};
|
||||
|
||||
const currentKey = `UPLOAD_CDN_${processEnvs.REGION.toUpperCase() as string}`;
|
||||
|
||||
return {
|
||||
UPLOAD_CDN: uploadCDNPrefixes[currentKey as keyof typeof uploadCDNPrefixes],
|
||||
...(IS_DEV_MODE ? uploadCDNPrefixes : {}),
|
||||
};
|
||||
};
|
||||
|
||||
export const base = {
|
||||
...processEnvs,
|
||||
...judgements,
|
||||
CDN: getCDN(),
|
||||
// release 环境下外部静态域名
|
||||
OUTER_CDN: getOuterCDN(),
|
||||
...getUploadCDN(),
|
||||
};
|
||||
Reference in New Issue
Block a user