


















@@ -2,24 +2,27 @@ import { describe, expect, it } from "vitest";
22import { parseLogLine } from "./logs.ts";
3344describe("parseLogLine", () => {
5-it("prefers the human-readable message field when structured data is stored in slot 1", () => {
6-const line = JSON.stringify({
7-0: '{"subsystem":"gateway/ws"}',
8-1: {
9-cause: "unauthorized",
10-authReason: "password_missing",
11-},
12-2: "closed before connect conn=abc code=4008 reason=connect failed",
13-_meta: {
14-date: "2026-03-13T19:07:12.128Z",
15-logLevelName: "WARN",
16-},
17-time: "2026-03-13T14:07:12.138-05:00",
18-});
5+it("strips ANSI escape sequences from rendered log fields", () => {
6+const parsed = parseLogLine(
7+JSON.stringify({
8+"0": "\u001b[36mgateway\u001b[39m",
9+"1": "\u001b[31mfailed\u001b[39m to start",
10+_meta: { logLevelName: "error" },
11+}),
12+);
191320-const parsed = parseLogLine(line);
21-expect(parsed.level).toBe("warn");
22-expect(parsed.subsystem).toBe("gateway/ws");
23-expect(parsed.message).toBe("closed before connect conn=abc code=4008 reason=connect failed");
14+expect(parsed.subsystem).toBe("gateway");
15+expect(parsed.message).toBe("failed to start");
16+expect(parsed.raw).toContain("\\u001b");
17+});
18+19+it("strips ANSI escape sequences from plain log lines", () => {
20+expect(parseLogLine("\u001b[33mwarning\u001b[39m").message).toBe("warning");
21+});
22+23+it("strips OSC hyperlink escape payloads from displayed log fields", () => {
24+const link = "\u001b]8;;https://example.test\u0007docs\u001b]8;;\u0007";
25+26+expect(parseLogLine(`${link} ready`).message).toBe("docs ready");
2427});
2528});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。