import { isPrimitive, isNull } from "../safe"; export class Converter { static readonly default = new Converter(); convert(value: any, pattern: string) { if (pattern && pattern.toLocaleLowerCase() === "json") { const seen = []; return JSON.stringify(value, (k, v) => { if (!isPrimitive(v)) { const id = seen.indexOf(v); if (id >= 0) return "@ref-" + id; else { seen.push(v); return v; } } else { return v; } }, 2); } else if (isNull(value)) { return ""; } else if (value instanceof Date) { return value.toISOString(); } else { return value.toString(); } } }