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
JavaScript
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
};