实现示例type Meta = { name: string; version: string; license: string; exports?: Record<string, string> }
function semverValid(v: string): boolean { return /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/.test(v) }
const allowLicenses = new Set<string>(['MIT','Apache-2.0','BSD-3-Clause','ISC'])
function validExports(exp?: Record<string, string>): boolean {
if (!exp) return true
for (const [k, v] of Object.entries(exp)) { if (!/^\./.test(k) || !/^\.\//.test(v)) return false }
return true
}
function evaluate(m: Meta): { ok: boolean; errors: string[] } {
const errors: string[] = []
if (!m.name || /\s/.test(m.name)) errors.push('name')
if (!semverValid(m.version)) errors.push('version')
if (!allowLicenses.has(m.license)) errors.push('license')
if (!validExports(m.exports)) errors.push('exports')
return { ok: errors.length === 0, errors }
}
审计与发布治理审计元数据一致性与合规;异常阻断并输出修复建议。变更需审批与回归校验,确保跨语言包的一致性。

发表评论 取消回复