{"version":3,"sources":["jsdelivr-header.js","/npm/icy-metadata@0.1.2/icy-metadata.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,UAAY,QAAQ,UAAU,UAChC,SAAW,IACX,gBAAkB,GAClB,WAA+B,IAAlB,gBACb,YAAc,IAAI,OAAO,CAAC,IAE9B,MAAM,oBAAoB,UAEtB,WAAA,CAAY,EAAS,GACjB,QACA,KAAK,SAAW,EAAU,EAAI,EATvB,IAUP,KAAK,iBAAmB,SAAS,IAAoB,EAAI,SAAS,GAAmB,KAAK,OAC9F,CAEA,WAAI,GACA,OAAO,KAAK,QAChB,CAEA,mBAAI,GACA,OAAO,KAAK,gBAChB,CAEA,UAAA,CAAW,EAAO,EAAU,GAExB,IAAI,EAAa,EACb,EAAc,EAAM,OACpB,EAAS,IAAI,OAAO,IAcxB,IAZI,KAAK,iBAAmB,IAExB,EAAa,KAAK,IAAI,KAAK,iBAAkB,GAC7C,EAAS,YAAY,EAAQ,EAAM,MAAM,EAAG,IAC5C,KAAK,kBAAoB,EAEK,IAA1B,KAAK,mBACL,EAAS,YAAY,EAAQ,oBAAoB,OACjD,KAAK,iBAAmB,KAAK,UAI9B,EAAa,KAAK,QAAU,GAE/B,EAAS,YAAY,EAAQ,EAAM,MAAM,EAAY,EAAa,KAAK,UACvE,GAAc,KAAK,QAEnB,EAAS,YAAY,EAAQ,oBAAoB,OACjD,KAAK,iBAAmB,KAAK,QAGjC,EAAS,YAAY,EAAQ,EAAM,MAAM,EAAY,IACrD,KAAK,kBAAqB,EAAc,EAEV,IAA1B,KAAK,mBACL,EAAS,YAAY,EAAQ,oBAAoB,OACjD,KAAK,iBAAmB,KAAK,SAGjC,EAAS,KAAM,EACnB,CAEA,cAAA,CAAe,GACX,KAAK,SAAW,CACpB,CAEA,cAAA,CAAe,GACX,KAAK,SAAW,gBAAkB,EAAQ,IAC9C,EAGJ,SAAS,YAAY,EAAQ,GACzB,OAAO,OAAO,OAAO,CAAC,EAAQ,GAAc,EAAO,OAAS,EAAY,OAC5E,CAEA,SAAS,oBAAoB,GAEzB,IAAK,EAAQ,UAAuC,GAA3B,EAAQ,SAAS,OACtC,OAAO,YAGX,MAAM,EAAM,KAAK,IAAI,WAAY,OAAO,WAAW,EAAQ,UAAY,GACjE,EAAe,KAAK,KAAK,EAAM,iBACrC,IAAI,EAAS,IAAI,OAAO,EAAe,gBAAkB,GACzD,EAAO,GAAK,EACZ,MAAM,EAAe,EAAO,MAAM,EAAQ,SAAU,GAAK,EAIzD,OAHA,EAAO,KAAK,EAAG,EAAc,EAAO,QAEpC,EAAQ,SAAW,GACZ,CACX,CAEA,OAAO,QAAU","file":"/npm/icy-metadata@0.1.2/icy-metadata.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/icy-metadata@0.1.2/icy-metadata.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const Transform = require('stream').Transform,\r\n    META_INT = 50000;\r\n    META_BLOCK_SIZE = 16,\r\n    MAX_LENGTH = META_BLOCK_SIZE * 255,\r\n    NO_METADATA = new Buffer([0]);\r\n\r\nclass IcyMetadata extends Transform {\r\n\r\n    constructor(metaInt, bytesBeforeMeta) {\r\n        super();\r\n        this._metaInt = metaInt > 0 ? metaInt : META_INT;\r\n        this._bytesBeforeMeta = parseInt(bytesBeforeMeta) >= 0 ? parseInt(bytesBeforeMeta) : this.metaInt;\r\n    }\r\n\r\n    get metaInt() {\r\n        return this._metaInt;\r\n    }\r\n\r\n    get bytesBeforeMeta() {\r\n        return this._bytesBeforeMeta;\r\n    }\r\n\r\n    _transform(chunk, encoding, callback) {\r\n\r\n        let chunkIndex = 0,\r\n            chunkLength = chunk.length,\r\n            result = new Buffer([]);\r\n\r\n        if (this._bytesBeforeMeta > 0) {\r\n\r\n            chunkIndex = Math.min(this._bytesBeforeMeta, chunkLength);\r\n            result = addToBuffer(result, chunk.slice(0, chunkIndex));\r\n            this._bytesBeforeMeta -= chunkIndex;\r\n\r\n            if (this._bytesBeforeMeta === 0) {\r\n                result = addToBuffer(result, getBufferedMetaData(this));\r\n                this._bytesBeforeMeta = this.metaInt;\r\n            }\r\n        }\r\n\r\n        while (chunkIndex + this.metaInt < chunkLength) {\r\n\r\n            result = addToBuffer(result, chunk.slice(chunkIndex, chunkIndex + this.metaInt));\r\n            chunkIndex += this.metaInt;\r\n\r\n            result = addToBuffer(result, getBufferedMetaData(this));\r\n            this._bytesBeforeMeta = this.metaInt;\r\n        }\r\n\r\n        result = addToBuffer(result, chunk.slice(chunkIndex, chunkLength));\r\n        this._bytesBeforeMeta -= (chunkLength - chunkIndex);\r\n\r\n        if (this._bytesBeforeMeta === 0) {\r\n            result = addToBuffer(result, getBufferedMetaData(this));\r\n            this._bytesBeforeMeta = this.metaInt;\r\n        }\r\n\r\n        callback(null, result);\r\n    }\r\n\r\n    setRawMetaData(value) {\r\n        this.metaData = value;\r\n    }\r\n\r\n    setStreamTitle(value) {\r\n        this.metaData = \"StreamTitle='\" + value + \"';\";\r\n    }\r\n}\r\n\r\nfunction addToBuffer(source, addingValue) {\r\n    return Buffer.concat([source, addingValue], source.length + addingValue.length);\r\n}\r\n\r\nfunction getBufferedMetaData(context) {\r\n\r\n    if (!context.metaData || context.metaData.length == 0) {\r\n        return NO_METADATA;\r\n    }\r\n    //cut metadata string if it length more than 4080 bytes\r\n    const len = Math.min(MAX_LENGTH, Buffer.byteLength(context.metaData) + 1)\r\n    const metadataSize = Math.ceil(len / META_BLOCK_SIZE);\r\n    let result = new Buffer(metadataSize * META_BLOCK_SIZE + 1);\r\n    result[0] = metadataSize;\r\n    const writtenBytes = result.write(context.metaData, 1) + 1;\r\n    result.fill(0, writtenBytes, result.length)\r\n\r\n    context.metaData = \"\";\r\n    return result;\r\n}\r\n\r\nmodule.exports = IcyMetadata;\r\n"]}