@bedelightful/upload-sdk 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +132 -0
  3. package/dist/es/Exception/BaseException.js +14 -0
  4. package/dist/es/Exception/BaseException.js.map +1 -0
  5. package/dist/es/Exception/DownloadException.js +40 -0
  6. package/dist/es/Exception/DownloadException.js.map +1 -0
  7. package/dist/es/Exception/HttpException.js +50 -0
  8. package/dist/es/Exception/HttpException.js.map +1 -0
  9. package/dist/es/Exception/InitException.js +49 -0
  10. package/dist/es/Exception/InitException.js.map +1 -0
  11. package/dist/es/Exception/UploadException.js +50 -0
  12. package/dist/es/Exception/UploadException.js.map +1 -0
  13. package/dist/es/index.d.ts +867 -0
  14. package/dist/es/index.js +162 -0
  15. package/dist/es/index.js.map +1 -0
  16. package/dist/es/modules/Kodo/defaultUpload.js +38 -0
  17. package/dist/es/modules/Kodo/defaultUpload.js.map +1 -0
  18. package/dist/es/modules/Kodo/index.js +8 -0
  19. package/dist/es/modules/Kodo/index.js.map +1 -0
  20. package/dist/es/modules/Local/index.js +31 -0
  21. package/dist/es/modules/Local/index.js.map +1 -0
  22. package/dist/es/modules/MinIO/MultipartUpload.js +335 -0
  23. package/dist/es/modules/MinIO/MultipartUpload.js.map +1 -0
  24. package/dist/es/modules/MinIO/STSUpload.js +10 -0
  25. package/dist/es/modules/MinIO/STSUpload.js.map +1 -0
  26. package/dist/es/modules/MinIO/defaultUpload.js +124 -0
  27. package/dist/es/modules/MinIO/defaultUpload.js.map +1 -0
  28. package/dist/es/modules/MinIO/index.js +16 -0
  29. package/dist/es/modules/MinIO/index.js.map +1 -0
  30. package/dist/es/modules/OBS/MultipartUpload.js +269 -0
  31. package/dist/es/modules/OBS/MultipartUpload.js.map +1 -0
  32. package/dist/es/modules/OBS/STSUpload.js +71 -0
  33. package/dist/es/modules/OBS/STSUpload.js.map +1 -0
  34. package/dist/es/modules/OBS/defaultUpload.js +59 -0
  35. package/dist/es/modules/OBS/defaultUpload.js.map +1 -0
  36. package/dist/es/modules/OBS/index.js +16 -0
  37. package/dist/es/modules/OBS/index.js.map +1 -0
  38. package/dist/es/modules/OBS/utils/index.js +25 -0
  39. package/dist/es/modules/OBS/utils/index.js.map +1 -0
  40. package/dist/es/modules/OSS/MultipartUpload.js +232 -0
  41. package/dist/es/modules/OSS/MultipartUpload.js.map +1 -0
  42. package/dist/es/modules/OSS/STSUpload.js +48 -0
  43. package/dist/es/modules/OSS/STSUpload.js.map +1 -0
  44. package/dist/es/modules/OSS/defaultUpload.js +53 -0
  45. package/dist/es/modules/OSS/defaultUpload.js.map +1 -0
  46. package/dist/es/modules/OSS/index.js +16 -0
  47. package/dist/es/modules/OSS/index.js.map +1 -0
  48. package/dist/es/modules/OSS/utils/helper.js +137 -0
  49. package/dist/es/modules/OSS/utils/helper.js.map +1 -0
  50. package/dist/es/modules/OSS/utils/signature.js +96 -0
  51. package/dist/es/modules/OSS/utils/signature.js.map +1 -0
  52. package/dist/es/modules/TOS/MultipartUpload.js +288 -0
  53. package/dist/es/modules/TOS/MultipartUpload.js.map +1 -0
  54. package/dist/es/modules/TOS/STSUpload.js +92 -0
  55. package/dist/es/modules/TOS/STSUpload.js.map +1 -0
  56. package/dist/es/modules/TOS/defaultUpload.js +65 -0
  57. package/dist/es/modules/TOS/defaultUpload.js.map +1 -0
  58. package/dist/es/modules/TOS/index.js +16 -0
  59. package/dist/es/modules/TOS/index.js.map +1 -0
  60. package/dist/es/modules/TOS/utils/TosClientError.js +15 -0
  61. package/dist/es/modules/TOS/utils/TosClientError.js.map +1 -0
  62. package/dist/es/modules/TOS/utils/index.js +38 -0
  63. package/dist/es/modules/TOS/utils/index.js.map +1 -0
  64. package/dist/es/modules/TOS/utils/signatureV4.js +269 -0
  65. package/dist/es/modules/TOS/utils/signatureV4.js.map +1 -0
  66. package/dist/es/modules/TOS/utils/signatureV4Credentials.js +21 -0
  67. package/dist/es/modules/TOS/utils/signatureV4Credentials.js.map +1 -0
  68. package/dist/es/modules/TOS/utils/universal/crypto.browser.js +56 -0
  69. package/dist/es/modules/TOS/utils/universal/crypto.browser.js.map +1 -0
  70. package/dist/es/modules/TOS/utils/utils.js +18 -0
  71. package/dist/es/modules/TOS/utils/utils.js.map +1 -0
  72. package/dist/es/modules/index.js +20 -0
  73. package/dist/es/modules/index.js.map +1 -0
  74. package/dist/es/types/Kodo.js +1 -0
  75. package/dist/es/types/Kodo.js.map +1 -0
  76. package/dist/es/types/Local.js +1 -0
  77. package/dist/es/types/Local.js.map +1 -0
  78. package/dist/es/types/MinIO.js +1 -0
  79. package/dist/es/types/MinIO.js.map +1 -0
  80. package/dist/es/types/OBS.js +8 -0
  81. package/dist/es/types/OBS.js.map +1 -0
  82. package/dist/es/types/OSS.js +1 -0
  83. package/dist/es/types/OSS.js.map +1 -0
  84. package/dist/es/types/TOS.js +1 -0
  85. package/dist/es/types/TOS.js.map +1 -0
  86. package/dist/es/types/error.js +1 -0
  87. package/dist/es/types/error.js.map +1 -0
  88. package/dist/es/types/index.js +13 -0
  89. package/dist/es/types/index.js.map +1 -0
  90. package/dist/es/types/log.js +1 -0
  91. package/dist/es/types/log.js.map +1 -0
  92. package/dist/es/types/request.js +1 -0
  93. package/dist/es/types/request.js.map +1 -0
  94. package/dist/es/utils/EventEmitter.js +32 -0
  95. package/dist/es/utils/EventEmitter.js.map +1 -0
  96. package/dist/es/utils/UploadManger.js +276 -0
  97. package/dist/es/utils/UploadManger.js.map +1 -0
  98. package/dist/es/utils/UploadTask.js +13 -0
  99. package/dist/es/utils/UploadTask.js.map +1 -0
  100. package/dist/es/utils/checkDataFormat.js +41 -0
  101. package/dist/es/utils/checkDataFormat.js.map +1 -0
  102. package/dist/es/utils/global.js +83 -0
  103. package/dist/es/utils/global.js.map +1 -0
  104. package/dist/es/utils/index.js +20 -0
  105. package/dist/es/utils/index.js.map +1 -0
  106. package/dist/es/utils/logPubSub.js +59 -0
  107. package/dist/es/utils/logPubSub.js.map +1 -0
  108. package/dist/es/utils/multipart.js +159 -0
  109. package/dist/es/utils/multipart.js.map +1 -0
  110. package/dist/es/utils/nanoid.js +10 -0
  111. package/dist/es/utils/nanoid.js.map +1 -0
  112. package/dist/es/utils/regExpUtil.js +21 -0
  113. package/dist/es/utils/regExpUtil.js.map +1 -0
  114. package/dist/es/utils/request.js +234 -0
  115. package/dist/es/utils/request.js.map +1 -0
  116. package/dist/es/utils/response.js +20 -0
  117. package/dist/es/utils/response.js.map +1 -0
  118. package/dist/index.d.ts +867 -0
  119. package/dist/index.js +60913 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/index.min.js +130 -0
  122. package/dist/index.min.js.map +1 -0
  123. package/dist/lib/Exception/BaseException.js +37 -0
  124. package/dist/lib/Exception/BaseException.js.map +1 -0
  125. package/dist/lib/Exception/DownloadException.js +65 -0
  126. package/dist/lib/Exception/DownloadException.js.map +1 -0
  127. package/dist/lib/Exception/HttpException.js +75 -0
  128. package/dist/lib/Exception/HttpException.js.map +1 -0
  129. package/dist/lib/Exception/InitException.js +73 -0
  130. package/dist/lib/Exception/InitException.js.map +1 -0
  131. package/dist/lib/Exception/UploadException.js +75 -0
  132. package/dist/lib/Exception/UploadException.js.map +1 -0
  133. package/dist/lib/index.d.cts +867 -0
  134. package/dist/lib/index.js +203 -0
  135. package/dist/lib/index.js.map +1 -0
  136. package/dist/lib/modules/Kodo/defaultUpload.js +61 -0
  137. package/dist/lib/modules/Kodo/defaultUpload.js.map +1 -0
  138. package/dist/lib/modules/Kodo/index.js +28 -0
  139. package/dist/lib/modules/Kodo/index.js.map +1 -0
  140. package/dist/lib/modules/Local/index.js +50 -0
  141. package/dist/lib/modules/Local/index.js.map +1 -0
  142. package/dist/lib/modules/MinIO/MultipartUpload.js +357 -0
  143. package/dist/lib/modules/MinIO/MultipartUpload.js.map +1 -0
  144. package/dist/lib/modules/MinIO/STSUpload.js +33 -0
  145. package/dist/lib/modules/MinIO/STSUpload.js.map +1 -0
  146. package/dist/lib/modules/MinIO/defaultUpload.js +158 -0
  147. package/dist/lib/modules/MinIO/defaultUpload.js.map +1 -0
  148. package/dist/lib/modules/MinIO/index.js +35 -0
  149. package/dist/lib/modules/MinIO/index.js.map +1 -0
  150. package/dist/lib/modules/OBS/MultipartUpload.js +296 -0
  151. package/dist/lib/modules/OBS/MultipartUpload.js.map +1 -0
  152. package/dist/lib/modules/OBS/STSUpload.js +104 -0
  153. package/dist/lib/modules/OBS/STSUpload.js.map +1 -0
  154. package/dist/lib/modules/OBS/defaultUpload.js +88 -0
  155. package/dist/lib/modules/OBS/defaultUpload.js.map +1 -0
  156. package/dist/lib/modules/OBS/index.js +45 -0
  157. package/dist/lib/modules/OBS/index.js.map +1 -0
  158. package/dist/lib/modules/OBS/utils/index.js +49 -0
  159. package/dist/lib/modules/OBS/utils/index.js.map +1 -0
  160. package/dist/lib/modules/OSS/MultipartUpload.js +259 -0
  161. package/dist/lib/modules/OSS/MultipartUpload.js.map +1 -0
  162. package/dist/lib/modules/OSS/STSUpload.js +71 -0
  163. package/dist/lib/modules/OSS/STSUpload.js.map +1 -0
  164. package/dist/lib/modules/OSS/defaultUpload.js +76 -0
  165. package/dist/lib/modules/OSS/defaultUpload.js.map +1 -0
  166. package/dist/lib/modules/OSS/index.js +35 -0
  167. package/dist/lib/modules/OSS/index.js.map +1 -0
  168. package/dist/lib/modules/OSS/utils/helper.js +173 -0
  169. package/dist/lib/modules/OSS/utils/helper.js.map +1 -0
  170. package/dist/lib/modules/OSS/utils/signature.js +132 -0
  171. package/dist/lib/modules/OSS/utils/signature.js.map +1 -0
  172. package/dist/lib/modules/TOS/MultipartUpload.js +315 -0
  173. package/dist/lib/modules/TOS/MultipartUpload.js.map +1 -0
  174. package/dist/lib/modules/TOS/STSUpload.js +125 -0
  175. package/dist/lib/modules/TOS/STSUpload.js.map +1 -0
  176. package/dist/lib/modules/TOS/defaultUpload.js +94 -0
  177. package/dist/lib/modules/TOS/defaultUpload.js.map +1 -0
  178. package/dist/lib/modules/TOS/index.js +45 -0
  179. package/dist/lib/modules/TOS/index.js.map +1 -0
  180. package/dist/lib/modules/TOS/utils/TosClientError.js +34 -0
  181. package/dist/lib/modules/TOS/utils/TosClientError.js.map +1 -0
  182. package/dist/lib/modules/TOS/utils/index.js +64 -0
  183. package/dist/lib/modules/TOS/utils/index.js.map +1 -0
  184. package/dist/lib/modules/TOS/utils/signatureV4.js +294 -0
  185. package/dist/lib/modules/TOS/utils/signatureV4.js.map +1 -0
  186. package/dist/lib/modules/TOS/utils/signatureV4Credentials.js +44 -0
  187. package/dist/lib/modules/TOS/utils/signatureV4Credentials.js.map +1 -0
  188. package/dist/lib/modules/TOS/utils/universal/crypto.browser.js +93 -0
  189. package/dist/lib/modules/TOS/utils/universal/crypto.browser.js.map +1 -0
  190. package/dist/lib/modules/TOS/utils/utils.js +42 -0
  191. package/dist/lib/modules/TOS/utils/utils.js.map +1 -0
  192. package/dist/lib/modules/index.js +50 -0
  193. package/dist/lib/modules/index.js.map +1 -0
  194. package/dist/lib/types/Kodo.js +17 -0
  195. package/dist/lib/types/Kodo.js.map +1 -0
  196. package/dist/lib/types/Local.js +17 -0
  197. package/dist/lib/types/Local.js.map +1 -0
  198. package/dist/lib/types/MinIO.js +17 -0
  199. package/dist/lib/types/MinIO.js.map +1 -0
  200. package/dist/lib/types/OBS.js +32 -0
  201. package/dist/lib/types/OBS.js.map +1 -0
  202. package/dist/lib/types/OSS.js +17 -0
  203. package/dist/lib/types/OSS.js.map +1 -0
  204. package/dist/lib/types/TOS.js +17 -0
  205. package/dist/lib/types/TOS.js.map +1 -0
  206. package/dist/lib/types/error.js +17 -0
  207. package/dist/lib/types/error.js.map +1 -0
  208. package/dist/lib/types/index.js +37 -0
  209. package/dist/lib/types/index.js.map +1 -0
  210. package/dist/lib/types/log.js +17 -0
  211. package/dist/lib/types/log.js.map +1 -0
  212. package/dist/lib/types/request.js +17 -0
  213. package/dist/lib/types/request.js.map +1 -0
  214. package/dist/lib/utils/EventEmitter.js +51 -0
  215. package/dist/lib/utils/EventEmitter.js.map +1 -0
  216. package/dist/lib/utils/UploadManger.js +309 -0
  217. package/dist/lib/utils/UploadManger.js.map +1 -0
  218. package/dist/lib/utils/UploadTask.js +32 -0
  219. package/dist/lib/utils/UploadTask.js.map +1 -0
  220. package/dist/lib/utils/checkDataFormat.js +70 -0
  221. package/dist/lib/utils/checkDataFormat.js.map +1 -0
  222. package/dist/lib/utils/global.js +106 -0
  223. package/dist/lib/utils/global.js.map +1 -0
  224. package/dist/lib/utils/index.js +44 -0
  225. package/dist/lib/utils/index.js.map +1 -0
  226. package/dist/lib/utils/logPubSub.js +78 -0
  227. package/dist/lib/utils/logPubSub.js.map +1 -0
  228. package/dist/lib/utils/multipart.js +197 -0
  229. package/dist/lib/utils/multipart.js.map +1 -0
  230. package/dist/lib/utils/nanoid.js +33 -0
  231. package/dist/lib/utils/nanoid.js.map +1 -0
  232. package/dist/lib/utils/regExpUtil.js +44 -0
  233. package/dist/lib/utils/regExpUtil.js.map +1 -0
  234. package/dist/lib/utils/request.js +264 -0
  235. package/dist/lib/utils/request.js.map +1 -0
  236. package/dist/lib/utils/response.js +43 -0
  237. package/dist/lib/utils/response.js.map +1 -0
  238. package/dist/package.json +120 -0
  239. package/package.json +120 -0
@@ -0,0 +1,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":[]}