import { listPermissionRouteAliases, normalizeRoutePathForPermission, permissionRouteAliasGroups, } from '../app/utils/route-alias.shared.js'; function assert(condition, message) { if (!condition) { throw new Error(message); } } function runAliasExampleChecks() { const seenInputs = new Set(); for (const group of permissionRouteAliasGroups) { assert(group.entries.length > 0, `alias group "${group.group}" 不能为空`); for (const entry of group.entries) { assert(entry.examples.length > 0, `alias "${entry.source}" 必须提供至少一个 example`); for (const example of entry.examples) { assert(!seenInputs.has(example.input), `重复的 alias example 输入: ${example.input}`); seenInputs.add(example.input); const actual = normalizeRoutePathForPermission(example.input); assert( actual === example.output, `alias example 校验失败: ${example.input} -> ${actual},预期 ${example.output}`, ); } } } } function runNoopChecks() { const unaffectedPaths = [ '/documents', '/files/upload', '/cross-checking/upload', '/document-types', ]; for (const path of unaffectedPaths) { const actual = normalizeRoutePathForPermission(path); assert(actual === path, `不应被改写的路径发生了变化: ${path} -> ${actual}`); } } function runMetadataChecks() { const aliases = listPermissionRouteAliases(); const signatureSet = new Set(); for (const alias of aliases) { const signature = `${alias.source}=>${alias.target}`; assert(!signatureSet.has(signature), `重复的 alias 定义: ${signature}`); signatureSet.add(signature); assert(alias.note.trim().length > 0, `alias "${alias.source}" 缺少 note`); } } try { runAliasExampleChecks(); runNoopChecks(); runMetadataChecks(); console.log( `route alias checks passed: ${permissionRouteAliasGroups.length} groups, ${listPermissionRouteAliases().length} aliases`, ); } catch (error) { console.error(`route alias checks failed: ${error.message}`); process.exit(1); }