Module

x/msgpack/decode.ts

msgpack-javascript ported to deno
Latest
File
import { ExtensionCodecType } from "./ExtensionCodec.ts";import { Decoder } from "./Decoder.ts";import { ContextOf, SplitUndefined } from "./context.ts";
export type DecodeOptions<ContextType = undefined> = & Readonly< Partial<{ extensionCodec: ExtensionCodecType<ContextType>;
/** * Maximum string length. * Default to 4_294_967_295 (UINT32_MAX). */ maxStrLength: number; /** * Maximum binary length. * Default to 4_294_967_295 (UINT32_MAX). */ maxBinLength: number; /** * Maximum array length. * Default to 4_294_967_295 (UINT32_MAX). */ maxArrayLength: number; /** * Maximum map length. * Default to 4_294_967_295 (UINT32_MAX). */ maxMapLength: number; /** * Maximum extension length. * Default to 4_294_967_295 (UINT32_MAX). */ maxExtLength: number; }> > & ContextOf<ContextType>;
export const defaultDecodeOptions: DecodeOptions = {};
/** * It decodes a MessagePack-encoded buffer. * * This is a synchronous decoding function. See other variants for asynchronous decoding: `decodeAsync()`, `decodeStream()`, `decodeArrayStream()`. */export function decode<ContextType>( buffer: ArrayLike<number> | ArrayBuffer, options: DecodeOptions<SplitUndefined<ContextType>> = // deno-lint-ignore no-explicit-any defaultDecodeOptions as any,): unknown { const decoder = new Decoder<ContextType>( options.extensionCodec, // deno-lint-ignore no-explicit-any (options as typeof options & { context: any }).context, options.maxStrLength, options.maxBinLength, options.maxArrayLength, options.maxMapLength, options.maxExtLength, ); return decoder.decode(buffer);}