isobmff-inspector
Version:
Simple ISOBMFF parser, compatible with JavaScript and Node.JS
190 lines • 5.72 kB
TypeScript
export type BoxParserFields = {
[key: string]: unknown;
};
export type ParsedFieldLocation = {
offset?: number | undefined;
byteLength?: number | undefined;
};
export type ParsedNumberField = ParsedFieldLocation & {
kind: "number";
value: number;
};
export type ParsedBigIntField = ParsedFieldLocation & {
kind: "bigint";
value: bigint;
};
export type ParsedStringField = ParsedFieldLocation & {
kind: "string";
value: string;
};
export type ParsedBytesField = ParsedFieldLocation & {
kind: "bytes";
value: string;
};
export type ParsedBooleanField = ParsedFieldLocation & {
kind: "boolean";
value: boolean;
};
export type ParsedNullField = ParsedFieldLocation & {
kind: "null";
value: null;
};
export type ParsedFixedPointField = ParsedFieldLocation & {
kind: "fixed-point";
value: number;
raw: number;
format: string;
signed: boolean;
bits: number;
};
export type ParsedDateField = ParsedFieldLocation & {
kind: "date";
value: number | bigint;
date: string | null;
epoch: string;
unit: "seconds";
};
export type ParsedBitsFieldPartDefinition = {
key: string;
bits: number;
};
export type ParsedBitsFieldPart = {
key: string;
value: number;
bits: number;
shift: number;
mask: number;
};
export type ParsedBitsField = ParsedFieldLocation & {
kind: "bits";
value: number;
raw: number;
bits: number;
fields: ParsedBitsFieldPart[];
};
export type ParsedFlagsFieldEntry = {
key: string;
value: boolean;
mask: number;
};
export type ParsedFlagsField = ParsedFieldLocation & {
kind: "flags";
value: number;
raw: number;
bits: number;
flags: ParsedFlagsFieldEntry[];
};
export type ParsedArrayField = ParsedFieldLocation & {
kind: "array";
items: ParsedField[];
};
export type ParsedStructField = ParsedFieldLocation & {
kind: "struct";
fields: ParsedBoxValue[];
layout?: string;
};
export type ParsedField = ParsedNumberField | ParsedBigIntField | ParsedStringField | ParsedBytesField | ParsedBooleanField | ParsedNullField | ParsedFixedPointField | ParsedDateField | ParsedBitsField | ParsedFlagsField | ParsedArrayField | ParsedStructField;
export type ParsedBoxValue = {
key: string;
description?: string;
} & ParsedField;
export type ParsedBoxIssue = {
severity: "warning" | "error";
message: string;
};
export type ParsedBox = {
type: string;
offset: number;
size: number;
actualSize: number;
headerSize: number;
sizeField?: ("size" | "largeSize" | "extendsToEnd") | undefined;
values: ParsedBoxValue[];
uuid?: string | undefined;
name?: string | undefined;
description?: string | undefined;
children?: ParsedBox[] | undefined;
issues: ParsedBoxIssue[];
};
export type ParseOptions = {
format?: ("full" | "simple") | undefined;
};
/**
* Metadata describing a payload chunk forwarded while progressively consuming a
* box payload.
*/
export type BoxPayloadChunkInfo = {
path: string[];
type: string;
boxOffset: number;
boxSize: number;
headerSize: number;
sizeField?: ("size" | "largeSize" | "extendsToEnd") | undefined;
uuid?: string | undefined;
payloadOffset: number;
payloadAbsoluteOffset: number;
};
export type BoxPayloadChunkCallback = (info: BoxPayloadChunkInfo, chunk: Uint8Array) => void | Promise<void>;
export type ParseEventsPayloadOptions = {
include: string[];
onChunk: BoxPayloadChunkCallback;
};
export type ParseEventsOptions = {
payloads?: ParseEventsPayloadOptions | undefined;
};
export type SimpleParsedBox = {
type: string;
offset: number;
size: number;
actualSize: number;
headerSize: number;
sizeField?: ("size" | "largeSize" | "extendsToEnd") | undefined;
uuid?: string | undefined;
fields: Record<string, unknown>;
children?: SimpleParsedBox[] | undefined;
issues?: ParsedBoxIssue[] | undefined;
};
/**
* Emitted as soon as a box header has been parsed.
*/
export type ParsedBoxStartEvent = {
event: "box-start";
path: string[];
type: string;
offset: number;
size: number;
headerSize: number;
sizeField?: ("size" | "largeSize" | "extendsToEnd") | undefined;
uuid?: string | undefined;
};
/**
* Emitted when a box has been parsed, or when parsing cannot continue after a
* malformed partial box.
*/
export type ParsedBoxCompleteEvent = {
event: "box-complete";
path: string[];
box: ParsedBox;
};
export type ParsedBoxParseEvent = ParsedBoxStartEvent | ParsedBoxCompleteEvent;
export type ISOBMFFByteChunk = ArrayBuffer | ArrayBufferView;
/**
* Progressive byte sources supported by the public entry point.
*
* This intentionally mirrors usual browser and Node.js APIs:
* - Blob/File inputs expose stream() and arrayBuffer()
* - fetch Request/Response objects expose body and arrayBuffer()
* - Node.js readable streams are AsyncIterable byte chunks
*/
export type ISOBMFFBlobLike = {
stream?: (() => ReadableStream<ISOBMFFByteChunk>) | undefined;
arrayBuffer?: (() => Promise<ArrayBuffer>) | undefined;
};
export type ISOBMFFBodyLike = {
body?: (ReadableStream<ISOBMFFByteChunk> | AsyncIterable<ISOBMFFByteChunk> | Iterable<ISOBMFFByteChunk> | null) | undefined;
stream?: (() => ReadableStream<ISOBMFFByteChunk>) | undefined;
arrayBuffer?: (() => Promise<ArrayBuffer>) | undefined;
};
export type ISOBMFFProgressiveInput = ReadableStream<ISOBMFFByteChunk> | AsyncIterable<ISOBMFFByteChunk> | Iterable<ISOBMFFByteChunk> | ISOBMFFBlobLike | ISOBMFFBodyLike;
export type ISOBMFFInput = ISOBMFFByteChunk | ISOBMFFProgressiveInput;
//# sourceMappingURL=types.d.ts.map