import { pipe } from "fp-ts/lib/function";
import * as id128 from "id128";
import * as codec from "io-ts/lib/Codec";
import * as decoder from "io-ts/lib/Decoder";
import { buffer } from "./buffer"; // assume the implementation of a codec.Codec<unknown, Buffer, Buffer>
import { ULID } from "./ulid"; // assume the implementation of a codec.Codec<unknown, string, ULID> for a brand ULID type
export const UlidFromBuffer: codec.Codec<unknown, Buffer, ULID> = codec.make(
pipe(
buffer,
decoder.parse((a) => {
try {
return decoder.success(id128.Ulid.construct(a).toCanonical());
} catch (e) {
return decoder.failure(a, "a ULID buffer");
}
}),
decoder.compose(ULID)
),
{ encode: (a) => Buffer.from(id128.Ulid.fromCanonical(a).bytes) }
);
import { pipe } from "fp-ts/lib/function";
import * as id128 from "id128";
import * as codec from "io-ts/lib/Codec";
import * as decoder from "io-ts/lib/Decoder";
import { buffer } from "./buffer"; // assume the implementation of a codec.Codec<unknown, Buffer, Buffer>
import { ULID } from "./ulid"; // assume the implementation of a codec.Codec<unknown, string, ULID> for a brand ULID type
export const UlidFromBuffer: codec.Codec<unknown, Buffer, ULID> = codec.make(
pipe(
buffer,
decoder.parse((a) => {
try {
return decoder.success(id128.Ulid.construct(a).toCanonical());
} catch (e) {
return decoder.failure(a, "a ULID buffer");
}
}),
decoder.compose(ULID)
),
{ encode: (a) => Buffer.from(id128.Ulid.fromCanonical(a).bytes) }
);