UNPKG

@infinito/id3

Version:
45 lines (35 loc) 1.53 kB
"use strict"; 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; } ;