/* 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 pageFile = path.join(currentDir, '..', 'index.vue') const componentDir = path.join(currentDir, '..', 'components') const apiFile = path.resolve(currentDir, '../../../../api/steady/steadyDataView/index.ts') const interfaceFile = path.resolve(currentDir, '../../../../api/steady/steadyDataView/interface/index.ts') const source = fs.readFileSync(pageFile, 'utf8') const componentSource = fs.existsSync(componentDir) ? fs .readdirSync(componentDir) .filter(file => file.endsWith('.vue')) .map(file => fs.readFileSync(path.join(componentDir, file), 'utf8')) .join('\n') : '' const readComponent = file => fs.readFileSync(path.join(componentDir, file), 'utf8') const toolbarSource = readComponent('SteadyTrendToolbar.vue') const chartPanelSource = readComponent('SteadyTrendChartPanel.vue') const floatingPanelSource = readComponent('SteadyIndicatorFloatingPanel.vue') const indicatorTreeSource = readComponent('SteadyIndicatorTree.vue') const viewSource = `${source}\n${componentSource}` const apiSource = fs.readFileSync(apiFile, 'utf8') const interfaceSource = fs.readFileSync(interfaceFile, 'utf8') const forbiddenPatterns = [ ['data detail tab is removed', /数据明细|name="detail"|SteadyDataTablePanel/, source], ['detail ProTable is removed', /buildSteadyDataQueryParams|SteadyDataSearchParams/, source], ['trend summary panel is removed', /SteadyTrendSummaryPanel|trendSummary|loading\.summary/, source], [ 'page detail API is removed', /getSteadyDataPage|getSteadyDataDetail|getSteadyDataTemplates|\/steady\/data-view\/page|\/steady\/data-view\/detail|\/steady\/data-view\/templates/, apiSource ], ['trend summary API is removed', /getSteadyTrendSummary|\/steady\/data-view\/trend\/summary/, apiSource], [ 'page detail types are removed', /PageResult|SteadyDataPageParams|SteadyDataDetailParams|SteadyDataTemplate|SteadyDataRecord/, interfaceSource ], [ 'trend summary types are removed', /SteadyTrendSummary|SteadyTrendSummaryItem/, interfaceSource ], ['chart panel title text is removed', /panel-title/, chartPanelSource], ['collapsed indicator vertical trigger is removed', /indicator-collapsed-trigger/, floatingPanelSource], ['collapsed indicator label is removed', /collapsedLabel/, floatingPanelSource] ] const requiredPatterns = [ ['page defines SteadyDataView component name', /name:\s*'SteadyDataView'/, source], ['page renders extracted trend workbench', /