mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-10-14 21:20:48 +08:00
* refactor(ipc): generate bindings with Specta * fix(profile): project IPC inputs to consumed fields * fix(events): remove unused refresh payloads * fix(webdav): return only consumed backup metadata * fix(network): trim unused interface metadata * fix(sysinfo): return only displayed system fields * chore(knip): check generated runtime exports * fix(proxy): confirm runtime chain updates before UI changes * fix(clipboard): propagate proxy environment copy failures * refactor(dns): remove ignored runtime patch * refactor(core): trim unused upgrade response fields * refactor(ipc): avoid redundant response copies * refactor(proxy): clarify automatic proxy query naming * chore(tests): remove added IPC regression tests * refactor(ipc): enforce typed command boundaries * chore(contract): check generated bindings before push * refactor(ipc): remove unused proxy liveness payloads
35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
import path from 'node:path'
|
|
|
|
import { ESLint } from 'eslint'
|
|
|
|
const ROOT = path.resolve(import.meta.dirname, '..')
|
|
const gates = process.argv.slice(2)
|
|
if (
|
|
!gates.length ||
|
|
gates.some((gate) => !['listen', 'emit', 'invoke'].includes(gate))
|
|
) {
|
|
console.error('usage: check-architecture.mjs <gate>... (listen|emit|invoke)')
|
|
process.exit(2)
|
|
}
|
|
|
|
// All IPC boundaries use the lint configuration, including when callers request a legacy gate.
|
|
const eslint = new ESLint({ cwd: ROOT, allowInlineConfig: false })
|
|
const results = await eslint.lintFiles(['src'])
|
|
const boundaryRules = new Set([
|
|
'no-restricted-imports',
|
|
'no-restricted-syntax',
|
|
'@typescript-eslint/no-floating-promises',
|
|
])
|
|
const violations = results.flatMap((result) =>
|
|
result.messages
|
|
.filter((message) => message.fatal || boundaryRules.has(message.ruleId))
|
|
.map((message) => ({ file: result.filePath, ...message })),
|
|
)
|
|
for (const violation of violations) {
|
|
console.error(
|
|
`[arch] ${path.relative(ROOT, violation.file)}:${violation.line}: ${violation.message}`,
|
|
)
|
|
}
|
|
if (violations.length) process.exitCode = 1
|
|
else console.log('[arch] no violations')
|