@bedelightful/upload-sdk 0.0.7

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 (239) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +132 -0
  3. package/dist/es/Exception/BaseException.js +14 -0
  4. package/dist/es/Exception/BaseException.js.map +1 -0
  5. package/dist/es/Exception/DownloadException.js +40 -0
  6. package/dist/es/Exception/DownloadException.js.map +1 -0
  7. package/dist/es/Exception/HttpException.js +50 -0
  8. package/dist/es/Exception/HttpException.js.map +1 -0
  9. package/dist/es/Exception/InitException.js +49 -0
  10. package/dist/es/Exception/InitException.js.map +1 -0
  11. package/dist/es/Exception/UploadException.js +50 -0
  12. package/dist/es/Exception/UploadException.js.map +1 -0
  13. package/dist/es/index.d.ts +867 -0
  14. package/dist/es/index.js +162 -0
  15. package/dist/es/index.js.map +1 -0
  16. package/dist/es/modules/Kodo/defaultUpload.js +38 -0
  17. package/dist/es/modules/Kodo/defaultUpload.js.map +1 -0
  18. package/dist/es/modules/Kodo/index.js +8 -0
  19. package/dist/es/modules/Kodo/index.js.map +1 -0
  20. package/dist/es/modules/Local/index.js +31 -0
  21. package/dist/es/modules/Local/index.js.map +1 -0
  22. package/dist/es/modules/MinIO/MultipartUpload.js +335 -0
  23. package/dist/es/modules/MinIO/MultipartUpload.js.map +1 -0
  24. package/dist/es/modules/MinIO/STSUpload.js +10 -0
  25. package/dist/es/modules/MinIO/STSUpload.js.map +1 -0
  26. package/dist/es/modules/MinIO/defaultUpload.js +124 -0
  27. package/dist/es/modules/MinIO/defaultUpload.js.map +1 -0
  28. package/dist/es/modules/MinIO/index.js +16 -0
  29. package/dist/es/modules/MinIO/index.js.map +1 -0
  30. package/dist/es/modules/OBS/MultipartUpload.js +269 -0
  31. package/dist/es/modules/OBS/MultipartUpload.js.map +1 -0
  32. package/dist/es/modules/OBS/STSUpload.js +71 -0
  33. package/dist/es/modules/OBS/STSUpload.js.map +1 -0
  34. package/dist/es/modules/OBS/defaultUpload.js +59 -0
  35. package/dist/es/modules/OBS/defaultUpload.js.map +1 -0
  36. package/dist/es/modules/OBS/index.js +16 -0
  37. package/dist/es/modules/OBS/index.js.map +1 -0
  38. package/dist/es/modules/OBS/utils/index.js +25 -0
  39. package/dist/es/modules/OBS/utils/index.js.map +1 -0
  40. package/dist/es/modules/OSS/MultipartUpload.js +232 -0
  41. package/dist/es/modules/OSS/MultipartUpload.js.map +1 -0
  42. package/dist/es/modules/OSS/STSUpload.js +48 -0
  43. package/dist/es/modules/OSS/STSUpload.js.map +1 -0
  44. package/dist/es/modules/OSS/defaultUpload.js +53 -0
  45. package/dist/es/modules/OSS/defaultUpload.js.map +1 -0
  46. package/dist/es/modules/OSS/index.js +16 -0
  47. package/dist/es/modules/OSS/index.js.map +1 -0
  48. package/dist/es/modules/OSS/utils/helper.js +137 -0
  49. package/dist/es/modules/OSS/utils/helper.js.map +1 -0
  50. package/dist/es/modules/OSS/utils/signature.js +96 -0
  51. package/dist/es/modules/OSS/utils/signature.js.map +1 -0
  52. package/dist/es/modules/TOS/MultipartUpload.js +288 -0
  53. package/dist/es/modules/TOS/MultipartUpload.js.map +1 -0
  54. package/dist/es/modules/TOS/STSUpload.js +92 -0
  55. package/dist/es/modules/TOS/STSUpload.js.map +1 -0
  56. package/dist/es/modules/TOS/defaultUpload.js +65 -0
  57. package/dist/es/modules/TOS/defaultUpload.js.map +1 -0
  58. package/dist/es/modules/TOS/index.js +16 -0
  59. package/dist/es/modules/TOS/index.js.map +1 -0
  60. package/dist/es/modules/TOS/utils/TosClientError.js +15 -0
  61. package/dist/es/modules/TOS/utils/TosClientError.js.map +1 -0
  62. package/dist/es/modules/TOS/utils/index.js +38 -0
  63. package/dist/es/modules/TOS/utils/index.js.map +1 -0
  64. package/dist/es/modules/TOS/utils/signatureV4.js +269 -0
  65. package/dist/es/modules/TOS/utils/signatureV4.js.map +1 -0
  66. package/dist/es/modules/TOS/utils/signatureV4Credentials.js +21 -0
  67. package/dist/es/modules/TOS/utils/signatureV4Credentials.js.map +1 -0
  68. package/dist/es/modules/TOS/utils/universal/crypto.browser.js +56 -0
  69. package/dist/es/modules/TOS/utils/universal/crypto.browser.js.map +1 -0
  70. package/dist/es/modules/TOS/utils/utils.js +18 -0
  71. package/dist/es/modules/TOS/utils/utils.js.map +1 -0
  72. package/dist/es/modules/index.js +20 -0
  73. package/dist/es/modules/index.js.map +1 -0
  74. package/dist/es/types/Kodo.js +1 -0
  75. package/dist/es/types/Kodo.js.map +1 -0
  76. package/dist/es/types/Local.js +1 -0
  77. package/dist/es/types/Local.js.map +1 -0
  78. package/dist/es/types/MinIO.js +1 -0
  79. package/dist/es/types/MinIO.js.map +1 -0
  80. package/dist/es/types/OBS.js +8 -0
  81. package/dist/es/types/OBS.js.map +1 -0
  82. package/dist/es/types/OSS.js +1 -0
  83. package/dist/es/types/OSS.js.map +1 -0
  84. package/dist/es/types/TOS.js +1 -0
  85. package/dist/es/types/TOS.js.map +1 -0
  86. package/dist/es/types/error.js +1 -0
  87. package/dist/es/types/error.js.map +1 -0
  88. package/dist/es/types/index.js +13 -0
  89. package/dist/es/types/index.js.map +1 -0
  90. package/dist/es/types/log.js +1 -0
  91. package/dist/es/types/log.js.map +1 -0
  92. package/dist/es/types/request.js +1 -0
  93. package/dist/es/types/request.js.map +1 -0
  94. package/dist/es/utils/EventEmitter.js +32 -0
  95. package/dist/es/utils/EventEmitter.js.map +1 -0
  96. package/dist/es/utils/UploadManger.js +276 -0
  97. package/dist/es/utils/UploadManger.js.map +1 -0
  98. package/dist/es/utils/UploadTask.js +13 -0
  99. package/dist/es/utils/UploadTask.js.map +1 -0
  100. package/dist/es/utils/checkDataFormat.js +41 -0
  101. package/dist/es/utils/checkDataFormat.js.map +1 -0
  102. package/dist/es/utils/global.js +83 -0
  103. package/dist/es/utils/global.js.map +1 -0
  104. package/dist/es/utils/index.js +20 -0
  105. package/dist/es/utils/index.js.map +1 -0
  106. package/dist/es/utils/logPubSub.js +59 -0
  107. package/dist/es/utils/logPubSub.js.map +1 -0
  108. package/dist/es/utils/multipart.js +159 -0
  109. package/dist/es/utils/multipart.js.map +1 -0
  110. package/dist/es/utils/nanoid.js +10 -0
  111. package/dist/es/utils/nanoid.js.map +1 -0
  112. package/dist/es/utils/regExpUtil.js +21 -0
  113. package/dist/es/utils/regExpUtil.js.map +1 -0
  114. package/dist/es/utils/request.js +234 -0
  115. package/dist/es/utils/request.js.map +1 -0
  116. package/dist/es/utils/response.js +20 -0
  117. package/dist/es/utils/response.js.map +1 -0
  118. package/dist/index.d.ts +867 -0
  119. package/dist/index.js +60913 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/index.min.js +130 -0
  122. package/dist/index.min.js.map +1 -0
  123. package/dist/lib/Exception/BaseException.js +37 -0
  124. package/dist/lib/Exception/BaseException.js.map +1 -0
  125. package/dist/lib/Exception/DownloadException.js +65 -0
  126. package/dist/lib/Exception/DownloadException.js.map +1 -0
  127. package/dist/lib/Exception/HttpException.js +75 -0
  128. package/dist/lib/Exception/HttpException.js.map +1 -0
  129. package/dist/lib/Exception/InitException.js +73 -0
  130. package/dist/lib/Exception/InitException.js.map +1 -0
  131. package/dist/lib/Exception/UploadException.js +75 -0
  132. package/dist/lib/Exception/UploadException.js.map +1 -0
  133. package/dist/lib/index.d.cts +867 -0
  134. package/dist/lib/index.js +203 -0
  135. package/dist/lib/index.js.map +1 -0
  136. package/dist/lib/modules/Kodo/defaultUpload.js +61 -0
  137. package/dist/lib/modules/Kodo/defaultUpload.js.map +1 -0
  138. package/dist/lib/modules/Kodo/index.js +28 -0
  139. package/dist/lib/modules/Kodo/index.js.map +1 -0
  140. package/dist/lib/modules/Local/index.js +50 -0
  141. package/dist/lib/modules/Local/index.js.map +1 -0
  142. package/dist/lib/modules/MinIO/MultipartUpload.js +357 -0
  143. package/dist/lib/modules/MinIO/MultipartUpload.js.map +1 -0
  144. package/dist/lib/modules/MinIO/STSUpload.js +33 -0
  145. package/dist/lib/modules/MinIO/STSUpload.js.map +1 -0
  146. package/dist/lib/modules/MinIO/defaultUpload.js +158 -0
  147. package/dist/lib/modules/MinIO/defaultUpload.js.map +1 -0
  148. package/dist/lib/modules/MinIO/index.js +35 -0
  149. package/dist/lib/modules/MinIO/index.js.map +1 -0
  150. package/dist/lib/modules/OBS/MultipartUpload.js +296 -0
  151. package/dist/lib/modules/OBS/MultipartUpload.js.map +1 -0
  152. package/dist/lib/modules/OBS/STSUpload.js +104 -0
  153. package/dist/lib/modules/OBS/STSUpload.js.map +1 -0
  154. package/dist/lib/modules/OBS/defaultUpload.js +88 -0
  155. package/dist/lib/modules/OBS/defaultUpload.js.map +1 -0
  156. package/dist/lib/modules/OBS/index.js +45 -0
  157. package/dist/lib/modules/OBS/index.js.map +1 -0
  158. package/dist/lib/modules/OBS/utils/index.js +49 -0
  159. package/dist/lib/modules/OBS/utils/index.js.map +1 -0
  160. package/dist/lib/modules/OSS/MultipartUpload.js +259 -0
  161. package/dist/lib/modules/OSS/MultipartUpload.js.map +1 -0
  162. package/dist/lib/modules/OSS/STSUpload.js +71 -0
  163. package/dist/lib/modules/OSS/STSUpload.js.map +1 -0
  164. package/dist/lib/modules/OSS/defaultUpload.js +76 -0
  165. package/dist/lib/modules/OSS/defaultUpload.js.map +1 -0
  166. package/dist/lib/modules/OSS/index.js +35 -0
  167. package/dist/lib/modules/OSS/index.js.map +1 -0
  168. package/dist/lib/modules/OSS/utils/helper.js +173 -0
  169. package/dist/lib/modules/OSS/utils/helper.js.map +1 -0
  170. package/dist/lib/modules/OSS/utils/signature.js +132 -0
  171. package/dist/lib/modules/OSS/utils/signature.js.map +1 -0
  172. package/dist/lib/modules/TOS/MultipartUpload.js +315 -0
  173. package/dist/lib/modules/TOS/MultipartUpload.js.map +1 -0
  174. package/dist/lib/modules/TOS/STSUpload.js +125 -0
  175. package/dist/lib/modules/TOS/STSUpload.js.map +1 -0
  176. package/dist/lib/modules/TOS/defaultUpload.js +94 -0
  177. package/dist/lib/modules/TOS/defaultUpload.js.map +1 -0
  178. package/dist/lib/modules/TOS/index.js +45 -0
  179. package/dist/lib/modules/TOS/index.js.map +1 -0
  180. package/dist/lib/modules/TOS/utils/TosClientError.js +34 -0
  181. package/dist/lib/modules/TOS/utils/TosClientError.js.map +1 -0
  182. package/dist/lib/modules/TOS/utils/index.js +64 -0
  183. package/dist/lib/modules/TOS/utils/index.js.map +1 -0
  184. package/dist/lib/modules/TOS/utils/signatureV4.js +294 -0
  185. package/dist/lib/modules/TOS/utils/signatureV4.js.map +1 -0
  186. package/dist/lib/modules/TOS/utils/signatureV4Credentials.js +44 -0
  187. package/dist/lib/modules/TOS/utils/signatureV4Credentials.js.map +1 -0
  188. package/dist/lib/modules/TOS/utils/universal/crypto.browser.js +93 -0
  189. package/dist/lib/modules/TOS/utils/universal/crypto.browser.js.map +1 -0
  190. package/dist/lib/modules/TOS/utils/utils.js +42 -0
  191. package/dist/lib/modules/TOS/utils/utils.js.map +1 -0
  192. package/dist/lib/modules/index.js +50 -0
  193. package/dist/lib/modules/index.js.map +1 -0
  194. package/dist/lib/types/Kodo.js +17 -0
  195. package/dist/lib/types/Kodo.js.map +1 -0
  196. package/dist/lib/types/Local.js +17 -0
  197. package/dist/lib/types/Local.js.map +1 -0
  198. package/dist/lib/types/MinIO.js +17 -0
  199. package/dist/lib/types/MinIO.js.map +1 -0
  200. package/dist/lib/types/OBS.js +32 -0
  201. package/dist/lib/types/OBS.js.map +1 -0
  202. package/dist/lib/types/OSS.js +17 -0
  203. package/dist/lib/types/OSS.js.map +1 -0
  204. package/dist/lib/types/TOS.js +17 -0
  205. package/dist/lib/types/TOS.js.map +1 -0
  206. package/dist/lib/types/error.js +17 -0
  207. package/dist/lib/types/error.js.map +1 -0
  208. package/dist/lib/types/index.js +37 -0
  209. package/dist/lib/types/index.js.map +1 -0
  210. package/dist/lib/types/log.js +17 -0
  211. package/dist/lib/types/log.js.map +1 -0
  212. package/dist/lib/types/request.js +17 -0
  213. package/dist/lib/types/request.js.map +1 -0
  214. package/dist/lib/utils/EventEmitter.js +51 -0
  215. package/dist/lib/utils/EventEmitter.js.map +1 -0
  216. package/dist/lib/utils/UploadManger.js +309 -0
  217. package/dist/lib/utils/UploadManger.js.map +1 -0
  218. package/dist/lib/utils/UploadTask.js +32 -0
  219. package/dist/lib/utils/UploadTask.js.map +1 -0
  220. package/dist/lib/utils/checkDataFormat.js +70 -0
  221. package/dist/lib/utils/checkDataFormat.js.map +1 -0
  222. package/dist/lib/utils/global.js +106 -0
  223. package/dist/lib/utils/global.js.map +1 -0
  224. package/dist/lib/utils/index.js +44 -0
  225. package/dist/lib/utils/index.js.map +1 -0
  226. package/dist/lib/utils/logPubSub.js +78 -0
  227. package/dist/lib/utils/logPubSub.js.map +1 -0
  228. package/dist/lib/utils/multipart.js +197 -0
  229. package/dist/lib/utils/multipart.js.map +1 -0
  230. package/dist/lib/utils/nanoid.js +33 -0
  231. package/dist/lib/utils/nanoid.js.map +1 -0
  232. package/dist/lib/utils/regExpUtil.js +44 -0
  233. package/dist/lib/utils/regExpUtil.js.map +1 -0
  234. package/dist/lib/utils/request.js +264 -0
  235. package/dist/lib/utils/request.js.map +1 -0
  236. package/dist/lib/utils/response.js +43 -0
  237. package/dist/lib/utils/response.js.map +1 -0
  238. package/dist/package.json +120 -0
  239. package/package.json +120 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/OBS/index.ts"],"sourcesContent":["import type {\n\tPlatformMultipartUploadOption,\n\tPlatformRequest,\n\tPlatformSimpleUploadOption,\n} from \"../../types\"\nimport type { OBS } from \"../../types/OBS\"\nimport { MultipartUpload } from \"./MultipartUpload\"\nimport { STSUpload } from \"./STSUpload\"\nimport defaultUpload from \"./defaultUpload\"\n\nconst upload: PlatformRequest<\n\tOBS.AuthParams | OBS.STSAuthParams,\n\tPlatformSimpleUploadOption | PlatformMultipartUploadOption\n> = (file, key, params, option) => {\n\tif (Object.prototype.hasOwnProperty.call(params, \"credentials\")) {\n\t\treturn MultipartUpload(file, key, <OBS.STSAuthParams>params, option)\n\t}\n\treturn defaultUpload(file, key, <OBS.AuthParams>params, option)\n}\n\nexport default { upload, defaultUpload, MultipartUpload, STSUpload }\n\n\n\n\n"],"mappings":";;AAMA,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAC1B,OAAO,mBAAmB;AAE1B,MAAM,SAGF,wBAAC,MAAM,KAAK,QAAQ,WAAW;AAClC,MAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,aAAa,GAAG;AAChE,WAAO,gBAAgB,MAAM,KAAwB,QAAQ,MAAM;AAAA,EACpE;AACA,SAAO,cAAc,MAAM,KAAqB,QAAQ,MAAM;AAC/D,GALI;AAOJ,IAAO,cAAQ,EAAE,QAAQ,eAAe,iBAAiB,UAAU;","names":[]}
@@ -0,0 +1,25 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ const OBS_MIN_PART_SIZE = 100 * 1024;
4
+ function genCompleteMultipartUploadXMLData(completeParts) {
5
+ const xmlData = document.createElementNS("", "Data");
6
+ const CompleteMultipartUpload = document.createElementNS("", "CompleteMultipartUpload");
7
+ completeParts.forEach((item) => {
8
+ const Part = document.createElementNS("", "Part");
9
+ const PartNumber = document.createElementNS("", "PartNumber");
10
+ const ETag = document.createElementNS("", "ETag");
11
+ PartNumber.innerHTML = `${item.PartNumber}`;
12
+ ETag.innerHTML = item.ETag.replace('"', "").replace('"', "");
13
+ Part.appendChild(PartNumber);
14
+ Part.appendChild(ETag);
15
+ CompleteMultipartUpload.appendChild(Part);
16
+ });
17
+ xmlData.appendChild(CompleteMultipartUpload);
18
+ return xmlData.innerHTML;
19
+ }
20
+ __name(genCompleteMultipartUploadXMLData, "genCompleteMultipartUploadXMLData");
21
+ export {
22
+ OBS_MIN_PART_SIZE,
23
+ genCompleteMultipartUploadXMLData
24
+ };
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/modules/OBS/utils/index.ts"],"sourcesContent":["export const OBS_MIN_PART_SIZE = 100 * 1024\n\nexport function genCompleteMultipartUploadXMLData(\n\tcompleteParts: { PartNumber: number; ETag: string }[],\n) {\n\tconst xmlData = document.createElementNS(\"\", \"Data\")\n\tconst CompleteMultipartUpload = document.createElementNS(\"\", \"CompleteMultipartUpload\")\n\tcompleteParts.forEach((item) => {\n\t\tconst Part = document.createElementNS(\"\", \"Part\")\n\t\tconst PartNumber = document.createElementNS(\"\", \"PartNumber\")\n\t\tconst ETag = document.createElementNS(\"\", \"ETag\")\n\t\tPartNumber.innerHTML = `${item.PartNumber}`\n\t\tETag.innerHTML = item.ETag.replace('\"', \"\").replace('\"', \"\")\n\t\tPart.appendChild(PartNumber)\n\t\tPart.appendChild(ETag)\n\t\tCompleteMultipartUpload.appendChild(Part)\n\t})\n\n\txmlData.appendChild(CompleteMultipartUpload)\n\n\treturn xmlData.innerHTML\n}\n\n\n\n\n"],"mappings":";;AAAQ,MAAM,oBAAoB,MAAM;AAEjC,SAAS,kCACf,eACC;AACD,QAAM,UAAU,SAAS,gBAAgB,IAAI,MAAM;AACnD,QAAM,0BAA0B,SAAS,gBAAgB,IAAI,yBAAyB;AACtF,gBAAc,QAAQ,CAAC,SAAS;AAC/B,UAAM,OAAO,SAAS,gBAAgB,IAAI,MAAM;AAChD,UAAM,aAAa,SAAS,gBAAgB,IAAI,YAAY;AAC5D,UAAM,OAAO,SAAS,gBAAgB,IAAI,MAAM;AAChD,eAAW,YAAY,GAAG,KAAK,UAAU;AACzC,SAAK,YAAY,KAAK,KAAK,QAAQ,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE;AAC3D,SAAK,YAAY,UAAU;AAC3B,SAAK,YAAY,IAAI;AACrB,4BAAwB,YAAY,IAAI;AAAA,EACzC,CAAC;AAED,UAAQ,YAAY,uBAAuB;AAE3C,SAAO,QAAQ;AAChB;AAnBgB;","names":[]}
@@ -0,0 +1,232 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import mime from "mime";
4
+ import { InitException, InitExceptionCode } from "../../Exception/InitException";
5
+ import { UploadException, UploadExceptionCode } from "../../Exception/UploadException";
6
+ import { createRequest, omit, uploadPart } from "./utils/helper";
7
+ import { isBlob, isFile } from "../../utils/checkDataFormat";
8
+ import {
9
+ createBuffer,
10
+ divideParts,
11
+ getPartSize,
12
+ initCheckpoint,
13
+ parallelSend
14
+ } from "../../utils/multipart";
15
+ import { parseExtname } from "../../utils/regExpUtil";
16
+ import { request } from "../../utils/request";
17
+ import { normalizeSuccessResponse } from "../../utils/response";
18
+ import { STSUpload } from "./STSUpload";
19
+ async function initMultipartUpload(name, params, option) {
20
+ const result = await request({
21
+ ...createRequest(
22
+ {
23
+ ...params,
24
+ method: "POST",
25
+ subRes: "uploads",
26
+ object: name
27
+ },
28
+ option
29
+ ),
30
+ xmlResponse: true
31
+ });
32
+ const { data } = result;
33
+ return {
34
+ res: result,
35
+ bucket: data.InitiateMultipartUploadResult.Bucket,
36
+ name: data.InitiateMultipartUploadResult.Key,
37
+ UploadId: data.InitiateMultipartUploadResult.UploadId
38
+ };
39
+ }
40
+ __name(initMultipartUpload, "initMultipartUpload");
41
+ async function completeMultipartUpload(name, UploadId, parts, params, options) {
42
+ const completeParts = parts.concat().sort((a, b) => a.number - b.number).filter((item, index, arr) => !index || item.number !== arr[index - 1].number);
43
+ let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<CompleteMultipartUpload>\n';
44
+ for (let i = 0; i < completeParts.length; i += 1) {
45
+ const p = completeParts[i];
46
+ xml += "<Part>\n";
47
+ xml += `<PartNumber>${p.number}</PartNumber>
48
+ `;
49
+ xml += `<ETag>${p.etag}</ETag>
50
+ `;
51
+ xml += "</Part>\n";
52
+ }
53
+ xml += "</CompleteMultipartUpload>";
54
+ const opt = { ...options, mime: "xml" };
55
+ opt.headers = omit(opt.headers, ["x-oss-server-side-encryption", "x-oss-storage-class"]);
56
+ const configParams = {
57
+ ...params,
58
+ method: "POST",
59
+ subRes: { UploadId },
60
+ content: xml
61
+ };
62
+ const {
63
+ data: { path, platform },
64
+ headers
65
+ } = await request({
66
+ ...createRequest(configParams, opt)
67
+ });
68
+ if (options.progress) {
69
+ const { partSize } = opt;
70
+ options.progress(100, parts.length * partSize, parts.length * partSize, null);
71
+ }
72
+ return normalizeSuccessResponse(path, platform, headers);
73
+ }
74
+ __name(completeMultipartUpload, "completeMultipartUpload");
75
+ async function resumeMultipart(checkpoint, params, options) {
76
+ const { file, fileSize, partSize, UploadId, doneParts, name } = checkpoint;
77
+ const internalDoneParts = doneParts.length > 0 ? [...doneParts] : [];
78
+ const partOffs = divideParts(fileSize, partSize);
79
+ const numParts = partOffs.length;
80
+ let multipartFinish = false;
81
+ const opt = { ...options, partSize };
82
+ const uploadPartJob = /* @__PURE__ */ __name((partNo) => (
83
+ // eslint-disable-next-line no-async-promise-executor
84
+ new Promise(async (resolve, reject) => {
85
+ try {
86
+ const pi = partOffs[partNo - 1];
87
+ const content = await createBuffer(file, pi.start, pi.end);
88
+ const data = {
89
+ content,
90
+ size: pi.end - pi.start
91
+ };
92
+ const result = await uploadPart(name, UploadId, partNo, data, params, {
93
+ ...opt
94
+ });
95
+ if (!multipartFinish) {
96
+ checkpoint.doneParts.push({
97
+ number: partNo,
98
+ etag: result.etag
99
+ });
100
+ if (options.progress) {
101
+ options.progress(
102
+ doneParts.length / (numParts + 1) * 100,
103
+ doneParts.length * partSize,
104
+ fileSize,
105
+ checkpoint
106
+ );
107
+ }
108
+ resolve({
109
+ number: partNo,
110
+ etag: result.etag
111
+ });
112
+ } else {
113
+ resolve();
114
+ }
115
+ } catch (err) {
116
+ const tempErr = new Error();
117
+ tempErr.name = err.name;
118
+ tempErr.message = err.message;
119
+ tempErr.stack = err.stack;
120
+ tempErr.partNum = partNo;
121
+ tempErr.status = err.status;
122
+ reject(tempErr);
123
+ }
124
+ })
125
+ ), "uploadPartJob");
126
+ const all = Array.from(new Array(numParts), (_, i) => i + 1);
127
+ const done = internalDoneParts.map((p) => p.number);
128
+ const todo = all.filter((p) => done.indexOf(p) < 0);
129
+ const defaultParallel = 5;
130
+ const parallel = opt.parallel || defaultParallel;
131
+ const jobErr = await parallelSend(
132
+ todo,
133
+ parallel,
134
+ (value) => new Promise((resolve, reject) => {
135
+ uploadPartJob(value).then((result) => {
136
+ if (result) {
137
+ internalDoneParts.push(result);
138
+ }
139
+ resolve();
140
+ }).catch((err) => {
141
+ reject(err);
142
+ });
143
+ })
144
+ );
145
+ multipartFinish = true;
146
+ if (jobErr && jobErr.length > 0) {
147
+ const error = jobErr[0];
148
+ if (error.status === 5001 || error.status === 5002) {
149
+ throw error;
150
+ }
151
+ throw new UploadException(
152
+ UploadExceptionCode.UPLOAD_MULTIPART_ERROR,
153
+ error.message.replace("[Uploader] ", ""),
154
+ error.partNum
155
+ );
156
+ }
157
+ return completeMultipartUpload(name, UploadId, internalDoneParts, params, opt);
158
+ }
159
+ __name(resumeMultipart, "resumeMultipart");
160
+ const MultipartUpload = /* @__PURE__ */ __name(async (file, key, params, option) => {
161
+ const options = { ...option };
162
+ const { region, bucket, dir, access_key_secret, access_key_id, sts_token, callback } = params;
163
+ if (!region || !bucket || !dir || !access_key_secret || !access_key_id || !sts_token || !callback) {
164
+ throw new InitException(
165
+ InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
166
+ "aliyun",
167
+ "region",
168
+ "bucket",
169
+ "dir",
170
+ "access_key_id",
171
+ "access_key_secret",
172
+ "sts_token",
173
+ "callback"
174
+ );
175
+ }
176
+ const name = `${dir}${key}`;
177
+ const configParams = {
178
+ bucket,
179
+ region,
180
+ object: name,
181
+ accessKeyId: access_key_id,
182
+ accessKeySecret: access_key_secret,
183
+ stsToken: sts_token,
184
+ callback,
185
+ taskId: option.taskId
186
+ };
187
+ if (!options.mime) {
188
+ if (isFile(file)) {
189
+ options.mime = file.type;
190
+ } else if (isBlob(file)) {
191
+ options.mime = file.type;
192
+ } else {
193
+ options.mime = mime.getType(parseExtname(name));
194
+ }
195
+ }
196
+ if (options.checkpoint && options.checkpoint.UploadId) {
197
+ if (file && isFile(file))
198
+ options.checkpoint.file = file;
199
+ if (file)
200
+ options.checkpoint.file = file;
201
+ return resumeMultipart(options.checkpoint, configParams, options);
202
+ }
203
+ const minPartSize = 100 * 1024;
204
+ options.headers = options.headers || {};
205
+ const fileSize = file.size;
206
+ if (fileSize < minPartSize) {
207
+ return STSUpload(file, key, params, { ...options });
208
+ }
209
+ if (options.partSize && !(parseInt(String(options.partSize), 10) === options.partSize)) {
210
+ throw new InitException(InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_MUST_INT);
211
+ }
212
+ if (options.partSize && options.partSize < minPartSize) {
213
+ throw new InitException(InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_IS_SMALL, minPartSize);
214
+ }
215
+ const initResult = await initMultipartUpload(name, configParams, {
216
+ mime: options.mime,
217
+ headers: options.headers
218
+ });
219
+ const { UploadId } = initResult;
220
+ const partSize = getPartSize(fileSize, options.partSize);
221
+ const checkpoint = initCheckpoint(file, name, fileSize, partSize, UploadId);
222
+ if (options && options.progress) {
223
+ options.progress(0, 0, fileSize, checkpoint);
224
+ }
225
+ return resumeMultipart(checkpoint, configParams, {
226
+ ...options
227
+ });
228
+ }, "MultipartUpload");
229
+ export {
230
+ MultipartUpload
231
+ };
232
+ //# sourceMappingURL=MultipartUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/OSS/MultipartUpload.ts"],"sourcesContent":["import mime from \"mime\"\nimport { InitException, InitExceptionCode } from \"../../Exception/InitException\"\nimport { UploadException, UploadExceptionCode } from \"../../Exception/UploadException\"\nimport type { MethodType, PlatformMultipartUploadOption, PlatformRequest } from \"../../types\"\nimport type { OSS } from \"../../types/OSS\"\nimport type { ErrorType } from \"../../types/error\"\nimport { createRequest, omit, uploadPart } from \"./utils/helper\"\nimport { isBlob, isFile } from \"../../utils/checkDataFormat\"\nimport {\n\tcreateBuffer,\n\tdivideParts,\n\tgetPartSize,\n\tinitCheckpoint,\n\tparallelSend,\n} from \"../../utils/multipart\"\nimport { parseExtname } from \"../../utils/regExpUtil\"\nimport { request } from \"../../utils/request\"\nimport { normalizeSuccessResponse } from \"../../utils/response\"\nimport { STSUpload } from \"./STSUpload\"\n\n/**\n * @description: Initialize multipart upload, used to get UploadId from OSS service\n * @param {string} name filename\n * @param {OSS.MultipartUploadParams} params upload credentials and other fields\n * @param {OSS.InitMultipartUploadOption} option configuration fields\n */\nasync function initMultipartUpload(\n\tname: string,\n\tparams: OSS.MultipartUploadParams,\n\toption: OSS.InitMultipartUploadOption,\n) {\n\tconst result = await request<OSS.InitMultipartUploadResponse>({\n\t\t...createRequest(\n\t\t\t{\n\t\t\t\t...params,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tsubRes: \"uploads\",\n\t\t\t\tobject: name,\n\t\t\t},\n\t\t\toption,\n\t\t),\n\t\txmlResponse: true,\n\t})\n\n\tconst { data } = result\n\treturn {\n\t\tres: result,\n\t\tbucket: data.InitiateMultipartUploadResult.Bucket,\n\t\tname: data.InitiateMultipartUploadResult.Key,\n\t\tUploadId: data.InitiateMultipartUploadResult.UploadId,\n\t}\n}\n\n/**\n * @description: After multipart upload is done, call this to complete it\n * @param {String} name File path name\n * @param {String} UploadId Upload ID\n * @param {Array} parts Part info\n * {Integer} Part number\n * {String} Part etag\n * @param params\n * @param {OSS.MultipartUploadParams} options Upload credential and related info\n * @param {OSS.CompleteMultipartUploadOptions} options Configuration field\n */\nasync function completeMultipartUpload(\n\t// @ts-ignore\n\tname: string,\n\tUploadId: string,\n\tparts: Array<{ number: number; etag: string }>,\n\tparams: OSS.MultipartUploadParams,\n\toptions: OSS.CompleteMultipartUploadOptions,\n) {\n\tconst completeParts = parts\n\t\t.concat()\n\t\t.sort((a, b) => a.number - b.number)\n\t\t.filter((item, index, arr) => !index || item.number !== arr[index - 1].number)\n\tlet xml = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<CompleteMultipartUpload>\\n'\n\tfor (let i = 0; i < completeParts.length; i += 1) {\n\t\tconst p = completeParts[i]\n\t\txml += \"<Part>\\n\"\n\t\txml += `<PartNumber>${p.number}</PartNumber>\\n`\n\t\txml += `<ETag>${p.etag}</ETag>\\n`\n\t\txml += \"</Part>\\n\"\n\t}\n\txml += \"</CompleteMultipartUpload>\"\n\tconst opt = { ...options, mime: \"xml\" }\n\topt.headers = omit(opt.headers, [\"x-oss-server-side-encryption\", \"x-oss-storage-class\"])\n\tconst configParams = {\n\t\t...params,\n\t\tmethod: <MethodType>\"POST\",\n\t\tsubRes: { UploadId },\n\t\tcontent: xml,\n\t}\n\t// if (!(options.headers && options.headers[\"x-oss-callback\"])) {\n\t// \t// eslint-disable-next-line no-param-reassign\n\t// \tparams.xmlResponse = true\n\t// }\n\tconst {\n\t\tdata: { path, platform },\n\t\theaders,\n\t} = await request<OSS.CompleteMultipartUploadResponse>({\n\t\t...createRequest(configParams, opt),\n\t})\n\tif (options.progress) {\n\t\tconst { partSize } = opt\n\t\toptions.progress(100, parts.length * partSize, parts.length * partSize, null)\n\t}\n\treturn normalizeSuccessResponse(path, platform, headers)\n}\n\n/**\n * @description: Used for multipart upload or ResumeCheckpoint resume\n * @param {Object} checkpoint the File upload checkpoint info\n * @param {OSS.MultipartUploadParams} params Upload credential info\n * @param {OSS.MultipartUploadOption} options Configuration field\n */\nasync function resumeMultipart(\n\tcheckpoint: OSS.Checkpoint,\n\tparams: OSS.MultipartUploadParams,\n\toptions: OSS.ResumeMultipartOption,\n) {\n\tconst { file, fileSize, partSize, UploadId, doneParts, name } = checkpoint\n\tconst internalDoneParts = doneParts.length > 0 ? [...doneParts] : []\n\tconst partOffs = divideParts(fileSize, partSize)\n\tconst numParts = partOffs.length\n\tlet multipartFinish = false\n\tconst opt = { ...options, partSize }\n\tconst uploadPartJob = (partNo: number): Promise<void | OSS.DonePart> =>\n\t\t// eslint-disable-next-line no-async-promise-executor\n\t\tnew Promise(async (resolve, reject) => {\n\t\t\ttry {\n\t\t\t\tconst pi = partOffs[partNo - 1]\n\t\t\t\tconst content = await createBuffer(file, pi.start, pi.end)\n\t\t\t\tconst data: OSS.PartInfo = {\n\t\t\t\t\tcontent,\n\t\t\t\t\tsize: pi.end - pi.start,\n\t\t\t\t}\n\n\t\t\t\tconst result = await uploadPart(name, UploadId, partNo, data, params, {\n\t\t\t\t\t...opt,\n\t\t\t\t})\n\n\t\t\t\tif (!multipartFinish) {\n\t\t\t\t\tcheckpoint.doneParts.push({\n\t\t\t\t\t\tnumber: partNo,\n\t\t\t\t\t\tetag: result.etag,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (options.progress) {\n\t\t\t\t\t\toptions.progress(\n\t\t\t\t\t\t\t(doneParts.length / (numParts + 1)) * 100,\n\t\t\t\t\t\t\tdoneParts.length * partSize,\n\t\t\t\t\t\t\tfileSize,\n\t\t\t\t\t\t\tcheckpoint,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tnumber: partNo,\n\t\t\t\t\t\tetag: result.etag,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tresolve()\n\t\t\t\t}\n\t\t\t} catch (err: any) {\n\t\t\t\tconst tempErr = new Error() as unknown as ErrorType.UploadPartException\n\t\t\t\ttempErr.name = err.name\n\t\t\t\ttempErr.message = err.message\n\t\t\t\ttempErr.stack = err.stack\n\t\t\t\ttempErr.partNum = partNo\n\t\t\t\ttempErr.status = err.status\n\n\t\t\t\treject(tempErr)\n\t\t\t}\n\t\t})\n\n\tconst all = Array.from(new Array(numParts), (_, i) => i + 1)\n\tconst done = internalDoneParts.map((p) => p.number)\n\tconst todo = all.filter((p) => done.indexOf(p) < 0)\n\tconst defaultParallel = 5\n\tconst parallel = opt.parallel || defaultParallel\n\t// upload in parallel\n\tconst jobErr: ErrorType.UploadPartException[] = await parallelSend(\n\t\ttodo,\n\t\tparallel,\n\t\t(value) =>\n\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\tuploadPartJob(value)\n\t\t\t\t\t.then((result: OSS.DonePart | void) => {\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\tinternalDoneParts.push(result)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t})\n\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t})\n\t\t\t}),\n\t)\n\n\tmultipartFinish = true\n\n\tif (jobErr && jobErr.length > 0) {\n\t\tconst error = jobErr[0]\n\t\t// 5001 Cancel upload, 5002 Pause upload\n\t\tif (error.status === 5001 || error.status === 5002) {\n\t\t\tthrow error as Error\n\t\t}\n\t\tthrow new UploadException(\n\t\t\tUploadExceptionCode.UPLOAD_MULTIPART_ERROR,\n\t\t\terror.message.replace(\"[Uploader] \", \"\"),\n\t\t\terror.partNum,\n\t\t)\n\t}\n\n\treturn completeMultipartUpload(name, UploadId, internalDoneParts, params, opt)\n}\n\n/**\n * @description: Multipart upload/Checkpoint resume\n * @param {File | Blob} file File upload\n * @param {String} key File name\n * @param {OSS.MultipartUploadParams} params Upload credential info\n * @param {OSS.MultipartUploadOption} option Configuration field\n */\nexport const MultipartUpload: PlatformRequest<\n\tOSS.STSAuthParams,\n\tPlatformMultipartUploadOption\n> = async (file, key, params, option) => {\n\tconst options = { ...option }\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tconst { region, bucket, dir, access_key_secret, access_key_id, sts_token, callback } = params\n\n\tif (\n\t\t!region ||\n\t\t!bucket ||\n\t\t!dir ||\n\t\t!access_key_secret ||\n\t\t!access_key_id ||\n\t\t!sts_token ||\n\t\t!callback\n\t) {\n\t\tthrow new InitException(\n\t\t\tInitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,\n\t\t\t\"aliyun\",\n\t\t\t\"region\",\n\t\t\t\"bucket\",\n\t\t\t\"dir\",\n\t\t\t\"access_key_id\",\n\t\t\t\"access_key_secret\",\n\t\t\t\"sts_token\",\n\t\t\t\"callback\",\n\t\t)\n\t}\n\tconst name = `${dir}${key}`\n\t// Configuration parameters\n\tconst configParams: OSS.MultipartUploadParams = {\n\t\tbucket,\n\t\tregion,\n\t\tobject: name,\n\t\taccessKeyId: access_key_id,\n\t\taccessKeySecret: access_key_secret,\n\t\tstsToken: sts_token,\n\t\tcallback,\n\t\ttaskId: option.taskId,\n\t}\n\tif (!options.mime) {\n\t\tif (isFile(file)) {\n\t\t\toptions.mime = file.type\n\t\t} else if (isBlob(file)) {\n\t\t\toptions.mime = file.type\n\t\t} else {\n\t\t\toptions.mime = mime.getType(parseExtname(name))\n\t\t}\n\t}\n\n\tif (options.checkpoint && options.checkpoint.UploadId) {\n\t\tif (file && isFile(file)) options.checkpoint.file = file\n\t\tif (file) options.checkpoint.file = file\n\n\t\treturn resumeMultipart(options.checkpoint, configParams, options)\n\t}\n\n\t// Minimum part size\n\tconst minPartSize = 100 * 1024\n\n\toptions.headers = options.headers || {}\n\n\tconst fileSize = file.size\n\tif (fileSize < minPartSize) {\n\t\treturn STSUpload(file, key, params, { ...options })\n\t}\n\tif (options.partSize && !(parseInt(String(options.partSize), 10) === options.partSize)) {\n\t\tthrow new InitException(InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_MUST_INT)\n\t}\n\n\tif (options.partSize && options.partSize < minPartSize) {\n\t\tthrow new InitException(InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_IS_SMALL, minPartSize)\n\t}\n\n\tconst initResult = await initMultipartUpload(name, configParams, {\n\t\tmime: options.mime,\n\t\theaders: options.headers,\n\t})\n\n\tconst { UploadId } = initResult\n\tconst partSize = getPartSize(fileSize, <number>options.partSize)\n\n\tconst checkpoint: OSS.Checkpoint = initCheckpoint(file, name, fileSize, partSize, UploadId)\n\n\tif (options && options.progress) {\n\t\toptions.progress(0, 0, fileSize, checkpoint)\n\t}\n\n\treturn resumeMultipart(checkpoint, configParams, {\n\t\t...options,\n\t})\n}\n\n\n\n\n"],"mappings":"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","names":[]}
@@ -0,0 +1,48 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { InitException, InitExceptionCode } from "../../Exception/InitException";
4
+ import { PlatformType } from "../../types";
5
+ import { createRequest } from "./utils/helper";
6
+ import { request } from "../../utils/request";
7
+ import { normalizeSuccessResponse } from "../../utils/response";
8
+ const STSUpload = /* @__PURE__ */ __name(async (file, key, params, option) => {
9
+ const { region, bucket, dir, access_key_secret, access_key_id, sts_token, callback } = params;
10
+ if (!region || !bucket || !dir || !access_key_secret || !access_key_id || !sts_token || !callback) {
11
+ throw new InitException(
12
+ InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
13
+ "alien",
14
+ "region",
15
+ "bucket",
16
+ "dir",
17
+ "access_key_secret",
18
+ "access_key_id",
19
+ "sts_token",
20
+ "callback"
21
+ );
22
+ }
23
+ if (file?.size > 5 * 1024 * 1024 * 1024) {
24
+ throw new InitException(InitExceptionCode.UPLOAD_FILE_TO_BIG, key);
25
+ }
26
+ const configParams = {
27
+ ...params,
28
+ method: "PUT",
29
+ content: file,
30
+ object: `${dir}${key}`,
31
+ accessKeyId: access_key_id,
32
+ accessKeySecret: access_key_secret,
33
+ stsToken: sts_token,
34
+ subRes: ""
35
+ };
36
+ return request({
37
+ ...createRequest(configParams, option),
38
+ taskId: option.taskId,
39
+ onProgress: option?.progress ? option.progress : () => {
40
+ }
41
+ }).then(({ headers, data: { path } }) => {
42
+ return normalizeSuccessResponse(path, PlatformType.OSS, headers);
43
+ });
44
+ }, "STSUpload");
45
+ export {
46
+ STSUpload
47
+ };
48
+ //# sourceMappingURL=STSUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/OSS/STSUpload.ts"],"sourcesContent":["import { InitException, InitExceptionCode } from \"../../Exception/InitException\"\nimport type { MethodType, PlatformMultipartUploadOption, PlatformRequest } from \"../../types\"\nimport { PlatformType } from \"../../types\"\nimport type { OSS } from \"../../types/OSS\"\nimport { createRequest } from \"./utils/helper\"\nimport { request } from \"../../utils/request\"\nimport { normalizeSuccessResponse } from \"../../utils/response\"\n\n/**\n * @description: STS upload\n * @param {File | Blob} file File\n * @param {String} key File name\n * @param {OSS.STSAuthParams} params Upload credential info\n * @param {PlatformMultipartUploadOption} option Configuration field\n */\nexport const STSUpload: PlatformRequest<OSS.STSAuthParams, PlatformMultipartUploadOption> = async (\n\tfile,\n\tkey,\n\tparams,\n\toption,\n) => {\n\tconst { region, bucket, dir, access_key_secret, access_key_id, sts_token, callback } = params\n\n\tif (\n\t\t!region ||\n\t\t!bucket ||\n\t\t!dir ||\n\t\t!access_key_secret ||\n\t\t!access_key_id ||\n\t\t!sts_token ||\n\t\t!callback\n\t) {\n\t\tthrow new InitException(\n\t\t\tInitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,\n\t\t\t\"alien\",\n\t\t\t\"region\",\n\t\t\t\"bucket\",\n\t\t\t\"dir\",\n\t\t\t\"access_key_secret\",\n\t\t\t\"access_key_id\",\n\t\t\t\"sts_token\",\n\t\t\t\"callback\",\n\t\t)\n\t}\n\n\t// Aliyun PostObject upload limit 5GB\n\tif (file?.size > 5 * 1024 * 1024 * 1024) {\n\t\tthrow new InitException(InitExceptionCode.UPLOAD_FILE_TO_BIG, key)\n\t}\n\n\tconst configParams = {\n\t\t...params,\n\t\tmethod: <MethodType>\"PUT\",\n\t\tcontent: file,\n\t\tobject: `${dir}${key}`,\n\t\taccessKeyId: access_key_id,\n\t\taccessKeySecret: access_key_secret,\n\t\tstsToken: sts_token,\n\t\tsubRes: \"\",\n\t}\n\n\t// Send request\n\treturn request<OSS.PutResponse>({\n\t\t...createRequest(configParams, option),\n\t\ttaskId: option.taskId,\n\t\tonProgress: option?.progress ? option.progress : () => {},\n\t}).then(({ headers, data: { path } }) => {\n\t\treturn normalizeSuccessResponse(path, PlatformType.OSS, headers)\n\t})\n}\n\n\n\n\n"],"mappings":";;AAAC,SAAS,eAAe,yBAAyB;AAElD,SAAS,oBAAoB;AAE7B,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AACxB,SAAS,gCAAgC;AASlC,MAAM,YAA+E,8BAC3F,MACA,KACA,QACA,WACI;AACJ,QAAM,EAAE,QAAQ,QAAQ,KAAK,mBAAmB,eAAe,WAAW,SAAS,IAAI;AAEvF,MACC,CAAC,UACD,CAAC,UACD,CAAC,OACD,CAAC,qBACD,CAAC,iBACD,CAAC,aACD,CAAC,UACA;AACD,UAAM,IAAI;AAAA,MACT,kBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAGA,MAAI,MAAM,OAAO,IAAI,OAAO,OAAO,MAAM;AACxC,UAAM,IAAI,cAAc,kBAAkB,oBAAoB,GAAG;AAAA,EAClE;AAEA,QAAM,eAAe;AAAA,IACpB,GAAG;AAAA,IACH,QAAoB;AAAA,IACpB,SAAS;AAAA,IACT,QAAQ,GAAG,GAAG,GAAG,GAAG;AAAA,IACpB,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,QAAQ;AAAA,EACT;AAGA,SAAO,QAAyB;AAAA,IAC/B,GAAG,cAAc,cAAc,MAAM;AAAA,IACrC,QAAQ,OAAO;AAAA,IACf,YAAY,QAAQ,WAAW,OAAO,WAAW,MAAM;AAAA,IAAC;AAAA,EACzD,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM;AACxC,WAAO,yBAAyB,MAAM,aAAa,KAAK,OAAO;AAAA,EAChE,CAAC;AACF,GAtD4F;","names":[]}
@@ -0,0 +1,53 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { InitException, InitExceptionCode } from "../../Exception/InitException";
4
+ import { UploadException, UploadExceptionCode } from "../../Exception/UploadException";
5
+ import { PlatformType } from "../../types";
6
+ import { request } from "../../utils/request";
7
+ import { normalizeSuccessResponse } from "../../utils/response";
8
+ const defaultUpload = /* @__PURE__ */ __name((file, key, params, option) => {
9
+ const { policy, accessid, signature, host, dir, callback } = params;
10
+ if (!policy || !accessid || !signature || !host || !dir || !callback) {
11
+ throw new InitException(
12
+ InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
13
+ "aliyun",
14
+ "policy",
15
+ "accessid",
16
+ "signature",
17
+ "host",
18
+ "dir",
19
+ "callback"
20
+ );
21
+ }
22
+ if (file?.size > 5 * 1024 * 1024 * 1024) {
23
+ throw new InitException(InitExceptionCode.UPLOAD_FILE_TO_BIG, key);
24
+ }
25
+ const formData = new FormData();
26
+ formData.append("key", `${dir}${key}`);
27
+ formData.append("policy", policy);
28
+ formData.append("OSSAccessKeyId", accessid);
29
+ formData.append("signature", signature);
30
+ formData.append("success_action_status", "200");
31
+ formData.append("callback", callback);
32
+ formData.append("file", file);
33
+ return request({
34
+ method: "post",
35
+ url: host,
36
+ data: formData,
37
+ headers: option?.headers ? option?.headers : {},
38
+ taskId: option.taskId,
39
+ onProgress: option?.progress ? option.progress : () => {
40
+ },
41
+ fail: (status, reject) => {
42
+ if (status === 403) {
43
+ reject(new UploadException(UploadExceptionCode.UPLOAD_CREDENTIALS_IS_EXPIRED));
44
+ }
45
+ }
46
+ }).then(({ headers, data: { path } }) => {
47
+ return normalizeSuccessResponse(path, PlatformType.OSS, headers);
48
+ });
49
+ }, "defaultUpload");
50
+ export {
51
+ defaultUpload
52
+ };
53
+ //# sourceMappingURL=defaultUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/OSS/defaultUpload.ts"],"sourcesContent":["import { InitException, InitExceptionCode } from \"../../Exception/InitException\"\nimport { UploadException, UploadExceptionCode } from \"../../Exception/UploadException\"\nimport type { PlatformRequest, PlatformSimpleUploadOption } from \"../../types\"\nimport { PlatformType } from \"../../types\"\nimport type { OSS } from \"../../types/OSS\"\nimport { request } from \"../../utils/request\"\nimport { normalizeSuccessResponse } from \"../../utils/response\"\n\n/**\n * @description: Default upload\n * @param {File | Blob} file File\n * @param {String} key File name\n * @param {OSS.AuthParams} params Upload credential info\n * @param {PlatformSimpleUploadOption} option Configuration field\n */\nexport const defaultUpload: PlatformRequest<OSS.AuthParams, PlatformSimpleUploadOption> = (\n\tfile,\n\tkey,\n\tparams,\n\toption,\n) => {\n\tconst { policy, accessid, signature, host, dir, callback } = params\n\n\tif (!policy || !accessid || !signature || !host || !dir || !callback) {\n\t\tthrow new InitException(\n\t\t\tInitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,\n\t\t\t\"aliyun\",\n\t\t\t\"policy\",\n\t\t\t\"accessid\",\n\t\t\t\"signature\",\n\t\t\t\"host\",\n\t\t\t\"dir\",\n\t\t\t\"callback\",\n\t\t)\n\t}\n\n\t// Aliyun PostObject upload limit 5GB\n\tif (file?.size > 5 * 1024 * 1024 * 1024) {\n\t\tthrow new InitException(InitExceptionCode.UPLOAD_FILE_TO_BIG, key)\n\t}\n\n\t// Wrap the FormData object\n\tconst formData = new FormData()\n\tformData.append(\"key\", `${dir}${key}`)\n\tformData.append(\"policy\", policy)\n\tformData.append(\"OSSAccessKeyId\", accessid)\n\tformData.append(\"signature\", signature)\n\tformData.append(\"success_action_status\", \"200\")\n\tformData.append(\"callback\", callback)\n\tformData.append(\"file\", file)\n\n\t// Send request\n\treturn request<OSS.PostResponse>({\n\t\tmethod: \"post\",\n\t\turl: host,\n\t\tdata: formData,\n\t\theaders: option?.headers ? option?.headers : {},\n\t\ttaskId: option.taskId,\n\t\tonProgress: option?.progress ? option.progress : () => {},\n\t\tfail: (status, reject) => {\n\t\t\tif (status === 403) {\n\t\t\t\treject(new UploadException(UploadExceptionCode.UPLOAD_CREDENTIALS_IS_EXPIRED))\n\t\t\t}\n\t\t},\n\t}).then(({ headers, data: { path } }) => {\n\t\treturn normalizeSuccessResponse(path, PlatformType.OSS, headers)\n\t})\n}\n\n\n\n\n"],"mappings":";;AAAC,SAAS,eAAe,yBAAyB;AAClD,SAAS,iBAAiB,2BAA2B;AAErD,SAAS,oBAAoB;AAE7B,SAAS,eAAe;AACxB,SAAS,gCAAgC;AASlC,MAAM,gBAA6E,wBACzF,MACA,KACA,QACA,WACI;AACJ,QAAM,EAAE,QAAQ,UAAU,WAAW,MAAM,KAAK,SAAS,IAAI;AAE7D,MAAI,CAAC,UAAU,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;AACrE,UAAM,IAAI;AAAA,MACT,kBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAGA,MAAI,MAAM,OAAO,IAAI,OAAO,OAAO,MAAM;AACxC,UAAM,IAAI,cAAc,kBAAkB,oBAAoB,GAAG;AAAA,EAClE;AAGA,QAAM,WAAW,IAAI,SAAS;AAC9B,WAAS,OAAO,OAAO,GAAG,GAAG,GAAG,GAAG,EAAE;AACrC,WAAS,OAAO,UAAU,MAAM;AAChC,WAAS,OAAO,kBAAkB,QAAQ;AAC1C,WAAS,OAAO,aAAa,SAAS;AACtC,WAAS,OAAO,yBAAyB,KAAK;AAC9C,WAAS,OAAO,YAAY,QAAQ;AACpC,WAAS,OAAO,QAAQ,IAAI;AAG5B,SAAO,QAA0B;AAAA,IAChC,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS,QAAQ,UAAU,QAAQ,UAAU,CAAC;AAAA,IAC9C,QAAQ,OAAO;AAAA,IACf,YAAY,QAAQ,WAAW,OAAO,WAAW,MAAM;AAAA,IAAC;AAAA,IACxD,MAAM,CAAC,QAAQ,WAAW;AACzB,UAAI,WAAW,KAAK;AACnB,eAAO,IAAI,gBAAgB,oBAAoB,6BAA6B,CAAC;AAAA,MAC9E;AAAA,IACD;AAAA,EACD,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM;AACxC,WAAO,yBAAyB,MAAM,aAAa,KAAK,OAAO;AAAA,EAChE,CAAC;AACF,GApD0F;","names":[]}
@@ -0,0 +1,16 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { MultipartUpload } from "./MultipartUpload";
4
+ import { defaultUpload } from "./defaultUpload";
5
+ import { STSUpload } from "./STSUpload";
6
+ const upload = /* @__PURE__ */ __name((file, key, params, option) => {
7
+ if (Object.prototype.hasOwnProperty.call(params, "sts_token")) {
8
+ return MultipartUpload(file, key, params, option);
9
+ }
10
+ return defaultUpload(file, key, params, option);
11
+ }, "upload");
12
+ var OSS_default = { upload, defaultUpload, MultipartUpload, STSUpload };
13
+ export {
14
+ OSS_default as default
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/OSS/index.ts"],"sourcesContent":["import type {\n\tPlatformMultipartUploadOption,\n\tPlatformRequest,\n\tPlatformSimpleUploadOption,\n} from \"../../types\"\nimport type { OSS } from \"../../types/OSS\"\nimport { MultipartUpload } from \"./MultipartUpload\"\nimport { defaultUpload } from \"./defaultUpload\"\nimport { STSUpload } from \"./STSUpload\"\n\nconst upload: PlatformRequest<\n\tOSS.AuthParams | OSS.STSAuthParams,\n\tPlatformSimpleUploadOption | PlatformMultipartUploadOption\n> = (file, key, params, option) => {\n\t// Determine post vs multipartUpload based on backend-provided credentials\n\tif (Object.prototype.hasOwnProperty.call(params, \"sts_token\")) {\n\t\treturn MultipartUpload(file, key, <OSS.STSAuthParams>params, option)\n\t}\n\treturn defaultUpload(file, key, <OSS.AuthParams>params, option)\n}\n\nexport default { upload, defaultUpload, MultipartUpload, STSUpload }\n\n\n\n\n"],"mappings":";;AAMA,SAAS,uBAAuB;AAChC,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB;AAE1B,MAAM,SAGF,wBAAC,MAAM,KAAK,QAAQ,WAAW;AAElC,MAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,WAAW,GAAG;AAC9D,WAAO,gBAAgB,MAAM,KAAwB,QAAQ,MAAM;AAAA,EACpE;AACA,SAAO,cAAc,MAAM,KAAqB,QAAQ,MAAM;AAC/D,GANI;AAQJ,IAAO,cAAQ,EAAE,QAAQ,eAAe,iBAAiB,UAAU;","names":[]}
@@ -0,0 +1,137 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import mime from "mime";
4
+ import urlUtil from "url";
5
+ import { InitException, InitExceptionCode } from "../../../Exception/InitException";
6
+ import { UploadException, UploadExceptionCode } from "../../../Exception/UploadException";
7
+ import { isIP } from "../../../utils/checkDataFormat";
8
+ import { parseExtname } from "../../../utils/regExpUtil";
9
+ import { request } from "../../../utils/request";
10
+ import { authorization } from "./signature";
11
+ function escape(name) {
12
+ return window.encodeURIComponent(name).replace(/%2F/g, "/");
13
+ }
14
+ __name(escape, "escape");
15
+ function getReqUrl(params) {
16
+ const ep = {
17
+ host: "aliyuncs.com"
18
+ };
19
+ if (params.bucket && !isIP(ep.hostname)) {
20
+ ep.host = `${params.bucket}.${params.region}.${ep.host}`;
21
+ }
22
+ let resourcePath = "/";
23
+ if (params.object) {
24
+ resourcePath += escape(params.object).replace(/\+/g, "%2B");
25
+ }
26
+ ep.pathname = resourcePath;
27
+ const query = {};
28
+ if (params.query) {
29
+ Object.assign(query, params.query);
30
+ }
31
+ if (params.subRes) {
32
+ let subResAsQuery = {};
33
+ if (typeof params.subRes === "string") {
34
+ subResAsQuery[params.subRes] = "";
35
+ } else if (Array.isArray(params.subRes)) {
36
+ params.subRes.forEach((k) => {
37
+ subResAsQuery[k] = "";
38
+ });
39
+ } else {
40
+ subResAsQuery = params.subRes;
41
+ }
42
+ Object.assign(query, subResAsQuery);
43
+ }
44
+ ep.query = query;
45
+ return urlUtil.format(ep);
46
+ }
47
+ __name(getReqUrl, "getReqUrl");
48
+ function createRequest(params, option) {
49
+ const date = /* @__PURE__ */ new Date();
50
+ const headers = {
51
+ ...option.headers,
52
+ "x-oss-date": date.toUTCString()
53
+ };
54
+ if (typeof window !== "undefined") {
55
+ headers["x-oss-user-agent"] = window.navigator.userAgent;
56
+ }
57
+ if (params.stsToken) {
58
+ headers["x-oss-security-token"] = params.stsToken;
59
+ }
60
+ if (params.callback) {
61
+ headers["x-oss-callback"] = params.callback;
62
+ }
63
+ const { hasOwnProperty } = Object.prototype;
64
+ if (!hasOwnProperty.call(headers, "Content-Type")) {
65
+ if (option.mime && option.mime.indexOf("/") > 0) {
66
+ headers["Content-Type"] = option.mime;
67
+ } else {
68
+ const contentType = mime.getType(option.mime || parseExtname(params.object || ""));
69
+ if (contentType) {
70
+ headers["Content-Type"] = contentType;
71
+ }
72
+ }
73
+ }
74
+ const authResource = `/${params.bucket}/${params.object}`;
75
+ headers.authorization = authorization(
76
+ params.method,
77
+ authResource,
78
+ params.subRes,
79
+ headers,
80
+ params
81
+ );
82
+ const url = getReqUrl(params);
83
+ return {
84
+ url,
85
+ method: params.method,
86
+ data: params.content,
87
+ headers,
88
+ taskId: params.taskId,
89
+ fail: (status, reject) => {
90
+ if (status === 403) {
91
+ reject(new UploadException(UploadExceptionCode.UPLOAD_CREDENTIALS_IS_EXPIRED));
92
+ }
93
+ }
94
+ };
95
+ }
96
+ __name(createRequest, "createRequest");
97
+ async function uploadPart(name, UploadId, partNo, data, params, options) {
98
+ const opt = { ...options };
99
+ const configParams = {
100
+ method: "PUT",
101
+ content: data.content,
102
+ subRes: {
103
+ partNumber: partNo,
104
+ UploadId
105
+ },
106
+ ...params
107
+ };
108
+ const result = await request(createRequest(configParams, opt));
109
+ if (!result.headers.etag) {
110
+ throw new InitException(InitExceptionCode.UPLOAD_HEAD_NO_EXPOSE_ETAG);
111
+ }
112
+ return {
113
+ name,
114
+ etag: result.headers.etag,
115
+ res: result
116
+ };
117
+ }
118
+ __name(uploadPart, "uploadPart");
119
+ function omit(originalObject, keysToOmit) {
120
+ if (originalObject)
121
+ return {};
122
+ const cloneObject = { ...originalObject };
123
+ if (Array.isArray(keysToOmit) && keysToOmit.length > 0) {
124
+ keysToOmit.forEach((path) => {
125
+ delete cloneObject[path];
126
+ });
127
+ }
128
+ return cloneObject;
129
+ }
130
+ __name(omit, "omit");
131
+ export {
132
+ createRequest,
133
+ getReqUrl,
134
+ omit,
135
+ uploadPart
136
+ };
137
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/modules/OSS/utils/helper.ts"],"sourcesContent":["import mime from \"mime\"\nimport urlUtil from \"url\"\nimport { InitException, InitExceptionCode } from \"../../../Exception/InitException\"\nimport { UploadException, UploadExceptionCode } from \"../../../Exception/UploadException\"\nimport type { MethodType } from \"../../../types\"\nimport type { OSS } from \"../../../types/OSS\"\nimport type { ErrorType } from \"../../../types/error\"\nimport { isIP } from \"../../../utils/checkDataFormat\"\nimport { parseExtname } from \"../../../utils/regExpUtil\"\nimport { request } from \"../../../utils/request\"\nimport { authorization } from \"./signature\"\n\nfunction escape(name: string) {\n\treturn window.encodeURIComponent(name).replace(/%2F/g, \"/\")\n}\n\nexport function getReqUrl(params: OSS.CreateRequestParams) {\n\tconst ep: any = {\n\t\thost: \"aliyuncs.com\",\n\t}\n\n\tif (params.bucket && !isIP(ep.hostname)) {\n\t\tep.host = `${params.bucket}.${params.region}.${ep.host}`\n\t}\n\n\tlet resourcePath = \"/\"\n\n\tif (params.object) {\n\t\t// Preserve '/' in result url\n\t\tresourcePath += escape(params.object).replace(/\\+/g, \"%2B\")\n\t}\n\tep.pathname = resourcePath\n\n\tconst query = {}\n\tif (params.query) {\n\t\tObject.assign(query, params.query)\n\t}\n\n\tif (params.subRes) {\n\t\tlet subResAsQuery: Record<string, any> = {}\n\t\tif (typeof params.subRes === \"string\") {\n\t\t\tsubResAsQuery[params.subRes] = \"\"\n\t\t} else if (Array.isArray(params.subRes)) {\n\t\t\tparams.subRes.forEach((k: any) => {\n\t\t\t\tsubResAsQuery[k] = \"\"\n\t\t\t})\n\t\t} else {\n\t\t\tsubResAsQuery = params.subRes\n\t\t}\n\t\tObject.assign(query, subResAsQuery)\n\t}\n\n\tep.query = query\n\n\treturn urlUtil.format(ep)\n}\n\nexport function createRequest(params: OSS.CreateRequestParams, option: OSS.MultipartUploadOption) {\n\tconst date = new Date()\n\n\tconst headers: OSS.Headers = {\n\t\t...option.headers,\n\t\t\"x-oss-date\": date.toUTCString(),\n\t}\n\n\tif (typeof window !== \"undefined\") {\n\t\theaders[\"x-oss-user-agent\"] = window.navigator.userAgent\n\t}\n\n\tif (params.stsToken) {\n\t\theaders[\"x-oss-security-token\"] = params.stsToken\n\t}\n\n\tif (params.callback) {\n\t\theaders[\"x-oss-callback\"] = params.callback\n\t}\n\n\tconst { hasOwnProperty } = Object.prototype\n\tif (!hasOwnProperty.call(headers, \"Content-Type\")) {\n\t\tif (option.mime && option.mime.indexOf(\"/\") > 0) {\n\t\t\theaders[\"Content-Type\"] = option.mime\n\t\t} else {\n\t\t\tconst contentType = mime.getType(option.mime || parseExtname(params.object || \"\"))\n\t\t\tif (contentType) {\n\t\t\t\theaders[\"Content-Type\"] = contentType\n\t\t\t}\n\t\t}\n\t}\n\n\tconst authResource = `/${params.bucket}/${params.object}`\n\n\theaders.authorization = authorization(\n\t\tparams.method,\n\t\tauthResource,\n\t\tparams.subRes,\n\t\theaders,\n\t\tparams,\n\t)\n\tconst url = getReqUrl(params)\n\treturn {\n\t\turl,\n\t\tmethod: params.method,\n\t\tdata: params.content,\n\t\theaders,\n\t\ttaskId: params.taskId,\n\t\tfail: (status: number, reject: (error: ErrorType.UploadError) => void) => {\n\t\t\tif (status === 403) {\n\t\t\t\treject(new UploadException(UploadExceptionCode.UPLOAD_CREDENTIALS_IS_EXPIRED))\n\t\t\t}\n\t\t},\n\t}\n}\n\nexport async function uploadPart(\n\tname: string,\n\tUploadId: string,\n\tpartNo: number,\n\tdata: OSS.PartInfo,\n\tparams: OSS.MultipartUploadParams,\n\toptions: OSS.MultipartUploadOption,\n) {\n\tconst opt: OSS.MultipartUploadOption = { ...options }\n\n\tconst configParams: OSS.CreateRequestParams = {\n\t\tmethod: <MethodType>\"PUT\",\n\t\tcontent: data.content,\n\t\tsubRes: {\n\t\t\tpartNumber: partNo,\n\t\t\tUploadId,\n\t\t},\n\t\t...params,\n\t}\n\n\tconst result = await request<OSS.UploadPartResponse>(createRequest(configParams, opt))\n\n\tif (!result.headers.etag) {\n\t\tthrow new InitException(InitExceptionCode.UPLOAD_HEAD_NO_EXPOSE_ETAG)\n\t}\n\n\treturn {\n\t\tname,\n\t\tetag: result.headers.etag,\n\t\tres: result,\n\t}\n}\n\nexport function omit(originalObject: {} | undefined, keysToOmit: string[]): {} {\n\tif (originalObject) return {}\n\tconst cloneObject: Record<string, string> = { ...originalObject }\n\n\tif (Array.isArray(keysToOmit) && keysToOmit.length > 0) {\n\t\tkeysToOmit.forEach((path) => {\n\t\t\tdelete cloneObject[path]\n\t\t})\n\t}\n\treturn cloneObject\n}\n\n\n\n\n"],"mappings":";;AAAC,OAAO,UAAU;AAClB,OAAO,aAAa;AACpB,SAAS,eAAe,yBAAyB;AACjD,SAAS,iBAAiB,2BAA2B;AAIrD,SAAS,YAAY;AACrB,SAAS,oBAAoB;AAC7B,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAE9B,SAAS,OAAO,MAAc;AAC7B,SAAO,OAAO,mBAAmB,IAAI,EAAE,QAAQ,QAAQ,GAAG;AAC3D;AAFS;AAIF,SAAS,UAAU,QAAiC;AAC1D,QAAM,KAAU;AAAA,IACf,MAAM;AAAA,EACP;AAEA,MAAI,OAAO,UAAU,CAAC,KAAK,GAAG,QAAQ,GAAG;AACxC,OAAG,OAAO,GAAG,OAAO,MAAM,IAAI,OAAO,MAAM,IAAI,GAAG,IAAI;AAAA,EACvD;AAEA,MAAI,eAAe;AAEnB,MAAI,OAAO,QAAQ;AAElB,oBAAgB,OAAO,OAAO,MAAM,EAAE,QAAQ,OAAO,KAAK;AAAA,EAC3D;AACA,KAAG,WAAW;AAEd,QAAM,QAAQ,CAAC;AACf,MAAI,OAAO,OAAO;AACjB,WAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAClC;AAEA,MAAI,OAAO,QAAQ;AAClB,QAAI,gBAAqC,CAAC;AAC1C,QAAI,OAAO,OAAO,WAAW,UAAU;AACtC,oBAAc,OAAO,MAAM,IAAI;AAAA,IAChC,WAAW,MAAM,QAAQ,OAAO,MAAM,GAAG;AACxC,aAAO,OAAO,QAAQ,CAAC,MAAW;AACjC,sBAAc,CAAC,IAAI;AAAA,MACpB,CAAC;AAAA,IACF,OAAO;AACN,sBAAgB,OAAO;AAAA,IACxB;AACA,WAAO,OAAO,OAAO,aAAa;AAAA,EACnC;AAEA,KAAG,QAAQ;AAEX,SAAO,QAAQ,OAAO,EAAE;AACzB;AAvCgB;AAyCT,SAAS,cAAc,QAAiC,QAAmC;AACjG,QAAM,OAAO,oBAAI,KAAK;AAEtB,QAAM,UAAuB;AAAA,IAC5B,GAAG,OAAO;AAAA,IACV,cAAc,KAAK,YAAY;AAAA,EAChC;AAEA,MAAI,OAAO,WAAW,aAAa;AAClC,YAAQ,kBAAkB,IAAI,OAAO,UAAU;AAAA,EAChD;AAEA,MAAI,OAAO,UAAU;AACpB,YAAQ,sBAAsB,IAAI,OAAO;AAAA,EAC1C;AAEA,MAAI,OAAO,UAAU;AACpB,YAAQ,gBAAgB,IAAI,OAAO;AAAA,EACpC;AAEA,QAAM,EAAE,eAAe,IAAI,OAAO;AAClC,MAAI,CAAC,eAAe,KAAK,SAAS,cAAc,GAAG;AAClD,QAAI,OAAO,QAAQ,OAAO,KAAK,QAAQ,GAAG,IAAI,GAAG;AAChD,cAAQ,cAAc,IAAI,OAAO;AAAA,IAClC,OAAO;AACN,YAAM,cAAc,KAAK,QAAQ,OAAO,QAAQ,aAAa,OAAO,UAAU,EAAE,CAAC;AACjF,UAAI,aAAa;AAChB,gBAAQ,cAAc,IAAI;AAAA,MAC3B;AAAA,IACD;AAAA,EACD;AAEA,QAAM,eAAe,IAAI,OAAO,MAAM,IAAI,OAAO,MAAM;AAEvD,UAAQ,gBAAgB;AAAA,IACvB,OAAO;AAAA,IACP;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACD;AACA,QAAM,MAAM,UAAU,MAAM;AAC5B,SAAO;AAAA,IACN;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,MAAM,OAAO;AAAA,IACb;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,MAAM,CAAC,QAAgB,WAAmD;AACzE,UAAI,WAAW,KAAK;AACnB,eAAO,IAAI,gBAAgB,oBAAoB,6BAA6B,CAAC;AAAA,MAC9E;AAAA,IACD;AAAA,EACD;AACD;AAtDgB;AAwDhB,eAAsB,WACrB,MACA,UACA,QACA,MACA,QACA,SACC;AACD,QAAM,MAAiC,EAAE,GAAG,QAAQ;AAEpD,QAAM,eAAwC;AAAA,IAC7C,QAAoB;AAAA,IACpB,SAAS,KAAK;AAAA,IACd,QAAQ;AAAA,MACP,YAAY;AAAA,MACZ;AAAA,IACD;AAAA,IACA,GAAG;AAAA,EACJ;AAEA,QAAM,SAAS,MAAM,QAAgC,cAAc,cAAc,GAAG,CAAC;AAErF,MAAI,CAAC,OAAO,QAAQ,MAAM;AACzB,UAAM,IAAI,cAAc,kBAAkB,0BAA0B;AAAA,EACrE;AAEA,SAAO;AAAA,IACN;AAAA,IACA,MAAM,OAAO,QAAQ;AAAA,IACrB,KAAK;AAAA,EACN;AACD;AA/BsB;AAiCf,SAAS,KAAK,gBAAgC,YAA0B;AAC9E,MAAI;AAAgB,WAAO,CAAC;AAC5B,QAAM,cAAsC,EAAE,GAAG,eAAe;AAEhE,MAAI,MAAM,QAAQ,UAAU,KAAK,WAAW,SAAS,GAAG;AACvD,eAAW,QAAQ,CAAC,SAAS;AAC5B,aAAO,YAAY,IAAI;AAAA,IACxB,CAAC;AAAA,EACF;AACA,SAAO;AACR;AAVgB;","names":[]}