taglib-wasm
Version:
TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps
68 lines • 3.24 kB
TypeScript
import type { AudioDynamics } from "../folder-api/types.js";
import type { AudioFileInput, AudioProperties, ExtendedTag } from "../types.js";
/** Configuration for batch processing operations. */
export interface BatchOptions {
concurrency?: number;
continueOnError?: boolean;
onProgress?: (processed: number, total: number, currentFile: string) => void;
/** AbortSignal to cancel the batch operation between chunks. */
signal?: AbortSignal;
}
/** Discriminated union result for a single file in a batch operation. */
export type BatchItem<T> = {
status: "ok";
path: string;
data: T;
} | {
status: "error";
path: string;
error: Error;
};
/** Result of a batch operation containing all items and timing. */
export interface BatchResult<T> {
items: BatchItem<T>[];
duration: number;
}
/**
* Read tags from multiple files with configurable concurrency.
*
* @param files - Array of file paths, Uint8Arrays, ArrayBuffers, File objects, or NamedAudioInputs.
* @param options - Batch processing options (concurrency, error handling, progress).
* @returns Batch result containing a `BatchItem` per file and total duration in ms.
* @throws If `continueOnError` is `false` and any file fails to process.
*/
export declare function readTagsBatch(files: AudioFileInput[], options?: BatchOptions): Promise<BatchResult<ExtendedTag>>;
/**
* Read audio properties from multiple files with configurable concurrency.
*
* @param files - Array of file paths, Uint8Arrays, ArrayBuffers, File objects, or NamedAudioInputs.
* @param options - Batch processing options (concurrency, error handling, progress).
* @returns Batch result containing a `BatchItem` per file and total duration in ms.
* @throws If `continueOnError` is `false` and any file fails to process.
*/
export declare function readPropertiesBatch(files: AudioFileInput[], options?: BatchOptions): Promise<BatchResult<AudioProperties | undefined>>;
/** Complete metadata for a single audio file including tags, properties, cover art presence, and audio dynamics. */
export interface FileMetadata {
tags: ExtendedTag;
properties: AudioProperties | undefined;
hasCoverArt: boolean;
dynamics?: AudioDynamics;
}
/**
* Read complete metadata (tags, properties, cover art, dynamics) from a single file.
*
* @param file - A file path, Uint8Array, ArrayBuffer, File object, or NamedAudioInput.
* @returns The file's complete metadata.
* @throws `InvalidFormatError` if the file is corrupted or in an unsupported format.
*/
export declare function readMetadata(file: AudioFileInput): Promise<FileMetadata>;
/**
* Read complete metadata from multiple files with configurable concurrency.
*
* @param files - Array of file paths, Uint8Arrays, ArrayBuffers, File objects, or NamedAudioInputs.
* @param options - Batch processing options (concurrency, error handling, progress).
* @returns Batch result containing a `BatchItem` per file and total duration in ms.
* @throws If `continueOnError` is `false` and any file fails to process.
*/
export declare function readMetadataBatch(files: AudioFileInput[], options?: BatchOptions): Promise<BatchResult<FileMetadata>>;
//# sourceMappingURL=batch-operations.d.ts.map