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