polen
Version:
A framework for delightful GraphQL developer portals
19 lines (15 loc) • 500 B
text/typescript
import type { Superjson } from '#dep/superjson/index'
import type { Json } from '@wollybeard/kit'
export interface Codec<I, O extends Json.Value> {
name: string
transformer: Superjson.CustomTransformer<I, O>
}
export const create = <I, O extends Json.Value>(codec: Codec<I, O>): Codec<I, O> => {
return codec
}
export const register = <I, O extends Json.Value>(
superjson: Superjson.SuperJSON,
codec: Codec<I, O>,
): void => {
superjson.registerCustom(codec.transformer, codec.name)
}