lexicodec
Version:
A library for lexicographical encoding.
32 lines (31 loc) • 1.32 kB
TypeScript
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;