// ets_tracing: off import type { Show } from "./definitions.js" export function struct>(shows: { [K in keyof O]: Show }): Show { return { show: (s) => `{ ${Object.keys(shows) .map((k) => `${k}: ${shows[k]!.show(s[k])}`) .join(", ")} }` } } export function tuple>>( ...shows: T ): Show<{ [K in keyof T]: T[K] extends Show ? A : never }> { return { show: (t) => `[${t.map((a, i) => shows[i]!.show(a)).join(", ")}]` } } export const boolean: Show = { show: (a) => JSON.stringify(a) } export const number: Show = { show: (a) => JSON.stringify(a) } export const string: Show = { show: (a) => JSON.stringify(a) }