Files
cms-SiteForge/app/static/workspace-launch.js
T

23 lines
1.9 KiB
JavaScript
Raw Normal View History

/* V8.28: untrusted display state only; final authorization always on server. */
(function(root,factory){const api=factory();if(typeof module==='object'&&module.exports)module.exports=api;else root.SiteForgeLaunch=api;})(typeof window!=='undefined'?window:this,function(){
'use strict';
const finished=new Set(['complete','completed','done','success']);
function plan({site=null,build=null,requests=[],requestsKnown=false,delivery={},target='staging',previewChecked=false,preflight=null}={}){
const version=build&&finished.has(build.status)?build:null;
const bids=version?.id;
const rows=Array.isArray(requests)?requests.filter(x=>x.build_id===bids):[];
const approval=rows.some(x=>x.state==='approved')?'approved':rows.some(x=>x.state==='pending')?'pending':rows.some(x=>x.state==='rejected')?'rejected':requestsKnown&&Array.isArray(requests)?'none':'unknown';
const safeTarget=['staging','production'].includes(target)?target:'staging';
const preflightReady=Boolean(version&&preflight?.siteId===site?.id&&preflight?.buildId===version.id&&preflight?.target===safeTarget&&preflight?.ready===true);
const preflightMessage=preflightReady?'服务器已通过检查,部署时还会重新验证。':preflight?.siteId===site?.id&&preflight?.buildId===bids?preflight.message:'尚未完成此版本的发布前检查';
const configured=delivery?.configured?.[safeTarget]===true;
const canDeploy=Boolean(version&&previewChecked&&approval==='approved'&&preflightReady&&configured);
const history=Array.isArray(delivery?.history)?delivery.history:[];
const matches=history.filter(x=>x.target===safeTarget&&x.release_id&&x.build_id===bids);
return {approval,canDeploy,preflightReady,preflightMessage,hasRemoteRecord:matches.length>0,
remoteDescription:matches.length?'存在当前版本的部署记录,但尚需实际访问确认。':'尚无当前版本在该环境的部署记录。',configured,
target:safeTarget,hasBuild:!!version};
}
return {plan};
});