UNPKG

lexicodec

Version:

A library for lexicographical encoding.

32 lines (31 loc) 1.32 kB
export type Encoding<T> = { /** Should this value use this encoding? */ match: (value: unknown) => boolean; encode: (value: T, encode: (value: any) => string) => string; decode: (value: string, decode: (value: string) => any) => T; /** This is for in-memory comparison without serializing. */ compare: (a: T, b: T, compare: (a: any, b: any) => -1 | 0 | 1) => -1 | 0 | 1; }; export declare const NullEncoding: Encoding<null>; export declare const BooleanEncoding: Encoding<boolean>; export declare const StringEncoding: Encoding<string>; export declare const NumberEncoding: Encoding<number>; export declare const ArrayEncoding: Encoding<any[]>; export declare const ObjectEncoding: Encoding<object>; export declare const ObjectLegacyEncoding: Encoding<object>; export declare const MIN: unique symbol; export declare const MAX: unique symbol; export declare const MinEncoding: Encoding<typeof MIN>; export declare const MaxEncoding: Encoding<typeof MAX>; export declare class Codec { encodings: { [prefixByte: string]: Encoding<any>; }; constructor(encodings: { [prefixByte: string]: Encoding<any>; }); encode: (value: any) => string; decode: (value: string) => any; compare: (a: any, b: any) => -1 | 0 | 1; } export declare const jsonCodec: Codec;