设计tracer

This commit is contained in:
2025-11-10 22:39:27 +08:00
parent 8f5493eaf0
commit 0ade49a589

View File

@@ -3,20 +3,17 @@ import { Registry } from "../registry";
export interface ArrayTracerOption<T> { export interface ArrayTracerOption<T> {
description: string; description: string;
serializeFn?: (value: T) => string;
} }
export class ArrayTracer<T> { export class ArrayTracer<T> {
private tracerId: string; private tracerId: string;
private serializeFn?: (value: T) => string;
private constructor(option: ArrayTracerOption<T>) { private constructor() {
this.tracerId = crypto.randomUUID(); this.tracerId = crypto.randomUUID();
this.serializeFn = option.serializeFn;
} }
public static define<T>(option: ArrayTracerOption<T>): ArrayTracer<T> { public static define<T>(option: ArrayTracerOption<T>): ArrayTracer<T> {
const arrayTracer = new ArrayTracer(option); const arrayTracer = new ArrayTracer();
const registry = Registry.getInstance(); const registry = Registry.getInstance();
registry.register("ArrayTracer", arrayTracer.tracerId); registry.register("ArrayTracer", arrayTracer.tracerId);
const commander = Commander.getInstance(); const commander = Commander.getInstance();