{"version":3,"sources":["webpack:///./node_modules/spark-md5/spark-md5.js","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./src/api/tables/tables.js","webpack:///./node_modules/querystring-es3/encode.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/image/index.js"],"names":["factory","module","exports","undefined","hex_chr","md5cycle","x","k","a","b","c","d","md5blk","s","i","md5blks","charCodeAt","md5blk_array","md51","length","tail","tmp","lo","hi","n","state","substring","toString","match","parseInt","md51_array","subarray","Uint8Array","rhex","j","hex","join","toUtf8","str","test","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arr","arrayBuffer2Utf8Str","String","fromCharCode","apply","concatenateArrayBuffers","first","second","result","byteLength","set","buffer","hexToBinaryString","bytes","push","substr","SparkMD5","this","reset","y","lsw","msw","prototype","slice","clamp","val","Math","max","min","from","to","num","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","replace","idx","indexOf","decodeURIComponent","isArray","Array","xs","decode","parse","encode","stringify","getLearningMaterialList","data","request","method","url","getIndustryExpertList","DeleteLearnMaterials","DelIndustryExpert","GetUserInfoList","SetUserStatus","GetApplyExprienceList","SetApplyExprienceStatus","stringifyPrimitive","isFinite","name","map","objectKeys","ks","f","res","keys","key","QiniuErrorName","__extends","extendStatics","setPrototypeOf","__proto__","p","__","constructor","create","QiniuError","message","stack","Error","QiniuRequestError","_super","code","reqId","_this","RequestError","isRequestError","QiniuNetworkError","Pool","runTask","limit","aborted","queue","processing","enqueue","task","Promise","resolve","reject","check","run","item","filter","then","err","processingNum","availableNum","forEach","abort","__assign","assign","t","arguments","Subscription","closed","unsubscribe","_unsubscribe","add","teardown","Subscriber","observerOrNext","error","complete","isStopped","destination","next","value","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","P","generator","adopt","fulfilled","step","e","rejected","done","__generator","body","g","_","label","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","xhr","open","onCreate","headers","headers_1","setRequestHeader","upload","addEventListener","lengthComputable","onProgress","total","onreadystatechange","responseText","readyState","getResponseHeader","status","send","getPortFromUrl","groups","type","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","index","md5","uploadComplete","deleteUploadedChunks","uploadinfo","direct","getUploadUrl","_config","config","hosts","normalizeUploadConfig","upprotocol","uphost","up","acc","main","__read","o","m","r","ar","__spread","concat","DEFAULT_CHUNK_SIZE","FREEZE_CODE_LIST","RETRY_CODE_LIST","GB","Base","handlers","hostPool","retryCount","xhrList","putExtra","fname","onData","onError","onComplete","checkAndUpdateUploadHost","newHost","getUp","NotAvailableUploadHost","uploadHost","host","checkAndUnfreezeHost","isFrozen","unfreeze","checkAndFreezeHost","includes","freeze","handleError","putFile","err_1","notReachRetryCount","needRetry","InvalidFile","customVars","InvalidCustomVars","metadata","InvalidMetadata","uploadAt","Date","getTime","sendLog","clear","stop","addXhr","report","remoteIp","upType","time","floor","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","refresh","_c","_d","cachedHostList","stashHosts","_e","backup","availableHostList","priorityQueue","sort","hostA","hostB","createUploadManager","forceDirect","disableStatisticsReport","debugLogLevel","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","ctx","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","compressImage","compress","getImageUrl","domain","imageView2","mode","w","h","q","format","imageUrl","imageMogr2","autoOrient","thumbnail","strip","gravity","crop","rotate","blur","watermark","image","text","font","fontsize","fill","dissolve","dx","dy","imageInfo","exif","pipeline","option","errOp","fop","length_1"],"mappings":"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","file":"js/chunk-253e2728.6a23f5b7.js","sourcesContent":["(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","import request from \"@/utils/request.js\";\r\n//获取学习资料列表\r\nexport const getLearningMaterialList = (data) => {\r\n\treturn request({\r\n\t\tmethod: \"post\",\r\n\t\turl: \"api/LearningMaterials/GetLearningMaterialList\",\r\n\t\tdata\r\n\t});\r\n};\r\n\r\n//获取专家列表\r\nexport const getIndustryExpertList = (data) => {\r\n\treturn request({\r\n\t\tmethod: \"post\",\r\n\t\turl: \"api/IndustryExpert/GetIndustryExpertList\",\r\n\t\tdata\r\n\t});\r\n};\r\n\r\n//删除学习资料\r\nexport const DeleteLearnMaterials = (data) => {\r\n\treturn request({\r\n\t\tmethod: \"post\",\r\n\t\turl: \"api/LearningMaterials/DeleteLearnMaterials\",\r\n\t\tdata\r\n\t});\r\n};\r\n//删除专家\r\nexport const DelIndustryExpert = (data) => {\r\n\treturn request({\r\n\t\tmethod: \"post\",\r\n\t\turl: \"api/IndustryExpert/DeleteLearnMaterials\",\r\n\t\tdata\r\n\t});\r\n};\r\n// 获取报名用户列表\r\nexport const GetUserInfoList = (data) => {\r\n\treturn request({\r\n\t\tmethod: \"post\",\r\n\t\turl: \"api/MeetingSignature/GetUserInfoList\",\r\n\t\tdata\r\n\t});\r\n};\r\n// 设置用户报名状态\r\nexport const SetUserStatus = (data) => {\r\n\treturn request({\r\n\t\tmethod: \"post\",\r\n\t\turl: \"api/MeetingSignature/SetUserStatus\",\r\n\t\tdata\r\n\t});\r\n};\r\n//获取申请列表\r\nexport const GetApplyExprienceList = (data) => {\r\n\treturn request({\r\n\t\tmethod: \"post\",\r\n\t\turl: \"api/MeetingSignature/GetApplyExprienceList\",\r\n\t\tdata\r\n\t});\r\n};\r\n// 设置申请状态\r\nexport const SetApplyExprienceStatus = (data) => {\r\n\treturn request({\r\n\t\tmethod: \"post\",\r\n\t\turl: \"api/MeetingSignature/SetApplyExprienceStatus\",\r\n\t\tdata\r\n\t});\r\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 __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","import { request, urlSafeBase64Encode } from '../utils';\nfunction getImageUrl(key, domain) {\n key = encodeURIComponent(key);\n if (domain.slice(domain.length - 1) !== '/') {\n domain += '/';\n }\n return domain + key;\n}\nexport function imageView2(op, key, domain) {\n if (!/^\\d$/.test(String(op.mode))) {\n throw 'mode should be number in imageView2';\n }\n var mode = op.mode, w = op.w, h = op.h, q = op.q, format = op.format;\n if (!w && !h) {\n throw 'param w and h is empty in imageView2';\n }\n var imageUrl = 'imageView2/' + encodeURIComponent(mode);\n imageUrl += w ? '/w/' + encodeURIComponent(w) : '';\n imageUrl += h ? '/h/' + encodeURIComponent(h) : '';\n imageUrl += q ? '/q/' + encodeURIComponent(q) : '';\n imageUrl += format ? '/format/' + encodeURIComponent(format) : '';\n if (key && domain) {\n imageUrl = getImageUrl(key, domain) + '?' + imageUrl;\n }\n return imageUrl;\n}\n// invoke the imageMogr2 api of Qiniu\nexport function imageMogr2(op, key, domain) {\n var autoOrient = op['auto-orient'];\n var thumbnail = op.thumbnail, strip = op.strip, gravity = op.gravity, crop = op.crop, quality = op.quality, rotate = op.rotate, format = op.format, blur = op.blur;\n var imageUrl = 'imageMogr2';\n imageUrl += autoOrient ? '/auto-orient' : '';\n imageUrl += thumbnail ? '/thumbnail/' + encodeURIComponent(thumbnail) : '';\n imageUrl += strip ? '/strip' : '';\n imageUrl += gravity ? '/gravity/' + encodeURIComponent(gravity) : '';\n imageUrl += quality ? '/quality/' + encodeURIComponent(quality) : '';\n imageUrl += crop ? '/crop/' + encodeURIComponent(crop) : '';\n imageUrl += rotate ? '/rotate/' + encodeURIComponent(rotate) : '';\n imageUrl += format ? '/format/' + encodeURIComponent(format) : '';\n imageUrl += blur ? '/blur/' + encodeURIComponent(blur) : '';\n if (key && domain) {\n imageUrl = getImageUrl(key, domain) + '?' + imageUrl;\n }\n return imageUrl;\n}\n// invoke the watermark api of Qiniu\nexport function watermark(op, key, domain) {\n var mode = op.mode;\n if (!mode) {\n throw \"mode can't be empty in watermark\";\n }\n var imageUrl = 'watermark/' + mode;\n if (mode !== 1 && mode !== 2) {\n throw 'mode is wrong';\n }\n if (mode === 1) {\n var image = op.image;\n if (!image) {\n throw \"image can't be empty in watermark\";\n }\n imageUrl += image ? '/image/' + urlSafeBase64Encode(image) : '';\n }\n if (mode === 2) {\n var text = op.text, font = op.font, fontsize = op.fontsize, fill = op.fill;\n if (!text) {\n throw \"text can't be empty in watermark\";\n }\n imageUrl += text ? '/text/' + urlSafeBase64Encode(text) : '';\n imageUrl += font ? '/font/' + urlSafeBase64Encode(font) : '';\n imageUrl += fontsize ? '/fontsize/' + fontsize : '';\n imageUrl += fill ? '/fill/' + urlSafeBase64Encode(fill) : '';\n }\n var dissolve = op.dissolve, gravity = op.gravity, dx = op.dx, dy = op.dy;\n imageUrl += dissolve ? '/dissolve/' + encodeURIComponent(dissolve) : '';\n imageUrl += gravity ? '/gravity/' + encodeURIComponent(gravity) : '';\n imageUrl += dx ? '/dx/' + encodeURIComponent(dx) : '';\n imageUrl += dy ? '/dy/' + encodeURIComponent(dy) : '';\n if (key && domain) {\n imageUrl = getImageUrl(key, domain) + '?' + imageUrl;\n }\n return imageUrl;\n}\n// invoke the imageInfo api of Qiniu\nexport function imageInfo(key, domain) {\n var url = getImageUrl(key, domain) + '?imageInfo';\n return request(url, { method: 'GET' });\n}\n// invoke the exif api of Qiniu\nexport function exif(key, domain) {\n var url = getImageUrl(key, domain) + '?exif';\n return request(url, { method: 'GET' });\n}\nexport function pipeline(arr, key, domain) {\n var isArray = Object.prototype.toString.call(arr) === '[object Array]';\n var option;\n var errOp = false;\n var imageUrl = '';\n if (isArray) {\n for (var i = 0, len = arr.length; i < len; i++) {\n option = arr[i];\n if (!option.fop) {\n throw \"fop can't be empty in pipeline\";\n }\n switch (option.fop) {\n case 'watermark':\n imageUrl += watermark(option) + '|';\n break;\n case 'imageView2':\n imageUrl += imageView2(option) + '|';\n break;\n case 'imageMogr2':\n imageUrl += imageMogr2(option) + '|';\n break;\n default:\n errOp = true;\n break;\n }\n if (errOp) {\n throw 'fop is wrong in pipeline';\n }\n }\n if (key && domain) {\n imageUrl = getImageUrl(key, domain) + '?' + imageUrl;\n var length_1 = imageUrl.length;\n if (imageUrl.slice(length_1 - 1) === '|') {\n imageUrl = imageUrl.slice(0, length_1 - 1);\n }\n }\n return imageUrl;\n }\n throw \"pipeline's first param should be array\";\n}\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}