1
0

refactor: 清理 checker 遗留边界

This commit is contained in:
2026-05-13 12:53:03 +08:00
parent 7b20b59b79
commit aade0bbff7
6 changed files with 85 additions and 196 deletions

View File

@@ -35,7 +35,7 @@ export class CommandChecker implements Checker {
try {
proc = Bun.spawn([t.command.exec, ...t.command.args], {
cwd: t.command.cwd,
env: { ...process.env, ...t.command.env },
env: t.command.env,
stderr: "pipe",
stdin: "ignore",
stdout: "pipe",

View File

@@ -1,9 +1,7 @@
import type { HeaderExpect, HttpExpectConfig } from "../../types";
import type { HeaderExpect } from "../../types";
import type { ExpectResult } from "../shared/duration";
import { checkBodyExpect } from "../shared/body";
import { checkDuration } from "../shared/duration";
import { errorFailure, mismatchFailure } from "../shared/failure";
import { mismatchFailure } from "../shared/failure";
import { applyOperator } from "../shared/operator";
export function checkHeaders(
@@ -45,40 +43,6 @@ export function checkHeaders(
return { failure: null, matched: true };
}
export function checkHttpExpect(
statusCode: number,
headers: Record<string, string>,
body: null | string,
durationMs: number,
expect?: HttpExpectConfig,
): ExpectResult {
if (!expect) {
return checkStatus(statusCode, [200]);
}
const statusResult = checkStatus(statusCode, expect.status ?? [200]);
if (!statusResult.matched) return statusResult;
const headersResult = checkHeaders(headers, expect.headers);
if (!headersResult.matched) return headersResult;
if (expect.body && expect.body.length > 0) {
if (body === null) {
return {
failure: errorFailure("body", "body", "body is null but body rules are configured"),
matched: false,
};
}
const bodyResult = checkBodyExpect(body, expect.body);
if (!bodyResult.matched) return bodyResult;
}
const durationResult = checkDuration(durationMs, expect.maxDurationMs);
if (!durationResult.matched) return durationResult;
return { failure: null, matched: true };
}
export function checkStatus(statusCode: number, allowed: Array<number | string>): ExpectResult {
const matched = allowed.some((pattern) => {
if (typeof pattern === "number") return statusCode === pattern;

View File

@@ -277,8 +277,9 @@ export class ProbeStore {
const tx = this.db.transaction(() => {
for (const t of targets) {
const type = t.type;
const target = buildTargetDisplay(t);
const config = buildTargetConfig(t);
const serialized = checkerRegistry.get(t.type).serialize(t);
const target = serialized.target;
const config = serialized.config;
const expect = t.expect ? JSON.stringify(t.expect) : null;
if (existingMap.has(t.name)) {
@@ -299,14 +300,6 @@ export class ProbeStore {
}
}
function buildTargetConfig(t: ResolvedTarget): string {
return checkerRegistry.get(t.type).serialize(t).config;
}
function buildTargetDisplay(t: ResolvedTarget): string {
return checkerRegistry.get(t.type).serialize(t).target;
}
function ensureDir(dir: string): void {
try {
fsMkdirSync(dir, { recursive: true });