export const BUGCOLLECT_ARTIFACT_UPLOAD_PATH = '/bugcollect/v1/artifacts/upload' /** Source Map 与插件发布使用同一流水线 Bearer,不允许匿名上传构建制品。 */ export function createArtifactUploadRequest(apiToken, form) { if (typeof apiToken !== 'string' || apiToken.trim() === '') { throw new Error('artifact upload requires an API token') } return { method: 'POST', headers: { Authorization: `Bearer ${apiToken}` }, body: form, } } /** RN Source Map 与 Android R8 Mapping 共用 artifacts 入口,但类型和身份字段明确分离。 */ export function createRnSourceMapForm({ appKey, platform, appVersion, buildId, moduleId, moduleVersion, bundleHash, fileBytes, fileName, }) { const form = new FormData() form.append('artifactType', 'RN_SOURCEMAP') form.append('appKey', appKey) form.append('platform', platform) form.append('appVersion', appVersion) form.append('buildId', buildId) form.append('moduleId', moduleId) form.append('moduleVersion', moduleVersion) form.append('bundleHash', bundleHash) form.append('file', new Blob([fileBytes]), fileName) return form }