@infinito/id3
Version:
ID3 Tag Reader/Writer
45 lines (35 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = validID3;
var _constants = require("./constants.js");
var _getSyncsafe = _interopRequireDefault(require("./get.syncsafe.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function validID3(buf) {
if (!(buf instanceof ArrayBuffer)) {
throw new TypeError('parameter buf must be an instance of an ArrayBuffer');
}
if (buf.byteLength < _constants.constants.ID3_HEADER_LENGTH_BYTES) {
throw new Error('buffer provided to validID3 must be at least as big as the ID3 header');
}
var res = {
ver: 0,
subver: 0,
flags: 0,
size: 0
};
var header = new Uint8Array(buf, 0, _constants.constants.ID3_HEADER_LENGTH_BYTES - _constants.constants.ID3_HEADER_TAG_SIZE_LENGTH_BYTES);
for (var i = 0; i < _constants.constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES; i++) {
if (header[i] != _constants.constants.ID3_HEADER_IDENTIFIER[i]) {
throw new Error("No valid id3 tags found");
return false;
}
}
res.ver = header[_constants.constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES];
res.subver = header[_constants.constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES + 1];
res.flags = header[_constants.constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES + 2];
res.size = (0, _getSyncsafe.default)(new Uint8Array(buf, _constants.constants.ID3_HEADER_IDENTIFIER_LENGTH_BYTES + 3, _constants.constants.ID3_HEADER_TAG_SIZE_LENGTH_BYTES));
return res;
}
;