@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,173 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var helper_exports = {};
31
+ __export(helper_exports, {
32
+ createRequest: () => createRequest,
33
+ getReqUrl: () => getReqUrl,
34
+ omit: () => omit,
35
+ uploadPart: () => uploadPart
36
+ });
37
+ module.exports = __toCommonJS(helper_exports);
38
+ var import_mime = __toESM(require("mime"), 1);
39
+ var import_url = __toESM(require("url"), 1);
40
+ var import_InitException = require("../../../Exception/InitException");
41
+ var import_UploadException = require("../../../Exception/UploadException");
42
+ var import_checkDataFormat = require("../../../utils/checkDataFormat");
43
+ var import_regExpUtil = require("../../../utils/regExpUtil");
44
+ var import_request = require("../../../utils/request");
45
+ var import_signature = require("./signature");
46
+ function escape(name) {
47
+ return window.encodeURIComponent(name).replace(/%2F/g, "/");
48
+ }
49
+ __name(escape, "escape");
50
+ function getReqUrl(params) {
51
+ const ep = {
52
+ host: "aliyuncs.com"
53
+ };
54
+ if (params.bucket && !(0, import_checkDataFormat.isIP)(ep.hostname)) {
55
+ ep.host = `${params.bucket}.${params.region}.${ep.host}`;
56
+ }
57
+ let resourcePath = "/";
58
+ if (params.object) {
59
+ resourcePath += escape(params.object).replace(/\+/g, "%2B");
60
+ }
61
+ ep.pathname = resourcePath;
62
+ const query = {};
63
+ if (params.query) {
64
+ Object.assign(query, params.query);
65
+ }
66
+ if (params.subRes) {
67
+ let subResAsQuery = {};
68
+ if (typeof params.subRes === "string") {
69
+ subResAsQuery[params.subRes] = "";
70
+ } else if (Array.isArray(params.subRes)) {
71
+ params.subRes.forEach((k) => {
72
+ subResAsQuery[k] = "";
73
+ });
74
+ } else {
75
+ subResAsQuery = params.subRes;
76
+ }
77
+ Object.assign(query, subResAsQuery);
78
+ }
79
+ ep.query = query;
80
+ return import_url.default.format(ep);
81
+ }
82
+ __name(getReqUrl, "getReqUrl");
83
+ function createRequest(params, option) {
84
+ const date = /* @__PURE__ */ new Date();
85
+ const headers = {
86
+ ...option.headers,
87
+ "x-oss-date": date.toUTCString()
88
+ };
89
+ if (typeof window !== "undefined") {
90
+ headers["x-oss-user-agent"] = window.navigator.userAgent;
91
+ }
92
+ if (params.stsToken) {
93
+ headers["x-oss-security-token"] = params.stsToken;
94
+ }
95
+ if (params.callback) {
96
+ headers["x-oss-callback"] = params.callback;
97
+ }
98
+ const { hasOwnProperty } = Object.prototype;
99
+ if (!hasOwnProperty.call(headers, "Content-Type")) {
100
+ if (option.mime && option.mime.indexOf("/") > 0) {
101
+ headers["Content-Type"] = option.mime;
102
+ } else {
103
+ const contentType = import_mime.default.getType(option.mime || (0, import_regExpUtil.parseExtname)(params.object || ""));
104
+ if (contentType) {
105
+ headers["Content-Type"] = contentType;
106
+ }
107
+ }
108
+ }
109
+ const authResource = `/${params.bucket}/${params.object}`;
110
+ headers.authorization = (0, import_signature.authorization)(
111
+ params.method,
112
+ authResource,
113
+ params.subRes,
114
+ headers,
115
+ params
116
+ );
117
+ const url = getReqUrl(params);
118
+ return {
119
+ url,
120
+ method: params.method,
121
+ data: params.content,
122
+ headers,
123
+ taskId: params.taskId,
124
+ fail: (status, reject) => {
125
+ if (status === 403) {
126
+ reject(new import_UploadException.UploadException(import_UploadException.UploadExceptionCode.UPLOAD_CREDENTIALS_IS_EXPIRED));
127
+ }
128
+ }
129
+ };
130
+ }
131
+ __name(createRequest, "createRequest");
132
+ async function uploadPart(name, UploadId, partNo, data, params, options) {
133
+ const opt = { ...options };
134
+ const configParams = {
135
+ method: "PUT",
136
+ content: data.content,
137
+ subRes: {
138
+ partNumber: partNo,
139
+ UploadId
140
+ },
141
+ ...params
142
+ };
143
+ const result = await (0, import_request.request)(createRequest(configParams, opt));
144
+ if (!result.headers.etag) {
145
+ throw new import_InitException.InitException(import_InitException.InitExceptionCode.UPLOAD_HEAD_NO_EXPOSE_ETAG);
146
+ }
147
+ return {
148
+ name,
149
+ etag: result.headers.etag,
150
+ res: result
151
+ };
152
+ }
153
+ __name(uploadPart, "uploadPart");
154
+ function omit(originalObject, keysToOmit) {
155
+ if (originalObject)
156
+ return {};
157
+ const cloneObject = { ...originalObject };
158
+ if (Array.isArray(keysToOmit) && keysToOmit.length > 0) {
159
+ keysToOmit.forEach((path) => {
160
+ delete cloneObject[path];
161
+ });
162
+ }
163
+ return cloneObject;
164
+ }
165
+ __name(omit, "omit");
166
+ // Annotate the CommonJS export names for ESM import in node:
167
+ 0 && (module.exports = {
168
+ createRequest,
169
+ getReqUrl,
170
+ omit,
171
+ uploadPart
172
+ });
173
+ //# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAC,kBAAiB;AAClB,iBAAoB;AACpB,2BAAiD;AACjD,6BAAqD;AAIrD,6BAAqB;AACrB,wBAA6B;AAC7B,qBAAwB;AACxB,uBAA8B;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,KAAC,6BAAK,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,WAAAA,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,YAAAC,QAAK,QAAQ,OAAO,YAAQ,gCAAa,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,oBAAgB;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,uCAAgB,2CAAoB,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,UAAM,wBAAgC,cAAc,cAAc,GAAG,CAAC;AAErF,MAAI,CAAC,OAAO,QAAQ,MAAM;AACzB,UAAM,IAAI,mCAAc,uCAAkB,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":["urlUtil","mime"]}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var signature_exports = {};
31
+ __export(signature_exports, {
32
+ authorization: () => authorization,
33
+ buildCanonicalResourceResource: () => buildCanonicalResourceResource,
34
+ buildCanonicalString: () => buildCanonicalString,
35
+ computeSignature: () => computeSignature
36
+ });
37
+ module.exports = __toCommonJS(signature_exports);
38
+ var import_enc_base64 = __toESM(require("crypto-js/enc-base64"), 1);
39
+ var import_hmac_sha1 = __toESM(require("crypto-js/hmac-sha1"), 1);
40
+ var import_checkDataFormat = require("../../../utils/checkDataFormat");
41
+ function computeSignature(accessKeySecret, canonicalString) {
42
+ return import_enc_base64.default.stringify((0, import_hmac_sha1.default)(canonicalString, accessKeySecret));
43
+ }
44
+ __name(computeSignature, "computeSignature");
45
+ function lowercaseKeyHeader(headers) {
46
+ const lowercaseHeader = {};
47
+ if ((0, import_checkDataFormat.isObject)(headers)) {
48
+ Object.keys(headers).forEach((key) => {
49
+ lowercaseHeader[key.toLowerCase()] = headers[key];
50
+ });
51
+ }
52
+ return lowercaseHeader;
53
+ }
54
+ __name(lowercaseKeyHeader, "lowercaseKeyHeader");
55
+ function buildCanonicalResourceResource(resourcePath, parameters) {
56
+ let canonicalResourceResource = `${resourcePath}`;
57
+ let separatorString = "?";
58
+ if (typeof parameters === "string" && parameters.trim() !== "") {
59
+ canonicalResourceResource += separatorString + parameters;
60
+ } else if (Array.isArray(parameters)) {
61
+ parameters.sort();
62
+ canonicalResourceResource += separatorString + parameters.join("&");
63
+ } else if (parameters) {
64
+ const compareFunc = /* @__PURE__ */ __name((entry1, entry2) => {
65
+ if (entry1[0] > entry2[0]) {
66
+ return 1;
67
+ }
68
+ if (entry1[0] < entry2[0]) {
69
+ return -1;
70
+ }
71
+ return 0;
72
+ }, "compareFunc");
73
+ const processFunc = /* @__PURE__ */ __name((key) => {
74
+ canonicalResourceResource += separatorString + key;
75
+ if (parameters[key] || parameters[key] === 0) {
76
+ canonicalResourceResource += `=${parameters[key]}`;
77
+ }
78
+ separatorString = "&";
79
+ }, "processFunc");
80
+ Object.keys(parameters).sort(compareFunc).forEach(processFunc);
81
+ }
82
+ return canonicalResourceResource;
83
+ }
84
+ __name(buildCanonicalResourceResource, "buildCanonicalResourceResource");
85
+ function buildCanonicalString(method, resourcePath, request, expires) {
86
+ const req = request || {};
87
+ const headers = lowercaseKeyHeader(req.headers);
88
+ const OSS_PREFIX = "x-oss-";
89
+ const ossHeaders = [];
90
+ const headersToSign = {};
91
+ let signContent = [
92
+ method.toUpperCase(),
93
+ headers["content-md5"] || "",
94
+ headers["content-type"],
95
+ expires || headers["x-oss-date"]
96
+ ];
97
+ Object.keys(headers).forEach((key) => {
98
+ const lowerKey = key.toLowerCase();
99
+ if (lowerKey.indexOf(OSS_PREFIX) === 0) {
100
+ headersToSign[lowerKey] = String(headers[key]).trim();
101
+ }
102
+ });
103
+ Object.keys(headersToSign).sort().forEach((key) => {
104
+ ossHeaders.push(`${key}:${headersToSign[key]}`);
105
+ });
106
+ signContent = signContent.concat(ossHeaders);
107
+ signContent.push(buildCanonicalResourceResource(resourcePath, req.parameters));
108
+ return signContent.join("\n");
109
+ }
110
+ __name(buildCanonicalString, "buildCanonicalString");
111
+ function authorization(method, resource, subRes, headers, option) {
112
+ const stringToSign = buildCanonicalString(
113
+ method.toUpperCase(),
114
+ resource,
115
+ {
116
+ headers,
117
+ parameters: subRes
118
+ },
119
+ ""
120
+ );
121
+ const { accessKeyId, accessKeySecret } = option;
122
+ return `OSS ${accessKeyId}:${computeSignature(accessKeySecret, stringToSign)}`;
123
+ }
124
+ __name(authorization, "authorization");
125
+ // Annotate the CommonJS export names for ESM import in node:
126
+ 0 && (module.exports = {
127
+ authorization,
128
+ buildCanonicalResourceResource,
129
+ buildCanonicalString,
130
+ computeSignature
131
+ });
132
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/modules/OSS/utils/signature.ts"],"sourcesContent":["import Base64 from \"crypto-js/enc-base64\"\nimport hmacSHA1 from \"crypto-js/hmac-sha1\"\nimport type { MethodType } from \"../../../types\"\nimport type { OSS } from \"../../../types/OSS\"\nimport { isObject } from \"../../../utils/checkDataFormat\"\n\n/**\n * @param {String} accessKeySecret\n * @param {String} canonicalString\n */\nexport function computeSignature(accessKeySecret: string, canonicalString: string) {\n\treturn Base64.stringify(hmacSHA1(canonicalString, accessKeySecret))\n}\n\nfunction lowercaseKeyHeader(headers: Record<string, string>) {\n\tconst lowercaseHeader: Record<string, string> = {}\n\tif (isObject(headers)) {\n\t\tObject.keys(headers).forEach((key) => {\n\t\t\tlowercaseHeader[key.toLowerCase()] = headers[key]\n\t\t})\n\t}\n\treturn lowercaseHeader\n}\n\n/**\n *\n * @param {String} resourcePath\n * @param {Object} parameters\n * @return\n */\nexport function buildCanonicalResourceResource(resourcePath: string, parameters: any) {\n\tlet canonicalResourceResource = `${resourcePath}`\n\tlet separatorString = \"?\"\n\n\tif (typeof parameters === \"string\" && parameters.trim() !== \"\") {\n\t\tcanonicalResourceResource += separatorString + parameters\n\t} else if (Array.isArray(parameters)) {\n\t\tparameters.sort()\n\t\tcanonicalResourceResource += separatorString + parameters.join(\"&\")\n\t} else if (parameters) {\n\t\tconst compareFunc = (entry1: string, entry2: string) => {\n\t\t\tif (entry1[0] > entry2[0]) {\n\t\t\t\treturn 1\n\t\t\t}\n\t\t\tif (entry1[0] < entry2[0]) {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn 0\n\t\t}\n\t\tconst processFunc = (key: string) => {\n\t\t\tcanonicalResourceResource += separatorString + key\n\t\t\tif (parameters[key] || parameters[key] === 0) {\n\t\t\t\tcanonicalResourceResource += `=${parameters[key]}`\n\t\t\t}\n\t\t\tseparatorString = \"&\"\n\t\t}\n\t\tObject.keys(parameters).sort(compareFunc).forEach(processFunc)\n\t}\n\n\treturn canonicalResourceResource\n}\n\n/**\n * @param {Method} method\n * @param {String} resourcePath\n * @param {Object} request\n * @param {String} expires\n */\nexport function buildCanonicalString(\n\tmethod: MethodType,\n\tresourcePath: string,\n\trequest: Record<string, any>,\n\texpires: string,\n) {\n\tconst req = request || {}\n\tconst headers = lowercaseKeyHeader(req.headers)\n\tconst OSS_PREFIX = \"x-oss-\"\n\tconst ossHeaders: string[] = []\n\tconst headersToSign: Record<string, string> = {}\n\n\tlet signContent = [\n\t\tmethod.toUpperCase(),\n\t\theaders[\"content-md5\"] || \"\",\n\t\theaders[\"content-type\"],\n\t\texpires || headers[\"x-oss-date\"],\n\t]\n\n\tObject.keys(headers).forEach((key) => {\n\t\tconst lowerKey = key.toLowerCase()\n\t\tif (lowerKey.indexOf(OSS_PREFIX) === 0) {\n\t\t\theadersToSign[lowerKey] = String(headers[key]).trim()\n\t\t}\n\t})\n\n\tObject.keys(headersToSign)\n\t\t.sort()\n\t\t.forEach((key) => {\n\t\t\tossHeaders.push(`${key}:${headersToSign[key]}`)\n\t\t})\n\n\tsignContent = signContent.concat(ossHeaders)\n\n\tsignContent.push(buildCanonicalResourceResource(resourcePath, req.parameters))\n\n\treturn signContent.join(\"\\n\")\n}\n\n/**\n * @description: authorization signing method\n * @param {MethodType} method Request type\n * @param {string} resource File path\n * @param {string | Object} subRes Request payload\n * @param {OSS.Headers} headers Request headers\n * @param {OSS.Option} option Configuration field\n */\nexport function authorization(\n\tmethod: MethodType,\n\tresource: string,\n\tsubRes: string | object,\n\theaders: OSS.Headers,\n\toption: OSS.Option,\n) {\n\tconst stringToSign = buildCanonicalString(\n\t\t<MethodType>method.toUpperCase(),\n\t\tresource,\n\t\t{\n\t\t\theaders,\n\t\t\tparameters: subRes,\n\t\t},\n\t\t\"\",\n\t)\n\tconst { accessKeyId, accessKeySecret } = option\n\treturn `OSS ${accessKeyId}:${computeSignature(accessKeySecret, stringToSign)}`\n}\n\n\n\n\n"],"mappings":"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","names":["Base64","hmacSHA1"]}
@@ -0,0 +1,315 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var MultipartUpload_exports = {};
31
+ __export(MultipartUpload_exports, {
32
+ MultipartUpload: () => MultipartUpload
33
+ });
34
+ module.exports = __toCommonJS(MultipartUpload_exports);
35
+ var import_mime = __toESM(require("mime"), 1);
36
+ var import_InitException = require("../../Exception/InitException");
37
+ var import_UploadException = require("../../Exception/UploadException");
38
+ var import_types = require("../../types");
39
+ var import_checkDataFormat = require("../../utils/checkDataFormat");
40
+ var import_multipart = require("../../utils/multipart");
41
+ var import_regExpUtil = require("../../utils/regExpUtil");
42
+ var import_request = require("../../utils/request");
43
+ var import_response = require("../../utils/response");
44
+ var import_utils = require("./utils");
45
+ var import_signatureV4 = require("./utils/signatureV4");
46
+ var import_utils2 = require("./utils/utils");
47
+ var import_STSUpload = require("./STSUpload");
48
+ var import_signatureV4Credentials = require("./utils/signatureV4Credentials");
49
+ async function initMultipartUpload(name, { bucket, host, expires }, { signers, headers: OptionHeaders, ...otherOptions }) {
50
+ const headers = { ...OptionHeaders };
51
+ const reqHeaders = (0, import_utils.getAuthHeaders)(
52
+ {
53
+ bucket,
54
+ method: "POST",
55
+ headers,
56
+ path: `/${encodeURIComponent(name)}`,
57
+ query: (0, import_utils2.getSortedQueryString)({ uploads: "" }),
58
+ host: (0, import_utils.removeProtocol)(host)
59
+ },
60
+ signers,
61
+ expires
62
+ );
63
+ const { data } = await (0, import_request.request)({
64
+ url: `${host}/${encodeURIComponent(name)}`,
65
+ query: { uploads: "" },
66
+ headers: { ...headers, ...reqHeaders },
67
+ method: "POST",
68
+ withoutWrapper: true,
69
+ ...otherOptions
70
+ });
71
+ return {
72
+ res: data,
73
+ bucket: data.Bucket,
74
+ name: data.Key,
75
+ UploadId: data.UploadId
76
+ };
77
+ }
78
+ __name(initMultipartUpload, "initMultipartUpload");
79
+ async function completeMultipartUpload(name, UploadId, parts, { bucket, host, expires }, { signers, progress, partSize, ...otherOptions }) {
80
+ const completeParts = parts.concat().sort((a, b) => a.number - b.number).filter((item, index, arr) => !index || item.number !== arr[index - 1].number);
81
+ const headers = {};
82
+ const reqHeaders = (0, import_utils.getAuthHeaders)(
83
+ {
84
+ bucket,
85
+ method: "POST",
86
+ headers,
87
+ path: `/${encodeURIComponent(name)}`,
88
+ query: (0, import_utils2.getSortedQueryString)({ UploadId }),
89
+ host: (0, import_utils.removeProtocol)(host)
90
+ },
91
+ signers,
92
+ expires
93
+ );
94
+ const result = await (0, import_request.request)({
95
+ url: `${host}/${encodeURIComponent(name)}`,
96
+ method: "POST",
97
+ query: {
98
+ UploadId
99
+ },
100
+ headers: { ...headers, ...reqHeaders },
101
+ data: JSON.stringify({
102
+ Parts: completeParts.map((item) => ({
103
+ eTag: item.etag,
104
+ partNumber: item.number
105
+ }))
106
+ }),
107
+ ...otherOptions
108
+ });
109
+ if (progress && partSize) {
110
+ progress(100, parts.length * partSize, parts.length * partSize, null);
111
+ }
112
+ return (0, import_response.normalizeSuccessResponse)(result.Key, import_types.PlatformType.TOS, result.headers);
113
+ }
114
+ __name(completeMultipartUpload, "completeMultipartUpload");
115
+ async function uploadPart(name, UploadId, partNo, data, { bucket, host, expires }, { signers, ...otherOptions }) {
116
+ const headers = {};
117
+ const reqHeaders = (0, import_utils.getAuthHeaders)(
118
+ {
119
+ bucket,
120
+ method: "PUT",
121
+ headers,
122
+ path: `/${encodeURIComponent(name)}`,
123
+ query: (0, import_utils2.getSortedQueryString)({ partNumber: partNo, UploadId }),
124
+ host: (0, import_utils.removeProtocol)(host)
125
+ },
126
+ signers,
127
+ expires
128
+ );
129
+ const result = await (0, import_request.request)({
130
+ url: `${host}/${encodeURIComponent(name)}`,
131
+ query: { partNumber: `${partNo}`, UploadId },
132
+ method: "PUT",
133
+ data: data.content,
134
+ headers: { ...headers, ...reqHeaders },
135
+ taskId: `${partNo}`,
136
+ ...otherOptions
137
+ });
138
+ if (!result.headers.etag) {
139
+ throw new import_InitException.InitException(import_InitException.InitExceptionCode.UPLOAD_HEAD_NO_EXPOSE_ETAG);
140
+ }
141
+ return {
142
+ name,
143
+ etag: result.headers.etag,
144
+ res: result
145
+ };
146
+ }
147
+ __name(uploadPart, "uploadPart");
148
+ async function resumeMultipart(checkpoint, params, options) {
149
+ const { file, fileSize, partSize, UploadId, doneParts, name } = checkpoint;
150
+ const internalDoneParts = doneParts.length > 0 ? [...doneParts] : [];
151
+ const partOffs = (0, import_multipart.divideParts)(fileSize, partSize);
152
+ const numParts = partOffs.length;
153
+ let multipartFinish = false;
154
+ const opt = { ...options, partSize };
155
+ const uploadPartJob = /* @__PURE__ */ __name((partNo) => (
156
+ // eslint-disable-next-line no-async-promise-executor
157
+ new Promise(async (resolve, reject) => {
158
+ try {
159
+ const pi = partOffs[partNo - 1];
160
+ const content = await (0, import_multipart.createBuffer)(file, pi.start, pi.end);
161
+ const data = {
162
+ content,
163
+ size: pi.end - pi.start
164
+ };
165
+ const result = await uploadPart(name, UploadId, partNo, data, params, {
166
+ ...opt
167
+ });
168
+ if (!multipartFinish) {
169
+ checkpoint.doneParts.push({
170
+ number: partNo,
171
+ etag: result.etag
172
+ });
173
+ if (typeof options.progress === "function") {
174
+ options.progress(
175
+ doneParts.length / (numParts + 1) * 100,
176
+ doneParts.length * partSize,
177
+ fileSize,
178
+ checkpoint
179
+ );
180
+ }
181
+ resolve({
182
+ number: partNo,
183
+ etag: result.etag
184
+ });
185
+ } else {
186
+ resolve();
187
+ }
188
+ } catch (err) {
189
+ const tempErr = new Error();
190
+ tempErr.name = err.name;
191
+ tempErr.message = err.message;
192
+ tempErr.stack = err.stack;
193
+ tempErr.partNum = partNo;
194
+ tempErr.status = err.status;
195
+ reject(tempErr);
196
+ }
197
+ })
198
+ ), "uploadPartJob");
199
+ const all = Array.from(new Array(numParts), (_, i) => i + 1);
200
+ const done = internalDoneParts.map((p) => p.number);
201
+ const todo = all.filter((p) => done.indexOf(p) < 0);
202
+ const defaultParallel = 5;
203
+ const parallel = opt.parallel || defaultParallel;
204
+ const jobErr = await (0, import_multipart.parallelSend)(
205
+ todo,
206
+ parallel,
207
+ (value) => new Promise((resolve, reject) => {
208
+ uploadPartJob(value).then((result) => {
209
+ if (result) {
210
+ internalDoneParts.push(result);
211
+ }
212
+ resolve();
213
+ }).catch((err) => {
214
+ reject(err);
215
+ });
216
+ })
217
+ );
218
+ multipartFinish = true;
219
+ if (jobErr && jobErr.length > 0) {
220
+ const error = jobErr[0];
221
+ if (error.status === 5001 || error.status === 5002) {
222
+ throw error;
223
+ }
224
+ throw new import_UploadException.UploadException(
225
+ import_UploadException.UploadExceptionCode.UPLOAD_MULTIPART_ERROR,
226
+ error.message.replace("[Uploader] ", ""),
227
+ error.partNum
228
+ );
229
+ }
230
+ return completeMultipartUpload(name, UploadId, internalDoneParts, params, opt);
231
+ }
232
+ __name(resumeMultipart, "resumeMultipart");
233
+ const MultipartUpload = /* @__PURE__ */ __name(async (file, key, params, option) => {
234
+ const options = { ...option };
235
+ const {
236
+ region,
237
+ bucket,
238
+ dir,
239
+ credentials: { AccessKeyId, SecretAccessKey, SessionToken }
240
+ } = params;
241
+ if (!region || !bucket || !dir || !SecretAccessKey || !AccessKeyId || !SessionToken) {
242
+ throw new import_InitException.InitException(
243
+ import_InitException.InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
244
+ "volcEngine",
245
+ "region",
246
+ "bucket",
247
+ "dir",
248
+ "AccessKeyId",
249
+ "SecretAccessKey",
250
+ "SessionToken"
251
+ );
252
+ }
253
+ const name = `${dir}${key}`;
254
+ const signV4 = new import_signatureV4Credentials.SignatureV4Credentials(SessionToken, SecretAccessKey, AccessKeyId);
255
+ const signers = new import_signatureV4.SignersV4(
256
+ {
257
+ algorithm: "TOS4-HMAC-SHA256",
258
+ region,
259
+ serviceName: "tos",
260
+ bucket,
261
+ securityToken: SessionToken
262
+ },
263
+ signV4
264
+ );
265
+ const resumeMultipartOptions = {
266
+ ...options,
267
+ signers
268
+ };
269
+ if (!options.mime) {
270
+ if ((0, import_checkDataFormat.isFile)(file)) {
271
+ options.mime = file.type;
272
+ } else if ((0, import_checkDataFormat.isBlob)(file)) {
273
+ options.mime = file.type;
274
+ } else {
275
+ options.mime = import_mime.default.getType((0, import_regExpUtil.parseExtname)(name));
276
+ }
277
+ }
278
+ if (options.checkpoint && options.checkpoint.UploadId) {
279
+ if (file && (0, import_checkDataFormat.isFile)(file))
280
+ options.checkpoint.file = file;
281
+ if (file)
282
+ options.checkpoint.file = file;
283
+ return resumeMultipart(options.checkpoint, params, resumeMultipartOptions);
284
+ }
285
+ options.headers = options.headers || {};
286
+ const fileSize = file.size;
287
+ if (fileSize < import_utils.VOLCENGINE_MIN_PART_SIZE) {
288
+ return (0, import_STSUpload.STSUpload)(file, key, params, { ...options });
289
+ }
290
+ if (options.partSize && !(parseInt(String(options.partSize), 10) === options.partSize)) {
291
+ throw new import_InitException.InitException(import_InitException.InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_MUST_INT);
292
+ }
293
+ if (options.partSize && options.partSize < import_utils.VOLCENGINE_MIN_PART_SIZE) {
294
+ throw new import_InitException.InitException(
295
+ import_InitException.InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_IS_SMALL,
296
+ import_utils.VOLCENGINE_MIN_PART_SIZE
297
+ );
298
+ }
299
+ const { UploadId } = await initMultipartUpload(name, params, {
300
+ headers: { ...options.headers },
301
+ mime: options.mime,
302
+ signers
303
+ });
304
+ const partSize = (0, import_multipart.getPartSize)(fileSize, options.partSize, import_utils.VOLCENGINE_MIN_PART_SIZE);
305
+ const checkpoint = (0, import_multipart.initCheckpoint)(file, name, fileSize, partSize, UploadId);
306
+ if (options && options.progress) {
307
+ options.progress(0, 0, fileSize, checkpoint);
308
+ }
309
+ return resumeMultipart(checkpoint, params, resumeMultipartOptions);
310
+ }, "MultipartUpload");
311
+ // Annotate the CommonJS export names for ESM import in node:
312
+ 0 && (module.exports = {
313
+ MultipartUpload
314
+ });
315
+ //# sourceMappingURL=MultipartUpload.js.map