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