@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.
- package/LICENSE +8 -0
- package/README.md +132 -0
- package/dist/es/Exception/BaseException.js +14 -0
- package/dist/es/Exception/BaseException.js.map +1 -0
- package/dist/es/Exception/DownloadException.js +40 -0
- package/dist/es/Exception/DownloadException.js.map +1 -0
- package/dist/es/Exception/HttpException.js +50 -0
- package/dist/es/Exception/HttpException.js.map +1 -0
- package/dist/es/Exception/InitException.js +49 -0
- package/dist/es/Exception/InitException.js.map +1 -0
- package/dist/es/Exception/UploadException.js +50 -0
- package/dist/es/Exception/UploadException.js.map +1 -0
- package/dist/es/index.d.ts +867 -0
- package/dist/es/index.js +162 -0
- package/dist/es/index.js.map +1 -0
- package/dist/es/modules/Kodo/defaultUpload.js +38 -0
- package/dist/es/modules/Kodo/defaultUpload.js.map +1 -0
- package/dist/es/modules/Kodo/index.js +8 -0
- package/dist/es/modules/Kodo/index.js.map +1 -0
- package/dist/es/modules/Local/index.js +31 -0
- package/dist/es/modules/Local/index.js.map +1 -0
- package/dist/es/modules/MinIO/MultipartUpload.js +335 -0
- package/dist/es/modules/MinIO/MultipartUpload.js.map +1 -0
- package/dist/es/modules/MinIO/STSUpload.js +10 -0
- package/dist/es/modules/MinIO/STSUpload.js.map +1 -0
- package/dist/es/modules/MinIO/defaultUpload.js +124 -0
- package/dist/es/modules/MinIO/defaultUpload.js.map +1 -0
- package/dist/es/modules/MinIO/index.js +16 -0
- package/dist/es/modules/MinIO/index.js.map +1 -0
- package/dist/es/modules/OBS/MultipartUpload.js +269 -0
- package/dist/es/modules/OBS/MultipartUpload.js.map +1 -0
- package/dist/es/modules/OBS/STSUpload.js +71 -0
- package/dist/es/modules/OBS/STSUpload.js.map +1 -0
- package/dist/es/modules/OBS/defaultUpload.js +59 -0
- package/dist/es/modules/OBS/defaultUpload.js.map +1 -0
- package/dist/es/modules/OBS/index.js +16 -0
- package/dist/es/modules/OBS/index.js.map +1 -0
- package/dist/es/modules/OBS/utils/index.js +25 -0
- package/dist/es/modules/OBS/utils/index.js.map +1 -0
- package/dist/es/modules/OSS/MultipartUpload.js +232 -0
- package/dist/es/modules/OSS/MultipartUpload.js.map +1 -0
- package/dist/es/modules/OSS/STSUpload.js +48 -0
- package/dist/es/modules/OSS/STSUpload.js.map +1 -0
- package/dist/es/modules/OSS/defaultUpload.js +53 -0
- package/dist/es/modules/OSS/defaultUpload.js.map +1 -0
- package/dist/es/modules/OSS/index.js +16 -0
- package/dist/es/modules/OSS/index.js.map +1 -0
- package/dist/es/modules/OSS/utils/helper.js +137 -0
- package/dist/es/modules/OSS/utils/helper.js.map +1 -0
- package/dist/es/modules/OSS/utils/signature.js +96 -0
- package/dist/es/modules/OSS/utils/signature.js.map +1 -0
- package/dist/es/modules/TOS/MultipartUpload.js +288 -0
- package/dist/es/modules/TOS/MultipartUpload.js.map +1 -0
- package/dist/es/modules/TOS/STSUpload.js +92 -0
- package/dist/es/modules/TOS/STSUpload.js.map +1 -0
- package/dist/es/modules/TOS/defaultUpload.js +65 -0
- package/dist/es/modules/TOS/defaultUpload.js.map +1 -0
- package/dist/es/modules/TOS/index.js +16 -0
- package/dist/es/modules/TOS/index.js.map +1 -0
- package/dist/es/modules/TOS/utils/TosClientError.js +15 -0
- package/dist/es/modules/TOS/utils/TosClientError.js.map +1 -0
- package/dist/es/modules/TOS/utils/index.js +38 -0
- package/dist/es/modules/TOS/utils/index.js.map +1 -0
- package/dist/es/modules/TOS/utils/signatureV4.js +269 -0
- package/dist/es/modules/TOS/utils/signatureV4.js.map +1 -0
- package/dist/es/modules/TOS/utils/signatureV4Credentials.js +21 -0
- package/dist/es/modules/TOS/utils/signatureV4Credentials.js.map +1 -0
- package/dist/es/modules/TOS/utils/universal/crypto.browser.js +56 -0
- package/dist/es/modules/TOS/utils/universal/crypto.browser.js.map +1 -0
- package/dist/es/modules/TOS/utils/utils.js +18 -0
- package/dist/es/modules/TOS/utils/utils.js.map +1 -0
- package/dist/es/modules/index.js +20 -0
- package/dist/es/modules/index.js.map +1 -0
- package/dist/es/types/Kodo.js +1 -0
- package/dist/es/types/Kodo.js.map +1 -0
- package/dist/es/types/Local.js +1 -0
- package/dist/es/types/Local.js.map +1 -0
- package/dist/es/types/MinIO.js +1 -0
- package/dist/es/types/MinIO.js.map +1 -0
- package/dist/es/types/OBS.js +8 -0
- package/dist/es/types/OBS.js.map +1 -0
- package/dist/es/types/OSS.js +1 -0
- package/dist/es/types/OSS.js.map +1 -0
- package/dist/es/types/TOS.js +1 -0
- package/dist/es/types/TOS.js.map +1 -0
- package/dist/es/types/error.js +1 -0
- package/dist/es/types/error.js.map +1 -0
- package/dist/es/types/index.js +13 -0
- package/dist/es/types/index.js.map +1 -0
- package/dist/es/types/log.js +1 -0
- package/dist/es/types/log.js.map +1 -0
- package/dist/es/types/request.js +1 -0
- package/dist/es/types/request.js.map +1 -0
- package/dist/es/utils/EventEmitter.js +32 -0
- package/dist/es/utils/EventEmitter.js.map +1 -0
- package/dist/es/utils/UploadManger.js +276 -0
- package/dist/es/utils/UploadManger.js.map +1 -0
- package/dist/es/utils/UploadTask.js +13 -0
- package/dist/es/utils/UploadTask.js.map +1 -0
- package/dist/es/utils/checkDataFormat.js +41 -0
- package/dist/es/utils/checkDataFormat.js.map +1 -0
- package/dist/es/utils/global.js +83 -0
- package/dist/es/utils/global.js.map +1 -0
- package/dist/es/utils/index.js +20 -0
- package/dist/es/utils/index.js.map +1 -0
- package/dist/es/utils/logPubSub.js +59 -0
- package/dist/es/utils/logPubSub.js.map +1 -0
- package/dist/es/utils/multipart.js +159 -0
- package/dist/es/utils/multipart.js.map +1 -0
- package/dist/es/utils/nanoid.js +10 -0
- package/dist/es/utils/nanoid.js.map +1 -0
- package/dist/es/utils/regExpUtil.js +21 -0
- package/dist/es/utils/regExpUtil.js.map +1 -0
- package/dist/es/utils/request.js +234 -0
- package/dist/es/utils/request.js.map +1 -0
- package/dist/es/utils/response.js +20 -0
- package/dist/es/utils/response.js.map +1 -0
- package/dist/index.d.ts +867 -0
- package/dist/index.js +60913 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +130 -0
- package/dist/index.min.js.map +1 -0
- package/dist/lib/Exception/BaseException.js +37 -0
- package/dist/lib/Exception/BaseException.js.map +1 -0
- package/dist/lib/Exception/DownloadException.js +65 -0
- package/dist/lib/Exception/DownloadException.js.map +1 -0
- package/dist/lib/Exception/HttpException.js +75 -0
- package/dist/lib/Exception/HttpException.js.map +1 -0
- package/dist/lib/Exception/InitException.js +73 -0
- package/dist/lib/Exception/InitException.js.map +1 -0
- package/dist/lib/Exception/UploadException.js +75 -0
- package/dist/lib/Exception/UploadException.js.map +1 -0
- package/dist/lib/index.d.cts +867 -0
- package/dist/lib/index.js +203 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/modules/Kodo/defaultUpload.js +61 -0
- package/dist/lib/modules/Kodo/defaultUpload.js.map +1 -0
- package/dist/lib/modules/Kodo/index.js +28 -0
- package/dist/lib/modules/Kodo/index.js.map +1 -0
- package/dist/lib/modules/Local/index.js +50 -0
- package/dist/lib/modules/Local/index.js.map +1 -0
- package/dist/lib/modules/MinIO/MultipartUpload.js +357 -0
- package/dist/lib/modules/MinIO/MultipartUpload.js.map +1 -0
- package/dist/lib/modules/MinIO/STSUpload.js +33 -0
- package/dist/lib/modules/MinIO/STSUpload.js.map +1 -0
- package/dist/lib/modules/MinIO/defaultUpload.js +158 -0
- package/dist/lib/modules/MinIO/defaultUpload.js.map +1 -0
- package/dist/lib/modules/MinIO/index.js +35 -0
- package/dist/lib/modules/MinIO/index.js.map +1 -0
- package/dist/lib/modules/OBS/MultipartUpload.js +296 -0
- package/dist/lib/modules/OBS/MultipartUpload.js.map +1 -0
- package/dist/lib/modules/OBS/STSUpload.js +104 -0
- package/dist/lib/modules/OBS/STSUpload.js.map +1 -0
- package/dist/lib/modules/OBS/defaultUpload.js +88 -0
- package/dist/lib/modules/OBS/defaultUpload.js.map +1 -0
- package/dist/lib/modules/OBS/index.js +45 -0
- package/dist/lib/modules/OBS/index.js.map +1 -0
- package/dist/lib/modules/OBS/utils/index.js +49 -0
- package/dist/lib/modules/OBS/utils/index.js.map +1 -0
- package/dist/lib/modules/OSS/MultipartUpload.js +259 -0
- package/dist/lib/modules/OSS/MultipartUpload.js.map +1 -0
- package/dist/lib/modules/OSS/STSUpload.js +71 -0
- package/dist/lib/modules/OSS/STSUpload.js.map +1 -0
- package/dist/lib/modules/OSS/defaultUpload.js +76 -0
- package/dist/lib/modules/OSS/defaultUpload.js.map +1 -0
- package/dist/lib/modules/OSS/index.js +35 -0
- package/dist/lib/modules/OSS/index.js.map +1 -0
- package/dist/lib/modules/OSS/utils/helper.js +173 -0
- package/dist/lib/modules/OSS/utils/helper.js.map +1 -0
- package/dist/lib/modules/OSS/utils/signature.js +132 -0
- package/dist/lib/modules/OSS/utils/signature.js.map +1 -0
- package/dist/lib/modules/TOS/MultipartUpload.js +315 -0
- package/dist/lib/modules/TOS/MultipartUpload.js.map +1 -0
- package/dist/lib/modules/TOS/STSUpload.js +125 -0
- package/dist/lib/modules/TOS/STSUpload.js.map +1 -0
- package/dist/lib/modules/TOS/defaultUpload.js +94 -0
- package/dist/lib/modules/TOS/defaultUpload.js.map +1 -0
- package/dist/lib/modules/TOS/index.js +45 -0
- package/dist/lib/modules/TOS/index.js.map +1 -0
- package/dist/lib/modules/TOS/utils/TosClientError.js +34 -0
- package/dist/lib/modules/TOS/utils/TosClientError.js.map +1 -0
- package/dist/lib/modules/TOS/utils/index.js +64 -0
- package/dist/lib/modules/TOS/utils/index.js.map +1 -0
- package/dist/lib/modules/TOS/utils/signatureV4.js +294 -0
- package/dist/lib/modules/TOS/utils/signatureV4.js.map +1 -0
- package/dist/lib/modules/TOS/utils/signatureV4Credentials.js +44 -0
- package/dist/lib/modules/TOS/utils/signatureV4Credentials.js.map +1 -0
- package/dist/lib/modules/TOS/utils/universal/crypto.browser.js +93 -0
- package/dist/lib/modules/TOS/utils/universal/crypto.browser.js.map +1 -0
- package/dist/lib/modules/TOS/utils/utils.js +42 -0
- package/dist/lib/modules/TOS/utils/utils.js.map +1 -0
- package/dist/lib/modules/index.js +50 -0
- package/dist/lib/modules/index.js.map +1 -0
- package/dist/lib/types/Kodo.js +17 -0
- package/dist/lib/types/Kodo.js.map +1 -0
- package/dist/lib/types/Local.js +17 -0
- package/dist/lib/types/Local.js.map +1 -0
- package/dist/lib/types/MinIO.js +17 -0
- package/dist/lib/types/MinIO.js.map +1 -0
- package/dist/lib/types/OBS.js +32 -0
- package/dist/lib/types/OBS.js.map +1 -0
- package/dist/lib/types/OSS.js +17 -0
- package/dist/lib/types/OSS.js.map +1 -0
- package/dist/lib/types/TOS.js +17 -0
- package/dist/lib/types/TOS.js.map +1 -0
- package/dist/lib/types/error.js +17 -0
- package/dist/lib/types/error.js.map +1 -0
- package/dist/lib/types/index.js +37 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/types/log.js +17 -0
- package/dist/lib/types/log.js.map +1 -0
- package/dist/lib/types/request.js +17 -0
- package/dist/lib/types/request.js.map +1 -0
- package/dist/lib/utils/EventEmitter.js +51 -0
- package/dist/lib/utils/EventEmitter.js.map +1 -0
- package/dist/lib/utils/UploadManger.js +309 -0
- package/dist/lib/utils/UploadManger.js.map +1 -0
- package/dist/lib/utils/UploadTask.js +32 -0
- package/dist/lib/utils/UploadTask.js.map +1 -0
- package/dist/lib/utils/checkDataFormat.js +70 -0
- package/dist/lib/utils/checkDataFormat.js.map +1 -0
- package/dist/lib/utils/global.js +106 -0
- package/dist/lib/utils/global.js.map +1 -0
- package/dist/lib/utils/index.js +44 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/utils/logPubSub.js +78 -0
- package/dist/lib/utils/logPubSub.js.map +1 -0
- package/dist/lib/utils/multipart.js +197 -0
- package/dist/lib/utils/multipart.js.map +1 -0
- package/dist/lib/utils/nanoid.js +33 -0
- package/dist/lib/utils/nanoid.js.map +1 -0
- package/dist/lib/utils/regExpUtil.js +44 -0
- package/dist/lib/utils/regExpUtil.js.map +1 -0
- package/dist/lib/utils/request.js +264 -0
- package/dist/lib/utils/request.js.map +1 -0
- package/dist/lib/utils/response.js +43 -0
- package/dist/lib/utils/response.js.map +1 -0
- package/dist/package.json +120 -0
- package/package.json +120 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import Base64 from "crypto-js/enc-base64";
|
|
4
|
+
import hmacSHA1 from "crypto-js/hmac-sha1";
|
|
5
|
+
import { isObject } from "../../../utils/checkDataFormat";
|
|
6
|
+
function computeSignature(accessKeySecret, canonicalString) {
|
|
7
|
+
return Base64.stringify(hmacSHA1(canonicalString, accessKeySecret));
|
|
8
|
+
}
|
|
9
|
+
__name(computeSignature, "computeSignature");
|
|
10
|
+
function lowercaseKeyHeader(headers) {
|
|
11
|
+
const lowercaseHeader = {};
|
|
12
|
+
if (isObject(headers)) {
|
|
13
|
+
Object.keys(headers).forEach((key) => {
|
|
14
|
+
lowercaseHeader[key.toLowerCase()] = headers[key];
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return lowercaseHeader;
|
|
18
|
+
}
|
|
19
|
+
__name(lowercaseKeyHeader, "lowercaseKeyHeader");
|
|
20
|
+
function buildCanonicalResourceResource(resourcePath, parameters) {
|
|
21
|
+
let canonicalResourceResource = `${resourcePath}`;
|
|
22
|
+
let separatorString = "?";
|
|
23
|
+
if (typeof parameters === "string" && parameters.trim() !== "") {
|
|
24
|
+
canonicalResourceResource += separatorString + parameters;
|
|
25
|
+
} else if (Array.isArray(parameters)) {
|
|
26
|
+
parameters.sort();
|
|
27
|
+
canonicalResourceResource += separatorString + parameters.join("&");
|
|
28
|
+
} else if (parameters) {
|
|
29
|
+
const compareFunc = /* @__PURE__ */ __name((entry1, entry2) => {
|
|
30
|
+
if (entry1[0] > entry2[0]) {
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
if (entry1[0] < entry2[0]) {
|
|
34
|
+
return -1;
|
|
35
|
+
}
|
|
36
|
+
return 0;
|
|
37
|
+
}, "compareFunc");
|
|
38
|
+
const processFunc = /* @__PURE__ */ __name((key) => {
|
|
39
|
+
canonicalResourceResource += separatorString + key;
|
|
40
|
+
if (parameters[key] || parameters[key] === 0) {
|
|
41
|
+
canonicalResourceResource += `=${parameters[key]}`;
|
|
42
|
+
}
|
|
43
|
+
separatorString = "&";
|
|
44
|
+
}, "processFunc");
|
|
45
|
+
Object.keys(parameters).sort(compareFunc).forEach(processFunc);
|
|
46
|
+
}
|
|
47
|
+
return canonicalResourceResource;
|
|
48
|
+
}
|
|
49
|
+
__name(buildCanonicalResourceResource, "buildCanonicalResourceResource");
|
|
50
|
+
function buildCanonicalString(method, resourcePath, request, expires) {
|
|
51
|
+
const req = request || {};
|
|
52
|
+
const headers = lowercaseKeyHeader(req.headers);
|
|
53
|
+
const OSS_PREFIX = "x-oss-";
|
|
54
|
+
const ossHeaders = [];
|
|
55
|
+
const headersToSign = {};
|
|
56
|
+
let signContent = [
|
|
57
|
+
method.toUpperCase(),
|
|
58
|
+
headers["content-md5"] || "",
|
|
59
|
+
headers["content-type"],
|
|
60
|
+
expires || headers["x-oss-date"]
|
|
61
|
+
];
|
|
62
|
+
Object.keys(headers).forEach((key) => {
|
|
63
|
+
const lowerKey = key.toLowerCase();
|
|
64
|
+
if (lowerKey.indexOf(OSS_PREFIX) === 0) {
|
|
65
|
+
headersToSign[lowerKey] = String(headers[key]).trim();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
Object.keys(headersToSign).sort().forEach((key) => {
|
|
69
|
+
ossHeaders.push(`${key}:${headersToSign[key]}`);
|
|
70
|
+
});
|
|
71
|
+
signContent = signContent.concat(ossHeaders);
|
|
72
|
+
signContent.push(buildCanonicalResourceResource(resourcePath, req.parameters));
|
|
73
|
+
return signContent.join("\n");
|
|
74
|
+
}
|
|
75
|
+
__name(buildCanonicalString, "buildCanonicalString");
|
|
76
|
+
function authorization(method, resource, subRes, headers, option) {
|
|
77
|
+
const stringToSign = buildCanonicalString(
|
|
78
|
+
method.toUpperCase(),
|
|
79
|
+
resource,
|
|
80
|
+
{
|
|
81
|
+
headers,
|
|
82
|
+
parameters: subRes
|
|
83
|
+
},
|
|
84
|
+
""
|
|
85
|
+
);
|
|
86
|
+
const { accessKeyId, accessKeySecret } = option;
|
|
87
|
+
return `OSS ${accessKeyId}:${computeSignature(accessKeySecret, stringToSign)}`;
|
|
88
|
+
}
|
|
89
|
+
__name(authorization, "authorization");
|
|
90
|
+
export {
|
|
91
|
+
authorization,
|
|
92
|
+
buildCanonicalResourceResource,
|
|
93
|
+
buildCanonicalString,
|
|
94
|
+
computeSignature
|
|
95
|
+
};
|
|
96
|
+
//# 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":";;AAAC,OAAO,YAAY;AACpB,OAAO,cAAc;AAGrB,SAAS,gBAAgB;AAMlB,SAAS,iBAAiB,iBAAyB,iBAAyB;AAClF,SAAO,OAAO,UAAU,SAAS,iBAAiB,eAAe,CAAC;AACnE;AAFgB;AAIhB,SAAS,mBAAmB,SAAiC;AAC5D,QAAM,kBAA0C,CAAC;AACjD,MAAI,SAAS,OAAO,GAAG;AACtB,WAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACrC,sBAAgB,IAAI,YAAY,CAAC,IAAI,QAAQ,GAAG;AAAA,IACjD,CAAC;AAAA,EACF;AACA,SAAO;AACR;AARS;AAgBF,SAAS,+BAA+B,cAAsB,YAAiB;AACrF,MAAI,4BAA4B,GAAG,YAAY;AAC/C,MAAI,kBAAkB;AAEtB,MAAI,OAAO,eAAe,YAAY,WAAW,KAAK,MAAM,IAAI;AAC/D,iCAA6B,kBAAkB;AAAA,EAChD,WAAW,MAAM,QAAQ,UAAU,GAAG;AACrC,eAAW,KAAK;AAChB,iCAA6B,kBAAkB,WAAW,KAAK,GAAG;AAAA,EACnE,WAAW,YAAY;AACtB,UAAM,cAAc,wBAAC,QAAgB,WAAmB;AACvD,UAAI,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG;AAC1B,eAAO;AAAA,MACR;AACA,UAAI,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG;AAC1B,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR,GARoB;AASpB,UAAM,cAAc,wBAAC,QAAgB;AACpC,mCAA6B,kBAAkB;AAC/C,UAAI,WAAW,GAAG,KAAK,WAAW,GAAG,MAAM,GAAG;AAC7C,qCAA6B,IAAI,WAAW,GAAG,CAAC;AAAA,MACjD;AACA,wBAAkB;AAAA,IACnB,GANoB;AAOpB,WAAO,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,QAAQ,WAAW;AAAA,EAC9D;AAEA,SAAO;AACR;AA9BgB;AAsCT,SAAS,qBACf,QACA,cACA,SACA,SACC;AACD,QAAM,MAAM,WAAW,CAAC;AACxB,QAAM,UAAU,mBAAmB,IAAI,OAAO;AAC9C,QAAM,aAAa;AACnB,QAAM,aAAuB,CAAC;AAC9B,QAAM,gBAAwC,CAAC;AAE/C,MAAI,cAAc;AAAA,IACjB,OAAO,YAAY;AAAA,IACnB,QAAQ,aAAa,KAAK;AAAA,IAC1B,QAAQ,cAAc;AAAA,IACtB,WAAW,QAAQ,YAAY;AAAA,EAChC;AAEA,SAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACrC,UAAM,WAAW,IAAI,YAAY;AACjC,QAAI,SAAS,QAAQ,UAAU,MAAM,GAAG;AACvC,oBAAc,QAAQ,IAAI,OAAO,QAAQ,GAAG,CAAC,EAAE,KAAK;AAAA,IACrD;AAAA,EACD,CAAC;AAED,SAAO,KAAK,aAAa,EACvB,KAAK,EACL,QAAQ,CAAC,QAAQ;AACjB,eAAW,KAAK,GAAG,GAAG,IAAI,cAAc,GAAG,CAAC,EAAE;AAAA,EAC/C,CAAC;AAEF,gBAAc,YAAY,OAAO,UAAU;AAE3C,cAAY,KAAK,+BAA+B,cAAc,IAAI,UAAU,CAAC;AAE7E,SAAO,YAAY,KAAK,IAAI;AAC7B;AArCgB;AA+CT,SAAS,cACf,QACA,UACA,QACA,SACA,QACC;AACD,QAAM,eAAe;AAAA,IACR,OAAO,YAAY;AAAA,IAC/B;AAAA,IACA;AAAA,MACC;AAAA,MACA,YAAY;AAAA,IACb;AAAA,IACA;AAAA,EACD;AACA,QAAM,EAAE,aAAa,gBAAgB,IAAI;AACzC,SAAO,OAAO,WAAW,IAAI,iBAAiB,iBAAiB,YAAY,CAAC;AAC7E;AAlBgB;","names":[]}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import mime from "mime";
|
|
4
|
+
import { InitException, InitExceptionCode } from "../../Exception/InitException";
|
|
5
|
+
import { UploadException, UploadExceptionCode } from "../../Exception/UploadException";
|
|
6
|
+
import { PlatformType } from "../../types";
|
|
7
|
+
import { isBlob, isFile } from "../../utils/checkDataFormat";
|
|
8
|
+
import {
|
|
9
|
+
createBuffer,
|
|
10
|
+
divideParts,
|
|
11
|
+
getPartSize,
|
|
12
|
+
initCheckpoint,
|
|
13
|
+
parallelSend
|
|
14
|
+
} from "../../utils/multipart";
|
|
15
|
+
import { parseExtname } from "../../utils/regExpUtil";
|
|
16
|
+
import { request } from "../../utils/request";
|
|
17
|
+
import { normalizeSuccessResponse } from "../../utils/response";
|
|
18
|
+
import { VOLCENGINE_MIN_PART_SIZE, getAuthHeaders, removeProtocol } from "./utils";
|
|
19
|
+
import { SignersV4 } from "./utils/signatureV4";
|
|
20
|
+
import { getSortedQueryString } from "./utils/utils";
|
|
21
|
+
import { STSUpload } from "./STSUpload";
|
|
22
|
+
import { SignatureV4Credentials } from "./utils/signatureV4Credentials";
|
|
23
|
+
async function initMultipartUpload(name, { bucket, host, expires }, { signers, headers: OptionHeaders, ...otherOptions }) {
|
|
24
|
+
const headers = { ...OptionHeaders };
|
|
25
|
+
const reqHeaders = getAuthHeaders(
|
|
26
|
+
{
|
|
27
|
+
bucket,
|
|
28
|
+
method: "POST",
|
|
29
|
+
headers,
|
|
30
|
+
path: `/${encodeURIComponent(name)}`,
|
|
31
|
+
query: getSortedQueryString({ uploads: "" }),
|
|
32
|
+
host: removeProtocol(host)
|
|
33
|
+
},
|
|
34
|
+
signers,
|
|
35
|
+
expires
|
|
36
|
+
);
|
|
37
|
+
const { data } = await request({
|
|
38
|
+
url: `${host}/${encodeURIComponent(name)}`,
|
|
39
|
+
query: { uploads: "" },
|
|
40
|
+
headers: { ...headers, ...reqHeaders },
|
|
41
|
+
method: "POST",
|
|
42
|
+
withoutWrapper: true,
|
|
43
|
+
...otherOptions
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
res: data,
|
|
47
|
+
bucket: data.Bucket,
|
|
48
|
+
name: data.Key,
|
|
49
|
+
UploadId: data.UploadId
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
__name(initMultipartUpload, "initMultipartUpload");
|
|
53
|
+
async function completeMultipartUpload(name, UploadId, parts, { bucket, host, expires }, { signers, progress, partSize, ...otherOptions }) {
|
|
54
|
+
const completeParts = parts.concat().sort((a, b) => a.number - b.number).filter((item, index, arr) => !index || item.number !== arr[index - 1].number);
|
|
55
|
+
const headers = {};
|
|
56
|
+
const reqHeaders = getAuthHeaders(
|
|
57
|
+
{
|
|
58
|
+
bucket,
|
|
59
|
+
method: "POST",
|
|
60
|
+
headers,
|
|
61
|
+
path: `/${encodeURIComponent(name)}`,
|
|
62
|
+
query: getSortedQueryString({ UploadId }),
|
|
63
|
+
host: removeProtocol(host)
|
|
64
|
+
},
|
|
65
|
+
signers,
|
|
66
|
+
expires
|
|
67
|
+
);
|
|
68
|
+
const result = await request({
|
|
69
|
+
url: `${host}/${encodeURIComponent(name)}`,
|
|
70
|
+
method: "POST",
|
|
71
|
+
query: {
|
|
72
|
+
UploadId
|
|
73
|
+
},
|
|
74
|
+
headers: { ...headers, ...reqHeaders },
|
|
75
|
+
data: JSON.stringify({
|
|
76
|
+
Parts: completeParts.map((item) => ({
|
|
77
|
+
eTag: item.etag,
|
|
78
|
+
partNumber: item.number
|
|
79
|
+
}))
|
|
80
|
+
}),
|
|
81
|
+
...otherOptions
|
|
82
|
+
});
|
|
83
|
+
if (progress && partSize) {
|
|
84
|
+
progress(100, parts.length * partSize, parts.length * partSize, null);
|
|
85
|
+
}
|
|
86
|
+
return normalizeSuccessResponse(result.Key, PlatformType.TOS, result.headers);
|
|
87
|
+
}
|
|
88
|
+
__name(completeMultipartUpload, "completeMultipartUpload");
|
|
89
|
+
async function uploadPart(name, UploadId, partNo, data, { bucket, host, expires }, { signers, ...otherOptions }) {
|
|
90
|
+
const headers = {};
|
|
91
|
+
const reqHeaders = getAuthHeaders(
|
|
92
|
+
{
|
|
93
|
+
bucket,
|
|
94
|
+
method: "PUT",
|
|
95
|
+
headers,
|
|
96
|
+
path: `/${encodeURIComponent(name)}`,
|
|
97
|
+
query: getSortedQueryString({ partNumber: partNo, UploadId }),
|
|
98
|
+
host: removeProtocol(host)
|
|
99
|
+
},
|
|
100
|
+
signers,
|
|
101
|
+
expires
|
|
102
|
+
);
|
|
103
|
+
const result = await request({
|
|
104
|
+
url: `${host}/${encodeURIComponent(name)}`,
|
|
105
|
+
query: { partNumber: `${partNo}`, UploadId },
|
|
106
|
+
method: "PUT",
|
|
107
|
+
data: data.content,
|
|
108
|
+
headers: { ...headers, ...reqHeaders },
|
|
109
|
+
taskId: `${partNo}`,
|
|
110
|
+
...otherOptions
|
|
111
|
+
});
|
|
112
|
+
if (!result.headers.etag) {
|
|
113
|
+
throw new InitException(InitExceptionCode.UPLOAD_HEAD_NO_EXPOSE_ETAG);
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
name,
|
|
117
|
+
etag: result.headers.etag,
|
|
118
|
+
res: result
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
__name(uploadPart, "uploadPart");
|
|
122
|
+
async function resumeMultipart(checkpoint, params, options) {
|
|
123
|
+
const { file, fileSize, partSize, UploadId, doneParts, name } = checkpoint;
|
|
124
|
+
const internalDoneParts = doneParts.length > 0 ? [...doneParts] : [];
|
|
125
|
+
const partOffs = divideParts(fileSize, partSize);
|
|
126
|
+
const numParts = partOffs.length;
|
|
127
|
+
let multipartFinish = false;
|
|
128
|
+
const opt = { ...options, partSize };
|
|
129
|
+
const uploadPartJob = /* @__PURE__ */ __name((partNo) => (
|
|
130
|
+
// eslint-disable-next-line no-async-promise-executor
|
|
131
|
+
new Promise(async (resolve, reject) => {
|
|
132
|
+
try {
|
|
133
|
+
const pi = partOffs[partNo - 1];
|
|
134
|
+
const content = await createBuffer(file, pi.start, pi.end);
|
|
135
|
+
const data = {
|
|
136
|
+
content,
|
|
137
|
+
size: pi.end - pi.start
|
|
138
|
+
};
|
|
139
|
+
const result = await uploadPart(name, UploadId, partNo, data, params, {
|
|
140
|
+
...opt
|
|
141
|
+
});
|
|
142
|
+
if (!multipartFinish) {
|
|
143
|
+
checkpoint.doneParts.push({
|
|
144
|
+
number: partNo,
|
|
145
|
+
etag: result.etag
|
|
146
|
+
});
|
|
147
|
+
if (typeof options.progress === "function") {
|
|
148
|
+
options.progress(
|
|
149
|
+
doneParts.length / (numParts + 1) * 100,
|
|
150
|
+
doneParts.length * partSize,
|
|
151
|
+
fileSize,
|
|
152
|
+
checkpoint
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
resolve({
|
|
156
|
+
number: partNo,
|
|
157
|
+
etag: result.etag
|
|
158
|
+
});
|
|
159
|
+
} else {
|
|
160
|
+
resolve();
|
|
161
|
+
}
|
|
162
|
+
} catch (err) {
|
|
163
|
+
const tempErr = new Error();
|
|
164
|
+
tempErr.name = err.name;
|
|
165
|
+
tempErr.message = err.message;
|
|
166
|
+
tempErr.stack = err.stack;
|
|
167
|
+
tempErr.partNum = partNo;
|
|
168
|
+
tempErr.status = err.status;
|
|
169
|
+
reject(tempErr);
|
|
170
|
+
}
|
|
171
|
+
})
|
|
172
|
+
), "uploadPartJob");
|
|
173
|
+
const all = Array.from(new Array(numParts), (_, i) => i + 1);
|
|
174
|
+
const done = internalDoneParts.map((p) => p.number);
|
|
175
|
+
const todo = all.filter((p) => done.indexOf(p) < 0);
|
|
176
|
+
const defaultParallel = 5;
|
|
177
|
+
const parallel = opt.parallel || defaultParallel;
|
|
178
|
+
const jobErr = await parallelSend(
|
|
179
|
+
todo,
|
|
180
|
+
parallel,
|
|
181
|
+
(value) => new Promise((resolve, reject) => {
|
|
182
|
+
uploadPartJob(value).then((result) => {
|
|
183
|
+
if (result) {
|
|
184
|
+
internalDoneParts.push(result);
|
|
185
|
+
}
|
|
186
|
+
resolve();
|
|
187
|
+
}).catch((err) => {
|
|
188
|
+
reject(err);
|
|
189
|
+
});
|
|
190
|
+
})
|
|
191
|
+
);
|
|
192
|
+
multipartFinish = true;
|
|
193
|
+
if (jobErr && jobErr.length > 0) {
|
|
194
|
+
const error = jobErr[0];
|
|
195
|
+
if (error.status === 5001 || error.status === 5002) {
|
|
196
|
+
throw error;
|
|
197
|
+
}
|
|
198
|
+
throw new UploadException(
|
|
199
|
+
UploadExceptionCode.UPLOAD_MULTIPART_ERROR,
|
|
200
|
+
error.message.replace("[Uploader] ", ""),
|
|
201
|
+
error.partNum
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
return completeMultipartUpload(name, UploadId, internalDoneParts, params, opt);
|
|
205
|
+
}
|
|
206
|
+
__name(resumeMultipart, "resumeMultipart");
|
|
207
|
+
const MultipartUpload = /* @__PURE__ */ __name(async (file, key, params, option) => {
|
|
208
|
+
const options = { ...option };
|
|
209
|
+
const {
|
|
210
|
+
region,
|
|
211
|
+
bucket,
|
|
212
|
+
dir,
|
|
213
|
+
credentials: { AccessKeyId, SecretAccessKey, SessionToken }
|
|
214
|
+
} = params;
|
|
215
|
+
if (!region || !bucket || !dir || !SecretAccessKey || !AccessKeyId || !SessionToken) {
|
|
216
|
+
throw new InitException(
|
|
217
|
+
InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
|
|
218
|
+
"volcEngine",
|
|
219
|
+
"region",
|
|
220
|
+
"bucket",
|
|
221
|
+
"dir",
|
|
222
|
+
"AccessKeyId",
|
|
223
|
+
"SecretAccessKey",
|
|
224
|
+
"SessionToken"
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
const name = `${dir}${key}`;
|
|
228
|
+
const signV4 = new SignatureV4Credentials(SessionToken, SecretAccessKey, AccessKeyId);
|
|
229
|
+
const signers = new SignersV4(
|
|
230
|
+
{
|
|
231
|
+
algorithm: "TOS4-HMAC-SHA256",
|
|
232
|
+
region,
|
|
233
|
+
serviceName: "tos",
|
|
234
|
+
bucket,
|
|
235
|
+
securityToken: SessionToken
|
|
236
|
+
},
|
|
237
|
+
signV4
|
|
238
|
+
);
|
|
239
|
+
const resumeMultipartOptions = {
|
|
240
|
+
...options,
|
|
241
|
+
signers
|
|
242
|
+
};
|
|
243
|
+
if (!options.mime) {
|
|
244
|
+
if (isFile(file)) {
|
|
245
|
+
options.mime = file.type;
|
|
246
|
+
} else if (isBlob(file)) {
|
|
247
|
+
options.mime = file.type;
|
|
248
|
+
} else {
|
|
249
|
+
options.mime = mime.getType(parseExtname(name));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (options.checkpoint && options.checkpoint.UploadId) {
|
|
253
|
+
if (file && isFile(file))
|
|
254
|
+
options.checkpoint.file = file;
|
|
255
|
+
if (file)
|
|
256
|
+
options.checkpoint.file = file;
|
|
257
|
+
return resumeMultipart(options.checkpoint, params, resumeMultipartOptions);
|
|
258
|
+
}
|
|
259
|
+
options.headers = options.headers || {};
|
|
260
|
+
const fileSize = file.size;
|
|
261
|
+
if (fileSize < VOLCENGINE_MIN_PART_SIZE) {
|
|
262
|
+
return STSUpload(file, key, params, { ...options });
|
|
263
|
+
}
|
|
264
|
+
if (options.partSize && !(parseInt(String(options.partSize), 10) === options.partSize)) {
|
|
265
|
+
throw new InitException(InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_MUST_INT);
|
|
266
|
+
}
|
|
267
|
+
if (options.partSize && options.partSize < VOLCENGINE_MIN_PART_SIZE) {
|
|
268
|
+
throw new InitException(
|
|
269
|
+
InitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_IS_SMALL,
|
|
270
|
+
VOLCENGINE_MIN_PART_SIZE
|
|
271
|
+
);
|
|
272
|
+
}
|
|
273
|
+
const { UploadId } = await initMultipartUpload(name, params, {
|
|
274
|
+
headers: { ...options.headers },
|
|
275
|
+
mime: options.mime,
|
|
276
|
+
signers
|
|
277
|
+
});
|
|
278
|
+
const partSize = getPartSize(fileSize, options.partSize, VOLCENGINE_MIN_PART_SIZE);
|
|
279
|
+
const checkpoint = initCheckpoint(file, name, fileSize, partSize, UploadId);
|
|
280
|
+
if (options && options.progress) {
|
|
281
|
+
options.progress(0, 0, fileSize, checkpoint);
|
|
282
|
+
}
|
|
283
|
+
return resumeMultipart(checkpoint, params, resumeMultipartOptions);
|
|
284
|
+
}, "MultipartUpload");
|
|
285
|
+
export {
|
|
286
|
+
MultipartUpload
|
|
287
|
+
};
|
|
288
|
+
//# sourceMappingURL=MultipartUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/TOS/MultipartUpload.ts"],"sourcesContent":["import mime from \"mime\"\nimport { InitException, InitExceptionCode } from \"../../Exception/InitException\"\nimport { UploadException, UploadExceptionCode } from \"../../Exception/UploadException\"\nimport type { PlatformMultipartUploadOption, PlatformRequest } from \"../../types\"\nimport { PlatformType } from \"../../types\"\nimport type { ErrorType } from \"../../types/error\"\nimport type { DataWrapperWithHeaders } from \"../../types/request\"\nimport type { TOS } from \"../../types/TOS\"\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 { VOLCENGINE_MIN_PART_SIZE, getAuthHeaders, removeProtocol } from \"./utils\"\nimport { SignersV4 } from \"./utils/signatureV4\"\nimport { getSortedQueryString } from \"./utils/utils\"\nimport { STSUpload } from \"./STSUpload\"\nimport { SignatureV4Credentials } from \"./utils/signatureV4Credentials\"\n\n/**\n * @description: Complex upload initialization, used to get UploadId from TOS service\n * @param {string} name filename\n * @param {TOS.STSAuthParams} params upload credentials and other fields\n * @param {TOS.InitMultipartUploadOption} option configuration fields\n */\nasync function initMultipartUpload(\n\tname: string,\n\t{ bucket, host, expires }: TOS.STSAuthParams,\n\t{ signers, headers: OptionHeaders, ...otherOptions }: TOS.InitMultipartUploadOption,\n) {\n\tconst headers = { ...OptionHeaders }\n\n\tconst reqHeaders = getAuthHeaders(\n\t\t{\n\t\t\tbucket,\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tpath: `/${encodeURIComponent(name)}`,\n\t\t\tquery: getSortedQueryString({ uploads: \"\" }),\n\t\t\thost: removeProtocol(host),\n\t\t},\n\t\tsigners,\n\t\texpires,\n\t)\n\n\tconst { data } = await request<DataWrapperWithHeaders<TOS.InitMultipartUploadResponse>>({\n\t\turl: `${host}/${encodeURIComponent(name)}`,\n\t\tquery: { uploads: \"\" },\n\t\theaders: { ...headers, ...reqHeaders },\n\t\tmethod: \"POST\",\n\t\twithoutWrapper: true,\n\t\t...otherOptions,\n\t})\n\n\treturn {\n\t\tres: data,\n\t\tbucket: data.Bucket,\n\t\tname: data.Key,\n\t\tUploadId: data.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 {TOS.MultipartUploadParams} options Upload credential and related info\n * @param {TOS.CompleteMultipartUploadOptions} options Configuration field\n */\nasync function completeMultipartUpload(\n\tname: string,\n\tUploadId: string,\n\tparts: Array<{ number: number; etag: string }>,\n\t{ bucket, host, expires }: TOS.STSAuthParams,\n\t{ signers, progress, partSize, ...otherOptions }: TOS.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\n\tconst headers = {}\n\n\tconst reqHeaders = getAuthHeaders(\n\t\t{\n\t\t\tbucket,\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tpath: `/${encodeURIComponent(name)}`,\n\t\t\tquery: getSortedQueryString({ UploadId }),\n\t\t\thost: removeProtocol(host),\n\t\t},\n\t\tsigners,\n\t\texpires,\n\t)\n\n\tconst result = await request<TOS.CompleteMultipartUploadResponse>({\n\t\turl: `${host}/${encodeURIComponent(name)}`,\n\t\tmethod: \"POST\",\n\t\tquery: {\n\t\t\tUploadId,\n\t\t},\n\t\theaders: { ...headers, ...reqHeaders },\n\t\tdata: JSON.stringify({\n\t\t\tParts: completeParts.map((item) => ({\n\t\t\t\teTag: item.etag,\n\t\t\t\tpartNumber: item.number,\n\t\t\t})),\n\t\t}),\n\t\t...otherOptions,\n\t})\n\n\tif (progress && partSize) {\n\t\tprogress(100, parts.length * partSize, parts.length * partSize, null)\n\t}\n\treturn normalizeSuccessResponse(result.Key, PlatformType.TOS, result.headers)\n}\n\n/**\n * @description: Used to upload a specific part\n * @param {String} name File name\n * @param {String} UploadId Upload session id\n * @param {number} partNo Which part number\n * @param {TOS.PartInfo} data Part data\n * @param params\n * @param {TOS.MultipartUploadOption} options Configuration field\n * @returns Return async result\n */\nasync function uploadPart(\n\tname: string,\n\tUploadId: string,\n\tpartNo: number,\n\tdata: TOS.PartInfo,\n\t{ bucket, host, expires }: TOS.STSAuthParams,\n\t{ signers, ...otherOptions }: TOS.MultipartUploadOption,\n) {\n\tconst headers = {}\n\n\tconst reqHeaders = getAuthHeaders(\n\t\t{\n\t\t\tbucket,\n\t\t\tmethod: \"PUT\",\n\t\t\theaders,\n\t\t\tpath: `/${encodeURIComponent(name)}`,\n\t\t\tquery: getSortedQueryString({ partNumber: partNo, UploadId }),\n\t\t\thost: removeProtocol(host),\n\t\t},\n\t\tsigners,\n\t\texpires,\n\t)\n\n\tconst result = await request<TOS.UploadPartResponse>({\n\t\turl: `${host}/${encodeURIComponent(name)}`,\n\t\tquery: { partNumber: `${partNo}`, UploadId },\n\t\tmethod: \"PUT\",\n\t\tdata: data.content,\n\t\theaders: { ...headers, ...reqHeaders },\n\t\ttaskId: `${partNo}`,\n\t\t...otherOptions,\n\t})\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\n/**\n * @description: Used for multipart upload or ResumeCheckpoint resume\n * @param {Object} checkpoint the File upload checkpoint info\n * @param {TOS.MultipartUploadParams} params Upload credential info\n * @param {TOS.ResumeMultipartOption} options Configuration field\n */\nasync function resumeMultipart(\n\tcheckpoint: TOS.Checkpoint,\n\tparams: TOS.STSAuthParams,\n\toptions: TOS.MultipartUploadOption,\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 | TOS.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 = {\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 (typeof options.progress === \"function\") {\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: TOS.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 interface, e.g., for part upload or Checkpoint resume\n * @param {File | Blob} file File upload\n * @param {String} key File name\n * @param {TOS.STSAuthParams} params Upload credential info\n * @param {TOS.MultipartUploadOption} option Configuration field\n */\nexport const MultipartUpload: PlatformRequest<\n\tTOS.STSAuthParams,\n\tPlatformMultipartUploadOption\n> = async (\n\tfile: File | Blob,\n\tkey: string,\n\tparams: TOS.STSAuthParams,\n\toption: PlatformMultipartUploadOption,\n) => {\n\tconst options = { ...option }\n\tconst {\n\t\tregion,\n\t\tbucket,\n\t\tdir,\n\t\tcredentials: { AccessKeyId, SecretAccessKey, SessionToken },\n\t} = params\n\n\tif (!region || !bucket || !dir || !SecretAccessKey || !AccessKeyId || !SessionToken) {\n\t\tthrow new InitException(\n\t\t\tInitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,\n\t\t\t\"volcEngine\",\n\t\t\t\"region\",\n\t\t\t\"bucket\",\n\t\t\t\"dir\",\n\t\t\t\"AccessKeyId\",\n\t\t\t\"SecretAccessKey\",\n\t\t\t\"SessionToken\",\n\t\t)\n\t}\n\n\tconst name = `${dir}${key}`\n\n\t// Signing utility\n\tconst signV4 = new SignatureV4Credentials(SessionToken, SecretAccessKey, AccessKeyId)\n\tconst signers = new SignersV4(\n\t\t{\n\t\t\talgorithm: \"TOS4-HMAC-SHA256\",\n\t\t\tregion,\n\t\t\tserviceName: \"tos\",\n\t\t\tbucket,\n\t\t\tsecurityToken: SessionToken,\n\t\t},\n\t\tsignV4,\n\t)\n\n\tconst resumeMultipartOptions = {\n\t\t...options,\n\t\tsigners,\n\t}\n\n\t// Generate File type\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, params, resumeMultipartOptions)\n\t}\n\n\toptions.headers = options.headers || {}\n\n\tconst fileSize = file.size\n\tif (fileSize < VOLCENGINE_MIN_PART_SIZE) {\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 < VOLCENGINE_MIN_PART_SIZE) {\n\t\tthrow new InitException(\n\t\t\tInitExceptionCode.UPLOAD_API_OPTION_PARTSIZE_IS_SMALL,\n\t\t\tVOLCENGINE_MIN_PART_SIZE,\n\t\t)\n\t}\n\n\t// Initialize multipart upload\n\tconst { UploadId } = await initMultipartUpload(name, params, {\n\t\theaders: { ...options.headers },\n\t\tmime: options.mime,\n\t\tsigners,\n\t})\n\n\t// Get part size\n\tconst partSize = getPartSize(fileSize, <number>options.partSize, VOLCENGINE_MIN_PART_SIZE)\n\n\tconst checkpoint: TOS.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, params, resumeMultipartOptions)\n}\n\n\n\n\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import mime from "mime";
|
|
4
|
+
import { InitException, InitExceptionCode } from "../../Exception/InitException";
|
|
5
|
+
import { UploadException, UploadExceptionCode } from "../../Exception/UploadException";
|
|
6
|
+
import { PlatformType } from "../../types";
|
|
7
|
+
import { request } from "../../utils/request";
|
|
8
|
+
import { normalizeSuccessResponse } from "../../utils/response";
|
|
9
|
+
import { getAuthHeaders, removeProtocol } from "./utils";
|
|
10
|
+
import { SignersV4 } from "./utils/signatureV4";
|
|
11
|
+
import { SignatureV4Credentials } from "./utils/signatureV4Credentials";
|
|
12
|
+
function STSUpload(file, key, params, option) {
|
|
13
|
+
const {
|
|
14
|
+
bucket,
|
|
15
|
+
credentials: { AccessKeyId, SecretAccessKey, SessionToken },
|
|
16
|
+
endpoint,
|
|
17
|
+
host,
|
|
18
|
+
// callback,
|
|
19
|
+
dir,
|
|
20
|
+
expires,
|
|
21
|
+
region
|
|
22
|
+
} = params;
|
|
23
|
+
if (!bucket || !AccessKeyId || !SecretAccessKey || !SessionToken || !dir || !endpoint || !region || !expires) {
|
|
24
|
+
throw new InitException(
|
|
25
|
+
InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
|
|
26
|
+
"volcEngine",
|
|
27
|
+
"bucket",
|
|
28
|
+
"AccessKeyId",
|
|
29
|
+
"SecretAccessKey",
|
|
30
|
+
"SessionToken",
|
|
31
|
+
"dir",
|
|
32
|
+
"endpoint",
|
|
33
|
+
"region",
|
|
34
|
+
"expires"
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
if (file?.size > 5 * 1024 * 1024 * 1024) {
|
|
38
|
+
throw new InitException(InitExceptionCode.UPLOAD_FILE_TO_BIG, key);
|
|
39
|
+
}
|
|
40
|
+
const combinedKey = `${dir}${key}`;
|
|
41
|
+
const headers = {
|
|
42
|
+
...option.headers
|
|
43
|
+
// "x-tos-callback": callback
|
|
44
|
+
};
|
|
45
|
+
const mimeType = mime.getType(key);
|
|
46
|
+
if (mimeType) {
|
|
47
|
+
headers["Content-type"] = mimeType;
|
|
48
|
+
}
|
|
49
|
+
const signV4 = new SignatureV4Credentials(SessionToken, SecretAccessKey, AccessKeyId);
|
|
50
|
+
const signers = new SignersV4(
|
|
51
|
+
{
|
|
52
|
+
algorithm: "TOS4-HMAC-SHA256",
|
|
53
|
+
region,
|
|
54
|
+
serviceName: "tos",
|
|
55
|
+
bucket,
|
|
56
|
+
securityToken: SessionToken
|
|
57
|
+
},
|
|
58
|
+
signV4
|
|
59
|
+
);
|
|
60
|
+
const authHeaders = getAuthHeaders(
|
|
61
|
+
{
|
|
62
|
+
bucket,
|
|
63
|
+
method: "PUT",
|
|
64
|
+
headers,
|
|
65
|
+
path: `/${encodeURIComponent(combinedKey)}`,
|
|
66
|
+
host: removeProtocol(host)
|
|
67
|
+
},
|
|
68
|
+
signers,
|
|
69
|
+
expires
|
|
70
|
+
);
|
|
71
|
+
return request({
|
|
72
|
+
method: "PUT",
|
|
73
|
+
url: `${host}/${encodeURIComponent(combinedKey)}`,
|
|
74
|
+
data: file,
|
|
75
|
+
headers: { ...authHeaders, ...headers },
|
|
76
|
+
taskId: option.taskId,
|
|
77
|
+
onProgress: option?.progress ? option.progress : () => {
|
|
78
|
+
},
|
|
79
|
+
fail: (status, reject) => {
|
|
80
|
+
if (status === 403) {
|
|
81
|
+
reject(new UploadException(UploadExceptionCode.UPLOAD_CREDENTIALS_IS_EXPIRED));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}).then((res) => {
|
|
85
|
+
return normalizeSuccessResponse(combinedKey, PlatformType.TOS, res.headers);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
__name(STSUpload, "STSUpload");
|
|
89
|
+
export {
|
|
90
|
+
STSUpload
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=STSUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/TOS/STSUpload.ts"],"sourcesContent":["import mime from \"mime\"\nimport { InitException, InitExceptionCode } from \"../../Exception/InitException\"\nimport { UploadException, UploadExceptionCode } from \"../../Exception/UploadException\"\nimport type {\n\tNormalSuccessResponse,\n\tPlatformMultipartUploadOption,\n\tPlatformSimpleUploadOption,\n} from \"../../types\"\nimport { PlatformType } from \"../../types\"\nimport type { TOS } from \"../../types/TOS\"\nimport { request } from \"../../utils/request\"\nimport { normalizeSuccessResponse } from \"../../utils/response\"\nimport { getAuthHeaders, removeProtocol } from \"./utils\"\nimport { SignersV4 } from \"./utils/signatureV4\"\nimport { SignatureV4Credentials } from \"./utils/signatureV4Credentials\"\n\nexport function STSUpload(\n\tfile: File | Blob,\n\tkey: string,\n\tparams: TOS.STSAuthParams,\n\toption: PlatformSimpleUploadOption | PlatformMultipartUploadOption,\n): Promise<NormalSuccessResponse> {\n\tconst {\n\t\tbucket,\n\t\tcredentials: { AccessKeyId, SecretAccessKey, SessionToken },\n\t\tendpoint,\n\t\thost,\n\t\t// callback,\n\t\tdir,\n\t\texpires,\n\t\tregion,\n\t} = params\n\n\tif (\n\t\t!bucket ||\n\t\t!AccessKeyId ||\n\t\t!SecretAccessKey ||\n\t\t!SessionToken ||\n\t\t!dir ||\n\t\t!endpoint ||\n\t\t!region ||\n\t\t!expires\n\t) {\n\t\tthrow new InitException(\n\t\t\tInitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,\n\t\t\t\"volcEngine\",\n\t\t\t\"bucket\",\n\t\t\t\"AccessKeyId\",\n\t\t\t\"SecretAccessKey\",\n\t\t\t\"SessionToken\",\n\t\t\t\"dir\",\n\t\t\t\"endpoint\",\n\t\t\t\"region\",\n\t\t\t\"expires\",\n\t\t)\n\t}\n\n\t// Volcengine 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 combinedKey = `${dir}${key}`\n\n\tconst headers: Record<string, any> = {\n\t\t...option.headers,\n\t\t// \"x-tos-callback\": callback\n\t}\n\n\tconst mimeType = mime.getType(key)\n\tif (mimeType) {\n\t\theaders[\"Content-type\"] = mimeType\n\t}\n\n\t// Signing utility\n\tconst signV4 = new SignatureV4Credentials(SessionToken, SecretAccessKey, AccessKeyId)\n\tconst signers = new SignersV4(\n\t\t{\n\t\t\talgorithm: \"TOS4-HMAC-SHA256\",\n\t\t\tregion,\n\t\t\tserviceName: \"tos\",\n\t\t\tbucket,\n\t\t\tsecurityToken: SessionToken,\n\t\t},\n\t\tsignV4,\n\t)\n\n\tconst authHeaders = getAuthHeaders(\n\t\t{\n\t\t\tbucket,\n\t\t\tmethod: \"PUT\",\n\t\t\theaders,\n\t\t\tpath: `/${encodeURIComponent(combinedKey)}`,\n\t\t\thost: removeProtocol(host),\n\t\t},\n\t\tsigners,\n\t\texpires,\n\t)\n\n\t// Send request\n\treturn request<TOS.PutResponse>({\n\t\tmethod: \"PUT\",\n\t\turl: `${host}/${encodeURIComponent(combinedKey)}`,\n\t\tdata: file,\n\t\theaders: { ...authHeaders, ...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((res) => {\n\t\treturn normalizeSuccessResponse(combinedKey, PlatformType.TOS, res.headers)\n\t})\n}\n\n\n\n\n"],"mappings":";;AAAC,OAAO,UAAU;AAClB,SAAS,eAAe,yBAAyB;AACjD,SAAS,iBAAiB,2BAA2B;AAMrD,SAAS,oBAAoB;AAE7B,SAAS,eAAe;AACxB,SAAS,gCAAgC;AACzC,SAAS,gBAAgB,sBAAsB;AAC/C,SAAS,iBAAiB;AAC1B,SAAS,8BAA8B;AAEhC,SAAS,UACf,MACA,KACA,QACA,QACiC;AACjC,QAAM;AAAA,IACL;AAAA,IACA,aAAa,EAAE,aAAa,iBAAiB,aAAa;AAAA,IAC1D;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAEJ,MACC,CAAC,UACD,CAAC,eACD,CAAC,mBACD,CAAC,gBACD,CAAC,OACD,CAAC,YACD,CAAC,UACD,CAAC,SACA;AACD,UAAM,IAAI;AAAA,MACT,kBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAGA,MAAI,MAAM,OAAO,IAAI,OAAO,OAAO,MAAM;AACxC,UAAM,IAAI,cAAc,kBAAkB,oBAAoB,GAAG;AAAA,EAClE;AAEA,QAAM,cAAc,GAAG,GAAG,GAAG,GAAG;AAEhC,QAAM,UAA+B;AAAA,IACpC,GAAG,OAAO;AAAA;AAAA,EAEX;AAEA,QAAM,WAAW,KAAK,QAAQ,GAAG;AACjC,MAAI,UAAU;AACb,YAAQ,cAAc,IAAI;AAAA,EAC3B;AAGA,QAAM,SAAS,IAAI,uBAAuB,cAAc,iBAAiB,WAAW;AACpF,QAAM,UAAU,IAAI;AAAA,IACnB;AAAA,MACC,WAAW;AAAA,MACX;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA,eAAe;AAAA,IAChB;AAAA,IACA;AAAA,EACD;AAEA,QAAM,cAAc;AAAA,IACnB;AAAA,MACC;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,IAAI,mBAAmB,WAAW,CAAC;AAAA,MACzC,MAAM,eAAe,IAAI;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAGA,SAAO,QAAyB;AAAA,IAC/B,QAAQ;AAAA,IACR,KAAK,GAAG,IAAI,IAAI,mBAAmB,WAAW,CAAC;AAAA,IAC/C,MAAM;AAAA,IACN,SAAS,EAAE,GAAG,aAAa,GAAG,QAAQ;AAAA,IACtC,QAAQ,OAAO;AAAA,IACf,YAAY,QAAQ,WAAW,OAAO,WAAW,MAAM;AAAA,IAAC;AAAA,IACxD,MAAM,CAAC,QAAQ,WAAW;AACzB,UAAI,WAAW,KAAK;AACnB,eAAO,IAAI,gBAAgB,oBAAoB,6BAA6B,CAAC;AAAA,MAC9E;AAAA,IACD;AAAA,EACD,CAAC,EAAE,KAAK,CAAC,QAAQ;AAChB,WAAO,yBAAyB,aAAa,aAAa,KAAK,IAAI,OAAO;AAAA,EAC3E,CAAC;AACF;AAnGgB;","names":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import mime from "mime";
|
|
4
|
+
import { InitException, InitExceptionCode } from "../../Exception/InitException";
|
|
5
|
+
import { UploadException, UploadExceptionCode } from "../../Exception/UploadException";
|
|
6
|
+
import { PlatformType } from "../../types";
|
|
7
|
+
import { parseExtname } from "../../utils/regExpUtil";
|
|
8
|
+
import { request } from "../../utils/request";
|
|
9
|
+
import { normalizeSuccessResponse } from "../../utils/response";
|
|
10
|
+
const defaultUpload = /* @__PURE__ */ __name((file, key, params, option) => {
|
|
11
|
+
const { policy, host, dir, content_type: contentType } = params;
|
|
12
|
+
if (!policy || !params["x-tos-signature"] || !params["x-tos-credential"] || !host || !dir || // !params["x-tos-callback"] ||
|
|
13
|
+
!params["x-tos-algorithm"]) {
|
|
14
|
+
throw new InitException(
|
|
15
|
+
InitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,
|
|
16
|
+
"volcEngine",
|
|
17
|
+
"policy",
|
|
18
|
+
"x-tos-signature",
|
|
19
|
+
"x-tos-credential",
|
|
20
|
+
"host",
|
|
21
|
+
"dir",
|
|
22
|
+
// "x-tos-callback",
|
|
23
|
+
"x-tos-algorithm"
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
if (file?.size > 5 * 1024 * 1024 * 1024) {
|
|
27
|
+
throw new InitException(InitExceptionCode.UPLOAD_FILE_TO_BIG, key);
|
|
28
|
+
}
|
|
29
|
+
const combinedKey = `${dir}${key}`;
|
|
30
|
+
const formData = new FormData();
|
|
31
|
+
if (contentType) {
|
|
32
|
+
const fileMimeType = mime.getType(parseExtname(key));
|
|
33
|
+
formData.append("Content-Type", fileMimeType || contentType);
|
|
34
|
+
}
|
|
35
|
+
formData.append("x-tos-server-side-encryption", "AES256");
|
|
36
|
+
formData.append("x-tos-algorithm", params["x-tos-algorithm"]);
|
|
37
|
+
formData.append("x-tos-date", params["x-tos-date"]);
|
|
38
|
+
formData.append("x-tos-credential", params["x-tos-credential"]);
|
|
39
|
+
formData.append("policy", policy);
|
|
40
|
+
formData.append("x-tos-signature", params["x-tos-signature"]);
|
|
41
|
+
formData.append("key", combinedKey);
|
|
42
|
+
formData.append("file", file);
|
|
43
|
+
return request({
|
|
44
|
+
method: "post",
|
|
45
|
+
url: host,
|
|
46
|
+
data: formData,
|
|
47
|
+
headers: option?.headers ? option?.headers : {},
|
|
48
|
+
taskId: option.taskId,
|
|
49
|
+
onProgress: option?.progress ? option.progress : () => {
|
|
50
|
+
},
|
|
51
|
+
withoutWrapper: true,
|
|
52
|
+
fail: (status, reject) => {
|
|
53
|
+
if (status === 403) {
|
|
54
|
+
reject(new UploadException(UploadExceptionCode.UPLOAD_CREDENTIALS_IS_EXPIRED));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}).then((res) => {
|
|
58
|
+
return normalizeSuccessResponse(combinedKey, PlatformType.TOS, res.headers);
|
|
59
|
+
});
|
|
60
|
+
}, "defaultUpload");
|
|
61
|
+
var defaultUpload_default = defaultUpload;
|
|
62
|
+
export {
|
|
63
|
+
defaultUpload_default as default
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=defaultUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/TOS/defaultUpload.ts"],"sourcesContent":["import mime from \"mime\"\nimport { InitException, InitExceptionCode } from \"../../Exception/InitException\"\nimport { UploadException, UploadExceptionCode } from \"../../Exception/UploadException\"\nimport type { PlatformRequest, PlatformSimpleUploadOption } from \"../../types\"\nimport { PlatformType } from \"../../types\"\nimport type { TOS } from \"../../types/TOS\"\nimport { parseExtname } from \"../../utils/regExpUtil\"\nimport { request } from \"../../utils/request\"\nimport { normalizeSuccessResponse } from \"../../utils/response\"\n\n/**\n * @description: Simple upload POST request\n * @param {File | Blob} file File\n * @param {String} key File name\n * @param {TOS.AuthParams} params Upload credential info\n * @param {PlatformSimpleUploadOption} option Configuration field\n */\nconst defaultUpload: PlatformRequest<TOS.AuthParams, PlatformSimpleUploadOption> = (\n\tfile,\n\tkey,\n\tparams,\n\toption,\n) => {\n\tconst { policy, host, dir, content_type: contentType } = params\n\n\tif (\n\t\t!policy ||\n\t\t!params[\"x-tos-signature\"] ||\n\t\t!params[\"x-tos-credential\"] ||\n\t\t!host ||\n\t\t!dir ||\n\t\t// !params[\"x-tos-callback\"] ||\n\t\t!params[\"x-tos-algorithm\"]\n\t) {\n\t\tthrow new InitException(\n\t\t\tInitExceptionCode.MISSING_CREDENTIALS_PARAMS_FOR_UPLOAD,\n\t\t\t\"volcEngine\",\n\t\t\t\"policy\",\n\t\t\t\"x-tos-signature\",\n\t\t\t\"x-tos-credential\",\n\t\t\t\"host\",\n\t\t\t\"dir\",\n\t\t\t// \"x-tos-callback\",\n\t\t\t\"x-tos-algorithm\",\n\t\t)\n\t}\n\n\t// Volcengine 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 combinedKey = `${dir}${key}`\n\t// Wrap the FormData object\n\tconst formData = new FormData()\n\t// If the backend returns a contentType check such as 'image/' meaning it must start with \"image/\"\n\tif (contentType) {\n\t\t// Get file mime\n\t\tconst fileMimeType = mime.getType(parseExtname(key))\n\t\tformData.append(\"Content-Type\", fileMimeType || contentType)\n\t}\n\tformData.append(\"x-tos-server-side-encryption\", \"AES256\")\n\tformData.append(\"x-tos-algorithm\", params[\"x-tos-algorithm\"])\n\tformData.append(\"x-tos-date\", params[\"x-tos-date\"])\n\tformData.append(\"x-tos-credential\", params[\"x-tos-credential\"])\n\tformData.append(\"policy\", policy)\n\tformData.append(\"x-tos-signature\", params[\"x-tos-signature\"])\n\tformData.append(\"key\", combinedKey)\n\tformData.append(\"file\", file)\n\t// formData.append(\"x-tos-callback\", params[\"x-tos-callback\"])\n\n\t// Send request\n\treturn request<TOS.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\twithoutWrapper: true,\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((res) => {\n\t\treturn normalizeSuccessResponse(combinedKey, PlatformType.TOS, res.headers)\n\t})\n}\n\nexport default defaultUpload\n\n\n\n\n"],"mappings":";;AAAC,OAAO,UAAU;AAClB,SAAS,eAAe,yBAAyB;AACjD,SAAS,iBAAiB,2BAA2B;AAErD,SAAS,oBAAoB;AAE7B,SAAS,oBAAoB;AAC7B,SAAS,eAAe;AACxB,SAAS,gCAAgC;AASzC,MAAM,gBAA6E,wBAClF,MACA,KACA,QACA,WACI;AACJ,QAAM,EAAE,QAAQ,MAAM,KAAK,cAAc,YAAY,IAAI;AAEzD,MACC,CAAC,UACD,CAAC,OAAO,iBAAiB,KACzB,CAAC,OAAO,kBAAkB,KAC1B,CAAC,QACD,CAAC;AAAA,EAED,CAAC,OAAO,iBAAiB,GACxB;AACD,UAAM,IAAI;AAAA,MACT,kBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,IACD;AAAA,EACD;AAGA,MAAI,MAAM,OAAO,IAAI,OAAO,OAAO,MAAM;AACxC,UAAM,IAAI,cAAc,kBAAkB,oBAAoB,GAAG;AAAA,EAClE;AAEA,QAAM,cAAc,GAAG,GAAG,GAAG,GAAG;AAEhC,QAAM,WAAW,IAAI,SAAS;AAE9B,MAAI,aAAa;AAEhB,UAAM,eAAe,KAAK,QAAQ,aAAa,GAAG,CAAC;AACnD,aAAS,OAAO,gBAAgB,gBAAgB,WAAW;AAAA,EAC5D;AACA,WAAS,OAAO,gCAAgC,QAAQ;AACxD,WAAS,OAAO,mBAAmB,OAAO,iBAAiB,CAAC;AAC5D,WAAS,OAAO,cAAc,OAAO,YAAY,CAAC;AAClD,WAAS,OAAO,oBAAoB,OAAO,kBAAkB,CAAC;AAC9D,WAAS,OAAO,UAAU,MAAM;AAChC,WAAS,OAAO,mBAAmB,OAAO,iBAAiB,CAAC;AAC5D,WAAS,OAAO,OAAO,WAAW;AAClC,WAAS,OAAO,QAAQ,IAAI;AAI5B,SAAO,QAA0B;AAAA,IAChC,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,SAAS,QAAQ,UAAU,QAAQ,UAAU,CAAC;AAAA,IAC9C,QAAQ,OAAO;AAAA,IACf,YAAY,QAAQ,WAAW,OAAO,WAAW,MAAM;AAAA,IAAC;AAAA,IACxD,gBAAgB;AAAA,IAChB,MAAM,CAAC,QAAQ,WAAW;AACzB,UAAI,WAAW,KAAK;AACnB,eAAO,IAAI,gBAAgB,oBAAoB,6BAA6B,CAAC;AAAA,MAC9E;AAAA,IACD;AAAA,EACD,CAAC,EAAE,KAAK,CAAC,QAAQ;AAChB,WAAO,yBAAyB,aAAa,aAAa,KAAK,IAAI,OAAO;AAAA,EAC3E,CAAC;AACF,GAvEmF;AAyEnF,IAAO,wBAAQ;","names":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { MultipartUpload } from "./MultipartUpload";
|
|
4
|
+
import { STSUpload } from "./STSUpload";
|
|
5
|
+
import defaultUpload from "./defaultUpload";
|
|
6
|
+
const upload = /* @__PURE__ */ __name((file, key, params, option) => {
|
|
7
|
+
if (Object.prototype.hasOwnProperty.call(params, "credentials")) {
|
|
8
|
+
return MultipartUpload(file, key, params, option);
|
|
9
|
+
}
|
|
10
|
+
return defaultUpload(file, key, params, option);
|
|
11
|
+
}, "upload");
|
|
12
|
+
var TOS_default = { upload, defaultUpload, MultipartUpload, STSUpload };
|
|
13
|
+
export {
|
|
14
|
+
TOS_default as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/modules/TOS/index.ts"],"sourcesContent":["import type {\n\tPlatformMultipartUploadOption,\n\tPlatformRequest,\n\tPlatformSimpleUploadOption,\n} from \"../../types\"\nimport type { TOS } from \"../../types/TOS\"\nimport { MultipartUpload } from \"./MultipartUpload\"\nimport { STSUpload } from \"./STSUpload\"\nimport defaultUpload from \"./defaultUpload\"\n\nconst upload: PlatformRequest<\n\tTOS.AuthParams | TOS.STSAuthParams,\n\tPlatformSimpleUploadOption | PlatformMultipartUploadOption\n> = (file, key, params, option) => {\n\tif (Object.prototype.hasOwnProperty.call(params, \"credentials\")) {\n\t\treturn MultipartUpload(file, key, <TOS.STSAuthParams>params, option)\n\t}\n\n\treturn defaultUpload(file, key, <TOS.AuthParams>params, option)\n}\n\nexport default { upload, defaultUpload, MultipartUpload, STSUpload }\n\n\n\n\n"],"mappings":";;AAMA,SAAS,uBAAuB;AAChC,SAAS,iBAAiB;AAC1B,OAAO,mBAAmB;AAE1B,MAAM,SAGF,wBAAC,MAAM,KAAK,QAAQ,WAAW;AAClC,MAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,aAAa,GAAG;AAChE,WAAO,gBAAgB,MAAM,KAAwB,QAAQ,MAAM;AAAA,EACpE;AAEA,SAAO,cAAc,MAAM,KAAqB,QAAQ,MAAM;AAC/D,GANI;AAQJ,IAAO,cAAQ,EAAE,QAAQ,eAAe,iBAAiB,UAAU;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
const _TosClientError = class _TosClientError extends Error {
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(message);
|
|
6
|
+
Object.setPrototypeOf(this, _TosClientError.prototype);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
__name(_TosClientError, "TosClientError");
|
|
10
|
+
let TosClientError = _TosClientError;
|
|
11
|
+
var TosClientError_default = TosClientError;
|
|
12
|
+
export {
|
|
13
|
+
TosClientError_default as default
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=TosClientError.js.map
|