@zjlab-fe/data-hub-ui 0.21.7 → 0.22.0

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 (225) hide show
  1. package/es/assets/cardImg.png.js +3 -0
  2. package/es/assets/closeBtn.png.js +3 -0
  3. package/es/assets/icon-tag-header.png.js +3 -0
  4. package/es/assets/source.png.js +3 -0
  5. package/es/components/FileUploader/FileUploadModal.js +24 -0
  6. package/es/components/FileUploader/FileUploader.js +20 -0
  7. package/es/components/FileUploader/FileUploaderImpl/FileUploader.js +34 -0
  8. package/es/components/FileUploader/FileUploaderImpl/FileUploaderContextProvider.js +46 -0
  9. package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiver.css.js +36 -0
  10. package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiver.js +57 -0
  11. package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiverContainer.js +24 -0
  12. package/es/components/FileUploader/FileUploaderImpl/FileUploaderFileReceiverDesc.js +9 -0
  13. package/es/components/FileUploader/FileUploaderImpl/FileUploaderList.js +46 -0
  14. package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItem.js +46 -0
  15. package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemFail.js +21 -0
  16. package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemPaused.js +20 -0
  17. package/es/components/FileUploader/FileUploaderImpl/FileUploaderListItemUploading.js +43 -0
  18. package/es/components/FileUploader/FileUploaderImpl/FileUploaderlListItemFinished.js +32 -0
  19. package/es/components/FileUploader/Locale/translations.js +52 -0
  20. package/es/components/FileUploader/Locale/useTranslate.js +16 -0
  21. package/es/components/FileUploader/UploadStoreProvider/UploadStoreProvider.js +31 -0
  22. package/es/components/FileUploader/UploadStoreProvider/uploadStoreReducer.js +62 -0
  23. package/es/components/FileUploader/UploadStoreProvider/useOnFileAllUploaded.js +31 -0
  24. package/es/components/FileUploader/UploadStoreProvider/useSaveUnfinishedUploads.js +42 -0
  25. package/es/components/FileUploader/UploadStoreProvider/useSetupMergingEvent.js +45 -0
  26. package/es/components/FileUploader/hooks/useCancelUpload.js +40 -0
  27. package/es/components/FileUploader/hooks/useCurrentFile.js +61 -0
  28. package/es/components/FileUploader/hooks/useCurrentFileOnUploading.js +52 -0
  29. package/es/components/FileUploader/hooks/useCurrentFileSetupAndBackUp.js +39 -0
  30. package/es/components/FileUploader/hooks/useFormatFiles.js +64 -0
  31. package/es/components/FileUploader/hooks/useFormatFilesFindDuplicates.js +75 -0
  32. package/es/components/FileUploader/hooks/useFormatFilesRemoveDuplicates.js +21 -0
  33. package/es/components/FileUploader/hooks/useHandleChunkCompletion.js +31 -0
  34. package/es/components/FileUploader/hooks/useOnMounted.js +24 -0
  35. package/es/components/FileUploader/hooks/useOnMountedResumeUnfinished.js +58 -0
  36. package/es/components/FileUploader/hooks/useRetryUpload.js +33 -0
  37. package/es/components/FileUploader/hooks/useUploadChunk.js +46 -0
  38. package/es/components/FileUploader/icons/CloseFilled.js +7 -0
  39. package/es/components/FileUploader/icons/UnkownFileIcon.js +7 -0
  40. package/es/components/FileUploader/icons/UploadIcon.js +7 -0
  41. package/es/components/FileUploader/index.css.js +532 -0
  42. package/es/components/FileUploader/index.js +23 -0
  43. package/es/components/FileUploader/types.js +13 -0
  44. package/es/components/FileUploader/utils/calcDisplaySize.js +20 -0
  45. package/es/components/FileUploader/utils/checkExpiryTime.js +15 -0
  46. package/es/components/FileUploader/utils/createFileToUpload.js +60 -0
  47. package/es/components/FileUploader/utils/fileDB/addFilesToIndexdb.js +14 -0
  48. package/es/components/FileUploader/utils/fileDB/deleteFileInStore.js +18 -0
  49. package/es/components/FileUploader/utils/fileDB/deleteObjectStore.js +25 -0
  50. package/es/components/FileUploader/utils/fileDB/index.js +77 -0
  51. package/es/components/FileUploader/utils/fileDB/openDBAndRetrieveData.js +90 -0
  52. package/es/components/FileUploader/utils/fileDB/retrieveExistingData.js +49 -0
  53. package/es/components/FileUploader/utils/modalConfig.css.js +20 -0
  54. package/es/components/FileUploader/utils/modalConfig.js +32 -0
  55. package/es/components/FileUploader/utils/retrieveAllFiles.js +70 -0
  56. package/es/components/FileUploader/utils/splitFileIntoChunk.js +15 -0
  57. package/es/components/SDK-modal/document-link.js +8 -0
  58. package/es/components/SDK-modal/index.js +25 -0
  59. package/es/components/SDK-modal/index.module.scss.js +49 -0
  60. package/es/components/SDK-modal/inner-modal.js +59 -0
  61. package/es/components/SDK-modal/locale/translations.js +17 -0
  62. package/es/components/apply-perm-modal/index.js +53 -0
  63. package/es/components/apply-perm-modal/index.module.scss.js +96 -0
  64. package/es/components/auth-tag/index.js +23 -0
  65. package/es/components/bench-card/index.js +20 -0
  66. package/es/components/bench-card/index.module.scss.js +48 -0
  67. package/es/components/confirm-again/index.js +15 -0
  68. package/es/components/confirm-again/index.scss.js +37 -0
  69. package/es/components/copy/index.js +41 -0
  70. package/es/components/copy/index.module.scss.js +15 -0
  71. package/es/components/corpus-card/index.js +88 -0
  72. package/es/components/corpus-card/index.module.scss.js +171 -0
  73. package/es/components/feature-card/classNames.js +72 -0
  74. package/es/components/feature-card/components.js +48 -0
  75. package/es/components/feature-card/context.js +13 -0
  76. package/es/components/feature-card/index.css.js +655 -0
  77. package/es/components/feature-card/index.js +48 -0
  78. package/es/components/file-preview/data-table/index.js +94 -0
  79. package/es/components/file-preview/data-table/index.module.scss.js +54 -0
  80. package/es/components/file-preview/excel-preview/index.js +132 -0
  81. package/es/components/file-preview/excel-preview/index.module.scss.js +11 -0
  82. package/es/components/file-preview/excel-preview/utils.js +46 -0
  83. package/es/components/file-preview/img-preview/index.js +18 -0
  84. package/es/components/file-preview/img-preview/index.module.scss.js +17 -0
  85. package/es/components/file-preview/index.js +124 -0
  86. package/es/components/file-preview/index.module.scss.js +32 -0
  87. package/es/components/file-preview/json-preview/index.js +166 -0
  88. package/es/components/file-preview/markdown-preview/index.js +53 -0
  89. package/es/components/file-preview/markdown-preview/index.module.scss.js +1055 -0
  90. package/es/components/file-preview/parquet-preview/index.js +54 -0
  91. package/es/components/file-preview/pdf-preview/index.js +215 -0
  92. package/es/components/file-preview/pdf-preview/index.module.scss.js +16 -0
  93. package/es/components/file-preview/table-preview/index.js +43 -0
  94. package/es/components/file-preview/table-preview/index.module.scss.js +11 -0
  95. package/es/components/file-preview/txt-preview/index.js +24 -0
  96. package/es/components/file-preview/util.js +94 -0
  97. package/es/components/file-uploader/components/circle-progress.css.js +39 -0
  98. package/es/components/file-uploader/components/circle-progress.js +12 -0
  99. package/es/components/file-uploader/components/hooks/use-drop-zone.js +74 -0
  100. package/es/components/file-uploader/components/hooks/use-file-validation.js +52 -0
  101. package/es/components/file-uploader/components/icons.js +19 -0
  102. package/es/components/file-uploader/components/theme.css.js +64 -0
  103. package/es/components/file-uploader/components/uploader-drop-zone.css.js +66 -0
  104. package/es/components/file-uploader/components/uploader-drop-zone.js +74 -0
  105. package/es/components/file-uploader/components/uploader-file-item.css.js +186 -0
  106. package/es/components/file-uploader/components/uploader-file-item.js +63 -0
  107. package/es/components/file-uploader/components/uploader-file-list.css.js +43 -0
  108. package/es/components/file-uploader/components/uploader-file-list.js +27 -0
  109. package/es/components/file-uploader/components/uploader.css.js +20 -0
  110. package/es/components/file-uploader/components/uploader.js +51 -0
  111. package/es/components/file-uploader/components/uploading-status.css.js +52 -0
  112. package/es/components/file-uploader/components/uploading-status.js +54 -0
  113. package/es/components/file-uploader/components/utils/directory-reader.js +65 -0
  114. package/es/components/file-uploader/constants.js +31 -0
  115. package/es/components/file-uploader/context/action-registry.js +69 -0
  116. package/es/components/file-uploader/context/file-state-store.js +83 -0
  117. package/es/components/file-uploader/context/handler-registry.js +119 -0
  118. package/es/components/file-uploader/context/upload-context.js +36 -0
  119. package/es/components/file-uploader/context/upload-provider.js +77 -0
  120. package/es/components/file-uploader/context/upload-reducer.js +21 -0
  121. package/es/components/file-uploader/context/use-upload-engine.js +440 -0
  122. package/es/components/file-uploader/engine/queue-callbacks.js +257 -0
  123. package/es/components/file-uploader/engine/queue-manager.js +195 -0
  124. package/es/components/file-uploader/engine/queue-uploader.js +25 -0
  125. package/es/components/file-uploader/hooks/use-upload.js +327 -0
  126. package/es/components/file-uploader/utils/chunk-handlers.js +66 -0
  127. package/es/components/file-uploader/utils/ensure-handlers.js +53 -0
  128. package/es/components/file-uploader/utils/error-handler.js +84 -0
  129. package/es/components/file-uploader/utils/upload-controllers.js +43 -0
  130. package/es/components/file-uploader/utils/upload-handler.js +68 -0
  131. package/es/components/file-uploader/utils/validate-handlers.js +16 -0
  132. package/es/components/floating-label-input/index.js +46 -0
  133. package/es/components/floating-label-input/index.module.scss.js +30 -0
  134. package/es/components/floating-layer/index.js +15 -0
  135. package/es/components/floating-layer/index.scss.js +31 -0
  136. package/es/components/header/index.js +10 -0
  137. package/es/components/header/index.module.scss.js +16 -0
  138. package/es/components/input-tag/index.js +65 -0
  139. package/es/components/menu/index.js +96 -0
  140. package/es/components/menu/index.module.scss.js +188 -0
  141. package/es/components/model-card/index.js +20 -0
  142. package/es/components/model-card/index.module.scss.js +116 -0
  143. package/es/components/notion-editor/code-block/index.js +18 -0
  144. package/es/components/notion-editor/code-block/languageDetector.js +134 -0
  145. package/es/components/notion-editor/code-block/languages.js +42 -0
  146. package/es/components/notion-editor/index.js +258 -0
  147. package/es/components/notion-editor/index.scss.js +421 -0
  148. package/es/components/notion-editor/parseMarkdown.js +184 -0
  149. package/es/components/operator-chain/components/AddButton.js +20 -0
  150. package/es/components/operator-chain/components/IOCard.js +8 -0
  151. package/es/components/operator-chain/components/SingleCard.js +12 -0
  152. package/es/components/operator-chain/components/VirtualDropdown.js +56 -0
  153. package/es/components/operator-chain/index.js +83 -0
  154. package/es/components/operator-chain/index.module.scss.js +232 -0
  155. package/es/components/permission-editor/index.js +9 -0
  156. package/es/components/permission-editor/permissionEditModal/index.js +37 -0
  157. package/es/components/permission-editor/permissionEditor/index.js +253 -0
  158. package/es/components/permission-editor/permissionEditor/index.module.scss.js +22 -0
  159. package/es/components/permission-editor/permissionViewPopover/index.js +9 -0
  160. package/es/components/popover-select/index.js +42 -0
  161. package/es/components/popover-select/index.module.scss.js +22 -0
  162. package/es/components/radio-card/index.js +24 -0
  163. package/es/components/radio-card/index.scss.js +58 -0
  164. package/es/components/section-heading/classNames.js +22 -0
  165. package/es/components/section-heading/components.js +27 -0
  166. package/es/components/section-heading/context.js +13 -0
  167. package/es/components/section-heading/index.css.js +648 -0
  168. package/es/components/section-heading/index.js +37 -0
  169. package/es/components/status-tag/index.js +31 -0
  170. package/es/components/tag-group-filter/dataSizeFilter.js +100 -0
  171. package/es/components/tag-group-filter/index.js +53 -0
  172. package/es/components/tag-group-filter/index.module.scss.js +134 -0
  173. package/es/components/tag-group-filter/tagFilter.js +19 -0
  174. package/es/components/tag-view/index.js +138 -0
  175. package/es/components/tag-view/index.module.scss.js +56 -0
  176. package/es/components/tag-view/useSize.js +41 -0
  177. package/es/components/tip-tap/bubble-menu.js +47 -0
  178. package/es/components/tip-tap/editor.js +34 -0
  179. package/es/components/tip-tap/extensions/index.js +133 -0
  180. package/es/components/tip-tap/extensions/markdown-paste.js +148 -0
  181. package/es/components/tip-tap/icons/index.js +29 -0
  182. package/es/components/tip-tap/reader.js +15 -0
  183. package/es/components/tip-tap/styles/editor.css.js +863 -0
  184. package/es/components/tip-tap/toolbar/components/color-picker.js +76 -0
  185. package/es/components/tip-tap/toolbar/components/heading-dropdown.js +44 -0
  186. package/es/components/tip-tap/toolbar/components/image-button.js +26 -0
  187. package/es/components/tip-tap/toolbar/components/link-button.js +107 -0
  188. package/es/components/tip-tap/toolbar/components/table-button.js +37 -0
  189. package/es/components/tip-tap/toolbar/components/toolbar-button.js +7 -0
  190. package/es/components/tip-tap/toolbar/index.js +39 -0
  191. package/es/components/uploadDrawer/UploadStoreProvider.js +61 -0
  192. package/es/components/uploadDrawer/fileUploadDrawer.js +66 -0
  193. package/es/components/uploadDrawer/fileUploadDrawerFileDragger.js +71 -0
  194. package/es/components/uploadDrawer/fileUploadDrawerList.js +54 -0
  195. package/es/components/uploadDrawer/fileUploadDrawerListProgressButton.js +54 -0
  196. package/es/components/uploadDrawer/hooks/useCancelUpload.js +37 -0
  197. package/es/components/uploadDrawer/hooks/useFilterFiles.js +107 -0
  198. package/es/components/uploadDrawer/hooks/useFinishUpload.js +33 -0
  199. package/es/components/uploadDrawer/hooks/useFormatFiles.js +54 -0
  200. package/es/components/uploadDrawer/hooks/useProgressButtonRef.js +22 -0
  201. package/es/components/uploadDrawer/hooks/useRemoveFilesInUploadQueue.js +21 -0
  202. package/es/components/uploadDrawer/hooks/useResumeUnfinishedUploads.js +52 -0
  203. package/es/components/uploadDrawer/hooks/useRetryUpload.js +35 -0
  204. package/es/components/uploadDrawer/hooks/useSaveUnfinishedUploads.js +42 -0
  205. package/es/components/uploadDrawer/hooks/useSetupUpload.js +80 -0
  206. package/es/components/uploadDrawer/hooks/useUploadFileToOSS.js +23 -0
  207. package/es/components/uploadDrawer/index.css.js +511 -0
  208. package/es/components/uploadDrawer/index.js +43 -0
  209. package/es/components/uploadDrawer/utils/calcDisplaySize.js +19 -0
  210. package/es/components/uploadDrawer/utils/constant.js +16 -0
  211. package/es/components/uploadDrawer/utils/createFileToUpload.js +51 -0
  212. package/es/components/uploadDrawer/utils/fileDB/deleteFileInStore.js +28 -0
  213. package/es/components/uploadDrawer/utils/fileDB/deleteObjectStore.js +28 -0
  214. package/es/components/uploadDrawer/utils/fileDB/handleAddFilesToDB.js +37 -0
  215. package/es/components/uploadDrawer/utils/fileDB/index.js +9 -0
  216. package/es/components/uploadDrawer/utils/fileDB/openDB.js +111 -0
  217. package/es/components/uploadDrawer/utils/retrieveAllFiles.js +110 -0
  218. package/es/components/uploadDrawer/utils/shouldCreateNewFile.js +13 -0
  219. package/es/components/uploadDrawer/utils/splitFileIntoChunk.js +15 -0
  220. package/es/index.js +42 -1
  221. package/es/lib/utils.js +8 -0
  222. package/lib/index.js +1 -1
  223. package/package.json +164 -154
  224. package/rollup.es.config.mjs +177 -0
  225. package/tsconfig.rollup.json +7 -0
@@ -0,0 +1,37 @@
1
+ import { UPLOADS_DATABASE } from './index.js';
2
+
3
+ // 将文件添加到IndexedDB数据库的函数
4
+ function handleAddFilesToDB(storeName, files) {
5
+ try {
6
+ const transaction = createTransaction(storeName);
7
+ const objectStore = transaction.objectStore(storeName);
8
+ addFilesToObjectStore(objectStore, files);
9
+ }
10
+ catch (error) {
11
+ console.warn(`批量添加文件时出错: ${error.message}`);
12
+ }
13
+ }
14
+ // 创建数据库事务
15
+ function createTransaction(storeName) {
16
+ const transaction = UPLOADS_DATABASE.transaction(storeName, 'readwrite');
17
+ transaction.onerror = () => console.warn(`添加文件事务错误: ${transaction.error}`);
18
+ transaction.onabort = () => console.warn('添加文件事务已中止');
19
+ transaction.oncomplete = () => console.warn('添加文件事务已完成');
20
+ return transaction;
21
+ }
22
+ // 将文件添加到对象存储空间
23
+ function addFilesToObjectStore(objectStore, files) {
24
+ files.map((file) => addSingleFile(objectStore, file));
25
+ }
26
+ // 添加单个文件到对象存储空间
27
+ function addSingleFile(objectStore, file) {
28
+ try {
29
+ objectStore.put(file, file.fileName);
30
+ console.warn(`文件 "${file.fileName}" 添加成功`);
31
+ }
32
+ catch (error) {
33
+ console.warn(`添加文件 "${file.fileName}" 时出错: ${error.message}`);
34
+ }
35
+ }
36
+
37
+ export { handleAddFilesToDB };
@@ -0,0 +1,9 @@
1
+ import 'tslib';
2
+
3
+ const DATABASE_NAME = 'uploadStore';
4
+ let UPLOADS_DATABASE;
5
+ function updateUploadsDatabase(db) {
6
+ UPLOADS_DATABASE = db;
7
+ }
8
+
9
+ export { DATABASE_NAME, UPLOADS_DATABASE, updateUploadsDatabase };
@@ -0,0 +1,111 @@
1
+ import { DATABASE_NAME, updateUploadsDatabase, UPLOADS_DATABASE } from './index.js';
2
+
3
+ // 打开数据库并返回指定存储对象中的文件列表
4
+ function openDB(storeName) {
5
+ return new Promise((resolve, reject) => {
6
+ if (UPLOADS_DATABASE) {
7
+ handleExistingDatabase(storeName, resolve, reject);
8
+ }
9
+ else {
10
+ handleNewDatabase(storeName, resolve, reject);
11
+ }
12
+ });
13
+ }
14
+ // 处理已存在的数据库
15
+ function handleExistingDatabase(storeName, resolve, reject) {
16
+ if (UPLOADS_DATABASE.objectStoreNames.contains(storeName)) {
17
+ retrieveData(storeName, resolve, reject);
18
+ }
19
+ else {
20
+ createNewObjectStore(storeName, resolve, reject);
21
+ }
22
+ }
23
+ // 处理新数据库的创建
24
+ function handleNewDatabase(storeName, resolve, reject) {
25
+ try {
26
+ const openRequest = window.indexedDB.open(DATABASE_NAME);
27
+ // 设置数据库事件处理器
28
+ openRequest.onupgradeneeded = () => onUpgradeNeeded(openRequest.result, storeName, resolve, reject);
29
+ openRequest.onsuccess = () => onOpenSuccess(openRequest.result, storeName, resolve, reject);
30
+ openRequest.onerror = () => reject(Error(`打开数据库失败: ${openRequest.error}`));
31
+ openRequest.onblocked = () => reject(Error(`数据库被阻塞: ${openRequest.error}`));
32
+ }
33
+ catch (ex) {
34
+ console.warn(`打开数据库时发生异常: ${ex.message}`, ex);
35
+ reject(ex);
36
+ }
37
+ }
38
+ // 处理数据库升级事件
39
+ function onUpgradeNeeded(db, storeName, resolve, reject) {
40
+ updateUploadsDatabase(db);
41
+ try {
42
+ db.createObjectStore(storeName, {});
43
+ db.onversionchange = (event) => {
44
+ if (event.newVersion === null) {
45
+ db.close();
46
+ }
47
+ };
48
+ resolve([]);
49
+ }
50
+ catch (ex) {
51
+ reject(Error(`升级数据库异常: ${ex.message}`));
52
+ }
53
+ }
54
+ // 处理数据库成功打开事件
55
+ function onOpenSuccess(db, storeName, resolve, reject) {
56
+ updateUploadsDatabase(db);
57
+ if (db.objectStoreNames.contains(storeName)) {
58
+ retrieveData(storeName, resolve, reject);
59
+ }
60
+ else {
61
+ createNewObjectStore(storeName, resolve, reject);
62
+ }
63
+ }
64
+ // 创建新的对象存储
65
+ function createNewObjectStore(storeName, resolve, reject) {
66
+ const newVersion = UPLOADS_DATABASE.version + 1;
67
+ UPLOADS_DATABASE.close();
68
+ const newOpenRequest = window.indexedDB.open(DATABASE_NAME, newVersion);
69
+ newOpenRequest.onupgradeneeded = () => onUpgradeNeeded(newOpenRequest.result, storeName, resolve, reject);
70
+ }
71
+ // 检索数据
72
+ function retrieveData(storeName, resolve, reject) {
73
+ handleFileRetrieve(storeName).then(resolve).catch(reject);
74
+ }
75
+ // 处理文件检索
76
+ function handleFileRetrieve(storeName) {
77
+ return new Promise(function (resolve, reject) {
78
+ let transaction;
79
+ try {
80
+ // 创建只读事务
81
+ transaction = UPLOADS_DATABASE.transaction(storeName, 'readonly');
82
+ try {
83
+ const objectStore = transaction.objectStore(storeName);
84
+ const files = [];
85
+ const cursor = objectStore.openCursor();
86
+ // 遍历游标,收集所有文件
87
+ cursor.onsuccess = () => {
88
+ const iCursor = cursor.result;
89
+ if (iCursor) {
90
+ files.push(iCursor.value);
91
+ iCursor.continue();
92
+ }
93
+ else {
94
+ resolve(files);
95
+ }
96
+ };
97
+ cursor.onerror = () => {
98
+ console.warn(`在handleFileRetrieve()中游标操作失败 - 错误代码: ${cursor.error}`, cursor.error);
99
+ };
100
+ }
101
+ catch (ex) {
102
+ reject(Error(`在handleFileRetrieve()中执行事务或打开游标时发生异常 - ${ex.message}`));
103
+ }
104
+ }
105
+ catch (ex) {
106
+ reject(Error(`在handleFileRetrieve()中创建数据库事务时发生异常 - ${ex.message}`));
107
+ }
108
+ });
109
+ }
110
+
111
+ export { openDB };
@@ -0,0 +1,110 @@
1
+ import { __awaiter } from 'tslib';
2
+
3
+ /**
4
+ * 递归检索所有文件
5
+ * @param item - 文件系统条目
6
+ * @param directory - 是否允许处理目录
7
+ * @param acceptList - 可接受的文件扩展名集合
8
+ * @param fileNameWithLocation - 文件的完整路径
9
+ * @returns 符合条件的文件数组
10
+ */
11
+ function retrieveAllFiles(item_1, directory_1, acceptList_1) {
12
+ return __awaiter(this, arguments, void 0, function* (item, directory, acceptList, fileNameWithLocation = '') {
13
+ if (isDirectoryEntry(item)) {
14
+ if (!directory)
15
+ return []; // 如果不允许处理目录,则返回空数组
16
+ return handleDirectory(item, acceptList);
17
+ }
18
+ if (isFileEntry(item)) {
19
+ if (item.name.includes('.DS_Store'))
20
+ return []; // 忽略 .DS_Store 文件
21
+ return handleFile(item, acceptList, fileNameWithLocation);
22
+ }
23
+ return []; // 如果既不是文件也不是目录,返回空数组
24
+ });
25
+ }
26
+ /**
27
+ * 处理目录
28
+ * @param directory - 目录条目
29
+ * @param acceptList - 可接受的文件扩展名集合
30
+ * @param fileNameWithLocation - 目录的完整路径
31
+ * @returns 目录中所有符合条件的文件数组
32
+ */
33
+ function handleDirectory(directory, acceptList) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ const entries = yield readDirectoryEntries(directory);
36
+ const filePromises = entries.map((entry) => retrieveAllFiles(entry, true, acceptList, entry.fullPath));
37
+ const results = yield Promise.allSettled(filePromises);
38
+ return results
39
+ .filter((result) => result.status === 'fulfilled')
40
+ .flatMap((result) => result.value);
41
+ });
42
+ }
43
+ /**
44
+ * 读取目录中的所有条目
45
+ * @param directory - 目录条目
46
+ * @returns 目录中的所有文件系统条目
47
+ */
48
+ function readDirectoryEntries(directory) {
49
+ return new Promise((resolve, reject) => {
50
+ const reader = directory.createReader();
51
+ reader.readEntries(resolve, reject);
52
+ });
53
+ }
54
+ /**
55
+ * 处理单个文件
56
+ * @param fileEntry - 文件条目
57
+ * @param acceptList - 可接受的文件扩展名集合
58
+ * @param fileNameWithLocation - 文件的完整路径
59
+ * @returns 包含处理后文件的数组,如果文件不符合条件则为空数组
60
+ */
61
+ function handleFile(fileEntry, acceptList, fileNameWithLocation) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const file = yield getFile(fileEntry);
64
+ if (!isAcceptedFile(file, acceptList)) {
65
+ return [];
66
+ }
67
+ return [formatFile(file, fileNameWithLocation)];
68
+ });
69
+ }
70
+ /**
71
+ * 获取文件对象
72
+ * @param fileEntry - 文件条目
73
+ * @returns File 对象
74
+ */
75
+ function getFile(fileEntry) {
76
+ return new Promise((resolve, reject) => {
77
+ fileEntry.file(resolve, reject);
78
+ });
79
+ }
80
+ /**
81
+ * 检查文件是否符合接受条件
82
+ * @param file - 文件对象
83
+ * @param acceptList - 可接受的文件扩展名集合
84
+ * @returns 文件是否被接受
85
+ */
86
+ function isAcceptedFile(file, acceptList) {
87
+ if (acceptList.size === 0)
88
+ return true; // 如果 acceptList 为空,接受所有文件
89
+ const extendName = file.name.split('.').pop() || '';
90
+ return acceptList.has(`.${extendName}`);
91
+ }
92
+ /**
93
+ * 格式化文件,主要用于设置正确的文件名
94
+ * @param file - 原始文件对象
95
+ * @param fileNameWithLocation - 文件的完整路径
96
+ * @returns 格式化后的 File 对象
97
+ */
98
+ function formatFile(file, fileNameWithLocation) {
99
+ const blob = file.slice(0, file.size, file.type);
100
+ return new File([blob], fileNameWithLocation.slice(1) || file.name, { type: file.type });
101
+ }
102
+ // 新增的辅助函数
103
+ function isDirectoryEntry(entry) {
104
+ return entry.isDirectory;
105
+ }
106
+ function isFileEntry(entry) {
107
+ return entry.isFile;
108
+ }
109
+
110
+ export { retrieveAllFiles };
@@ -0,0 +1,13 @@
1
+ import { NEW, USE_OLD_INFO } from './constant.js';
2
+ import 'tslib';
3
+
4
+ function checkExpiryTime(file) {
5
+ if (!file.expiryTime) {
6
+ return NEW;
7
+ }
8
+ const currentDate = new Date();
9
+ const expiryDate = new Date(file.expiryTime);
10
+ return expiryDate < currentDate ? NEW : USE_OLD_INFO;
11
+ }
12
+
13
+ export { checkExpiryTime };
@@ -0,0 +1,15 @@
1
+ function splitFileIntoChunk(file) {
2
+ const { uploadUrls, chunkSize, raw } = file;
3
+ const fileSize = raw.size;
4
+ return uploadUrls.map(({ partNum, uploadUrl }) => {
5
+ const start = partNum * chunkSize;
6
+ const end = Math.min((partNum + 1) * chunkSize, fileSize);
7
+ const chunk = raw.slice(start, end);
8
+ return {
9
+ url: { partNum, uploadUrl },
10
+ chunk,
11
+ };
12
+ });
13
+ }
14
+
15
+ export { splitFileIntoChunk };