UNPKG

isobmff-inspector

Version:

Simple ISOBMFF parser, compatible with JavaScript and Node.JS

190 lines 5.72 kB
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