taglib-wasm
Version:
TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps
43 lines (42 loc) • 966 B
JavaScript
import { MetadataError, UnsupportedFormatError } from "../errors/classes.js";
const FRAME_ID_PATTERN = /^[A-Z0-9]{4}$/;
function assertMp3(format) {
if (format !== "MP3") {
throw new UnsupportedFormatError(format, ["MP3"], {
operation: "id3v2Frames"
});
}
}
function assertFrameId(id, operation) {
if (!FRAME_ID_PATTERN.test(id)) {
throw new MetadataError(
operation,
`Invalid ID3v2 frame ID: "${id}". Frame IDs must match [A-Z0-9]{4}`,
id
);
}
}
function assertFrameBodies(id, data) {
for (const body of data) {
if (body.length === 0) {
throw new MetadataError(
"write",
"Frame data must not be empty: zero-size ID3v2 frames are invalid",
id
);
}
}
}
function toPublicFrame(frame) {
return {
id: frame.id,
data: frame.data,
...frame.flags ? { flags: frame.flags } : {}
};
}
export {
assertFrameBodies,
assertFrameId,
assertMp3,
toPublicFrame
};