@@ -7281,7 +7281,7 @@ module.exports = function(module) {
72817281/*! exports provided: name, version, description, main, types, scripts, repository, keywords, author, license, bugs, homepage, dependencies, devDependencies, default */
72827282/***/ ( function ( module ) {
72837283
7284- module . exports = JSON . parse ( "{\"name\":\"cos-js-sdk-v5\",\"version\":\"1.8.0\",\"description\":\"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)\",\"main\":\"dist/cos-js-sdk-v5.js\",\"types\":\"index.d.ts\",\"scripts\":{\"prettier\":\"prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js lib/request.js index.d.ts\",\"server\":\"node server/sts.js\",\"dev\":\"cross-env NODE_ENV=development webpack -w --mode=development\",\"build\":\"cross-env NODE_ENV=production webpack --mode=production\",\"cos-auth.min.js\":\"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m\",\"test\":\"jest --runInBand --coverage\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/tencentyun/cos-js-sdk-v5.git\"},\"keywords\":[],\"author\":\"carsonxu\",\"license\":\"ISC\",\"bugs\":{\"url\":\"https://github.com/tencentyun/cos-js-sdk-v5/issues\"},\"homepage\":\"https://github.com/tencentyun/cos-js-sdk-v5#readme\",\"dependencies\":{\"@xmldom/xmldom\":\"^0.8.6\"},\"devDependencies\":{\"@babel/core\":\"7.17.9\",\"@babel/plugin-transform-runtime\":\"7.18.10\",\"@babel/preset-env\":\"7.16.11\",\"babel-loader\":\"8.2.5\",\"body-parser\":\"^1.18.3\",\"cross-env\":\"^5.2.0\",\"express\":\"^4.16.4\",\"jest\":\"^29.3.1\",\"jest-environment-jsdom\":\"^29.3.1\",\"prettier\":\"^3.0.1\",\"qcloud-cos-sts\":\"^3.0.2\",\"request\":\"^2.87.0\",\"terser-webpack-plugin\":\"4.2.3\",\"uglifyjs\":\"^2.4.11\",\"webpack\":\"4.46.0\",\"webpack-cli\":\"4.10.0\"}}" ) ;
7284+ module . exports = JSON . parse ( "{\"name\":\"cos-js-sdk-v5\",\"version\":\"1.8.1\",\"description\":\"JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)\",\"main\":\"dist/cos-js-sdk-v5.js\",\"types\":\"index.d.ts\",\"scripts\":{\"prettier\":\"prettier --write src demo/demo.js demo/CIDemos/*.js test/test.js server/sts.js lib/request.js index.d.ts\",\"server\":\"node server/sts.js\",\"dev\":\"cross-env NODE_ENV=development webpack -w --mode=development\",\"build\":\"cross-env NODE_ENV=production webpack --mode=production\",\"cos-auth.min.js\":\"uglifyjs ./demo/common/cos-auth.js -o ./demo/common/cos-auth.min.js -c -m\",\"test\":\"jest --runInBand --coverage\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/tencentyun/cos-js-sdk-v5.git\"},\"keywords\":[],\"author\":\"carsonxu\",\"license\":\"ISC\",\"bugs\":{\"url\":\"https://github.com/tencentyun/cos-js-sdk-v5/issues\"},\"homepage\":\"https://github.com/tencentyun/cos-js-sdk-v5#readme\",\"dependencies\":{\"@xmldom/xmldom\":\"^0.8.6\"},\"devDependencies\":{\"@babel/core\":\"7.17.9\",\"@babel/plugin-transform-runtime\":\"7.18.10\",\"@babel/preset-env\":\"7.16.11\",\"babel-loader\":\"8.2.5\",\"body-parser\":\"^1.18.3\",\"cross-env\":\"^5.2.0\",\"express\":\"^4.16.4\",\"jest\":\"^29.3.1\",\"jest-environment-jsdom\":\"^29.3.1\",\"prettier\":\"^3.0.1\",\"qcloud-cos-sts\":\"^3.0.2\",\"request\":\"^2.87.0\",\"terser-webpack-plugin\":\"4.2.3\",\"uglifyjs\":\"^2.4.11\",\"webpack\":\"4.46.0\",\"webpack-cli\":\"4.10.0\"}}" ) ;
72857285
72867286/***/ } ) ,
72877287
@@ -7340,7 +7340,9 @@ function sliceUploadFile(params, callback) {
73407340 var metaHeaders = { } ;
73417341 util . each ( params . Headers , function ( val , k ) {
73427342 var shortKey = k . toLowerCase ( ) ;
7343- if ( shortKey . indexOf ( 'x-cos-meta-' ) === 0 || shortKey === 'pic-operations' ) metaHeaders [ k ] = val ;
7343+ if ( shortKey . indexOf ( 'x-cos-meta-' ) === 0 || shortKey === 'pic-operations' ) {
7344+ metaHeaders [ k ] = val ;
7345+ }
73447346 } ) ;
73457347 uploadSliceComplete . call ( self , {
73467348 Bucket : Bucket ,
@@ -12576,42 +12578,40 @@ function _submitRequest(params, callback) {
1257612578 var statusSuccess = Math . floor ( statusCode / 100 ) === 2 ; // 200 202 204 206
1257712579
1257812580 // 不对 body 进行转换,body 直接挂载返回
12579- if ( rawBody && statusSuccess ) return cb ( null , {
12580- body : body
12581- } ) ;
12582- // if (rawBody) {
12583- // if (statusSuccess) {
12584- // return cb(null, { body: body });
12585- // } else {
12586- // // 兼容body返回了 json 格式的 error
12587- // var errorBody = {};
12588- // try {
12589- // errorBody = JSON.parse(body);
12590- // } catch (e) {}
12591- // return cb(
12592- // util.error(new Error(errorBody.Message || 'response body error'), { code: errorBody.Code, error: errorBody })
12593- // );
12594- // }
12595- // }
12596-
12597- // 解析 xml body
12598- var json ;
12599- try {
12600- json = body && body . indexOf ( '<' ) > - 1 && body . indexOf ( '>' ) > - 1 && util . xml2json ( body ) || { } ;
12601- } catch ( e ) {
12602- json = { } ;
12581+ if ( rawBody ) {
12582+ if ( statusSuccess ) {
12583+ return cb ( null , {
12584+ body : body
12585+ } ) ;
12586+ } else {
12587+ // 兼容报错时返回了 blob,需要解析成 string
12588+ if ( body instanceof Blob ) {
12589+ util . readAsBinaryString ( body , function ( content ) {
12590+ var json = util . parseResBody ( content ) ;
12591+ var errorBody = json . Error || json ;
12592+ return cb ( util . error ( new Error ( errorBody . Message || 'response body error' ) , {
12593+ code : errorBody . Code ,
12594+ error : errorBody
12595+ } ) ) ;
12596+ } ) ;
12597+ return ;
12598+ }
12599+ }
1260312600 }
1260412601
12602+ // 解析body,兼容 xml、json,解析失败时完整返回
12603+ var json = util . parseResBody ( body ) ;
12604+
1260512605 // 处理返回值
12606- var xmlError = json && json . Error ;
12606+ var errorBody = json . Error || json ;
1260712607 if ( statusSuccess ) {
1260812608 // 正确返回,状态码 2xx 时,body 不会有 Error
1260912609 cb ( null , json ) ;
12610- } else if ( xmlError ) {
12610+ } else if ( errorBody ) {
1261112611 // 正常返回了 xml body,且有 Error 节点
12612- cb ( util . error ( new Error ( xmlError . Message ) , {
12613- code : xmlError . Code ,
12614- error : xmlError
12612+ cb ( util . error ( new Error ( errorBody . Message ) , {
12613+ code : errorBody . Code ,
12614+ error : errorBody
1261512615 } ) ) ;
1261612616 } else if ( statusCode ) {
1261712617 // 有错误的状态码
@@ -14483,6 +14483,40 @@ var simplifyPath = function simplifyPath(path) {
1448314483 }
1448414484 return '/' + stack . join ( '/' ) ;
1448514485} ;
14486+
14487+ // 解析响应体,兼容 xml、json
14488+ var parseResBody = function parseResBody ( responseBody ) {
14489+ var json ;
14490+ if ( responseBody && typeof responseBody === 'string' ) {
14491+ var trimBody = responseBody . trim ( ) ;
14492+ var isXml = trimBody . indexOf ( '<' ) === 0 ;
14493+ var isJson = trimBody . indexOf ( '{' ) === 0 ;
14494+ if ( isXml ) {
14495+ // xml 解析,解析失败返回{}
14496+ json = util . xml2json ( responseBody ) || { } ;
14497+ } else if ( isJson ) {
14498+ // json解析,解析失败返回原始 Body
14499+ try {
14500+ // 替换 json 中的换行符为空格,否则解析会出错
14501+ var formatBody = responseBody . replace ( / \n / g, ' ' ) ;
14502+ var parsedBody = JSON . parse ( formatBody ) ;
14503+ // 确保解析出 json 对象
14504+ if ( Object . prototype . toString . call ( parsedBody ) === '[object Object]' ) {
14505+ json = parsedBody ;
14506+ } else {
14507+ json = responseBody ;
14508+ }
14509+ } catch ( e ) {
14510+ json = responseBody ;
14511+ }
14512+ } else {
14513+ json = responseBody ;
14514+ }
14515+ } else {
14516+ json = responseBody || { } ;
14517+ }
14518+ return json ;
14519+ } ;
1448614520var util = {
1448714521 noop : noop ,
1448814522 formatParams : formatParams ,
@@ -14519,7 +14553,9 @@ var util = {
1451914553 isCIHost : isCIHost ,
1452014554 isIOS_QQ : isIOS && isQQ ,
1452114555 encodeBase64 : encodeBase64 ,
14522- simplifyPath : simplifyPath
14556+ simplifyPath : simplifyPath ,
14557+ readAsBinaryString : readAsBinaryString ,
14558+ parseResBody : parseResBody
1452314559} ;
1452414560module . exports = util ;
1452514561/* WEBPACK VAR INJECTION */ } . call ( this , __webpack_require__ ( /*! ./../node_modules/process/browser.js */ "./node_modules/process/browser.js" ) ) )
0 commit comments