{"version":3,"sources":["webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./src/tools/utils.js","webpack:///./node_modules/spark-md5/spark-md5.js","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/querystring-es3/encode.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/qiniu-js/esm/errors/index.js","webpack:///./node_modules/qiniu-js/esm/utils/pool.js","webpack:///./node_modules/qiniu-js/esm/utils/observable.js","webpack:///./node_modules/qiniu-js/esm/utils/base64.js","webpack:///./node_modules/qiniu-js/esm/config/region.js","webpack:///./node_modules/qiniu-js/esm/utils/helper.js","webpack:///./node_modules/qiniu-js/esm/api/index.js","webpack:///./node_modules/qiniu-js/esm/upload/base.js","webpack:///./node_modules/qiniu-js/esm/upload/resume.js","webpack:///./node_modules/qiniu-js/esm/utils/crc32.js","webpack:///./node_modules/qiniu-js/esm/upload/direct.js","webpack:///./node_modules/qiniu-js/esm/logger/report-v3.js","webpack:///./node_modules/qiniu-js/esm/logger/index.js","webpack:///./node_modules/qiniu-js/esm/upload/hosts.js","webpack:///./node_modules/qiniu-js/esm/upload/index.js","webpack:///./node_modules/qiniu-js/esm/utils/config.js","webpack:///./node_modules/qiniu-js/esm/utils/compress.js","webpack:///./node_modules/qiniu-js/esm/index.js"],"names":["ctx","IObject","toObject","toLength","asc","module","exports","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","$this","callbackfn","that","val","res","O","self","f","length","index","result","undefined","push","cof","Array","isArray","arg","$export","$find","KEY","forced","P","F","findIndex","this","arguments","contractType","value","label","contractLevel","signedNum","paymentType","currencyType","filesCN","arr","_str","filter","item","zhDate","date","type","now","Date","year","getFullYear","month","getMonth","day","getDate","hour","getHours","minute","getMinutes","second","getSeconds","getzf","num","parseInt","digitUppercase","price","fraction","digit","unit","Math","abs","s","forEach","floor","replace","i","p","j","getDateNum","myDate","h","m","conver","factory","hex_chr","md5cycle","x","k","a","b","c","d","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","n","state","substring","toString","match","md51_array","subarray","Uint8Array","rhex","hex","join","toUtf8","str","test","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","String","fromCharCode","apply","concatenateArrayBuffers","first","byteLength","set","buffer","hexToBinaryString","bytes","substr","SparkMD5","reset","y","lsw","msw","prototype","slice","clamp","max","min","from","to","target","targetArray","sourceArray","begin","end","append","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","destroy","hashBinary","content","call","hasOwnProperty","obj","prop","Object","qs","sep","eq","options","regexp","split","maxKeys","len","kstr","vstr","v","idx","indexOf","decodeURIComponent","xs","decode","parse","encode","stringify","speciesConstructor","original","stringifyPrimitive","isFinite","name","map","objectKeys","ks","keys","key","isObject","SPECIES","C","constructor","QiniuErrorName","__extends","extendStatics","setPrototypeOf","__proto__","__","QiniuError","message","stack","Error","QiniuRequestError","_super","code","reqId","data","_this","RequestError","isRequestError","QiniuNetworkError","Pool","runTask","limit","aborted","queue","processing","enqueue","task","Promise","resolve","reject","check","run","then","err","processingNum","availableNum","abort","__assign","assign","t","Subscription","closed","unsubscribe","_unsubscribe","add","teardown","Subscriber","observerOrNext","error","complete","isStopped","destination","next","Observable","_subscribe","subscribe","sink","utf8Encode","argString","start","string","utftext","stringl","c1","enc","RangeError","c2","utf8Decode","strData","tmpArr","seqlen","ai","base64Encode","o1","o2","o3","h1","h2","h3","h4","bits","b64","ac","tmp_arr","charAt","base64Decode","dec","urlSafeBase64Encode","urlSafeBase64Decode","__awaiter","thisArg","_arguments","generator","adopt","fulfilled","step","e","rejected","done","__generator","body","g","_","sent","trys","ops","verb","Symbol","iterator","op","TypeError","pop","MB","pow","getChunks","file","blockSize","chunkByteSize","size","chunks","count","ceil","chunk","isMetaDataValid","params","every","isCustomVarsValid","sum","list","reduce","loaded","setLocalFileInfo","localKey","info","logger","localStorage","setItem","JSON","warn","WriteCacheFailed","createLocalKey","removeLocalFileInfo","removeItem","RemoveCacheFailed","getLocalFileInfo","localInfoString","getItem","_a","ReadCacheFailed","localInfo","_b","InvalidCacheData","getAuthHeaders","token","auth","Authorization","getHeadersForChunkUpload","header","getHeadersForMkFile","createXHR","window","XMLHttpRequest","ActiveXObject","NotAvailableXMLHttpRequest","computeMd5","spark","readAsArrayBuffer","reader","FileReader","onload","evt","InvalidProgressEventTarget","onerror","FileReaderReadFailed","request","url","xhr","open","method","onCreate","headers","headers_1","setRequestHeader","upload","addEventListener","lengthComputable","onProgress","total","onreadystatechange","responseText","readyState","getResponseHeader","status","send","getPortFromUrl","groups","getDomainFromUrl","getPutPolicy","InvalidToken","segments","assessKey","putPolicy","scope","bucketName","createObjectURL","URL","webkitURL","mozURL","region","z0","z1","z2","na0","as0","cnEast2","regionUphostMap","srcUphost","cdnUphost","getUpHosts","accessKey","protocol","ak","bucket","getBaseUrl","uploadInfo","id","initUploadParts","uploadUrl","uploadChunk","md5","uploadComplete","direct","__read","o","r","ar","__spread","concat","DEFAULT_CHUNK_SIZE","FREEZE_CODE_LIST","RETRY_CODE_LIST","GB","Base","handlers","hostPool","retryCount","xhrList","config","putExtra","fname","onData","onError","onComplete","checkAndUpdateUploadHost","newHost","getUp","upprotocol","NotAvailableUploadHost","uploadHost","host","checkAndUnfreezeHost","isFrozen","unfreeze","checkAndFreezeHost","includes","freeze","handleError","putFile","err_1","notReachRetryCount","needRetry","InvalidFile","customVars","InvalidCustomVars","metadata","InvalidMetadata","uploadAt","getTime","sendLog","clear","stop","addXhr","report","remoteIp","upType","time","port","getUrl","bytesSent","progress","duration","getProgressInfoItem","fromCache","percent","isPositiveInteger","re","Resume","pool","mkFileResponse","uploadChunks","error_1","chunkSize","InvalidChunkSize","initBeforeUploadChunks","chunkInfo","concurrentRequestLimit","getLocalKey","all","mkFileReq","cachedInfo","shouldCheckMD5","reuseSaved","requestOptions","response","cachedUploadedList","checkByMD5","usedCacheList","updateChunkProgress","uploadedList","updateLocalCache","checkByServer","getUploadInfo","etag","parts","partNumber","mimeType","updateMkFileProgress","infoMessage","uploadId","mkFileProgress","notifyResumeProgress","CRC32","crc","table","makeTable","offset","compute","readAsUint8Array","arrayBuffer","bind","chuck","Direct","formData","crcSign","customVars_1","FormData","updateDirectProgress","finishDirectProgress","reportV3","retry","stringifyData","Logger","disableReport","level","prefix","getPrintPrefix","args","_i","allowLevel","console","log","unfreezeTimeMap","Map","Host","currentTime","unfreezeTime","get","getUnfreezeTime","HostPool","initHosts","cachedHostsMap","register","hosts","refresh","_c","_d","cachedHostList","stashHosts","_e","up","acc","main","backup","availableHostList","priorityQueue","sort","hostA","hostB","createUploadManager","forceDirect","disableStatisticsReport","debugLogLevel","normalizeUploadConfig","uphost","observer","manager","__rest","getOwnPropertySymbols","propertyIsEnumerable","otherConfig","normalizeConfig","useCdnDomain","hostList","hostMap","Boolean","PNG","JPEG","WEBP","BMP","maxSteps","scaleFactor","supportMimeTypes","defaultType","isSupportedType","Compress","quality","noCompressIfLarger","process","srcDimension","originImage","canvas","scale","scaleCanvas","distBlob","outputType","UnsupportedFileType","getOriginImage","getCanvas","maxWidth","width","maxHeight","height","doScale","toBlob","dist","fillStyle","fillRect","clearRect","img","Image","src","document","createElement","context","getContext","drawImage","GetCanvasContextFailed","source","sctx","steps","factor","mirror","mctx","originWidth","originHeight","dw","dh","getImageData","putImageData","dataURL","toDataURL","atob","char","blob","Blob"],"mappings":"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","file":"js/chunk-51d85793.776f6014.js","sourcesContent":["// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","/*\n* 合同类型\n* */\nexport const contractType = [\n {value: 1, label: '买卖合同'},\n {value: 2, label: '供用电、水、气、热力合同'},\n {value: 3, label: '赠与合同'},\n {value: 4, label: '借款合同'},\n {value: 5, label: '租赁合同'},\n {value: 6, label: '融资租赁合同'},\n {value: 7, label: '承揽合同'},\n {value: 8, label: '建筑工程合同'},\n {value: 9, label: '运输合同'},\n {value: 10, label: '技术合同'},\n {value: 11, label: '保管合同'},\n {value: 12, label: '仓储合同'},\n {value: 13, label: '委托合同'},\n {value: 14, label: '行纪合同'},\n {value: 15, label: '居间合同'},\n {value: 16, label: '无名合同'},\n {value: 17, label: '其他'},\n]\n\n/*\n* 合同类型\n* */\nexport const contractLevel = [\n {value: 1, label: '绝密'},\n {value: 2, label: '机密'},\n {value: 3, label: '秘密'},\n {value: 4, label: '公开'},\n]\n\n/*\n* 签署方\n* */\nexport const signedNum = [\n {value: 1, label: '双方签署'},\n {value: 2, label: '三方签署'},\n]\n\n/*\n* 付款方式\n* */\nexport const paymentType = [\n {value: 1, label: '首付款'},\n {value: 2, label: '第二阶段'},\n {value: 3, label: '第三阶段'},\n {value: 4, label: '第四阶段'},\n {value: 5, label: '尾款'},\n]\n\n\n\n/*\n* 币种\n* */\nexport const currencyType = [\n {value: 'RMB', label: '人民币'},\n]\n\n\n/*\n* 数据过滤全部\n* */\nexport const optionList = (state, arr) => {\n if (state) {\n return arr\n } else {\n return arr.slice(1)\n }\n}\n\n/*\n* value转换为label\n* */\nexport const filesCN = (val, arr) => {\n if (val) {\n let _str = arr.filter(item => val === item.value)\n return _str[0].label\n } else {\n return ''\n }\n\n}\n\n\n/*\n* 时间转换\n* */\nexport const zhDate = (date, type) => {\n let now = new Date(date)\n let year = now.getFullYear()\n let month = now.getMonth() + 1\n let day = now.getDate()\n let hour = now.getHours()\n let minute = now.getMinutes()\n let second = now.getSeconds()\n if (type === 1) {\n return year + \"-\" + getzf(month) + \"-\" + getzf(day) + \" \" + getzf(hour) + \":\" + getzf(minute)\n } else if (type === 2) {\n return year + \"-\" + getzf(month) + \"-\" + getzf(day) + \" \" + getzf(hour) + \":\" + getzf(minute) + \":\" + getzf(second)\n } else if (type === 3) {\n return getzf(hour) + \":\" + getzf(minute)\n } else if (type === 4) {\n return year\n } else if (type === 5) {\n return month\n } else {\n return year + \"-\" + getzf(month) + \"-\" + getzf(day)\n }\n}\n\nfunction getzf(num) {\n if (parseInt(num) < 10) {\n num = '0' + num\n }\n return num\n}\n\n\nexport const digitUppercase = (price) => {\n const fraction = ['角', '分']\n const digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']\n const unit = [\n ['元', '万', '亿'],\n ['', '拾', '佰', '仟']\n ]\n let num = Math.abs(price)\n let s = ''\n fraction.forEach((item, index) => {\n s += (digit[Math.floor(num * 10 * (10 ** index)) % 10] + item).replace(/零./, '')\n })\n s = s || '整'\n num = Math.floor(num)\n for (let i = 0; i < unit[0].length && num > 0; i += 1) {\n let p = ''\n for (let j = 0; j < unit[1].length && num > 0; j += 1) {\n p = digit[num % 10] + unit[1][j] + p\n num = Math.floor(num / 10)\n }\n s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s\n }\n\n return s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整')\n}\n\n\nexport const getDateNum=()=> {\n var myDate = new Date();\n //获取当前年\n var year = myDate.getFullYear();\n //获取当前月\n var month = myDate.getMonth() + 1;\n //获取当前日\n var date = myDate.getDate();\n var h = myDate.getHours(); //获取当前小时数(0-23)\n var m = myDate.getMinutes(); //获取当前分钟数(0-59)\n var s = myDate.getSeconds();\n //获取当前时间\n var now = year + conver(month) + conver(date) + conver(h) + conver(m) + conver(s) + \"_\";\n return now;\n}\nfunction conver(s) {\n return s < 10 ? '0' + s : s;\n}\n","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexport var QiniuErrorName;\n(function (QiniuErrorName) {\n // 输入错误\n QiniuErrorName[\"InvalidFile\"] = \"InvalidFile\";\n QiniuErrorName[\"InvalidToken\"] = \"InvalidToken\";\n QiniuErrorName[\"InvalidMetadata\"] = \"InvalidMetadata\";\n QiniuErrorName[\"InvalidChunkSize\"] = \"InvalidChunkSize\";\n QiniuErrorName[\"InvalidCustomVars\"] = \"InvalidCustomVars\";\n QiniuErrorName[\"NotAvailableUploadHost\"] = \"NotAvailableUploadHost\";\n // 缓存相关\n QiniuErrorName[\"ReadCacheFailed\"] = \"ReadCacheFailed\";\n QiniuErrorName[\"InvalidCacheData\"] = \"InvalidCacheData\";\n QiniuErrorName[\"WriteCacheFailed\"] = \"WriteCacheFailed\";\n QiniuErrorName[\"RemoveCacheFailed\"] = \"RemoveCacheFailed\";\n // 图片压缩模块相关\n QiniuErrorName[\"GetCanvasContextFailed\"] = \"GetCanvasContextFailed\";\n QiniuErrorName[\"UnsupportedFileType\"] = \"UnsupportedFileType\";\n // 运行环境相关\n QiniuErrorName[\"FileReaderReadFailed\"] = \"FileReaderReadFailed\";\n QiniuErrorName[\"NotAvailableXMLHttpRequest\"] = \"NotAvailableXMLHttpRequest\";\n QiniuErrorName[\"InvalidProgressEventTarget\"] = \"InvalidProgressEventTarget\";\n // 请求错误\n QiniuErrorName[\"RequestError\"] = \"RequestError\";\n})(QiniuErrorName || (QiniuErrorName = {}));\nvar QiniuError = /** @class */ (function () {\n function QiniuError(name, message) {\n this.name = name;\n this.message = message;\n this.stack = new Error().stack;\n }\n return QiniuError;\n}());\nexport { QiniuError };\nvar QiniuRequestError = /** @class */ (function (_super) {\n __extends(QiniuRequestError, _super);\n function QiniuRequestError(code, reqId, message, data) {\n var _this = _super.call(this, QiniuErrorName.RequestError, message) || this;\n _this.code = code;\n _this.reqId = reqId;\n /**\n * @description 标记当前的 error 类型是一个 QiniuRequestError\n * @deprecated 下一个大版本将会移除,不推荐使用,推荐直接使用 instanceof 进行判断\n */\n _this.isRequestError = true;\n _this.data = data;\n return _this;\n }\n return QiniuRequestError;\n}(QiniuError));\nexport { QiniuRequestError };\n/**\n * @description 由于跨域、证书错误、断网、host 解析失败、系统拦截等原因导致的错误\n */\nvar QiniuNetworkError = /** @class */ (function (_super) {\n __extends(QiniuNetworkError, _super);\n function QiniuNetworkError(message, reqId) {\n if (reqId === void 0) { reqId = ''; }\n return _super.call(this, 0, reqId, message) || this;\n }\n return QiniuNetworkError;\n}(QiniuRequestError));\nexport { QiniuNetworkError };\n//# sourceMappingURL=index.js.map","var Pool = /** @class */ (function () {\n function Pool(runTask, limit) {\n this.runTask = runTask;\n this.limit = limit;\n this.aborted = false;\n this.queue = [];\n this.processing = [];\n }\n Pool.prototype.enqueue = function (task) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.queue.push({\n task: task,\n resolve: resolve,\n reject: reject\n });\n _this.check();\n });\n };\n Pool.prototype.run = function (item) {\n var _this = this;\n this.queue = this.queue.filter(function (v) { return v !== item; });\n this.processing.push(item);\n this.runTask(item.task).then(function () {\n _this.processing = _this.processing.filter(function (v) { return v !== item; });\n item.resolve();\n _this.check();\n }, function (err) { return item.reject(err); });\n };\n Pool.prototype.check = function () {\n var _this = this;\n if (this.aborted)\n return;\n var processingNum = this.processing.length;\n var availableNum = this.limit - processingNum;\n this.queue.slice(0, availableNum).forEach(function (item) {\n _this.run(item);\n });\n };\n Pool.prototype.abort = function () {\n this.queue = [];\n this.aborted = true;\n };\n return Pool;\n}());\nexport { Pool };\n//# sourceMappingURL=pool.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/** 表示可清理的资源,比如 Observable 的执行 */\nvar Subscription = /** @class */ (function () {\n function Subscription() {\n /** 用来标示该 Subscription 是否被取消订阅的标示位 */\n this.closed = false;\n }\n /** 取消 observer 的订阅 */\n Subscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n if (this._unsubscribe) {\n this._unsubscribe();\n }\n };\n /** 添加一个 tear down 在该 Subscription 的 unsubscribe() 期间调用 */\n Subscription.prototype.add = function (teardown) {\n this._unsubscribe = teardown;\n };\n return Subscription;\n}());\n/**\n * 实现 Observer 接口并且继承 Subscription 类,Observer 是消费 Observable 值的公有 API\n * 所有 Observers 都转化成了 Subscriber,以便提供类似 Subscription 的能力,比如 unsubscribe\n*/\nvar Subscriber = /** @class */ (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (observerOrNext && typeof observerOrNext === 'object') {\n _this.destination = observerOrNext;\n }\n else {\n _this.destination = __assign(__assign(__assign({}, observerOrNext && { next: observerOrNext }), error && { error: error }), complete && { complete: complete });\n }\n return _this;\n }\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped && this.destination.next) {\n this.destination.next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped && this.destination.error) {\n this.isStopped = true;\n this.destination.error(err);\n }\n };\n Subscriber.prototype.complete = function (result) {\n if (!this.isStopped && this.destination.complete) {\n this.isStopped = true;\n this.destination.complete(result);\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\n/** 可观察对象,当前的上传事件的集合 */\nvar Observable = /** @class */ (function () {\n function Observable(_subscribe) {\n this._subscribe = _subscribe;\n }\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var sink = new Subscriber(observerOrNext, error, complete);\n sink.add(this._subscribe(sink));\n return sink;\n };\n return Observable;\n}());\nexport { Observable };\n//# sourceMappingURL=observable.js.map","/* eslint-disable */\n// https://github.com/locutusjs/locutus/blob/master/src/php/xml/utf8_encode.js\nfunction utf8Encode(argString) {\n // http://kevin.vanzonneveld.net\n // + original by: Webtoolkit.info (http://www.webtoolkit.info/)\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + improved by: sowberry\n // + tweaked by: Jack\n // + bugfixed by: Onno Marsman\n // + improved by: Yves Sucaet\n // + bugfixed by: Onno Marsman\n // + bugfixed by: Ulrich\n // + bugfixed by: Rafal Kukawski\n // + improved by: kirilloid\n // + bugfixed by: kirilloid\n // * example 1: this.utf8Encode('Kevin van Zonneveld')\n // * returns 1: 'Kevin van Zonneveld'\n if (argString === null || typeof argString === 'undefined') {\n return '';\n }\n var string = argString + ''; // .replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n')\n var utftext = '', start, end, stringl = 0;\n start = end = 0;\n stringl = string.length;\n for (var n = 0; n < stringl; n++) {\n var c1 = string.charCodeAt(n);\n var enc = null;\n if (c1 < 128) {\n end++;\n }\n else if (c1 > 127 && c1 < 2048) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128);\n }\n else if ((c1 & 0xf800 ^ 0xd800) > 0) {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n else {\n // surrogate pairs\n if ((c1 & 0xfc00 ^ 0xd800) > 0) {\n throw new RangeError('Unmatched trail surrogate at ' + n);\n }\n var c2 = string.charCodeAt(++n);\n if ((c2 & 0xfc00 ^ 0xdc00) > 0) {\n throw new RangeError('Unmatched lead surrogate at ' + (n - 1));\n }\n c1 = ((c1 & 0x3ff) << 10) + (c2 & 0x3ff) + 0x10000;\n enc = String.fromCharCode((c1 >> 18) | 240, ((c1 >> 12) & 63) | 128, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128);\n }\n if (enc !== null) {\n if (end > start) {\n utftext += string.slice(start, end);\n }\n utftext += enc;\n start = end = n + 1;\n }\n }\n if (end > start) {\n utftext += string.slice(start, stringl);\n }\n return utftext;\n}\n// https://github.com/locutusjs/locutus/blob/master/src/php/xml/utf8_decode.js\nfunction utf8Decode(strData) {\n // eslint-disable-line camelcase\n // discuss at: https://locutus.io/php/utf8_decode/\n // original by: Webtoolkit.info (https://www.webtoolkit.info/)\n // input by: Aman Gupta\n // input by: Brett Zamir (https://brett-zamir.me)\n // improved by: Kevin van Zonneveld (https://kvz.io)\n // improved by: Norman \"zEh\" Fuchs\n // bugfixed by: hitwork\n // bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)\n // bugfixed by: Kevin van Zonneveld (https://kvz.io)\n // bugfixed by: kirilloid\n // bugfixed by: w35l3y (https://www.wesley.eti.br)\n // example 1: utf8_decode('Kevin van Zonneveld')\n // returns 1: 'Kevin van Zonneveld'\n var tmpArr = [];\n var i = 0;\n var c1 = 0;\n var seqlen = 0;\n strData += '';\n while (i < strData.length) {\n c1 = strData.charCodeAt(i) & 0xFF;\n seqlen = 0;\n // https://en.wikipedia.org/wiki/UTF-8#Codepage_layout\n if (c1 <= 0xBF) {\n c1 = (c1 & 0x7F);\n seqlen = 1;\n }\n else if (c1 <= 0xDF) {\n c1 = (c1 & 0x1F);\n seqlen = 2;\n }\n else if (c1 <= 0xEF) {\n c1 = (c1 & 0x0F);\n seqlen = 3;\n }\n else {\n c1 = (c1 & 0x07);\n seqlen = 4;\n }\n for (var ai = 1; ai < seqlen; ++ai) {\n c1 = ((c1 << 0x06) | (strData.charCodeAt(ai + i) & 0x3F));\n }\n if (seqlen === 4) {\n c1 -= 0x10000;\n tmpArr.push(String.fromCharCode(0xD800 | ((c1 >> 10) & 0x3FF)));\n tmpArr.push(String.fromCharCode(0xDC00 | (c1 & 0x3FF)));\n }\n else {\n tmpArr.push(String.fromCharCode(c1));\n }\n i += seqlen;\n }\n return tmpArr.join('');\n}\nfunction base64Encode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Bayron Guevara\n // + improved by: Thunder.m\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // - depends on: this.utf8Encode\n // * example 1: this.base64Encode('Kevin van Zonneveld')\n // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n // if (typeof this.window['atob'] == 'function') {\n // return atob(data)\n // }\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc = '', tmp_arr = [];\n if (!data) {\n return data;\n }\n data = utf8Encode(data + '');\n do {\n // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n bits = (o1 << 16) | (o2 << 8) | o3;\n h1 = (bits >> 18) & 0x3f;\n h2 = (bits >> 12) & 0x3f;\n h3 = (bits >> 6) & 0x3f;\n h4 = bits & 0x3f;\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] =\n b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n enc = tmp_arr.join('');\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n return enc;\n}\nfunction base64Decode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Thunder.m\n // + input by: Aman Gupta\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Onno Marsman\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + input by: Brett Zamir (http://brett-zamir.me)\n // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==')\n // * returns 1: 'Kevin van Zonneveld'\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n // if (typeof this.window['atob'] == 'function') {\n // return atob(data)\n // }\n var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = '', tmp_arr = [];\n if (!data) {\n return data;\n }\n data += '';\n do { // unpack four hexets into three octets using index points in b64\n h1 = b64.indexOf(data.charAt(i++));\n h2 = b64.indexOf(data.charAt(i++));\n h3 = b64.indexOf(data.charAt(i++));\n h4 = b64.indexOf(data.charAt(i++));\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n if (h3 === 64) {\n tmp_arr[ac++] = String.fromCharCode(o1);\n }\n else if (h4 === 64) {\n tmp_arr[ac++] = String.fromCharCode(o1, o2);\n }\n else {\n tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < data.length);\n dec = tmp_arr.join('');\n return utf8Decode(dec);\n}\nexport function urlSafeBase64Encode(v) {\n v = base64Encode(v);\n // 参考 https://tools.ietf.org/html/rfc4648#section-5\n return v.replace(/\\//g, '_').replace(/\\+/g, '-');\n}\nexport function urlSafeBase64Decode(v) {\n v = v.replace(/_/g, '/').replace(/-/g, '+');\n return base64Decode(v);\n}\n//# sourceMappingURL=base64.js.map","var _a;\n/** 上传区域 */\nexport var region = {\n z0: 'z0',\n z1: 'z1',\n z2: 'z2',\n na0: 'na0',\n as0: 'as0',\n cnEast2: 'cn-east-2'\n};\n/** 上传区域对应的 host */\nexport var regionUphostMap = (_a = {},\n _a[region.z0] = {\n srcUphost: ['up.qiniup.com'],\n cdnUphost: ['upload.qiniup.com']\n },\n _a[region.z1] = {\n srcUphost: ['up-z1.qiniup.com'],\n cdnUphost: ['upload-z1.qiniup.com']\n },\n _a[region.z2] = {\n srcUphost: ['up-z2.qiniup.com'],\n cdnUphost: ['upload-z2.qiniup.com']\n },\n _a[region.na0] = {\n srcUphost: ['up-na0.qiniup.com'],\n cdnUphost: ['upload-na0.qiniup.com']\n },\n _a[region.as0] = {\n srcUphost: ['up-as0.qiniup.com'],\n cdnUphost: ['upload-as0.qiniup.com']\n },\n _a[region.cnEast2] = {\n srcUphost: ['up-cn-east-2.qiniup.com'],\n cdnUphost: ['upload-cn-east-2.qiniup.com']\n },\n _a);\n//# sourceMappingURL=region.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport SparkMD5 from 'spark-md5';\nimport { QiniuErrorName, QiniuError, QiniuRequestError, QiniuNetworkError } from '../errors';\nimport { urlSafeBase64Decode } from './base64';\nexport var MB = Math.pow(1024, 2);\n// 文件分块\nexport function getChunks(file, blockSize) {\n var chunkByteSize = blockSize * MB; // 转换为字节\n // 如果 chunkByteSize 比文件大,则直接取文件的大小\n if (chunkByteSize > file.size) {\n chunkByteSize = file.size;\n }\n else {\n // 因为最多 10000 chunk,所以如果 chunkSize 不符合则把每片 chunk 大小扩大两倍\n while (file.size > chunkByteSize * 10000) {\n chunkByteSize *= 2;\n }\n }\n var chunks = [];\n var count = Math.ceil(file.size / chunkByteSize);\n for (var i = 0; i < count; i++) {\n var chunk = file.slice(chunkByteSize * i, i === count - 1 ? file.size : chunkByteSize * (i + 1));\n chunks.push(chunk);\n }\n return chunks;\n}\nexport function isMetaDataValid(params) {\n return Object.keys(params).every(function (key) { return key.indexOf('x-qn-meta-') === 0; });\n}\nexport function isCustomVarsValid(params) {\n return Object.keys(params).every(function (key) { return key.indexOf('x:') === 0; });\n}\nexport function sum(list) {\n return list.reduce(function (data, loaded) { return data + loaded; }, 0);\n}\nexport function setLocalFileInfo(localKey, info, logger) {\n try {\n localStorage.setItem(localKey, JSON.stringify(info));\n }\n catch (err) {\n logger.warn(new QiniuError(QiniuErrorName.WriteCacheFailed, \"setLocalFileInfo failed: \" + localKey));\n }\n}\nexport function createLocalKey(name, key, size) {\n var localKey = key == null ? '_' : \"_key_\" + key + \"_\";\n return \"qiniu_js_sdk_upload_file_name_\" + name + localKey + \"size_\" + size;\n}\nexport function removeLocalFileInfo(localKey, logger) {\n try {\n localStorage.removeItem(localKey);\n }\n catch (err) {\n logger.warn(new QiniuError(QiniuErrorName.RemoveCacheFailed, \"removeLocalFileInfo failed. key: \" + localKey));\n }\n}\nexport function getLocalFileInfo(localKey, logger) {\n var localInfoString = null;\n try {\n localInfoString = localStorage.getItem(localKey);\n }\n catch (_a) {\n logger.warn(new QiniuError(QiniuErrorName.ReadCacheFailed, \"getLocalFileInfo failed. key: \" + localKey));\n }\n if (localInfoString == null) {\n return null;\n }\n var localInfo = null;\n try {\n localInfo = JSON.parse(localInfoString);\n }\n catch (_b) {\n // 本地信息已被破坏,直接删除\n removeLocalFileInfo(localKey, logger);\n logger.warn(new QiniuError(QiniuErrorName.InvalidCacheData, \"getLocalFileInfo failed to parse. key: \" + localKey));\n }\n return localInfo;\n}\nexport function getAuthHeaders(token) {\n var auth = 'UpToken ' + token;\n return { Authorization: auth };\n}\nexport function getHeadersForChunkUpload(token) {\n var header = getAuthHeaders(token);\n return __assign({ 'content-type': 'application/octet-stream' }, header);\n}\nexport function getHeadersForMkFile(token) {\n var header = getAuthHeaders(token);\n return __assign({ 'content-type': 'application/json' }, header);\n}\nexport function createXHR() {\n if (window.XMLHttpRequest) {\n return new XMLHttpRequest();\n }\n if (window.ActiveXObject) {\n return new window.ActiveXObject('Microsoft.XMLHTTP');\n }\n throw new QiniuError(QiniuErrorName.NotAvailableXMLHttpRequest, 'the current environment does not support.');\n}\nexport function computeMd5(data) {\n return __awaiter(this, void 0, void 0, function () {\n var buffer, spark;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, readAsArrayBuffer(data)];\n case 1:\n buffer = _a.sent();\n spark = new SparkMD5.ArrayBuffer();\n spark.append(buffer);\n return [2 /*return*/, spark.end()];\n }\n });\n });\n}\nexport function readAsArrayBuffer(data) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n // evt 类型目前存在问题 https://github.com/Microsoft/TypeScript/issues/4163\n reader.onload = function (evt) {\n if (evt.target) {\n var body = evt.target.result;\n resolve(body);\n }\n else {\n reject(new QiniuError(QiniuErrorName.InvalidProgressEventTarget, 'progress event target is undefined'));\n }\n };\n reader.onerror = function () {\n reject(new QiniuError(QiniuErrorName.FileReaderReadFailed, 'fileReader read failed'));\n };\n reader.readAsArrayBuffer(data);\n });\n}\nexport function request(url, options) {\n return new Promise(function (resolve, reject) {\n var xhr = createXHR();\n xhr.open(options.method, url);\n if (options.onCreate) {\n options.onCreate(xhr);\n }\n if (options.headers) {\n var headers_1 = options.headers;\n Object.keys(headers_1).forEach(function (k) {\n xhr.setRequestHeader(k, headers_1[k]);\n });\n }\n xhr.upload.addEventListener('progress', function (evt) {\n if (evt.lengthComputable && options.onProgress) {\n options.onProgress({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n });\n xhr.onreadystatechange = function () {\n var responseText = xhr.responseText;\n if (xhr.readyState !== 4) {\n return;\n }\n var reqId = xhr.getResponseHeader('x-reqId') || '';\n if (xhr.status === 0) {\n // 发生 0 基本都是网络错误,常见的比如跨域、断网、host 解析失败、系统拦截等等\n reject(new QiniuNetworkError('network error.', reqId));\n return;\n }\n if (xhr.status !== 200) {\n var message = \"xhr request failed, code: \" + xhr.status;\n if (responseText) {\n message += \" response: \" + responseText;\n }\n var data = void 0;\n try {\n data = JSON.parse(responseText);\n }\n catch (_a) {\n // 无需处理该错误、可能拿到非 json 格式的响应是预期的\n }\n reject(new QiniuRequestError(xhr.status, reqId, message, data));\n return;\n }\n try {\n resolve({\n data: JSON.parse(responseText),\n reqId: reqId\n });\n }\n catch (err) {\n reject(err);\n }\n };\n xhr.send(options.body);\n });\n}\nexport function getPortFromUrl(url) {\n if (url && url.match) {\n var groups = url.match(/(^https?)/);\n if (!groups) {\n return '';\n }\n var type = groups[1];\n groups = url.match(/^https?:\\/\\/([^:^/]*):(\\d*)/);\n if (groups) {\n return groups[2];\n }\n if (type === 'http') {\n return '80';\n }\n return '443';\n }\n return '';\n}\nexport function getDomainFromUrl(url) {\n if (url && url.match) {\n var groups = url.match(/^https?:\\/\\/([^:^/]*)/);\n return groups ? groups[1] : '';\n }\n return '';\n}\nexport function getPutPolicy(token) {\n if (!token)\n throw new QiniuError(QiniuErrorName.InvalidToken, 'invalid token.');\n var segments = token.split(':');\n if (segments.length === 1)\n throw new QiniuError(QiniuErrorName.InvalidToken, 'invalid token segments.');\n // token 构造的差异参考:https://github.com/qbox/product/blob/master/kodo/auths/UpToken.md#admin-uptoken-authorization\n var assessKey = segments.length > 3 ? segments[1] : segments[0];\n if (!assessKey)\n throw new QiniuError(QiniuErrorName.InvalidToken, 'missing assess key field.');\n var putPolicy = null;\n try {\n putPolicy = JSON.parse(urlSafeBase64Decode(segments[segments.length - 1]));\n }\n catch (error) {\n throw new QiniuError(QiniuErrorName.InvalidToken, 'token parse failed.');\n }\n if (putPolicy == null) {\n throw new QiniuError(QiniuErrorName.InvalidToken, 'putPolicy is null.');\n }\n if (putPolicy.scope == null) {\n throw new QiniuError(QiniuErrorName.InvalidToken, 'scope field is null.');\n }\n var bucketName = putPolicy.scope.split(':')[0];\n if (!bucketName) {\n throw new QiniuError(QiniuErrorName.InvalidToken, 'resolve bucketName failed.');\n }\n return { assessKey: assessKey, bucketName: bucketName, scope: putPolicy.scope };\n}\nexport function createObjectURL(file) {\n var URL = window.URL || window.webkitURL || window.mozURL;\n // FIXME: 需要 revokeObjectURL\n return URL.createObjectURL(file);\n}\n//# sourceMappingURL=helper.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { stringify } from 'querystring';\nimport { normalizeUploadConfig } from '../utils';\nimport * as utils from '../utils';\nexport function getUpHosts(accessKey, bucketName, protocol) {\n return __awaiter(this, void 0, void 0, function () {\n var params, url;\n return __generator(this, function (_a) {\n params = stringify({ ak: accessKey, bucket: bucketName });\n url = protocol + \"://api.qiniu.com/v2/query?\" + params;\n return [2 /*return*/, utils.request(url, { method: 'GET' })];\n });\n });\n}\n/**\n * @param bucket 空间名\n * @param key 目标文件名\n * @param uploadInfo 上传信息\n */\nfunction getBaseUrl(bucket, key, uploadInfo) {\n var url = uploadInfo.url, id = uploadInfo.id;\n return url + \"/buckets/\" + bucket + \"/objects/\" + (key != null ? utils.urlSafeBase64Encode(key) : '~') + \"/uploads/\" + id;\n}\n/**\n * @param token 上传鉴权凭证\n * @param bucket 上传空间\n * @param key 目标文件名\n * @param uploadUrl 上传地址\n */\nexport function initUploadParts(token, bucket, key, uploadUrl) {\n var url = uploadUrl + \"/buckets/\" + bucket + \"/objects/\" + (key != null ? utils.urlSafeBase64Encode(key) : '~') + \"/uploads\";\n return utils.request(url, {\n method: 'POST',\n headers: utils.getAuthHeaders(token)\n });\n}\n/**\n * @param token 上传鉴权凭证\n * @param index 当前 chunk 的索引\n * @param uploadInfo 上传信息\n * @param options 请求参数\n */\nexport function uploadChunk(token, key, index, uploadInfo, options) {\n var bucket = utils.getPutPolicy(token).bucketName;\n var url = getBaseUrl(bucket, key, uploadInfo) + (\"/\" + index);\n var headers = utils.getHeadersForChunkUpload(token);\n if (options.md5)\n headers['Content-MD5'] = options.md5;\n return utils.request(url, __assign(__assign({}, options), { method: 'PUT', headers: headers }));\n}\n/**\n * @param token 上传鉴权凭证\n * @param key 目标文件名\n * @param uploadInfo 上传信息\n * @param options 请求参数\n */\nexport function uploadComplete(token, key, uploadInfo, options) {\n var bucket = utils.getPutPolicy(token).bucketName;\n var url = getBaseUrl(bucket, key, uploadInfo);\n return utils.request(url, __assign(__assign({}, options), { method: 'POST', headers: utils.getHeadersForMkFile(token) }));\n}\n/**\n * @param token 上传鉴权凭证\n * @param key 目标文件名\n * @param uploadInfo 上传信息\n */\nexport function deleteUploadedChunks(token, key, uploadinfo) {\n var bucket = utils.getPutPolicy(token).bucketName;\n var url = getBaseUrl(bucket, key, uploadinfo);\n return utils.request(url, {\n method: 'DELETE',\n headers: utils.getAuthHeaders(token)\n });\n}\n/**\n * @param {string} url\n * @param {FormData} data\n * @param {Partial} options\n * @returns Promise\n * @description 直传接口\n */\nexport function direct(url, data, options) {\n return utils.request(url, __assign({ method: 'POST', body: data }, options));\n}\n/**\n * @param {UploadUrlConfig} config\n * @param {string} token\n * @returns Promise\n * @description 获取上传 url\n */\nexport function getUploadUrl(_config, token) {\n return __awaiter(this, void 0, void 0, function () {\n var config, protocol, putPolicy, res, hosts;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n config = normalizeUploadConfig(_config);\n protocol = config.upprotocol;\n if (config.uphost.length > 0) {\n return [2 /*return*/, protocol + \"://\" + config.uphost[0]];\n }\n putPolicy = utils.getPutPolicy(token);\n return [4 /*yield*/, getUpHosts(putPolicy.assessKey, putPolicy.bucketName, protocol)];\n case 1:\n res = _a.sent();\n hosts = res.data.up.acc.main;\n return [2 /*return*/, protocol + \"://\" + hosts[0]];\n }\n });\n });\n}\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { QiniuErrorName, QiniuError, QiniuRequestError } from '../errors';\nimport * as utils from '../utils';\nexport var DEFAULT_CHUNK_SIZE = 4; // 单位 MB\n// code 信息地址 https://developer.qiniu.com/kodo/3928/error-responses\nexport var FREEZE_CODE_LIST = [0, 502, 503, 504, 599]; // 将会冻结当前 host 的 code\nexport var RETRY_CODE_LIST = __spread(FREEZE_CODE_LIST, [612]); // 会进行重试的 code\nvar GB = Math.pow(1024, 3);\nvar Base = /** @class */ (function () {\n function Base(options, handlers, hostPool, logger) {\n this.hostPool = hostPool;\n this.logger = logger;\n this.aborted = false;\n this.retryCount = 0;\n this.xhrList = [];\n this.config = options.config;\n logger.info('config inited.', this.config);\n this.putExtra = __assign({ fname: '' }, options.putExtra);\n logger.info('putExtra inited.', this.putExtra);\n this.key = options.key;\n this.file = options.file;\n this.token = options.token;\n this.onData = handlers.onData;\n this.onError = handlers.onError;\n this.onComplete = handlers.onComplete;\n try {\n var putPolicy = utils.getPutPolicy(this.token);\n this.bucketName = putPolicy.bucketName;\n this.assessKey = putPolicy.assessKey;\n }\n catch (error) {\n logger.error('get putPolicy from token failed.', error);\n this.onError(error);\n }\n }\n // 检查并更新 upload host\n Base.prototype.checkAndUpdateUploadHost = function () {\n return __awaiter(this, void 0, void 0, function () {\n var newHost;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // 从 hostPool 中获取一个可用的 host 挂载在 this\n this.logger.info('get available upload host.');\n return [4 /*yield*/, this.hostPool.getUp(this.assessKey, this.bucketName, this.config.upprotocol)];\n case 1:\n newHost = _a.sent();\n if (newHost == null) {\n throw new QiniuError(QiniuErrorName.NotAvailableUploadHost, 'no available upload host.');\n }\n if (this.uploadHost != null && this.uploadHost.host !== newHost.host) {\n this.logger.warn(\"host switches from \" + this.uploadHost.host + \" to \" + newHost.host + \".\");\n }\n else {\n this.logger.info(\"use host \" + newHost.host + \".\");\n }\n this.uploadHost = newHost;\n return [2 /*return*/];\n }\n });\n });\n };\n // 检查并解冻当前的 host\n Base.prototype.checkAndUnfreezeHost = function () {\n this.logger.info('check unfreeze host.');\n if (this.uploadHost != null && this.uploadHost.isFrozen()) {\n this.logger.warn(this.uploadHost.host + \" will be unfrozen.\");\n this.uploadHost.unfreeze();\n }\n };\n // 检查并更新冻结当前的 host\n Base.prototype.checkAndFreezeHost = function (error) {\n this.logger.info('check freeze host.');\n if (error instanceof QiniuRequestError && this.uploadHost != null) {\n if (FREEZE_CODE_LIST.includes(error.code)) {\n this.logger.warn(this.uploadHost.host + \" will be temporarily frozen.\");\n this.uploadHost.freeze();\n }\n }\n };\n Base.prototype.handleError = function (error) {\n this.logger.error(error.message);\n this.onError(error);\n };\n /**\n * @returns Promise 返回结果与上传最终状态无关,状态信息请通过 [Subscriber] 获取。\n * @description 上传文件,状态信息请通过 [Subscriber] 获取。\n */\n Base.prototype.putFile = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result, err_1, notReachRetryCount, needRetry;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.aborted = false;\n if (!this.putExtra.fname) {\n this.logger.info('use file.name as fname.');\n this.putExtra.fname = this.file.name;\n }\n if (this.file.size > 10000 * GB) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidFile, 'file size exceed maximum value 10000G'));\n return [2 /*return*/];\n }\n if (this.putExtra.customVars) {\n if (!utils.isCustomVarsValid(this.putExtra.customVars)) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidCustomVars, \n // FIXME: width => with\n 'customVars key should start width x:'));\n return [2 /*return*/];\n }\n }\n if (this.putExtra.metadata) {\n if (!utils.isMetaDataValid(this.putExtra.metadata)) {\n this.handleError(new QiniuError(QiniuErrorName.InvalidMetadata, 'metadata key should start with x-qn-meta-'));\n return [2 /*return*/];\n }\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, , 5]);\n this.uploadAt = new Date().getTime();\n return [4 /*yield*/, this.checkAndUpdateUploadHost()];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.run()];\n case 3:\n result = _a.sent();\n this.onComplete(result.data);\n this.checkAndUnfreezeHost();\n this.sendLog(result.reqId, 200);\n return [2 /*return*/];\n case 4:\n err_1 = _a.sent();\n if (this.aborted) {\n this.logger.warn('upload is aborted.');\n this.sendLog('', -2);\n return [2 /*return*/];\n }\n this.clear();\n this.logger.error(err_1);\n if (err_1 instanceof QiniuRequestError) {\n this.sendLog(err_1.reqId, err_1.code);\n // 检查并冻结当前的 host\n this.checkAndFreezeHost(err_1);\n notReachRetryCount = ++this.retryCount <= this.config.retryCount;\n needRetry = RETRY_CODE_LIST.includes(err_1.code);\n // 以下条件满足其中之一则会进行重新上传:\n // 1. 满足 needRetry 的条件且 retryCount 不为 0\n // 2. uploadId 无效时在 resume 里会清除本地数据,并且这里触发重新上传\n if (needRetry && notReachRetryCount) {\n this.logger.warn(\"error auto retry: \" + this.retryCount + \"/\" + this.config.retryCount + \".\");\n this.putFile();\n return [2 /*return*/];\n }\n }\n this.onError(err_1);\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Base.prototype.clear = function () {\n this.xhrList.forEach(function (xhr) {\n xhr.onreadystatechange = null;\n xhr.abort();\n });\n this.xhrList = [];\n this.logger.info('cleanup uploading xhr.');\n };\n Base.prototype.stop = function () {\n this.logger.info('aborted.');\n this.clear();\n this.aborted = true;\n };\n Base.prototype.addXhr = function (xhr) {\n this.xhrList.push(xhr);\n };\n Base.prototype.sendLog = function (reqId, code) {\n var _a, _b;\n this.logger.report({\n code: code,\n reqId: reqId,\n remoteIp: '',\n upType: 'jssdk-h5',\n size: this.file.size,\n time: Math.floor(this.uploadAt / 1000),\n port: utils.getPortFromUrl((_a = this.uploadHost) === null || _a === void 0 ? void 0 : _a.getUrl()),\n host: utils.getDomainFromUrl((_b = this.uploadHost) === null || _b === void 0 ? void 0 : _b.getUrl()),\n bytesSent: this.progress ? this.progress.total.loaded : 0,\n duration: Math.floor((new Date().getTime() - this.uploadAt) / 1000)\n });\n };\n Base.prototype.getProgressInfoItem = function (loaded, size, fromCache) {\n return __assign({ size: size,\n loaded: loaded, percent: loaded / size * 100 }, (fromCache == null ? {} : { fromCache: fromCache }));\n };\n return Base;\n}());\nexport default Base;\n//# sourceMappingURL=base.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { uploadChunk, uploadComplete, initUploadParts } from '../api';\nimport { QiniuError, QiniuErrorName, QiniuRequestError } from '../errors';\nimport * as utils from '../utils';\nimport Base from './base';\n/** 是否为正整数 */\nfunction isPositiveInteger(n) {\n var re = /^[1-9]\\d*$/;\n return re.test(String(n));\n}\nvar Resume = /** @class */ (function (_super) {\n __extends(Resume, _super);\n function Resume() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @returns {Promise>}\n * @description 实现了 Base 的 run 接口,处理具体的分片上传事务,并抛出过程中的异常。\n */\n Resume.prototype.run = function () {\n return __awaiter(this, void 0, void 0, function () {\n var pool, mkFileResponse, localKey, uploadChunks, error_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.logger.info('start run Resume.');\n if (!this.config.chunkSize || !isPositiveInteger(this.config.chunkSize)) {\n throw new QiniuError(QiniuErrorName.InvalidChunkSize, 'chunkSize must be a positive integer');\n }\n if (this.config.chunkSize > 1024) {\n throw new QiniuError(QiniuErrorName.InvalidChunkSize, 'chunkSize maximum value is 1024');\n }\n return [4 /*yield*/, this.initBeforeUploadChunks()];\n case 1:\n _a.sent();\n pool = new utils.Pool(function (chunkInfo) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.aborted) {\n pool.abort();\n throw new Error('pool is aborted');\n }\n return [4 /*yield*/, this.uploadChunk(chunkInfo)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); }, this.config.concurrentRequestLimit);\n mkFileResponse = null;\n localKey = this.getLocalKey();\n uploadChunks = this.chunks.map(function (chunk, index) { return pool.enqueue({ chunk: chunk, index: index }); });\n _a.label = 2;\n case 2:\n _a.trys.push([2, 5, , 6]);\n return [4 /*yield*/, Promise.all(uploadChunks)];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.mkFileReq()];\n case 4:\n mkFileResponse = _a.sent();\n return [3 /*break*/, 6];\n case 5:\n error_1 = _a.sent();\n // uploadId 无效,上传参数有误(多由于本地存储信息的 uploadId 失效)\n if (error_1 instanceof QiniuRequestError && (error_1.code === 612 || error_1.code === 400)) {\n utils.removeLocalFileInfo(localKey, this.logger);\n }\n throw error_1;\n case 6:\n // 上传成功,清理本地缓存数据\n utils.removeLocalFileInfo(localKey, this.logger);\n return [2 /*return*/, mkFileResponse];\n }\n });\n });\n };\n Resume.prototype.uploadChunk = function (chunkInfo) {\n return __awaiter(this, void 0, void 0, function () {\n var index, chunk, cachedInfo, shouldCheckMD5, reuseSaved, md5, onProgress, requestOptions, response;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n index = chunkInfo.index, chunk = chunkInfo.chunk;\n cachedInfo = this.cachedUploadedList[index];\n this.logger.info(\"upload part \" + index + \", cache:\", cachedInfo);\n shouldCheckMD5 = this.config.checkByMD5;\n reuseSaved = function () {\n _this.usedCacheList[index] = true;\n _this.updateChunkProgress(chunk.size, index);\n _this.uploadedList[index] = cachedInfo;\n _this.updateLocalCache();\n };\n // FIXME: 至少判断一下 size\n if (cachedInfo && !shouldCheckMD5) {\n reuseSaved();\n return [2 /*return*/];\n }\n return [4 /*yield*/, utils.computeMd5(chunk)];\n case 1:\n md5 = _a.sent();\n this.logger.info('computed part md5.', md5);\n if (cachedInfo && md5 === cachedInfo.md5) {\n reuseSaved();\n return [2 /*return*/];\n }\n // 没有使用缓存设置标记为 false\n this.usedCacheList[index] = false;\n onProgress = function (data) {\n _this.updateChunkProgress(data.loaded, index);\n };\n requestOptions = {\n body: chunk,\n md5: this.config.checkByServer ? md5 : undefined,\n onProgress: onProgress,\n onCreate: function (xhr) { return _this.addXhr(xhr); }\n };\n this.logger.info(\"part \" + index + \" start uploading.\");\n return [4 /*yield*/, uploadChunk(this.token, this.key, chunkInfo.index + 1, this.getUploadInfo(), requestOptions)];\n case 2:\n response = _a.sent();\n this.logger.info(\"part \" + index + \" upload completed.\");\n // 在某些浏览器环境下,xhr 的 progress 事件无法被触发,progress 为 null,这里在每次分片上传完成后都手动更新下 progress\n onProgress({\n loaded: chunk.size,\n total: chunk.size\n });\n this.uploadedList[index] = {\n etag: response.data.etag,\n md5: response.data.md5,\n size: chunk.size\n };\n this.updateLocalCache();\n return [2 /*return*/];\n }\n });\n });\n };\n Resume.prototype.mkFileReq = function () {\n return __awaiter(this, void 0, void 0, function () {\n var data, result;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n data = __assign(__assign(__assign({ parts: this.uploadedList.map(function (value, index) { return ({\n etag: value.etag,\n // 接口要求 index 需要从 1 开始,所以需要整体 + 1\n partNumber: index + 1\n }); }), fname: this.putExtra.fname }, this.putExtra.mimeType && { mimeType: this.putExtra.mimeType }), this.putExtra.customVars && { customVars: this.putExtra.customVars }), this.putExtra.metadata && { metadata: this.putExtra.metadata });\n this.logger.info('parts upload completed, make file.', data);\n return [4 /*yield*/, uploadComplete(this.token, this.key, this.getUploadInfo(), {\n onCreate: function (xhr) { return _this.addXhr(xhr); },\n body: JSON.stringify(data)\n })];\n case 1:\n result = _a.sent();\n this.logger.info('finish Resume Progress.');\n this.updateMkFileProgress(1);\n return [2 /*return*/, result];\n }\n });\n });\n };\n Resume.prototype.initBeforeUploadChunks = function () {\n return __awaiter(this, void 0, void 0, function () {\n var cachedInfo, res, infoMessage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.uploadedList = [];\n this.usedCacheList = [];\n cachedInfo = utils.getLocalFileInfo(this.getLocalKey(), this.logger);\n if (!!cachedInfo) return [3 /*break*/, 2];\n this.logger.info('init upload parts from api.');\n return [4 /*yield*/, initUploadParts(this.token, this.bucketName, this.key, this.uploadHost.getUrl())];\n case 1:\n res = _a.sent();\n this.logger.info(\"initd upload parts of id: \" + res.data.uploadId + \".\");\n this.uploadId = res.data.uploadId;\n this.cachedUploadedList = [];\n return [3 /*break*/, 3];\n case 2:\n infoMessage = [\n 'resume upload parts from local cache,',\n \"total \" + cachedInfo.data.length + \" part,\",\n \"id is \" + cachedInfo.id + \".\"\n ];\n this.logger.info(infoMessage.join(' '));\n this.cachedUploadedList = cachedInfo.data;\n this.uploadId = cachedInfo.id;\n _a.label = 3;\n case 3:\n this.chunks = utils.getChunks(this.file, this.config.chunkSize);\n this.loaded = {\n mkFileProgress: 0,\n chunks: this.chunks.map(function (_) { return 0; })\n };\n this.notifyResumeProgress();\n return [2 /*return*/];\n }\n });\n });\n };\n Resume.prototype.getUploadInfo = function () {\n return {\n id: this.uploadId,\n url: this.uploadHost.getUrl()\n };\n };\n Resume.prototype.getLocalKey = function () {\n return utils.createLocalKey(this.file.name, this.key, this.file.size);\n };\n Resume.prototype.updateLocalCache = function () {\n utils.setLocalFileInfo(this.getLocalKey(), {\n id: this.uploadId,\n data: this.uploadedList\n }, this.logger);\n };\n Resume.prototype.updateChunkProgress = function (loaded, index) {\n this.loaded.chunks[index] = loaded;\n this.notifyResumeProgress();\n };\n Resume.prototype.updateMkFileProgress = function (progress) {\n this.loaded.mkFileProgress = progress;\n this.notifyResumeProgress();\n };\n Resume.prototype.notifyResumeProgress = function () {\n var _this = this;\n this.progress = {\n total: this.getProgressInfoItem(utils.sum(this.loaded.chunks) + this.loaded.mkFileProgress, \n // FIXME: 不准确的 fileSize\n this.file.size + 1 // 防止在 complete 未调用的时候进度显示 100%\n ),\n chunks: this.chunks.map(function (chunk, index) {\n var fromCache = _this.usedCacheList[index];\n return _this.getProgressInfoItem(_this.loaded.chunks[index], chunk.size, fromCache);\n }),\n uploadInfo: {\n id: this.uploadId,\n url: this.uploadHost.getUrl()\n }\n };\n this.onData(this.progress);\n };\n return Resume;\n}(Base));\nexport default Resume;\n//# sourceMappingURL=resume.js.map","/* eslint-disable no-bitwise */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { MB } from './helper';\n/**\n * 以下 class 实现参考\n * https://github.com/Stuk/jszip/blob/d4702a70834bd953d4c2d0bc155fad795076631a/lib/crc32.js\n * 该实现主要针对大文件优化、对计算的值进行了 `>>> 0` 运算(为与服务端保持一致)\n */\nvar CRC32 = /** @class */ (function () {\n function CRC32() {\n this.crc = -1;\n this.table = this.makeTable();\n }\n CRC32.prototype.makeTable = function () {\n var table = new Array();\n for (var i = 0; i < 256; i++) {\n var t = i;\n for (var j = 0; j < 8; j++) {\n if (t & 1) {\n // IEEE 标准\n t = (t >>> 1) ^ 0xEDB88320;\n }\n else {\n t >>>= 1;\n }\n }\n table[i] = t;\n }\n return table;\n };\n CRC32.prototype.append = function (data) {\n var crc = this.crc;\n for (var offset = 0; offset < data.byteLength; offset++) {\n crc = (crc >>> 8) ^ this.table[(crc ^ data[offset]) & 0xFF];\n }\n this.crc = crc;\n };\n CRC32.prototype.compute = function () {\n return (this.crc ^ -1) >>> 0;\n };\n CRC32.prototype.readAsUint8Array = function (file) {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(typeof file.arrayBuffer === 'function')) return [3 /*break*/, 2];\n _a = Uint8Array.bind;\n return [4 /*yield*/, file.arrayBuffer()];\n case 1: return [2 /*return*/, new (_a.apply(Uint8Array, [void 0, _b.sent()]))()];\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\n var reader = new FileReader();\n reader.onload = function () {\n if (reader.result == null) {\n reject();\n return;\n }\n if (typeof reader.result === 'string') {\n reject();\n return;\n }\n resolve(new Uint8Array(reader.result));\n };\n reader.readAsArrayBuffer(file);\n })];\n }\n });\n });\n };\n CRC32.prototype.file = function (file) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, count, index, start, end, chuck;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(file.size <= MB)) return [3 /*break*/, 2];\n _a = this.append;\n return [4 /*yield*/, this.readAsUint8Array(file)];\n case 1:\n _a.apply(this, [_b.sent()]);\n return [2 /*return*/, this.compute()];\n case 2:\n count = Math.ceil(file.size / MB);\n index = 0;\n _b.label = 3;\n case 3:\n if (!(index < count)) return [3 /*break*/, 6];\n start = index * MB;\n end = index === (count - 1) ? file.size : start + MB;\n return [4 /*yield*/, this.readAsUint8Array(file.slice(start, end))];\n case 4:\n chuck = _b.sent();\n this.append(new Uint8Array(chuck));\n _b.label = 5;\n case 5:\n index++;\n return [3 /*break*/, 3];\n case 6: return [2 /*return*/, this.compute()];\n }\n });\n });\n };\n CRC32.file = function (file) {\n var crc = new CRC32();\n return crc.file(file);\n };\n return CRC32;\n}());\nexport { CRC32 };\n//# sourceMappingURL=crc32.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { CRC32 } from '../utils/crc32';\nimport { direct } from '../api';\nimport Base from './base';\nvar Direct = /** @class */ (function (_super) {\n __extends(Direct, _super);\n function Direct() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Direct.prototype.run = function () {\n return __awaiter(this, void 0, void 0, function () {\n var formData, crcSign, customVars_1, result;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.logger.info('start run Direct.');\n formData = new FormData();\n formData.append('file', this.file);\n formData.append('token', this.token);\n if (this.key != null) {\n formData.append('key', this.key);\n }\n formData.append('fname', this.putExtra.fname);\n if (!this.config.checkByServer) return [3 /*break*/, 2];\n return [4 /*yield*/, CRC32.file(this.file)];\n case 1:\n crcSign = _a.sent();\n formData.append('crc32', crcSign.toString());\n _a.label = 2;\n case 2:\n if (this.putExtra.customVars) {\n this.logger.info('init customVars.');\n customVars_1 = this.putExtra.customVars;\n Object.keys(customVars_1).forEach(function (key) { return formData.append(key, customVars_1[key].toString()); });\n this.logger.info('customVars inited.');\n }\n this.logger.info('formData inited.');\n return [4 /*yield*/, direct(this.uploadHost.getUrl(), formData, {\n onProgress: function (data) {\n _this.updateDirectProgress(data.loaded, data.total);\n },\n onCreate: function (xhr) { return _this.addXhr(xhr); }\n })];\n case 3:\n result = _a.sent();\n this.logger.info('Direct progress finish.');\n this.finishDirectProgress();\n return [2 /*return*/, result];\n }\n });\n });\n };\n Direct.prototype.updateDirectProgress = function (loaded, total) {\n // 当请求未完成时可能进度会达到100,所以total + 1来防止这种情况出现\n this.progress = { total: this.getProgressInfoItem(loaded, total + 1) };\n this.onData(this.progress);\n };\n Direct.prototype.finishDirectProgress = function () {\n // 在某些浏览器环境下,xhr 的 progress 事件无法被触发,progress 为 null,这里 fake 下\n if (!this.progress) {\n this.logger.warn('progress is null.');\n this.progress = { total: this.getProgressInfoItem(this.file.size, this.file.size) };\n this.onData(this.progress);\n return;\n }\n var total = this.progress.total;\n this.progress = { total: this.getProgressInfoItem(total.loaded + 1, total.size) };\n this.onData(this.progress);\n };\n return Direct;\n}(Base));\nexport default Direct;\n//# sourceMappingURL=direct.js.map","import { createXHR, getAuthHeaders } from '../utils';\n/**\n * @param {string} token 上传使用的 token\n * @param {V3LogInfo} data 上报的统计数据\n * @param {number} retry 重试的次数,默认值 3\n * @description v3 版本的日志上传接口,参考文档 https://github.com/qbox/product/blob/master/kodo/uplog.md#%E7%89%88%E6%9C%AC-3。\n */\nexport function reportV3(token, data, retry) {\n if (retry === void 0) { retry = 3; }\n var xhr = createXHR();\n xhr.open('POST', 'https://uplog.qbox.me/log/3');\n xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n xhr.setRequestHeader('Authorization', getAuthHeaders(token).Authorization);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4 && xhr.status !== 200 && retry > 0) {\n reportV3(token, data, retry - 1);\n }\n };\n // 顺序参考:https://github.com/qbox/product/blob/master/kodo/uplog.md#%E7%89%88%E6%9C%AC-3\n var stringifyData = [\n data.code || '',\n data.reqId || '',\n data.host || '',\n data.remoteIp || '',\n data.port || '',\n data.duration || '',\n data.time || '',\n data.bytesSent || '',\n data.upType || '',\n data.size || ''\n ].join(',');\n xhr.send(stringifyData);\n}\n//# sourceMappingURL=report-v3.js.map","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { reportV3 } from './report-v3';\nvar Logger = /** @class */ (function () {\n function Logger(token, disableReport, level, prefix) {\n if (disableReport === void 0) { disableReport = true; }\n if (level === void 0) { level = 'OFF'; }\n if (prefix === void 0) { prefix = 'UPLOAD'; }\n this.token = token;\n this.disableReport = disableReport;\n this.level = level;\n this.prefix = prefix;\n // 为每个类分配一个 id\n // 用以区分不同的上传任务\n this.id = ++Logger.id;\n }\n Logger.prototype.getPrintPrefix = function (level) {\n return \"Qiniu-JS-SDK [\" + level + \"][\" + this.prefix + \"#\" + this.id + \"]:\";\n };\n /**\n * @param {V3LogInfo} data 上报的数据。\n * @param {boolean} retry 重试次数,可选,默认为 3。\n * @description 向服务端上报统计信息。\n */\n Logger.prototype.report = function (data, retry) {\n if (this.disableReport)\n return;\n try {\n reportV3(this.token, data, retry);\n }\n catch (error) {\n this.warn(error);\n }\n };\n /**\n * @param {unknown[]} ...args\n * @description 输出 info 级别的调试信息。\n */\n Logger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var allowLevel = ['INFO'];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.log.apply(console, __spread([this.getPrintPrefix('INFO')], args));\n }\n };\n /**\n * @param {unknown[]} ...args\n * @description 输出 warn 级别的调试信息。\n */\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var allowLevel = ['INFO', 'WARN'];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.warn.apply(console, __spread([this.getPrintPrefix('WARN')], args));\n }\n };\n /**\n * @param {unknown[]} ...args\n * @description 输出 error 级别的调试信息。\n */\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var allowLevel = ['INFO', 'WARN', 'ERROR'];\n if (allowLevel.includes(this.level)) {\n // eslint-disable-next-line no-console\n console.error.apply(console, __spread([this.getPrintPrefix('ERROR')], args));\n }\n };\n Logger.id = 0;\n return Logger;\n}());\nexport default Logger;\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { getUpHosts } from '../api';\n/**\n * @description 解冻时间,key 是 host,value 为解冻时间\n */\nvar unfreezeTimeMap = new Map();\nvar Host = /** @class */ (function () {\n function Host(host, protocol) {\n this.host = host;\n this.protocol = protocol;\n }\n /**\n * @description 当前 host 是否为冻结状态\n */\n Host.prototype.isFrozen = function () {\n var currentTime = new Date().getTime();\n var unfreezeTime = unfreezeTimeMap.get(this.host);\n return unfreezeTime != null && unfreezeTime >= currentTime;\n };\n /**\n * @param {number} time 单位秒,默认 20s\n * @description 冻结该 host 对象,该 host 将在指定时间内不可用\n */\n Host.prototype.freeze = function (time) {\n if (time === void 0) { time = 20; }\n var unfreezeTime = new Date().getTime() + (time * 1000);\n unfreezeTimeMap.set(this.host, unfreezeTime);\n };\n /**\n * @description 解冻该 host\n */\n Host.prototype.unfreeze = function () {\n unfreezeTimeMap[\"delete\"](this.host);\n };\n /**\n * @description 获取当前 host 的完整 url\n */\n Host.prototype.getUrl = function () {\n return this.protocol + \"://\" + this.host;\n };\n /**\n * @description 获取解冻时间\n */\n Host.prototype.getUnfreezeTime = function () {\n return unfreezeTimeMap.get(this.host);\n };\n return Host;\n}());\nexport { Host };\nvar HostPool = /** @class */ (function () {\n /**\n * @param {string[]} initHosts\n * @description 如果在构造时传入 initHosts,则该 host 池始终使用传入的 initHosts 做为可用的数据\n */\n function HostPool(initHosts) {\n if (initHosts === void 0) { initHosts = []; }\n this.initHosts = initHosts;\n /**\n * @description 缓存的 host 表,以 bucket 和 accessKey 作为 key\n */\n this.cachedHostsMap = new Map();\n }\n /**\n * @param {string} accessKey\n * @param {string} bucketName\n * @param {string[]} hosts\n * @param {InternalConfig['upprotocol']} protocol\n * @returns {void}\n * @description 注册可用 host\n */\n HostPool.prototype.register = function (accessKey, bucketName, hosts, protocol) {\n this.cachedHostsMap.set(accessKey + \"@\" + bucketName, hosts.map(function (host) { return new Host(host, protocol); }));\n };\n /**\n * @param {string} accessKey\n * @param {string} bucketName\n * @param {InternalConfig['upprotocol']} protocol\n * @returns {Promise}\n * @description 刷新最新的 host 数据,如果用户在构造时该类时传入了 host 或者已经存在缓存则不会发起请求\n */\n HostPool.prototype.refresh = function (accessKey, bucketName, protocol) {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function () {\n var cachedHostList, response, stashHosts;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n cachedHostList = this.cachedHostsMap.get(accessKey + \"@\" + bucketName) || [];\n if (cachedHostList.length > 0)\n return [2 /*return*/];\n if (this.initHosts.length > 0) {\n this.register(accessKey, bucketName, this.initHosts, protocol);\n return [2 /*return*/];\n }\n return [4 /*yield*/, getUpHosts(accessKey, bucketName, protocol)];\n case 1:\n response = _e.sent();\n if ((response === null || response === void 0 ? void 0 : response.data) != null) {\n stashHosts = __spread((((_b = (_a = response.data.up) === null || _a === void 0 ? void 0 : _a.acc) === null || _b === void 0 ? void 0 : _b.main) || []), (((_d = (_c = response.data.up) === null || _c === void 0 ? void 0 : _c.acc) === null || _d === void 0 ? void 0 : _d.backup) || []));\n this.register(accessKey, bucketName, stashHosts, protocol);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param {string} accessKey\n * @param {string} bucketName\n * @param {InternalConfig['upprotocol']} protocol\n * @returns {Promise}\n * @description 获取一个可用的上传 Host,排除已冻结的\n */\n HostPool.prototype.getUp = function (accessKey, bucketName, protocol) {\n return __awaiter(this, void 0, void 0, function () {\n var cachedHostList, availableHostList, priorityQueue;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.refresh(accessKey, bucketName, protocol)];\n case 1:\n _a.sent();\n cachedHostList = this.cachedHostsMap.get(accessKey + \"@\" + bucketName) || [];\n if (cachedHostList.length === 0)\n return [2 /*return*/, null];\n availableHostList = cachedHostList.filter(function (host) { return !host.isFrozen(); });\n if (availableHostList.length > 0)\n return [2 /*return*/, availableHostList[0]\n // 无可用的,去取离解冻最近的 host\n ];\n priorityQueue = cachedHostList\n .slice().sort(function (hostA, hostB) { return (hostA.getUnfreezeTime() || 0) - (hostB.getUnfreezeTime() || 0); });\n return [2 /*return*/, priorityQueue[0]];\n }\n });\n });\n };\n return HostPool;\n}());\nexport { HostPool };\n//# sourceMappingURL=hosts.js.map","import Resume from './resume';\nimport Direct from './direct';\nimport Logger from '../logger';\nimport { Observable, MB, normalizeUploadConfig } from '../utils';\nimport { HostPool } from './hosts';\nexport * from './base';\nexport * from './resume';\nexport function createUploadManager(options, handlers, hostPool, logger) {\n if (options.config && options.config.forceDirect) {\n logger.info('ues forceDirect mode.');\n return new Direct(options, handlers, hostPool, logger);\n }\n if (options.file.size > 4 * MB) {\n logger.info('file size over 4M, use Resume.');\n return new Resume(options, handlers, hostPool, logger);\n }\n logger.info('file size less or equal than 4M, use Direct.');\n return new Direct(options, handlers, hostPool, logger);\n}\n/**\n * @param file 上传文件\n * @param key 目标文件名\n * @param token 上传凭证\n * @param putExtra 上传文件的相关资源信息配置\n * @param config 上传任务的配置\n * @returns 返回用于上传任务的可观察对象\n */\nexport default function upload(file, key, token, putExtra, config) {\n // 为每个任务创建单独的 Logger\n var logger = new Logger(token, config === null || config === void 0 ? void 0 : config.disableStatisticsReport, config === null || config === void 0 ? void 0 : config.debugLogLevel, file.name);\n var options = {\n file: file,\n key: key,\n token: token,\n putExtra: putExtra,\n config: normalizeUploadConfig(config, logger)\n };\n // 创建 host 池\n var hostPool = new HostPool(options.config.uphost);\n return new Observable(function (observer) {\n var manager = createUploadManager(options, {\n onData: function (data) { return observer.next(data); },\n onError: function (err) { return observer.error(err); },\n onComplete: function (res) { return observer.complete(res); }\n }, hostPool, logger);\n manager.putFile();\n return manager.stop.bind(manager);\n });\n}\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { regionUphostMap } from '../config';\nimport { DEFAULT_CHUNK_SIZE } from '../upload';\nexport function normalizeUploadConfig(config, logger) {\n var _a = __assign({}, config), upprotocol = _a.upprotocol, uphost = _a.uphost, otherConfig = __rest(_a, [\"upprotocol\", \"uphost\"]);\n var normalizeConfig = __assign({ uphost: [], retryCount: 3, checkByMD5: false, forceDirect: false, useCdnDomain: true, checkByServer: false, concurrentRequestLimit: 3, chunkSize: DEFAULT_CHUNK_SIZE, upprotocol: 'https', debugLogLevel: 'OFF', disableStatisticsReport: false }, otherConfig);\n // 兼容原来的 http: https: 的写法\n if (upprotocol) {\n normalizeConfig.upprotocol = upprotocol\n .replace(/:$/, '');\n }\n var hostList = [];\n if (logger && (config === null || config === void 0 ? void 0 : config.uphost) != null && (config === null || config === void 0 ? void 0 : config.region) != null) {\n logger.warn('do not use both the uphost and region config.');\n }\n // 如果同时指定了 uphost 参数,添加到可用 host 列表\n if (uphost) {\n if (Array.isArray(uphost)) {\n hostList.push.apply(hostList, __spread(uphost));\n }\n else {\n hostList.push(uphost);\n }\n // 否则如果用户传了 region,添加指定 region 的 host 到可用 host 列表\n }\n else if (normalizeConfig === null || normalizeConfig === void 0 ? void 0 : normalizeConfig.region) {\n var hostMap = regionUphostMap[normalizeConfig === null || normalizeConfig === void 0 ? void 0 : normalizeConfig.region];\n if (normalizeConfig.useCdnDomain) {\n hostList.push.apply(hostList, __spread(hostMap.cdnUphost));\n }\n else {\n hostList.push.apply(hostList, __spread(hostMap.srcUphost));\n }\n }\n return __assign(__assign({}, normalizeConfig), { uphost: hostList.filter(Boolean) });\n}\n//# sourceMappingURL=config.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { QiniuErrorName, QiniuError } from '../errors';\nimport { createObjectURL } from './helper';\nvar mimeTypes = {\n PNG: 'image/png',\n JPEG: 'image/jpeg',\n WEBP: 'image/webp',\n BMP: 'image/bmp'\n};\nvar maxSteps = 4;\nvar scaleFactor = Math.log(2);\nvar supportMimeTypes = Object.keys(mimeTypes).map(function (type) { return mimeTypes[type]; });\nvar defaultType = mimeTypes.JPEG;\nfunction isSupportedType(type) {\n return supportMimeTypes.includes(type);\n}\nvar Compress = /** @class */ (function () {\n function Compress(file, config) {\n this.file = file;\n this.config = config;\n this.config = __assign({ quality: 0.92, noCompressIfLarger: false }, this.config);\n }\n Compress.prototype.process = function () {\n return __awaiter(this, void 0, void 0, function () {\n var srcDimension, originImage, canvas, scale, scaleCanvas, distBlob;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.outputType = this.file.type;\n srcDimension = {};\n if (!isSupportedType(this.file.type)) {\n throw new QiniuError(QiniuErrorName.UnsupportedFileType, \"unsupported file type: \" + this.file.type);\n }\n return [4 /*yield*/, this.getOriginImage()];\n case 1:\n originImage = _a.sent();\n return [4 /*yield*/, this.getCanvas(originImage)];\n case 2:\n canvas = _a.sent();\n scale = 1;\n if (this.config.maxWidth) {\n scale = Math.min(1, this.config.maxWidth / canvas.width);\n }\n if (this.config.maxHeight) {\n scale = Math.min(1, scale, this.config.maxHeight / canvas.height);\n }\n srcDimension.width = canvas.width;\n srcDimension.height = canvas.height;\n return [4 /*yield*/, this.doScale(canvas, scale)];\n case 3:\n scaleCanvas = _a.sent();\n distBlob = this.toBlob(scaleCanvas);\n if (distBlob.size > this.file.size && this.config.noCompressIfLarger) {\n return [2 /*return*/, {\n dist: this.file,\n width: srcDimension.width,\n height: srcDimension.height\n }];\n }\n return [2 /*return*/, {\n dist: distBlob,\n width: scaleCanvas.width,\n height: scaleCanvas.height\n }];\n }\n });\n });\n };\n Compress.prototype.clear = function (ctx, width, height) {\n // jpeg 没有 alpha 通道,透明区间会被填充成黑色,这里把透明区间填充为白色\n if (this.outputType === defaultType) {\n ctx.fillStyle = '#fff';\n ctx.fillRect(0, 0, width, height);\n }\n else {\n ctx.clearRect(0, 0, width, height);\n }\n };\n /** 通过 file 初始化 image 对象 */\n Compress.prototype.getOriginImage = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var url = createObjectURL(_this.file);\n var img = new Image();\n img.onload = function () {\n resolve(img);\n };\n img.onerror = function () {\n reject('image load error');\n };\n img.src = url;\n });\n };\n Compress.prototype.getCanvas = function (img) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n if (!context) {\n reject(new QiniuError(QiniuErrorName.GetCanvasContextFailed, 'context is null'));\n return;\n }\n var width = img.width, height = img.height;\n canvas.height = height;\n canvas.width = width;\n _this.clear(context, width, height);\n context.drawImage(img, 0, 0);\n resolve(canvas);\n });\n };\n Compress.prototype.doScale = function (source, scale) {\n return __awaiter(this, void 0, void 0, function () {\n var sctx, steps, factor, mirror, mctx, width, height, originWidth, originHeight, src, context, i, dw, dh, canvas, data;\n return __generator(this, function (_a) {\n if (scale === 1) {\n return [2 /*return*/, source];\n }\n sctx = source.getContext('2d');\n steps = Math.min(maxSteps, Math.ceil((1 / scale) / scaleFactor));\n factor = Math.pow(scale, (1 / steps));\n mirror = document.createElement('canvas');\n mctx = mirror.getContext('2d');\n width = source.width, height = source.height;\n originWidth = width;\n originHeight = height;\n mirror.width = width;\n mirror.height = height;\n if (!mctx || !sctx) {\n throw new QiniuError(QiniuErrorName.GetCanvasContextFailed, \"mctx or sctx can't be null\");\n }\n for (i = 0; i < steps; i++) {\n dw = width * factor | 0 // eslint-disable-line no-bitwise\n ;\n dh = height * factor | 0 // eslint-disable-line no-bitwise\n ;\n // 到最后一步的时候 dw, dh 用目标缩放尺寸,否则会出现最后尺寸偏小的情况\n if (i === steps - 1) {\n dw = originWidth * scale;\n dh = originHeight * scale;\n }\n if (i % 2 === 0) {\n src = source;\n context = mctx;\n }\n else {\n src = mirror;\n context = sctx;\n }\n // 每次画前都清空,避免图像重叠\n this.clear(context, width, height);\n context.drawImage(src, 0, 0, width, height, 0, 0, dw, dh);\n width = dw;\n height = dh;\n }\n canvas = src === source ? mirror : source;\n data = context.getImageData(0, 0, width, height);\n // resize\n canvas.width = width;\n canvas.height = height;\n // store image data\n context.putImageData(data, 0, 0);\n return [2 /*return*/, canvas];\n });\n });\n };\n /** 这里把 base64 字符串转为 blob 对象 */\n Compress.prototype.toBlob = function (result) {\n var dataURL = result.toDataURL(this.outputType, this.config.quality);\n var buffer = atob(dataURL.split(',')[1]).split('').map(function (char) { return char.charCodeAt(0); });\n var blob = new Blob([new Uint8Array(buffer)], { type: this.outputType });\n return blob;\n };\n return Compress;\n}());\nvar compressImage = function (file, options) { return new Compress(file, options).process(); };\nexport default compressImage;\n//# sourceMappingURL=compress.js.map","export { QiniuErrorName, QiniuError, QiniuRequestError, QiniuNetworkError } from './errors';\nexport { imageMogr2, watermark, imageInfo, exif, pipeline } from './image';\nexport { deleteUploadedChunks, getUploadUrl } from './api';\nexport { default as upload } from './upload';\nexport { region } from './config';\nexport { compressImage, urlSafeBase64Encode, urlSafeBase64Decode, getHeadersForMkFile, getHeadersForChunkUpload } from './utils';\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}