UNPKG

taglib-wasm

Version:

TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps

89 lines (88 loc) 2.09 kB
import { toTagLibKey } from "../constants/properties.js"; const RAW_TRACK_WIRE_KEY = toTagLibKey("trackNumber"); function buildMutableTag(handle) { let data = handle.getTagData(); const tag = { get title() { return data.title; }, get artist() { return data.artist; }, get album() { return data.album; }, get comment() { return data.comment; }, get genre() { return data.genre; }, get year() { return data.year; }, get track() { return data.track; }, get date() { return handle.getProperty("DATE") || void 0; }, setTitle: (value) => { handle.setTagData({ title: value }); data = handle.getTagData(); return tag; }, setArtist: (value) => { handle.setTagData({ artist: value }); data = handle.getTagData(); return tag; }, setAlbum: (value) => { handle.setTagData({ album: value }); data = handle.getTagData(); return tag; }, setComment: (value) => { handle.setTagData({ comment: value }); data = handle.getTagData(); return tag; }, setGenre: (value) => { handle.setTagData({ genre: value }); data = handle.getTagData(); return tag; }, setYear: (value) => { handle.setTagData({ year: value }); data = handle.getTagData(); return tag; }, setTrack: (value) => { const existing = value > 0 ? handle.getProperty(RAW_TRACK_WIRE_KEY) : ""; const slash = existing.indexOf("/"); if (slash !== -1) { handle.setProperty( RAW_TRACK_WIRE_KEY, `${value}${existing.slice(slash)}` ); } else { handle.setTagData({ track: value }); } data = handle.getTagData(); return tag; }, setDate: (value) => { if (value === "") { handle.setTagData({ year: 0 }); } else { handle.setProperty("DATE", value); } data = handle.getTagData(); return tag; } }; return tag; } export { buildMutableTag };