实现示例type Vendor = { name: string; version: string; files: { path: string; sha256: string }[] }

function hex64(h: string): boolean { return /^[A-Fa-f0-9]{64}$/.test(h) }

function valid(v: Vendor): boolean {

return !!v.name && !!v.version && v.files.length > 0 && v.files.every(f => !!f.path && hex64(f.sha256))

}

function diffVendor(prev: Vendor, next: Vendor): { added: string[]; removed: string[]; changed: string[] } {

const mp = new Map(prev.files.map(f => [f.path, f.sha256]))

const mn = new Map(next.files.map(f => [f.path, f.sha256]))

const added: string[] = []

const removed: string[] = []

const changed: string[] = []

for (const p of mn.keys()) if (!mp.has(p)) added.push(p)

for (const p of mp.keys()) if (!mn.has(p)) removed.push(p)

for (const p of mn.keys()) {

const a = mp.get(p)

const b = mn.get(p)

if (a && b && a.toLowerCase() !== b.toLowerCase()) changed.push(p)

}

return { added, removed, changed }

}

审计与更新门禁变更必须通过差异审计与签名校验;高风险变更需双人审批。发布产线使用 vendoring 版本;外部源更新需入库与审计。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部