@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,32 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
const _EventEmitter = class _EventEmitter {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.observers = {};
|
|
6
|
+
}
|
|
7
|
+
// Register event listener
|
|
8
|
+
on(eventName, listener) {
|
|
9
|
+
if (!this.observers[eventName]) {
|
|
10
|
+
this.observers[eventName] = listener;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// Trigger event, callback all listeners
|
|
14
|
+
emit(eventName, ...args) {
|
|
15
|
+
const listener = this.observers[eventName];
|
|
16
|
+
if (listener) {
|
|
17
|
+
listener.apply(this, args);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// Remove specified listener for specified event
|
|
21
|
+
off(eventName) {
|
|
22
|
+
if (Object.keys(this.observers).includes(eventName)) {
|
|
23
|
+
delete this.observers[eventName];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
__name(_EventEmitter, "EventEmitter");
|
|
28
|
+
let EventEmitter = _EventEmitter;
|
|
29
|
+
export {
|
|
30
|
+
EventEmitter as default
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=EventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/EventEmitter.ts"],"sourcesContent":["/** Event name */\ntype EventName = string\n\nexport default class EventEmitter<T extends (...args: any[]) => void> {\n\tobservers: Record<EventName, T>\n\n\tconstructor() {\n\t\t// Store event listener key-value pairs\n\t\tthis.observers = {}\n\t}\n\n\t// Register event listener\n\ton(eventName: EventName, listener: T) {\n\t\tif (!this.observers[eventName]) {\n\t\t\tthis.observers[eventName] = listener\n\t\t}\n\t}\n\n\t// Trigger event, callback all listeners\n\temit(eventName: EventName, ...args: Array<any>) {\n\t\tconst listener = this.observers[eventName]\n\t\tif (listener) {\n\t\t\tlistener.apply(this, args)\n\t\t}\n\t}\n\n\t// Remove specified listener for specified event\n\toff(eventName: EventName) {\n\t\tif (Object.keys(this.observers).includes(eventName)) {\n\t\t\tdelete this.observers[eventName]\n\t\t}\n\t}\n}\n\n\n\n\n"],"mappings":";;AAGA,MAAqB,gBAArB,MAAqB,cAAiD;AAAA,EAGrE,cAAc;AAEb,SAAK,YAAY,CAAC;AAAA,EACnB;AAAA;AAAA,EAGA,GAAG,WAAsB,UAAa;AACrC,QAAI,CAAC,KAAK,UAAU,SAAS,GAAG;AAC/B,WAAK,UAAU,SAAS,IAAI;AAAA,IAC7B;AAAA,EACD;AAAA;AAAA,EAGA,KAAK,cAAyB,MAAkB;AAC/C,UAAM,WAAW,KAAK,UAAU,SAAS;AACzC,QAAI,UAAU;AACb,eAAS,MAAM,MAAM,IAAI;AAAA,IAC1B;AAAA,EACD;AAAA;AAAA,EAGA,IAAI,WAAsB;AACzB,QAAI,OAAO,KAAK,KAAK,SAAS,EAAE,SAAS,SAAS,GAAG;AACpD,aAAO,KAAK,UAAU,SAAS;AAAA,IAChC;AAAA,EACD;AACD;AA7BsE;AAAtE,IAAqB,eAArB;","names":[]}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { isFunction } from "lodash-es";
|
|
4
|
+
import { InitException, InitExceptionCode } from "../Exception/InitException";
|
|
5
|
+
import { UploadException, UploadExceptionCode } from "../Exception/UploadException";
|
|
6
|
+
import PlatformModules from "../modules";
|
|
7
|
+
import { isBlob, isFile } from "./checkDataFormat";
|
|
8
|
+
import EventEmitter from "./EventEmitter";
|
|
9
|
+
import { getUploadConfig } from "./global";
|
|
10
|
+
import logPubSub from "./logPubSub";
|
|
11
|
+
import { nanoid } from "./nanoid";
|
|
12
|
+
import { cancelRequest, completeRequest, pauseRequest } from "./request";
|
|
13
|
+
const TaskEvent = new EventEmitter();
|
|
14
|
+
const _UploadManger = class _UploadManger {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.tasks = {};
|
|
17
|
+
}
|
|
18
|
+
detach(taskId) {
|
|
19
|
+
delete this.tasks[taskId];
|
|
20
|
+
completeRequest(taskId);
|
|
21
|
+
}
|
|
22
|
+
notifySuccess(taskId, data) {
|
|
23
|
+
const { success } = this.tasks[taskId] || {};
|
|
24
|
+
if (isFunction(success)) {
|
|
25
|
+
success(data);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
notifyError(taskId, err) {
|
|
29
|
+
const { fail } = this.tasks[taskId] || {};
|
|
30
|
+
if (isFunction(fail)) {
|
|
31
|
+
fail(err);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
notifyProgress(taskId, percent, loaded, total, checkpoint) {
|
|
35
|
+
const { progress } = this.tasks[taskId] || {};
|
|
36
|
+
if (isFunction(progress)) {
|
|
37
|
+
progress(percent, loaded, total, checkpoint);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
createTask(file, key, uploadConfig, option) {
|
|
41
|
+
let taskId = nanoid();
|
|
42
|
+
if (this.tasks[taskId]) {
|
|
43
|
+
while (this.tasks[taskId]) {
|
|
44
|
+
taskId = nanoid();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const output = {
|
|
48
|
+
success: (callback) => {
|
|
49
|
+
const taskEventCallback = /* @__PURE__ */ __name((response) => {
|
|
50
|
+
logPubSub.report({
|
|
51
|
+
type: "SUCCESS",
|
|
52
|
+
eventName: "upload",
|
|
53
|
+
eventParams: { ...uploadConfig },
|
|
54
|
+
eventResponse: response
|
|
55
|
+
});
|
|
56
|
+
TaskEvent.off(`${taskId}_success`);
|
|
57
|
+
TaskEvent.off(`${taskId}_fail`);
|
|
58
|
+
TaskEvent.off(`${taskId}_progress`);
|
|
59
|
+
callback(response);
|
|
60
|
+
}, "taskEventCallback");
|
|
61
|
+
TaskEvent.on(`${taskId}_success`, taskEventCallback);
|
|
62
|
+
},
|
|
63
|
+
fail: (callback) => {
|
|
64
|
+
const taskEventCallback = /* @__PURE__ */ __name((error) => {
|
|
65
|
+
logPubSub.report({
|
|
66
|
+
type: "ERROR",
|
|
67
|
+
eventName: "upload",
|
|
68
|
+
eventParams: { ...uploadConfig },
|
|
69
|
+
error
|
|
70
|
+
});
|
|
71
|
+
callback(error);
|
|
72
|
+
}, "taskEventCallback");
|
|
73
|
+
TaskEvent.on(`${taskId}_fail`, taskEventCallback);
|
|
74
|
+
},
|
|
75
|
+
progress: (callback) => {
|
|
76
|
+
const taskEventCallback = /* @__PURE__ */ __name((percent, loaded, total, checkpoint) => {
|
|
77
|
+
callback(percent, loaded, total, checkpoint);
|
|
78
|
+
}, "taskEventCallback");
|
|
79
|
+
TaskEvent.on(`${taskId}_progress`, taskEventCallback);
|
|
80
|
+
},
|
|
81
|
+
cancel: () => {
|
|
82
|
+
const task = this.tasks[taskId];
|
|
83
|
+
if (task) {
|
|
84
|
+
cancelRequest(taskId);
|
|
85
|
+
TaskEvent.off(`${taskId}_success`);
|
|
86
|
+
TaskEvent.off(`${taskId}_fail`);
|
|
87
|
+
TaskEvent.off(`${taskId}_progress`);
|
|
88
|
+
const { pauseInfo } = task;
|
|
89
|
+
if (pauseInfo) {
|
|
90
|
+
delete task.pauseInfo;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
pause: () => {
|
|
95
|
+
const task = this.tasks[taskId];
|
|
96
|
+
if (task) {
|
|
97
|
+
const { pauseInfo } = task;
|
|
98
|
+
if (pauseInfo) {
|
|
99
|
+
task.pauseInfo = {
|
|
100
|
+
...pauseInfo,
|
|
101
|
+
isPause: true
|
|
102
|
+
};
|
|
103
|
+
pauseRequest(taskId);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
resume: () => {
|
|
108
|
+
const task = this.tasks[taskId];
|
|
109
|
+
if (task) {
|
|
110
|
+
const { pauseInfo } = task;
|
|
111
|
+
if (pauseInfo) {
|
|
112
|
+
const { isPause, checkpoint } = pauseInfo;
|
|
113
|
+
if (isPause) {
|
|
114
|
+
task.pauseInfo = {
|
|
115
|
+
isPause: false,
|
|
116
|
+
checkpoint
|
|
117
|
+
};
|
|
118
|
+
this.upload(file, key, taskId, uploadConfig, {
|
|
119
|
+
...option,
|
|
120
|
+
checkpoint
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
this.tasks[taskId] = {
|
|
128
|
+
success: (response) => {
|
|
129
|
+
TaskEvent.emit(`${taskId}_success`, response);
|
|
130
|
+
},
|
|
131
|
+
fail: (error) => {
|
|
132
|
+
TaskEvent.emit(`${taskId}_fail`, error);
|
|
133
|
+
},
|
|
134
|
+
progress: (response) => {
|
|
135
|
+
TaskEvent.emit(`${taskId}_progress`, response);
|
|
136
|
+
},
|
|
137
|
+
cancel: output.cancel,
|
|
138
|
+
pause: output.pause,
|
|
139
|
+
resume: output.resume
|
|
140
|
+
};
|
|
141
|
+
this.upload(file, key, taskId, uploadConfig, option);
|
|
142
|
+
return {
|
|
143
|
+
success: output.success,
|
|
144
|
+
fail: output.fail,
|
|
145
|
+
progress: output.progress,
|
|
146
|
+
cancel: output.cancel,
|
|
147
|
+
pause: output.pause,
|
|
148
|
+
resume: output.resume
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
upload(file, key, taskId, uploadConfig, option) {
|
|
152
|
+
const onProgress = /* @__PURE__ */ __name((percent, loaded, total, checkpoint) => {
|
|
153
|
+
const task = this.tasks[taskId];
|
|
154
|
+
if (checkpoint && task) {
|
|
155
|
+
task.pauseInfo = {
|
|
156
|
+
isPause: false,
|
|
157
|
+
checkpoint
|
|
158
|
+
};
|
|
159
|
+
this.notifyProgress(taskId, percent, loaded, total, checkpoint);
|
|
160
|
+
} else {
|
|
161
|
+
this.notifyProgress(taskId, percent, loaded, total, null);
|
|
162
|
+
}
|
|
163
|
+
}, "onProgress");
|
|
164
|
+
const uploadPromise = uploadConfig.customCredentials ? Promise.resolve({
|
|
165
|
+
platform: uploadConfig.customCredentials.platform,
|
|
166
|
+
temporary_credential: uploadConfig.customCredentials.temporary_credential,
|
|
167
|
+
expire: uploadConfig.customCredentials.expire || 0
|
|
168
|
+
}) : (() => {
|
|
169
|
+
const { url, method, headers, body } = uploadConfig;
|
|
170
|
+
const uploadSourceRequest = {
|
|
171
|
+
url,
|
|
172
|
+
method,
|
|
173
|
+
headers,
|
|
174
|
+
body
|
|
175
|
+
};
|
|
176
|
+
const isNeedForceReFresh = !option?.reUploadedCount;
|
|
177
|
+
return getUploadConfig(uploadSourceRequest, isNeedForceReFresh);
|
|
178
|
+
})();
|
|
179
|
+
uploadPromise.then(async (uploadSource) => {
|
|
180
|
+
const platformType = uploadSource.platform;
|
|
181
|
+
const platformConfig = uploadSource.temporary_credential;
|
|
182
|
+
try {
|
|
183
|
+
const platform = PlatformModules[platformType];
|
|
184
|
+
if (!platform) {
|
|
185
|
+
throw new InitException(
|
|
186
|
+
InitExceptionCode.UPLOAD_IS_NO_SUPPORT_THIS_PLATFORM,
|
|
187
|
+
platformType
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
return { platform, platformConfig };
|
|
191
|
+
} catch (error) {
|
|
192
|
+
throw new InitException(
|
|
193
|
+
InitExceptionCode.UPLOAD_IS_NO_SUPPORT_THIS_PLATFORM,
|
|
194
|
+
platformType
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
}).then(({ platform, platformConfig }) => {
|
|
198
|
+
if (!file && !isBlob(file) && !isFile(file))
|
|
199
|
+
throw new InitException(InitExceptionCode.UPLOAD_IS_NO_SUPPORT_THIS_FILE_FORMAT);
|
|
200
|
+
if (!key)
|
|
201
|
+
throw new InitException(InitExceptionCode.MISSING_PARAMS_FOR_UPLOAD, "fileName");
|
|
202
|
+
if (!platform.upload) {
|
|
203
|
+
throw new InitException(
|
|
204
|
+
InitExceptionCode.UPLOAD_IS_NO_SUPPORT_THIS_PLATFORM,
|
|
205
|
+
"platform.upload is undefined"
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
return platform.upload(
|
|
209
|
+
file,
|
|
210
|
+
key,
|
|
211
|
+
platformConfig,
|
|
212
|
+
{
|
|
213
|
+
...option,
|
|
214
|
+
progress: onProgress,
|
|
215
|
+
taskId
|
|
216
|
+
}
|
|
217
|
+
);
|
|
218
|
+
}).then((res) => {
|
|
219
|
+
this.notifySuccess(taskId, res);
|
|
220
|
+
this.detach(taskId);
|
|
221
|
+
}).catch((err) => {
|
|
222
|
+
let message = err;
|
|
223
|
+
if (err?.status === 1003) {
|
|
224
|
+
if (option?.reUploadedCount && option?.reUploadedCount >= 2) {
|
|
225
|
+
this.notifyError(
|
|
226
|
+
taskId,
|
|
227
|
+
new InitException(InitExceptionCode.REUPLOAD_IS_FAILED)
|
|
228
|
+
);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
this.upload(file, key, taskId, uploadConfig, {
|
|
232
|
+
...option,
|
|
233
|
+
reUploadedCount: option?.reUploadedCount ? option.reUploadedCount + 1 : 1
|
|
234
|
+
});
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
if (err?.status === 5002) {
|
|
238
|
+
message = new UploadException(UploadExceptionCode.UPLOAD_PAUSE);
|
|
239
|
+
}
|
|
240
|
+
if (err?.status === 5001) {
|
|
241
|
+
message = new UploadException(UploadExceptionCode.UPLOAD_CANCEL);
|
|
242
|
+
}
|
|
243
|
+
this.notifyError(taskId, message);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
// Pause all uploads
|
|
247
|
+
pauseAllTask() {
|
|
248
|
+
Object.values(this.tasks).forEach((task) => {
|
|
249
|
+
if (task.pause) {
|
|
250
|
+
task.pause();
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
// Resume all uploads
|
|
255
|
+
resumeAllTask() {
|
|
256
|
+
Object.values(this.tasks).forEach((task) => {
|
|
257
|
+
if (task.resume) {
|
|
258
|
+
task.resume();
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
// Cancel all uploads
|
|
263
|
+
cancelAllTask() {
|
|
264
|
+
Object.values(this.tasks).forEach((task) => {
|
|
265
|
+
if (task.cancel) {
|
|
266
|
+
task.cancel();
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
__name(_UploadManger, "UploadManger");
|
|
272
|
+
let UploadManger = _UploadManger;
|
|
273
|
+
export {
|
|
274
|
+
UploadManger
|
|
275
|
+
};
|
|
276
|
+
//# sourceMappingURL=UploadManger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/UploadManger.ts"],"sourcesContent":["import { isFunction } from \"lodash-es\"\nimport { InitException, InitExceptionCode } from \"../Exception/InitException\"\nimport { UploadException, UploadExceptionCode } from \"../Exception/UploadException\"\nimport PlatformModules from \"../modules\"\nimport type {\n\tFailCallback,\n\tNormalSuccessResponse,\n\tPlatformMultipartUploadOption,\n\tPlatformParams,\n\tPlatformSimpleUploadOption,\n\tProgress,\n\tProgressCallback,\n\tProgressCallbackProps,\n\tRequest,\n\tSuccessCallback,\n\tTask,\n\tTaskCallBack,\n\tTaskId,\n\tUploadSource,\n\tUploadConfig,\n} from \"../types\"\nimport type { OSS } from \"../types/OSS\"\nimport type { ErrorType } from \"../types/error\"\nimport type { Kodo } from \"../types/Kodo\"\nimport type { TOS } from \"../types/TOS\"\nimport type { OBS } from \"../types/OBS\"\nimport type { Local } from \"../types/Local\"\nimport type { MinIO } from \"../types/MinIO\"\nimport { isBlob, isFile } from \"./checkDataFormat\"\nimport EventEmitter from \"./EventEmitter\"\nimport { getUploadConfig } from \"./global\"\nimport logPubSub from \"./logPubSub\"\nimport { nanoid } from \"./nanoid\"\nimport { cancelRequest, completeRequest, pauseRequest } from \"./request\"\n\n// Event subscription management for upload tasks\nconst TaskEvent = new EventEmitter<SuccessCallback | FailCallback | ProgressCallback>()\n\nexport class UploadManger {\n\tprivate tasks: Record<TaskId, Task> = {}\n\n\tprivate detach(taskId: TaskId): void {\n\t\tdelete this.tasks[taskId]\n\t\tcompleteRequest(taskId)\n\t}\n\n\tprivate notifySuccess(taskId: TaskId, data: NormalSuccessResponse): void {\n\t\tconst { success } = this.tasks[taskId] || {}\n\t\tif (isFunction(success)) {\n\t\t\tsuccess(data)\n\t\t}\n\t}\n\n\tprivate notifyError(taskId: TaskId, err: ErrorType.UploadError): void {\n\t\tconst { fail } = this.tasks[taskId] || {}\n\t\tif (isFunction(fail)) {\n\t\t\tfail(err)\n\t\t}\n\t}\n\n\tprivate notifyProgress(\n\t\ttaskId: string,\n\t\tpercent: ProgressCallbackProps[\"percent\"],\n\t\tloaded: ProgressCallbackProps[\"loaded\"],\n\t\ttotal: ProgressCallbackProps[\"total\"],\n\t\tcheckpoint: ProgressCallbackProps[\"checkpoint\"],\n\t): void {\n\t\tconst { progress } = this.tasks[taskId] || {}\n\t\tif (isFunction(progress)) {\n\t\t\tprogress(percent, loaded, total, checkpoint)\n\t\t}\n\t}\n\n\tpublic createTask(\n\t\tfile: File | Blob,\n\t\tkey: string,\n\t\tuploadConfig: UploadConfig,\n\t\toption: PlatformMultipartUploadOption | PlatformSimpleUploadOption,\n\t): TaskCallBack {\n\t\tlet taskId = nanoid()\n\t\tif (this.tasks[taskId]) {\n\t\t\twhile (this.tasks[taskId]) {\n\t\t\t\ttaskId = nanoid()\n\t\t\t}\n\t\t}\n\n\t\tconst output: TaskCallBack = {\n\t\t\tsuccess: (callback) => {\n\t\t\t\tconst taskEventCallback: SuccessCallback = (response) => {\n\t\t\t\t\t// Report success log\n\t\t\t\t\tlogPubSub.report({\n\t\t\t\t\t\ttype: \"SUCCESS\",\n\t\t\t\t\t\teventName: \"upload\",\n\t\t\t\t\t\teventParams: { ...uploadConfig },\n\t\t\t\t\t\teventResponse: response,\n\t\t\t\t\t})\n\t\t\t\t\t// Remove all callbacks for the current task\n\t\t\t\t\tTaskEvent.off(`${taskId}_success`)\n\t\t\t\t\tTaskEvent.off(`${taskId}_fail`)\n\t\t\t\t\tTaskEvent.off(`${taskId}_progress`)\n\t\t\t\t\tcallback(response)\n\t\t\t\t}\n\t\t\t\t// Subscribe to success callback for current upload task\n\t\t\t\tTaskEvent.on(`${taskId}_success`, taskEventCallback)\n\t\t\t},\n\t\t\tfail: (callback) => {\n\t\t\t\tconst taskEventCallback: FailCallback = (error) => {\n\t\t\t\t\t// Report failure log\n\t\t\t\t\tlogPubSub.report({\n\t\t\t\t\t\ttype: \"ERROR\",\n\t\t\t\t\t\teventName: \"upload\",\n\t\t\t\t\t\teventParams: { ...uploadConfig },\n\t\t\t\t\t\terror,\n\t\t\t\t\t})\n\t\t\t\t\t// Remove all callbacks for the current task\n\t\t\t\t\t// TaskEvent.off(`${taskId}_success`)\n\t\t\t\t\t// TaskEvent.off(`${taskId}_fail`)\n\t\t\t\t\t// TaskEvent.off(`${taskId}_progress`)\n\t\t\t\t\tcallback(error)\n\t\t\t\t}\n\t\t\t\t// Subscribe to failure callback for current upload task\n\t\t\t\tTaskEvent.on(`${taskId}_fail`, taskEventCallback)\n\t\t\t},\n\t\t\tprogress: (callback) => {\n\t\t\t\tconst taskEventCallback: ProgressCallback = (\n\t\t\t\t\tpercent,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tcheckpoint,\n\t\t\t\t) => {\n\t\t\t\t\tcallback(percent, loaded, total, checkpoint)\n\t\t\t\t}\n\t\t\t\t// Subscribe to progress callback for current upload task\n\t\t\t\tTaskEvent.on(`${taskId}_progress`, taskEventCallback)\n\t\t\t},\n\t\tcancel: () => {\n\t\t\tconst task = this.tasks[taskId]\n\t\t\tif (task) {\n\t\t\t\tcancelRequest(taskId)\n\t\t\t\t// Remove all callbacks for the current task\n\t\t\t\tTaskEvent.off(`${taskId}_success`)\n\t\t\t\tTaskEvent.off(`${taskId}_fail`)\n\t\t\t\tTaskEvent.off(`${taskId}_progress`)\n\t\t\t\tconst { pauseInfo } = task\n\t\t\t\tif (pauseInfo) {\n\t\t\t\t\t// Clear multipart upload checkpoint info\n\t\t\t\t\tdelete task.pauseInfo\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tpause: () => {\n\t\t\tconst task = this.tasks[taskId]\n\t\t\tif (task) {\n\t\t\t\tconst { pauseInfo } = task\n\t\t\t\tif (pauseInfo) {\n\t\t\t\t\ttask.pauseInfo = {\n\t\t\t\t\t\t...pauseInfo,\n\t\t\t\t\t\tisPause: true,\n\t\t\t\t\t}\n\t\t\t\t\tpauseRequest(taskId)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresume: () => {\n\t\t\tconst task = this.tasks[taskId]\n\t\t\tif (task) {\n\t\t\t\tconst { pauseInfo } = task\n\t\t\t\t// Only multipart upload can be resumed\n\t\t\t\tif (pauseInfo) {\n\t\t\t\t\tconst { isPause, checkpoint } = pauseInfo\n\n\t\t\t\t\tif (isPause) {\n\t\t\t\t\t\ttask.pauseInfo = {\n\t\t\t\t\t\t\tisPause: false,\n\t\t\t\t\t\t\tcheckpoint,\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.upload(file, key, taskId, uploadConfig, {\n\t\t\t\t\t\t\t...option,\n\t\t\t\t\t\t\tcheckpoint,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t}\n\t\tthis.tasks[taskId] = {\n\t\t\tsuccess: (response) => {\n\t\t\t\tTaskEvent.emit(`${taskId}_success`, response)\n\t\t\t},\n\t\t\tfail: (error) => {\n\t\t\t\tTaskEvent.emit(`${taskId}_fail`, error)\n\t\t\t},\n\t\t\tprogress: (response) => {\n\t\t\t\tTaskEvent.emit(`${taskId}_progress`, response)\n\t\t\t},\n\t\t\tcancel: output.cancel,\n\t\t\tpause: output.pause,\n\t\t\tresume: output.resume,\n\t\t}\n\n\t\tthis.upload(file, key, taskId, uploadConfig, option)\n\n\t\treturn {\n\t\t\tsuccess: output.success,\n\t\t\tfail: output.fail,\n\t\t\tprogress: output.progress,\n\t\t\tcancel: output.cancel,\n\t\t\tpause: output.pause,\n\t\t\tresume: output.resume,\n\t\t}\n\t}\n\n\tprivate upload<T extends PlatformParams>(\n\t\tfile: File | Blob,\n\t\tkey: string,\n\t\ttaskId: TaskId,\n\t\tuploadConfig: UploadConfig,\n\t\toption: PlatformMultipartUploadOption | PlatformSimpleUploadOption,\n\t) {\n\tconst onProgress: Progress = (\n\t\tpercent: number,\n\t\tloaded: number,\n\t\ttotal: number,\n\t\tcheckpoint: OSS.Checkpoint | null,\n\t) => {\n\t\t// Save multipart upload checkpoint info\n\t\tconst task = this.tasks[taskId]\n\t\tif (checkpoint && task) {\n\t\t\ttask.pauseInfo = {\n\t\t\t\tisPause: false,\n\t\t\t\tcheckpoint,\n\t\t\t}\n\t\t\tthis.notifyProgress(taskId, percent, loaded, total, checkpoint)\n\t\t} else {\n\t\t\tthis.notifyProgress(taskId, percent, loaded, total, null)\n\t\t}\n\t}\n\t\t// Handle upload credentials: support custom credentials and traditional credential retrieval\n\t\tconst uploadPromise = uploadConfig.customCredentials\n\t\t\t? Promise.resolve({\n\t\t\t\t\tplatform: uploadConfig.customCredentials.platform,\n\t\t\t\t\ttemporary_credential: uploadConfig.customCredentials.temporary_credential,\n\t\t\t\t\texpire: uploadConfig.customCredentials.expire || 0,\n\t\t\t } as UploadSource<T>)\n\t\t\t: (() => {\n\t\t\t\t\tconst { url, method, headers, body } = uploadConfig\n\t\t\t\t\tconst uploadSourceRequest: Request = {\n\t\t\t\t\t\turl: url!,\n\t\t\t\t\t\tmethod: method!,\n\t\t\t\t\t\theaders,\n\t\t\t\t\t\tbody,\n\t\t\t\t\t}\n\t\t\t\t\tconst isNeedForceReFresh = !option?.reUploadedCount\n\t\t\t\t\treturn getUploadConfig<T>(uploadSourceRequest, isNeedForceReFresh)\n\t\t\t })()\n\n\t\tuploadPromise\n\t\t\t.then(async (uploadSource: UploadSource<T>) => {\n\t\t\t\tconst platformType = uploadSource.platform\n\t\t\t\tconst platformConfig = uploadSource.temporary_credential\n\n\t\t\t\t// Use async loading for platform modules\n\t\t\t\ttry {\n\t\t\t\t\tconst platform = PlatformModules[platformType]\n\n\t\t\t\t\tif (!platform) {\n\t\t\t\t\t\tthrow new InitException(\n\t\t\t\t\t\t\tInitExceptionCode.UPLOAD_IS_NO_SUPPORT_THIS_PLATFORM,\n\t\t\t\t\t\t\tplatformType,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\treturn { platform, platformConfig }\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new InitException(\n\t\t\t\t\t\tInitExceptionCode.UPLOAD_IS_NO_SUPPORT_THIS_PLATFORM,\n\t\t\t\t\t\tplatformType,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t})\n\t\t.then(({ platform, platformConfig }) => {\n\t\t\tif (!file && !isBlob(file) && !isFile(file))\n\t\t\t\tthrow new InitException(InitExceptionCode.UPLOAD_IS_NO_SUPPORT_THIS_FILE_FORMAT)\n\t\t\tif (!key)\n\t\t\t\tthrow new InitException(InitExceptionCode.MISSING_PARAMS_FOR_UPLOAD, \"fileName\")\n\t\t\tif (!platform.upload) {\n\t\t\t\tthrow new InitException(\n\t\t\t\t\tInitExceptionCode.UPLOAD_IS_NO_SUPPORT_THIS_PLATFORM,\n\t\t\t\t\t\"platform.upload is undefined\"\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn platform.upload(\n\t\t\t\tfile,\n\t\t\t\tkey,\n\t\t\t\tplatformConfig as OSS.AuthParams &\n\t\t\t\t\tKodo.AuthParams &\n\t\t\t\t\tOSS.STSAuthParams &\n\t\t\t\t\tTOS.STSAuthParams &\n\t\t\t\t\tTOS.AuthParams &\n\t\t\t\t\tOBS.STSAuthParams &\n\t\t\t\t\tOBS.AuthParams &\n\t\t\t\t\tLocal.AuthParams &\n\t\t\t\t\tMinIO.AuthParams &\n\t\t\t\t\tMinIO.STSAuthParams,\n\t\t\t\t{\n\t\t\t\t\t...option,\n\t\t\t\t\tprogress: onProgress,\n\t\t\t\t\ttaskId,\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t\t\t.then((res) => {\n\t\t\t\tthis.notifySuccess(taskId, res)\n\t\t\t\tthis.detach(taskId)\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tlet message = err\n\t\t\t\t// When upload platform returns token expiration error\n\t\t\t\tif (err?.status === 1003) {\n\t\t\t\t\t// Retry up to 3 times by default\n\t\t\t\t\tif (option?.reUploadedCount && option?.reUploadedCount >= 2) {\n\t\t\t\t\t\tthis.notifyError(\n\t\t\t\t\t\t\ttaskId,\n\t\t\t\t\t\t\tnew InitException(InitExceptionCode.REUPLOAD_IS_FAILED),\n\t\t\t\t\t\t)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tthis.upload(file, key, taskId, uploadConfig, {\n\t\t\t\t\t\t...option,\n\t\t\t\t\t\treUploadedCount: option?.reUploadedCount ? option.reUploadedCount + 1 : 1,\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// Upload paused\n\t\t\t\tif (err?.status === 5002) {\n\t\t\t\t\tmessage = new UploadException(UploadExceptionCode.UPLOAD_PAUSE)\n\t\t\t\t}\n\t\t\t\t// Upload canceled\n\t\t\t\tif (err?.status === 5001) {\n\t\t\t\t\tmessage = new UploadException(UploadExceptionCode.UPLOAD_CANCEL)\n\t\t\t\t}\n\t\t\t\tthis.notifyError(taskId, message)\n\t\t\t})\n\t}\n\n\t// Pause all uploads\n\tpublic pauseAllTask() {\n\t\tObject.values(this.tasks).forEach((task) => {\n\t\t\tif (task.pause) {\n\t\t\t\ttask.pause()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Resume all uploads\n\tpublic resumeAllTask() {\n\t\tObject.values(this.tasks).forEach((task) => {\n\t\t\tif (task.resume) {\n\t\t\t\ttask.resume()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Cancel all uploads\n\tpublic cancelAllTask() {\n\t\tObject.values(this.tasks).forEach((task) => {\n\t\t\tif (task.cancel) {\n\t\t\t\ttask.cancel()\n\t\t\t}\n\t\t})\n\t}\n}\n\n\n\n\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
const _UploadTask = class _UploadTask {
|
|
4
|
+
constructor(taskId) {
|
|
5
|
+
this.taskId = taskId;
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
__name(_UploadTask, "UploadTask");
|
|
9
|
+
let UploadTask = _UploadTask;
|
|
10
|
+
export {
|
|
11
|
+
UploadTask as default
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=UploadTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/UploadTask.ts"],"sourcesContent":["export default class UploadTask {\n\ttaskId: string\n\n\tconstructor(taskId: string) {\n\t\tthis.taskId = taskId\n\t}\n}\n\n\n\n\n"],"mappings":";;AAAC,MAAqB,cAArB,MAAqB,YAAW;AAAA,EAGhC,YAAY,QAAgB;AAC3B,SAAK,SAAS;AAAA,EACf;AACD;AANiC;AAAhC,IAAqB,aAArB;","names":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
function isBlob(blob) {
|
|
4
|
+
return typeof Blob !== "undefined" && blob instanceof Blob;
|
|
5
|
+
}
|
|
6
|
+
__name(isBlob, "isBlob");
|
|
7
|
+
function isBuffer(obj) {
|
|
8
|
+
return Buffer.isBuffer(obj);
|
|
9
|
+
}
|
|
10
|
+
__name(isBuffer, "isBuffer");
|
|
11
|
+
const isFile = /* @__PURE__ */ __name((obj) => typeof File !== "undefined" && obj instanceof File, "isFile");
|
|
12
|
+
const isFunction = /* @__PURE__ */ __name((v) => typeof v === "function", "isFunction");
|
|
13
|
+
const isIP = /* @__PURE__ */ __name((host) => {
|
|
14
|
+
const ipv4Regex = /^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$/;
|
|
15
|
+
const ipv6Regex = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
|
|
16
|
+
return ipv4Regex.test(host) || ipv6Regex.test(host);
|
|
17
|
+
}, "isIP");
|
|
18
|
+
const isJson = /* @__PURE__ */ __name((str) => {
|
|
19
|
+
if (typeof str !== "string") {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
if (typeof JSON.parse(str) === "object") {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
} catch (e) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}, "isJson");
|
|
31
|
+
const isObject = /* @__PURE__ */ __name((obj) => Object.prototype.toString.call(obj) === "[object Object]", "isObject");
|
|
32
|
+
export {
|
|
33
|
+
isBlob,
|
|
34
|
+
isBuffer,
|
|
35
|
+
isFile,
|
|
36
|
+
isFunction,
|
|
37
|
+
isIP,
|
|
38
|
+
isJson,
|
|
39
|
+
isObject
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=checkDataFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/checkDataFormat.ts"],"sourcesContent":["export function isBlob(blob: any) {\n\treturn typeof Blob !== \"undefined\" && blob instanceof Blob\n}\n\nexport function isBuffer(obj: any) {\n\treturn Buffer.isBuffer(obj)\n}\n\nexport const isFile = (obj: any) => typeof File !== \"undefined\" && obj instanceof File\n\nexport const isFunction = (v: any): boolean => typeof v === \"function\"\n\n/**\n * Judge isIP include ipv4 or ipv6\n * @param {String} host\n */\nexport const isIP = (host: string) => {\n\tconst ipv4Regex = /^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$/\n\tconst ipv6Regex =\n\t\t/^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/\n\treturn ipv4Regex.test(host) || ipv6Regex.test(host)\n}\n\n// Validate if it is JSON type\nexport const isJson = (str: any): boolean => {\n\t// First ensure the input is a string type\n\tif (typeof str !== \"string\") {\n\t\treturn false\n\t}\n\n\ttry {\n\t\tif (typeof JSON.parse(str) === \"object\") {\n\t\t\treturn true\n\t\t}\n\t} catch (e) {\n\t\treturn false\n\t}\n\treturn false\n}\n\nexport const isObject = (obj: any) => Object.prototype.toString.call(obj) === \"[object Object]\"\n\n\n\n\n"],"mappings":";;AAAQ,SAAS,OAAO,MAAW;AAClC,SAAO,OAAO,SAAS,eAAe,gBAAgB;AACvD;AAFiB;AAIV,SAAS,SAAS,KAAU;AAClC,SAAO,OAAO,SAAS,GAAG;AAC3B;AAFgB;AAIT,MAAM,SAAS,wBAAC,QAAa,OAAO,SAAS,eAAe,eAAe,MAA5D;AAEf,MAAM,aAAa,wBAAC,MAAoB,OAAO,MAAM,YAAlC;AAMnB,MAAM,OAAO,wBAAC,SAAiB;AACrC,QAAM,YAAY;AAClB,QAAM,YACL;AACD,SAAO,UAAU,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI;AACnD,GALoB;AAQb,MAAM,SAAS,wBAAC,QAAsB;AAE5C,MAAI,OAAO,QAAQ,UAAU;AAC5B,WAAO;AAAA,EACR;AAEA,MAAI;AACH,QAAI,OAAO,KAAK,MAAM,GAAG,MAAM,UAAU;AACxC,aAAO;AAAA,IACR;AAAA,EACD,SAAS,GAAG;AACX,WAAO;AAAA,EACR;AACA,SAAO;AACR,GAdsB;AAgBf,MAAM,WAAW,wBAAC,QAAa,OAAO,UAAU,SAAS,KAAK,GAAG,MAAM,mBAAtD;","names":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { HttpException, HttpExceptionCode } from "../Exception/HttpException";
|
|
4
|
+
import { InitException, InitExceptionCode } from "../Exception/InitException";
|
|
5
|
+
import { request } from "./request";
|
|
6
|
+
const globalCache = {
|
|
7
|
+
// "http://xxx": {
|
|
8
|
+
// platform: PlatformType.OSS,
|
|
9
|
+
// temporary_credential: {} as AuthParams,
|
|
10
|
+
// expire: 0
|
|
11
|
+
// }
|
|
12
|
+
};
|
|
13
|
+
let running = false;
|
|
14
|
+
const tasks = [];
|
|
15
|
+
async function fetchUploadConfig(uploadSource) {
|
|
16
|
+
const { url, method, headers, body } = uploadSource;
|
|
17
|
+
const { code, data, message } = await request({
|
|
18
|
+
url,
|
|
19
|
+
method: method || "GET",
|
|
20
|
+
headers: headers || {},
|
|
21
|
+
data: body,
|
|
22
|
+
fail: (status, reject) => {
|
|
23
|
+
reject(new HttpException(HttpExceptionCode.REQUEST_FAILED_WITH_STATUS_CODE, status));
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
if (code !== 1e3) {
|
|
27
|
+
throw new InitException(InitExceptionCode.UPLOAD_REQUEST_CREDENTIALS_ERROR, message);
|
|
28
|
+
}
|
|
29
|
+
globalCache[url] = data;
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
__name(fetchUploadConfig, "fetchUploadConfig");
|
|
33
|
+
function runTask(uploadSource, useCache) {
|
|
34
|
+
const { url } = uploadSource;
|
|
35
|
+
running = true;
|
|
36
|
+
const task = tasks.shift();
|
|
37
|
+
let isResolve = false;
|
|
38
|
+
if (Object.keys(globalCache).includes(url) && useCache) {
|
|
39
|
+
const { expire } = globalCache[url];
|
|
40
|
+
if (expire) {
|
|
41
|
+
if (new Date(expire * 1e3 - 60 * 10 * 1e3).getTime() > Date.now()) {
|
|
42
|
+
task?.resolve(globalCache[url]);
|
|
43
|
+
isResolve = true;
|
|
44
|
+
}
|
|
45
|
+
} else {
|
|
46
|
+
console.warn(
|
|
47
|
+
`[Upload SDK]: Receive request return value does not contain "expire" field, please contact the back end for confirmation`
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
new Promise((resolve) => {
|
|
52
|
+
if (!isResolve) {
|
|
53
|
+
fetchUploadConfig(uploadSource).then((data) => {
|
|
54
|
+
task?.resolve({ ...data });
|
|
55
|
+
}).catch((err) => {
|
|
56
|
+
task?.reject(err);
|
|
57
|
+
}).finally(() => {
|
|
58
|
+
resolve();
|
|
59
|
+
});
|
|
60
|
+
} else {
|
|
61
|
+
resolve();
|
|
62
|
+
}
|
|
63
|
+
}).finally(() => {
|
|
64
|
+
running = false;
|
|
65
|
+
if (tasks.length > 0) {
|
|
66
|
+
runTask(uploadSource, useCache);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
__name(runTask, "runTask");
|
|
71
|
+
function getUploadConfig(uploadSource, useCache = true) {
|
|
72
|
+
return new Promise((resolve, reject) => {
|
|
73
|
+
tasks.push({ resolve, reject });
|
|
74
|
+
if (!running) {
|
|
75
|
+
runTask(uploadSource, useCache);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
__name(getUploadConfig, "getUploadConfig");
|
|
80
|
+
export {
|
|
81
|
+
getUploadConfig
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/global.ts"],"sourcesContent":["import { HttpException, HttpExceptionCode } from \"../Exception/HttpException\"\nimport { InitException, InitExceptionCode } from \"../Exception/InitException\"\nimport type { GlobalCache, PlatformParams, Request, UploadSource } from \"../types\"\nimport { request } from \"./request\"\nimport type { Result } from \"../types/request\"\n\nconst globalCache: GlobalCache<PlatformParams> = {\n\t// \"http://xxx\": {\n\t// \tplatform: PlatformType.OSS,\n\t// \ttemporary_credential: {} as AuthParams,\n\t// \texpire: 0\n\t// }\n}\n\ninterface Task {\n\tresolve: (uploadSource: any) => void\n\treject: (err: Error) => void\n}\n\nlet running = false\nconst tasks: Task[] = []\n\nasync function fetchUploadConfig<T extends PlatformParams>(uploadSource: Request) {\n\tconst { url, method, headers, body } = uploadSource\n\tconst { code, data, message } = await request<Result<UploadSource<T>>>({\n\t\turl,\n\t\tmethod: method || \"GET\",\n\t\theaders: headers || {},\n\t\tdata: body,\n\t\tfail: (status, reject) => {\n\t\t\treject(new HttpException(HttpExceptionCode.REQUEST_FAILED_WITH_STATUS_CODE, status))\n\t\t},\n\t})\n\n\tif (code !== 1000) {\n\t\tthrow new InitException(InitExceptionCode.UPLOAD_REQUEST_CREDENTIALS_ERROR, message)\n\t}\n\tglobalCache[url] = data\n\n\treturn data\n}\n\nfunction runTask<T extends PlatformParams>(uploadSource: Request, useCache: Boolean) {\n\tconst { url } = uploadSource\n\trunning = true\n\tconst task = tasks.shift()\n\tlet isResolve = false\n\t// Whether there is a cached request for this url\n\tif (Object.keys(globalCache).includes(url) && useCache) {\n\t\tconst { expire } = globalCache[url]\n\t\t// Check if the backend return value has an expire field\n\t\tif (expire) {\n\t\t\t// ps: Re-request temporary credentials 10 minutes before expiration\n\t\t\tif (new Date(expire * 1000 - 60 * 10 * 1000).getTime() > Date.now()) {\n\t\t\t\ttask?.resolve(globalCache[url] as UploadSource<T>)\n\t\t\t\tisResolve = true\n\t\t\t}\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(\n\t\t\t\t`[Upload SDK]: Receive request return value does not contain \"expire\" field, please contact the back end for confirmation`,\n\t\t\t)\n\t\t}\n\t}\n\n\tnew Promise<void>((resolve) => {\n\t\tif (!isResolve) {\n\t\t\tfetchUploadConfig(uploadSource)\n\t\t\t\t.then((data) => {\n\t\t\t\t\ttask?.resolve({ ...data } as UploadSource<T>)\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\ttask?.reject(err)\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tresolve()\n\t\t\t\t})\n\t\t} else {\n\t\t\tresolve()\n\t\t}\n\t}).finally(() => {\n\t\trunning = false\n\n\t\tif (tasks.length > 0) {\n\t\t\trunTask(uploadSource, useCache)\n\t\t}\n\t})\n}\n\n/**\n * @description Check if temporary credentials are expired, if expired, re-obtain temporary credentials\n * @param {Request} uploadSource\n * @param useCache\n */\nexport function getUploadConfig<T extends PlatformParams>(\n\tuploadSource: Request,\n\tuseCache: boolean = true, // Do not use cache\n): Promise<UploadSource<T>> {\n\treturn new Promise((resolve, reject) => {\n\t\ttasks.push({ resolve, reject })\n\t\tif (!running) {\n\t\t\trunTask(uploadSource, useCache)\n\t\t}\n\t})\n}\n\n\n\n\n"],"mappings":";;AAAC,SAAS,eAAe,yBAAyB;AAClD,SAAS,eAAe,yBAAyB;AAEjD,SAAS,eAAe;AAGxB,MAAM,cAA2C;AAAA;AAAA;AAAA;AAAA;AAAA;AAMjD;AAOA,IAAI,UAAU;AACd,MAAM,QAAgB,CAAC;AAEvB,eAAe,kBAA4C,cAAuB;AACjF,QAAM,EAAE,KAAK,QAAQ,SAAS,KAAK,IAAI;AACvC,QAAM,EAAE,MAAM,MAAM,QAAQ,IAAI,MAAM,QAAiC;AAAA,IACtE;AAAA,IACA,QAAQ,UAAU;AAAA,IAClB,SAAS,WAAW,CAAC;AAAA,IACrB,MAAM;AAAA,IACN,MAAM,CAAC,QAAQ,WAAW;AACzB,aAAO,IAAI,cAAc,kBAAkB,iCAAiC,MAAM,CAAC;AAAA,IACpF;AAAA,EACD,CAAC;AAED,MAAI,SAAS,KAAM;AAClB,UAAM,IAAI,cAAc,kBAAkB,kCAAkC,OAAO;AAAA,EACpF;AACA,cAAY,GAAG,IAAI;AAEnB,SAAO;AACR;AAlBe;AAoBf,SAAS,QAAkC,cAAuB,UAAmB;AACpF,QAAM,EAAE,IAAI,IAAI;AAChB,YAAU;AACV,QAAM,OAAO,MAAM,MAAM;AACzB,MAAI,YAAY;AAEhB,MAAI,OAAO,KAAK,WAAW,EAAE,SAAS,GAAG,KAAK,UAAU;AACvD,UAAM,EAAE,OAAO,IAAI,YAAY,GAAG;AAElC,QAAI,QAAQ;AAEX,UAAI,IAAI,KAAK,SAAS,MAAO,KAAK,KAAK,GAAI,EAAE,QAAQ,IAAI,KAAK,IAAI,GAAG;AACpE,cAAM,QAAQ,YAAY,GAAG,CAAoB;AACjD,oBAAY;AAAA,MACb;AAAA,IACD,OAAO;AAEN,cAAQ;AAAA,QACP;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,MAAI,QAAc,CAAC,YAAY;AAC9B,QAAI,CAAC,WAAW;AACf,wBAAkB,YAAY,EAC5B,KAAK,CAAC,SAAS;AACf,cAAM,QAAQ,EAAE,GAAG,KAAK,CAAoB;AAAA,MAC7C,CAAC,EACA,MAAM,CAAC,QAAQ;AACf,cAAM,OAAO,GAAG;AAAA,MACjB,CAAC,EACA,QAAQ,MAAM;AACd,gBAAQ;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACN,cAAQ;AAAA,IACT;AAAA,EACD,CAAC,EAAE,QAAQ,MAAM;AAChB,cAAU;AAEV,QAAI,MAAM,SAAS,GAAG;AACrB,cAAQ,cAAc,QAAQ;AAAA,IAC/B;AAAA,EACD,CAAC;AACF;AA7CS;AAoDF,SAAS,gBACf,cACA,WAAoB,MACO;AAC3B,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,UAAM,KAAK,EAAE,SAAS,OAAO,CAAC;AAC9B,QAAI,CAAC,SAAS;AACb,cAAQ,cAAc,QAAQ;AAAA,IAC/B;AAAA,EACD,CAAC;AACF;AAVgB;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
function checkSpecialCharacters(fileName) {
|
|
4
|
+
return fileName.includes("%");
|
|
5
|
+
}
|
|
6
|
+
__name(checkSpecialCharacters, "checkSpecialCharacters");
|
|
7
|
+
function getFileExtension(fileName) {
|
|
8
|
+
const lastDotIndex = fileName.lastIndexOf(".");
|
|
9
|
+
if (lastDotIndex === -1) {
|
|
10
|
+
return "";
|
|
11
|
+
}
|
|
12
|
+
const extension = fileName.substring(lastDotIndex + 1);
|
|
13
|
+
return extension.toLowerCase();
|
|
14
|
+
}
|
|
15
|
+
__name(getFileExtension, "getFileExtension");
|
|
16
|
+
export {
|
|
17
|
+
checkSpecialCharacters,
|
|
18
|
+
getFileExtension
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["/**\n * Check if fileName contains special characters\n * @param fileName\n */\nexport function checkSpecialCharacters(fileName: string) {\n\t// Exists in actual implementation\n\treturn fileName.includes(\"%\")\n}\n\n/**\n * Get file extension\n * @param fileName\n */\nexport function getFileExtension(fileName: string): string {\n\tconst lastDotIndex = fileName.lastIndexOf(\".\")\n\tif (lastDotIndex === -1) {\n\t\treturn \"\" // No extension in filename\n\t}\n\tconst extension = fileName.substring(lastDotIndex + 1)\n\treturn extension.toLowerCase() // Return lowercase extension\n}\n\n\n\n\n"],"mappings":";;AAIO,SAAS,uBAAuB,UAAkB;AAExD,SAAO,SAAS,SAAS,GAAG;AAC7B;AAHgB;AAST,SAAS,iBAAiB,UAA0B;AAC1D,QAAM,eAAe,SAAS,YAAY,GAAG;AAC7C,MAAI,iBAAiB,IAAI;AACxB,WAAO;AAAA,EACR;AACA,QAAM,YAAY,SAAS,UAAU,eAAe,CAAC;AACrD,SAAO,UAAU,YAAY;AAC9B;AAPgB;","names":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
const _LogPubSub = class _LogPubSub {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.callbacks = [];
|
|
6
|
+
}
|
|
7
|
+
// Subscribe to log
|
|
8
|
+
subscribe(cb) {
|
|
9
|
+
this.callbacks.push(cb);
|
|
10
|
+
}
|
|
11
|
+
// Publish log
|
|
12
|
+
report(createLogConfig) {
|
|
13
|
+
const log = _LogPubSub.createLog(createLogConfig);
|
|
14
|
+
if (this.callbacks.length > 0) {
|
|
15
|
+
this.callbacks.forEach((cb) => cb(log));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create log
|
|
20
|
+
* @param {LogModule.createLogConfig} createLogConfig
|
|
21
|
+
* @return {LogModule.LogData} LogData
|
|
22
|
+
*/
|
|
23
|
+
static createLog(createLogConfig) {
|
|
24
|
+
const { type, eventName, eventParams, eventResponse, error, extra } = createLogConfig;
|
|
25
|
+
let output = {
|
|
26
|
+
type,
|
|
27
|
+
event_name: eventName,
|
|
28
|
+
event_params: eventParams || "",
|
|
29
|
+
event_response: eventResponse || "",
|
|
30
|
+
exception_type: "",
|
|
31
|
+
exception_message: "",
|
|
32
|
+
exception_file: "",
|
|
33
|
+
exception_line: "",
|
|
34
|
+
exception_row: "",
|
|
35
|
+
extra: extra || "",
|
|
36
|
+
time: /* @__PURE__ */ new Date(),
|
|
37
|
+
version: "Upload-SDK.js VERSION"
|
|
38
|
+
};
|
|
39
|
+
if (type === "ERROR" && error) {
|
|
40
|
+
const parseError = /at\s+(.*)\s+\((.*):(\d*):(\d*)\)/i.exec(error.stack || "");
|
|
41
|
+
output = {
|
|
42
|
+
...output,
|
|
43
|
+
exception_type: error.name,
|
|
44
|
+
exception_message: error.message,
|
|
45
|
+
exception_file: parseError ? parseError[2] : "",
|
|
46
|
+
exception_line: parseError ? parseError[3] : "",
|
|
47
|
+
exception_row: parseError ? parseError[4] : ""
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return output;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
__name(_LogPubSub, "LogPubSub");
|
|
54
|
+
let LogPubSub = _LogPubSub;
|
|
55
|
+
var logPubSub_default = new LogPubSub();
|
|
56
|
+
export {
|
|
57
|
+
logPubSub_default as default
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=logPubSub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/logPubSub.ts"],"sourcesContent":["import type { LogModule } from \"../types/log\"\n\n/**\n * Log module for publishing and collecting logs\n */\nclass LogPubSub {\n\tprivate callbacks: LogModule.CallBack[] = []\n\n\t// Subscribe to log\n\tsubscribe(cb: LogModule.CallBack) {\n\t\tthis.callbacks.push(cb)\n\t}\n\n\t// Publish log\n\treport(createLogConfig: LogModule.CreateLogConfig) {\n\t\tconst log = LogPubSub.createLog(createLogConfig)\n\n\t\tif (this.callbacks.length > 0) {\n\t\t\tthis.callbacks.forEach((cb) => cb(log))\n\t\t}\n\t}\n\n\t/**\n\t * Create log\n\t * @param {LogModule.createLogConfig} createLogConfig\n\t * @return {LogModule.LogData} LogData\n\t */\n\tstatic createLog(createLogConfig: LogModule.CreateLogConfig): LogModule.LogData {\n\t\tconst { type, eventName, eventParams, eventResponse, error, extra } = createLogConfig\n\t\tlet output = {\n\t\t\ttype,\n\t\t\tevent_name: eventName,\n\t\t\tevent_params: eventParams || \"\",\n\t\t\tevent_response: eventResponse || \"\",\n\t\t\texception_type: \"\",\n\t\t\texception_message: \"\",\n\t\t\texception_file: \"\",\n\t\t\texception_line: \"\",\n\t\t\texception_row: \"\",\n\t\t\textra: extra || \"\",\n\t\t\ttime: new Date(),\n\t\t\tversion: \"Upload-SDK.js VERSION\",\n\t\t}\n\t\tif (type === \"ERROR\" && error) {\n\t\t\tconst parseError = /at\\s+(.*)\\s+\\((.*):(\\d*):(\\d*)\\)/i.exec(error.stack || \"\")\n\n\t\t\toutput = {\n\t\t\t\t...output,\n\t\t\t\texception_type: error.name,\n\t\t\t\texception_message: error.message,\n\t\t\t\texception_file: parseError ? parseError[2] : \"\",\n\t\t\t\texception_line: parseError ? parseError[3] : \"\",\n\t\t\t\texception_row: parseError ? parseError[4] : \"\",\n\t\t\t}\n\t\t}\n\n\t\treturn output\n\t}\n}\n\nexport default new LogPubSub()\n\n\n\n\n"],"mappings":";;AAKA,MAAM,aAAN,MAAM,WAAU;AAAA,EAAhB;AACC,SAAQ,YAAkC,CAAC;AAAA;AAAA;AAAA,EAG3C,UAAU,IAAwB;AACjC,SAAK,UAAU,KAAK,EAAE;AAAA,EACvB;AAAA;AAAA,EAGA,OAAO,iBAA4C;AAClD,UAAM,MAAM,WAAU,UAAU,eAAe;AAE/C,QAAI,KAAK,UAAU,SAAS,GAAG;AAC9B,WAAK,UAAU,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC;AAAA,IACvC;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,UAAU,iBAA+D;AAC/E,UAAM,EAAE,MAAM,WAAW,aAAa,eAAe,OAAO,MAAM,IAAI;AACtE,QAAI,SAAS;AAAA,MACZ;AAAA,MACA,YAAY;AAAA,MACZ,cAAc,eAAe;AAAA,MAC7B,gBAAgB,iBAAiB;AAAA,MACjC,gBAAgB;AAAA,MAChB,mBAAmB;AAAA,MACnB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,OAAO,SAAS;AAAA,MAChB,MAAM,oBAAI,KAAK;AAAA,MACf,SAAS;AAAA,IACV;AACA,QAAI,SAAS,WAAW,OAAO;AAC9B,YAAM,aAAa,oCAAoC,KAAK,MAAM,SAAS,EAAE;AAE7E,eAAS;AAAA,QACR,GAAG;AAAA,QACH,gBAAgB,MAAM;AAAA,QACtB,mBAAmB,MAAM;AAAA,QACzB,gBAAgB,aAAa,WAAW,CAAC,IAAI;AAAA,QAC7C,gBAAgB,aAAa,WAAW,CAAC,IAAI;AAAA,QAC7C,eAAe,aAAa,WAAW,CAAC,IAAI;AAAA,MAC7C;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AACD;AArDgB;AAAhB,IAAM,YAAN;AAuDA,IAAO,oBAAQ,IAAI,UAAU;","names":[]}
|