@se-puu/qpack
Version:
Quick serializer and de-serializer
48 lines (47 loc) • 1.68 kB
TypeScript
import { QDecoder } from "../decoder/decoder";
import { createDecoder } from "../decoder/handler-map";
import { QEncoder } from "../encoder/encoder";
import { createEncoder } from "../encoder/handler-map";
export type ExtEncoderFunc<T extends object> = (encoder: QEncoder, data: T) => void;
export type ExtDecoderFunc<T extends object> = (encoder: QDecoder) => T;
export type ExtEntry<T extends object> = {
readonly extCode: number;
encode: ExtEncoderFunc<T>;
decode: ExtDecoderFunc<T>;
};
export type ExtRegisterOption = {
overwriteEncoder?: boolean;
overwriteDecoder?: boolean;
};
/**
* Extension Registry for custom encoder and decoder.
* @class
* @since 1.0.0
*/
export declare class ExtRegistry {
/** reversed system extension code for system. */
static readonly reversedMaxNo = 1000;
__encoder: ReturnType<typeof createEncoder>;
__decoder: ReturnType<typeof createDecoder>;
__ext: ExtEntry<object>[];
/**
* create a new extension handler
* @returns {ExtRegistry} The new extension registry
*/
static create(): ExtRegistry;
/**
* Register a new extension entry.
* @param dataClass The extension entry that have responsibility for encoding and decoding.
* @param option option for extension entry
* @returns {boolean} true if success, false if failed.
* @since 1.0.0
*/
register<T extends object>(dataClass: ExtEntry<T>, option?: ExtRegisterOption): boolean;
/**
* Unregister a extension entry
* @param extNo The extension number
* @returns {boolean} true if success, false if failed.
* @since 1.0.0
*/
unregister(extNo: number): boolean;
}