pcm-agents 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/LICENSE +21 -21
  2. package/dist/cjs/index-BFPEnLbS.js +195 -0
  3. package/dist/cjs/index-BFPEnLbS.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/my-component.cjs.entry.js +2 -2
  7. package/dist/cjs/my-component.cjs.entry.js.map +1 -1
  8. package/dist/cjs/my-component.entry.cjs.js.map +1 -1
  9. package/dist/cjs/pcm-agents.cjs.js +1 -1
  10. package/dist/cjs/pcm-app-chat-modal.pcm-chat-message.pcm-hr-chat-modal.pcm-jlpx-modal.pcm-mnms-modal.pcm-video-chat-modal.pcm-zygh-modal.entry.cjs.js.map +1 -0
  11. package/dist/cjs/pcm-app-chat-modal_7.cjs.entry.js +6560 -0
  12. package/dist/cjs/pcm-app-chat-modal_7.cjs.entry.js.map +1 -0
  13. package/dist/cjs/pcm-chat-modal.cjs.entry.js +17 -32
  14. package/dist/cjs/pcm-chat-modal.cjs.entry.js.map +1 -1
  15. package/dist/cjs/pcm-chat-modal.entry.cjs.js.map +1 -1
  16. package/dist/collection/collection-manifest.json +2 -0
  17. package/dist/collection/components/my-component/my-component.css +3 -3
  18. package/dist/collection/components/my-component/my-component.js +1 -1
  19. package/dist/collection/components/my-component/my-component.js.map +1 -1
  20. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.css +2 -1
  21. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js +137 -159
  22. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js.map +1 -1
  23. package/dist/collection/components/pcm-chat-message/pcm-chat-message.css +66 -12
  24. package/dist/collection/components/pcm-chat-message/pcm-chat-message.js +106 -13
  25. package/dist/collection/components/pcm-chat-message/pcm-chat-message.js.map +1 -1
  26. package/dist/collection/components/pcm-chat-modal/pcm-chat-modal.js +39 -34
  27. package/dist/collection/components/pcm-chat-modal/pcm-chat-modal.js.map +1 -1
  28. package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.js +76 -105
  29. package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.js.map +1 -1
  30. package/dist/collection/components/pcm-jlpx-modal/pcm-jlpx-modal.css +162 -0
  31. package/dist/collection/components/pcm-jlpx-modal/pcm-jlpx-modal.js +616 -0
  32. package/dist/collection/components/pcm-jlpx-modal/pcm-jlpx-modal.js.map +1 -0
  33. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.css +0 -79
  34. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js +133 -81
  35. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js.map +1 -1
  36. package/dist/collection/components/pcm-video-chat-modal/pcm-video-chat-modal.js +77 -101
  37. package/dist/collection/components/pcm-video-chat-modal/pcm-video-chat-modal.js.map +1 -1
  38. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.css +273 -0
  39. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.js +613 -0
  40. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.js.map +1 -0
  41. package/dist/collection/global/global.css +324 -0
  42. package/dist/collection/index.js.map +1 -1
  43. package/dist/collection/interfaces/chat.js.map +1 -1
  44. package/dist/collection/utils/utils.js +54 -113
  45. package/dist/collection/utils/utils.js.map +1 -1
  46. package/dist/components/index.js +1298 -11280
  47. package/dist/components/index.js.map +1 -1
  48. package/dist/components/my-component.js +2 -3
  49. package/dist/components/my-component.js.map +1 -1
  50. package/dist/components/{p-C4l_DOnx.js → p-BctfuDvG.js} +106 -147
  51. package/dist/components/p-BctfuDvG.js.map +1 -0
  52. package/dist/components/{p-D0s1Q-3O.js → p-LkDC0SN2.js} +343 -16
  53. package/dist/components/p-LkDC0SN2.js.map +1 -0
  54. package/dist/components/pcm-app-chat-modal.js +1 -1
  55. package/dist/components/pcm-chat-message.js +1 -1
  56. package/dist/components/pcm-chat-modal.js +19 -34
  57. package/dist/components/pcm-chat-modal.js.map +1 -1
  58. package/dist/components/pcm-hr-chat-modal.js +70 -100
  59. package/dist/components/pcm-hr-chat-modal.js.map +1 -1
  60. package/dist/components/pcm-jlpx-modal.d.ts +11 -0
  61. package/dist/components/pcm-jlpx-modal.js +339 -0
  62. package/dist/components/pcm-jlpx-modal.js.map +1 -0
  63. package/dist/components/pcm-mnms-modal.js +109 -57
  64. package/dist/components/pcm-mnms-modal.js.map +1 -1
  65. package/dist/components/pcm-video-chat-modal.js +74 -99
  66. package/dist/components/pcm-video-chat-modal.js.map +1 -1
  67. package/dist/components/pcm-zygh-modal.d.ts +11 -0
  68. package/dist/components/pcm-zygh-modal.js +330 -0
  69. package/dist/components/pcm-zygh-modal.js.map +1 -0
  70. package/dist/esm/index-nVjZGfA8.js +189 -0
  71. package/dist/esm/index-nVjZGfA8.js.map +1 -0
  72. package/dist/esm/index.js +1 -1
  73. package/dist/esm/loader.js +1 -1
  74. package/dist/esm/my-component.entry.js +2 -2
  75. package/dist/esm/my-component.entry.js.map +1 -1
  76. package/dist/esm/pcm-agents.js +1 -1
  77. package/dist/esm/pcm-app-chat-modal.pcm-chat-message.pcm-hr-chat-modal.pcm-jlpx-modal.pcm-mnms-modal.pcm-video-chat-modal.pcm-zygh-modal.entry.js.map +1 -0
  78. package/dist/esm/pcm-app-chat-modal_7.entry.js +6552 -0
  79. package/dist/esm/pcm-app-chat-modal_7.entry.js.map +1 -0
  80. package/dist/esm/pcm-chat-modal.entry.js +17 -32
  81. package/dist/esm/pcm-chat-modal.entry.js.map +1 -1
  82. package/dist/pcm-agents/index.esm.js +1 -1
  83. package/dist/pcm-agents/my-component.entry.esm.js.map +1 -1
  84. package/dist/pcm-agents/p-55417392.entry.js +2 -0
  85. package/dist/pcm-agents/p-55417392.entry.js.map +1 -0
  86. package/dist/pcm-agents/p-a698b59f.entry.js +2 -0
  87. package/dist/pcm-agents/p-a698b59f.entry.js.map +1 -0
  88. package/dist/pcm-agents/p-f3ca99b4.entry.js +2 -0
  89. package/dist/pcm-agents/p-f3ca99b4.entry.js.map +1 -0
  90. package/dist/pcm-agents/p-nVjZGfA8.js +2 -0
  91. package/dist/pcm-agents/p-nVjZGfA8.js.map +1 -0
  92. package/dist/pcm-agents/pcm-agents.esm.js +1 -1
  93. package/dist/pcm-agents/pcm-app-chat-modal.pcm-chat-message.pcm-hr-chat-modal.pcm-jlpx-modal.pcm-mnms-modal.pcm-video-chat-modal.pcm-zygh-modal.entry.esm.js.map +1 -0
  94. package/dist/pcm-agents/pcm-chat-modal.entry.esm.js.map +1 -1
  95. package/dist/types/components/pcm-app-chat-modal/pcm-app-chat-modal.d.ts +13 -8
  96. package/dist/types/components/pcm-chat-message/pcm-chat-message.d.ts +5 -0
  97. package/dist/types/components/pcm-chat-modal/pcm-chat-modal.d.ts +8 -8
  98. package/dist/types/components/pcm-hr-chat-modal/pcm-hr-chat-modal.d.ts +6 -12
  99. package/dist/types/components/pcm-jlpx-modal/pcm-jlpx-modal.d.ts +113 -0
  100. package/dist/types/components/pcm-mnms-modal/pcm-mnms-modal.d.ts +19 -20
  101. package/dist/types/components/pcm-video-chat-modal/pcm-video-chat-modal.d.ts +4 -4
  102. package/dist/types/components/pcm-zygh-modal/pcm-zygh-modal.d.ts +117 -0
  103. package/dist/types/components.d.ts +429 -80
  104. package/dist/types/interfaces/chat.d.ts +0 -4
  105. package/dist/types/utils/utils.d.ts +29 -83
  106. package/package.json +61 -60
  107. package/readme.md +307 -307
  108. package/dist/cjs/index-DfIUl99H.js +0 -11413
  109. package/dist/cjs/index-DfIUl99H.js.map +0 -1
  110. package/dist/cjs/pcm-app-chat-modal.pcm-chat-message.pcm-mnms-modal.entry.cjs.js.map +0 -1
  111. package/dist/cjs/pcm-app-chat-modal_3.cjs.entry.js +0 -3734
  112. package/dist/cjs/pcm-app-chat-modal_3.cjs.entry.js.map +0 -1
  113. package/dist/cjs/pcm-hr-chat-modal.cjs.entry.js +0 -1078
  114. package/dist/cjs/pcm-hr-chat-modal.cjs.entry.js.map +0 -1
  115. package/dist/cjs/pcm-hr-chat-modal.entry.cjs.js.map +0 -1
  116. package/dist/cjs/pcm-video-chat-modal.cjs.entry.js +0 -927
  117. package/dist/cjs/pcm-video-chat-modal.cjs.entry.js.map +0 -1
  118. package/dist/cjs/pcm-video-chat-modal.entry.cjs.js.map +0 -1
  119. package/dist/components/p-C4l_DOnx.js.map +0 -1
  120. package/dist/components/p-CgDy4pJp.js +0 -1244
  121. package/dist/components/p-CgDy4pJp.js.map +0 -1
  122. package/dist/components/p-D0s1Q-3O.js.map +0 -1
  123. package/dist/esm/index-B2EtEi7v.js +0 -11409
  124. package/dist/esm/index-B2EtEi7v.js.map +0 -1
  125. package/dist/esm/pcm-app-chat-modal.pcm-chat-message.pcm-mnms-modal.entry.js.map +0 -1
  126. package/dist/esm/pcm-app-chat-modal_3.entry.js +0 -3730
  127. package/dist/esm/pcm-app-chat-modal_3.entry.js.map +0 -1
  128. package/dist/esm/pcm-hr-chat-modal.entry.js +0 -1076
  129. package/dist/esm/pcm-hr-chat-modal.entry.js.map +0 -1
  130. package/dist/esm/pcm-video-chat-modal.entry.js +0 -925
  131. package/dist/esm/pcm-video-chat-modal.entry.js.map +0 -1
  132. package/dist/pcm-agents/p-0ddd5c47.entry.js +0 -2
  133. package/dist/pcm-agents/p-0ddd5c47.entry.js.map +0 -1
  134. package/dist/pcm-agents/p-5f624943.entry.js +0 -2
  135. package/dist/pcm-agents/p-5f624943.entry.js.map +0 -1
  136. package/dist/pcm-agents/p-6c07f155.entry.js +0 -2
  137. package/dist/pcm-agents/p-6c07f155.entry.js.map +0 -1
  138. package/dist/pcm-agents/p-9a1fb6ca.entry.js +0 -2
  139. package/dist/pcm-agents/p-9a1fb6ca.entry.js.map +0 -1
  140. package/dist/pcm-agents/p-B2EtEi7v.js +0 -146
  141. package/dist/pcm-agents/p-B2EtEi7v.js.map +0 -1
  142. package/dist/pcm-agents/p-e21bc169.entry.js +0 -2
  143. package/dist/pcm-agents/p-e21bc169.entry.js.map +0 -1
  144. package/dist/pcm-agents/pcm-app-chat-modal.pcm-chat-message.pcm-mnms-modal.entry.esm.js.map +0 -1
  145. package/dist/pcm-agents/pcm-hr-chat-modal.entry.esm.js.map +0 -1
  146. package/dist/pcm-agents/pcm-video-chat-modal.entry.esm.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DfIUl99H.js","sources":["node_modules/.pnpm/cos-js-sdk-v5@1.8.7/node_modules/cos-js-sdk-v5/dist/cos-js-sdk-v5.js","src/utils/utils.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"COS\"] = factory();\n\telse\n\t\troot[\"COS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./index.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./index.js\":\n/*!******************!*\\\n !*** ./index.js ***!\n \\******************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar COS = __webpack_require__(/*! ./src/cos */ \"./src/cos.js\");\nmodule.exports = COS;\n\n/***/ }),\n\n/***/ \"./lib/base64.js\":\n/*!***********************!*\\\n !*** ./lib/base64.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/*\n * $Id: base64.js,v 2.15 2014/04/05 12:58:57 dankogai Exp dankogai $\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n */\n\nvar Base64 = function (global) {\n global = global || {};\n 'use strict';\n // existing version for noConflict()\n var _Base64 = global.Base64;\n var version = \"2.1.9\";\n // if node.js, we use Buffer\n var buffer;\n // constants\n var b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var b64tab = function (bin) {\n var t = {};\n for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;\n return t;\n }(b64chars);\n var fromCharCode = String.fromCharCode;\n // encoder stuff\n var cb_utob = function cb_utob(c) {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c : cc < 0x800 ? fromCharCode(0xc0 | cc >>> 6) + fromCharCode(0x80 | cc & 0x3f) : fromCharCode(0xe0 | cc >>> 12 & 0x0f) + fromCharCode(0x80 | cc >>> 6 & 0x3f) + fromCharCode(0x80 | cc & 0x3f);\n } else {\n var cc = 0x10000 + (c.charCodeAt(0) - 0xD800) * 0x400 + (c.charCodeAt(1) - 0xDC00);\n return fromCharCode(0xf0 | cc >>> 18 & 0x07) + fromCharCode(0x80 | cc >>> 12 & 0x3f) + fromCharCode(0x80 | cc >>> 6 & 0x3f) + fromCharCode(0x80 | cc & 0x3f);\n }\n };\n var re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n var utob = function utob(u) {\n return u.replace(re_utob, cb_utob);\n };\n var cb_encode = function cb_encode(ccc) {\n var padlen = [0, 2, 1][ccc.length % 3],\n ord = ccc.charCodeAt(0) << 16 | (ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8 | (ccc.length > 2 ? ccc.charCodeAt(2) : 0),\n chars = [b64chars.charAt(ord >>> 18), b64chars.charAt(ord >>> 12 & 63), padlen >= 2 ? '=' : b64chars.charAt(ord >>> 6 & 63), padlen >= 1 ? '=' : b64chars.charAt(ord & 63)];\n return chars.join('');\n };\n var btoa = global.btoa ? function (b) {\n return global.btoa(b);\n } : function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n var _encode = buffer ? function (u) {\n return (u.constructor === buffer.constructor ? u : new buffer(u)).toString('base64');\n } : function (u) {\n return btoa(utob(u));\n };\n var encode = function encode(u, urisafe) {\n return !urisafe ? _encode(String(u)) : _encode(String(u)).replace(/[+\\/]/g, function (m0) {\n return m0 == '+' ? '-' : '_';\n }).replace(/=/g, '');\n };\n var encodeURI = function encodeURI(u) {\n return encode(u, true);\n };\n // decoder stuff\n var re_btou = new RegExp(['[\\xC0-\\xDF][\\x80-\\xBF]', '[\\xE0-\\xEF][\\x80-\\xBF]{2}', '[\\xF0-\\xF7][\\x80-\\xBF]{3}'].join('|'), 'g');\n var cb_btou = function cb_btou(cccc) {\n switch (cccc.length) {\n case 4:\n var cp = (0x07 & cccc.charCodeAt(0)) << 18 | (0x3f & cccc.charCodeAt(1)) << 12 | (0x3f & cccc.charCodeAt(2)) << 6 | 0x3f & cccc.charCodeAt(3),\n offset = cp - 0x10000;\n return fromCharCode((offset >>> 10) + 0xD800) + fromCharCode((offset & 0x3FF) + 0xDC00);\n case 3:\n return fromCharCode((0x0f & cccc.charCodeAt(0)) << 12 | (0x3f & cccc.charCodeAt(1)) << 6 | 0x3f & cccc.charCodeAt(2));\n default:\n return fromCharCode((0x1f & cccc.charCodeAt(0)) << 6 | 0x3f & cccc.charCodeAt(1));\n }\n };\n var btou = function btou(b) {\n return b.replace(re_btou, cb_btou);\n };\n var cb_decode = function cb_decode(cccc) {\n var len = cccc.length,\n padlen = len % 4,\n n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) | (len > 3 ? b64tab[cccc.charAt(3)] : 0),\n chars = [fromCharCode(n >>> 16), fromCharCode(n >>> 8 & 0xff), fromCharCode(n & 0xff)];\n chars.length -= [0, 0, 2, 1][padlen];\n return chars.join('');\n };\n var atob = global.atob ? function (a) {\n return global.atob(a);\n } : function (a) {\n return a.replace(/[\\s\\S]{1,4}/g, cb_decode);\n };\n var _decode = buffer ? function (a) {\n return (a.constructor === buffer.constructor ? a : new buffer(a, 'base64')).toString();\n } : function (a) {\n return btou(atob(a));\n };\n var decode = function decode(a) {\n return _decode(String(a).replace(/[-_]/g, function (m0) {\n return m0 == '-' ? '+' : '/';\n }).replace(/[^A-Za-z0-9\\+\\/]/g, ''));\n };\n var noConflict = function noConflict() {\n var Base64 = global.Base64;\n global.Base64 = _Base64;\n return Base64;\n };\n // export Base64\n var Base64 = {\n VERSION: version,\n atob: atob,\n btoa: btoa,\n fromBase64: decode,\n toBase64: encode,\n utob: utob,\n encode: encode,\n encodeURI: encodeURI,\n btou: btou,\n decode: decode,\n noConflict: noConflict\n };\n return Base64;\n}();\nmodule.exports = Base64;\n\n/***/ }),\n\n/***/ \"./lib/crypto.js\":\n/*!***********************!*\\\n !*** ./lib/crypto.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/*\n CryptoJS v3.1.2\n code.google.com/p/crypto-js\n (c) 2009-2013 by Jeff Mott. All rights reserved.\n code.google.com/p/crypto-js/wiki/License\n */\nvar CryptoJS = CryptoJS || function (g, l) {\n var e = {},\n d = e.lib = {},\n m = function m() {},\n k = d.Base = {\n extend: function extend(a) {\n m.prototype = this;\n var c = new m();\n a && c.mixIn(a);\n c.hasOwnProperty(\"init\") || (c.init = function () {\n c.$super.init.apply(this, arguments);\n });\n c.init.prototype = c;\n c.$super = this;\n return c;\n },\n create: function create() {\n var a = this.extend();\n a.init.apply(a, arguments);\n return a;\n },\n init: function init() {},\n mixIn: function mixIn(a) {\n for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]);\n a.hasOwnProperty(\"toString\") && (this.toString = a.toString);\n },\n clone: function clone() {\n return this.init.prototype.extend(this);\n }\n },\n p = d.WordArray = k.extend({\n init: function init(a, c) {\n a = this.words = a || [];\n this.sigBytes = c != l ? c : 4 * a.length;\n },\n toString: function toString(a) {\n return (a || n).stringify(this);\n },\n concat: function concat(a) {\n var c = this.words,\n q = a.words,\n f = this.sigBytes;\n a = a.sigBytes;\n this.clamp();\n if (f % 4) for (var b = 0; b < a; b++) c[f + b >>> 2] |= (q[b >>> 2] >>> 24 - 8 * (b % 4) & 255) << 24 - 8 * ((f + b) % 4);else if (65535 < q.length) for (b = 0; b < a; b += 4) c[f + b >>> 2] = q[b >>> 2];else c.push.apply(c, q);\n this.sigBytes += a;\n return this;\n },\n clamp: function clamp() {\n var a = this.words,\n c = this.sigBytes;\n a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4);\n a.length = g.ceil(c / 4);\n },\n clone: function clone() {\n var a = k.clone.call(this);\n a.words = this.words.slice(0);\n return a;\n },\n random: function random(a) {\n for (var c = [], b = 0; b < a; b += 4) c.push(4294967296 * g.random() | 0);\n return new p.init(c, a);\n }\n }),\n b = e.enc = {},\n n = b.Hex = {\n stringify: function stringify(a) {\n var c = a.words;\n a = a.sigBytes;\n for (var b = [], f = 0; f < a; f++) {\n var d = c[f >>> 2] >>> 24 - 8 * (f % 4) & 255;\n b.push((d >>> 4).toString(16));\n b.push((d & 15).toString(16));\n }\n return b.join(\"\");\n },\n parse: function parse(a) {\n for (var c = a.length, b = [], f = 0; f < c; f += 2) b[f >>> 3] |= parseInt(a.substr(f, 2), 16) << 24 - 4 * (f % 8);\n return new p.init(b, c / 2);\n }\n },\n j = b.Latin1 = {\n stringify: function stringify(a) {\n var c = a.words;\n a = a.sigBytes;\n for (var b = [], f = 0; f < a; f++) b.push(String.fromCharCode(c[f >>> 2] >>> 24 - 8 * (f % 4) & 255));\n return b.join(\"\");\n },\n parse: function parse(a) {\n for (var c = a.length, b = [], f = 0; f < c; f++) b[f >>> 2] |= (a.charCodeAt(f) & 255) << 24 - 8 * (f % 4);\n return new p.init(b, c);\n }\n },\n h = b.Utf8 = {\n stringify: function stringify(a) {\n try {\n return decodeURIComponent(escape(j.stringify(a)));\n } catch (c) {\n throw Error(\"Malformed UTF-8 data\");\n }\n },\n parse: function parse(a) {\n return j.parse(unescape(encodeURIComponent(a)));\n }\n },\n r = d.BufferedBlockAlgorithm = k.extend({\n reset: function reset() {\n this._data = new p.init();\n this._nDataBytes = 0;\n },\n _append: function _append(a) {\n \"string\" == typeof a && (a = h.parse(a));\n this._data.concat(a);\n this._nDataBytes += a.sigBytes;\n },\n _process: function _process(a) {\n var c = this._data,\n b = c.words,\n f = c.sigBytes,\n d = this.blockSize,\n e = f / (4 * d),\n e = a ? g.ceil(e) : g.max((e | 0) - this._minBufferSize, 0);\n a = e * d;\n f = g.min(4 * a, f);\n if (a) {\n for (var k = 0; k < a; k += d) this._doProcessBlock(b, k);\n k = b.splice(0, a);\n c.sigBytes -= f;\n }\n return new p.init(k, f);\n },\n clone: function clone() {\n var a = k.clone.call(this);\n a._data = this._data.clone();\n return a;\n },\n _minBufferSize: 0\n });\n d.Hasher = r.extend({\n cfg: k.extend(),\n init: function init(a) {\n this.cfg = this.cfg.extend(a);\n this.reset();\n },\n reset: function reset() {\n r.reset.call(this);\n this._doReset();\n },\n update: function update(a) {\n this._append(a);\n this._process();\n return this;\n },\n finalize: function finalize(a) {\n a && this._append(a);\n return this._doFinalize();\n },\n blockSize: 16,\n _createHelper: function _createHelper(a) {\n return function (b, d) {\n return new a.init(d).finalize(b);\n };\n },\n _createHmacHelper: function _createHmacHelper(a) {\n return function (b, d) {\n return new s.HMAC.init(a, d).finalize(b);\n };\n }\n });\n var s = e.algo = {};\n return e;\n}(Math);\n(function () {\n var g = CryptoJS,\n l = g.lib,\n e = l.WordArray,\n d = l.Hasher,\n m = [],\n l = g.algo.SHA1 = d.extend({\n _doReset: function _doReset() {\n this._hash = new e.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);\n },\n _doProcessBlock: function _doProcessBlock(d, e) {\n for (var b = this._hash.words, n = b[0], j = b[1], h = b[2], g = b[3], l = b[4], a = 0; 80 > a; a++) {\n if (16 > a) m[a] = d[e + a] | 0;else {\n var c = m[a - 3] ^ m[a - 8] ^ m[a - 14] ^ m[a - 16];\n m[a] = c << 1 | c >>> 31;\n }\n c = (n << 5 | n >>> 27) + l + m[a];\n c = 20 > a ? c + ((j & h | ~j & g) + 1518500249) : 40 > a ? c + ((j ^ h ^ g) + 1859775393) : 60 > a ? c + ((j & h | j & g | h & g) - 1894007588) : c + ((j ^ h ^ g) - 899497514);\n l = g;\n g = h;\n h = j << 30 | j >>> 2;\n j = n;\n n = c;\n }\n b[0] = b[0] + n | 0;\n b[1] = b[1] + j | 0;\n b[2] = b[2] + h | 0;\n b[3] = b[3] + g | 0;\n b[4] = b[4] + l | 0;\n },\n _doFinalize: function _doFinalize() {\n var d = this._data,\n e = d.words,\n b = 8 * this._nDataBytes,\n g = 8 * d.sigBytes;\n e[g >>> 5] |= 128 << 24 - g % 32;\n e[(g + 64 >>> 9 << 4) + 14] = Math.floor(b / 4294967296);\n e[(g + 64 >>> 9 << 4) + 15] = b;\n d.sigBytes = 4 * e.length;\n this._process();\n return this._hash;\n },\n clone: function clone() {\n var e = d.clone.call(this);\n e._hash = this._hash.clone();\n return e;\n }\n });\n g.SHA1 = d._createHelper(l);\n g.HmacSHA1 = d._createHmacHelper(l);\n})();\n(function () {\n var g = CryptoJS,\n l = g.enc.Utf8;\n g.algo.HMAC = g.lib.Base.extend({\n init: function init(e, d) {\n e = this._hasher = new e.init();\n \"string\" == typeof d && (d = l.parse(d));\n var g = e.blockSize,\n k = 4 * g;\n d.sigBytes > k && (d = e.finalize(d));\n d.clamp();\n for (var p = this._oKey = d.clone(), b = this._iKey = d.clone(), n = p.words, j = b.words, h = 0; h < g; h++) n[h] ^= 1549556828, j[h] ^= 909522486;\n p.sigBytes = b.sigBytes = k;\n this.reset();\n },\n reset: function reset() {\n var e = this._hasher;\n e.reset();\n e.update(this._iKey);\n },\n update: function update(e) {\n this._hasher.update(e);\n return this;\n },\n finalize: function finalize(e) {\n var d = this._hasher;\n e = d.finalize(e);\n d.reset();\n return d.finalize(this._oKey.clone().concat(e));\n }\n });\n})();\n(function () {\n // Shortcuts\n var C = CryptoJS;\n var C_lib = C.lib;\n var WordArray = C_lib.WordArray;\n var C_enc = C.enc;\n\n /**\n * Base64 encoding strategy.\n */\n var Base64 = C_enc.Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify: function stringify(wordArray) {\n // Shortcuts\n var words = wordArray.words;\n var sigBytes = wordArray.sigBytes;\n var map = this._map;\n\n // Clamp excess bits\n wordArray.clamp();\n\n // Convert\n var base64Chars = [];\n for (var i = 0; i < sigBytes; i += 3) {\n var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff;\n var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff;\n var triplet = byte1 << 16 | byte2 << 8 | byte3;\n for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {\n base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f));\n }\n }\n\n // Add padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar);\n }\n }\n return base64Chars.join('');\n },\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse: function parse(base64Str) {\n // Shortcuts\n var base64StrLength = base64Str.length;\n var map = this._map;\n\n // Ignore padding\n var paddingChar = map.charAt(64);\n if (paddingChar) {\n var paddingIndex = base64Str.indexOf(paddingChar);\n if (paddingIndex != -1) {\n base64StrLength = paddingIndex;\n }\n }\n\n // Convert\n var words = [];\n var nBytes = 0;\n for (var i = 0; i < base64StrLength; i++) {\n if (i % 4) {\n var bits1 = map.indexOf(base64Str.charAt(i - 1)) << i % 4 * 2;\n var bits2 = map.indexOf(base64Str.charAt(i)) >>> 6 - i % 4 * 2;\n words[nBytes >>> 2] |= (bits1 | bits2) << 24 - nBytes % 4 * 8;\n nBytes++;\n }\n }\n return WordArray.create(words, nBytes);\n },\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n})();\nif (( false ? undefined : _typeof(module)) === 'object') {\n module.exports = CryptoJS;\n} else {\n window.CryptoJS = CryptoJS;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./lib/md5.js\":\n/*!********************!*\\\n !*** ./lib/md5.js ***!\n \\********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\n/* https://github.com/emn178/js-md5 */\n(function () {\n 'use strict';\n\n var WINDOW = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_MD5_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && (typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) === 'object';\n if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && ( false ? undefined : _typeof(module)) === 'object' && module.exports;\n var AMD = true && __webpack_require__(/*! !webpack amd options */ \"./node_modules/webpack/buildin/amd-options.js\");\n var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [128, 32768, 8388608, -2147483648];\n var SHIFT = [0, 8, 16, 24];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64'];\n var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n var blocks = [],\n buffer8;\n if (ARRAY_BUFFER) {\n var buffer = new ArrayBuffer(68);\n buffer8 = new Uint8Array(buffer);\n blocks = new Uint32Array(buffer);\n }\n if (root.JS_MD5_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return _typeof(obj) === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n /**\n * @method hex\n * @memberof md5\n * @description Output hash as hex string\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} Hex string\n * @example\n * md5.hex('The quick brown fox jumps over the lazy dog');\n * // equal to\n * md5('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method digest\n * @memberof md5\n * @description Output hash as bytes array\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Array} Bytes array\n * @example\n * md5.digest('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method array\n * @memberof md5\n * @description Output hash as bytes array\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Array} Bytes array\n * @example\n * md5.array('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method arrayBuffer\n * @memberof md5\n * @description Output hash as ArrayBuffer\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {ArrayBuffer} ArrayBuffer\n * @example\n * md5.arrayBuffer('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method buffer\n * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.\n * @memberof md5\n * @description Output hash as ArrayBuffer\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {ArrayBuffer} ArrayBuffer\n * @example\n * md5.buffer('The quick brown fox jumps over the lazy dog');\n */\n /**\n * @method base64\n * @memberof md5\n * @description Output hash as base64 string\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} base64 string\n * @example\n * md5.base64('The quick brown fox jumps over the lazy dog');\n */\n var createOutputMethod = function createOutputMethod(outputType) {\n return function (message, isBinStr) {\n return new Md5(true).update(message, isBinStr)[outputType]();\n };\n };\n\n /**\n * @method create\n * @memberof md5\n * @description Create Md5 object\n * @returns {Md5} Md5 object.\n * @example\n * var hash = md5.create();\n */\n /**\n * @method update\n * @memberof md5\n * @description Create and update Md5 object\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Md5} Md5 object.\n * @example\n * var hash = md5.update('The quick brown fox jumps over the lazy dog');\n * // equal to\n * var hash = md5.create();\n * hash.update('The quick brown fox jumps over the lazy dog');\n */\n var createMethod = function createMethod() {\n var method = createOutputMethod('hex');\n method.getCtx = method.create = function () {\n return new Md5();\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type);\n }\n return method;\n };\n\n /**\n * Md5 class\n * @class Md5\n * @description This is internal class.\n * @see {@link md5.create}\n */\n function Md5(sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n this.buffer8 = buffer8;\n } else {\n if (ARRAY_BUFFER) {\n var buffer = new ArrayBuffer(68);\n this.buffer8 = new Uint8Array(buffer);\n this.blocks = new Uint32Array(buffer);\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n }\n this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n }\n\n /**\n * @method update\n * @memberof Md5\n * @instance\n * @description Update hash\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {Md5} Md5 object.\n * @see {@link md5.update}\n */\n Md5.prototype.update = function (message, isBinStr) {\n if (this.finalized) {\n return;\n }\n var code,\n index = 0,\n i,\n length = message.length,\n blocks = this.blocks;\n var buffer8 = this.buffer8;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n if (ARRAY_BUFFER) {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (isBinStr || code < 0x80) {\n buffer8[i++] = code;\n } else if (code < 0x800) {\n buffer8[i++] = 0xc0 | code >> 6;\n buffer8[i++] = 0x80 | code & 0x3f;\n } else if (code < 0xd800 || code >= 0xe000) {\n buffer8[i++] = 0xe0 | code >> 12;\n buffer8[i++] = 0x80 | code >> 6 & 0x3f;\n buffer8[i++] = 0x80 | code & 0x3f;\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n buffer8[i++] = 0xf0 | code >> 18;\n buffer8[i++] = 0x80 | code >> 12 & 0x3f;\n buffer8[i++] = 0x80 | code >> 6 & 0x3f;\n buffer8[i++] = 0x80 | code & 0x3f;\n }\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (isBinStr || code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n Md5.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks,\n i = this.lastByteIndex;\n blocks[i >> 2] |= EXTRA[i & 3];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.bytes << 3;\n blocks[15] = this.hBytes << 3 | this.bytes >>> 29;\n this.hash();\n };\n Md5.prototype.hash = function () {\n var a,\n b,\n c,\n d,\n bc,\n da,\n blocks = this.blocks;\n if (this.first) {\n a = blocks[0] - 680876937;\n a = (a << 7 | a >>> 25) - 271733879 << 0;\n d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708;\n d = (d << 12 | d >>> 20) + a << 0;\n c = (-271733879 ^ d & (a ^ -271733879)) + blocks[2] - 1126478375;\n c = (c << 17 | c >>> 15) + d << 0;\n b = (a ^ c & (d ^ a)) + blocks[3] - 1316259209;\n b = (b << 22 | b >>> 10) + c << 0;\n } else {\n a = this.h0;\n b = this.h1;\n c = this.h2;\n d = this.h3;\n a += (d ^ b & (c ^ d)) + blocks[0] - 680876936;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ a & (b ^ c)) + blocks[1] - 389564586;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ d & (a ^ b)) + blocks[2] + 606105819;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ c & (d ^ a)) + blocks[3] - 1044525330;\n b = (b << 22 | b >>> 10) + c << 0;\n }\n a += (d ^ b & (c ^ d)) + blocks[4] - 176418897;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ a & (b ^ c)) + blocks[5] + 1200080426;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ d & (a ^ b)) + blocks[6] - 1473231341;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ c & (d ^ a)) + blocks[7] - 45705983;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ b & (c ^ d)) + blocks[8] + 1770035416;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ a & (b ^ c)) + blocks[9] - 1958414417;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ d & (a ^ b)) + blocks[10] - 42063;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ c & (d ^ a)) + blocks[11] - 1990404162;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ b & (c ^ d)) + blocks[12] + 1804603682;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ a & (b ^ c)) + blocks[13] - 40341101;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ d & (a ^ b)) + blocks[14] - 1502002290;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ c & (d ^ a)) + blocks[15] + 1236535329;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (c ^ d & (b ^ c)) + blocks[1] - 165796510;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ c & (a ^ b)) + blocks[6] - 1069501632;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ b & (d ^ a)) + blocks[11] + 643717713;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ a & (c ^ d)) + blocks[0] - 373897302;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ d & (b ^ c)) + blocks[5] - 701558691;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ c & (a ^ b)) + blocks[10] + 38016083;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ b & (d ^ a)) + blocks[15] - 660478335;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ a & (c ^ d)) + blocks[4] - 405537848;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ d & (b ^ c)) + blocks[9] + 568446438;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ c & (a ^ b)) + blocks[14] - 1019803690;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ b & (d ^ a)) + blocks[3] - 187363961;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ a & (c ^ d)) + blocks[8] + 1163531501;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ d & (b ^ c)) + blocks[13] - 1444681467;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ c & (a ^ b)) + blocks[2] - 51403784;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ b & (d ^ a)) + blocks[7] + 1735328473;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ a & (c ^ d)) + blocks[12] - 1926607734;\n b = (b << 20 | b >>> 12) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[5] - 378558;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[8] - 2022574463;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[11] + 1839030562;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[14] - 35309556;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[1] - 1530992060;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[4] + 1272893353;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[7] - 155497632;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[10] - 1094730640;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[13] + 681279174;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[0] - 358537222;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[3] - 722521979;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[6] + 76029189;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[9] - 640364487;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[12] - 421815835;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[15] + 530742520;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[2] - 995338651;\n b = (b << 23 | b >>> 9) + c << 0;\n a += (c ^ (b | ~d)) + blocks[0] - 198630844;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[7] + 1126891415;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[14] - 1416354905;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[5] - 57434055;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[12] + 1700485571;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[3] - 1894986606;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[10] - 1051523;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[1] - 2054922799;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[8] + 1873313359;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[15] - 30611744;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[6] - 1560198380;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[13] + 1309151649;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[4] - 145523070;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[11] - 1120210379;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[2] + 718787259;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[9] - 343485551;\n b = (b << 21 | b >>> 11) + c << 0;\n if (this.first) {\n this.h0 = a + 1732584193 << 0;\n this.h1 = b - 271733879 << 0;\n this.h2 = c - 1732584194 << 0;\n this.h3 = d + 271733878 << 0;\n this.first = false;\n } else {\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n }\n };\n\n /**\n * @method hex\n * @memberof Md5\n * @instance\n * @description Output hash as hex string\n * @returns {String} Hex string\n * @see {@link md5.hex}\n * @example\n * hash.hex();\n */\n Md5.prototype.hex = function () {\n this.finalize();\n var h0 = this.h0,\n h1 = this.h1,\n h2 = this.h2,\n h3 = this.h3;\n return HEX_CHARS[h0 >> 4 & 0x0F] + HEX_CHARS[h0 & 0x0F] + HEX_CHARS[h0 >> 12 & 0x0F] + HEX_CHARS[h0 >> 8 & 0x0F] + HEX_CHARS[h0 >> 20 & 0x0F] + HEX_CHARS[h0 >> 16 & 0x0F] + HEX_CHARS[h0 >> 28 & 0x0F] + HEX_CHARS[h0 >> 24 & 0x0F] + HEX_CHARS[h1 >> 4 & 0x0F] + HEX_CHARS[h1 & 0x0F] + HEX_CHARS[h1 >> 12 & 0x0F] + HEX_CHARS[h1 >> 8 & 0x0F] + HEX_CHARS[h1 >> 20 & 0x0F] + HEX_CHARS[h1 >> 16 & 0x0F] + HEX_CHARS[h1 >> 28 & 0x0F] + HEX_CHARS[h1 >> 24 & 0x0F] + HEX_CHARS[h2 >> 4 & 0x0F] + HEX_CHARS[h2 & 0x0F] + HEX_CHARS[h2 >> 12 & 0x0F] + HEX_CHARS[h2 >> 8 & 0x0F] + HEX_CHARS[h2 >> 20 & 0x0F] + HEX_CHARS[h2 >> 16 & 0x0F] + HEX_CHARS[h2 >> 28 & 0x0F] + HEX_CHARS[h2 >> 24 & 0x0F] + HEX_CHARS[h3 >> 4 & 0x0F] + HEX_CHARS[h3 & 0x0F] + HEX_CHARS[h3 >> 12 & 0x0F] + HEX_CHARS[h3 >> 8 & 0x0F] + HEX_CHARS[h3 >> 20 & 0x0F] + HEX_CHARS[h3 >> 16 & 0x0F] + HEX_CHARS[h3 >> 28 & 0x0F] + HEX_CHARS[h3 >> 24 & 0x0F];\n };\n\n /**\n * @method toString\n * @memberof Md5\n * @instance\n * @description Output hash as hex string\n * @returns {String} Hex string\n * @see {@link md5.hex}\n * @example\n * hash.toString();\n */\n Md5.prototype.toString = Md5.prototype.hex;\n\n /**\n * @method digest\n * @memberof Md5\n * @instance\n * @description Output hash as bytes array\n * @returns {Array} Bytes array\n * @see {@link md5.digest}\n * @example\n * hash.digest();\n */\n Md5.prototype.digest = function (format) {\n if (format === 'hex') return this.hex();\n this.finalize();\n var h0 = this.h0,\n h1 = this.h1,\n h2 = this.h2,\n h3 = this.h3;\n var res = [h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >> 24 & 0xFF];\n return res;\n };\n\n /**\n * @method array\n * @memberof Md5\n * @instance\n * @description Output hash as bytes array\n * @returns {Array} Bytes array\n * @see {@link md5.array}\n * @example\n * hash.array();\n */\n Md5.prototype.array = Md5.prototype.digest;\n\n /**\n * @method arrayBuffer\n * @memberof Md5\n * @instance\n * @description Output hash as ArrayBuffer\n * @returns {ArrayBuffer} ArrayBuffer\n * @see {@link md5.arrayBuffer}\n * @example\n * hash.arrayBuffer();\n */\n Md5.prototype.arrayBuffer = function () {\n this.finalize();\n var buffer = new ArrayBuffer(16);\n var blocks = new Uint32Array(buffer);\n blocks[0] = this.h0;\n blocks[1] = this.h1;\n blocks[2] = this.h2;\n blocks[3] = this.h3;\n return buffer;\n };\n\n /**\n * @method buffer\n * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.\n * @memberof Md5\n * @instance\n * @description Output hash as ArrayBuffer\n * @returns {ArrayBuffer} ArrayBuffer\n * @see {@link md5.buffer}\n * @example\n * hash.buffer();\n */\n Md5.prototype.buffer = Md5.prototype.arrayBuffer;\n\n /**\n * @method base64\n * @memberof Md5\n * @instance\n * @description Output hash as base64 string\n * @returns {String} base64 string\n * @see {@link md5.base64}\n * @example\n * hash.base64();\n */\n Md5.prototype.base64 = function () {\n var v1,\n v2,\n v3,\n base64Str = '',\n bytes = this.array();\n for (var i = 0; i < 15;) {\n v1 = bytes[i++];\n v2 = bytes[i++];\n v3 = bytes[i++];\n base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + BASE64_ENCODE_CHAR[v3 & 63];\n }\n v1 = bytes[i];\n base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[v1 << 4 & 63] + '==';\n return base64Str;\n };\n var exports = createMethod();\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n /**\n * @method md5\b\n * @description Md5 hash function, export to global in browsers.\n * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash\n * @returns {String} md5 hashes\n * @example\n * md5(''); // d41d8cd98f00b204e9800998ecf8427e\n * md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6\n * md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0\n *\n * // It also supports UTF-8 encoding\n * md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07\n *\n * // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer`\n * md5([]); // d41d8cd98f00b204e9800998ecf8427e\n * md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e\n */\n root.md5 = exports;\n if (AMD) {\n !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return exports;\n }).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n }\n }\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./lib/request.js\":\n/*!************************!*\\\n !*** ./lib/request.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\nvar stringifyPrimitive = function stringifyPrimitive(v) {\n switch (_typeof(v)) {\n case 'string':\n return v;\n case 'boolean':\n return v ? 'true' : 'false';\n case 'number':\n return isFinite(v) ? v : '';\n default:\n return '';\n }\n};\nvar queryStringify = function queryStringify(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n if (_typeof(obj) === 'object') {\n return Object.keys(obj).map(function (k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function (v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).filter(Boolean).join(sep);\n }\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));\n};\nvar xhrRes = function xhrRes(err, xhr, body) {\n var headers = {};\n var strHeaders = xhr.getAllResponseHeaders();\n if (strHeaders && strHeaders.length > 0) {\n strHeaders.trim().split('\\n').forEach(function (item) {\n if (item) {\n var index = item.indexOf(':');\n var key = item.substr(0, index).trim().toLowerCase();\n var val = item.substr(index + 1).trim();\n headers[key] = val;\n }\n });\n }\n return {\n error: err,\n statusCode: xhr.status,\n statusMessage: xhr.statusText,\n headers: headers,\n body: body\n };\n};\nvar xhrBody = function xhrBody(xhr, dataType) {\n return !dataType && dataType === 'text' ? xhr.responseText : xhr.response;\n};\nvar request = function request(opt, callback) {\n // method\n var method = (opt.method || 'GET').toUpperCase();\n\n // url、qs\n var url = opt.url;\n if (opt.qs) {\n var qsStr = queryStringify(opt.qs);\n if (qsStr) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + qsStr;\n }\n }\n\n // 创建 ajax 实例\n var xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n xhr.responseType = opt.dataType || 'text';\n\n // 处理 xhrFields 属性\n if (opt.xhrFields) {\n for (var xhrField in opt.xhrFields) {\n xhr[xhrField] = opt.xhrFields[xhrField];\n }\n }\n\n // 处理 headers\n var headers = opt.headers;\n if (headers) {\n for (var key in headers) {\n if (headers.hasOwnProperty(key) && key.toLowerCase() !== 'content-length' && key.toLowerCase() !== 'user-agent' && key.toLowerCase() !== 'origin' && key.toLowerCase() !== 'host') {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n }\n\n // onprogress\n if (opt.onProgress && xhr.upload) xhr.upload.onprogress = opt.onProgress;\n if (opt.onDownloadProgress) xhr.onprogress = opt.onDownloadProgress;\n\n // timeout\n if (opt.timeout) xhr.timeout = opt.timeout;\n xhr.ontimeout = function (event) {\n var error = new Error('timeout');\n callback(xhrRes(error, xhr));\n };\n\n // success 2xx/3xx/4xx\n xhr.onload = function () {\n callback(xhrRes(null, xhr, xhrBody(xhr, opt.dataType)));\n };\n\n // error 5xx/0 (网络错误、跨域报错、Https connect-src 限制的报错时 statusCode 为 0)\n xhr.onerror = function (err) {\n var body = xhrBody(xhr, opt.dataType);\n if (body) {\n // 5xx\n callback(xhrRes(null, xhr, body));\n } else {\n // 0\n var error = xhr.statusText;\n if (!error && xhr.status === 0) error = new Error('CORS blocked or network error');\n callback(xhrRes(error, xhr, body));\n }\n };\n\n // send\n xhr.send(opt.body || '');\n\n // 返回 ajax 实例,用于外部调用 xhr.abort\n return xhr;\n};\nmodule.exports = request;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/createClass.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ \"./node_modules/@babel/runtime/helpers/toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/toPrimitive.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/toPropertyKey.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(/*! ./typeof.js */ \"./node_modules/@babel/runtime/helpers/typeof.js\")[\"default\"];\nvar toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ \"./node_modules/@babel/runtime/helpers/toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/typeof.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/fxp.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/fxp.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst validator = __webpack_require__(/*! ./validator */ \"./node_modules/fast-xml-parser/src/validator.js\");\nconst XMLParser = __webpack_require__(/*! ./xmlparser/XMLParser */ \"./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js\");\nconst XMLBuilder = __webpack_require__(/*! ./xmlbuilder/json2xml */ \"./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js\");\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/ignoreAttributes.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/ignoreAttributes.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}\n\nmodule.exports = getIgnoreAttributesFn\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/util.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/util.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/validator.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/validator.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nconst util = __webpack_require__(/*! ./util */ \"./node_modules/fast-xml-parser/src/util.js\");\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = __webpack_require__(/*! ./orderedJs2Xml */ \"./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js\");\nconst getIgnoreAttributesFn = __webpack_require__(/*! ../ignoreAttributes */ \"./node_modules/fast-xml-parser/src/ignoreAttributes.js\")\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&amp;\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \"&gt;\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"&lt;\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"&apos;\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \"&quot;\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0, []).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = '';\n let val = '';\n const jPath = ajPath.join('.')\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '</' + key + this.tagEndChar;\n let piClosingChar = \"\";\n \n if(key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n \n // attrStr is an empty string in case the attribute came as undefined or null\n if ((attrStr || attrStr === '') && val.indexOf('<') === -1) {\n return ( this.indentate(level) + '<' + key + attrStr + piClosingChar + '>' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `></${key}`\n }\n return closeTag;\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n if (val !== '') {\n return this.buildObjectNode(val, key, attrStr, level);\n } else {\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n // return this.buildTagStr(level,key, attrStr);\n }\n }\n}\n\nBuilder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n '</' + key + this.tagEndChar;\n }\n }\n}\n\nBuilder.prototype.replaceEntitiesValue = function(textValue){\n if(textValue && textValue.length > 0 && this.options.processEntities){\n for (let i=0; i<this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\n\nmodule.exports = Builder;\n\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nfunction toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js\":\n/*!*********************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js ***!\n \\*********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nconst util = __webpack_require__(/*! ../util */ \"./node_modules/fast-xml-parser/src/util.js\");\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i<xmlData.length;i++){\n if (xmlData[i] === '<' && !comment) { //Determine the tag type\n if( hasBody && isEntity(xmlData, i)){\n i += 7; \n [entityName, val,i] = readEntityExp(xmlData,i+1);\n if(val.indexOf(\"&\") === -1) //Parameter entities are not supported\n entities[ validateEntityName(entityName) ] = {\n regx : RegExp( `&${entityName};`,\"g\"),\n val: val\n };\n }\n else if( hasBody && isElement(xmlData, i)) i += 8;//Not supported\n else if( hasBody && isAttlist(xmlData, i)) i += 8;//Not supported\n else if( hasBody && isNotation(xmlData, i)) i += 9;//Not supported\n else if( isComment) comment = true;\n else throw new Error(\"Invalid DOCTYPE\");\n\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === '>') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // <!ENTITY ext SYSTEM \"http://normal-website.com\" >\n\n //Parameter entities are not supported\n // <!ENTITY entityname \"&anotherElement;\">\n\n //Internal entities are supported\n // <!ENTITY entityname \"replacement text\">\n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js\":\n/*!************************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js ***!\n \\************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n///@ts-check\n\nconst util = __webpack_require__(/*! ../util */ \"./node_modules/fast-xml-parser/src/util.js\");\nconst xmlNode = __webpack_require__(/*! ./xmlNode */ \"./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js\");\nconst readDocType = __webpack_require__(/*! ./DocTypeReader */ \"./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js\");\nconst toNumber = __webpack_require__(/*! strnum */ \"./node_modules/strnum/strnum.js\");\nconst getIgnoreAttributesFn = __webpack_require__(/*! ../ignoreAttributes */ \"./node_modules/fast-xml-parser/src/ignoreAttributes.js\")\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue\n }\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nconst { buildOptions} = __webpack_require__(/*! ./OptionsBuilder */ \"./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js\");\nconst OrderedObjParser = __webpack_require__(/*! ./OrderedObjParser */ \"./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js\");\nconst { prettify} = __webpack_require__(/*! ./node2json */ \"./node_modules/fast-xml-parser/src/xmlparser/node2json.js\");\nconst validator = __webpack_require__(/*! ../validator */ \"./node_modules/fast-xml-parser/src/validator.js\");\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/xmlparser/node2json.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/xmlparser/node2json.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n\n\n/***/ }),\n\n/***/ \"./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;\n\n/***/ }),\n\n/***/ \"./node_modules/process/browser.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/process/browser.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n\n/***/ \"./node_modules/strnum/strnum.js\":\n/*!***************************************!*\\\n !*** ./node_modules/strnum/strnum.js ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nconst hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/amd-options.js\":\n/*!****************************************!*\\\n !*** (webpack)/buildin/amd-options.js ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n\n/* WEBPACK VAR INJECTION */}.call(this, {}))\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/module.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/module.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n/***/ }),\n\n/***/ \"./package.json\":\n/*!**********************!*\\\n !*** ./package.json ***!\n \\**********************/\n/*! exports provided: name, version, description, main, types, scripts, repository, keywords, author, license, bugs, homepage, dependencies, devDependencies, default */\n/***/ (function(module) {\n\nmodule.exports = JSON.parse(\"{\\\"name\\\":\\\"cos-js-sdk-v5\\\",\\\"version\\\":\\\"1.8.7\\\",\\\"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\\\":{\\\"fast-xml-parser\\\":\\\"4.5.0\\\"},\\\"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\\\"}}\");\n\n/***/ }),\n\n/***/ \"./src/advance.js\":\n/*!************************!*\\\n !*** ./src/advance.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\nvar session = __webpack_require__(/*! ./session */ \"./src/session.js\");\nvar Async = __webpack_require__(/*! ./async */ \"./src/async.js\");\nvar EventProxy = __webpack_require__(/*! ./event */ \"./src/event.js\").EventProxy;\nvar util = __webpack_require__(/*! ./util */ \"./src/util.js\");\nvar Tracker = __webpack_require__(/*! ./tracker */ \"./src/tracker.js\");\n\n// 文件分块上传全过程,暴露的分块上传接口\nfunction sliceUploadFile(params, callback) {\n var self = this;\n var ep = new EventProxy();\n var TaskId = params.TaskId;\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var Body = params.Body;\n var ChunkSize = params.ChunkSize || params.SliceSize || self.options.ChunkSize;\n var AsyncLimit = params.AsyncLimit;\n var StorageClass = params.StorageClass;\n var ServerSideEncryption = params.ServerSideEncryption;\n var FileSize;\n var onProgress;\n var onHashProgress = params.onHashProgress;\n var tracker = params.tracker;\n tracker && tracker.setParams({\n chunkSize: ChunkSize\n });\n\n // 上传过程中出现错误,返回错误\n ep.on('error', function (err) {\n if (!self._isRunningTask(TaskId)) return;\n if (params.UploadData.UploadId) {\n session.removeUsing(params.UploadData.UploadId);\n }\n err.UploadId = params.UploadData.UploadId || '';\n return callback(err);\n });\n\n // 上传分块完成,开始 uploadSliceComplete 操作\n ep.on('upload_complete', function (UploadCompleteData) {\n var _UploadCompleteData = util.extend({\n UploadId: params.UploadData.UploadId || ''\n }, UploadCompleteData);\n callback(null, _UploadCompleteData);\n });\n\n // 上传分块完成,开始 uploadSliceComplete 操作\n ep.on('upload_slice_complete', function (UploadData) {\n var metaHeaders = {};\n util.each(params.Headers, function (val, k) {\n var shortKey = k.toLowerCase();\n if (shortKey.indexOf('x-cos-meta-') === 0 || ['pic-operations', 'x-cos-callback', 'x-cos-callback-var', 'x-cos-return-body'].includes(shortKey)) {\n metaHeaders[k] = val;\n }\n });\n uploadSliceComplete.call(self, {\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n UploadId: UploadData.UploadId,\n SliceList: UploadData.SliceList,\n Headers: metaHeaders,\n tracker: tracker\n }, function (err, data) {\n if (!self._isRunningTask(TaskId)) return;\n session.removeUsing(UploadData.UploadId);\n if (err) {\n onProgress(null, true);\n return ep.emit('error', err);\n }\n session.removeUploadId.call(self, UploadData.UploadId);\n onProgress({\n loaded: FileSize,\n total: FileSize\n }, true);\n ep.emit('upload_complete', data);\n });\n });\n\n // 获取 UploadId 完成,开始上传每个分片\n ep.on('get_upload_data_finish', function (UploadData) {\n // 处理 UploadId 缓存\n var uuid = session.getFileId(Body, params.ChunkSize, Bucket, Key);\n uuid && session.saveUploadId.call(self, uuid, UploadData.UploadId, self.options.UploadIdCacheLimit); // 缓存 UploadId\n session.setUsing(UploadData.UploadId); // 标记 UploadId 为正在使用\n\n // 获取 UploadId\n onProgress(null, true); // 任务状态开始 uploading\n uploadSliceList.call(self, {\n TaskId: TaskId,\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n Body: Body,\n FileSize: FileSize,\n SliceSize: ChunkSize,\n AsyncLimit: AsyncLimit,\n ServerSideEncryption: ServerSideEncryption,\n UploadData: UploadData,\n Headers: params.Headers,\n onProgress: onProgress,\n tracker: tracker\n }, function (err, data) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) {\n onProgress(null, true);\n return ep.emit('error', err);\n }\n ep.emit('upload_slice_complete', data);\n });\n });\n\n // 开始获取文件 UploadId,里面会视情况计算 ETag,并比对,保证文件一致性,也优化上传\n ep.on('get_file_size_finish', function () {\n onProgress = util.throttleOnProgress.call(self, FileSize, params.onProgress);\n if (params.UploadData.UploadId) {\n ep.emit('get_upload_data_finish', params.UploadData);\n } else {\n var _params = util.extend({\n TaskId: TaskId,\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n Headers: params.Headers,\n StorageClass: StorageClass,\n Body: Body,\n FileSize: FileSize,\n SliceSize: ChunkSize,\n onHashProgress: onHashProgress,\n tracker: tracker\n }, params);\n getUploadIdAndPartList.call(self, _params, function (err, UploadData) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) return ep.emit('error', err);\n params.UploadData.UploadId = UploadData.UploadId;\n params.UploadData.PartList = UploadData.PartList;\n ep.emit('get_upload_data_finish', params.UploadData);\n });\n }\n });\n\n // 获取上传文件大小\n FileSize = params.ContentLength;\n delete params.ContentLength;\n !params.Headers && (params.Headers = {});\n util.each(params.Headers, function (item, key) {\n if (key.toLowerCase() === 'content-length') {\n delete params.Headers[key];\n }\n });\n\n // 控制分片大小\n (function () {\n var SIZE = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 1024 * 2, 1024 * 4, 1024 * 5];\n var AutoChunkSize = 1024 * 1024;\n for (var i = 0; i < SIZE.length; i++) {\n AutoChunkSize = SIZE[i] * 1024 * 1024;\n if (FileSize / AutoChunkSize <= self.options.MaxPartNumber) break;\n }\n params.ChunkSize = params.SliceSize = ChunkSize = Math.max(ChunkSize, AutoChunkSize);\n })();\n\n // 开始上传\n if (FileSize === 0) {\n params.Body = '';\n params.ContentLength = 0;\n params.SkipTask = true;\n self.putObject(params, callback);\n } else {\n ep.emit('get_file_size_finish');\n }\n}\n\n// 获取上传任务的 UploadId\nfunction getUploadIdAndPartList(params, callback) {\n var TaskId = params.TaskId;\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var StorageClass = params.StorageClass;\n var self = this;\n\n // 计算 ETag\n var ETagMap = {};\n var FileSize = params.FileSize;\n var SliceSize = params.SliceSize;\n var SliceCount = Math.ceil(FileSize / SliceSize);\n var FinishSliceCount = 0;\n var FinishSize = 0;\n var onHashProgress = util.throttleOnProgress.call(self, FileSize, params.onHashProgress);\n var getChunkETag = function getChunkETag(PartNumber, callback) {\n var start = SliceSize * (PartNumber - 1);\n var end = Math.min(start + SliceSize, FileSize);\n var ChunkSize = end - start;\n if (ETagMap[PartNumber]) {\n callback(null, {\n PartNumber: PartNumber,\n ETag: ETagMap[PartNumber],\n Size: ChunkSize\n });\n } else {\n util.fileSlice(params.Body, start, end, false, function (chunkItem) {\n util.getFileMd5(chunkItem, function (err, md5) {\n if (err) return callback(util.error(err));\n var ETag = '\"' + md5 + '\"';\n ETagMap[PartNumber] = ETag;\n FinishSliceCount += 1;\n FinishSize += ChunkSize;\n onHashProgress({\n loaded: FinishSize,\n total: FileSize\n });\n callback(null, {\n PartNumber: PartNumber,\n ETag: ETag,\n Size: ChunkSize\n });\n });\n });\n }\n };\n\n // 通过和文件的 md5 对比,判断 UploadId 是否可用\n var isAvailableUploadList = function isAvailableUploadList(PartList, callback) {\n var PartCount = PartList.length;\n // 如果没有分片,通过\n if (PartCount === 0) {\n return callback(null, true);\n }\n // 检查分片数量\n if (PartCount > SliceCount) {\n return callback(null, false);\n }\n // 检查分片大小\n if (PartCount > 1) {\n var PartSliceSize = Math.max(PartList[0].Size, PartList[1].Size);\n if (PartSliceSize !== SliceSize) {\n return callback(null, false);\n }\n }\n // 逐个分片计算并检查 ETag 是否一致\n var next = function next(index) {\n if (index < PartCount) {\n var Part = PartList[index];\n getChunkETag(Part.PartNumber, function (err, chunk) {\n if (chunk && chunk.ETag === Part.ETag && chunk.Size === Part.Size) {\n next(index + 1);\n } else {\n callback(null, false);\n }\n });\n } else {\n callback(null, true);\n }\n };\n next(0);\n };\n var ep = new EventProxy();\n ep.on('error', function (errData) {\n if (!self._isRunningTask(TaskId)) return;\n return callback(errData);\n });\n\n // 存在 UploadId\n ep.on('upload_id_available', function (UploadData) {\n // 转换成 map\n var map = {};\n var list = [];\n util.each(UploadData.PartList, function (item) {\n map[item.PartNumber] = item;\n });\n for (var PartNumber = 1; PartNumber <= SliceCount; PartNumber++) {\n var item = map[PartNumber];\n if (item) {\n item.PartNumber = PartNumber;\n item.Uploaded = true;\n } else {\n item = {\n PartNumber: PartNumber,\n ETag: null,\n Uploaded: false\n };\n }\n list.push(item);\n }\n UploadData.PartList = list;\n callback(null, UploadData);\n });\n\n // 不存在 UploadId, 初始化生成 UploadId\n ep.on('no_available_upload_id', function () {\n if (!self._isRunningTask(TaskId)) return;\n var _params = util.extend({\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n Query: util.clone(params.Query),\n StorageClass: StorageClass,\n Body: params.Body,\n calledBySdk: 'sliceUploadFile',\n tracker: params.tracker\n }, params);\n var headers = util.clone(params.Headers);\n delete headers['x-cos-mime-limit'];\n _params.Headers = headers;\n self.multipartInit(_params, function (err, data) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) return ep.emit('error', err);\n var UploadId = data.UploadId;\n if (!UploadId) {\n return callback(util.error(new Error('no such upload id')));\n }\n ep.emit('upload_id_available', {\n UploadId: UploadId,\n PartList: []\n });\n });\n });\n\n // 如果已存在 UploadId,找一个可以用的 UploadId\n ep.on('has_and_check_upload_id', function (UploadIdList) {\n // 串行地,找一个内容一致的 UploadId\n UploadIdList = UploadIdList.reverse();\n Async.eachLimit(UploadIdList, 1, function (UploadId, asyncCallback) {\n if (!self._isRunningTask(TaskId)) return;\n // 如果正在上传,跳过\n if (session.using[UploadId]) {\n asyncCallback(); // 检查下一个 UploadId\n return;\n }\n // 判断 UploadId 是否可用\n wholeMultipartListPart.call(self, {\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n UploadId: UploadId,\n tracker: params.tracker\n }, function (err, PartListData) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) {\n session.removeUsing(UploadId);\n return ep.emit('error', err);\n }\n var PartList = PartListData.PartList;\n PartList.forEach(function (item) {\n item.PartNumber *= 1;\n item.Size *= 1;\n item.ETag = item.ETag || '';\n });\n isAvailableUploadList(PartList, function (err, isAvailable) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) return ep.emit('error', err);\n if (isAvailable) {\n asyncCallback({\n UploadId: UploadId,\n PartList: PartList\n }); // 马上结束\n } else {\n asyncCallback(); // 检查下一个 UploadId\n }\n });\n });\n }, function (AvailableUploadData) {\n if (!self._isRunningTask(TaskId)) return;\n onHashProgress(null, true);\n if (AvailableUploadData && AvailableUploadData.UploadId) {\n ep.emit('upload_id_available', AvailableUploadData);\n } else {\n ep.emit('no_available_upload_id');\n }\n });\n });\n\n // 在本地缓存找可用的 UploadId\n ep.on('seek_local_avail_upload_id', function (RemoteUploadIdList) {\n // 在本地找可用的 UploadId\n var uuid = session.getFileId(params.Body, params.ChunkSize, Bucket, Key);\n var LocalUploadIdList = session.getUploadIdList.call(self, uuid);\n if (!uuid || !LocalUploadIdList) {\n ep.emit('has_and_check_upload_id', RemoteUploadIdList);\n return;\n }\n var next = function next(index) {\n // 如果本地找不到可用 UploadId,再一个个遍历校验远端\n if (index >= LocalUploadIdList.length) {\n ep.emit('has_and_check_upload_id', RemoteUploadIdList);\n return;\n }\n var UploadId = LocalUploadIdList[index];\n // 如果不在远端 UploadId 列表里,跳过并删除\n if (!util.isInArray(RemoteUploadIdList, UploadId)) {\n session.removeUploadId.call(self, UploadId);\n next(index + 1);\n return;\n }\n // 如果正在上传,跳过\n if (session.using[UploadId]) {\n next(index + 1);\n return;\n }\n // 判断 UploadId 是否存在线上\n wholeMultipartListPart.call(self, {\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n UploadId: UploadId,\n tracker: params.tracker\n }, function (err, PartListData) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) {\n // 如果 UploadId 获取会出错,跳过并删除\n session.removeUploadId.call(self, UploadId);\n next(index + 1);\n } else {\n // 找到可用 UploadId\n ep.emit('upload_id_available', {\n UploadId: UploadId,\n PartList: PartListData.PartList\n });\n }\n });\n };\n next(0);\n });\n\n // 获取线上 UploadId 列表\n ep.on('get_remote_upload_id_list', function () {\n // 获取符合条件的 UploadId 列表,因为同一个文件可以有多个上传任务。\n wholeMultipartList.call(self, {\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n tracker: params.tracker\n }, function (err, data) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) return ep.emit('error', err);\n // 整理远端 UploadId 列表\n var RemoteUploadIdList = util.filter(data.UploadList, function (item) {\n return item.Key === Key && (!StorageClass || item.StorageClass.toUpperCase() === StorageClass.toUpperCase());\n }).reverse().map(function (item) {\n return item.UploadId || item.UploadID;\n });\n if (RemoteUploadIdList.length) {\n ep.emit('seek_local_avail_upload_id', RemoteUploadIdList);\n } else {\n // 远端没有 UploadId,清理缓存的 UploadId\n var uuid = session.getFileId(params.Body, params.ChunkSize, Bucket, Key),\n LocalUploadIdList;\n if (uuid && (LocalUploadIdList = session.getUploadIdList.call(self, uuid))) {\n util.each(LocalUploadIdList, function (UploadId) {\n session.removeUploadId.call(self, UploadId);\n });\n }\n ep.emit('no_available_upload_id');\n }\n });\n });\n\n // 开始找可用 UploadId\n ep.emit('get_remote_upload_id_list');\n}\n\n// 获取符合条件的全部上传任务 (条件包括 Bucket, Region, Prefix)\nfunction wholeMultipartList(params, callback) {\n var self = this;\n var UploadList = [];\n var sendParams = {\n Bucket: params.Bucket,\n Region: params.Region,\n Prefix: params.Key,\n calledBySdk: params.calledBySdk || 'sliceUploadFile',\n tracker: params.tracker\n };\n var next = function next() {\n self.multipartList(sendParams, function (err, data) {\n if (err) return callback(err);\n UploadList.push.apply(UploadList, data.Upload || []);\n if (data.IsTruncated === 'true') {\n // 列表不完整\n sendParams.KeyMarker = data.NextKeyMarker;\n sendParams.UploadIdMarker = data.NextUploadIdMarker;\n next();\n } else {\n callback(null, {\n UploadList: UploadList\n });\n }\n });\n };\n next();\n}\n\n// 获取指定上传任务的分块列表\nfunction wholeMultipartListPart(params, callback) {\n var self = this;\n var PartList = [];\n var sendParams = {\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n UploadId: params.UploadId,\n calledBySdk: 'sliceUploadFile',\n tracker: params.tracker\n };\n var next = function next() {\n self.multipartListPart(sendParams, function (err, data) {\n if (err) return callback(err);\n PartList.push.apply(PartList, data.Part || []);\n if (data.IsTruncated === 'true') {\n // 列表不完整\n sendParams.PartNumberMarker = data.NextPartNumberMarker;\n next();\n } else {\n callback(null, {\n PartList: PartList\n });\n }\n });\n };\n next();\n}\n\n// 上传文件分块,包括\n/*\n UploadId (上传任务编号)\n AsyncLimit (并发量),\n SliceList (上传的分块数组),\n FilePath (本地文件的位置),\n SliceSize (文件分块大小)\n FileSize (文件大小)\n onProgress (上传成功之后的回调函数)\n */\nfunction uploadSliceList(params, cb) {\n var self = this;\n var TaskId = params.TaskId;\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var UploadData = params.UploadData;\n var FileSize = params.FileSize;\n var SliceSize = params.SliceSize;\n var ChunkParallel = Math.min(params.AsyncLimit || self.options.ChunkParallelLimit || 1, 256);\n var Body = params.Body;\n var SliceCount = Math.ceil(FileSize / SliceSize);\n var FinishSize = 0;\n var ServerSideEncryption = params.ServerSideEncryption;\n var Headers = params.Headers;\n var needUploadSlices = util.filter(UploadData.PartList, function (SliceItem) {\n if (SliceItem['Uploaded']) {\n FinishSize += SliceItem['PartNumber'] >= SliceCount ? FileSize % SliceSize || SliceSize : SliceSize;\n }\n return !SliceItem['Uploaded'];\n });\n var _onProgress2 = params.onProgress;\n Async.eachLimit(needUploadSlices, ChunkParallel, function (SliceItem, asyncCallback) {\n if (!self._isRunningTask(TaskId)) return;\n var PartNumber = SliceItem['PartNumber'];\n var currentSize = Math.min(FileSize, SliceItem['PartNumber'] * SliceSize) - (SliceItem['PartNumber'] - 1) * SliceSize;\n var preAddSize = 0;\n uploadSliceItem.call(self, {\n TaskId: TaskId,\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n SliceSize: SliceSize,\n FileSize: FileSize,\n PartNumber: PartNumber,\n ServerSideEncryption: ServerSideEncryption,\n Body: Body,\n UploadData: UploadData,\n Headers: Headers,\n onProgress: function onProgress(data) {\n FinishSize += data.loaded - preAddSize;\n preAddSize = data.loaded;\n _onProgress2({\n loaded: FinishSize,\n total: FileSize\n });\n },\n tracker: params.tracker\n }, function (err, data) {\n if (!self._isRunningTask(TaskId)) return;\n if (!err && !data.ETag) err = 'get ETag error, please add \"ETag\" to CORS ExposeHeader setting.( 获取ETag失败,请在CORS ExposeHeader设置中添加ETag,请参考文档:https://cloud.tencent.com/document/product/436/13318 )';\n if (err) {\n FinishSize -= preAddSize;\n } else {\n FinishSize += currentSize - preAddSize;\n SliceItem.ETag = data.ETag;\n }\n _onProgress2({\n loaded: FinishSize,\n total: FileSize\n });\n asyncCallback(err || null, data);\n });\n }, function (err) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) return cb(err);\n cb(null, {\n UploadId: UploadData.UploadId,\n SliceList: UploadData.PartList\n });\n });\n}\n\n// 上传指定分片\nfunction uploadSliceItem(params, callback) {\n var self = this;\n var TaskId = params.TaskId;\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var FileSize = params.FileSize;\n var FileBody = params.Body;\n var PartNumber = params.PartNumber * 1;\n var SliceSize = params.SliceSize;\n var ServerSideEncryption = params.ServerSideEncryption;\n var UploadData = params.UploadData;\n var Headers = params.Headers || {};\n var ChunkRetryTimes = self.options.ChunkRetryTimes + 1;\n var start = SliceSize * (PartNumber - 1);\n var ContentLength = SliceSize;\n var end = start + SliceSize;\n if (end > FileSize) {\n end = FileSize;\n ContentLength = end - start;\n }\n var headersWhiteList = ['x-cos-traffic-limit', 'x-cos-mime-limit'];\n var headers = {};\n util.each(Headers, function (v, k) {\n if (headersWhiteList.indexOf(k) > -1) {\n headers[k] = v;\n }\n });\n var PartItem = UploadData.PartList[PartNumber - 1];\n Async.retry(ChunkRetryTimes, function (tryCallback) {\n if (!self._isRunningTask(TaskId)) return;\n util.fileSlice(FileBody, start, end, true, function (Body) {\n self.multipartUpload({\n TaskId: TaskId,\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n ContentLength: ContentLength,\n PartNumber: PartNumber,\n UploadId: UploadData.UploadId,\n ServerSideEncryption: ServerSideEncryption,\n Body: Body,\n Headers: headers,\n onProgress: params.onProgress,\n calledBySdk: 'sliceUploadFile',\n tracker: params.tracker\n }, function (err, data) {\n if (!self._isRunningTask(TaskId)) return;\n if (err) return tryCallback(err);\n PartItem.Uploaded = true;\n return tryCallback(null, data);\n });\n });\n }, function (err, data) {\n if (!self._isRunningTask(TaskId)) return;\n return callback(err, data);\n });\n}\n\n// 完成分块上传\nfunction uploadSliceComplete(params, callback) {\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var UploadId = params.UploadId;\n var SliceList = params.SliceList;\n var self = this;\n var ChunkRetryTimes = this.options.ChunkRetryTimes + 1;\n var Headers = params.Headers;\n var Parts = SliceList.map(function (item) {\n return {\n PartNumber: item.PartNumber,\n ETag: item.ETag\n };\n });\n // 完成上传的请求也做重试\n Async.retry(ChunkRetryTimes, function (tryCallback) {\n self.multipartComplete({\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n UploadId: UploadId,\n Parts: Parts,\n Headers: Headers,\n calledBySdk: 'sliceUploadFile',\n tracker: params.tracker\n }, tryCallback);\n }, function (err, data) {\n callback(err, data);\n });\n}\n\n// 抛弃分块上传任务\n/*\n AsyncLimit (抛弃上传任务的并发量),\n UploadId (上传任务的编号,当 Level 为 task 时候需要)\n Level (抛弃分块上传任务的级别,task : 抛弃指定的上传任务,file : 抛弃指定的文件对应的上传任务,其他值 :抛弃指定Bucket 的全部上传任务)\n */\nfunction abortUploadTask(params, callback) {\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var UploadId = params.UploadId;\n var Level = params.Level || 'task';\n var AsyncLimit = params.AsyncLimit;\n var self = this;\n var ep = new EventProxy();\n ep.on('error', function (errData) {\n return callback(errData);\n });\n\n // 已经获取到需要抛弃的任务列表\n ep.on('get_abort_array', function (AbortArray) {\n abortUploadTaskArray.call(self, {\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n Headers: params.Headers,\n AsyncLimit: AsyncLimit,\n AbortArray: AbortArray\n }, callback);\n });\n if (Level === 'bucket') {\n // Bucket 级别的任务抛弃,抛弃该 Bucket 下的全部上传任务\n wholeMultipartList.call(self, {\n Bucket: Bucket,\n Region: Region,\n calledBySdk: 'abortUploadTask'\n }, function (err, data) {\n if (err) return callback(err);\n ep.emit('get_abort_array', data.UploadList || []);\n });\n } else if (Level === 'file') {\n // 文件级别的任务抛弃,抛弃该文件的全部上传任务\n if (!Key) return callback(util.error(new Error('abort_upload_task_no_key')));\n wholeMultipartList.call(self, {\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n calledBySdk: 'abortUploadTask'\n }, function (err, data) {\n if (err) return callback(err);\n ep.emit('get_abort_array', data.UploadList || []);\n });\n } else if (Level === 'task') {\n // 单个任务级别的任务抛弃,抛弃指定 UploadId 的上传任务\n if (!UploadId) return callback(util.error(new Error('abort_upload_task_no_id')));\n if (!Key) return callback(util.error(new Error('abort_upload_task_no_key')));\n ep.emit('get_abort_array', [{\n Key: Key,\n UploadId: UploadId\n }]);\n } else {\n return callback(util.error(new Error('abort_unknown_level')));\n }\n}\n\n// 批量抛弃分块上传任务\nfunction abortUploadTaskArray(params, callback) {\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var AbortArray = params.AbortArray;\n var AsyncLimit = params.AsyncLimit || 1;\n var self = this;\n var index = 0;\n var resultList = new Array(AbortArray.length);\n Async.eachLimit(AbortArray, AsyncLimit, function (AbortItem, nextItem) {\n var eachIndex = index;\n if (Key && Key !== AbortItem.Key) {\n resultList[eachIndex] = {\n error: {\n KeyNotMatch: true\n }\n };\n nextItem(null);\n return;\n }\n var UploadId = AbortItem.UploadId || AbortItem.UploadID;\n self.multipartAbort({\n Bucket: Bucket,\n Region: Region,\n Key: AbortItem.Key,\n Headers: params.Headers,\n UploadId: UploadId\n }, function (err) {\n var task = {\n Bucket: Bucket,\n Region: Region,\n Key: AbortItem.Key,\n UploadId: UploadId\n };\n resultList[eachIndex] = {\n error: err,\n task: task\n };\n nextItem(null);\n });\n index++;\n }, function (err) {\n if (err) return callback(err);\n var successList = [];\n var errorList = [];\n for (var i = 0, len = resultList.length; i < len; i++) {\n var item = resultList[i];\n if (item['task']) {\n if (item['error']) {\n errorList.push(item['task']);\n } else {\n successList.push(item['task']);\n }\n }\n }\n return callback(null, {\n successList: successList,\n errorList: errorList\n });\n });\n}\n\n// 高级上传\nfunction uploadFile(params, callback) {\n var self = this;\n\n // 判断多大的文件使用分片上传\n var SliceSize = params.SliceSize === undefined ? self.options.SliceSize : params.SliceSize;\n var taskList = [];\n var Body = params.Body;\n var FileSize = Body.size || Body.length || 0;\n var fileInfo = {\n TaskId: ''\n };\n\n // 上传链路\n if (self.options.EnableReporter) {\n var accelerate = self.options.UseAccelerate || typeof self.options.Domain === 'string' && self.options.Domain.includes('accelerate.');\n var realApi = FileSize > SliceSize ? 'sliceUploadFile' : 'putObject';\n params.tracker = new Tracker({\n Beacon: self.options.BeaconReporter,\n clsReporter: self.options.ClsReporter,\n bucket: params.Bucket,\n region: params.Region,\n apiName: 'uploadFile',\n realApi: realApi,\n fileKey: params.Key,\n fileSize: FileSize,\n accelerate: accelerate,\n deepTracker: self.options.DeepTracker,\n customId: self.options.CustomId,\n delay: self.options.TrackerDelay\n });\n }\n\n // 整理 option,用于返回给回调\n util.each(params, function (v, k) {\n if (_typeof(v) !== 'object' && typeof v !== 'function') {\n fileInfo[k] = v;\n }\n });\n\n // 处理文件 TaskReady\n var _onTaskReady = params.onTaskReady;\n var onTaskReady = function onTaskReady(tid) {\n fileInfo.TaskId = tid;\n _onTaskReady && _onTaskReady(tid);\n };\n params.onTaskReady = onTaskReady;\n\n // 添加上传任务,超过阈值使用分块上传,小于等于则简单上传\n var api = FileSize > SliceSize ? 'sliceUploadFile' : 'putObject';\n\n // 处理文件完成\n var _onFileFinish = params.onFileFinish;\n var onFileFinish = function onFileFinish(err, data) {\n // 格式化上报参数并上报\n params.tracker && params.tracker.report(err, data);\n _onFileFinish && _onFileFinish(err, data, fileInfo);\n callback && callback(err, data);\n };\n taskList.push({\n api: api,\n params: params,\n callback: onFileFinish\n });\n self._addTasks(taskList);\n}\n\n// 批量上传文件\nfunction uploadFiles(params, callback) {\n var self = this;\n\n // 判断多大的文件使用分片上传\n var SliceSize = params.SliceSize === undefined ? self.options.SliceSize : params.SliceSize;\n\n // 汇总返回进度\n var TotalSize = 0;\n var TotalFinish = 0;\n var onTotalProgress = util.throttleOnProgress.call(self, TotalFinish, params.onProgress);\n\n // 汇总返回回调\n var unFinishCount = params.files.length;\n var _onTotalFileFinish = params.onFileFinish;\n var resultList = Array(unFinishCount);\n var onTotalFileFinish = function onTotalFileFinish(err, data, options) {\n onTotalProgress(null, true);\n _onTotalFileFinish && _onTotalFileFinish(err, data, options);\n resultList[options.Index] = {\n options: options,\n error: err,\n data: data\n };\n if (--unFinishCount <= 0 && callback) {\n callback(null, {\n files: resultList\n });\n }\n };\n\n // 开始处理每个文件\n var taskList = [];\n util.each(params.files, function (fileParams, index) {\n (function () {\n var Body = fileParams.Body;\n var FileSize = Body.size || Body.length || 0;\n var fileInfo = {\n Index: index,\n TaskId: ''\n };\n\n // 如果 批量上传的 Key 是 / 开头,强制去掉第一个 /\n if (!self.options.UseRawKey && fileParams.Key && fileParams.Key.substr(0, 1) === '/') {\n fileParams.Key = fileParams.Key.substr(1);\n }\n\n // 更新文件总大小\n TotalSize += FileSize;\n\n // 单个文件上传链路\n if (self.options.EnableReporter) {\n var accelerate = self.options.UseAccelerate || typeof self.options.Domain === 'string' && self.options.Domain.includes('accelerate.');\n var realApi = FileSize > SliceSize ? 'sliceUploadFile' : 'putObject';\n fileParams.tracker = new Tracker({\n Beacon: self.options.BeaconReporter,\n clsReporter: self.options.ClsReporter,\n bucket: fileParams.Bucket,\n region: fileParams.Region,\n apiName: 'uploadFiles',\n realApi: realApi,\n fileKey: fileParams.Key,\n fileSize: FileSize,\n accelerate: accelerate,\n deepTracker: self.options.DeepTracker,\n customId: self.options.CustomId,\n delay: self.options.TrackerDelay\n });\n }\n\n // 整理 option,用于返回给回调\n util.each(fileParams, function (v, k) {\n if (_typeof(v) !== 'object' && typeof v !== 'function') {\n fileInfo[k] = v;\n }\n });\n\n // 处理单个文件 TaskReady\n var _onTaskReady = fileParams.onTaskReady;\n var onTaskReady = function onTaskReady(tid) {\n fileInfo.TaskId = tid;\n _onTaskReady && _onTaskReady(tid);\n };\n fileParams.onTaskReady = onTaskReady;\n\n // 处理单个文件进度\n var PreAddSize = 0;\n var _onProgress = fileParams.onProgress;\n var onProgress = function onProgress(info) {\n TotalFinish = TotalFinish - PreAddSize + info.loaded;\n PreAddSize = info.loaded;\n _onProgress && _onProgress(info);\n onTotalProgress({\n loaded: TotalFinish,\n total: TotalSize\n });\n };\n fileParams.onProgress = onProgress;\n\n // 添加上传任务\n var api = FileSize > SliceSize ? 'sliceUploadFile' : 'putObject';\n\n // 处理单个文件完成\n var _onFileFinish = fileParams.onFileFinish;\n var onFileFinish = function onFileFinish(err, data) {\n // 格式化上报参数并上报\n fileParams.tracker && fileParams.tracker.report(err, data);\n _onFileFinish && _onFileFinish(err, data);\n onTotalFileFinish && onTotalFileFinish(err, data, fileInfo);\n };\n taskList.push({\n api: api,\n params: fileParams,\n callback: onFileFinish\n });\n })();\n });\n self._addTasks(taskList);\n}\n\n// 分片复制文件\nfunction sliceCopyFile(params, callback) {\n var ep = new EventProxy();\n var self = this;\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var CopySource = params.CopySource;\n var m = util.getSourceParams.call(this, CopySource);\n if (!m) {\n callback(util.error(new Error('CopySource format error')));\n return;\n }\n var SourceBucket = m.Bucket;\n var SourceRegion = m.Region;\n var SourceKey = decodeURIComponent(m.Key);\n var CopySliceSize = params.CopySliceSize === undefined ? self.options.CopySliceSize : params.CopySliceSize;\n CopySliceSize = Math.max(0, CopySliceSize);\n var ChunkSize = params.CopyChunkSize || this.options.CopyChunkSize;\n var ChunkParallel = this.options.CopyChunkParallelLimit;\n var ChunkRetryTimes = this.options.ChunkRetryTimes + 1;\n var ChunkCount = 0;\n var FinishSize = 0;\n var FileSize;\n var onProgress;\n var SourceResHeaders = {};\n var SourceHeaders = {};\n var TargetHeader = {};\n\n // 分片复制完成,开始 multipartComplete 操作\n ep.on('copy_slice_complete', function (UploadData) {\n var metaHeaders = {};\n util.each(params.Headers, function (val, k) {\n if (k.toLowerCase().indexOf('x-cos-meta-') === 0) metaHeaders[k] = val;\n });\n var Parts = util.map(UploadData.PartList, function (item) {\n return {\n PartNumber: item.PartNumber,\n ETag: item.ETag\n };\n });\n // 完成上传的请求也做重试\n Async.retry(ChunkRetryTimes, function (tryCallback) {\n self.multipartComplete({\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n UploadId: UploadData.UploadId,\n Parts: Parts,\n tracker: params.tracker,\n calledBySdk: 'sliceCopyFile'\n }, tryCallback);\n }, function (err, data) {\n session.removeUsing(UploadData.UploadId); // 标记 UploadId 没被使用了,因为复制没提供重试,所以只要出错,就是 UploadId 停用了。\n if (err) {\n onProgress(null, true);\n return callback(err);\n }\n session.removeUploadId(UploadData.UploadId);\n onProgress({\n loaded: FileSize,\n total: FileSize\n }, true);\n callback(null, data);\n });\n });\n ep.on('get_copy_data_finish', function (UploadData) {\n // 处理 UploadId 缓存\n var uuid = session.getCopyFileId(CopySource, SourceResHeaders, ChunkSize, Bucket, Key);\n uuid && session.saveUploadId(uuid, UploadData.UploadId, self.options.UploadIdCacheLimit); // 缓存 UploadId\n session.setUsing(UploadData.UploadId); // 标记 UploadId 为正在使用\n\n var needCopySlices = util.filter(UploadData.PartList, function (SliceItem) {\n if (SliceItem['Uploaded']) {\n FinishSize += SliceItem['PartNumber'] >= ChunkCount ? FileSize % ChunkSize || ChunkSize : ChunkSize;\n }\n return !SliceItem['Uploaded'];\n });\n Async.eachLimit(needCopySlices, ChunkParallel, function (SliceItem, asyncCallback) {\n var PartNumber = SliceItem.PartNumber;\n var CopySourceRange = SliceItem.CopySourceRange;\n var currentSize = SliceItem.end - SliceItem.start;\n Async.retry(ChunkRetryTimes, function (tryCallback) {\n copySliceItem.call(self, {\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n CopySource: CopySource,\n UploadId: UploadData.UploadId,\n PartNumber: PartNumber,\n CopySourceRange: CopySourceRange,\n tracker: params.tracker,\n calledBySdk: 'sliceCopyFile'\n }, tryCallback);\n }, function (err, data) {\n if (err) return asyncCallback(err);\n FinishSize += currentSize;\n onProgress({\n loaded: FinishSize,\n total: FileSize\n });\n SliceItem.ETag = data.ETag;\n asyncCallback(err || null, data);\n });\n }, function (err) {\n if (err) {\n session.removeUsing(UploadData.UploadId); // 标记 UploadId 没被使用了,因为复制没提供重试,所以只要出错,就是 UploadId 停用了。\n onProgress(null, true);\n return callback(err);\n }\n ep.emit('copy_slice_complete', UploadData);\n });\n });\n ep.on('get_chunk_size_finish', function () {\n var createNewUploadId = function createNewUploadId() {\n self.multipartInit({\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n Headers: TargetHeader,\n tracker: params.tracker,\n calledBySdk: 'sliceCopyFile'\n }, function (err, data) {\n if (err) return callback(err);\n params.UploadId = data.UploadId;\n ep.emit('get_copy_data_finish', {\n UploadId: params.UploadId,\n PartList: params.PartList\n });\n });\n };\n\n // 在本地找可用的 UploadId\n var uuid = session.getCopyFileId(CopySource, SourceResHeaders, ChunkSize, Bucket, Key);\n var LocalUploadIdList = session.getUploadIdList(uuid);\n if (!uuid || !LocalUploadIdList) return createNewUploadId();\n var next = function next(index) {\n // 如果本地找不到可用 UploadId,再一个个遍历校验远端\n if (index >= LocalUploadIdList.length) return createNewUploadId();\n var UploadId = LocalUploadIdList[index];\n // 如果正在被使用,跳过\n if (session.using[UploadId]) return next(index + 1);\n // 判断 UploadId 是否存在线上\n wholeMultipartListPart.call(self, {\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n UploadId: UploadId,\n tracker: params.tracker,\n calledBySdk: 'sliceCopyFile'\n }, function (err, PartListData) {\n if (err) {\n // 如果 UploadId 获取会出错,跳过并删除\n session.removeUploadId(UploadId);\n next(index + 1);\n } else {\n // 如果异步回来 UploadId 已经被用了,也跳过\n if (session.using[UploadId]) return next(index + 1);\n // 找到可用 UploadId\n var finishETagMap = {};\n var offset = 0;\n util.each(PartListData.PartList, function (PartItem) {\n var size = parseInt(PartItem.Size);\n var end = offset + size - 1;\n finishETagMap[PartItem.PartNumber + '|' + offset + '|' + end] = PartItem.ETag;\n offset += size;\n });\n util.each(params.PartList, function (PartItem) {\n var ETag = finishETagMap[PartItem.PartNumber + '|' + PartItem.start + '|' + PartItem.end];\n if (ETag) {\n PartItem.ETag = ETag;\n PartItem.Uploaded = true;\n }\n });\n ep.emit('get_copy_data_finish', {\n UploadId: UploadId,\n PartList: params.PartList\n });\n }\n });\n };\n next(0);\n });\n ep.on('get_file_size_finish', function () {\n // 控制分片大小\n (function () {\n var SIZE = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 1024 * 2, 1024 * 4, 1024 * 5];\n var AutoChunkSize = 1024 * 1024;\n for (var i = 0; i < SIZE.length; i++) {\n AutoChunkSize = SIZE[i] * 1024 * 1024;\n if (FileSize / AutoChunkSize <= self.options.MaxPartNumber) break;\n }\n params.ChunkSize = ChunkSize = Math.max(ChunkSize, AutoChunkSize);\n ChunkCount = Math.ceil(FileSize / ChunkSize);\n var list = [];\n for (var partNumber = 1; partNumber <= ChunkCount; partNumber++) {\n var start = (partNumber - 1) * ChunkSize;\n var end = partNumber * ChunkSize < FileSize ? partNumber * ChunkSize - 1 : FileSize - 1;\n var item = {\n PartNumber: partNumber,\n start: start,\n end: end,\n CopySourceRange: 'bytes=' + start + '-' + end\n };\n list.push(item);\n }\n params.PartList = list;\n })();\n if (params.Headers['x-cos-metadata-directive'] === 'Replaced') {\n TargetHeader = params.Headers;\n } else {\n TargetHeader = SourceHeaders;\n }\n TargetHeader['x-cos-storage-class'] = params.Headers['x-cos-storage-class'] || SourceHeaders['x-cos-storage-class'];\n TargetHeader = util.clearKey(TargetHeader);\n /**\n * 对于归档存储的对象,如果未恢复副本,则不允许 Copy\n */\n if (SourceHeaders['x-cos-storage-class'] === 'ARCHIVE' || SourceHeaders['x-cos-storage-class'] === 'DEEP_ARCHIVE') {\n var restoreHeader = SourceHeaders['x-cos-restore'];\n if (!restoreHeader || restoreHeader === 'ongoing-request=\"true\"') {\n callback(util.error(new Error('Unrestored archive object is not allowed to be copied')));\n return;\n }\n }\n /**\n * 去除一些无用的头部,规避 multipartInit 出错\n * 这些头部通常是在 putObjectCopy 时才使用\n */\n delete TargetHeader['x-cos-copy-source'];\n delete TargetHeader['x-cos-metadata-directive'];\n delete TargetHeader['x-cos-copy-source-If-Modified-Since'];\n delete TargetHeader['x-cos-copy-source-If-Unmodified-Since'];\n delete TargetHeader['x-cos-copy-source-If-Match'];\n delete TargetHeader['x-cos-copy-source-If-None-Match'];\n ep.emit('get_chunk_size_finish');\n });\n\n // 获取远端复制源文件的大小\n self.headObject({\n Bucket: SourceBucket,\n Region: SourceRegion,\n Key: SourceKey,\n tracker: params.tracker,\n calledBySdk: 'sliceCopyFile'\n }, function (err, data) {\n if (err) {\n if (err.statusCode && err.statusCode === 404) {\n callback(util.error(err, {\n ErrorStatus: SourceKey + ' Not Exist'\n }));\n } else {\n callback(err);\n }\n return;\n }\n FileSize = params.FileSize = data.headers['content-length'];\n if (FileSize === undefined || !FileSize) {\n callback(util.error(new Error('get Content-Length error, please add \"Content-Length\" to CORS ExposeHeader setting.( 获取Content-Length失败,请在CORS ExposeHeader设置中添加Content-Length,请参考文档:https://cloud.tencent.com/document/product/436/13318 )')));\n return;\n }\n params.tracker && params.tracker.setParams({\n httpSize: FileSize\n });\n onProgress = util.throttleOnProgress.call(self, FileSize, params.onProgress);\n\n // 开始上传\n if (FileSize <= CopySliceSize) {\n if (!params.Headers['x-cos-metadata-directive']) {\n params.Headers['x-cos-metadata-directive'] = 'Copy';\n }\n self.putObjectCopy(Object.assign(params, {\n calledBySdk: 'sliceCopyFile'\n }), function (err, data) {\n if (err) {\n onProgress(null, true);\n return callback(err);\n }\n onProgress({\n loaded: FileSize,\n total: FileSize\n }, true);\n callback(err, data);\n });\n } else {\n var resHeaders = data.headers;\n SourceResHeaders = resHeaders;\n SourceHeaders = {\n 'Cache-Control': resHeaders['cache-control'],\n 'Content-Disposition': resHeaders['content-disposition'],\n 'Content-Encoding': resHeaders['content-encoding'],\n 'Content-Type': resHeaders['content-type'],\n Expires: resHeaders['expires'],\n 'x-cos-storage-class': resHeaders['x-cos-storage-class']\n };\n util.each(resHeaders, function (v, k) {\n var metaPrefix = 'x-cos-meta-';\n if (k.indexOf(metaPrefix) === 0 && k.length > metaPrefix.length) {\n SourceHeaders[k] = v;\n }\n });\n ep.emit('get_file_size_finish');\n }\n });\n}\n\n// 复制指定分片\nfunction copySliceItem(params, callback) {\n var TaskId = params.TaskId;\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var CopySource = params.CopySource;\n var UploadId = params.UploadId;\n var PartNumber = params.PartNumber * 1;\n var CopySourceRange = params.CopySourceRange;\n var ChunkRetryTimes = this.options.ChunkRetryTimes + 1;\n var self = this;\n Async.retry(ChunkRetryTimes, function (tryCallback) {\n self.uploadPartCopy({\n TaskId: TaskId,\n Bucket: Bucket,\n Region: Region,\n Key: Key,\n CopySource: CopySource,\n UploadId: UploadId,\n PartNumber: PartNumber,\n CopySourceRange: CopySourceRange,\n tracker: params.tracker,\n calledBySdk: params.calledBySdk\n }, function (err, data) {\n tryCallback(err || null, data);\n });\n }, function (err, data) {\n return callback(err, data);\n });\n}\nvar API_MAP = {\n sliceUploadFile: sliceUploadFile,\n abortUploadTask: abortUploadTask,\n uploadFile: uploadFile,\n uploadFiles: uploadFiles,\n sliceCopyFile: sliceCopyFile\n};\nmodule.exports.init = function (COS, task) {\n task.transferToTaskMethod(API_MAP, 'sliceUploadFile');\n util.each(API_MAP, function (fn, apiName) {\n COS.prototype[apiName] = util.apiWrapper(apiName, fn);\n });\n};\n\n/***/ }),\n\n/***/ \"./src/async.js\":\n/*!**********************!*\\\n !*** ./src/async.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar eachLimit = function eachLimit(arr, limit, iterator, callback) {\n callback = callback || function () {};\n if (!arr.length || limit <= 0) {\n return callback();\n }\n var completed = 0;\n var started = 0;\n var running = 0;\n (function replenish() {\n if (completed >= arr.length) {\n return callback();\n }\n while (running < limit && started < arr.length) {\n started += 1;\n running += 1;\n iterator(arr[started - 1], function (err) {\n if (err) {\n callback(err);\n callback = function callback() {};\n } else {\n completed += 1;\n running -= 1;\n if (completed >= arr.length) {\n callback();\n } else {\n replenish();\n }\n }\n });\n }\n })();\n};\nvar retry = function retry(times, iterator, callback) {\n var next = function next(index) {\n iterator(function (err, data) {\n if (err && index < times) {\n next(index + 1);\n } else {\n callback(err, data);\n }\n });\n };\n if (times < 1) {\n callback();\n } else {\n next(1);\n }\n};\nvar async = {\n eachLimit: eachLimit,\n retry: retry\n};\nmodule.exports = async;\n\n/***/ }),\n\n/***/ \"./src/base.js\":\n/*!*********************!*\\\n !*** ./src/base.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\nvar REQUEST = __webpack_require__(/*! ../lib/request */ \"./lib/request.js\");\nvar util = __webpack_require__(/*! ./util */ \"./src/util.js\");\n\n// Bucket 相关\n\n/**\n * 获取用户的 bucket 列表\n * @param {Object} params 回调函数,必须,下面为参数列表\n * 无特殊参数\n * @param {Function} callback 回调函数,必须\n */\nfunction getService(params, callback) {\n var protocol = this.options.Protocol || (util.isBrowser && (typeof location === \"undefined\" ? \"undefined\" : _typeof(location)) === 'object' && location.protocol === 'http:' ? 'http:' : 'https:');\n var domain = this.options.ServiceDomain;\n var appId = params.AppId || this.options.appId;\n var region = params.Region;\n if (domain) {\n domain = domain.replace(/\\{\\{AppId\\}\\}/gi, appId || '').replace(/\\{\\{Region\\}\\}/gi, region || '').replace(/\\{\\{.*?\\}\\}/gi, '');\n if (!/^[a-zA-Z]+:\\/\\//.test(domain)) {\n domain = protocol + '//' + domain;\n }\n if (domain.slice(-1) === '/') {\n domain = domain.slice(0, -1);\n }\n } else if (region) {\n domain = protocol + '//cos.' + region + '.myqcloud.com';\n } else {\n domain = protocol + '//service.cos.myqcloud.com';\n }\n var SignHost = '';\n var standardHost = region ? 'cos.' + region + '.myqcloud.com' : 'service.cos.myqcloud.com';\n var urlHost = domain.replace(/^https?:\\/\\/([^/]+)(\\/.*)?$/, '$1');\n if (standardHost === urlHost) SignHost = standardHost;\n submitRequest.call(this, {\n Action: 'name/cos:GetService',\n url: domain,\n method: 'GET',\n headers: params.Headers,\n SignHost: SignHost,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var buckets = data && data.ListAllMyBucketsResult && data.ListAllMyBucketsResult.Buckets && data.ListAllMyBucketsResult.Buckets.Bucket || [];\n buckets = util.isArray(buckets) ? buckets : [buckets];\n var owner = data && data.ListAllMyBucketsResult && data.ListAllMyBucketsResult.Owner || {};\n callback(null, {\n Buckets: buckets,\n Owner: owner,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 创建 Bucket,并初始化访问权限\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.ACL 用户自定义文件权限,可以设置:private,public-read;默认值:private,非必须\n * @param {String} params.GrantRead 赋予被授权者读的权限,格式x-cos-grant-read: uin=\" \",uin=\" \",非必须\n * @param {String} params.GrantWrite 赋予被授权者写的权限,格式x-cos-grant-write: uin=\" \",uin=\" \",非必须\n * @param {String} params.GrantFullControl 赋予被授权者读写权限,格式x-cos-grant-full-control: uin=\" \",uin=\" \",非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {String} data.Location 操作地址\n */\nfunction putBucket(params, callback) {\n var self = this;\n var xml = '';\n if (params['BucketAZConfig']) {\n var CreateBucketConfiguration = {\n BucketAZConfig: params.BucketAZConfig\n };\n xml = util.json2xml({\n CreateBucketConfiguration: CreateBucketConfiguration\n });\n }\n submitRequest.call(this, {\n Action: 'name/cos:PutBucket',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n body: xml,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var url = getUrl({\n protocol: self.options.Protocol,\n domain: self.options.Domain,\n bucket: params.Bucket,\n region: params.Region,\n isLocation: true\n });\n callback(null, {\n Location: url,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 查看是否存在该Bucket,是否有权限访问\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Boolean} data.BucketExist Bucket是否存在\n * @return {Boolean} data.BucketAuth 是否有 Bucket 的访问权限\n */\nfunction headBucket(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:HeadBucket',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n method: 'HEAD',\n tracker: params.tracker\n }, callback);\n}\n\n/**\n * 获取 Bucket 下的 object 列表\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Prefix 前缀匹配,用来规定返回的文件前缀地址,非必须\n * @param {String} params.Delimiter 定界符为一个符号,如果有Prefix,则将Prefix到delimiter之间的相同路径归为一类,非必须\n * @param {String} params.Marker 默认以UTF-8二进制顺序列出条目,所有列出条目从marker开始,非必须\n * @param {String} params.MaxKeys 单次返回最大的条目数量,默认1000,非必须\n * @param {String} params.EncodingType 规定返回值的编码方式,非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Object} data.ListBucketResult 返回的 object 列表信息\n */\nfunction getBucket(params, callback) {\n var reqParams = {};\n reqParams['prefix'] = params['Prefix'] || '';\n reqParams['delimiter'] = params['Delimiter'];\n reqParams['marker'] = params['Marker'];\n reqParams['max-keys'] = params['MaxKeys'];\n reqParams['encoding-type'] = params['EncodingType'];\n submitRequest.call(this, {\n Action: 'name/cos:GetBucket',\n ResourceKey: reqParams['prefix'],\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n qs: reqParams,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var ListBucketResult = data.ListBucketResult || {};\n var Contents = ListBucketResult.Contents || [];\n var CommonPrefixes = ListBucketResult.CommonPrefixes || [];\n Contents = util.isArray(Contents) ? Contents : [Contents];\n CommonPrefixes = util.isArray(CommonPrefixes) ? CommonPrefixes : [CommonPrefixes];\n var result = util.clone(ListBucketResult);\n util.extend(result, {\n Contents: Contents,\n CommonPrefixes: CommonPrefixes,\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\n\n/**\n * 删除 Bucket\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {String} data.Location 操作地址\n */\nfunction deleteBucket(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucket',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n method: 'DELETE',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 设置 Bucket 的 权限列表\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.ACL 用户自定义文件权限,可以设置:private,public-read;默认值:private,非必须\n * @param {String} params.GrantRead 赋予被授权者读的权限,格式x-cos-grant-read: uin=\" \",uin=\" \",非必须\n * @param {String} params.GrantWrite 赋予被授权者写的权限,格式x-cos-grant-write: uin=\" \",uin=\" \",非必须\n * @param {String} params.GrantFullControl 赋予被授权者读写权限,格式x-cos-grant-full-control: uin=\" \",uin=\" \",非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction putBucketAcl(params, callback) {\n var headers = params.Headers;\n var xml = '';\n if (params['AccessControlPolicy']) {\n var AccessControlPolicy = util.clone(params['AccessControlPolicy'] || {});\n var Grants = AccessControlPolicy.Grants || AccessControlPolicy.Grant;\n Grants = util.isArray(Grants) ? Grants : [Grants];\n delete AccessControlPolicy.Grant;\n delete AccessControlPolicy.Grants;\n AccessControlPolicy.AccessControlList = {\n Grant: Grants\n };\n xml = util.json2xml({\n AccessControlPolicy: AccessControlPolicy\n });\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n }\n\n // Grant Header 去重\n util.each(headers, function (val, key) {\n if (key.indexOf('x-cos-grant-') === 0) {\n headers[key] = uniqGrant(headers[key]);\n }\n });\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketACL',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: headers,\n action: 'acl',\n body: xml,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的 权限列表\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Object} data.AccessControlPolicy 访问权限信息\n */\nfunction getBucketAcl(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketACL',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'acl',\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var AccessControlPolicy = data.AccessControlPolicy || {};\n var Owner = AccessControlPolicy.Owner || {};\n var Grant = AccessControlPolicy.AccessControlList.Grant || [];\n Grant = util.isArray(Grant) ? Grant : [Grant];\n var result = decodeAcl(AccessControlPolicy);\n if (data.headers && data.headers['x-cos-acl']) {\n result.ACL = data.headers['x-cos-acl'];\n }\n result = util.extend(result, {\n Owner: Owner,\n Grants: Grant,\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\n\n/**\n * 设置 Bucket 的 跨域设置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Object} params.CORSConfiguration 相关的跨域设置,必须\n * @param {Array} params.CORSConfiguration.CORSRules 对应的跨域规则\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction putBucketCors(params, callback) {\n var CORSConfiguration = params['CORSConfiguration'] || {};\n var CORSRules = CORSConfiguration['CORSRules'] || params['CORSRules'] || [];\n CORSRules = util.clone(util.isArray(CORSRules) ? CORSRules : [CORSRules]);\n util.each(CORSRules, function (rule) {\n util.each(['AllowedOrigin', 'AllowedHeader', 'AllowedMethod', 'ExposeHeader'], function (key) {\n var sKey = key + 's';\n var val = rule[sKey] || rule[key] || [];\n delete rule[sKey];\n rule[key] = util.isArray(val) ? val : [val];\n });\n });\n var Conf = {\n CORSRule: CORSRules\n };\n if (params.ResponseVary) Conf.ResponseVary = params.ResponseVary;\n var xml = util.json2xml({\n CORSConfiguration: Conf\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketCORS',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'cors',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的 跨域设置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Object} data.CORSRules Bucket的跨域设置\n */\nfunction getBucketCors(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketCORS',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'cors',\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode === 404 && err.error && err.error.Code === 'NoSuchCORSConfiguration') {\n var result = {\n CORSRules: [],\n statusCode: err.statusCode\n };\n err.headers && (result.headers = err.headers);\n callback(null, result);\n } else {\n callback(err);\n }\n return;\n }\n var CORSConfiguration = data.CORSConfiguration || {};\n var CORSRules = CORSConfiguration.CORSRules || CORSConfiguration.CORSRule || [];\n CORSRules = util.clone(util.isArray(CORSRules) ? CORSRules : [CORSRules]);\n var ResponseVary = CORSConfiguration.ResponseVary;\n util.each(CORSRules, function (rule) {\n util.each(['AllowedOrigin', 'AllowedHeader', 'AllowedMethod', 'ExposeHeader'], function (key) {\n var sKey = key + 's';\n var val = rule[sKey] || rule[key] || [];\n delete rule[key];\n rule[sKey] = util.isArray(val) ? val : [val];\n });\n });\n callback(null, {\n CORSRules: CORSRules,\n ResponseVary: ResponseVary,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 删除 Bucket 的 跨域设置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction deleteBucketCors(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketCORS',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'cors',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode || err.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的 地域信息\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据,包含地域信息 LocationConstraint\n */\nfunction getBucketLocation(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketLocation',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'location',\n tracker: params.tracker\n }, callback);\n}\nfunction putBucketPolicy(params, callback) {\n var Policy = params['Policy'];\n try {\n if (typeof Policy === 'string') Policy = JSON.parse(Policy);\n } catch (e) {}\n if (!Policy || typeof Policy === 'string') return callback(util.error(new Error('Policy format error')));\n var PolicyStr = JSON.stringify(Policy);\n if (!Policy.version) Policy.version = '2.0';\n var headers = params.Headers;\n headers['Content-Type'] = 'application/json';\n headers['Content-MD5'] = util.b64(util.md5(PolicyStr));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketPolicy',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n action: 'policy',\n body: PolicyStr,\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的读取权限策略\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction getBucketPolicy(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketPolicy',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'policy',\n rawBody: true,\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode && err.statusCode === 403) {\n return callback(util.error(err, {\n ErrorStatus: 'Access Denied'\n }));\n }\n if (err.statusCode && err.statusCode === 405) {\n return callback(util.error(err, {\n ErrorStatus: 'Method Not Allowed'\n }));\n }\n if (err.statusCode && err.statusCode === 404) {\n return callback(util.error(err, {\n ErrorStatus: 'Policy Not Found'\n }));\n }\n return callback(err);\n }\n var Policy = {};\n try {\n Policy = JSON.parse(data.body);\n } catch (e) {}\n callback(null, {\n Policy: Policy,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 删除 Bucket 的 跨域设置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction deleteBucketPolicy(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketPolicy',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'policy',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode || err.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 设置 Bucket 的标签\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Array} params.TagSet 标签设置,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction putBucketTagging(params, callback) {\n var Tagging = params['Tagging'] || {};\n var Tags = Tagging.TagSet || Tagging.Tags || params['Tags'] || [];\n Tags = util.clone(util.isArray(Tags) ? Tags : [Tags]);\n var xml = util.json2xml({\n Tagging: {\n TagSet: {\n Tag: Tags\n }\n }\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketTagging',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'tagging',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的标签设置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction getBucketTagging(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketTagging',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'tagging',\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode === 404 && err.error && (err.error === 'Not Found' || err.error.Code === 'NoSuchTagSet')) {\n var result = {\n Tags: [],\n statusCode: err.statusCode\n };\n err.headers && (result.headers = err.headers);\n callback(null, result);\n } else {\n callback(err);\n }\n return;\n }\n var Tags = [];\n try {\n Tags = data.Tagging.TagSet.Tag || [];\n } catch (e) {}\n Tags = util.clone(util.isArray(Tags) ? Tags : [Tags]);\n callback(null, {\n Tags: Tags,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 删除 Bucket 的 标签设置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction deleteBucketTagging(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketTagging',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'tagging',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\nfunction putBucketLifecycle(params, callback) {\n var LifecycleConfiguration = params['LifecycleConfiguration'] || {};\n var Rules = LifecycleConfiguration.Rules || params.Rules || [];\n Rules = util.clone(Rules);\n var xml = util.json2xml({\n LifecycleConfiguration: {\n Rule: Rules\n }\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketLifecycle',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'lifecycle',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\nfunction getBucketLifecycle(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketLifecycle',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'lifecycle',\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode === 404 && err.error && err.error.Code === 'NoSuchLifecycleConfiguration') {\n var result = {\n Rules: [],\n statusCode: err.statusCode\n };\n err.headers && (result.headers = err.headers);\n callback(null, result);\n } else {\n callback(err);\n }\n return;\n }\n var Rules = [];\n try {\n Rules = data.LifecycleConfiguration.Rule || [];\n } catch (e) {}\n Rules = util.clone(util.isArray(Rules) ? Rules : [Rules]);\n callback(null, {\n Rules: Rules,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\nfunction deleteBucketLifecycle(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketLifecycle',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'lifecycle',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\nfunction putBucketVersioning(params, callback) {\n if (!params['VersioningConfiguration']) {\n callback(util.error(new Error('missing param VersioningConfiguration')));\n return;\n }\n var VersioningConfiguration = params['VersioningConfiguration'] || {};\n var xml = util.json2xml({\n VersioningConfiguration: VersioningConfiguration\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketVersioning',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'versioning',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\nfunction getBucketVersioning(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketVersioning',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'versioning',\n tracker: params.tracker\n }, function (err, data) {\n if (!err) {\n !data.VersioningConfiguration && (data.VersioningConfiguration = {});\n }\n callback(err, data);\n });\n}\nfunction putBucketReplication(params, callback) {\n var ReplicationConfiguration = util.clone(params.ReplicationConfiguration);\n var xml = util.json2xml({\n ReplicationConfiguration: ReplicationConfiguration\n });\n xml = xml.replace(/<(\\/?)Rules>/gi, '<$1Rule>');\n xml = xml.replace(/<(\\/?)Tags>/gi, '<$1Tag>');\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketReplication',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'replication',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\nfunction getBucketReplication(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketReplication',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'replication',\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode === 404 && err.error && (err.error === 'Not Found' || err.error.Code === 'ReplicationConfigurationnotFoundError')) {\n var result = {\n ReplicationConfiguration: {\n Rules: []\n },\n statusCode: err.statusCode\n };\n err.headers && (result.headers = err.headers);\n callback(null, result);\n } else {\n callback(err);\n }\n return;\n }\n !data.ReplicationConfiguration && (data.ReplicationConfiguration = {});\n if (data.ReplicationConfiguration.Rule) {\n data.ReplicationConfiguration.Rules = util.makeArray(data.ReplicationConfiguration.Rule);\n delete data.ReplicationConfiguration.Rule;\n }\n callback(err, data);\n });\n}\nfunction deleteBucketReplication(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketReplication',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'replication',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 设置 Bucket 静态网站配置信息\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Object} params.WebsiteConfiguration 地域名称,必须\n * @param {Object} WebsiteConfiguration.IndexDocument 索引文档,必须\n * @param {Object} WebsiteConfiguration.ErrorDocument 错误文档,非必须\n * @param {Object} WebsiteConfiguration.RedirectAllRequestsTo 重定向所有请求,非必须\n * @param {Array} params.RoutingRules 重定向规则,非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction putBucketWebsite(params, callback) {\n if (!params['WebsiteConfiguration']) {\n callback(util.error(new Error('missing param WebsiteConfiguration')));\n return;\n }\n var WebsiteConfiguration = util.clone(params['WebsiteConfiguration'] || {});\n var RoutingRules = WebsiteConfiguration['RoutingRules'] || WebsiteConfiguration['RoutingRule'] || [];\n RoutingRules = util.isArray(RoutingRules) ? RoutingRules : [RoutingRules];\n delete WebsiteConfiguration.RoutingRule;\n delete WebsiteConfiguration.RoutingRules;\n if (RoutingRules.length) WebsiteConfiguration.RoutingRules = {\n RoutingRule: RoutingRules\n };\n var xml = util.json2xml({\n WebsiteConfiguration: WebsiteConfiguration\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketWebsite',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'website',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的静态网站配置信息\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction getBucketWebsite(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketWebsite',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n action: 'website',\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode === 404 && err.error.Code === 'NoSuchWebsiteConfiguration') {\n var result = {\n WebsiteConfiguration: {},\n statusCode: err.statusCode\n };\n err.headers && (result.headers = err.headers);\n callback(null, result);\n } else {\n callback(err);\n }\n return;\n }\n var WebsiteConfiguration = data.WebsiteConfiguration || {};\n if (WebsiteConfiguration['RoutingRules']) {\n var RoutingRules = util.clone(WebsiteConfiguration['RoutingRules'].RoutingRule || []);\n RoutingRules = util.makeArray(RoutingRules);\n WebsiteConfiguration.RoutingRules = RoutingRules;\n }\n callback(null, {\n WebsiteConfiguration: WebsiteConfiguration,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 删除 Bucket 的静态网站配置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction deleteBucketWebsite(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketWebsite',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'website',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 设置 Bucket 的防盗链白名单或者黑名单\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Object} params.RefererConfiguration 地域名称,必须\n * @param {String} RefererConfiguration.Status 是否开启防盗链,枚举值:Enabled、Disabled\n * @param {String} RefererConfiguration.RefererType 防盗链类型,枚举值:Black-List、White-List,必须\n * @param {Array} RefererConfiguration.DomianList.Domain 生效域名,必须\n * @param {String} RefererConfiguration.EmptyReferConfiguration ,非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction putBucketReferer(params, callback) {\n if (!params['RefererConfiguration']) {\n callback(util.error(new Error('missing param RefererConfiguration')));\n return;\n }\n var RefererConfiguration = util.clone(params['RefererConfiguration'] || {});\n var DomainList = RefererConfiguration['DomainList'] || {};\n var Domains = DomainList['Domains'] || DomainList['Domain'] || [];\n Domains = util.isArray(Domains) ? Domains : [Domains];\n if (Domains.length) RefererConfiguration.DomainList = {\n Domain: Domains\n };\n var xml = util.json2xml({\n RefererConfiguration: RefererConfiguration\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketReferer',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'referer',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的防盗链白名单或者黑名单\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction getBucketReferer(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketReferer',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n action: 'referer',\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode === 404 && err.error.Code === 'NoSuchRefererConfiguration') {\n var result = {\n WebsiteConfiguration: {},\n statusCode: err.statusCode\n };\n err.headers && (result.headers = err.headers);\n callback(null, result);\n } else {\n callback(err);\n }\n return;\n }\n var RefererConfiguration = data.RefererConfiguration || {};\n if (RefererConfiguration['DomainList']) {\n var Domains = util.makeArray(RefererConfiguration['DomainList'].Domain || []);\n RefererConfiguration.DomainList = {\n Domains: Domains\n };\n }\n callback(null, {\n RefererConfiguration: RefererConfiguration,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 设置 Bucket 自定义域名\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction putBucketDomain(params, callback) {\n var DomainConfiguration = params['DomainConfiguration'] || {};\n var DomainRule = DomainConfiguration.DomainRule || params.DomainRule || [];\n DomainRule = util.clone(DomainRule);\n var xml = util.json2xml({\n DomainConfiguration: {\n DomainRule: DomainRule\n }\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketDomain',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'domain',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的自定义域名\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction getBucketDomain(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketDomain',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'domain',\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var DomainRule = [];\n try {\n DomainRule = data.DomainConfiguration.DomainRule || [];\n } catch (e) {}\n DomainRule = util.clone(util.isArray(DomainRule) ? DomainRule : [DomainRule]);\n callback(null, {\n DomainRule: DomainRule,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 删除 Bucket 自定义域名\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction deleteBucketDomain(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketDomain',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'domain',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 设置 Bucket 的回源\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction putBucketOrigin(params, callback) {\n var OriginConfiguration = params['OriginConfiguration'] || {};\n var OriginRule = OriginConfiguration.OriginRule || params.OriginRule || [];\n OriginRule = util.clone(OriginRule);\n var xml = util.json2xml({\n OriginConfiguration: {\n OriginRule: OriginRule\n }\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketOrigin',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'origin',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的回源\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction getBucketOrigin(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketOrigin',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'origin',\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var OriginRule = [];\n try {\n OriginRule = data.OriginConfiguration.OriginRule || [];\n } catch (e) {}\n OriginRule = util.clone(util.isArray(OriginRule) ? OriginRule : [OriginRule]);\n callback(null, {\n OriginRule: OriginRule,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 删除 Bucket 的回源\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction deleteBucketOrigin(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketOrigin',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'origin',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 设置 Bucket 的日志记录\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {(Object|String)} params.BucketLoggingStatus 说明日志记录配置的状态,如果无子节点信息则意为关闭日志记录,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction putBucketLogging(params, callback) {\n var xml = util.json2xml({\n BucketLoggingStatus: params['BucketLoggingStatus'] || ''\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketLogging',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'logging',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的日志记录\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction getBucketLogging(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketLogging',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'logging',\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n callback(null, {\n BucketLoggingStatus: data.BucketLoggingStatus,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 创建/编辑 Bucket 的清单任务\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Id 清单任务的名称,必须\n * @param {Object} params.InventoryConfiguration 包含清单的配置参数,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction submitBucketInventory(method, params, callback) {\n var InventoryConfiguration = util.clone(params['InventoryConfiguration']);\n if (InventoryConfiguration.OptionalFields) {\n var Field = InventoryConfiguration.OptionalFields || [];\n InventoryConfiguration.OptionalFields = {\n Field: Field\n };\n }\n if (InventoryConfiguration.Destination && InventoryConfiguration.Destination.COSBucketDestination && InventoryConfiguration.Destination.COSBucketDestination.Encryption) {\n var Encryption = InventoryConfiguration.Destination.COSBucketDestination.Encryption;\n if (Object.keys(Encryption).indexOf('SSECOS') > -1) {\n Encryption['SSE-COS'] = Encryption['SSECOS'];\n delete Encryption['SSECOS'];\n }\n }\n var xml = util.json2xml({\n InventoryConfiguration: InventoryConfiguration\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n var action = method === 'PUT' ? 'name/cos:PutBucketInventory' : 'name/cos:PostBucketInventory';\n submitRequest.call(this, {\n Action: action,\n method: method,\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'inventory',\n qs: {\n id: params['Id']\n },\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 创建一个清单任务\n */\nfunction putBucketInventory(params, callback) {\n return submitBucketInventory.call(this, 'PUT', params, callback);\n}\n\n/**\n * 创建一个一次性清单任务 会立即执行\n */\nfunction postBucketInventory(params, callback) {\n return submitBucketInventory.call(this, 'POST', params, callback);\n}\n\n/**\n * 获取 Bucket 的清单任务信息\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Id 清单任务的名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction getBucketInventory(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketInventory',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'inventory',\n qs: {\n id: params['Id']\n },\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var InventoryConfiguration = data['InventoryConfiguration'];\n if (InventoryConfiguration && InventoryConfiguration.OptionalFields && InventoryConfiguration.OptionalFields.Field) {\n var Field = InventoryConfiguration.OptionalFields.Field;\n if (!util.isArray(Field)) {\n Field = [Field];\n }\n InventoryConfiguration.OptionalFields = Field;\n }\n if (InventoryConfiguration.Destination && InventoryConfiguration.Destination.COSBucketDestination && InventoryConfiguration.Destination.COSBucketDestination.Encryption) {\n var Encryption = InventoryConfiguration.Destination.COSBucketDestination.Encryption;\n if (Object.keys(Encryption).indexOf('SSE-COS') > -1) {\n Encryption['SSECOS'] = Encryption['SSE-COS'];\n delete Encryption['SSE-COS'];\n }\n }\n callback(null, {\n InventoryConfiguration: InventoryConfiguration,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Bucket 的清单任务信息\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.ContinuationToken 当 COS 响应体中 IsTruncated 为 true,且 NextContinuationToken 节点中存在参数值时,您可以将这个参数作为 continuation-token 参数值,以获取下一页的清单任务信息,非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction listBucketInventory(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:ListBucketInventory',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'inventory',\n qs: {\n 'continuation-token': params['ContinuationToken']\n },\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var ListInventoryConfigurationResult = data['ListInventoryConfigurationResult'];\n var InventoryConfigurations = ListInventoryConfigurationResult.InventoryConfiguration || [];\n InventoryConfigurations = util.isArray(InventoryConfigurations) ? InventoryConfigurations : [InventoryConfigurations];\n delete ListInventoryConfigurationResult['InventoryConfiguration'];\n util.each(InventoryConfigurations, function (InventoryConfiguration) {\n if (InventoryConfiguration && InventoryConfiguration.OptionalFields && InventoryConfiguration.OptionalFields.Field) {\n var Field = InventoryConfiguration.OptionalFields.Field;\n if (!util.isArray(Field)) {\n Field = [Field];\n }\n InventoryConfiguration.OptionalFields = Field;\n }\n if (InventoryConfiguration.Destination && InventoryConfiguration.Destination.COSBucketDestination && InventoryConfiguration.Destination.COSBucketDestination.Encryption) {\n var Encryption = InventoryConfiguration.Destination.COSBucketDestination.Encryption;\n if (Object.keys(Encryption).indexOf('SSE-COS') > -1) {\n Encryption['SSECOS'] = Encryption['SSE-COS'];\n delete Encryption['SSE-COS'];\n }\n }\n });\n ListInventoryConfigurationResult.InventoryConfigurations = InventoryConfigurations;\n util.extend(ListInventoryConfigurationResult, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, ListInventoryConfigurationResult);\n });\n}\n\n/**\n * 删除 Bucket 的清单任务\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Id 清单任务的名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回数据\n */\nfunction deleteBucketInventory(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketInventory',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'inventory',\n qs: {\n id: params['Id']\n },\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/* 全球加速 */\nfunction putBucketAccelerate(params, callback) {\n if (!params['AccelerateConfiguration']) {\n callback(util.error(new Error('missing param AccelerateConfiguration')));\n return;\n }\n var configuration = {\n AccelerateConfiguration: params.AccelerateConfiguration || {}\n };\n var xml = util.json2xml(configuration);\n var headers = {};\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketAccelerate',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'accelerate',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\nfunction getBucketAccelerate(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketAccelerate',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n action: 'accelerate',\n tracker: params.tracker\n }, function (err, data) {\n if (!err) {\n !data.AccelerateConfiguration && (data.AccelerateConfiguration = {});\n }\n callback(err, data);\n });\n}\nfunction putBucketEncryption(params, callback) {\n var conf = params.ServerSideEncryptionConfiguration || {};\n var Rules = conf.Rule || conf.Rules || [];\n var xml = util.json2xml({\n ServerSideEncryptionConfiguration: {\n Rule: Rules\n }\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutBucketEncryption',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'encryption',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\nfunction getBucketEncryption(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketEncryption',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'encryption',\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode === 404 && err.code === 'NoSuchEncryptionConfiguration') {\n var result = {\n EncryptionConfiguration: {\n Rules: []\n },\n statusCode: err.statusCode\n };\n err.headers && (result.headers = err.headers);\n callback(null, result);\n } else {\n callback(err);\n }\n return;\n }\n var Rules = util.makeArray(data.EncryptionConfiguration && data.EncryptionConfiguration.Rule || []);\n data.EncryptionConfiguration = {\n Rules: Rules\n };\n callback(err, data);\n });\n}\nfunction deleteBucketEncryption(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteBucketReplication',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'encryption',\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n// Object 相关\n\n/**\n * 取回对应Object的元数据,Head的权限与Get的权限一致\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key 文件名称,必须\n * @param {String} params.IfModifiedSince 当Object在指定时间后被修改,则返回对应Object元信息,否则返回304,非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 为指定 object 的元数据,如果设置了 IfModifiedSince ,且文件未修改,则返回一个对象,NotModified 属性为 true\n * @return {Boolean} data.NotModified 是否在 IfModifiedSince 时间点之后未修改该 object,则为 true\n */\nfunction headObject(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:HeadObject',\n method: 'HEAD',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n VersionId: params.VersionId,\n headers: params.Headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n var statusCode = err.statusCode;\n if (params.Headers['If-Modified-Since'] && statusCode && statusCode === 304) {\n return callback(null, {\n NotModified: true,\n statusCode: statusCode\n });\n }\n return callback(err);\n }\n data.ETag = util.attr(data.headers, 'etag', '');\n callback(null, data);\n });\n}\nfunction listObjectVersions(params, callback) {\n var reqParams = {};\n reqParams['prefix'] = params['Prefix'] || '';\n reqParams['delimiter'] = params['Delimiter'];\n reqParams['key-marker'] = params['KeyMarker'];\n reqParams['version-id-marker'] = params['VersionIdMarker'];\n reqParams['max-keys'] = params['MaxKeys'];\n reqParams['encoding-type'] = params['EncodingType'];\n submitRequest.call(this, {\n Action: 'name/cos:GetBucketObjectVersions',\n ResourceKey: reqParams['prefix'],\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n qs: reqParams,\n action: 'versions',\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var ListVersionsResult = data.ListVersionsResult || {};\n var DeleteMarkers = ListVersionsResult.DeleteMarker || [];\n DeleteMarkers = util.isArray(DeleteMarkers) ? DeleteMarkers : [DeleteMarkers];\n var Versions = ListVersionsResult.Version || [];\n Versions = util.isArray(Versions) ? Versions : [Versions];\n var result = util.clone(ListVersionsResult);\n delete result.DeleteMarker;\n delete result.Version;\n util.extend(result, {\n DeleteMarkers: DeleteMarkers,\n Versions: Versions,\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\n\n/**\n * 下载 object\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key 文件名称,必须\n * @param {WriteStream} params.Output 文件写入流,非必须\n * @param {String} params.IfModifiedSince 当Object在指定时间后被修改,则返回对应Object元信息,否则返回304,非必须\n * @param {String} params.IfUnmodifiedSince 如果文件修改时间早于或等于指定时间,才返回文件内容。否则返回 412 (precondition failed),非必须\n * @param {String} params.IfMatch 当 ETag 与指定的内容一致,才返回文件。否则返回 412 (precondition failed),非必须\n * @param {String} params.IfNoneMatch 当 ETag 与指定的内容不一致,才返回文件。否则返回304 (not modified),非必须\n * @param {String} params.ResponseContentType 设置返回头部中的 Content-Type 参数,非必须\n * @param {String} params.ResponseContentLanguage 设置返回头部中的 Content-Language 参数,非必须\n * @param {String} params.ResponseExpires 设置返回头部中的 Content-Expires 参数,非必须\n * @param {String} params.ResponseCacheControl 设置返回头部中的 Cache-Control 参数,非必须\n * @param {String} params.ResponseContentDisposition 设置返回头部中的 Content-Disposition 参数,非必须\n * @param {String} params.ResponseContentEncoding 设置返回头部中的 Content-Encoding 参数,非必须\n * @param {Function} callback 回调函数,必须\n * @param {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @param {Object} data 为对应的 object 数据,包括 body 和 headers\n */\nfunction getObject(params, callback) {\n if (this.options.ObjectKeySimplifyCheck) {\n // getObject 的 Key 需要校验,避免调用成 getBucket\n var formatKey = util.simplifyPath(params.Key);\n if (formatKey === '/') {\n callback(util.error(new Error('The Getobject Key is illegal')));\n return;\n }\n }\n var reqParams = params.Query || {};\n var reqParamsStr = params.QueryString || '';\n var onProgress = util.throttleOnProgress.call(this, 0, params.onProgress);\n var tracker = params.tracker;\n tracker && tracker.setParams({\n signStartTime: new Date().getTime()\n });\n reqParams['response-content-type'] = params['ResponseContentType'];\n reqParams['response-content-language'] = params['ResponseContentLanguage'];\n reqParams['response-expires'] = params['ResponseExpires'];\n reqParams['response-cache-control'] = params['ResponseCacheControl'];\n reqParams['response-content-disposition'] = params['ResponseContentDisposition'];\n reqParams['response-content-encoding'] = params['ResponseContentEncoding'];\n\n // 如果用户自己传入了 output\n submitRequest.call(this, {\n Action: 'name/cos:GetObject',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n VersionId: params.VersionId,\n DataType: params.DataType,\n headers: params.Headers,\n qs: reqParams,\n qsStr: reqParamsStr,\n rawBody: true,\n onDownloadProgress: onProgress,\n tracker: tracker\n }, function (err, data) {\n onProgress(null, true);\n if (err) {\n var statusCode = err.statusCode;\n if (params.Headers['If-Modified-Since'] && statusCode && statusCode === 304) {\n return callback(null, {\n NotModified: true\n });\n }\n return callback(err);\n }\n callback(null, {\n Body: data.body,\n ETag: util.attr(data.headers, 'etag', ''),\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 上传 object\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key 文件名称,必须\n * @param {File || Blob || String} params.Body 上传文件对象或字符串,必须\n * @param {String} params.CacheControl RFC 2616 中定义的缓存策略,将作为 Object 元数据保存,非必须\n * @param {String} params.ContentDisposition RFC 2616 中定义的文件名称,将作为 Object 元数据保存,非必须\n * @param {String} params.ContentEncoding RFC 2616 中定义的编码格式,将作为 Object 元数据保存,非必须\n * @param {String} params.ContentLength RFC 2616 中定义的 HTTP 请求内容长度(字节),必须\n * @param {String} params.ContentType RFC 2616 中定义的内容类型(MIME),将作为 Object 元数据保存,非必须\n * @param {String} params.Expect 当使用 Expect: 100-continue 时,在收到服务端确认后,才会发送请求内容,非必须\n * @param {String} params.Expires RFC 2616 中定义的过期时间,将作为 Object 元数据保存,非必须\n * @param {String} params.ACL 允许用户自定义文件权限,有效值:private | public-read,非必须\n * @param {String} params.GrantRead 赋予被授权者读取对象的权限,格式:id=\"[OwnerUin]\",可使用半角逗号(,)分隔多组被授权者,非必须\n * @param {String} params.GrantReadAcp 赋予被授权者读取对象的访问控制列表(ACL)的权限,格式:id=\"[OwnerUin]\",可使用半角逗号(,)分隔多组被授权者,非必须\n * @param {String} params.GrantWriteAcp 赋予被授权者写入对象的访问控制列表(ACL)的权限,格式:id=\"[OwnerUin]\",可使用半角逗号(,)分隔多组被授权者,非必须\n * @param {String} params.GrantFullControl 赋予被授权者操作对象的所有权限,格式:id=\"[OwnerUin]\",可使用半角逗号(,)分隔多组被授权者,非必须\n * @param {String} params.StorageClass 设置对象的存储级别,枚举值:STANDARD、STANDARD_IA、ARCHIVE,默认值:STANDARD,非必须\n * @param {String} params.x-cos-meta-* 允许用户自定义的头部信息,将作为对象的元数据保存。大小限制2KB,非必须\n * @param {String} params.ContentSha1 RFC 3174 中定义的 160-bit 内容 SHA-1 算法校验,非必须\n * @param {String} params.ServerSideEncryption 支持按照指定的加密算法进行服务端数据加密,格式 x-cos-server-side-encryption: \"AES256\",非必须\n * @param {Function} params.onProgress 上传进度回调函数\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 为对应的 object 数据\n * @return {String} data.ETag 为对应上传文件的 ETag 值\n */\nfunction putObject(params, callback) {\n var self = this;\n var FileSize = params.ContentLength;\n var onProgress = util.throttleOnProgress.call(self, FileSize, params.onProgress);\n\n // 特殊处理 Cache-Control、Content-Type,避免代理更改这两个字段导致写入到 Object 属性里\n var headers = params.Headers;\n if (!headers['Cache-Control'] && !headers['cache-control']) headers['Cache-Control'] = '';\n if (!headers['Content-Type'] && !headers['content-type']) headers['Content-Type'] = params.Body && params.Body.type || '';\n var needCalcMd5 = params.UploadAddMetaMd5 || self.options.UploadAddMetaMd5 || self.options.UploadCheckContentMd5;\n var tracker = params.tracker;\n needCalcMd5 && tracker && tracker.setParams({\n md5StartTime: new Date().getTime()\n });\n util.getBodyMd5(needCalcMd5, params.Body, function (md5) {\n if (md5) {\n tracker && tracker.setParams({\n md5EndTime: new Date().getTime()\n });\n if (self.options.UploadCheckContentMd5) headers['Content-MD5'] = util.b64(md5);\n if (params.UploadAddMetaMd5 || self.options.UploadAddMetaMd5) headers['x-cos-meta-md5'] = md5;\n }\n if (params.ContentLength !== undefined) headers['Content-Length'] = params.ContentLength;\n onProgress(null, true); // 任务状态开始 uploading\n submitRequest.call(self, {\n Action: 'name/cos:PutObject',\n TaskId: params.TaskId,\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n qs: params.Query,\n body: params.Body,\n onProgress: onProgress,\n tracker: tracker\n }, function (err, data) {\n if (err) {\n onProgress(null, true);\n return callback(err);\n }\n onProgress({\n loaded: FileSize,\n total: FileSize\n }, true);\n var url = getUrl({\n ForcePathStyle: self.options.ForcePathStyle,\n protocol: self.options.Protocol,\n domain: self.options.Domain,\n bucket: params.Bucket,\n region: !self.options.UseAccelerate ? params.Region : 'accelerate',\n object: params.Key\n });\n url = url.substr(url.indexOf('://') + 3);\n data.Location = url;\n data.ETag = util.attr(data.headers, 'etag', '');\n callback(null, data);\n });\n }, params.onHashProgress);\n}\n\n/**\n * 删除 object\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {Function} callback 回调函数,必须\n * @param {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @param {Object} data 删除操作成功之后返回的数据\n */\nfunction deleteObject(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteObject',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n VersionId: params.VersionId,\n action: params.Recursive ? 'recursive' : '',\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n var statusCode = err.statusCode;\n if (statusCode && statusCode === 404) {\n return callback(null, {\n BucketNotFound: true,\n statusCode: statusCode\n });\n } else {\n return callback(err);\n }\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 object 的 权限列表\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Object} data.AccessControlPolicy 权限列表\n */\nfunction getObjectAcl(params, callback) {\n var reqParams = {};\n if (params.VersionId) {\n reqParams.versionId = params.VersionId;\n }\n submitRequest.call(this, {\n Action: 'name/cos:GetObjectACL',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n qs: reqParams,\n action: 'acl',\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var AccessControlPolicy = data.AccessControlPolicy || {};\n var Owner = AccessControlPolicy.Owner || {};\n var Grant = AccessControlPolicy.AccessControlList && AccessControlPolicy.AccessControlList.Grant || [];\n Grant = util.isArray(Grant) ? Grant : [Grant];\n var result = decodeAcl(AccessControlPolicy);\n delete result.GrantWrite;\n if (data.headers && data.headers['x-cos-acl']) {\n result.ACL = data.headers['x-cos-acl'];\n }\n result = util.extend(result, {\n Owner: Owner,\n Grants: Grant,\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\n\n/**\n * 设置 object 的 权限列表\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction putObjectAcl(params, callback) {\n var headers = params.Headers;\n var xml = '';\n if (params['AccessControlPolicy']) {\n var AccessControlPolicy = util.clone(params['AccessControlPolicy'] || {});\n var Grants = AccessControlPolicy.Grants || AccessControlPolicy.Grant;\n Grants = util.isArray(Grants) ? Grants : [Grants];\n delete AccessControlPolicy.Grant;\n delete AccessControlPolicy.Grants;\n AccessControlPolicy.AccessControlList = {\n Grant: Grants\n };\n xml = util.json2xml({\n AccessControlPolicy: AccessControlPolicy\n });\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n }\n\n // Grant Header 去重\n util.each(headers, function (val, key) {\n if (key.indexOf('x-cos-grant-') === 0) {\n headers[key] = uniqGrant(headers[key]);\n }\n });\n submitRequest.call(this, {\n Action: 'name/cos:PutObjectACL',\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n action: 'acl',\n headers: headers,\n body: xml,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * Options Object请求实现跨域访问的预请求。即发出一个 OPTIONS 请求给服务器以确认是否可以进行跨域操作。\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction optionsObject(params, callback) {\n var headers = params.Headers;\n headers['Origin'] = params['Origin'];\n headers['Access-Control-Request-Method'] = params['AccessControlRequestMethod'];\n headers['Access-Control-Request-Headers'] = params['AccessControlRequestHeaders'];\n submitRequest.call(this, {\n Action: 'name/cos:OptionsObject',\n method: 'OPTIONS',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode && err.statusCode === 403) {\n return callback(null, {\n OptionsForbidden: true,\n statusCode: err.statusCode\n });\n }\n return callback(err);\n }\n var headers = data.headers || {};\n callback(null, {\n AccessControlAllowOrigin: headers['access-control-allow-origin'],\n AccessControlAllowMethods: headers['access-control-allow-methods'],\n AccessControlAllowHeaders: headers['access-control-allow-headers'],\n AccessControlExposeHeaders: headers['access-control-expose-headers'],\n AccessControlMaxAge: headers['access-control-max-age'],\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * @param {Object} 参数列表\n * @param {String} Bucket Bucket 名称\n * @param {String} Region 地域名称\n * @param {String} Key 文件名称\n * @param {String} CopySource 源文件URL绝对路径,可以通过versionid子资源指定历史版本\n * @param {String} ACL 允许用户自定义文件权限。有效值:private,public-read默认值:private。\n * @param {String} GrantRead 赋予被授权者读的权限,格式 x-cos-grant-read: uin=\" \",uin=\" \",当需要给子账户授权时,uin=\"RootAcountID/SubAccountID\",当需要给根账户授权时,uin=\"RootAcountID\"。\n * @param {String} GrantWrite 赋予被授权者写的权限,格式 x-cos-grant-write: uin=\" \",uin=\" \",当需要给子账户授权时,uin=\"RootAcountID/SubAccountID\",当需要给根账户授权时,uin=\"RootAcountID\"。\n * @param {String} GrantFullControl 赋予被授权者读写权限,格式 x-cos-grant-full-control: uin=\" \",uin=\" \",当需要给子账户授权时,uin=\"RootAcountID/SubAccountID\",当需要给根账户授权时,uin=\"RootAcountID\"。\n * @param {String} MetadataDirective 是否拷贝元数据,枚举值:Copy, Replaced,默认值Copy。假如标记为Copy,忽略Header中的用户元数据信息直接复制;假如标记为Replaced,按Header信息修改元数据。当目标路径和原路径一致,即用户试图修改元数据时,必须为Replaced\n * @param {String} CopySourceIfModifiedSince 当Object在指定时间后被修改,则执行操作,否则返回412。可与x-cos-copy-source-If-None-Match一起使用,与其他条件联合使用返回冲突。\n * @param {String} CopySourceIfUnmodifiedSince 当Object在指定时间后未被修改,则执行操作,否则返回412。可与x-cos-copy-source-If-Match一起使用,与其他条件联合使用返回冲突。\n * @param {String} CopySourceIfMatch 当Object的ETag和给定一致时,则执行操作,否则返回412。可与x-cos-copy-source-If-Unmodified-Since一起使用,与其他条件联合使用返回冲突。\n * @param {String} CopySourceIfNoneMatch 当Object的ETag和给定不一致时,则执行操作,否则返回412。可与x-cos-copy-source-If-Modified-Since一起使用,与其他条件联合使用返回冲突。\n * @param {String} StorageClass 存储级别,枚举值:存储级别,枚举值:Standard, Standard_IA,Archive;默认值:Standard\n * @param {String} CacheControl 指定所有缓存机制在整个请求/响应链中必须服从的指令。\n * @param {String} ContentDisposition MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件\n * @param {String} ContentEncoding HTTP 中用来对「采用何种编码格式传输正文」进行协定的一对头部字段\n * @param {String} ContentLength 设置响应消息的实体内容的大小,单位为字节\n * @param {String} ContentType RFC 2616 中定义的 HTTP 请求内容类型(MIME),例如text/plain\n * @param {String} Expect 请求的特定的服务器行为\n * @param {String} Expires 响应过期的日期和时间\n * @param {String} params.ServerSideEncryption 支持按照指定的加密算法进行服务端数据加密,格式 x-cos-server-side-encryption: \"AES256\",非必须\n * @param {String} ContentLanguage 指定内容语言\n * @param {String} x-cos-meta-* 允许用户自定义的头部信息,将作为 Object 元数据返回。大小限制2K。\n */\nfunction putObjectCopy(params, callback) {\n // 特殊处理 Cache-Control\n var self = this;\n var headers = params.Headers;\n if (!headers['Cache-Control'] && !headers['cache-control']) headers['Cache-Control'] = '';\n var CopySource = params.CopySource || '';\n var m = util.getSourceParams.call(this, CopySource);\n if (!m) {\n callback(util.error(new Error('CopySource format error')));\n return;\n }\n var SourceBucket = m.Bucket;\n var SourceRegion = m.Region;\n var SourceKey = decodeURIComponent(m.Key);\n submitRequest.call(this, {\n Scope: [{\n action: 'name/cos:GetObject',\n bucket: SourceBucket,\n region: SourceRegion,\n prefix: SourceKey\n }, {\n action: 'name/cos:PutObject',\n bucket: params.Bucket,\n region: params.Region,\n prefix: params.Key\n }],\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n VersionId: params.VersionId,\n headers: params.Headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var result = util.clone(data.CopyObjectResult || {});\n var url = getUrl({\n ForcePathStyle: self.options.ForcePathStyle,\n protocol: self.options.Protocol,\n domain: self.options.Domain,\n bucket: params.Bucket,\n region: params.Region,\n object: params.Key,\n isLocation: true\n });\n util.extend(result, {\n Location: url,\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\nfunction uploadPartCopy(params, callback) {\n var CopySource = params.CopySource || '';\n var m = util.getSourceParams.call(this, CopySource);\n if (!m) {\n callback(util.error(new Error('CopySource format error')));\n return;\n }\n var SourceBucket = m.Bucket;\n var SourceRegion = m.Region;\n var SourceKey = decodeURIComponent(m.Key);\n submitRequest.call(this, {\n Scope: [{\n action: 'name/cos:GetObject',\n bucket: SourceBucket,\n region: SourceRegion,\n prefix: SourceKey\n }, {\n action: 'name/cos:PutObject',\n bucket: params.Bucket,\n region: params.Region,\n prefix: params.Key\n }],\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n VersionId: params.VersionId,\n qs: {\n partNumber: params['PartNumber'],\n uploadId: params['UploadId']\n },\n headers: params.Headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var result = util.clone(data.CopyPartResult || {});\n util.extend(result, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\nfunction deleteMultipleObject(params, callback) {\n var Objects = params.Objects || [];\n var Quiet = params.Quiet;\n Objects = util.isArray(Objects) ? Objects : [Objects];\n var xml = util.json2xml({\n Delete: {\n Object: Objects,\n Quiet: Quiet || false\n }\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n var Scope = util.map(Objects, function (v) {\n return {\n action: 'name/cos:DeleteObject',\n bucket: params.Bucket,\n region: params.Region,\n prefix: v.Key\n };\n });\n submitRequest.call(this, {\n Scope: Scope,\n method: 'POST',\n Bucket: params.Bucket,\n Region: params.Region,\n body: xml,\n action: 'delete',\n headers: headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n var DeleteResult = data.DeleteResult || {};\n var Deleted = DeleteResult.Deleted || [];\n var Errors = DeleteResult.Error || [];\n Deleted = util.isArray(Deleted) ? Deleted : [Deleted];\n Errors = util.isArray(Errors) ? Errors : [Errors];\n var result = util.clone(DeleteResult);\n util.extend(result, {\n Error: Errors,\n Deleted: Deleted,\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\nfunction restoreObject(params, callback) {\n var headers = params.Headers;\n if (!params['RestoreRequest']) {\n callback(util.error(new Error('missing param RestoreRequest')));\n return;\n }\n var RestoreRequest = params.RestoreRequest || {};\n var xml = util.json2xml({\n RestoreRequest: RestoreRequest\n });\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:RestoreObject',\n method: 'POST',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n VersionId: params.VersionId,\n body: xml,\n action: 'restore',\n headers: headers,\n tracker: params.tracker\n }, callback);\n}\n\n/**\n * 设置 Object 的标签\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Object名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Array} params.TagSet 标签设置,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/42998\n * @return {Object} data 返回数据\n */\nfunction putObjectTagging(params, callback) {\n var Tagging = params['Tagging'] || {};\n var Tags = Tagging.TagSet || Tagging.Tags || params['Tags'] || [];\n Tags = util.clone(util.isArray(Tags) ? Tags : [Tags]);\n var xml = util.json2xml({\n Tagging: {\n TagSet: {\n Tag: Tags\n }\n }\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:PutObjectTagging',\n method: 'PUT',\n Bucket: params.Bucket,\n Key: params.Key,\n Region: params.Region,\n body: xml,\n action: 'tagging',\n headers: headers,\n VersionId: params.VersionId,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 获取 Object 的标签设置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/42998\n * @return {Object} data 返回数据\n */\nfunction getObjectTagging(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:GetObjectTagging',\n method: 'GET',\n Key: params.Key,\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n action: 'tagging',\n VersionId: params.VersionId,\n tracker: params.tracker\n }, function (err, data) {\n if (err) {\n if (err.statusCode === 404 && err.error && (err.error === 'Not Found' || err.error.Code === 'NoSuchTagSet')) {\n var result = {\n Tags: [],\n statusCode: err.statusCode\n };\n err.headers && (result.headers = err.headers);\n callback(null, result);\n } else {\n callback(err);\n }\n return;\n }\n var Tags = [];\n try {\n Tags = data.Tagging.TagSet.Tag || [];\n } catch (e) {}\n Tags = util.clone(util.isArray(Tags) ? Tags : [Tags]);\n callback(null, {\n Tags: Tags,\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 删除 Object 的 标签设置\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Object名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/42998\n * @return {Object} data 返回的数据\n */\nfunction deleteObjectTagging(params, callback) {\n submitRequest.call(this, {\n Action: 'name/cos:DeleteObjectTagging',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n action: 'tagging',\n VersionId: params.VersionId,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 使用 SQL 语句从指定对象(CSV 格式或者 JSON 格式)中检索内容\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Object名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {Object} params.SelectRequest 地域名称,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/42998\n * @return {Object} data 返回的数据\n */\nfunction selectObjectContent(params, callback) {\n var SelectType = params['SelectType'];\n if (!SelectType) return callback(util.error(new Error('missing param SelectType')));\n var SelectRequest = params['SelectRequest'] || {};\n var xml = util.json2xml({\n SelectRequest: SelectRequest\n });\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:GetObject',\n method: 'POST',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n action: 'select',\n qs: {\n 'select-type': params['SelectType']\n },\n VersionId: params.VersionId,\n body: xml,\n DataType: 'arraybuffer',\n rawBody: true,\n tracker: params.tracker\n }, function (err, data) {\n if (err && err.statusCode === 204) {\n return callback(null, {\n statusCode: err.statusCode\n });\n } else if (err) {\n return callback(err);\n }\n var result = util.parseSelectPayload(data.body);\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers,\n Body: result.body,\n Payload: result.payload\n });\n });\n}\n\n// 分块上传\n\n/**\n * 初始化分块上传\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {String} params.UploadId object名称,必须\n * @param {String} params.CacheControl RFC 2616 中定义的缓存策略,将作为 Object 元数据保存,非必须\n * @param {String} params.ContentDisposition RFC 2616 中定义的文件名称,将作为 Object 元数据保存 ,非必须\n * @param {String} params.ContentEncoding RFC 2616 中定义的编码格式,将作为 Object 元数据保存,非必须\n * @param {String} params.ContentType RFC 2616 中定义的内容类型(MIME),将作为 Object 元数据保存,非必须\n * @param {String} params.Expires RFC 2616 中定义的过期时间,将作为 Object 元数据保存,非必须\n * @param {String} params.ACL 允许用户自定义文件权限,非必须\n * @param {String} params.GrantRead 赋予被授权者读的权限 ,非必须\n * @param {String} params.GrantWrite 赋予被授权者写的权限 ,非必须\n * @param {String} params.GrantFullControl 赋予被授权者读写权限 ,非必须\n * @param {String} params.StorageClass 设置Object的存储级别,枚举值:Standard,Standard_IA,Archive,非必须\n * @param {String} params.ServerSideEncryption 支持按照指定的加密算法进行服务端数据加密,格式 x-cos-server-side-encryption: \"AES256\",非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction multipartInit(params, callback) {\n var self = this;\n // 特殊处理 Cache-Control\n var headers = params.Headers;\n var tracker = params.tracker;\n\n // 特殊处理 Cache-Control、Content-Type\n if (!headers['Cache-Control'] && !headers['cache-control']) headers['Cache-Control'] = '';\n if (!headers['Content-Type'] && !headers['content-type']) headers['Content-Type'] = params.Body && params.Body.type || '';\n var needCalcMd5 = params.Body && (params.UploadAddMetaMd5 || self.options.UploadAddMetaMd5);\n needCalcMd5 && tracker && tracker.setParams({\n md5StartTime: new Date().getTime()\n });\n util.getBodyMd5(needCalcMd5, params.Body, function (md5) {\n if (md5) params.Headers['x-cos-meta-md5'] = md5;\n needCalcMd5 && tracker && tracker.setParams({\n md5EndTime: new Date().getTime()\n });\n submitRequest.call(self, {\n Action: 'name/cos:InitiateMultipartUpload',\n method: 'POST',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n action: 'uploads',\n headers: params.Headers,\n qs: params.Query,\n tracker: tracker\n }, function (err, data) {\n if (err) {\n tracker && tracker.parent && tracker.parent.setParams({\n errorNode: 'multipartInit'\n });\n return callback(err);\n }\n data = util.clone(data || {});\n if (data && data.InitiateMultipartUploadResult) {\n return callback(null, util.extend(data.InitiateMultipartUploadResult, {\n statusCode: data.statusCode,\n headers: data.headers\n }));\n }\n callback(null, data);\n });\n }, params.onHashProgress);\n}\n\n/**\n * 分块上传\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {File || Blob || String} params.Body 上传文件对象或字符串\n * @param {String} params.ContentLength RFC 2616 中定义的 HTTP 请求内容长度(字节),非必须\n * @param {String} params.Expect 当使用 Expect: 100-continue 时,在收到服务端确认后,才会发送请求内容,非必须\n * @param {String} params.ServerSideEncryption 支持按照指定的加密算法进行服务端数据加密,格式 x-cos-server-side-encryption: \"AES256\",非必须\n * @param {String} params.ContentSha1 RFC 3174 中定义的 160-bit 内容 SHA-1 算法校验值,非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Object} data.ETag 返回的文件分块 sha1 值\n */\nfunction multipartUpload(params, callback) {\n var self = this;\n util.getFileSize('multipartUpload', params, function () {\n var tracker = params.tracker;\n var needCalcMd5 = self.options.UploadCheckContentMd5;\n needCalcMd5 && tracker && tracker.setParams({\n md5StartTime: new Date().getTime()\n });\n util.getBodyMd5(needCalcMd5, params.Body, function (md5) {\n if (md5) params.Headers['Content-MD5'] = util.b64(md5);\n needCalcMd5 && tracker && tracker.setParams({\n md5EndTime: new Date().getTime()\n });\n tracker && tracker.setParams({\n partNumber: params.PartNumber\n });\n submitRequest.call(self, {\n Action: 'name/cos:UploadPart',\n TaskId: params.TaskId,\n method: 'PUT',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n qs: {\n partNumber: params['PartNumber'],\n uploadId: params['UploadId']\n },\n headers: params.Headers,\n onProgress: params.onProgress,\n body: params.Body || null,\n tracker: tracker\n }, function (err, data) {\n if (err) {\n tracker && tracker.parent && tracker.parent.setParams({\n errorNode: 'multipartUpload'\n });\n return callback(err);\n }\n callback(null, {\n ETag: util.attr(data.headers, 'etag', ''),\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n });\n });\n}\n\n/**\n * 完成分块上传\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {Array} params.Parts 分块信息列表,必须\n * @param {String} params.Parts[i].PartNumber 块编号,必须\n * @param {String} params.Parts[i].ETag 分块的 sha1 校验值\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Object} data.CompleteMultipartUpload 完成分块上传后的文件信息,包括Location, Bucket, Key 和 ETag\n */\nfunction multipartComplete(params, callback) {\n var self = this;\n var UploadId = params.UploadId;\n var Parts = params['Parts'];\n var tracker = params.tracker;\n for (var i = 0, len = Parts.length; i < len; i++) {\n if (Parts[i]['ETag'] && Parts[i]['ETag'].indexOf('\"') === 0) {\n continue;\n }\n Parts[i]['ETag'] = '\"' + Parts[i]['ETag'] + '\"';\n }\n var xml = util.json2xml({\n CompleteMultipartUpload: {\n Part: Parts\n }\n });\n // CSP/ceph CompleteMultipartUpload 接口 body 写死了限制 1MB,这里最多 10000 片时,xml 字符串去掉空格853KB\n xml = xml.replace(/\\n\\s*/g, '');\n var headers = params.Headers;\n headers['Content-Type'] = 'application/xml';\n headers['Content-MD5'] = util.b64(util.md5(xml));\n submitRequest.call(this, {\n Action: 'name/cos:CompleteMultipartUpload',\n method: 'POST',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n qs: {\n uploadId: UploadId\n },\n body: xml,\n headers: headers,\n tracker: tracker\n }, function (err, data) {\n if (err) {\n tracker && tracker.parent && tracker.parent.setParams({\n errorNode: 'multipartComplete'\n });\n return callback(err);\n }\n var url = getUrl({\n ForcePathStyle: self.options.ForcePathStyle,\n protocol: self.options.Protocol,\n domain: self.options.Domain,\n bucket: params.Bucket,\n region: params.Region,\n object: params.Key,\n isLocation: true\n });\n var res = data.CompleteMultipartUploadResult || {};\n // pic-operations 处理\n if (res.ProcessResults) {\n res.UploadResult = {\n OriginalInfo: {\n Key: res.Key,\n Location: url,\n ETag: res.ETag,\n ImageInfo: res.ImageInfo\n },\n ProcessResults: res.ProcessResults\n };\n delete res.ImageInfo;\n delete res.ProcessResults;\n }\n // callback 处理\n if (res.CallbackResult) {\n var callbackResult = res.CallbackResult;\n if (callbackResult.Status === '200' && callbackResult.CallbackBody) {\n try {\n res.CallbackBody = JSON.parse(util.decodeBase64(callbackResult.CallbackBody));\n } catch (e) {\n res.CallbackBody = {};\n }\n } else {\n res.CallbackError = callbackResult.Error || {};\n }\n delete res.CallbackResult;\n }\n // returnBody 处理\n if (res.ReturnBodyResult) {\n var returnBodyResult = res.ReturnBodyResult;\n if (returnBodyResult.Status === '200' && returnBodyResult.ReturnBody) {\n try {\n res.ReturnBody = JSON.parse(util.decodeBase64(returnBodyResult.ReturnBody));\n } catch (e) {\n res.ReturnBody = {};\n }\n } else {\n res.ReturnError = {\n Code: returnBodyResult.Code,\n Message: returnBodyResult.Message,\n Status: returnBodyResult.Status\n };\n }\n delete res.ReturnBodyResult;\n }\n var result = util.extend(res, {\n Location: url,\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\n\n/**\n * 分块上传任务列表查询\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Delimiter 定界符为一个符号,如果有Prefix,则将Prefix到delimiter之间的相同路径归为一类,定义为Common Prefix,然后列出所有Common Prefix。如果没有Prefix,则从路径起点开始,非必须\n * @param {String} params.EncodingType 规定返回值的编码方式,非必须\n * @param {String} params.Prefix 前缀匹配,用来规定返回的文件前缀地址,非必须\n * @param {String} params.MaxUploads 单次返回最大的条目数量,默认1000,非必须\n * @param {String} params.KeyMarker 与upload-id-marker一起使用 </Br>当upload-id-marker未被指定时,ObjectName字母顺序大于key-marker的条目将被列出 </Br>当upload-id-marker被指定时,ObjectName字母顺序大于key-marker的条目被列出,ObjectName字母顺序等于key-marker同时UploadId大于upload-id-marker的条目将被列出,非必须\n * @param {String} params.UploadIdMarker 与key-marker一起使用 </Br>当key-marker未被指定时,upload-id-marker将被忽略 </Br>当key-marker被指定时,ObjectName字母顺序大于key-marker的条目被列出,ObjectName字母顺序等于key-marker同时UploadId大于upload-id-marker的条目将被列出,非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Object} data.ListMultipartUploadsResult 分块上传任务信息\n */\nfunction multipartList(params, callback) {\n var reqParams = {};\n reqParams['delimiter'] = params['Delimiter'];\n reqParams['encoding-type'] = params['EncodingType'];\n reqParams['prefix'] = params['Prefix'] || '';\n reqParams['max-uploads'] = params['MaxUploads'];\n reqParams['key-marker'] = params['KeyMarker'];\n reqParams['upload-id-marker'] = params['UploadIdMarker'];\n reqParams = util.clearKey(reqParams);\n var tracker = params.tracker;\n tracker && tracker.setParams({\n signStartTime: new Date().getTime()\n });\n submitRequest.call(this, {\n Action: 'name/cos:ListMultipartUploads',\n ResourceKey: reqParams['prefix'],\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n headers: params.Headers,\n qs: reqParams,\n action: 'uploads',\n tracker: tracker\n }, function (err, data) {\n if (err) {\n tracker && tracker.parent && tracker.parent.setParams({\n errorNode: 'multipartList'\n });\n return callback(err);\n }\n if (data && data.ListMultipartUploadsResult) {\n var Upload = data.ListMultipartUploadsResult.Upload || [];\n Upload = util.isArray(Upload) ? Upload : [Upload];\n data.ListMultipartUploadsResult.Upload = Upload;\n }\n var result = util.clone(data.ListMultipartUploadsResult || {});\n util.extend(result, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\n\n/**\n * 上传的分块列表查询\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {String} params.UploadId 标示本次分块上传的ID,必须\n * @param {String} params.EncodingType 规定返回值的编码方式,非必须\n * @param {String} params.MaxParts 单次返回最大的条目数量,默认1000,非必须\n * @param {String} params.PartNumberMarker 默认以UTF-8二进制顺序列出条目,所有列出条目从marker开始,非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n * @return {Object} data.ListMultipartUploadsResult 分块信息\n */\nfunction multipartListPart(params, callback) {\n var reqParams = {};\n var tracker = params.tracker;\n reqParams['uploadId'] = params['UploadId'];\n reqParams['encoding-type'] = params['EncodingType'];\n reqParams['max-parts'] = params['MaxParts'];\n reqParams['part-number-marker'] = params['PartNumberMarker'];\n submitRequest.call(this, {\n Action: 'name/cos:ListParts',\n method: 'GET',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n qs: reqParams,\n tracker: tracker\n }, function (err, data) {\n if (err) {\n tracker && tracker.parent && tracker.parent.setParams({\n errorNode: 'multipartListPart'\n });\n return callback(err);\n }\n var ListPartsResult = data.ListPartsResult || {};\n var Part = ListPartsResult.Part || [];\n Part = util.isArray(Part) ? Part : [Part];\n ListPartsResult.Part = Part;\n var result = util.clone(ListPartsResult);\n util.extend(result, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n callback(null, result);\n });\n}\n\n/**\n * 抛弃分块上传\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {String} params.UploadId 标示本次分块上传的ID,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction multipartAbort(params, callback) {\n var reqParams = {};\n reqParams['uploadId'] = params['UploadId'];\n submitRequest.call(this, {\n Action: 'name/cos:AbortMultipartUpload',\n method: 'DELETE',\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n headers: params.Headers,\n qs: reqParams,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n callback(null, {\n statusCode: data.statusCode,\n headers: data.headers\n });\n });\n}\n\n/**\n * 抛弃分块上传\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {String} params.UploadId 标示本次分块上传的ID,必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction request(params, callback) {\n submitRequest.call(this, {\n method: params.Method,\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n action: params.Action,\n headers: params.Headers,\n qs: params.Query,\n body: params.Body,\n Url: params.Url,\n rawBody: params.RawBody,\n DataType: params.DataType,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n if (data && data.body) {\n data.Body = data.body;\n delete data.body;\n }\n callback(err, data);\n });\n}\n\n/**\n * 追加上传\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {File || Blob || String} params.Body 上传文件对象或字符串\n * @param {Number} params.Position 追加操作的起始点,单位为字节,必须\n * @param {String} params.CacheControl RFC 2616 中定义的缓存策略,将作为 Object 元数据保存,非必须\n * @param {String} params.ContentDisposition RFC 2616 中定义的文件名称,将作为 Object 元数据保存,非必须\n * @param {String} params.ContentEncoding RFC 2616 中定义的编码格式,将作为 Object 元数据保存,非必须\n * @param {String} params.ContentLength RFC 2616 中定义的 HTTP 请求内容长度(字节),必须\n * @param {String} params.ContentType RFC 2616 中定义的内容类型(MIME),将作为 Object 元数据保存,非必须\n * @param {String} params.Expect 当使用 Expect: 100-continue 时,在收到服务端确认后,才会发送请求内容,非必须\n * @param {String} params.Expires RFC 2616 中定义的过期时间,将作为 Object 元数据保存,非必须\n * @param {String} params.ACL 允许用户自定义文件权限,有效值:private | public-read,非必须\n * @param {String} params.GrantRead 赋予被授权者读取对象的权限,格式:id=\"[OwnerUin]\",可使用半角逗号(,)分隔多组被授权者,非必须\n * @param {String} params.GrantReadAcp 赋予被授权者读取对象的访问控制列表(ACL)的权限,格式:id=\"[OwnerUin]\",可使用半角逗号(,)分隔多组被授权者,非必须\n * @param {String} params.GrantWriteAcp 赋予被授权者写入对象的访问控制列表(ACL)的权限,格式:id=\"[OwnerUin]\",可使用半角逗号(,)分隔多组被授权者,非必须\n * @param {String} params.GrantFullControl 赋予被授权者操作对象的所有权限,格式:id=\"[OwnerUin]\",可使用半角逗号(,)分隔多组被授权者,非必须\n * @param {String} params.StorageClass 设置对象的存储级别,枚举值:STANDARD、STANDARD_IA、ARCHIVE,默认值:STANDARD,非必须\n * @param {String} params.x-cos-meta-* 允许用户自定义的头部信息,将作为对象的元数据保存。大小限制2KB,非必须\n * @param {String} params.ContentSha1 RFC 3174 中定义的 160-bit 内容 SHA-1 算法校验,非必须\n * @param {String} params.ServerSideEncryption 支持按照指定的加密算法进行服务端数据加密,格式 x-cos-server-side-encryption: \"AES256\",非必须\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction appendObject(params, callback) {\n // 特殊处理 Cache-Control、Content-Type,避免代理更改这两个字段导致写入到 Object 属性里\n var headers = params.Headers;\n if (!headers['Cache-Control'] && !headers['cache-control']) headers['Cache-Control'] = '';\n if (!headers['Content-Type'] && !headers['content-type']) headers['Content-Type'] = params.Body && params.Body.type || '';\n submitRequest.call(this, {\n Action: 'name/cos:AppendObject',\n method: 'POST',\n Bucket: params.Bucket,\n Region: params.Region,\n action: 'append',\n Key: params.Key,\n body: params.Body,\n qs: {\n position: params.Position\n },\n headers: params.Headers,\n tracker: params.tracker\n }, function (err, data) {\n if (err) return callback(err);\n callback(null, data);\n });\n}\n\n/**\n * 获取签名\n * @param {Object} params 参数对象,必须\n * @param {String} params.Method 请求方法,必须\n * @param {String} params.Key object名称,必须\n * @param {String} params.Expires 名超时时间,单位秒,可选\n * @return {String} data 返回签名字符串\n */\nfunction getAuth(params) {\n var self = this;\n return util.getAuth({\n SecretId: params.SecretId || this.options.SecretId || '',\n SecretKey: params.SecretKey || this.options.SecretKey || '',\n Bucket: params.Bucket,\n Region: params.Region,\n Method: params.Method,\n Key: params.Key,\n Query: params.Query,\n Headers: params.Headers,\n Expires: params.Expires,\n UseRawKey: self.options.UseRawKey,\n SystemClockOffset: self.options.SystemClockOffset\n });\n}\n\n/**\n * 获取文件下载链接\n * @param {Object} params 参数对象,必须\n * @param {String} params.Bucket Bucket名称,必须\n * @param {String} params.Region 地域名称,必须\n * @param {String} params.Key object名称,必须\n * @param {String} params.Method 请求的方法,可选\n * @param {String} params.Expires 签名超时时间,单位秒,可选\n * @param {Function} callback 回调函数,必须\n * @return {Object} err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730\n * @return {Object} data 返回的数据\n */\nfunction getObjectUrl(params, callback) {\n var self = this;\n var useAccelerate = params.UseAccelerate === undefined ? self.options.UseAccelerate : params.UseAccelerate;\n var url = getUrl({\n ForcePathStyle: self.options.ForcePathStyle,\n protocol: params.Protocol || self.options.Protocol,\n domain: params.Domain || self.options.Domain,\n bucket: params.Bucket,\n region: useAccelerate ? 'accelerate' : params.Region,\n object: params.Key\n });\n var queryParamsStr = '';\n if (params.Query) {\n queryParamsStr += util.obj2str(params.Query);\n }\n if (params.QueryString) {\n queryParamsStr += (queryParamsStr ? '&' : '') + params.QueryString;\n }\n var syncUrl = url;\n if (params.Sign !== undefined && !params.Sign) {\n queryParamsStr && (syncUrl += '?' + queryParamsStr);\n callback(null, {\n Url: syncUrl\n });\n return syncUrl;\n }\n\n // 签名加上 Host,避免跨桶访问\n var SignHost = getSignHost.call(this, {\n Bucket: params.Bucket,\n Region: params.Region,\n UseAccelerate: params.UseAccelerate,\n Url: url\n });\n var AuthData = getAuthorizationAsync.call(this, {\n Action: (params.Method || '').toUpperCase() === 'PUT' ? 'name/cos:PutObject' : 'name/cos:GetObject',\n Bucket: params.Bucket || '',\n Region: params.Region || '',\n Method: params.Method || 'get',\n Key: params.Key,\n Expires: params.Expires,\n Headers: params.Headers,\n Query: params.Query,\n SignHost: SignHost,\n ForceSignHost: params.ForceSignHost === false ? false : self.options.ForceSignHost // getObjectUrl支持传参ForceSignHost\n }, function (err, AuthData) {\n if (!callback) return;\n if (err) {\n callback(err);\n return;\n }\n\n // 兼容万象url qUrlParamList需要再encode一次\n var replaceUrlParamList = function replaceUrlParamList(url) {\n var urlParams = url.match(/q-url-param-list.*?(?=&)/g)[0];\n var encodedParams = 'q-url-param-list=' + encodeURIComponent(urlParams.replace(/q-url-param-list=/, '')).toLowerCase();\n var reg = new RegExp(urlParams, 'g');\n var replacedUrl = url.replace(reg, encodedParams);\n return replacedUrl;\n };\n var signUrl = url;\n signUrl += '?' + (AuthData.Authorization.indexOf('q-signature') > -1 ? replaceUrlParamList(AuthData.Authorization) : 'sign=' + encodeURIComponent(AuthData.Authorization));\n AuthData.SecurityToken && (signUrl += '&x-cos-security-token=' + AuthData.SecurityToken);\n AuthData.ClientIP && (signUrl += '&clientIP=' + AuthData.ClientIP);\n AuthData.ClientUA && (signUrl += '&clientUA=' + AuthData.ClientUA);\n AuthData.Token && (signUrl += '&token=' + AuthData.Token);\n queryParamsStr && (signUrl += '&' + queryParamsStr);\n setTimeout(function () {\n callback(null, {\n Url: signUrl\n });\n });\n });\n if (AuthData) {\n syncUrl += '?' + AuthData.Authorization + (AuthData.SecurityToken ? '&x-cos-security-token=' + AuthData.SecurityToken : '');\n queryParamsStr && (syncUrl += '&' + queryParamsStr);\n } else {\n queryParamsStr && (syncUrl += '?' + queryParamsStr);\n }\n return syncUrl;\n}\n\n/**\n * 私有方法\n */\nfunction decodeAcl(AccessControlPolicy) {\n var result = {\n GrantFullControl: [],\n GrantWrite: [],\n GrantRead: [],\n GrantReadAcp: [],\n GrantWriteAcp: [],\n ACL: ''\n };\n var GrantMap = {\n FULL_CONTROL: 'GrantFullControl',\n WRITE: 'GrantWrite',\n READ: 'GrantRead',\n READ_ACP: 'GrantReadAcp',\n WRITE_ACP: 'GrantWriteAcp'\n };\n var AccessControlList = AccessControlPolicy && AccessControlPolicy.AccessControlList || {};\n var Grant = AccessControlList.Grant;\n if (Grant) {\n Grant = util.isArray(Grant) ? Grant : [Grant];\n }\n var PublicAcl = {\n READ: 0,\n WRITE: 0,\n FULL_CONTROL: 0\n };\n Grant && Grant.length && util.each(Grant, function (item) {\n var uriMatch = item.Grantee.URI && item.Grantee.URI.endsWith('/groups/global/AllUsers');\n if (item.Grantee.ID === 'qcs::cam::anyone:anyone' || uriMatch) {\n PublicAcl[item.Permission] = 1;\n } else if (item.Grantee.ID !== AccessControlPolicy.Owner.ID) {\n result[GrantMap[item.Permission]].push('id=\"' + item.Grantee.ID + '\"');\n }\n });\n if (PublicAcl.FULL_CONTROL || PublicAcl.WRITE && PublicAcl.READ) {\n result.ACL = 'public-read-write';\n } else if (PublicAcl.READ) {\n result.ACL = 'public-read';\n } else {\n result.ACL = 'private';\n }\n util.each(GrantMap, function (item) {\n result[item] = uniqGrant(result[item].join(','));\n });\n return result;\n}\n\n// Grant 去重\nfunction uniqGrant(str) {\n var arr = str.split(',');\n var exist = {};\n var i, item;\n for (i = 0; i < arr.length;) {\n item = arr[i].trim();\n if (exist[item]) {\n arr.splice(i, 1);\n } else {\n exist[item] = true;\n arr[i] = item;\n i++;\n }\n }\n return arr.join(',');\n}\n\n// 生成操作 url\nfunction getUrl(params) {\n var region = params.region || '';\n var longBucket = params.bucket || '';\n var shortBucket = longBucket.substr(0, longBucket.lastIndexOf('-'));\n var appId = longBucket.substr(longBucket.lastIndexOf('-') + 1);\n var domain = params.domain;\n var object = params.object;\n if (typeof domain === 'function') {\n domain = domain({\n Bucket: longBucket,\n Region: region\n });\n }\n // 兼容不带冒号的http、https\n if (['http', 'https'].includes(params.protocol)) {\n params.protocol = params.protocol + ':';\n }\n var protocol = params.protocol || (util.isBrowser && (typeof location === \"undefined\" ? \"undefined\" : _typeof(location)) === 'object' && location.protocol === 'http:' ? 'http:' : 'https:');\n if (!domain) {\n if (['cn-south', 'cn-south-2', 'cn-north', 'cn-east', 'cn-southwest', 'sg'].indexOf(region) > -1) {\n domain = '{Region}.myqcloud.com';\n } else {\n domain = 'cos.{Region}.myqcloud.com';\n }\n if (!params.ForcePathStyle) {\n domain = '{Bucket}.' + domain;\n }\n }\n domain = domain.replace(/\\{\\{AppId\\}\\}/gi, appId).replace(/\\{\\{Bucket\\}\\}/gi, shortBucket).replace(/\\{\\{Region\\}\\}/gi, region).replace(/\\{\\{.*?\\}\\}/gi, '');\n domain = domain.replace(/\\{AppId\\}/gi, appId).replace(/\\{BucketName\\}/gi, shortBucket).replace(/\\{Bucket\\}/gi, longBucket).replace(/\\{Region\\}/gi, region).replace(/\\{.*?\\}/gi, '');\n if (!/^[a-zA-Z]+:\\/\\//.test(domain)) {\n domain = protocol + '//' + domain;\n }\n\n // 去掉域名最后的斜杆\n if (domain.slice(-1) === '/') {\n domain = domain.slice(0, -1);\n }\n var url = domain;\n if (params.ForcePathStyle) {\n url += '/' + longBucket;\n }\n url += '/';\n if (object) {\n url += util.camSafeUrlEncode(object).replace(/%2F/g, '/');\n }\n if (params.isLocation) {\n url = url.replace(/^https?:\\/\\//, '');\n }\n return url;\n}\nvar getSignHost = function getSignHost(opt) {\n if (!opt.Bucket || !opt.Region) return '';\n var useAccelerate = opt.UseAccelerate === undefined ? this.options.UseAccelerate : opt.UseAccelerate;\n var url = opt.Url || getUrl({\n ForcePathStyle: this.options.ForcePathStyle,\n protocol: this.options.Protocol,\n domain: this.options.Domain,\n bucket: opt.Bucket,\n region: useAccelerate ? 'accelerate' : opt.Region\n });\n var urlHost = url.replace(/^https?:\\/\\/([^/]+)(\\/.*)?$/, '$1');\n return urlHost;\n};\n\n// 异步获取签名\nfunction getAuthorizationAsync(params, callback) {\n var headers = util.clone(params.Headers);\n var headerHost = '';\n util.each(headers, function (v, k) {\n (v === '' || ['content-type', 'cache-control', 'expires'].indexOf(k.toLowerCase()) > -1) && delete headers[k];\n if (k.toLowerCase() === 'host') headerHost = v;\n });\n // ForceSignHost明确传入false才不加入host签名\n var forceSignHost = params.ForceSignHost === false ? false : true;\n\n // Host 加入签名计算\n if (!headerHost && params.SignHost && forceSignHost) headers.Host = params.SignHost;\n\n // 获取凭证的回调,避免用户 callback 多次\n var cbDone = false;\n var cb = function cb(err, AuthData) {\n if (cbDone) return;\n cbDone = true;\n if (AuthData && AuthData.XCosSecurityToken && !AuthData.SecurityToken) {\n AuthData = util.clone(AuthData);\n AuthData.SecurityToken = AuthData.XCosSecurityToken;\n delete AuthData.XCosSecurityToken;\n }\n callback && callback(err, AuthData);\n };\n var self = this;\n var Bucket = params.Bucket || '';\n var Region = params.Region || '';\n\n // PathName\n var KeyName = params.Key || '';\n if (self.options.ForcePathStyle && Bucket) {\n KeyName = Bucket + '/' + KeyName;\n }\n var Pathname = '/' + KeyName;\n\n // Action、ResourceKey\n var StsData = {};\n var Scope = params.Scope;\n if (!Scope) {\n var Action = params.Action || '';\n var ResourceKey = params.ResourceKey || params.Key || '';\n Scope = params.Scope || [{\n action: Action,\n bucket: Bucket,\n region: Region,\n prefix: ResourceKey\n }];\n }\n var ScopeKey = util.md5(JSON.stringify(Scope));\n\n // STS\n self._StsCache = self._StsCache || [];\n (function () {\n var i, AuthData;\n for (i = self._StsCache.length - 1; i >= 0; i--) {\n AuthData = self._StsCache[i];\n var compareTime = Math.round(util.getSkewTime(self.options.SystemClockOffset) / 1000) + 30;\n if (AuthData.StartTime && compareTime < AuthData.StartTime || compareTime >= AuthData.ExpiredTime) {\n self._StsCache.splice(i, 1);\n continue;\n }\n if (!AuthData.ScopeLimit || AuthData.ScopeLimit && AuthData.ScopeKey === ScopeKey) {\n StsData = AuthData;\n break;\n }\n }\n })();\n var calcAuthByTmpKey = function calcAuthByTmpKey() {\n var KeyTime = '';\n if (StsData.StartTime && params.Expires) KeyTime = StsData.StartTime + ';' + (StsData.StartTime + params.Expires * 1);else if (StsData.StartTime && StsData.ExpiredTime) KeyTime = StsData.StartTime + ';' + StsData.ExpiredTime;\n var Authorization = util.getAuth({\n SecretId: StsData.TmpSecretId,\n SecretKey: StsData.TmpSecretKey,\n Method: params.Method,\n Pathname: Pathname,\n Query: params.Query,\n Headers: headers,\n Expires: params.Expires,\n UseRawKey: self.options.UseRawKey,\n SystemClockOffset: self.options.SystemClockOffset,\n KeyTime: KeyTime,\n ForceSignHost: forceSignHost\n });\n var AuthData = {\n Authorization: Authorization,\n SecurityToken: StsData.SecurityToken || StsData.XCosSecurityToken || '',\n Token: StsData.Token || '',\n ClientIP: StsData.ClientIP || '',\n ClientUA: StsData.ClientUA || '',\n SignFrom: 'client'\n };\n cb(null, AuthData);\n };\n var checkAuthError = function checkAuthError(AuthData) {\n if (AuthData.Authorization) {\n // 检查签名格式\n var formatAllow = false;\n var auth = AuthData.Authorization;\n if (auth) {\n if (auth.indexOf(' ') > -1) {\n formatAllow = false;\n } else if (auth.indexOf('q-sign-algorithm=') > -1 && auth.indexOf('q-ak=') > -1 && auth.indexOf('q-sign-time=') > -1 && auth.indexOf('q-key-time=') > -1 && auth.indexOf('q-url-param-list=') > -1) {\n formatAllow = true;\n } else {\n try {\n auth = atob(auth);\n if (auth.indexOf('a=') > -1 && auth.indexOf('k=') > -1 && auth.indexOf('t=') > -1 && auth.indexOf('r=') > -1 && auth.indexOf('b=') > -1) {\n formatAllow = true;\n }\n } catch (e) {}\n }\n }\n if (!formatAllow) return util.error(new Error('getAuthorization callback params format error'));\n } else {\n if (!AuthData.TmpSecretId) return util.error(new Error('getAuthorization callback params missing \"TmpSecretId\"'));\n if (!AuthData.TmpSecretKey) return util.error(new Error('getAuthorization callback params missing \"TmpSecretKey\"'));\n if (!AuthData.SecurityToken && !AuthData.XCosSecurityToken) return util.error(new Error('getAuthorization callback params missing \"SecurityToken\"'));\n if (!AuthData.ExpiredTime) return util.error(new Error('getAuthorization callback params missing \"ExpiredTime\"'));\n if (AuthData.ExpiredTime && AuthData.ExpiredTime.toString().length !== 10) return util.error(new Error('getAuthorization callback params \"ExpiredTime\" should be 10 digits'));\n if (AuthData.StartTime && AuthData.StartTime.toString().length !== 10) return util.error(new Error('getAuthorization callback params \"StartTime\" should be 10 StartTime'));\n }\n return false;\n };\n\n // 先判断是否有临时密钥\n if (StsData.ExpiredTime && StsData.ExpiredTime - util.getSkewTime(self.options.SystemClockOffset) / 1000 > 60) {\n // 如果缓存的临时密钥有效,并还有超过60秒有效期就直接使用\n calcAuthByTmpKey();\n } else if (self.options.getAuthorization) {\n // 外部计算签名或获取临时密钥\n self.options.getAuthorization.call(self, {\n Bucket: Bucket,\n Region: Region,\n Method: params.Method,\n Key: KeyName,\n Pathname: Pathname,\n Query: params.Query,\n Headers: headers,\n Scope: Scope,\n SystemClockOffset: self.options.SystemClockOffset,\n ForceSignHost: forceSignHost\n }, function (AuthData) {\n if (typeof AuthData === 'string') AuthData = {\n Authorization: AuthData\n };\n var AuthError = checkAuthError(AuthData);\n if (AuthError) return cb(AuthError);\n if (AuthData.Authorization) {\n cb(null, AuthData);\n } else {\n StsData = AuthData || {};\n StsData.Scope = Scope;\n StsData.ScopeKey = ScopeKey;\n self._StsCache.push(StsData);\n calcAuthByTmpKey();\n }\n });\n } else if (self.options.getSTS) {\n // 外部获取临时密钥\n self.options.getSTS.call(self, {\n Bucket: Bucket,\n Region: Region\n }, function (data) {\n StsData = data || {};\n StsData.Scope = Scope;\n StsData.ScopeKey = ScopeKey;\n if (!StsData.TmpSecretId) StsData.TmpSecretId = StsData.SecretId;\n if (!StsData.TmpSecretKey) StsData.TmpSecretKey = StsData.SecretKey;\n var AuthError = checkAuthError(StsData);\n if (AuthError) return cb(AuthError);\n self._StsCache.push(StsData);\n calcAuthByTmpKey();\n });\n } else {\n // 内部计算获取签名\n return function () {\n var KeyTime = '';\n if (self.options.StartTime && params.Expires) {\n if (self.options.StartTime.toString().length !== 10) {\n return cb(util.error(new Error('params \"StartTime\" should be 10 digits')));\n }\n KeyTime = self.options.StartTime + ';' + (self.options.StartTime + params.Expires * 1);\n } else if (self.options.StartTime && self.options.ExpiredTime) {\n if (self.options.StartTime.toString().length !== 10) {\n return cb(util.error(new Error('params \"StartTime\" should be 10 digits')));\n }\n if (self.options.ExpiredTime.toString().length !== 10) {\n return cb(util.error(new Error('params \"ExpiredTime\" should be 10 digits')));\n }\n KeyTime = self.options.StartTime + ';' + self.options.ExpiredTime * 1;\n }\n var Authorization = util.getAuth({\n SecretId: params.SecretId || self.options.SecretId,\n SecretKey: params.SecretKey || self.options.SecretKey,\n Method: params.Method,\n Pathname: Pathname,\n Query: params.Query,\n Headers: headers,\n Expires: params.Expires,\n KeyTime: KeyTime,\n UseRawKey: self.options.UseRawKey,\n SystemClockOffset: self.options.SystemClockOffset,\n ForceSignHost: forceSignHost\n });\n var AuthData = {\n Authorization: Authorization,\n SecurityToken: self.options.SecurityToken || self.options.XCosSecurityToken,\n SignFrom: 'client'\n };\n cb(null, AuthData);\n return AuthData;\n }();\n }\n return '';\n}\n\n// 判断当前请求出错时能否重试\nfunction allowRetry(err) {\n var self = this;\n var canRetry = false;\n var isTimeError = false;\n var networkError = false;\n var serverDate = err.headers && (err.headers.date || err.headers.Date) || err.error && err.error.ServerTime;\n try {\n var errorCode = err.error.Code;\n var errorMessage = err.error.Message;\n if (errorCode === 'RequestTimeTooSkewed' || errorCode === 'AccessDenied' && errorMessage === 'Request has expired') {\n isTimeError = true;\n }\n } catch (e) {}\n if (err) {\n // 调整时间偏差\n if (isTimeError && serverDate) {\n var serverTime = Date.parse(serverDate);\n if (this.options.CorrectClockSkew && Math.abs(util.getSkewTime(this.options.SystemClockOffset) - serverTime) >= 30000) {\n console.error('error: Local time is too skewed.');\n this.options.SystemClockOffset = serverTime - Date.now();\n canRetry = true;\n }\n } else if (Math.floor(err.statusCode / 100) === 5) {\n canRetry = true;\n } else if (err.message === 'CORS blocked or network error') {\n // 跨域/网络错误都包含在内\n networkError = true;\n canRetry = self.options.AutoSwitchHost;\n }\n }\n return {\n canRetry: canRetry,\n networkError: networkError\n };\n}\n\n/**\n * requestUrl:请求的url,用于判断是否cos主域名,true才切\n * clientCalcSign:是否客户端计算签名,服务端返回的签名不能切,true才切\n * networkError:是否未知网络错误,true才切\n * */\nfunction canSwitchHost(_ref) {\n var requestUrl = _ref.requestUrl,\n clientCalcSign = _ref.clientCalcSign,\n networkError = _ref.networkError;\n if (!this.options.AutoSwitchHost) return false;\n if (!requestUrl) return false;\n if (!clientCalcSign) return false;\n if (!networkError) return false;\n var commonReg = /^https?:\\/\\/[^\\/]*\\.cos\\.[^\\/]*\\.myqcloud\\.com(\\/.*)?$/;\n var accelerateReg = /^https?:\\/\\/[^\\/]*\\.cos\\.accelerate\\.myqcloud\\.com(\\/.*)?$/;\n // 当前域名是cos主域名才切换\n var isCommonCosHost = commonReg.test(requestUrl) && !accelerateReg.test(requestUrl);\n return isCommonCosHost;\n}\n\n// 获取签名并发起请求\nfunction submitRequest(params, callback) {\n var self = this;\n\n // 处理 headers\n !params.headers && (params.headers = {});\n\n // 处理 query\n !params.qs && (params.qs = {});\n params.VersionId && (params.qs.versionId = params.VersionId);\n params.qs = util.clearKey(params.qs);\n\n // 清理 undefined 和 null 字段\n params.headers && (params.headers = util.clearKey(params.headers));\n params.qs && (params.qs = util.clearKey(params.qs));\n var Query = util.clone(params.qs);\n params.action && (Query[params.action] = '');\n\n /**\n * 手动传params.SignHost的场景:cos.getService、cos.getObjectUrl\n * 手动传Url的场景:cos.request\n */\n var paramsUrl = params.url || params.Url;\n var SignHost = params.SignHost || getSignHost.call(this, {\n Bucket: params.Bucket,\n Region: params.Region,\n Url: paramsUrl\n });\n var tracker = params.tracker;\n var next = function next(tryTimes) {\n var oldClockOffset = self.options.SystemClockOffset;\n tracker && tracker.setParams({\n signStartTime: new Date().getTime(),\n httpRetryTimes: tryTimes - 1\n });\n if (params.SwitchHost) {\n // 更换要签的host\n SignHost = SignHost.replace(/myqcloud.com/, 'tencentcos.cn');\n }\n getAuthorizationAsync.call(self, {\n Bucket: params.Bucket || '',\n Region: params.Region || '',\n Method: params.method,\n Key: params.Key,\n Query: Query,\n Headers: params.headers,\n SignHost: SignHost,\n Action: params.Action,\n ResourceKey: params.ResourceKey,\n Scope: params.Scope,\n ForceSignHost: self.options.ForceSignHost,\n SwitchHost: params.SwitchHost\n }, function (err, AuthData) {\n if (err) {\n callback(err);\n return;\n }\n tracker && tracker.setParams({\n signEndTime: new Date().getTime(),\n httpStartTime: new Date().getTime()\n });\n params.AuthData = AuthData;\n _submitRequest.call(self, params, function (err, data) {\n tracker && tracker.setParams({\n httpEndTime: new Date().getTime()\n });\n var canRetry = false;\n var networkError = false;\n if (err) {\n var info = allowRetry.call(self, err);\n canRetry = info.canRetry || oldClockOffset !== self.options.SystemClockOffset;\n networkError = info.networkError;\n }\n if (err && tryTimes < 2 && canRetry) {\n if (params.headers) {\n delete params.headers.Authorization;\n delete params.headers['token'];\n delete params.headers['clientIP'];\n delete params.headers['clientUA'];\n params.headers['x-cos-security-token'] && delete params.headers['x-cos-security-token'];\n params.headers['x-ci-security-token'] && delete params.headers['x-ci-security-token'];\n }\n // 进入重试逻辑时 需判断是否需要切换cos备用域名\n var switchHost = canSwitchHost.call(self, {\n requestUrl: (err === null || err === void 0 ? void 0 : err.url) || '',\n clientCalcSign: AuthData.SignFrom === 'client',\n networkError: networkError\n });\n params.SwitchHost = switchHost;\n params.retry = true;\n next(tryTimes + 1);\n } else {\n callback(err, data);\n }\n });\n });\n };\n next(1);\n}\n\n// 发起请求\nfunction _submitRequest(params, callback) {\n var self = this;\n var TaskId = params.TaskId;\n if (TaskId && !self._isRunningTask(TaskId)) return;\n var bucket = params.Bucket;\n var region = params.Region;\n var object = params.Key;\n var method = params.method || 'GET';\n var url = params.Url || params.url;\n var body = params.body;\n var rawBody = params.rawBody;\n\n // url\n if (self.options.UseAccelerate) {\n region = 'accelerate';\n }\n url = url || getUrl({\n ForcePathStyle: self.options.ForcePathStyle,\n protocol: self.options.Protocol,\n domain: self.options.Domain,\n bucket: bucket,\n region: region,\n object: object\n });\n if (params.SwitchHost) {\n // 更换请求的url\n url = url.replace(/myqcloud.com/, 'tencentcos.cn');\n }\n var repoterUrl = object ? url : '';\n if (params.action) {\n // 已知问题,某些版本的qq会对url自动拼接(比如/upload被拼接成/upload=(null))导致签名错误,这里做下兼容。\n url = url + '?' + (util.isIOS_QQ ? \"\".concat(params.action, \"=\") : params.action);\n }\n if (params.qsStr) {\n if (url.indexOf('?') > -1) {\n url = url + '&' + params.qsStr;\n } else {\n url = url + '?' + params.qsStr;\n }\n }\n var opt = {\n method: method,\n url: url,\n headers: params.headers,\n qs: params.qs,\n body: body\n };\n\n // 兼容ci接口\n var token = 'x-cos-security-token';\n if (util.isCIHost(url)) {\n token = 'x-ci-security-token';\n }\n\n // 获取签名\n opt.headers.Authorization = params.AuthData.Authorization;\n params.AuthData.Token && (opt.headers['token'] = params.AuthData.Token);\n params.AuthData.ClientIP && (opt.headers['clientIP'] = params.AuthData.ClientIP);\n params.AuthData.ClientUA && (opt.headers['clientUA'] = params.AuthData.ClientUA);\n params.AuthData.SecurityToken && (opt.headers[token] = params.AuthData.SecurityToken);\n params.Action && (opt.action = params.Action);\n opt.key = params.Key || params.ResourceKey;\n\n // 清理 undefined 和 null 字段\n opt.headers && (opt.headers = util.clearKey(opt.headers));\n if (params.retry) {\n opt.headers['x-cos-sdk-retry'] = true;\n }\n opt = util.clearKey(opt);\n\n // progress\n if (params.onProgress && typeof params.onProgress === 'function') {\n var contentLength = body && (body.size || body.length) || 0;\n opt.onProgress = function (e) {\n if (TaskId && !self._isRunningTask(TaskId)) return;\n var loaded = e ? e.loaded : 0;\n params.onProgress({\n loaded: loaded,\n total: contentLength\n });\n };\n }\n if (params.onDownloadProgress) {\n opt.onDownloadProgress = params.onDownloadProgress;\n }\n if (params.DataType) {\n opt.dataType = params.DataType;\n }\n if (this.options.Timeout) {\n opt.timeout = this.options.Timeout;\n }\n self.options.ForcePathStyle && (opt.pathStyle = self.options.ForcePathStyle);\n self.emit('before-send', opt);\n var useAccelerate = opt.url.includes('accelerate.');\n var queryString = opt.qs ? Object.keys(opt.qs).map(function (key) {\n return \"\".concat(key, \"=\").concat(opt.qs[key]);\n }).join('&') : '';\n var fullUrl = queryString ? opt.url + '?' + queryString : opt.url;\n if (params.tracker) {\n var _opt$body;\n params.tracker.setParams({\n url: fullUrl,\n httpMethod: opt.method,\n accelerate: useAccelerate,\n httpSize: ((_opt$body = opt.body) === null || _opt$body === void 0 ? void 0 : _opt$body.size) || 0\n });\n // 分块上传时给父级tracker设置url信息\n if (params.tracker.parent && !params.tracker.parent.params.url) {\n params.tracker.parent.setParams({\n url: repoterUrl,\n accelerate: useAccelerate\n });\n }\n }\n var sender = (self.options.Request || REQUEST)(opt, function (r) {\n if (r && r.error === 'abort') return;\n var receive = {\n options: opt,\n error: r && r.error,\n statusCode: r && r.statusCode || 0,\n statusMessage: r && r.statusMessage || '',\n headers: r && r.headers || {},\n body: r && r.body\n };\n // 抛出事件,允许修改返回值的 error、statusCode、statusMessage、body\n self.emit('after-receive', receive);\n var err = receive.error;\n var body = receive.body;\n // 返回内容添加 状态码 和 headers\n var response = {\n statusCode: receive.statusCode,\n statusMessage: receive.statusMessage,\n headers: receive.headers\n };\n var hasReturned;\n var cb = function cb(err, data) {\n TaskId && self.off('inner-kill-task', killTask);\n if (hasReturned) return;\n hasReturned = true;\n var attrs = {};\n response && response.statusCode && (attrs.statusCode = response.statusCode);\n response && response.headers && (attrs.headers = response.headers);\n if (err) {\n opt.url && (attrs.url = opt.url);\n opt.method && (attrs.method = opt.method);\n err = util.extend(err || {}, attrs);\n callback(err, null);\n } else {\n // putObject 返回回调处理\n if (params.Action === 'name/cos:PutObject') {\n var pHeaders = {};\n for (var i in params.headers) {\n var key = i.toLowerCase();\n pHeaders[key] = params.headers[i];\n }\n if (pHeaders['x-cos-callback']) {\n if (data.Error) {\n data.CallbackError = util.clone(data.Error);\n delete data.Error;\n } else {\n data.CallbackBody = util.clone(data);\n }\n } else if (pHeaders['x-cos-return-body']) {\n if (data.Error) {\n data.ReturnError = util.clone(data.Error);\n delete data.Error;\n } else {\n data.ReturnBody = util.clone(data);\n }\n }\n }\n data = util.extend(data || {}, attrs);\n callback(null, data);\n }\n sender = null;\n };\n\n // 请求错误,发生网络错误\n if (err) return cb(util.error(err));\n\n // 请求返回码不为 200\n var statusCode = response.statusCode;\n var statusSuccess = Math.floor(statusCode / 100) === 2; // 200 202 204 206\n\n // 不对 body 进行转换,body 直接挂载返回\n if (rawBody) {\n if (statusSuccess) {\n return cb(null, {\n body: body\n });\n } else {\n // 兼容报错时返回了 blob,需要解析成 string\n if (body instanceof Blob) {\n util.readAsBinaryString(body, function (content) {\n var json = util.parseResBody(content);\n var errorBody = json.Error || json;\n return cb(util.error(new Error(errorBody.Message || 'response body error'), {\n code: errorBody.Code,\n error: errorBody\n }));\n });\n return;\n }\n }\n }\n\n // 解析body,兼容 xml、json,解析失败时完整返回\n var json = util.parseResBody(body);\n\n // 处理返回值\n var errorBody = json.Error || json;\n if (statusSuccess) {\n // 正确返回,状态码 2xx 时,body 不会有 Error\n cb(null, json);\n } else if (errorBody) {\n // 正常返回了 xml body,且有 Error 节点\n cb(util.error(new Error(errorBody.Message), {\n code: errorBody.Code,\n error: errorBody\n }));\n } else if (statusCode) {\n // 有错误的状态码\n cb(util.error(new Error(response.statusMessage), {\n code: '' + statusCode\n }));\n } else if (statusCode) {\n // 无状态码,或者获取不到状态码\n cb(util.error(new Error('statusCode error')));\n }\n });\n\n // kill task\n var killTask = function killTask(data) {\n if (data.TaskId === TaskId) {\n sender && sender.abort && sender.abort();\n self.off('inner-kill-task', killTask);\n }\n };\n TaskId && self.on('inner-kill-task', killTask);\n}\nvar API_MAP = {\n // Bucket 相关方法\n getService: getService,\n // Bucket\n putBucket: putBucket,\n headBucket: headBucket,\n // Bucket\n getBucket: getBucket,\n deleteBucket: deleteBucket,\n putBucketAcl: putBucketAcl,\n // BucketACL\n getBucketAcl: getBucketAcl,\n putBucketCors: putBucketCors,\n // BucketCors\n getBucketCors: getBucketCors,\n deleteBucketCors: deleteBucketCors,\n getBucketLocation: getBucketLocation,\n // BucketLocation\n getBucketPolicy: getBucketPolicy,\n // BucketPolicy\n putBucketPolicy: putBucketPolicy,\n deleteBucketPolicy: deleteBucketPolicy,\n putBucketTagging: putBucketTagging,\n // BucketTagging\n getBucketTagging: getBucketTagging,\n deleteBucketTagging: deleteBucketTagging,\n putBucketLifecycle: putBucketLifecycle,\n // BucketLifecycle\n getBucketLifecycle: getBucketLifecycle,\n deleteBucketLifecycle: deleteBucketLifecycle,\n putBucketVersioning: putBucketVersioning,\n // BucketVersioning\n getBucketVersioning: getBucketVersioning,\n putBucketReplication: putBucketReplication,\n // BucketReplication\n getBucketReplication: getBucketReplication,\n deleteBucketReplication: deleteBucketReplication,\n putBucketWebsite: putBucketWebsite,\n // BucketWebsite\n getBucketWebsite: getBucketWebsite,\n deleteBucketWebsite: deleteBucketWebsite,\n putBucketReferer: putBucketReferer,\n // BucketReferer\n getBucketReferer: getBucketReferer,\n putBucketDomain: putBucketDomain,\n // BucketDomain\n getBucketDomain: getBucketDomain,\n deleteBucketDomain: deleteBucketDomain,\n putBucketOrigin: putBucketOrigin,\n // BucketOrigin\n getBucketOrigin: getBucketOrigin,\n deleteBucketOrigin: deleteBucketOrigin,\n putBucketLogging: putBucketLogging,\n // BucketLogging\n getBucketLogging: getBucketLogging,\n putBucketInventory: putBucketInventory,\n // BucketInventory\n postBucketInventory: postBucketInventory,\n getBucketInventory: getBucketInventory,\n listBucketInventory: listBucketInventory,\n deleteBucketInventory: deleteBucketInventory,\n putBucketAccelerate: putBucketAccelerate,\n getBucketAccelerate: getBucketAccelerate,\n putBucketEncryption: putBucketEncryption,\n getBucketEncryption: getBucketEncryption,\n deleteBucketEncryption: deleteBucketEncryption,\n // Object 相关方法\n getObject: getObject,\n headObject: headObject,\n listObjectVersions: listObjectVersions,\n putObject: putObject,\n deleteObject: deleteObject,\n getObjectAcl: getObjectAcl,\n putObjectAcl: putObjectAcl,\n optionsObject: optionsObject,\n putObjectCopy: putObjectCopy,\n deleteMultipleObject: deleteMultipleObject,\n restoreObject: restoreObject,\n putObjectTagging: putObjectTagging,\n getObjectTagging: getObjectTagging,\n deleteObjectTagging: deleteObjectTagging,\n selectObjectContent: selectObjectContent,\n appendObject: appendObject,\n // 分块上传相关方法\n uploadPartCopy: uploadPartCopy,\n multipartInit: multipartInit,\n multipartUpload: multipartUpload,\n multipartComplete: multipartComplete,\n multipartList: multipartList,\n multipartListPart: multipartListPart,\n multipartAbort: multipartAbort,\n // 工具方法\n request: request,\n getObjectUrl: getObjectUrl,\n getAuth: getAuth\n};\nfunction warnOldApi(apiName, fn, proto) {\n util.each(['Cors', 'Acl'], function (suffix) {\n if (apiName.slice(-suffix.length) === suffix) {\n var oldName = apiName.slice(0, -suffix.length) + suffix.toUpperCase();\n var apiFn = util.apiWrapper(apiName, fn);\n var warned = false;\n proto[oldName] = function () {\n !warned && console.warn('warning: cos.' + oldName + ' has been deprecated. Please Use cos.' + apiName + ' instead.');\n warned = true;\n apiFn.apply(this, arguments);\n };\n }\n });\n}\nmodule.exports.init = function (COS, task) {\n task.transferToTaskMethod(API_MAP, 'putObject');\n util.each(API_MAP, function (fn, apiName) {\n COS.prototype[apiName] = util.apiWrapper(apiName, fn);\n warnOldApi(apiName, fn, COS.prototype);\n });\n};\n\n/***/ }),\n\n/***/ \"./src/cos.js\":\n/*!********************!*\\\n !*** ./src/cos.js ***!\n \\********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar util = __webpack_require__(/*! ./util */ \"./src/util.js\");\nvar event = __webpack_require__(/*! ./event */ \"./src/event.js\");\nvar task = __webpack_require__(/*! ./task */ \"./src/task.js\");\nvar base = __webpack_require__(/*! ./base */ \"./src/base.js\");\nvar advance = __webpack_require__(/*! ./advance */ \"./src/advance.js\");\nvar pkg = __webpack_require__(/*! ../package.json */ \"./package.json\");\nvar defaultOptions = {\n AppId: '',\n // AppId 已废弃,请拼接到 Bucket 后传入,例如:test-1250000000\n SecretId: '',\n SecretKey: '',\n SecurityToken: '',\n // 使用临时密钥需要注意自行刷新 Token\n StartTime: 0,\n // 临时密钥返回起始时间\n ExpiredTime: 0,\n // 临时密钥过期时间\n ChunkRetryTimes: 2,\n FileParallelLimit: 3,\n ChunkParallelLimit: 3,\n ChunkSize: 1024 * 1024,\n SliceSize: 1024 * 1024,\n CopyChunkParallelLimit: 20,\n CopyChunkSize: 1024 * 1024 * 10,\n CopySliceSize: 1024 * 1024 * 10,\n MaxPartNumber: 10000,\n ProgressInterval: 1000,\n Domain: '',\n ServiceDomain: '',\n Protocol: '',\n CompatibilityMode: false,\n ForcePathStyle: false,\n UseRawKey: false,\n Timeout: 0,\n // 单位毫秒,0 代表不设置超时时间\n CorrectClockSkew: true,\n SystemClockOffset: 0,\n // 单位毫秒,ms\n UploadCheckContentMd5: false,\n UploadQueueSize: 10000,\n UploadAddMetaMd5: false,\n UploadIdCacheLimit: 50,\n UseAccelerate: false,\n ForceSignHost: true,\n // 默认将host加入签名计算,关闭后可能导致越权风险,建议保持为true\n AutoSwitchHost: true,\n CopySourceParser: null,\n // 自定义拷贝源解析器\n ObjectKeySimplifyCheck: true,\n // 开启合并校验 getObject Key\n /** 上报相关 **/\n DeepTracker: false,\n // 上报时是否对每个分块上传做单独上报\n TrackerDelay: 5000,\n // 周期性上报,单位毫秒。0代表实时上报\n CustomId: '',\n // 自定义上报id\n BeaconReporter: null,\n // 灯塔上报组件,如有需要请自行传入,传入即代表开启上报\n ClsReporter: null // cls 上报组件,如有需要请自行传入,传入即代表开启上报\n};\n\n// 对外暴露的类\nvar COS = function COS(options) {\n this.options = util.extend(util.clone(defaultOptions), options || {});\n this.options.FileParallelLimit = Math.max(1, this.options.FileParallelLimit);\n this.options.ChunkParallelLimit = Math.max(1, this.options.ChunkParallelLimit);\n this.options.ChunkRetryTimes = Math.max(0, this.options.ChunkRetryTimes);\n this.options.ChunkSize = Math.max(1024 * 1024, this.options.ChunkSize);\n this.options.CopyChunkParallelLimit = Math.max(1, this.options.CopyChunkParallelLimit);\n this.options.CopyChunkSize = Math.max(1024 * 1024, this.options.CopyChunkSize);\n this.options.CopySliceSize = Math.max(0, this.options.CopySliceSize);\n this.options.MaxPartNumber = Math.max(1024, Math.min(10000, this.options.MaxPartNumber));\n this.options.Timeout = Math.max(0, this.options.Timeout);\n this.options.EnableReporter = this.options.BeaconReporter || this.options.ClsReporter;\n if (this.options.AppId) {\n console.warn('warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g: \"test-1250000000\").');\n }\n if (this.options.SecretId && this.options.SecretId.indexOf(' ') > -1) {\n console.error('error: SecretId格式错误,请检查');\n console.error('error: SecretId format is incorrect. Please check');\n }\n if (this.options.SecretKey && this.options.SecretKey.indexOf(' ') > -1) {\n console.error('error: SecretKey格式错误,请检查');\n console.error('error: SecretKey format is incorrect. Please check');\n }\n if (util.isNode()) {\n console.log('Tip: Next.js、Nuxt.js 等服务端渲染技术可正常使用JavaScript SDK,请忽略下方 nodejs 环境警告');\n console.warn('warning: cos-js-sdk-v5 不支持 nodejs 环境使用,请改用 cos-nodejs-sdk-v5,参考文档: https://cloud.tencent.com/document/product/436/8629');\n console.warn('warning: cos-js-sdk-v5 does not support nodejs environment. Please use cos-nodejs-sdk-v5 instead. See: https://cloud.tencent.com/document/product/436/8629');\n }\n if (this.options.ForcePathStyle) {\n console.warn('cos-js-sdk-v5不再支持使用path-style,仅支持使用virtual-hosted-style,参考文档:https://cloud.tencent.com/document/product/436/96243');\n throw new Error('ForcePathStyle is not supported');\n }\n event.init(this);\n task.init(this);\n};\nbase.init(COS, task);\nadvance.init(COS, task);\nCOS.util = {\n md5: util.md5,\n xml2json: util.xml2json,\n json2xml: util.json2xml,\n encodeBase64: util.encodeBase64\n};\nCOS.getAuthorization = util.getAuth;\nCOS.version = pkg.version;\nmodule.exports = COS;\n\n/***/ }),\n\n/***/ \"./src/event.js\":\n/*!**********************!*\\\n !*** ./src/event.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar initEvent = function initEvent(cos) {\n var listeners = {};\n var getList = function getList(action) {\n !listeners[action] && (listeners[action] = []);\n return listeners[action];\n };\n cos.on = function (action, callback) {\n if (action === 'task-list-update') {\n console.warn('warning: Event \"' + action + '\" has been deprecated. Please use \"list-update\" instead.');\n }\n getList(action).push(callback);\n };\n cos.off = function (action, callback) {\n var list = getList(action);\n for (var i = list.length - 1; i >= 0; i--) {\n callback === list[i] && list.splice(i, 1);\n }\n };\n cos.emit = function (action, data) {\n var list = getList(action).map(function (cb) {\n return cb;\n });\n for (var i = 0; i < list.length; i++) {\n list[i](data);\n }\n };\n};\nvar EventProxy = function EventProxy() {\n initEvent(this);\n};\nmodule.exports.init = initEvent;\nmodule.exports.EventProxy = EventProxy;\n\n/***/ }),\n\n/***/ \"./src/session.js\":\n/*!************************!*\\\n !*** ./src/session.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar util = __webpack_require__(/*! ./util */ \"./src/util.js\");\n\n// 按照文件特征值,缓存 UploadId\nvar cacheKey = 'cos_sdk_upload_cache';\nvar expires = 30 * 24 * 3600;\nvar cache;\nvar timer;\nvar getCache = function getCache() {\n try {\n var val = JSON.parse(localStorage.getItem(cacheKey));\n } catch (e) {}\n if (!val) val = [];\n cache = val;\n};\nvar setCache = function setCache() {\n try {\n if (cache.length) localStorage.setItem(cacheKey, JSON.stringify(cache));else localStorage.removeItem(cacheKey);\n } catch (e) {}\n};\nvar init = function init() {\n if (cache) return;\n getCache.call(this);\n // 清理太老旧的数据\n var changed = false;\n var now = Math.round(Date.now() / 1000);\n for (var i = cache.length - 1; i >= 0; i--) {\n var mtime = cache[i][2];\n if (!mtime || mtime + expires < now) {\n cache.splice(i, 1);\n changed = true;\n }\n }\n changed && setCache();\n};\n\n// 把缓存存到本地\nvar save = function save() {\n if (timer) return;\n timer = setTimeout(function () {\n setCache();\n timer = null;\n }, 400);\n};\nvar mod = {\n using: {},\n // 标记 UploadId 正在使用\n setUsing: function setUsing(uuid) {\n mod.using[uuid] = true;\n },\n // 标记 UploadId 已经没在使用\n removeUsing: function removeUsing(uuid) {\n delete mod.using[uuid];\n },\n // 用上传参数生成哈希值\n getFileId: function getFileId(file, ChunkSize, Bucket, Key) {\n if (file.name && file.size && file.lastModifiedDate && ChunkSize) {\n return util.md5([file.name, file.size, file.lastModifiedDate, ChunkSize, Bucket, Key].join('::'));\n } else {\n return null;\n }\n },\n // 用上传参数生成哈希值\n getCopyFileId: function getCopyFileId(copySource, sourceHeaders, ChunkSize, Bucket, Key) {\n var size = sourceHeaders['content-length'];\n var etag = sourceHeaders.etag || '';\n var lastModified = sourceHeaders['last-modified'];\n if (copySource && ChunkSize) {\n return util.md5([copySource, size, etag, lastModified, ChunkSize, Bucket, Key].join('::'));\n } else {\n return null;\n }\n },\n // 获取文件对应的 UploadId 列表\n getUploadIdList: function getUploadIdList(uuid) {\n if (!uuid) return null;\n init.call(this);\n var list = [];\n for (var i = 0; i < cache.length; i++) {\n if (cache[i][0] === uuid) list.push(cache[i][1]);\n }\n return list.length ? list : null;\n },\n // 缓存 UploadId\n saveUploadId: function saveUploadId(uuid, UploadId, limit) {\n init.call(this);\n if (!uuid) return;\n // 清理没用的 UploadId,js 文件没有 FilePath ,只清理相同记录\n for (var i = cache.length - 1; i >= 0; i--) {\n var item = cache[i];\n if (item[0] === uuid && item[1] === UploadId) {\n cache.splice(i, 1);\n }\n }\n cache.unshift([uuid, UploadId, Math.round(Date.now() / 1000)]);\n if (cache.length > limit) cache.splice(limit);\n save();\n },\n // UploadId 已用完,移除掉\n removeUploadId: function removeUploadId(UploadId) {\n init.call(this);\n delete mod.using[UploadId];\n for (var i = cache.length - 1; i >= 0; i--) {\n if (cache[i][1] === UploadId) cache.splice(i, 1);\n }\n save();\n }\n};\nmodule.exports = mod;\n\n/***/ }),\n\n/***/ \"./src/task.js\":\n/*!*********************!*\\\n !*** ./src/task.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar session = __webpack_require__(/*! ./session */ \"./src/session.js\");\nvar util = __webpack_require__(/*! ./util */ \"./src/util.js\");\nvar originApiMap = {};\nvar transferToTaskMethod = function transferToTaskMethod(apiMap, apiName) {\n originApiMap[apiName] = apiMap[apiName];\n apiMap[apiName] = function (params, callback) {\n if (params.SkipTask) {\n originApiMap[apiName].call(this, params, callback);\n } else {\n this._addTask(apiName, params, callback);\n }\n };\n};\nvar initTask = function initTask(cos) {\n var queue = [];\n var tasks = {};\n var uploadingFileCount = 0;\n var nextUploadIndex = 0;\n\n // 接口返回简略的任务信息\n var formatTask = function formatTask(task) {\n var t = {\n id: task.id,\n Bucket: task.Bucket,\n Region: task.Region,\n Key: task.Key,\n FilePath: task.FilePath,\n state: task.state,\n loaded: task.loaded,\n size: task.size,\n speed: task.speed,\n percent: task.percent,\n hashPercent: task.hashPercent,\n error: task.error\n };\n if (task.FilePath) t.FilePath = task.FilePath;\n if (task._custom) t._custom = task._custom; // 控制台使用\n return t;\n };\n var emitListUpdate = function () {\n var timer;\n var emit = function emit() {\n timer = 0;\n cos.emit('task-list-update', {\n list: util.map(queue, formatTask)\n });\n cos.emit('list-update', {\n list: util.map(queue, formatTask)\n });\n };\n return function () {\n if (!timer) timer = setTimeout(emit);\n };\n }();\n var clearQueue = function clearQueue() {\n if (queue.length <= cos.options.UploadQueueSize) return;\n for\n\n // 如果还太多,才继续清理\n (var i = 0; i < nextUploadIndex &&\n // 小于当前操作的 index 才清理\n i < queue.length &&\n // 大于队列才清理\n queue.length > cos.options.UploadQueueSize;) {\n var isActive = queue[i].state === 'waiting' || queue[i].state === 'checking' || queue[i].state === 'uploading';\n if (!queue[i] || !isActive) {\n tasks[queue[i].id] && delete tasks[queue[i].id];\n queue.splice(i, 1);\n nextUploadIndex--;\n } else {\n i++;\n }\n }\n emitListUpdate();\n };\n var startNextTask = function startNextTask() {\n // 检查是否允许增加执行进程\n if (uploadingFileCount >= cos.options.FileParallelLimit) return;\n // 跳过不可执行的任务\n while (queue[nextUploadIndex] && queue[nextUploadIndex].state !== 'waiting') nextUploadIndex++;\n // 检查是否已遍历结束\n if (nextUploadIndex >= queue.length) return;\n // 上传该遍历到的任务\n var task = queue[nextUploadIndex];\n nextUploadIndex++;\n uploadingFileCount++;\n task.state = 'checking';\n task.params.onTaskStart && task.params.onTaskStart(formatTask(task));\n !task.params.UploadData && (task.params.UploadData = {});\n var apiParams = util.formatParams(task.api, task.params);\n originApiMap[task.api].call(cos, apiParams, function (err, data) {\n if (!cos._isRunningTask(task.id)) return;\n if (task.state === 'checking' || task.state === 'uploading') {\n task.state = err ? 'error' : 'success';\n err && (task.error = err);\n uploadingFileCount--;\n emitListUpdate();\n startNextTask();\n task.callback && task.callback(err, data);\n if (task.state === 'success') {\n if (task.params) {\n delete task.params.UploadData;\n delete task.params.Body;\n delete task.params;\n }\n delete task.callback;\n }\n }\n clearQueue();\n });\n emitListUpdate();\n // 异步执行下一个任务\n setTimeout(startNextTask);\n };\n var killTask = function killTask(id, switchToState) {\n var task = tasks[id];\n if (!task) return;\n var waiting = task && task.state === 'waiting';\n var running = task && (task.state === 'checking' || task.state === 'uploading');\n if (switchToState === 'canceled' && task.state !== 'canceled' || switchToState === 'paused' && waiting || switchToState === 'paused' && running) {\n task.state = switchToState;\n cos.emit('inner-kill-task', {\n TaskId: id,\n toState: switchToState\n });\n try {\n var UploadId = task && task.params && task.params.UploadData.UploadId;\n } catch (e) {}\n if (switchToState === 'canceled' && UploadId) session.removeUsing(UploadId);\n emitListUpdate();\n if (running) {\n uploadingFileCount--;\n startNextTask();\n }\n if (switchToState === 'canceled') {\n if (task.params) {\n delete task.params.UploadData;\n delete task.params.Body;\n delete task.params;\n }\n delete task.callback;\n }\n }\n clearQueue();\n };\n cos._addTasks = function (taskList) {\n util.each(taskList, function (task) {\n cos._addTask(task.api, task.params, task.callback, true);\n });\n emitListUpdate();\n };\n var isTaskReadyWarning = true;\n cos._addTask = function (api, params, callback, ignoreAddEvent) {\n // 复制参数对象\n params = util.formatParams(api, params);\n\n // 生成 id\n var id = util.uuid();\n params.TaskId = id;\n params.onTaskReady && params.onTaskReady(id);\n if (params.TaskReady) {\n params.TaskReady(id);\n isTaskReadyWarning && console.warn('warning: Param \"TaskReady\" has been deprecated. Please use \"onTaskReady\" instead.');\n isTaskReadyWarning = false;\n }\n var task = {\n // env\n params: params,\n callback: callback,\n api: api,\n index: queue.length,\n // task\n id: id,\n Bucket: params.Bucket,\n Region: params.Region,\n Key: params.Key,\n FilePath: params.FilePath || '',\n state: 'waiting',\n loaded: 0,\n size: 0,\n speed: 0,\n percent: 0,\n hashPercent: 0,\n error: null,\n _custom: params._custom\n };\n var onHashProgress = params.onHashProgress;\n params.onHashProgress = function (info) {\n if (!cos._isRunningTask(task.id)) return;\n task.hashPercent = info.percent;\n onHashProgress && onHashProgress(info);\n emitListUpdate();\n };\n var onProgress = params.onProgress;\n params.onProgress = function (info) {\n if (!cos._isRunningTask(task.id)) return;\n task.state === 'checking' && (task.state = 'uploading');\n task.loaded = info.loaded;\n task.speed = info.speed;\n task.percent = info.percent;\n onProgress && onProgress(info);\n emitListUpdate();\n };\n\n // 异步获取 filesize\n util.getFileSize(api, params, function (err, size) {\n // 开始处理上传\n if (err) return callback(util.error(err)); // 如果获取大小出错,不加入队列\n // 获取完文件大小再把任务加入队列\n tasks[id] = task;\n queue.push(task);\n task.size = size;\n !ignoreAddEvent && emitListUpdate();\n startNextTask();\n clearQueue();\n });\n return id;\n };\n cos._isRunningTask = function (id) {\n var task = tasks[id];\n return !!(task && (task.state === 'checking' || task.state === 'uploading'));\n };\n cos.getTaskList = function () {\n return util.map(queue, formatTask);\n };\n cos.cancelTask = function (id) {\n killTask(id, 'canceled');\n };\n cos.pauseTask = function (id) {\n killTask(id, 'paused');\n };\n cos.restartTask = function (id) {\n var task = tasks[id];\n if (task && (task.state === 'paused' || task.state === 'error')) {\n task.state = 'waiting';\n emitListUpdate();\n nextUploadIndex = Math.min(nextUploadIndex, task.index);\n startNextTask();\n }\n };\n cos.isUploadRunning = function () {\n return uploadingFileCount || nextUploadIndex < queue.length;\n };\n};\nmodule.exports.transferToTaskMethod = transferToTaskMethod;\nmodule.exports.init = initTask;\n\n/***/ }),\n\n/***/ \"./src/tracker.js\":\n/*!************************!*\\\n !*** ./src/tracker.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _classCallCheck = __webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ \"./node_modules/@babel/runtime/helpers/classCallCheck.js\");\nvar _createClass = __webpack_require__(/*! @babel/runtime/helpers/createClass */ \"./node_modules/@babel/runtime/helpers/createClass.js\");\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\nvar pkg = __webpack_require__(/*! ../package.json */ \"./package.json\");\nvar beacon = null;\nvar getBeacon = function getBeacon(Beacon, delay) {\n if (!beacon) {\n // 生成 beacon\n if (typeof Beacon !== 'function') {\n throw new Error('Beacon not found');\n }\n beacon = new Beacon({\n appkey: '0WEB05PY6MHRGK0U',\n versionCode: pkg.version,\n channelID: 'js_sdk',\n //渠道,选填\n openid: 'openid',\n // 用户id, 选填\n unionid: 'unid',\n //用户unionid , 类似idfv,选填\n strictMode: false,\n //严苛模式开关, 打开严苛模式会主动抛出异常, 上线请务必关闭!!!\n delay: delay,\n // 普通事件延迟上报时间(单位毫秒), 默认1000(1秒),选填\n sessionDuration: 60 * 1000 // session变更的时间间隔, 一个用户持续30分钟(默认值)没有任何上报则算另一次 session,每变更一次session上报一次启动事件(rqd_applaunched),使用毫秒(ms),最小值30秒,选填\n });\n }\n return beacon;\n};\n\n// 毫秒转秒\nvar ms2s = function ms2s(ms) {\n if (!ms || ms < 0) return 0;\n return (ms / 1000).toFixed(3);\n};\nvar utils = {\n // 生成uid 每个链路对应唯一一条uid\n getUid: function getUid() {\n var S4 = function S4() {\n return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);\n };\n return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();\n },\n // 获取网络类型 4g | wifi\n getNetType: function getNetType() {\n if ((typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object') {\n var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;\n return (connection === null || connection === void 0 ? void 0 : connection.type) || (connection === null || connection === void 0 ? void 0 : connection.effectiveType) || 'unknown';\n }\n return 'unknown';\n },\n // http | https\n getProtocol: function getProtocol() {\n if ((typeof location === \"undefined\" ? \"undefined\" : _typeof(location)) === 'object') {\n return location.protocol.replace(/:/, '');\n }\n return 'unknown protocol';\n },\n // 获取pc端操作系统类型\n getOsType: function getOsType() {\n if ((typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) !== 'object') {\n return 'unknown os';\n }\n var agent = navigator.userAgent.toLowerCase();\n var isMac = /macintosh|mac os x/i.test(navigator.userAgent);\n if (agent.indexOf('win32') >= 0 || agent.indexOf('wow32') >= 0) {\n return 'win32';\n }\n if (agent.indexOf('win64') >= 0 || agent.indexOf('wow64') >= 0) {\n return 'win64';\n }\n if (isMac) {\n return 'mac';\n }\n return 'unknown os';\n },\n isMobile: function isMobile() {\n var exp = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i;\n if ((typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && navigator.userAgent.match(exp)) {\n return true; // 移动端\n }\n return false; // PC端\n },\n isAndroid: function isAndroid() {\n var exp = /(Android|Adr|Linux)/i;\n if ((typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && navigator.userAgent.match(exp)) {\n return true;\n }\n return false;\n },\n isIOS: function isIOS() {\n var exp = /(iPhone|iPod|iPad|iOS)/i;\n if ((typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && navigator.userAgent.match(exp)) {\n return true;\n }\n return false;\n },\n isOtherMobile: function isOtherMobile() {\n return isMobile && !isAndroid && !isIOS;\n },\n getUA: function getUA() {\n if ((typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) !== 'object') {\n return 'unknown device';\n }\n var explorer = navigator.userAgent;\n return explorer;\n }\n};\nvar isMobile = utils.isMobile();\nvar mobileOsType = utils.isAndroid() ? 'android' : utils.isIOS ? 'ios' : 'other_mobile';\nvar pcOsType = utils.getOsType();\nvar devicePlatform = isMobile ? mobileOsType : pcOsType;\nvar ua = utils.getUA();\nvar protocol = utils.getProtocol();\nvar transApiName = function transApiName(api) {\n if (['putObject', 'sliceUploadFile', 'uploadFile', 'uploadFiles'].includes(api)) {\n return 'UploadTask';\n } else if (api === 'getObject') {\n return 'DownloadTask';\n } else if (['putObjectCopy', 'sliceCopyFile'].includes(api)) {\n return 'CopyTask';\n }\n return api;\n};\n\n// 上报参数驼峰改下划线\nfunction camel2underline(key) {\n return key.replace(/([A-Z])/g, '_$1').toLowerCase();\n}\nfunction formatParams(params) {\n var formattedParams = {};\n var successKeys = ['sdkVersionName', 'sdkVersionCode', 'osName', 'networkType', 'requestName', 'requestResult', 'bucket', 'region', 'appid', 'accelerate', 'url', 'host', 'requestPath', 'userAgent', 'networkProtocol', 'httpMethod', 'httpSize', 'httpSpeed', 'httpTookTime', 'httpMd5', 'httpSign', 'httpFullTime', 'httpDomain', 'partNumber', 'httpRetryTimes', 'customId', 'traceId', 'realApi'];\n var failureKeys = [].concat(successKeys, ['errorNode', 'errorCode', 'errorName', 'errorMessage', 'errorRequestId', 'errorHttpCode', 'errorServiceName', 'errorType', 'fullError']);\n // 需要上报的参数字段\n var reporterKeys = params.requestResult === 'Success' ? successKeys : failureKeys;\n for (var key in params) {\n if (!reporterKeys.includes(key)) continue;\n var formattedKey = camel2underline(key);\n formattedParams[formattedKey] = params[key];\n }\n formattedParams['request_name'] = params.realApi ? transApiName(params.realApi) : params.requestName;\n return formattedParams;\n}\n\n// 链路追踪器\nvar Tracker = /*#__PURE__*/function () {\n \"use strict\";\n\n function Tracker(opt) {\n _classCallCheck(this, Tracker);\n var parent = opt.parent,\n traceId = opt.traceId,\n bucket = opt.bucket,\n region = opt.region,\n apiName = opt.apiName,\n realApi = opt.realApi,\n httpMethod = opt.httpMethod,\n fileKey = opt.fileKey,\n fileSize = opt.fileSize,\n accelerate = opt.accelerate,\n customId = opt.customId,\n delay = opt.delay,\n deepTracker = opt.deepTracker,\n Beacon = opt.Beacon,\n clsReporter = opt.clsReporter;\n var appid = bucket && bucket.substr(bucket.lastIndexOf('-') + 1) || '';\n this.parent = parent;\n this.deepTracker = deepTracker;\n this.delay = delay;\n if (clsReporter && !this.clsReporter) {\n this.clsReporter = clsReporter;\n }\n // 上报用到的字段\n this.params = {\n // 通用字段\n sdkVersionName: 'cos-js-sdk-v5',\n sdkVersionCode: pkg.version,\n osName: devicePlatform,\n networkType: '',\n requestName: apiName || '',\n requestResult: '',\n // sdk api调用结果Success、Failure\n realApi: realApi,\n bucket: bucket,\n region: region,\n accelerate: accelerate,\n httpMethod: httpMethod,\n url: '',\n // 请求url\n host: '',\n httpDomain: '',\n requestPath: fileKey || '',\n userAgent: ua,\n networkProtocol: protocol,\n errorType: '',\n errorCode: '',\n errorName: '',\n errorMessage: '',\n errorRequestId: '',\n errorHttpCode: 0,\n errorServiceName: '',\n errorNode: '',\n httpTookTime: 0,\n // http整体耗时\n httpSize: fileSize || 0,\n // 主要是文件大小,大小 B\n httpMd5: 0,\n // MD5耗时\n httpSign: 0,\n // 计算签名耗时\n httpFullTime: 0,\n // 任务整体耗时(包括md5、签名等)\n httpSpeed: 0,\n // 主要关注上传速度,KB/s\n\n md5StartTime: 0,\n // md5计算开始时间\n md5EndTime: 0,\n // md5计算结束时间\n signStartTime: 0,\n // 计算签名开始时间\n signEndTime: 0,\n // 计算签名结束时间\n httpStartTime: 0,\n // 发起网络请求开始时间\n httpEndTime: 0,\n // 网路请求结束时间\n startTime: new Date().getTime(),\n // sdk api调用起始时间,不是纯网络耗时\n endTime: 0,\n // sdk api调用结束时间,不是纯网络耗时\n\n // js补充字段\n traceId: traceId || utils.getUid(),\n // 每条上报唯一标识\n appid: appid,\n partNumber: 0,\n // 分块上传编号\n httpRetryTimes: 0,\n // sdk内部发起的请求重试\n customId: customId || '',\n // 业务id\n partTime: 0\n };\n if (Beacon) {\n this.beacon = getBeacon(Beacon, delay);\n }\n }\n\n // 格式化sdk回调\n _createClass(Tracker, [{\n key: \"formatResult\",\n value: function formatResult(err, data) {\n var _err$error, _err$error2, _err$error3, _err$error4, _err$error5, _err$error6;\n var now = new Date().getTime();\n var networkType = utils.getNetType();\n var errorCode = err ? (err === null || err === void 0 ? void 0 : err.code) || (err === null || err === void 0 ? void 0 : (_err$error = err.error) === null || _err$error === void 0 ? void 0 : _err$error.code) || (err === null || err === void 0 ? void 0 : (_err$error2 = err.error) === null || _err$error2 === void 0 ? void 0 : _err$error2.Code) : '';\n var errorMessage = err ? (err === null || err === void 0 ? void 0 : err.message) || (err === null || err === void 0 ? void 0 : (_err$error3 = err.error) === null || _err$error3 === void 0 ? void 0 : _err$error3.message) || (err === null || err === void 0 ? void 0 : (_err$error4 = err.error) === null || _err$error4 === void 0 ? void 0 : _err$error4.Message) : '';\n var errorName = errorMessage;\n var errorServiceName = err ? (err === null || err === void 0 ? void 0 : err.resource) || (err === null || err === void 0 ? void 0 : (_err$error5 = err.error) === null || _err$error5 === void 0 ? void 0 : _err$error5.resource) || (err === null || err === void 0 ? void 0 : (_err$error6 = err.error) === null || _err$error6 === void 0 ? void 0 : _err$error6.Resource) : '';\n var errorHttpCode = err ? err === null || err === void 0 ? void 0 : err.statusCode : data.statusCode;\n var requestId = err ? (err === null || err === void 0 ? void 0 : err.headers) && (err === null || err === void 0 ? void 0 : err.headers['x-cos-request-id']) : (data === null || data === void 0 ? void 0 : data.headers) && (data === null || data === void 0 ? void 0 : data.headers['x-cos-request-id']);\n var errorType = err ? requestId ? 'Server' : 'Client' : '';\n if (this.params.requestName === 'getObject') {\n this.params.httpSize = data ? data.headers && data.headers['content-length'] : 0;\n }\n\n // 上报 sliceUploadFile || uploadFile || uploadFiles 命中分块上传时\n var isSliceUploadFile = this.params.realApi === 'sliceUploadFile';\n var isSliceCopyFile = this.params.realApi === 'sliceCopyFile';\n if (isSliceUploadFile || isSliceCopyFile) {\n var speed = this.params.httpSize / 1024 / this.params.partTime;\n Object.assign(this.params, {\n httpSpeed: speed < 0 ? 0 : speed.toFixed(3)\n });\n } else {\n var httpFullTime = now - this.params.startTime;\n var httpTookTime = this.params.httpEndTime - this.params.httpStartTime;\n var _speed = this.params.httpSize / 1024 / (httpTookTime / 1000);\n var httpMd5 = this.params.md5EndTime - this.params.md5StartTime;\n var httpSign = this.params.signEndTime - this.params.signStartTime;\n if (this.parent) {\n this.parent.addParamValue('httpTookTime', ms2s(httpTookTime));\n this.parent.addParamValue('httpFullTime', ms2s(httpFullTime));\n this.parent.addParamValue('httpMd5', ms2s(httpMd5));\n this.parent.addParamValue('httpSign', ms2s(httpSign));\n if (['multipartUpload', 'uploadPartCopy', 'putObjectCopy'].includes(this.params.requestName)) {\n // 只有小分块上传|复制才累计纯请求耗时,计算速度时用到\n this.parent.addParamValue('partTime', ms2s(httpTookTime));\n }\n }\n Object.assign(this.params, {\n httpFullTime: ms2s(httpFullTime),\n httpMd5: ms2s(httpMd5),\n httpSign: ms2s(httpSign),\n httpTookTime: ms2s(httpTookTime),\n httpSpeed: _speed < 0 ? 0 : _speed.toFixed(3)\n });\n }\n Object.assign(this.params, {\n networkType: networkType,\n requestResult: err ? 'Failure' : 'Success',\n errorType: errorType,\n errorCode: errorCode,\n errorHttpCode: errorHttpCode,\n errorName: errorName,\n errorMessage: errorMessage,\n errorServiceName: errorServiceName,\n errorRequestId: requestId\n });\n if (err && (!errorCode || !errorMessage)) {\n // 暂存全量err一段时间 观察是否所有err格式都可被解析\n this.params.fullError = err ? JSON.stringify(err) : '';\n }\n if (this.params.url) {\n try {\n var execRes = /^http(s)?:\\/\\/(.*?)\\//.exec(this.params.url);\n this.params.host = execRes[2];\n } catch (e) {\n this.params.host = this.params.url;\n }\n this.params.httpDomain = this.params.host;\n }\n }\n\n // 上报\n }, {\n key: \"report\",\n value: function report(err, data) {\n if (!this.beacon && !this.clsReporter) return;\n this.formatResult(err, data);\n var formattedParams = formatParams(this.params);\n if (this.beacon) {\n this.sendEventsToBeacon(formattedParams);\n }\n if (this.clsReporter) {\n this.sendEventsToCLS(formattedParams);\n }\n }\n\n // 设置当前链路的参数\n }, {\n key: \"setParams\",\n value: function setParams(params) {\n Object.assign(this.params, params);\n }\n }, {\n key: \"addParamValue\",\n value: function addParamValue(key, value) {\n this.params[key] = (+this.params[key] + +value).toFixed(3);\n }\n\n // 上报灯塔\n }, {\n key: \"sendEventsToBeacon\",\n value: function sendEventsToBeacon(formattedParams) {\n // DeepTracker模式下才会上报分块上传内部细节\n var isSliceUploadFile = this.params.requestName === 'sliceUploadFile' || this.params.realApi === 'sliceUploadFile';\n if (isSliceUploadFile && !this.deepTracker) {\n return;\n }\n var eventCode = 'qcloud_track_cos_sdk';\n if (this.delay === 0) {\n // 实时上报\n this.beacon && this.beacon.onDirectUserAction(eventCode, formattedParams);\n } else {\n // 周期性上报\n this.beacon && this.beacon.onUserAction(eventCode, formattedParams);\n }\n }\n\n // 上报 cls\n }, {\n key: \"sendEventsToCLS\",\n value: function sendEventsToCLS(formattedParams) {\n // 是否实时上报\n var immediate = !!(this.delay === 0);\n this.clsReporter.log(formattedParams, immediate);\n }\n\n // 生成子实例,与父所属一个链路,可用于分块上传内部流程上报单个分块操作\n }, {\n key: \"generateSubTracker\",\n value: function generateSubTracker(subParams) {\n Object.assign(subParams, {\n parent: this,\n deepTracker: this.deepTracker,\n traceId: this.params.traceId,\n bucket: this.params.bucket,\n region: this.params.region,\n accelerate: this.params.accelerate,\n fileKey: this.params.requestPath,\n customId: this.params.customId,\n delay: this.delay,\n clsReporter: this.clsReporter\n });\n return new Tracker(subParams);\n }\n }]);\n return Tracker;\n}();\nmodule.exports = Tracker;\n\n/***/ }),\n\n/***/ \"./src/util.js\":\n/*!*********************!*\\\n !*** ./src/util.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nvar _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ \"./node_modules/@babel/runtime/helpers/typeof.js\");\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nvar md5 = __webpack_require__(/*! ../lib/md5 */ \"./lib/md5.js\");\nvar CryptoJS = __webpack_require__(/*! ../lib/crypto */ \"./lib/crypto.js\");\nvar _require = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\"),\n XMLParser = _require.XMLParser,\n XMLBuilder = _require.XMLBuilder;\nvar xmlParser = new XMLParser({\n ignoreDeclaration: true,\n // 忽略 XML 声明\n ignoreAttributes: true,\n // 忽略属性\n parseTagValue: false // 关闭自动解析\n});\nvar xmlBuilder = new XMLBuilder();\nvar base64 = __webpack_require__(/*! ../lib/base64 */ \"./lib/base64.js\");\nvar Tracker = __webpack_require__(/*! ./tracker */ \"./src/tracker.js\");\n\n// XML 对象转 JSON 对象\nvar xml2json = function xml2json(bodyStr) {\n var d = xmlParser.parse(bodyStr);\n return d;\n};\n\n// JSON 对象转 XML 对象\nvar json2xml = function json2xml(json) {\n var xml = xmlBuilder.build(json);\n return xml;\n};\nfunction camSafeUrlEncode(str) {\n return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/\\*/g, '%2A');\n}\nfunction getObjectKeys(obj, forKey) {\n var list = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n list.push(forKey ? camSafeUrlEncode(key).toLowerCase() : key);\n }\n }\n return list.sort(function (a, b) {\n a = a.toLowerCase();\n b = b.toLowerCase();\n return a === b ? 0 : a > b ? 1 : -1;\n });\n}\n\n/**\n * obj转为string\n * @param {Object} obj 需要转的对象,必须\n * @param {Boolean} lowerCaseKey key是否转为小写,默认false,非必须\n * @return {String} data 返回字符串\n */\nvar obj2str = function obj2str(obj, lowerCaseKey) {\n var i, key, val;\n var list = [];\n var keyList = getObjectKeys(obj);\n for (i = 0; i < keyList.length; i++) {\n key = keyList[i];\n val = obj[key] === undefined || obj[key] === null ? '' : '' + obj[key];\n key = lowerCaseKey ? camSafeUrlEncode(key).toLowerCase() : camSafeUrlEncode(key);\n val = camSafeUrlEncode(val) || '';\n list.push(key + '=' + val);\n }\n return list.join('&');\n};\n\n// 可以签入签名的headers\nvar signHeaders = ['cache-control', 'content-disposition', 'content-encoding', 'content-length', 'content-md5', 'expect', 'expires', 'host', 'if-match', 'if-modified-since', 'if-none-match', 'if-unmodified-since', 'origin', 'range', 'transfer-encoding', 'pic-operations'];\nvar getSignHeaderObj = function getSignHeaderObj(headers) {\n var signHeaderObj = {};\n for (var i in headers) {\n var key = i.toLowerCase();\n if (key.indexOf('x-cos-') > -1 || signHeaders.indexOf(key) > -1) {\n signHeaderObj[i] = headers[i];\n }\n }\n return signHeaderObj;\n};\n\n//测试用的key后面可以去掉\nvar getAuth = function getAuth(opt) {\n opt = opt || {};\n var SecretId = opt.SecretId;\n var SecretKey = opt.SecretKey;\n var KeyTime = opt.KeyTime;\n var method = (opt.method || opt.Method || 'get').toLowerCase();\n var queryParams = clone(opt.Query || opt.params || {});\n var headers = getSignHeaderObj(clone(opt.Headers || opt.headers || {}));\n var Key = opt.Key || '';\n var pathname;\n if (opt.UseRawKey) {\n pathname = opt.Pathname || opt.pathname || '/' + Key;\n } else {\n pathname = opt.Pathname || opt.pathname || Key;\n pathname.indexOf('/') !== 0 && (pathname = '/' + pathname);\n }\n\n // ForceSignHost明确传入false才不加入host签名\n var forceSignHost = opt.ForceSignHost === false ? false : true;\n\n // 如果有传入存储桶且需要强制签名,那么签名默认加 Host 参与计算,避免跨桶访问\n if (!headers.Host && !headers.host && opt.Bucket && opt.Region && forceSignHost) headers.Host = opt.Bucket + '.cos.' + opt.Region + '.myqcloud.com';\n if (!SecretId) throw new Error('missing param SecretId');\n if (!SecretKey) throw new Error('missing param SecretKey');\n\n // 签名有效起止时间\n var now = Math.round(getSkewTime(opt.SystemClockOffset) / 1000) - 1;\n var exp = now;\n var Expires = opt.Expires || opt.expires;\n if (Expires === undefined) {\n exp += 900; // 签名过期时间为当前 + 900s\n } else {\n exp += Expires * 1 || 0;\n }\n\n // 要用到的 Authorization 参数列表\n var qSignAlgorithm = 'sha1';\n var qAk = SecretId;\n var qSignTime = KeyTime || now + ';' + exp;\n var qKeyTime = KeyTime || now + ';' + exp;\n var qHeaderList = getObjectKeys(headers, true).join(';').toLowerCase();\n var qUrlParamList = getObjectKeys(queryParams, true).join(';').toLowerCase();\n\n // 签名算法说明文档:https://www.qcloud.com/document/product/436/7778\n // 步骤一:计算 SignKey\n var signKey = CryptoJS.HmacSHA1(qKeyTime, SecretKey).toString();\n\n // 步骤二:构成 FormatString\n var formatString = [method, pathname, util.obj2str(queryParams, true), util.obj2str(headers, true), ''].join('\\n');\n\n // 步骤三:计算 StringToSign\n var stringToSign = ['sha1', qSignTime, CryptoJS.SHA1(formatString).toString(), ''].join('\\n');\n\n // 步骤四:计算 Signature\n var qSignature = CryptoJS.HmacSHA1(stringToSign, signKey).toString();\n\n // 步骤五:构造 Authorization\n var authorization = ['q-sign-algorithm=' + qSignAlgorithm, 'q-ak=' + qAk, 'q-sign-time=' + qSignTime, 'q-key-time=' + qKeyTime, 'q-header-list=' + qHeaderList, 'q-url-param-list=' + qUrlParamList, 'q-signature=' + qSignature].join('&');\n return authorization;\n};\nvar readIntBE = function readIntBE(chunk, size, offset) {\n var bytes = size / 8;\n var buf = chunk.slice(offset, offset + bytes);\n new Uint8Array(buf).reverse();\n return new {\n 8: Uint8Array,\n 16: Uint16Array,\n 32: Uint32Array\n }[size](buf)[0];\n};\nvar buf2str = function buf2str(chunk, start, end, isUtf8) {\n var buf = chunk.slice(start, end);\n var str = '';\n new Uint8Array(buf).forEach(function (charCode) {\n str += String.fromCharCode(charCode);\n });\n if (isUtf8) str = decodeURIComponent(escape(str));\n return str;\n};\nvar parseSelectPayload = function parseSelectPayload(chunk) {\n var header = {};\n var body = buf2str(chunk);\n var result = {\n records: []\n };\n while (chunk.byteLength) {\n var totalLength = readIntBE(chunk, 32, 0);\n var headerLength = readIntBE(chunk, 32, 4);\n var payloadRestLength = totalLength - headerLength - 16;\n var offset = 0;\n var content;\n chunk = chunk.slice(12);\n // 获取 Message 的 header 信息\n while (offset < headerLength) {\n var headerNameLength = readIntBE(chunk, 8, offset);\n var headerName = buf2str(chunk, offset + 1, offset + 1 + headerNameLength);\n var headerValueLength = readIntBE(chunk, 16, offset + headerNameLength + 2);\n var headerValue = buf2str(chunk, offset + headerNameLength + 4, offset + headerNameLength + 4 + headerValueLength);\n header[headerName] = headerValue;\n offset += headerNameLength + 4 + headerValueLength;\n }\n if (header[':event-type'] === 'Records') {\n content = buf2str(chunk, offset, offset + payloadRestLength, true);\n result.records.push(content);\n } else if (header[':event-type'] === 'Stats') {\n content = buf2str(chunk, offset, offset + payloadRestLength, true);\n result.stats = util.xml2json(content).Stats;\n } else if (header[':event-type'] === 'error') {\n var errCode = header[':error-code'];\n var errMessage = header[':error-message'];\n var err = new Error(errMessage);\n err.message = errMessage;\n err.name = err.code = errCode;\n result.error = err;\n } else if (['Progress', 'Continuation', 'End'].includes(header[':event-type'])) {\n // do nothing\n }\n chunk = chunk.slice(offset + payloadRestLength + 4);\n }\n return {\n payload: result.records.join(''),\n body: body\n };\n};\nvar getSourceParams = function getSourceParams(source) {\n var parser = this.options.CopySourceParser;\n if (parser) return parser(source);\n var m = source.match(/^([^.]+-\\d+)\\.cos(v6|-cdc|-cdz|-internal)?\\.([^.]+)\\.((myqcloud\\.com)|(tencentcos\\.cn))\\/(.+)$/);\n if (!m) return null;\n return {\n Bucket: m[1],\n Region: m[3],\n Key: m[7]\n };\n};\nvar noop = function noop() {};\n\n// 清除对象里值为的 undefined 或 null 的属性\nvar clearKey = function clearKey(obj) {\n var retObj = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] !== undefined && obj[key] !== null) {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n};\nvar readAsBinaryString = function readAsBinaryString(blob, callback) {\n var readFun;\n var fr = new FileReader();\n if (FileReader.prototype.readAsBinaryString) {\n readFun = FileReader.prototype.readAsBinaryString;\n fr.onload = function () {\n callback(this.result);\n };\n } else if (FileReader.prototype.readAsArrayBuffer) {\n // 在 ie11 添加 readAsBinaryString 兼容\n readFun = function readFun(fileData) {\n var binary = '';\n var pt = this;\n var reader = new FileReader();\n reader.onload = function (e) {\n var bytes = new Uint8Array(reader.result);\n var length = bytes.byteLength;\n for (var i = 0; i < length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n callback(binary);\n };\n reader.readAsArrayBuffer(fileData);\n };\n } else {\n console.error('FileReader not support readAsBinaryString');\n }\n readFun.call(fr, blob);\n};\nvar fileSliceNeedCopy = function () {\n var compareVersion = function compareVersion(a, b) {\n a = a.split('.');\n b = b.split('.');\n for (var i = 0; i < b.length; i++) {\n if (a[i] !== b[i]) {\n return parseInt(a[i]) > parseInt(b[i]) ? 1 : -1;\n }\n }\n return 0;\n };\n var check = function check(ua) {\n if (!ua) return false;\n var ChromeVersion = (ua.match(/Chrome\\/([.\\d]+)/) || [])[1];\n var QBCoreVersion = (ua.match(/QBCore\\/([.\\d]+)/) || [])[1];\n var QQBrowserVersion = (ua.match(/QQBrowser\\/([.\\d]+)/) || [])[1];\n var need = ChromeVersion && compareVersion(ChromeVersion, '53.0.2785.116') < 0 && QBCoreVersion && compareVersion(QBCoreVersion, '3.53.991.400') < 0 && QQBrowserVersion && compareVersion(QQBrowserVersion, '9.0.2524.400') <= 0 || false;\n return need;\n };\n return check(typeof navigator !== 'undefined' && navigator.userAgent);\n}();\n\n// 获取文件分片\nvar fileSlice = function fileSlice(file, start, end, isUseToUpload, callback) {\n var blob;\n if (file.slice) {\n blob = file.slice(start, end);\n } else if (file.mozSlice) {\n blob = file.mozSlice(start, end);\n } else if (file.webkitSlice) {\n blob = file.webkitSlice(start, end);\n }\n if (isUseToUpload && fileSliceNeedCopy) {\n var reader = new FileReader();\n reader.onload = function (e) {\n blob = null;\n callback(new Blob([reader.result]));\n };\n reader.readAsArrayBuffer(blob);\n } else {\n callback(blob);\n }\n};\n\n// 获取文件内容的 MD5\nvar getBodyMd5 = function getBodyMd5(UploadCheckContentMd5, Body, callback, onProgress) {\n callback = callback || noop;\n if (UploadCheckContentMd5) {\n if (typeof Body === 'string') {\n callback(util.md5(Body, true));\n } else if (Blob && Body instanceof Blob) {\n util.getFileMd5(Body, function (err, md5) {\n callback(md5);\n }, onProgress);\n } else {\n callback();\n }\n } else {\n callback();\n }\n};\n\n// 获取文件 md5 值\nvar md5ChunkSize = 1024 * 1024;\nvar getFileMd5 = function getFileMd5(blob, callback, onProgress) {\n var size = blob.size;\n var loaded = 0;\n var md5ctx = md5.getCtx();\n var next = function next(start) {\n if (start >= size) {\n var hash = md5ctx.digest('hex');\n callback(null, hash);\n return;\n }\n var end = Math.min(size, start + md5ChunkSize);\n util.fileSlice(blob, start, end, false, function (chunk) {\n readAsBinaryString(chunk, function (content) {\n chunk = null;\n md5ctx = md5ctx.update(content, true);\n loaded += content.length;\n content = null;\n if (onProgress) onProgress({\n loaded: loaded,\n total: size,\n percent: Math.round(loaded / size * 10000) / 10000\n });\n next(start + md5ChunkSize);\n });\n });\n };\n next(0);\n};\nfunction clone(obj) {\n return map(obj, function (v) {\n return _typeof(v) === 'object' && v !== null ? clone(v) : v;\n });\n}\nfunction attr(obj, name, defaultValue) {\n return obj && name in obj ? obj[name] : defaultValue;\n}\nfunction extend(target, source) {\n each(source, function (val, key) {\n target[key] = source[key];\n });\n return target;\n}\nfunction isArray(arr) {\n return arr instanceof Array;\n}\nfunction isInArray(arr, item) {\n var flag = false;\n for (var i = 0; i < arr.length; i++) {\n if (item === arr[i]) {\n flag = true;\n break;\n }\n }\n return flag;\n}\nfunction makeArray(arr) {\n return isArray(arr) ? arr : [arr];\n}\nfunction each(obj, fn) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n fn(obj[i], i);\n }\n }\n}\nfunction map(obj, fn) {\n var o = isArray(obj) ? [] : {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = fn(obj[i], i);\n }\n }\n return o;\n}\nfunction filter(obj, fn) {\n var iaArr = isArray(obj);\n var o = iaArr ? [] : {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (fn(obj[i], i)) {\n if (iaArr) {\n o.push(obj[i]);\n } else {\n o[i] = obj[i];\n }\n }\n }\n }\n return o;\n}\nvar b64 = function b64(str) {\n var i,\n len,\n char,\n res = '';\n for (i = 0, len = str.length / 2; i < len; i++) {\n char = parseInt(str[i * 2] + str[i * 2 + 1], 16);\n res += String.fromCharCode(char);\n }\n return btoa(res);\n};\nvar uuid = function uuid() {\n var S4 = function S4() {\n return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);\n };\n return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();\n};\nvar hasMissingParams = function hasMissingParams(apiName, params) {\n var Bucket = params.Bucket;\n var Region = params.Region;\n var Key = params.Key;\n var Domain = this.options.Domain;\n var checkBucket = !Domain || typeof Domain === 'string' && Domain.indexOf('{Bucket}') > -1;\n var checkRegion = !Domain || typeof Domain === 'string' && Domain.indexOf('{Region}') > -1;\n if (apiName.indexOf('Bucket') > -1 || apiName === 'deleteMultipleObject' || apiName === 'multipartList' || apiName === 'listObjectVersions') {\n if (checkBucket && !Bucket) return 'Bucket';\n if (checkRegion && !Region) return 'Region';\n } else if (apiName.indexOf('Object') > -1 || apiName.indexOf('multipart') > -1 || apiName === 'sliceUploadFile' || apiName === 'abortUploadTask' || apiName === 'uploadFile') {\n if (checkBucket && !Bucket) return 'Bucket';\n if (checkRegion && !Region) return 'Region';\n if (!Key) return 'Key';\n }\n return false;\n};\nvar formatParams = function formatParams(apiName, params) {\n // 复制参数对象\n params = extend({}, params);\n\n // 统一处理 Headers\n if (apiName !== 'getAuth' && apiName !== 'getV4Auth' && apiName !== 'getObjectUrl') {\n var Headers = params.Headers || {};\n if (params && _typeof(params) === 'object') {\n (function () {\n for (var key in params) {\n if (params.hasOwnProperty(key) && key.indexOf('x-cos-') > -1) {\n Headers[key] = params[key];\n }\n }\n })();\n var headerMap = {\n // params headers\n 'x-cos-mfa': 'MFA',\n 'Content-MD5': 'ContentMD5',\n 'Content-Length': 'ContentLength',\n 'Content-Type': 'ContentType',\n Expect: 'Expect',\n Expires: 'Expires',\n 'Cache-Control': 'CacheControl',\n 'Content-Disposition': 'ContentDisposition',\n 'Content-Encoding': 'ContentEncoding',\n Range: 'Range',\n 'If-Modified-Since': 'IfModifiedSince',\n 'If-Unmodified-Since': 'IfUnmodifiedSince',\n 'If-Match': 'IfMatch',\n 'If-None-Match': 'IfNoneMatch',\n 'x-cos-copy-source': 'CopySource',\n 'x-cos-copy-source-Range': 'CopySourceRange',\n 'x-cos-metadata-directive': 'MetadataDirective',\n 'x-cos-copy-source-If-Modified-Since': 'CopySourceIfModifiedSince',\n 'x-cos-copy-source-If-Unmodified-Since': 'CopySourceIfUnmodifiedSince',\n 'x-cos-copy-source-If-Match': 'CopySourceIfMatch',\n 'x-cos-copy-source-If-None-Match': 'CopySourceIfNoneMatch',\n 'x-cos-acl': 'ACL',\n 'x-cos-grant-read': 'GrantRead',\n 'x-cos-grant-write': 'GrantWrite',\n 'x-cos-grant-full-control': 'GrantFullControl',\n 'x-cos-grant-read-acp': 'GrantReadAcp',\n 'x-cos-grant-write-acp': 'GrantWriteAcp',\n 'x-cos-storage-class': 'StorageClass',\n 'x-cos-traffic-limit': 'TrafficLimit',\n 'x-cos-mime-limit': 'MimeLimit',\n // SSE-C\n 'x-cos-server-side-encryption-customer-algorithm': 'SSECustomerAlgorithm',\n 'x-cos-server-side-encryption-customer-key': 'SSECustomerKey',\n 'x-cos-server-side-encryption-customer-key-MD5': 'SSECustomerKeyMD5',\n // SSE-COS、SSE-KMS\n 'x-cos-server-side-encryption': 'ServerSideEncryption',\n 'x-cos-server-side-encryption-cos-kms-key-id': 'SSEKMSKeyId',\n 'x-cos-server-side-encryption-context': 'SSEContext',\n // 上传时图片处理\n 'Pic-Operations': 'PicOperations',\n 'x-cos-callback': 'Callback',\n 'x-cos-callback-var': 'CallbackVar',\n 'x-cos-return-body': 'ReturnBody'\n };\n util.each(headerMap, function (paramKey, headerKey) {\n if (params[paramKey] !== undefined) {\n Headers[headerKey] = params[paramKey];\n }\n });\n params.Headers = clearKey(Headers);\n }\n }\n return params;\n};\nvar apiWrapper = function apiWrapper(apiName, apiFn) {\n return function (params, callback) {\n var self = this;\n\n // 处理参数\n if (typeof params === 'function') {\n callback = params;\n params = {};\n }\n\n // 整理参数格式\n params = formatParams(apiName, params);\n\n // tracker传递\n var tracker;\n if (self.options.EnableReporter) {\n if (params.calledBySdk === 'sliceUploadFile' || params.calledBySdk === 'sliceCopyFile') {\n // 分块上传内部方法使用sliceUploadFile的子链路\n tracker = params.tracker && params.tracker.generateSubTracker({\n apiName: apiName\n });\n } else if (['uploadFile', 'uploadFiles'].includes(apiName)) {\n // uploadFile、uploadFiles方法在内部处理,此处不处理\n tracker = null;\n } else {\n var fileSize = 0;\n if (params.Body) {\n fileSize = typeof params.Body === 'string' ? params.Body.length : params.Body.size || params.Body.byteLength || 0;\n }\n var accelerate = self.options.UseAccelerate || typeof self.options.Domain === 'string' && self.options.Domain.includes('accelerate.');\n tracker = new Tracker({\n Beacon: self.options.BeaconReporter,\n clsReporter: self.options.ClsReporter,\n bucket: params.Bucket,\n region: params.Region,\n apiName: apiName,\n realApi: apiName,\n accelerate: accelerate,\n fileKey: params.Key,\n fileSize: fileSize,\n deepTracker: self.options.DeepTracker,\n customId: self.options.CustomId,\n delay: self.options.TrackerDelay\n });\n }\n }\n params.tracker = tracker;\n\n // 代理回调函数\n var formatResult = function formatResult(result) {\n if (result && result.headers) {\n result.headers['x-cos-request-id'] && (result.RequestId = result.headers['x-cos-request-id']);\n result.headers['x-ci-request-id'] && (result.RequestId = result.headers['x-ci-request-id']);\n result.headers['x-cos-version-id'] && (result.VersionId = result.headers['x-cos-version-id']);\n result.headers['x-cos-delete-marker'] && (result.DeleteMarker = result.headers['x-cos-delete-marker']);\n }\n return result;\n };\n var _callback = function _callback(err, data) {\n // 格式化上报参数并上报\n tracker && tracker.report(err, data);\n callback && callback(formatResult(err), formatResult(data));\n };\n var checkParams = function checkParams() {\n if (apiName !== 'getService' && apiName !== 'abortUploadTask') {\n // 判断参数是否完整\n var missingResult = hasMissingParams.call(self, apiName, params);\n if (missingResult) {\n return 'missing param ' + missingResult;\n }\n // 判断 region 格式\n if (params.Region) {\n if (self.options.CompatibilityMode) {\n if (!/^([a-z\\d-.]+)$/.test(params.Region)) {\n return 'Region format error.';\n }\n } else {\n if (params.Region.indexOf('cos.') > -1) {\n return 'param Region should not be start with \"cos.\"';\n } else if (!/^([a-z\\d-]+)$/.test(params.Region)) {\n return 'Region format error.';\n }\n }\n // 判断 region 格式\n if (!self.options.CompatibilityMode && params.Region.indexOf('-') === -1 && params.Region !== 'yfb' && params.Region !== 'default' && params.Region !== 'accelerate') {\n console.warn('warning: param Region format error, find help here: https://cloud.tencent.com/document/product/436/6224');\n }\n }\n // 兼容不带 AppId 的 Bucket\n if (params.Bucket) {\n if (!/^([a-z\\d-]+)-(\\d+)$/.test(params.Bucket)) {\n if (params.AppId) {\n params.Bucket = params.Bucket + '-' + params.AppId;\n } else if (self.options.AppId) {\n params.Bucket = params.Bucket + '-' + self.options.AppId;\n } else {\n return 'Bucket should format as \"test-1250000000\".';\n }\n }\n if (params.AppId) {\n console.warn('warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g Bucket:\"test-1250000000\" ).');\n delete params.AppId;\n }\n }\n // 如果 Key 是 / 开头,强制去掉第一个 /\n if (!self.options.UseRawKey && params.Key && params.Key.substr(0, 1) === '/') {\n params.Key = params.Key.substr(1);\n }\n }\n };\n var errMsg = checkParams();\n var isSync = ['getAuth', 'getObjectUrl'].includes(apiName);\n if (typeof Promise === 'function' && !isSync && !callback) {\n return new Promise(function (resolve, reject) {\n callback = function callback(err, data) {\n err ? reject(err) : resolve(data);\n };\n if (errMsg) return _callback(util.error(new Error(errMsg)));\n apiFn.call(self, params, _callback);\n });\n } else {\n if (errMsg) return _callback(util.error(new Error(errMsg)));\n var res = apiFn.call(self, params, _callback);\n if (isSync) return res;\n }\n };\n};\nvar throttleOnProgress = function throttleOnProgress(total, onProgress) {\n var self = this;\n var size0 = 0;\n var size1 = 0;\n var time0 = Date.now();\n var time1;\n var timer;\n function update() {\n timer = 0;\n if (onProgress && typeof onProgress === 'function') {\n time1 = Date.now();\n var speed = Math.max(0, Math.round((size1 - size0) / ((time1 - time0) / 1000) * 100) / 100) || 0;\n var percent;\n if (size1 === 0 && total === 0) {\n percent = 1;\n } else {\n percent = Math.floor(size1 / total * 100) / 100 || 0;\n }\n time0 = time1;\n size0 = size1;\n try {\n onProgress({\n loaded: size1,\n total: total,\n speed: speed,\n percent: percent\n });\n } catch (e) {}\n }\n }\n return function (info, immediately) {\n if (info) {\n size1 = info.loaded;\n total = info.total;\n }\n if (immediately) {\n clearTimeout(timer);\n update();\n } else {\n if (timer) return;\n timer = setTimeout(update, self.options.ProgressInterval);\n }\n };\n};\nvar getFileSize = function getFileSize(api, params, callback) {\n var size;\n if (typeof params.Body === 'string') {\n params.Body = new Blob([params.Body], {\n type: 'text/plain'\n });\n } else if (params.Body instanceof ArrayBuffer) {\n params.Body = new Blob([params.Body]);\n }\n if (params.Body && (params.Body instanceof Blob || params.Body.toString() === '[object File]' || params.Body.toString() === '[object Blob]')) {\n size = params.Body.size;\n } else {\n callback(util.error(new Error('params body format error, Only allow File|Blob|String.')));\n return;\n }\n params.ContentLength = size;\n callback(null, size);\n};\n\n// 获取调正的时间戳\nvar getSkewTime = function getSkewTime(offset) {\n return Date.now() + (offset || 0);\n};\nvar error = function error(err, opt) {\n var sourceErr = err;\n err.message = err.message || null;\n if (typeof opt === 'string') {\n err.error = opt;\n err.message = opt;\n } else if (_typeof(opt) === 'object' && opt !== null) {\n extend(err, opt);\n if (opt.code || opt.name) err.code = opt.code || opt.name;\n if (opt.message) err.message = opt.message;\n if (opt.stack) err.stack = opt.stack;\n }\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(err, 'name', {\n writable: true,\n enumerable: false\n });\n Object.defineProperty(err, 'message', {\n enumerable: true\n });\n }\n err.name = opt && opt.name || err.name || err.code || 'Error';\n if (!err.code) err.code = err.name;\n if (!err.error) err.error = clone(sourceErr); // 兼容老的错误格式\n\n return err;\n};\nvar isWebWorker = function isWebWorker() {\n // 有限判断 worker 环境的 constructor name 其次用 worker 独有的 FileReaderSync 兜底 详细参考 https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Using_web_workers\n return (typeof globalThis === \"undefined\" ? \"undefined\" : _typeof(globalThis)) === 'object' && (globalThis.constructor.name === 'DedicatedWorkerGlobalScope' || globalThis.FileReaderSync);\n};\nvar isNode = function isNode() {\n // 得兜底 web worker 环境中 webpack 用了 process 插件之类的情况\n return (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== 'object' && (typeof process === \"undefined\" ? \"undefined\" : _typeof(process)) === 'object' && \"function\" === 'function' && !isWebWorker();\n};\nvar isCIHost = function isCIHost(url) {\n return /^https?:\\/\\/([^/]+\\.)?ci\\.[^/]+/.test(url);\n};\n\n//判断是否是ios\nvar isIOS = function () {\n if ((typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) !== 'object') {\n return false;\n }\n var u = navigator.userAgent;\n var isIOS = !!u.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端\n return isIOS;\n}();\n\n// 判断是qq内置浏览器\nvar isQQ = function () {\n if ((typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) !== 'object') {\n return false;\n }\n return /\\sQQ/i.test(navigator.userAgent);\n}();\nvar encodeBase64 = function encodeBase64(str, safe) {\n var base64Str = base64.encode(str);\n // 万象使用的安全base64格式需要特殊处理\n if (safe) {\n base64Str = base64Str.replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '');\n }\n return base64Str;\n};\nvar decodeBase64 = function decodeBase64(base64Str) {\n if (!base64Str) return '';\n return base64.decode(base64Str);\n};\nvar simplifyPath = function simplifyPath(path) {\n var names = path.split('/');\n var stack = [];\n var _iterator = _createForOfIteratorHelper(names),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var name = _step.value;\n if (name === '..') {\n if (stack.length) {\n stack.pop();\n }\n } else if (name.length && name !== '.') {\n stack.push(name);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return '/' + stack.join('/');\n};\n\n// 解析响应体,兼容 xml、json\nvar parseResBody = function parseResBody(responseBody) {\n var json;\n if (responseBody && typeof responseBody === 'string') {\n var trimBody = responseBody.trim();\n var isXml = trimBody.indexOf('<') === 0;\n var isJson = trimBody.indexOf('{') === 0;\n if (isXml) {\n // xml 解析,解析失败返回{}\n json = util.xml2json(responseBody) || {};\n } else if (isJson) {\n // json解析,解析失败返回原始 Body\n try {\n // 替换 json 中的换行符为空格,否则解析会出错\n var formatBody = responseBody.replace(/\\n/g, ' ');\n var parsedBody = JSON.parse(formatBody);\n // 确保解析出 json 对象\n if (Object.prototype.toString.call(parsedBody) === '[object Object]') {\n json = parsedBody;\n } else {\n json = responseBody;\n }\n } catch (e) {\n json = responseBody;\n }\n } else {\n json = responseBody;\n }\n } else {\n json = responseBody || {};\n }\n return json;\n};\nvar util = {\n noop: noop,\n formatParams: formatParams,\n apiWrapper: apiWrapper,\n xml2json: xml2json,\n json2xml: json2xml,\n md5: md5,\n clearKey: clearKey,\n fileSlice: fileSlice,\n getBodyMd5: getBodyMd5,\n getFileMd5: getFileMd5,\n b64: b64,\n extend: extend,\n isArray: isArray,\n isInArray: isInArray,\n makeArray: makeArray,\n each: each,\n map: map,\n filter: filter,\n clone: clone,\n attr: attr,\n uuid: uuid,\n camSafeUrlEncode: camSafeUrlEncode,\n throttleOnProgress: throttleOnProgress,\n getFileSize: getFileSize,\n getSkewTime: getSkewTime,\n error: error,\n obj2str: obj2str,\n getAuth: getAuth,\n parseSelectPayload: parseSelectPayload,\n getSourceParams: getSourceParams,\n isBrowser: true,\n isNode: isNode,\n isCIHost: isCIHost,\n isIOS_QQ: isIOS && isQQ,\n encodeBase64: encodeBase64,\n decodeBase64: decodeBase64,\n simplifyPath: simplifyPath,\n readAsBinaryString: readAsBinaryString,\n parseResBody: parseResBody\n};\nmodule.exports = util;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/process/browser.js */ \"./node_modules/process/browser.js\")))\n\n/***/ })\n\n/******/ });\n});","import COS from 'cos-js-sdk-v5';\n\nexport function format(first?: string, middle?: string, last?: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\n// 添加类型定义\nexport interface UserInputMessageType {\n message: string;\n [key: string]: any;\n}\n\nexport interface WorkFlowNode {\n message_id?: string;\n conversation_id?: string;\n created_at?: string;\n event?: string;\n answer?: string;\n data?: {\n outputs?: {\n answer?: string;\n };\n status?: string;\n error?: any;\n };\n}\n\nexport interface MessageRound extends UserInputMessageType {\n id?: string;\n conversation_id?: string;\n created_at?: string;\n answer?: string;\n status?: string;\n error?: any;\n}\n\n/**\n * 将工作流节点转换为消息轮次\n * @param message_event 消息事件类型\n * @param inputMessage 用户输入消息\n * @param streamNode 工作流节点\n * @returns 消息轮次\n */\nexport const convertWorkflowStreamNodeToMessageRound = (\n message_event: string,\n inputMessage: UserInputMessageType,\n streamNode: WorkFlowNode,\n): MessageRound => {\n const messageRound: MessageRound = {\n ...inputMessage,\n };\n if (message_event === 'workflow_finished') messageRound.answer = streamNode.data?.outputs?.answer;\n if (message_event === 'agent_message' || message_event === 'message') messageRound.answer = streamNode?.answer;\n messageRound.id = streamNode.message_id;\n messageRound.conversation_id = streamNode.conversation_id;\n messageRound.created_at = streamNode.created_at;\n messageRound.status = streamNode.data?.status;\n messageRound.error = streamNode.data?.error;\n return messageRound;\n};\n\n/**\n * SSE 流式请求配置接口\n */\nexport interface SSERequestConfig {\n url: string;\n method: string;\n headers?: Record<string, string>;\n data?: any;\n onMessage?: (data: any) => void;\n onError?: (error: any) => void;\n onComplete?: () => void;\n}\n\n/**\n * 发送 SSE 流式请求\n * @param config 请求配置\n * @returns Promise<void>\n */\nexport const sendSSERequest = async (config: SSERequestConfig): Promise<void> => {\n const { url, method, headers = {}, data, onMessage, onError, onComplete } = config;\n \n try {\n const response = await fetch(url, {\n method,\n headers: {\n 'Accept': 'text/event-stream',\n 'Content-Type': 'application/json',\n ...headers\n },\n body: data ? JSON.stringify(data) : undefined\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const reader = response.body?.getReader();\n if (!reader) throw new Error('No reader available');\n \n const decoder = new TextDecoder();\n let buffer = '';\n\n while (true) {\n const { value, done } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n\n // 处理缓冲区中的完整消息\n const lines = buffer.split('\\n');\n buffer = lines.pop() || ''; // 保留最后一个不完整的行\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n try {\n const jsonStr = line.substring(5).trim();\n if (!jsonStr) continue;\n \n const data = JSON.parse(jsonStr);\n onMessage?.(data);\n } catch (e) {\n console.error('解析 SSE 数据错误:', e, '原始数据:', line);\n }\n }\n }\n }\n \n onComplete?.();\n } catch (error) {\n console.error('SSE 请求错误:', error);\n onError?.(error);\n }\n};\n\n/**\n * HTTP请求配置接口\n */\nexport interface HttpRequestConfig {\n url: string;\n method?: string;\n headers?: Record<string, string>;\n params?: Record<string, any>;\n data?: any;\n onMessage?: (data: any) => void;\n onError?: (error: any) => void;\n onComplete?: () => void;\n}\n\n/**\n * HTTP响应接口\n */\nexport interface HttpResponse<T = any> {\n isOk: boolean;\n data?: T;\n error?: any;\n}\n\n/**\n * 发送HTTP请求\n * @param config 请求配置\n * @returns Promise<HttpResponse>\n */\nexport const sendHttpRequest = async <T = any>(config: HttpRequestConfig): Promise<HttpResponse<T>> => {\n const { url, method = 'GET', headers = {}, params = {}, data, onMessage } = config;\n \n try {\n // 构建URL和查询参数\n const queryParams = new URLSearchParams();\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n queryParams.append(key, String(value));\n }\n });\n \n let requestUrl = `${url}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;\n \n // 创建请求配置对象\n const requestConfig: RequestInit = {\n method,\n headers: {\n 'Content-Type': 'application/json',\n ...headers\n }\n };\n\n // 只有在非 GET/HEAD 请求时才添加 body\n if (method !== 'GET' && method !== 'HEAD' && data) {\n requestConfig.body = JSON.stringify(data);\n }\n\n // 如果是 GET 方法且有 data,将其作为查询参数添加到 URL\n if (method === 'GET' && data) {\n const dataParams = new URLSearchParams();\n Object.entries(data).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n dataParams.append(key, String(value));\n }\n });\n requestUrl += (queryParams.toString() ? '&' : '?') + dataParams.toString();\n }\n\n const response = await fetch(requestUrl, requestConfig);\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const responseData = await response.json();\n \n // 调用 onMessage 回调\n if (onMessage) {\n onMessage(responseData);\n }\n \n return {\n isOk: true,\n data: responseData\n };\n } catch (error) {\n console.error('HTTP请求错误:', error);\n if (config.onError) {\n config.onError(error);\n }\n return {\n isOk: false,\n error\n };\n } finally {\n if (config.onComplete) {\n config.onComplete();\n }\n }\n};\n\n/**\n * COS上传配置接口\n */\nexport interface COSUploadConfig {\n SecretId: string;\n SecretKey: string;\n SecurityToken?: string;\n StartTime?: number;\n ExpiredTime?: number;\n Bucket: string;\n Region: string;\n Key: string;\n file: File;\n onProgress?: (progress: number) => void;\n onSuccess?: (result: COSUploadResult) => void;\n onError?: (error: any) => void;\n}\n\n/**\n * COS上传结果接口\n */\nexport interface COSUploadResult {\n Location: string;\n Bucket: string;\n Key: string;\n ETag: string;\n FileSize: number;\n RequestId: string;\n}\n\n/**\n * COS文件上传工具函数\n * @param config 上传配置\n * @returns Promise<COSUploadResult>\n */\nexport const uploadToCOS = (config: COSUploadConfig): Promise<COSUploadResult> => {\n const cos = new COS({\n SecretId: config.SecretId,\n SecretKey: config.SecretKey,\n SecurityToken: config.SecurityToken,\n StartTime: config.StartTime,\n ExpiredTime: config.ExpiredTime,\n });\n\n return new Promise((resolve, reject) => {\n cos.uploadFile({\n Bucket: config.Bucket,\n Region: config.Region,\n Key: config.Key,\n Body: config.file,\n SliceSize: 1024 * 1024 * 5, // 分片上传,每片5MB\n onProgress: (progressData) => {\n const percent = Math.floor((progressData.loaded / progressData.total) * 100);\n config.onProgress?.(percent);\n },\n }, (err, data) => {\n if (err) {\n config.onError?.(err);\n reject(err);\n } else {\n const result = {\n Location: data.Location,\n Bucket: config.Bucket,\n Key: config.Key,\n ETag: data.ETag,\n FileSize: config.file.size,\n RequestId: data.RequestId,\n };\n config.onSuccess?.(result);\n resolve(result);\n }\n });\n });\n};\n\n/**\n * 简单的文件类型检查工具\n * @param file 文件对象\n * @param allowedTypes 允许的文件类型数组\n * @returns boolean\n */\nexport const checkFileType = (file: File, allowedTypes: string[]): boolean => {\n const fileType = file.type.toLowerCase();\n return allowedTypes.some(type => fileType.includes(type));\n};\n\n/**\n * 文件大小检查工具\n * @param file 文件对象\n * @param maxSize 最大文件大小(单位:MB)\n * @returns boolean\n */\nexport const checkFileSize = (file: File, maxSize: number): boolean => {\n const fileSize = file.size / 1024 / 1024; // 转换为MB\n return fileSize <= maxSize;\n};\n\n/**\n * COS认证信息接口\n */\nexport interface COSAuthInfo {\n filename?: string;\n filetype?: string;\n filesize?: number;\n cos?: {\n region?: string;\n bucket?: string;\n cos_key?: string;\n };\n auth?: {\n expiredTime?: number;\n expiration?: string;\n requestId?: string;\n startTime?: number;\n credentials?: {\n sessionToken?: string;\n tmpSecretId?: string;\n tmpSecretKey?: string;\n };\n };\n}\n\n/**\n * 获取COS上传认证信息\n * @param file 文件对象\n * @param tags 可选的标签数组\n * @returns Promise<COSAuthInfo>\n */\nexport const getCosAuthInfo = async (file: File, tags?: string[]): Promise<COSAuthInfo> => {\n const data = {\n filename: file.name,\n filesize: file.size,\n filetype: file.type,\n tags,\n };\n\n const res = await sendHttpRequest<COSAuthInfo>({\n url: '/resource/get-cos-authkey',\n method: 'POST',\n data,\n });\n\n return res?.data ?? {};\n};\n\n\n/**\n * 通过后端API上传文件\n * @param file 要上传的文件\n * @returns Promise 包含上传结果\n */\nexport const uploadFileToBackend = async (file: File): Promise<{id: string, name: string, size: number, type: string}> => {\n const formData = new FormData();\n formData.append('file', file);\n \n try {\n const response = await fetch('https://pcm_api.ylzhaopin.com/external/v1/files/upload', {\n method: 'POST',\n body: formData\n });\n \n if (!response.ok) {\n throw new Error(`上传失败: ${response.status} ${response.statusText}`);\n }\n \n const result = await response.json();\n if (result.code !== 0 || !result.data) {\n throw new Error(result.message || '文件上传失败');\n }\n \n return {\n id: result.data.id,\n name: result.data.name || file.name,\n size: result.data.size || file.size,\n type: result.data.type || file.type\n };\n } catch (error) {\n console.error('文件上传错误:', error);\n throw error;\n }\n};\n"],"names":["this"],"mappings":"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","x_google_ignoreList":[0]}