/* eslint-env node */ import fs from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' const currentDir = path.dirname(fileURLToPath(import.meta.url)) const rootDir = path.resolve(currentDir, '../../../..') const files = { page: path.resolve(rootDir, 'views/steady/checksquare/index.vue'), staticRouter: path.resolve(rootDir, 'routers/modules/staticRouter.ts'), dynamicRouter: path.resolve(rootDir, 'routers/modules/dynamicRouter.ts'), authStore: path.resolve(rootDir, 'stores/modules/auth.ts') } const read = file => fs.readFileSync(file, 'utf8') const exists = file => fs.existsSync(file) const checks = [ ['checksquare page exists', () => exists(files.page)], ['static router registers /checksquare/index', () => /path:\s*'\/checksquare\/index'/.test(read(files.staticRouter))], ['static route name is checksquare', () => /name:\s*'checksquare'/.test(read(files.staticRouter))], [ 'static router imports checksquare page', () => /@\/views\/steady\/checksquare\/index\.vue/.test(read(files.staticRouter)) ], [ 'static router aliases steady check-square to checksquare', () => /\/steady\/check-square[\s\S]*\/steady\/checksquare/.test(read(files.staticRouter)) ], [ 'dynamic router aliases check-square to checksquare', () => /\/steady\/check-square[\s\S]*\/steady\/checksquare/.test(read(files.dynamicRouter)) ], [ 'dynamic router keeps checksquare static route from being overwritten', () => /STATIC_ROUTE_NAMES[\s\S]*'checksquare'/.test(read(files.dynamicRouter)) ], [ 'auth normalizes backend checksquare menu to static entry', () => /isChecksquareMenu[\s\S]*menu\.path\s*=\s*'\/checksquare\/index'/.test(read(files.authStore)) ], [ 'auth treats 数据验证 menu title as checksquare', () => /isChecksquareMenu[\s\S]*title\.includes\('数据验证'\)/.test(read(files.authStore)) ], [ 'business menu path resolver handles checksquare', () => /isChecksquareMenu\(menu\)[\s\S]*return\s+'\/checksquare\/index'/.test(read(files.authStore)) ] ] const failures = checks.filter(([, check]) => !check()).map(([name]) => name) if (failures.length) { console.error('checksquare route contract failed:') for (const failure of failures) { console.error(`- ${failure}`) } process.exit(1) } console.log('checksquare route contract passed')