1 | {"version":3,"sources":["../src/virtual-buffer.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;AAEA,IAAM,YAAY,OAAO,IAAzB;;IAEa,a,WAAA,a;AACX,yBAAa,UAAb,EAAyB;AAAA;;AACvB,SAAK,MAAL,GAAc,oBAAW,UAAX,CAAd;AACA,SAAK,QAAL,GAAgB,CAAhB;AACA,SAAK,OAAL,GAAe,IAAf;AACD;;;;;;AAMD;;6FACiB,M,EAAQ,K;;;;;;;;;AACjB,qB,GAAQ,I;;sBACV,KAAK,OAAL,KAAiB,I;;;;;sBACb,IAAI,KAAJ,CAAU,0BAAV,EAAsC,KAAK,OAA3C,C;;;sBAEJ,WAAW,CAAC,C;;;;;AACR,sB,GAAS,E;AACX,qB,GAAQ,K;;;;uBAEQ,sBAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AACjD,yBAAK,MAAL,CAAY,IAAZ,CAAiB,SAAjB,EAA4B,UAAC,KAAD,EAAQ,MAAR,EAAgB,IAAhB,EAAsB,MAAtB,EAAiC;AAC3D,wBAAI,UAAU,KAAV,IAAmB,UAAU,IAAjC,EAAuC;AACrC,6BAAO,KAAP;AACD,qBAFD,MAEO;AACL,8BAAQ,EAAC,YAAD,EAAQ,UAAR,EAAR;AACD;AACF,mBAND;AAOD,iBARiB,C;;;AAAZ,mB;;AASN,wBAAQ,IAAI,KAAZ;AACA,uBAAO,IAAP,CAAY,IAAI,IAAhB;;;oBACO,UAAU,K;;;;;;iDACZ,OAAO,MAAP,CAAc,MAAd,C;;;AAEP,qBAAK,OAAL,GAAe,KAAf;iDACO,sBAAY,UAAC,OAAD,EAAU,MAAV,EAAqB;AACtC,yBAAK,MAAL,CAAY,IAAZ,CAAiB,MAAjB,EAAyB,UAAC,KAAD,EAAQ,YAAR,EAAsB,IAAtB,EAA4B,MAA5B,EAAuC;AAC9D,wBAAI,UAAU,KAAV,IAAmB,UAAU,IAAjC,EAAuC;AACrC,4BAAM,OAAN,GAAgB,IAAhB;AACA,6BAAO,KAAP;AACD,qBAHD,MAGO;AACL,4BAAM,OAAN,GAAgB,IAAhB;AACA,4BAAM,QAAN,IAAkB,KAAK,MAAvB;AACA,8BAAQ,IAAR;AACD;AACF,mBATD;AAUD,iBAXM,C;;;;;;;;;;;;;;;;;;wBA7BO;AAChB,aAAO,CAAC,KAAK,MAAL,CAAY,QAApB;AACD","file":"virtual-buffer.js","sourcesContent":["'use strict'\n\nimport {Slicer} from 'pipette'\n\nconst chunkSize = 1024 * 1024\n\nexport class VirtualBuffer {\n constructor (readStream) {\n this.slicer = new Slicer(readStream)\n this.position = 0\n this.promise = null\n }\n\n get isDepleted () {\n return !this.slicer.readable\n }\n\n // length = -1 means 'until the end'\n async readChunk (length, label) {\n const _this = this\n if (this.promise !== null) {\n throw new Error('pomise already there !!!', this.promise)\n }\n if (length === -1) {\n const chunks = []\n let error = false\n do {\n const res = await new Promise((resolve, reject) => {\n this.slicer.read(chunkSize, (error, length, data, offset) => {\n if (error !== false && error !== true) {\n reject(error)\n } else {\n resolve({error, data})\n }\n })\n })\n error = res.error\n chunks.push(res.data)\n } while (error === false)\n return Buffer.concat(chunks)\n } else {\n this.promise = label\n return new Promise((resolve, reject) => {\n this.slicer.read(length, (error, actualLength, data, offset) => {\n if (error !== false && error !== true) {\n _this.promise = null\n reject(error)\n } else {\n _this.promise = null\n _this.position += data.length\n resolve(data)\n }\n })\n })\n }\n }\n}\n"]} |