@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,259 @@
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_helper = require("./utils/helper");
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_STSUpload = require("./STSUpload");
45
+ async function initMultipartUpload(name, params, option) {
46
+ const result = await (0, import_request.request)({
47
+ ...(0, import_helper.createRequest)(
48
+ {
49
+ ...params,
50
+ method: "POST",
51
+ subRes: "uploads",
52
+ object: name
53
+ },
54
+ option
55
+ ),
56
+ xmlResponse: true
57
+ });
58
+ const { data } = result;
59
+ return {
60
+ res: result,
61
+ bucket: data.InitiateMultipartUploadResult.Bucket,
62
+ name: data.InitiateMultipartUploadResult.Key,
63
+ UploadId: data.InitiateMultipartUploadResult.UploadId
64
+ };
65
+ }
66
+ __name(initMultipartUpload, "initMultipartUpload");
67
+ async function completeMultipartUpload(name, UploadId, parts, params, options) {
68
+ const completeParts = parts.concat().sort((a, b) => a.number - b.number).filter((item, index, arr) => !index || item.number !== arr[index - 1].number);
69
+ let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<CompleteMultipartUpload>\n';
70
+ for (let i = 0; i < completeParts.length; i += 1) {
71
+ const p = completeParts[i];
72
+ xml += "<Part>\n";
73
+ xml += `<PartNumber>${p.number}</PartNumber>
74
+ `;
75
+ xml += `<ETag>${p.etag}</ETag>
76
+ `;
77
+ xml += "</Part>\n";
78
+ }
79
+ xml += "</CompleteMultipartUpload>";
80
+ const opt = { ...options, mime: "xml" };
81
+ opt.headers = (0, import_helper.omit)(opt.headers, ["x-oss-server-side-encryption", "x-oss-storage-class"]);
82
+ const configParams = {
83
+ ...params,
84
+ method: "POST",
85
+ subRes: { UploadId },
86
+ content: xml
87
+ };
88
+ const {
89
+ data: { path, platform },
90
+ headers
91
+ } = await (0, import_request.request)({
92
+ ...(0, import_helper.createRequest)(configParams, opt)
93
+ });
94
+ if (options.progress) {
95
+ const { partSize } = opt;
96
+ options.progress(100, parts.length * partSize, parts.length * partSize, null);
97
+ }
98
+ return (0, import_response.normalizeSuccessResponse)(path, platform, headers);
99
+ }
100
+ __name(completeMultipartUpload, "completeMultipartUpload");
101
+ async function resumeMultipart(checkpoint, params, options) {
102
+ const { file, fileSize, partSize, UploadId, doneParts, name } = checkpoint;
103
+ const internalDoneParts = doneParts.length > 0 ? [...doneParts] : [];
104
+ const partOffs = (0, import_multipart.divideParts)(fileSize, partSize);
105
+ const numParts = partOffs.length;
106
+ let multipartFinish = false;
107
+ const opt = { ...options, partSize };
108
+ const uploadPartJob = /* @__PURE__ */ __name((partNo) => (
109
+ // eslint-disable-next-line no-async-promise-executor
110
+ new Promise(async (resolve, reject) => {
111
+ try {
112
+ const pi = partOffs[partNo - 1];
113
+ const content = await (0, import_multipart.createBuffer)(file, pi.start, pi.end);
114
+ const data = {
115
+ content,
116
+ size: pi.end - pi.start
117
+ };
118
+ const result = await (0, import_helper.uploadPart)(name, UploadId, partNo, data, params, {
119
+ ...opt
120
+ });
121
+ if (!multipartFinish) {
122
+ checkpoint.doneParts.push({
123
+ number: partNo,
124
+ etag: result.etag
125
+ });
126
+ if (options.progress) {
127
+ options.progress(
128
+ doneParts.length / (numParts + 1) * 100,
129
+ doneParts.length * partSize,
130
+ fileSize,
131
+ checkpoint
132
+ );
133
+ }
134
+ resolve({
135
+ number: partNo,
136
+ etag: result.etag
137
+ });
138
+ } else {
139
+ resolve();
140
+ }
141
+ } catch (err) {
142
+ const tempErr = new Error();
143
+ tempErr.name = err.name;
144
+ tempErr.message = err.message;
145
+ tempErr.stack = err.stack;
146
+ tempErr.partNum = partNo;
147
+ tempErr.status = err.status;
148
+ reject(tempErr);
149
+ }
150
+ })
151
+ ), "uploadPartJob");
152
+ const all = Array.from(new Array(numParts), (_, i) => i + 1);
153
+ const done = internalDoneParts.map((p) => p.number);
154
+ const todo = all.filter((p) => done.indexOf(p) < 0);
155
+ const defaultParallel = 5;
156
+ const parallel = opt.parallel || defaultParallel;
157
+ const jobErr = await (0, import_multipart.parallelSend)(
158
+ todo,
159
+ parallel,
160
+ (value) => new Promise((resolve, reject) => {
161
+ uploadPartJob(value).then((result) => {
162
+ if (result) {
163
+ internalDoneParts.push(result);
164
+ }
165
+ resolve();
166
+ }).catch((err) => {
167
+ reject(err);
168
+ });
169
+ })
170
+ );
171
+ multipartFinish = true;
172
+ if (jobErr && jobErr.length > 0) {
173
+ const error = jobErr[0];
174
+ if (error.status === 5001 || error.status === 5002) {
175
+ throw error;
176
+ }
177
+ throw new import_UploadException.UploadException(
178
+ import_UploadException.UploadExceptionCode.UPLOAD_MULTIPART_ERROR,
179
+ error.message.replace("[Uploader] ", ""),
180
+ error.partNum
181
+ );
182
+ }
183
+ return completeMultipartUpload(name, UploadId, internalDoneParts, params, opt);
184
+ }
185
+ __name(resumeMultipart, "resumeMultipart");
186
+ const MultipartUpload = /* @__PURE__ */ __name(async (file, key, params, option) => {
187
+ const options = { ...option };
188
+ const { region, bucket, dir, access_key_secret, access_key_id, sts_token, callback } = params;
189
+ if (!region || !bucket || !dir || !access_key_secret || !access_key_id || !sts_token || !callback) {
190
+ throw new import_InitException.InitException(
191
+ import_InitException.InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
192
+ "aliyun",
193
+ "region",
194
+ "bucket",
195
+ "dir",
196
+ "access_key_id",
197
+ "access_key_secret",
198
+ "sts_token",
199
+ "callback"
200
+ );
201
+ }
202
+ const name = `${dir}${key}`;
203
+ const configParams = {
204
+ bucket,
205
+ region,
206
+ object: name,
207
+ accessKeyId: access_key_id,
208
+ accessKeySecret: access_key_secret,
209
+ stsToken: sts_token,
210
+ callback,
211
+ taskId: option.taskId
212
+ };
213
+ if (!options.mime) {
214
+ if ((0, import_checkDataFormat.isFile)(file)) {
215
+ options.mime = file.type;
216
+ } else if ((0, import_checkDataFormat.isBlob)(file)) {
217
+ options.mime = file.type;
218
+ } else {
219
+ options.mime = import_mime.default.getType((0, import_regExpUtil.parseExtname)(name));
220
+ }
221
+ }
222
+ if (options.checkpoint && options.checkpoint.UploadId) {
223
+ if (file && (0, import_checkDataFormat.isFile)(file))
224
+ options.checkpoint.file = file;
225
+ if (file)
226
+ options.checkpoint.file = file;
227
+ return resumeMultipart(options.checkpoint, configParams, options);
228
+ }
229
+ const minPartSize = 100 * 1024;
230
+ options.headers = options.headers || {};
231
+ const fileSize = file.size;
232
+ if (fileSize < minPartSize) {
233
+ return (0, import_STSUpload.STSUpload)(file, key, params, { ...options });
234
+ }
235
+ if (options.partSize && !(parseInt(String(options.partSize), 10) === options.partSize)) {
236
+ throw new import_InitException.InitException(import_InitException.InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_MUST_INT);
237
+ }
238
+ if (options.partSize && options.partSize < minPartSize) {
239
+ throw new import_InitException.InitException(import_InitException.InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_IS_SMALL, minPartSize);
240
+ }
241
+ const initResult = await initMultipartUpload(name, configParams, {
242
+ mime: options.mime,
243
+ headers: options.headers
244
+ });
245
+ const { UploadId } = initResult;
246
+ const partSize = (0, import_multipart.getPartSize)(fileSize, options.partSize);
247
+ const checkpoint = (0, import_multipart.initCheckpoint)(file, name, fileSize, partSize, UploadId);
248
+ if (options && options.progress) {
249
+ options.progress(0, 0, fileSize, checkpoint);
250
+ }
251
+ return resumeMultipart(checkpoint, configParams, {
252
+ ...options
253
+ });
254
+ }, "MultipartUpload");
255
+ // Annotate the CommonJS export names for ESM import in node:
256
+ 0 && (module.exports = {
257
+ MultipartUpload
258
+ });
259
+ //# 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":["mime"]}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var STSUpload_exports = {};
21
+ __export(STSUpload_exports, {
22
+ STSUpload: () => STSUpload
23
+ });
24
+ module.exports = __toCommonJS(STSUpload_exports);
25
+ var import_InitException = require("../../Exception/InitException");
26
+ var import_types = require("../../types");
27
+ var import_helper = require("./utils/helper");
28
+ var import_request = require("../../utils/request");
29
+ var import_response = require("../../utils/response");
30
+ const STSUpload = /* @__PURE__ */ __name(async (file, key, params, option) => {
31
+ const { region, bucket, dir, access_key_secret, access_key_id, sts_token, callback } = params;
32
+ if (!region || !bucket || !dir || !access_key_secret || !access_key_id || !sts_token || !callback) {
33
+ throw new import_InitException.InitException(
34
+ import_InitException.InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
35
+ "alien",
36
+ "region",
37
+ "bucket",
38
+ "dir",
39
+ "access_key_secret",
40
+ "access_key_id",
41
+ "sts_token",
42
+ "callback"
43
+ );
44
+ }
45
+ if (file?.size > 5 * 1024 * 1024 * 1024) {
46
+ throw new import_InitException.InitException(import_InitException.InitExceptionCode.UPLOAD_FILE_TO_BIG, key);
47
+ }
48
+ const configParams = {
49
+ ...params,
50
+ method: "PUT",
51
+ content: file,
52
+ object: `${dir}${key}`,
53
+ accessKeyId: access_key_id,
54
+ accessKeySecret: access_key_secret,
55
+ stsToken: sts_token,
56
+ subRes: ""
57
+ };
58
+ return (0, import_request.request)({
59
+ ...(0, import_helper.createRequest)(configParams, option),
60
+ taskId: option.taskId,
61
+ onProgress: option?.progress ? option.progress : () => {
62
+ }
63
+ }).then(({ headers, data: { path } }) => {
64
+ return (0, import_response.normalizeSuccessResponse)(path, import_types.PlatformType.OSS, headers);
65
+ });
66
+ }, "STSUpload");
67
+ // Annotate the CommonJS export names for ESM import in node:
68
+ 0 && (module.exports = {
69
+ STSUpload
70
+ });
71
+ //# 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":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAC,2BAAiD;AAElD,mBAA6B;AAE7B,oBAA8B;AAC9B,qBAAwB;AACxB,sBAAyC;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,uCAAkB;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,mCAAc,uCAAkB,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,aAAO,wBAAyB;AAAA,IAC/B,OAAG,6BAAc,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,eAAO,0CAAyB,MAAM,0BAAa,KAAK,OAAO;AAAA,EAChE,CAAC;AACF,GAtD4F;","names":[]}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var defaultUpload_exports = {};
21
+ __export(defaultUpload_exports, {
22
+ defaultUpload: () => defaultUpload
23
+ });
24
+ module.exports = __toCommonJS(defaultUpload_exports);
25
+ var import_InitException = require("../../Exception/InitException");
26
+ var import_UploadException = require("../../Exception/UploadException");
27
+ var import_types = require("../../types");
28
+ var import_request = require("../../utils/request");
29
+ var import_response = require("../../utils/response");
30
+ const defaultUpload = /* @__PURE__ */ __name((file, key, params, option) => {
31
+ const { policy, accessid, signature, host, dir, callback } = params;
32
+ if (!policy || !accessid || !signature || !host || !dir || !callback) {
33
+ throw new import_InitException.InitException(
34
+ import_InitException.InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
35
+ "aliyun",
36
+ "policy",
37
+ "accessid",
38
+ "signature",
39
+ "host",
40
+ "dir",
41
+ "callback"
42
+ );
43
+ }
44
+ if (file?.size > 5 * 1024 * 1024 * 1024) {
45
+ throw new import_InitException.InitException(import_InitException.InitExceptionCode.UPLOAD_FILE_TO_BIG, key);
46
+ }
47
+ const formData = new FormData();
48
+ formData.append("key", `${dir}${key}`);
49
+ formData.append("policy", policy);
50
+ formData.append("OSSAccessKeyId", accessid);
51
+ formData.append("signature", signature);
52
+ formData.append("success_action_status", "200");
53
+ formData.append("callback", callback);
54
+ formData.append("file", file);
55
+ return (0, import_request.request)({
56
+ method: "post",
57
+ url: host,
58
+ data: formData,
59
+ headers: option?.headers ? option?.headers : {},
60
+ taskId: option.taskId,
61
+ onProgress: option?.progress ? option.progress : () => {
62
+ },
63
+ fail: (status, reject) => {
64
+ if (status === 403) {
65
+ reject(new import_UploadException.UploadException(import_UploadException.UploadExceptionCode.UPLOAD_CREDENTIALS_IS_EXPIRED));
66
+ }
67
+ }
68
+ }).then(({ headers, data: { path } }) => {
69
+ return (0, import_response.normalizeSuccessResponse)(path, import_types.PlatformType.OSS, headers);
70
+ });
71
+ }, "defaultUpload");
72
+ // Annotate the CommonJS export names for ESM import in node:
73
+ 0 && (module.exports = {
74
+ defaultUpload
75
+ });
76
+ //# 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":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAC,2BAAiD;AAClD,6BAAqD;AAErD,mBAA6B;AAE7B,qBAAwB;AACxB,sBAAyC;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,uCAAkB;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,mCAAc,uCAAkB,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,aAAO,wBAA0B;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,uCAAgB,2CAAoB,6BAA6B,CAAC;AAAA,MAC9E;AAAA,IACD;AAAA,EACD,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM;AACxC,eAAO,0CAAyB,MAAM,0BAAa,KAAK,OAAO;AAAA,EAChE,CAAC;AACF,GApD0F;","names":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var OSS_exports = {};
21
+ __export(OSS_exports, {
22
+ default: () => OSS_default
23
+ });
24
+ module.exports = __toCommonJS(OSS_exports);
25
+ var import_MultipartUpload = require("./MultipartUpload");
26
+ var import_defaultUpload = require("./defaultUpload");
27
+ var import_STSUpload = require("./STSUpload");
28
+ const upload = /* @__PURE__ */ __name((file, key, params, option) => {
29
+ if (Object.prototype.hasOwnProperty.call(params, "sts_token")) {
30
+ return (0, import_MultipartUpload.MultipartUpload)(file, key, params, option);
31
+ }
32
+ return (0, import_defaultUpload.defaultUpload)(file, key, params, option);
33
+ }, "upload");
34
+ var OSS_default = { upload, defaultUpload: import_defaultUpload.defaultUpload, MultipartUpload: import_MultipartUpload.MultipartUpload, STSUpload: import_STSUpload.STSUpload };
35
+ //# 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":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,6BAAgC;AAChC,2BAA8B;AAC9B,uBAA0B;AAE1B,MAAM,SAGF,wBAAC,MAAM,KAAK,QAAQ,WAAW;AAElC,MAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,WAAW,GAAG;AAC9D,eAAO,wCAAgB,MAAM,KAAwB,QAAQ,MAAM;AAAA,EACpE;AACA,aAAO,oCAAc,MAAM,KAAqB,QAAQ,MAAM;AAC/D,GANI;AAQJ,IAAO,cAAQ,EAAE,QAAQ,mDAAe,yDAAiB,sCAAU;","names":[]}