taglib-wasm
Version:
TagLib for TypeScript platforms: Deno, Node.js, Bun, Electron, browsers, and Cloudflare Workers
1,146 lines • 40.9 kB
TypeScript
/**
* Comprehensive property definitions with metadata for all supported audio metadata fields.
* This is the single source of truth for all property information including descriptions,
* types, format support, and format-specific mappings.
*
* @example
* ```typescript
* import { PROPERTIES, PropertyKey } from 'taglib-wasm/constants';
*
* // Type-safe property access with rich metadata
* const titleProp = PROPERTIES.TITLE;
* console.log(titleProp.description); // "The title of the track"
* console.log(titleProp.type); // "string"
* console.log(titleProp.supportedFormats); // ["ID3v2", "MP4", "Vorbis", "WAV"]
*
* // Use with typed methods
* const title = file.getProperty('TITLE'); // TypeScript knows this returns string | undefined
* file.setProperty('TRACK_NUMBER', 5); // TypeScript knows this expects number
* ```
*/
export declare const PROPERTIES: {
readonly TITLE: {
readonly key: "TITLE";
readonly description: "The title of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TIT2";
};
readonly vorbis: "TITLE";
readonly mp4: "©nam";
readonly wav: "INAM";
};
};
readonly ARTIST: {
readonly key: "ARTIST";
readonly description: "The primary performer(s) of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPE1";
};
readonly vorbis: "ARTIST";
readonly mp4: "©ART";
readonly wav: "IART";
};
};
readonly ALBUM: {
readonly key: "ALBUM";
readonly description: "The album/collection name";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TALB";
};
readonly vorbis: "ALBUM";
readonly mp4: "©alb";
readonly wav: "IPRD";
};
};
readonly DATE: {
readonly key: "DATE";
readonly description: "The date of recording (typically year)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TDRC";
};
readonly vorbis: "DATE";
readonly mp4: "©day";
readonly wav: "ICRD";
};
};
readonly TRACKNUMBER: {
readonly key: "TRACKNUMBER";
readonly description: "The track number within the album";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TRCK";
};
readonly vorbis: "TRACKNUMBER";
readonly mp4: "trkn";
readonly wav: "ITRK";
};
};
readonly GENRE: {
readonly key: "GENRE";
readonly description: "The musical genre";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TCON";
};
readonly vorbis: "GENRE";
readonly mp4: "©gen";
readonly wav: "IGNR";
};
};
readonly COMMENT: {
readonly key: "COMMENT";
readonly description: "Comments or notes about the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "COMM";
};
readonly vorbis: "COMMENT";
readonly mp4: "©cmt";
readonly wav: "ICMT";
};
};
readonly ALBUMARTIST: {
readonly key: "ALBUMARTIST";
readonly description: "The album artist (band/orchestra/ensemble)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPE2";
};
readonly vorbis: "ALBUMARTIST";
readonly mp4: "aART";
};
};
readonly COMPOSER: {
readonly key: "COMPOSER";
readonly description: "The original composer(s) of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TCOM";
};
readonly vorbis: "COMPOSER";
readonly mp4: "©wrt";
};
};
readonly COPYRIGHT: {
readonly key: "COPYRIGHT";
readonly description: "Copyright information";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "Vorbis"];
readonly mappings: {
readonly vorbis: "COPYRIGHT";
};
};
readonly ENCODEDBY: {
readonly key: "ENCODEDBY";
readonly description: "The encoding software or person";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "Vorbis"];
readonly mappings: {
readonly vorbis: "ENCODEDBY";
};
};
readonly DISCNUMBER: {
readonly key: "DISCNUMBER";
readonly description: "The disc number for multi-disc sets";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPOS";
};
readonly vorbis: "DISCNUMBER";
readonly mp4: "disk";
};
};
readonly BPM: {
readonly key: "BPM";
readonly description: "Beats per minute";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TBPM";
};
readonly vorbis: "BPM";
readonly mp4: "tmpo";
};
};
readonly TITLESORT: {
readonly key: "TITLESORT";
readonly description: "Sort name for title (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOT";
};
readonly vorbis: "TITLESORT";
readonly mp4: "sonm";
};
};
readonly ARTISTSORT: {
readonly key: "ARTISTSORT";
readonly description: "Sort name for artist (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOP";
};
readonly vorbis: "ARTISTSORT";
readonly mp4: "soar";
};
};
readonly ALBUMSORT: {
readonly key: "ALBUMSORT";
readonly description: "Sort name for album (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOA";
};
readonly vorbis: "ALBUMSORT";
readonly mp4: "soal";
};
};
readonly MUSICBRAINZ_ARTISTID: {
readonly key: "MUSICBRAINZ_ARTISTID";
readonly description: "MusicBrainz Artist ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Artist Id";
};
readonly vorbis: "MUSICBRAINZ_ARTISTID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Artist Id";
};
};
readonly MUSICBRAINZ_ALBUMID: {
readonly key: "MUSICBRAINZ_ALBUMID";
readonly description: "MusicBrainz Release ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Album Id";
};
readonly vorbis: "MUSICBRAINZ_ALBUMID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Album Id";
};
};
readonly MUSICBRAINZ_TRACKID: {
readonly key: "MUSICBRAINZ_TRACKID";
readonly description: "MusicBrainz Recording ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "UFID";
readonly description: "http://musicbrainz.org";
};
readonly vorbis: "MUSICBRAINZ_TRACKID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Track Id";
};
};
readonly MUSICBRAINZ_RELEASEGROUPID: {
readonly key: "MUSICBRAINZ_RELEASEGROUPID";
readonly description: "MusicBrainz Release Group ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Release Group Id";
};
readonly vorbis: "MUSICBRAINZ_RELEASEGROUPID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Release Group Id";
};
};
readonly REPLAYGAIN_TRACK_GAIN: {
readonly key: "REPLAYGAIN_TRACK_GAIN";
readonly description: "ReplayGain track gain in dB (e.g., '-6.54 dB')";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Track_Gain";
};
readonly vorbis: "REPLAYGAIN_TRACK_GAIN";
readonly mp4: "----:com.apple.iTunes:replaygain_track_gain";
};
};
readonly REPLAYGAIN_TRACK_PEAK: {
readonly key: "REPLAYGAIN_TRACK_PEAK";
readonly description: "ReplayGain track peak value (0.0-1.0)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Track_Peak";
};
readonly vorbis: "REPLAYGAIN_TRACK_PEAK";
readonly mp4: "----:com.apple.iTunes:replaygain_track_peak";
};
};
readonly REPLAYGAIN_ALBUM_GAIN: {
readonly key: "REPLAYGAIN_ALBUM_GAIN";
readonly description: "ReplayGain album gain in dB";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Album_Gain";
};
readonly vorbis: "REPLAYGAIN_ALBUM_GAIN";
readonly mp4: "----:com.apple.iTunes:replaygain_album_gain";
};
};
readonly REPLAYGAIN_ALBUM_PEAK: {
readonly key: "REPLAYGAIN_ALBUM_PEAK";
readonly description: "ReplayGain album peak value (0.0-1.0)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Album_Peak";
};
readonly vorbis: "REPLAYGAIN_ALBUM_PEAK";
readonly mp4: "----:com.apple.iTunes:replaygain_album_peak";
};
};
readonly ACOUSTID_FINGERPRINT: {
readonly key: "ACOUSTID_FINGERPRINT";
readonly description: "AcoustID fingerprint (Chromaprint)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "Acoustid Fingerprint";
};
readonly vorbis: "ACOUSTID_FINGERPRINT";
readonly mp4: "----:com.apple.iTunes:Acoustid Fingerprint";
};
};
readonly ACOUSTID_ID: {
readonly key: "ACOUSTID_ID";
readonly description: "AcoustID UUID";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "Acoustid Id";
};
readonly vorbis: "ACOUSTID_ID";
readonly mp4: "----:com.apple.iTunes:Acoustid Id";
};
};
readonly ITUNNORM: {
readonly key: "ITUNNORM";
readonly description: "Apple Sound Check normalization data";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "iTunNORM";
};
readonly vorbis: "ITUNNORM";
readonly mp4: "----:com.apple.iTunes:iTunNORM";
};
};
readonly LYRICIST: {
readonly key: "LYRICIST";
readonly description: "The lyrics/text writer(s)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LYRICIST";
};
};
readonly CONDUCTOR: {
readonly key: "CONDUCTOR";
readonly description: "The conductor";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "CONDUCTOR";
};
};
readonly REMIXEDBY: {
readonly key: "REMIXEDBY";
readonly description: "Person who remixed the track";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "REMIXEDBY";
};
};
readonly LANGUAGE: {
readonly key: "LANGUAGE";
readonly description: "Language of vocals/lyrics";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LANGUAGE";
};
};
readonly PUBLISHER: {
readonly key: "PUBLISHER";
readonly description: "The publisher";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "PUBLISHER";
};
};
readonly MOOD: {
readonly key: "MOOD";
readonly description: "The mood/atmosphere of the track";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "MOOD";
};
};
readonly MEDIA: {
readonly key: "MEDIA";
readonly description: "Media type (CD, vinyl, etc.)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "MEDIA";
};
};
readonly GROUPING: {
readonly key: "GROUPING";
readonly description: "Content group/work";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "GROUPING";
};
};
readonly WORK: {
readonly key: "WORK";
readonly description: "Work name";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "WORK";
};
};
readonly LYRICS: {
readonly key: "LYRICS";
readonly description: "Lyrics content";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LYRICS";
};
};
readonly ISRC: {
readonly key: "ISRC";
readonly description: "International Standard Recording Code";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "ISRC";
};
};
readonly CATALOGNUMBER: {
readonly key: "CATALOGNUMBER";
readonly description: "Catalog number";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "CATALOGNUMBER";
};
};
readonly BARCODE: {
readonly key: "BARCODE";
readonly description: "Barcode (EAN/UPC)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "BARCODE";
};
};
};
/**
* Legacy Tags constant for simplified access to common property names.
* For enhanced functionality with metadata and type safety, consider using PROPERTIES.
*/
export declare const Tags: {
readonly Title: "TITLE";
readonly Artist: "ARTIST";
readonly Album: "ALBUM";
readonly Date: "DATE";
readonly TrackNumber: "TRACKNUMBER";
readonly Genre: "GENRE";
readonly Comment: "COMMENT";
readonly AlbumArtist: "ALBUMARTIST";
readonly Composer: "COMPOSER";
readonly Copyright: "COPYRIGHT";
readonly EncodedBy: "ENCODEDBY";
readonly DiscNumber: "DISCNUMBER";
readonly Bpm: "BPM";
readonly Lyricist: "LYRICIST";
readonly Conductor: "CONDUCTOR";
readonly Remixer: "REMIXEDBY";
readonly Language: "LANGUAGE";
readonly Publisher: "PUBLISHER";
readonly Mood: "MOOD";
readonly Media: "MEDIA";
readonly RadioStationOwner: "RADIOSTATIONOWNER";
readonly Producer: "PRODUCER";
readonly Subtitle: "SUBTITLE";
readonly Label: "LABEL";
readonly TitleSort: "TITLESORT";
readonly ArtistSort: "ARTISTSORT";
readonly AlbumArtistSort: "ALBUMARTISTSORT";
readonly AlbumSort: "ALBUMSORT";
readonly ComposerSort: "COMPOSERSORT";
readonly Isrc: "ISRC";
readonly Asin: "ASIN";
readonly CatalogNumber: "CATALOGNUMBER";
readonly Barcode: "BARCODE";
readonly MusicBrainzArtistId: "MUSICBRAINZ_ARTISTID";
readonly MusicBrainzReleaseArtistId: "MUSICBRAINZ_ALBUMARTISTID";
readonly MusicBrainzWorkId: "MUSICBRAINZ_WORKID";
readonly MusicBrainzReleaseId: "MUSICBRAINZ_ALBUMID";
readonly MusicBrainzRecordingId: "MUSICBRAINZ_TRACKID";
readonly MusicBrainzTrackId: "MUSICBRAINZ_TRACKID";
readonly MusicBrainzReleaseGroupId: "MUSICBRAINZ_RELEASEGROUPID";
readonly MusicBrainzReleaseTrackId: "MUSICBRAINZ_RELEASETRACKID";
readonly PodcastId: "PODCASTID";
readonly PodcastUrl: "PODCASTURL";
readonly Grouping: "GROUPING";
readonly Work: "WORK";
readonly Lyrics: "LYRICS";
readonly AlbumGain: "REPLAYGAIN_ALBUM_GAIN";
readonly AlbumPeak: "REPLAYGAIN_ALBUM_PEAK";
readonly TrackGain: "REPLAYGAIN_TRACK_GAIN";
readonly TrackPeak: "REPLAYGAIN_TRACK_PEAK";
readonly OriginalArtist: "ORIGINALARTIST";
readonly OriginalAlbum: "ORIGINALALBUM";
readonly OriginalDate: "ORIGINALDATE";
readonly Script: "SCRIPT";
readonly InvolvedPeopleList: "INVOLVEDPEOPLELIST";
readonly EncoderSettings: "ENCODERSETTINGS";
readonly SourceMedia: "SOURCEMEDIA";
};
/**
* Type representing all valid property keys from the PROPERTIES object.
* This provides TypeScript autocomplete and type safety.
*/
export type PropertyKey = keyof typeof PROPERTIES;
/**
* Type representing the property value type based on the property definition.
* Currently all properties are strings, but this allows for future expansion.
*/
export type PropertyValue<K extends PropertyKey> = typeof PROPERTIES[K]["type"] extends "string" ? string : typeof PROPERTIES[K]["type"] extends "number" ? number : typeof PROPERTIES[K]["type"] extends "boolean" ? boolean : string;
/**
* Type representing all valid tag property names (legacy)
* For enhanced type safety, consider using PropertyKey.
*/
export type TagName = typeof Tags[keyof typeof Tags];
/**
* Type guard to check if a string is a valid property key
*/
export declare function isValidProperty(key: string): key is PropertyKey;
/**
* Get property metadata for a given property key
*/
export declare function getPropertyMetadata<K extends PropertyKey>(key: K): {
readonly TITLE: {
readonly key: "TITLE";
readonly description: "The title of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TIT2";
};
readonly vorbis: "TITLE";
readonly mp4: "©nam";
readonly wav: "INAM";
};
};
readonly ARTIST: {
readonly key: "ARTIST";
readonly description: "The primary performer(s) of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPE1";
};
readonly vorbis: "ARTIST";
readonly mp4: "©ART";
readonly wav: "IART";
};
};
readonly ALBUM: {
readonly key: "ALBUM";
readonly description: "The album/collection name";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TALB";
};
readonly vorbis: "ALBUM";
readonly mp4: "©alb";
readonly wav: "IPRD";
};
};
readonly DATE: {
readonly key: "DATE";
readonly description: "The date of recording (typically year)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TDRC";
};
readonly vorbis: "DATE";
readonly mp4: "©day";
readonly wav: "ICRD";
};
};
readonly TRACKNUMBER: {
readonly key: "TRACKNUMBER";
readonly description: "The track number within the album";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TRCK";
};
readonly vorbis: "TRACKNUMBER";
readonly mp4: "trkn";
readonly wav: "ITRK";
};
};
readonly GENRE: {
readonly key: "GENRE";
readonly description: "The musical genre";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TCON";
};
readonly vorbis: "GENRE";
readonly mp4: "©gen";
readonly wav: "IGNR";
};
};
readonly COMMENT: {
readonly key: "COMMENT";
readonly description: "Comments or notes about the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis", "WAV"];
readonly mappings: {
readonly id3v2: {
readonly frame: "COMM";
};
readonly vorbis: "COMMENT";
readonly mp4: "©cmt";
readonly wav: "ICMT";
};
};
readonly ALBUMARTIST: {
readonly key: "ALBUMARTIST";
readonly description: "The album artist (band/orchestra/ensemble)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPE2";
};
readonly vorbis: "ALBUMARTIST";
readonly mp4: "aART";
};
};
readonly COMPOSER: {
readonly key: "COMPOSER";
readonly description: "The original composer(s) of the track";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TCOM";
};
readonly vorbis: "COMPOSER";
readonly mp4: "©wrt";
};
};
readonly COPYRIGHT: {
readonly key: "COPYRIGHT";
readonly description: "Copyright information";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "Vorbis"];
readonly mappings: {
readonly vorbis: "COPYRIGHT";
};
};
readonly ENCODEDBY: {
readonly key: "ENCODEDBY";
readonly description: "The encoding software or person";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "Vorbis"];
readonly mappings: {
readonly vorbis: "ENCODEDBY";
};
};
readonly DISCNUMBER: {
readonly key: "DISCNUMBER";
readonly description: "The disc number for multi-disc sets";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TPOS";
};
readonly vorbis: "DISCNUMBER";
readonly mp4: "disk";
};
};
readonly BPM: {
readonly key: "BPM";
readonly description: "Beats per minute";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TBPM";
};
readonly vorbis: "BPM";
readonly mp4: "tmpo";
};
};
readonly TITLESORT: {
readonly key: "TITLESORT";
readonly description: "Sort name for title (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOT";
};
readonly vorbis: "TITLESORT";
readonly mp4: "sonm";
};
};
readonly ARTISTSORT: {
readonly key: "ARTISTSORT";
readonly description: "Sort name for artist (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOP";
};
readonly vorbis: "ARTISTSORT";
readonly mp4: "soar";
};
};
readonly ALBUMSORT: {
readonly key: "ALBUMSORT";
readonly description: "Sort name for album (for alphabetization)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TSOA";
};
readonly vorbis: "ALBUMSORT";
readonly mp4: "soal";
};
};
readonly MUSICBRAINZ_ARTISTID: {
readonly key: "MUSICBRAINZ_ARTISTID";
readonly description: "MusicBrainz Artist ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Artist Id";
};
readonly vorbis: "MUSICBRAINZ_ARTISTID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Artist Id";
};
};
readonly MUSICBRAINZ_ALBUMID: {
readonly key: "MUSICBRAINZ_ALBUMID";
readonly description: "MusicBrainz Release ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Album Id";
};
readonly vorbis: "MUSICBRAINZ_ALBUMID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Album Id";
};
};
readonly MUSICBRAINZ_TRACKID: {
readonly key: "MUSICBRAINZ_TRACKID";
readonly description: "MusicBrainz Recording ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "UFID";
readonly description: "http://musicbrainz.org";
};
readonly vorbis: "MUSICBRAINZ_TRACKID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Track Id";
};
};
readonly MUSICBRAINZ_RELEASEGROUPID: {
readonly key: "MUSICBRAINZ_RELEASEGROUPID";
readonly description: "MusicBrainz Release Group ID (UUID)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "MusicBrainz Release Group Id";
};
readonly vorbis: "MUSICBRAINZ_RELEASEGROUPID";
readonly mp4: "----:com.apple.iTunes:MusicBrainz Release Group Id";
};
};
readonly REPLAYGAIN_TRACK_GAIN: {
readonly key: "REPLAYGAIN_TRACK_GAIN";
readonly description: "ReplayGain track gain in dB (e.g., '-6.54 dB')";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Track_Gain";
};
readonly vorbis: "REPLAYGAIN_TRACK_GAIN";
readonly mp4: "----:com.apple.iTunes:replaygain_track_gain";
};
};
readonly REPLAYGAIN_TRACK_PEAK: {
readonly key: "REPLAYGAIN_TRACK_PEAK";
readonly description: "ReplayGain track peak value (0.0-1.0)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Track_Peak";
};
readonly vorbis: "REPLAYGAIN_TRACK_PEAK";
readonly mp4: "----:com.apple.iTunes:replaygain_track_peak";
};
};
readonly REPLAYGAIN_ALBUM_GAIN: {
readonly key: "REPLAYGAIN_ALBUM_GAIN";
readonly description: "ReplayGain album gain in dB";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Album_Gain";
};
readonly vorbis: "REPLAYGAIN_ALBUM_GAIN";
readonly mp4: "----:com.apple.iTunes:replaygain_album_gain";
};
};
readonly REPLAYGAIN_ALBUM_PEAK: {
readonly key: "REPLAYGAIN_ALBUM_PEAK";
readonly description: "ReplayGain album peak value (0.0-1.0)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "ReplayGain_Album_Peak";
};
readonly vorbis: "REPLAYGAIN_ALBUM_PEAK";
readonly mp4: "----:com.apple.iTunes:replaygain_album_peak";
};
};
readonly ACOUSTID_FINGERPRINT: {
readonly key: "ACOUSTID_FINGERPRINT";
readonly description: "AcoustID fingerprint (Chromaprint)";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "Acoustid Fingerprint";
};
readonly vorbis: "ACOUSTID_FINGERPRINT";
readonly mp4: "----:com.apple.iTunes:Acoustid Fingerprint";
};
};
readonly ACOUSTID_ID: {
readonly key: "ACOUSTID_ID";
readonly description: "AcoustID UUID";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "Acoustid Id";
};
readonly vorbis: "ACOUSTID_ID";
readonly mp4: "----:com.apple.iTunes:Acoustid Id";
};
};
readonly ITUNNORM: {
readonly key: "ITUNNORM";
readonly description: "Apple Sound Check normalization data";
readonly type: "string";
readonly supportedFormats: readonly ["ID3v2", "MP4", "Vorbis"];
readonly mappings: {
readonly id3v2: {
readonly frame: "TXXX";
readonly description: "iTunNORM";
};
readonly vorbis: "ITUNNORM";
readonly mp4: "----:com.apple.iTunes:iTunNORM";
};
};
readonly LYRICIST: {
readonly key: "LYRICIST";
readonly description: "The lyrics/text writer(s)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LYRICIST";
};
};
readonly CONDUCTOR: {
readonly key: "CONDUCTOR";
readonly description: "The conductor";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "CONDUCTOR";
};
};
readonly REMIXEDBY: {
readonly key: "REMIXEDBY";
readonly description: "Person who remixed the track";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "REMIXEDBY";
};
};
readonly LANGUAGE: {
readonly key: "LANGUAGE";
readonly description: "Language of vocals/lyrics";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LANGUAGE";
};
};
readonly PUBLISHER: {
readonly key: "PUBLISHER";
readonly description: "The publisher";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "PUBLISHER";
};
};
readonly MOOD: {
readonly key: "MOOD";
readonly description: "The mood/atmosphere of the track";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "MOOD";
};
};
readonly MEDIA: {
readonly key: "MEDIA";
readonly description: "Media type (CD, vinyl, etc.)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "MEDIA";
};
};
readonly GROUPING: {
readonly key: "GROUPING";
readonly description: "Content group/work";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "GROUPING";
};
};
readonly WORK: {
readonly key: "WORK";
readonly description: "Work name";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "WORK";
};
};
readonly LYRICS: {
readonly key: "LYRICS";
readonly description: "Lyrics content";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "LYRICS";
};
};
readonly ISRC: {
readonly key: "ISRC";
readonly description: "International Standard Recording Code";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "ISRC";
};
};
readonly CATALOGNUMBER: {
readonly key: "CATALOGNUMBER";
readonly description: "Catalog number";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "CATALOGNUMBER";
};
};
readonly BARCODE: {
readonly key: "BARCODE";
readonly description: "Barcode (EAN/UPC)";
readonly type: "string";
readonly supportedFormats: readonly ["Vorbis"];
readonly mappings: {
readonly vorbis: "BARCODE";
};
};
}[K];
/**
* Get all available property keys as an array
*/
export declare function getAllPropertyKeys(): readonly PropertyKey[];
/**
* Get all available property definitions as an array of [key, metadata] pairs
*/
export declare function getAllProperties(): readonly [
PropertyKey,
typeof PROPERTIES[PropertyKey]
][];
/**
* Filter properties by supported format
*/
export declare function getPropertiesByFormat(format: string): PropertyKey[];
/**
* Type guard to check if a string is a valid tag name (legacy)
* For enhanced functionality, consider using isValidProperty.
*/
export declare function isValidTagName(name: string): name is TagName;
/**
* Get all available tag names as an array (legacy)
* For enhanced functionality, consider using getAllPropertyKeys.
*/
export declare function getAllTagNames(): readonly TagName[];
/**
* Format-specific tag mappings (for reference only - TagLib handles these automatically)
* This shows how standard property names map to format-specific identifiers.
*/
export declare const FormatMappings: {
readonly Title: {
readonly id3v2: "TIT2";
readonly mp4: "©nam";
readonly vorbis: "TITLE";
readonly ape: "Title";
readonly riff: "INAM";
};
readonly Artist: {
readonly id3v2: "TPE1";
readonly mp4: "©ART";
readonly vorbis: "ARTIST";
readonly ape: "Artist";
readonly riff: "IART";
};
readonly Album: {
readonly id3v2: "TALB";
readonly mp4: "©alb";
readonly vorbis: "ALBUM";
readonly ape: "Album";
readonly riff: "IPRD";
};
readonly Date: {
readonly id3v2: "TDRC";
readonly mp4: "©day";
readonly vorbis: "DATE";
readonly ape: "Year";
readonly riff: "ICRD";
};
readonly Genre: {
readonly id3v2: "TCON";
readonly mp4: "©gen";
readonly vorbis: "GENRE";
readonly ape: "Genre";
readonly riff: "IGNR";
};
readonly Comment: {
readonly id3v2: "COMM";
readonly mp4: "©cmt";
readonly vorbis: "COMMENT";
readonly ape: "Comment";
readonly riff: "ICMT";
};
readonly TrackNumber: {
readonly id3v2: "TRCK";
readonly mp4: "trkn";
readonly vorbis: "TRACKNUMBER";
readonly ape: "Track";
readonly riff: "ITRK";
};
};
//# sourceMappingURL=constants.d.ts.map