UNPKG

taglib-wasm

Version:

TagLib for TypeScript platforms: Deno, Node.js, Bun, Electron, browsers, and Cloudflare Workers

1,146 lines 40.9 kB
/** * 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