type alias Refiner

A refiner that transforms decoded values into refined types and vice versa.

Examples

Example 1

import { assertEquals } from "@std/assert";
import type { Context } from "@hertzg/binstruct";
import { createContext } from "@hertzg/binstruct";

const booleanRefiner: Refiner<number, boolean, []> = {
  refine: (unrefined: number, _context: Context) => unrefined !== 0,
  unrefine: (refined: boolean, _context: Context) => refined ? 1 : 0,
};

const ctx = createContext("decode");
assertEquals(booleanRefiner.refine(1, ctx), true);
assertEquals(booleanRefiner.refine(0, ctx), false);
assertEquals(booleanRefiner.unrefine(true, ctx), 1);
assertEquals(booleanRefiner.unrefine(false, ctx), 0);

Type Parameters

TUnrefined

The original decoded type from the base coder

TRefined

The refined type after transformation

TArgs extends unknown[] = []

Additional arguments passed to the refiner functions

Properties

refine: (
unrefined: TUnrefined,
context: Context,
...args: TArgs
) => TRefined

Transforms a decoded value into a refined value.

unrefine: (
refined: TRefined,
context: Context,
...args: TArgs
) => TUnrefined

Transforms a refined value back to the original decoded format.

Usage

import { type Refiner } from "refine/refine.ts";