taglib-wasm
Version:
TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps
53 lines • 1.83 kB
TypeScript
/**
* @fileoverview Adapts Embind-generated FileHandle to the data-oriented interface.
*
* Embind objects store methods on the prototype, so `{ ...raw }` won't copy them.
* A Proxy forwards all property access to the raw Embind object by default,
* overriding only getTagData, setTagData, and getAudioProperties.
*/
import type { FileHandle } from "../wasm.js";
/** @internal Embind-generated TagWrapper — methods on C++ prototype. */
interface EmbindTagWrapper {
title(): string;
artist(): string;
album(): string;
comment(): string;
genre(): string;
year(): number;
track(): number;
setTitle(v: string): void;
setArtist(v: string): void;
setAlbum(v: string): void;
setComment(v: string): void;
setGenre(v: string): void;
setYear(v: number): void;
setTrack(v: number): void;
}
/** @internal Embind-generated AudioPropertiesWrapper — methods on C++ prototype. */
interface EmbindAudioPropertiesWrapper {
lengthInSeconds(): number;
lengthInMilliseconds(): number;
bitrate(): number;
sampleRate(): number;
channels(): number;
bitsPerSample(): number;
codec(): string;
containerFormat(): string;
isLossless(): boolean;
mpegVersion(): number;
mpegLayer(): number;
isEncrypted(): boolean;
formatVersion(): number;
bitrateMode(): string;
outputGainDb(): number;
}
/** @internal The raw Embind FileHandle before adaptation. */
export interface EmbindFileHandle {
getTag(): EmbindTagWrapper;
getAudioProperties(): EmbindAudioPropertiesWrapper | null;
[key: string]: unknown;
}
/** @internal Wrap an Embind FileHandle with a Proxy for the data-oriented interface. */
export declare function wrapEmbindHandle(raw: EmbindFileHandle): FileHandle;
export {};
//# sourceMappingURL=embind-adapter.d.ts.map