{"version":3,"sources":["jsdelivr-header.js","/npm/@industral/music-metadata-browser@0.7.1/dist/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,OAAO,eAAe,QAAS,aAAc,CAAE,OAAO,IACtD,MAAM,UAAY,QAAQ,SACpB,GAAK,QAAQ,2BACb,SAAW,QAAQ,wBACnB,qBAAuB,QAAQ,8BAC/B,MAAQ,UAAU,0BAgBxB,SAAS,oBAAoB,EAAQ,EAAa,GAC9C,MAAM,EAAK,IAAI,qBAAqB,mBAAmB,GACvD,OAAO,QAAQ,gBAAgB,EAAI,EAAa,GAAS,MAAK,IAC1D,MAAM,4CAA4C,EAAG,wBAAwB,GAAW,EAAQ,SAAW,EAAQ,SAAW,OACvH,IAEf,CAiBA,SAAS,UAAU,EAAM,GACrB,OAAO,oBAAoB,GAAM,MAAK,GAC3B,GAAG,YAAY,EAAK,EAAK,KAAM,IAE9C,CAQA,SAAS,aAAa,EAAe,GACjC,OAAO,MAAM,GAAe,MAAK,IAC7B,MAAM,EAAc,EAAS,QAAQ,IAAI,gBACnC,EAAU,GAIhB,GAHA,EAAS,QAAQ,SAAQ,IACrB,EAAQ,KAAK,EAAO,IAEpB,EAAS,GACT,OAAI,EAAS,KACF,KAAK,oBAAoB,EAAS,KAAM,EAAa,GAAS,MAAK,IACjE,EAAS,KAAK,QACf,EAAS,KAAK,SACX,KAKJ,EAAS,OAAO,MAAK,GACjB,KAAK,UAAU,EAAM,KAKpC,MAAM,IAAI,MAAM,qBAAqB,EAAS,WAAW,EAAS,aACtE,GAER,CAeA,SAAS,oBAAoB,GACzB,OAAO,IAAI,SAAQ,CAAC,EAAS,KACzB,MAAM,EAAa,IAAI,WACvB,EAAW,UAAY,IACnB,IAAI,EAAO,EAAM,OAAO,OACpB,aAAgB,cAChB,EAAO,SAAS,IAAI,WAAW,EAAM,OAAO,UAEhD,EAAQ,EAAK,EAEjB,EAAW,QAAU,IACjB,EAAO,IAAI,MAAM,EAAM,MAAM,EAEjC,EAAW,QAAU,IACjB,EAAO,IAAI,MAAM,EAAM,MAAM,EAEjC,EAAW,kBAAkB,EAAK,GAE1C,CAtGA,QAAQ,gBAAkB,GAAG,YAe7B,QAAQ,oBAAsB,oBAS9B,QAAQ,YAAc,GAAG,YAYzB,QAAQ,UAAY,UAkCpB,QAAQ,aAAe,aAQvB,QAAQ,mBAAqB,GAAG,mBA8BhC,QAAQ,UAAY,GAAG,UAMvB,QAAQ,cAAgB,GAAG","file":"/npm/@industral/music-metadata-browser@0.7.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/@industral/music-metadata-browser@0.7.1/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst mm = require(\"music-metadata/lib/core\");\nconst toBuffer = require(\"typedarray-to-buffer\");\nconst Browser2NodeStream_1 = require(\"./fetch/Browser2NodeStream\");\nconst debug = initDebug('music-metadata-browser');\n/**\n * Parse audio Stream\n * @param stream\n * @param {string} contentType MIME-Type\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nexports.parseNodeStream = mm.parseStream;\n/**\n * Parse Web API ReadableStream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * @param {ReadableStream} stream ReadableStream\n * @param {string} contentType MIME-Type\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nfunction parseReadableStream(stream, contentType, options) {\n    const ns = new Browser2NodeStream_1.Browser2NodeStream(stream);\n    return exports.parseNodeStream(ns, contentType, options).then(res => {\n        debug(`Completed parsing from stream 1bytesRead=${ns.bytesRead} / fileSize=${options && options.fileSize ? options.fileSize : '?'}`);\n        return res;\n    });\n}\nexports.parseReadableStream = parseReadableStream;\n/**\n * Parse audio from Node Buffer\n * @param {Stream.Readable} stream Audio input stream\n * @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n * Ref: https://github.com/Borewit/strtok3/blob/e6938c81ff685074d5eb3064a11c0b03ca934c1d/src/index.ts#L15\n */\nexports.parseBuffer = mm.parseBuffer;\n/**\n * Parse Web API File\n * @param {Blob} blob\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nfunction parseBlob(blob, options) {\n    return convertBlobToBuffer(blob).then(buf => {\n        return mm.parseBuffer(buf, blob.type, options);\n    });\n}\nexports.parseBlob = parseBlob;\n/**\n * Parse fetched file, using the Web Fetch API\n * @param {string} audioTrackUrl URL to download the audio track from\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nfunction fetchFromUrl(audioTrackUrl, options) {\n    return fetch(audioTrackUrl).then(response => {\n        const contentType = response.headers.get('Content-Type');\n        const headers = [];\n        response.headers.forEach(header => {\n            headers.push(header);\n        });\n        if (response.ok) {\n            if (response.body) {\n                return this.parseReadableStream(response.body, contentType, options).then(res => {\n                    if (!response.body.locked)\n                        response.body.cancel();\n                    return res;\n                });\n            }\n            else {\n                // Fall back on Blob\n                return response.blob().then(blob => {\n                    return this.parseBlob(blob, options);\n                });\n            }\n        }\n        else {\n            throw new Error(`HTTP error status=${response.status}: ${response.statusText}`);\n        }\n    });\n}\nexports.fetchFromUrl = fetchFromUrl;\n/**\n * Parse audio from ITokenizer source\n * @param {strtok3.ITokenizer} Audio source implementing the tokenizer interface\n * @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nexports.parseFromTokenizer = mm.parseFromTokenizer;\n/**\n * Convert Web API File to Node Buffer\n * @param {Blob} blob Web API Blob\n * @returns {Promise<Buffer>}\n */\nfunction convertBlobToBuffer(blob) {\n    return new Promise((resolve, reject) => {\n        const fileReader = new FileReader();\n        fileReader.onloadend = event => {\n            let data = event.target.result;\n            if (data instanceof ArrayBuffer) {\n                data = toBuffer(new Uint8Array(event.target.result));\n            }\n            resolve(data);\n        };\n        fileReader.onerror = error => {\n            reject(new Error(error.type));\n        };\n        fileReader.onabort = error => {\n            reject(new Error(error.type));\n        };\n        fileReader.readAsArrayBuffer(blob);\n    });\n}\n/**\n * Create a dictionary ordered by their tag id (key)\n * @param {ITag[]} nativeTags list of tags\n * @returns {INativeTagDict} Tags indexed by id\n */\nexports.orderTags = mm.orderTags;\n/**\n * Convert rating to 1-5 star rating\n * @param {number} rating Normalized rating [0..1] (common.rating[n].rating)\n * @returns {number} Number of stars: 1, 2, 3, 4 or 5 stars\n */\nexports.ratingToStars = mm.ratingToStars;\n"]}