@visulima/storage-client 1.0.0-alpha.1 → 1.0.0-alpha.10

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 (80) hide show
  1. package/CHANGELOG.md +115 -2
  2. package/LICENSE.md +1 -1
  3. package/README.md +271 -14
  4. package/dist/index.js +1 -1
  5. package/dist/packem_shared/{createAbortAll-B5vFFliA.js → createAbortAll-B14Hjnuz.js} +1 -1
  6. package/dist/packem_shared/{createAbortAll-D-x-LWNg.js → createAbortAll-C1AbADFo.js} +1 -1
  7. package/dist/packem_shared/{createAbortBatch-CYtSbWfz.js → createAbortBatch-C3VHoUM9.js} +1 -1
  8. package/dist/packem_shared/{createAbortBatch-zA0PTnOB.js → createAbortBatch-Ds5neVlk.js} +1 -1
  9. package/dist/packem_shared/{createAbortItem-0f0bigbq.js → createAbortItem-4N7-rj0-.js} +1 -1
  10. package/dist/packem_shared/{createAbortItem-CIRlRD4X.js → createAbortItem-hzJ6mH01.js} +1 -1
  11. package/dist/packem_shared/{createAllAbortListener-CYLEWan0.js → createAllAbortListener-BAJk-ac4.js} +1 -1
  12. package/dist/packem_shared/{createAllAbortListener-CDrnG87k.js → createAllAbortListener-CCya8xup.js} +1 -1
  13. package/dist/packem_shared/{createBatchCancelledListener-l9c0mi15.js → createBatchCancelledListener-BLlXoEEb.js} +1 -1
  14. package/dist/packem_shared/{createBatchCancelledListener-Deq8lrIn.js → createBatchCancelledListener-xsVO6bCX.js} +1 -1
  15. package/dist/packem_shared/{createBatchErrorListener-CJQFdXW2.js → createBatchErrorListener-DMcQFqw4.js} +1 -1
  16. package/dist/packem_shared/{createBatchErrorListener-CGJPEngL.js → createBatchErrorListener-YlwqMv-B.js} +1 -1
  17. package/dist/packem_shared/{createBatchFinalizeListener-B2rEps7g.js → createBatchFinalizeListener-C_cCDIX5.js} +1 -1
  18. package/dist/packem_shared/{createBatchFinalizeListener-Og0rELSL.js → createBatchFinalizeListener-rqd8SuEV.js} +1 -1
  19. package/dist/packem_shared/{createBatchFinishListener-D9AOd6Cl.js → createBatchFinishListener-CB_P7QYP.js} +1 -1
  20. package/dist/packem_shared/{createBatchFinishListener-BeE6-b6E.js → createBatchFinishListener-DreYtkYD.js} +1 -1
  21. package/dist/packem_shared/{createBatchProgressListener-1KpCpw7e.js → createBatchProgressListener-BqqBPu5S.js} +1 -1
  22. package/dist/packem_shared/{createBatchProgressListener-BWW_tnse.js → createBatchProgressListener-DBb1I1rM.js} +1 -1
  23. package/dist/packem_shared/{createBatchRetry-6E_Ivzh4.js → createBatchRetry-BuoWW9tt.js} +1 -1
  24. package/dist/packem_shared/{createBatchRetry-D_F4v9oA.js → createBatchRetry-q7QaF04c.js} +1 -1
  25. package/dist/packem_shared/{createBatchStartListener-DBHjoANG.js → createBatchStartListener--Qrjmg4C.js} +1 -1
  26. package/dist/packem_shared/{createBatchStartListener-CkcMX3tq.js → createBatchStartListener-DQsozIGm.js} +1 -1
  27. package/dist/packem_shared/{createBatchUpload-DWcVWF9h.js → createBatchUpload-BU4Tn_Ce.js} +1 -1
  28. package/dist/packem_shared/{createBatchUpload-8yahZiID.js → createBatchUpload-CoqKXzRN.js} +1 -1
  29. package/dist/packem_shared/{createMultipartAdapter-CoJpvX9z.js → createMultipartAdapter-86KxCYjo.js} +1 -1
  30. package/dist/packem_shared/{createMultipartUpload-CTats5BN.js → createMultipartUpload-CQ90s4CH.js} +1 -1
  31. package/dist/packem_shared/{createMultipartUpload-DF3XyOX3.js → createMultipartUpload-DtoYf2Xi.js} +1 -1
  32. package/dist/packem_shared/{createRetry-DPaN9i_a.js → createRetry-Bw0_8yjS.js} +1 -1
  33. package/dist/packem_shared/{createRetry-D_fXIQUj.js → createRetry-f63cgMRK.js} +1 -1
  34. package/dist/packem_shared/{createRetryListener-bMqMm13Y.js → createRetryListener-Bn40kQjn.js} +1 -1
  35. package/dist/packem_shared/{createRetryListener-DonB2P-g.js → createRetryListener-D5QrhgBR.js} +1 -1
  36. package/dist/packem_shared/{createUpload-LRQ4N_cF.js → createUpload-C7ZBtA-s.js} +1 -1
  37. package/dist/packem_shared/{createUpload-CuZqq0nu.js → createUpload-CA85QrJg.js} +1 -1
  38. package/dist/packem_shared/createUploader-CtXDRurP.js +1 -0
  39. package/dist/packem_shared/{useAbortAll-DrHBz3kQ.js → useAbortAll-5U7kyKLc.js} +1 -1
  40. package/dist/packem_shared/{useAbortAll-DeTTc8gX.js → useAbortAll-DtTKXb9L.js} +1 -1
  41. package/dist/packem_shared/{useAbortBatch-gVI48Gqa.js → useAbortBatch-BYYei6Yt.js} +1 -1
  42. package/dist/packem_shared/{useAbortBatch-BoXLZH9d.js → useAbortBatch-BzvJv8LJ.js} +1 -1
  43. package/dist/packem_shared/{useAbortItem-Blw0eI13.js → useAbortItem-BABseAaI.js} +1 -1
  44. package/dist/packem_shared/{useAbortItem-DOVDiZFG.js → useAbortItem-Bz7EvWLc.js} +1 -1
  45. package/dist/packem_shared/{useAllAbortListener-DiliYPra.js → useAllAbortListener-BASh3QMd.js} +1 -1
  46. package/dist/packem_shared/{useAllAbortListener-CadZ6Ohd.js → useAllAbortListener-hbQVw_3j.js} +1 -1
  47. package/dist/packem_shared/{useBatchCancelledListener-CD0CULd_.js → useBatchCancelledListener-BZcGUr78.js} +1 -1
  48. package/dist/packem_shared/{useBatchCancelledListener-CADhAnT8.js → useBatchCancelledListener-ODrL7eBH.js} +1 -1
  49. package/dist/packem_shared/{useBatchErrorListener-D-M1xGbQ.js → useBatchErrorListener-BHlCUBkN.js} +1 -1
  50. package/dist/packem_shared/{useBatchErrorListener-C3KwlH_D.js → useBatchErrorListener-MTNwkBNV.js} +1 -1
  51. package/dist/packem_shared/{useBatchFinalizeListener-CuVe9PGl.js → useBatchFinalizeListener-QBUABl8K.js} +1 -1
  52. package/dist/packem_shared/{useBatchFinalizeListener-BjnW3Lst.js → useBatchFinalizeListener-lw4_y5G2.js} +1 -1
  53. package/dist/packem_shared/{useBatchFinishListener-4RjAPVhl.js → useBatchFinishListener-C576_YqB.js} +1 -1
  54. package/dist/packem_shared/{useBatchFinishListener-DedP4Rm_.js → useBatchFinishListener-DxfFc4w5.js} +1 -1
  55. package/dist/packem_shared/{useBatchProgressListener-CoYeF3Zj.js → useBatchProgressListener-CRkFN0wW.js} +1 -1
  56. package/dist/packem_shared/{useBatchProgressListener-CBAjGzmu.js → useBatchProgressListener-DyEL1Xzv.js} +1 -1
  57. package/dist/packem_shared/{useBatchRetry-C53msBuL.js → useBatchRetry-BMm50e4q.js} +1 -1
  58. package/dist/packem_shared/{useBatchRetry-CAqFm7V8.js → useBatchRetry-a_8KSYT6.js} +1 -1
  59. package/dist/packem_shared/{useBatchStartListener-DwAzFph7.js → useBatchStartListener-BnvZm0er.js} +1 -1
  60. package/dist/packem_shared/{useBatchStartListener-BAOxxo1Y.js → useBatchStartListener-BulCn2nM.js} +1 -1
  61. package/dist/packem_shared/{useBatchUpload-DLQNW410.js → useBatchUpload-1sL60XWR.js} +1 -1
  62. package/dist/packem_shared/{useBatchUpload-xPQlYOIK.js → useBatchUpload-D_Fpf7H4.js} +1 -1
  63. package/dist/packem_shared/useChunkedRestUpload-ByEGSmgy.js +1 -0
  64. package/dist/packem_shared/{useMultipartUpload-CIp4NLzf.js → useMultipartUpload-Co7UmkLV.js} +1 -1
  65. package/dist/packem_shared/{useMultipartUpload-B9Vi7f5z.js → useMultipartUpload-Ddf1tP6F.js} +1 -1
  66. package/dist/packem_shared/{useRetry-Dsq4jvkt.js → useRetry-4jBZmJD1.js} +1 -1
  67. package/dist/packem_shared/{useRetry-mkTUERYR.js → useRetry-BanF9FJg.js} +1 -1
  68. package/dist/packem_shared/{useRetryListener-B45dL00Q.js → useRetryListener-B8elG7nf.js} +1 -1
  69. package/dist/packem_shared/{useRetryListener-BEONt1sx.js → useRetryListener-SADsV-IG.js} +1 -1
  70. package/dist/packem_shared/useTusUpload-DQa9PgkZ.js +1 -0
  71. package/dist/packem_shared/{useUpload-B_RxNnHC.js → useUpload-B43gnJIh.js} +1 -1
  72. package/dist/packem_shared/{useUpload-CjLWLpyn.js → useUpload-CZQApQDd.js} +1 -1
  73. package/dist/react/index.js +1 -1
  74. package/dist/solid/index.js +1 -1
  75. package/dist/svelte/index.js +1 -1
  76. package/dist/vue/index.js +1 -1
  77. package/package.json +4 -4
  78. package/dist/packem_shared/createUploader-B_IjjBxw.js +0 -1
  79. package/dist/packem_shared/useChunkedRestUpload-cKHvYQN3.js +0 -1
  80. package/dist/packem_shared/useTusUpload-CDRjQl0e.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,10 +1,123 @@
1
- ## @visulima/storage-client 1.0.0-alpha.1 (2025-12-01)
1
+ ## @visulima/storage-client [1.0.0-alpha.10](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.9...@visulima/storage-client@1.0.0-alpha.10) (2026-04-08)
2
+
3
+ ### Bug Fixes
4
+
5
+ * remove deprecated baseUrl and downlevelIteration from tsconfigs ([a708366](https://github.com/visulima/visulima/commit/a708366b5c3bc73cfde480a712ed397bd921fb93))
6
+
7
+ ### Miscellaneous Chores
8
+
9
+ * **storage-client:** add tsconfig.eslint.json for type-aware linting ([1186874](https://github.com/visulima/visulima/commit/1186874ad63ee5425715cc4d3b6478f0ea0a40a9))
10
+ * **storage-client:** apply prettier formatting ([276d731](https://github.com/visulima/visulima/commit/276d731dc9a4acc60522c65dc8cf4ec6095beaa5))
11
+ * **storage-client:** migrate .prettierrc.cjs to prettier.config.js ([e4e463b](https://github.com/visulima/visulima/commit/e4e463b3a2246062891db1a4bcbc967781e0e14f))
12
+ * **storage:** remove empty dependency objects from package.json ([ddfeb08](https://github.com/visulima/visulima/commit/ddfeb08fd392ad2553a1ce833dd331540ecc8b09))
13
+
14
+ ## @visulima/storage-client [1.0.0-alpha.9](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.8...@visulima/storage-client@1.0.0-alpha.9) (2026-03-26)
2
15
 
3
16
  ### Features
4
17
 
5
- * new storage and storage-client package ([#574](https://github.com/visulima/visulima/issues/574)) ([33db3c1](https://github.com/visulima/visulima/commit/33db3c1ebb5718f4e2c1228b5a53d3b901bb1383))
18
+ * **web:** auto-generate packages page from workspace metadata ([623e520](https://github.com/visulima/visulima/commit/623e5207693a7fe720f5f2f179593a3654c880e3))
19
+
20
+ ## @visulima/storage-client [1.0.0-alpha.8](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.7...@visulima/storage-client@1.0.0-alpha.8) (2026-03-26)
21
+
22
+ ### Bug Fixes
23
+
24
+ * **docs:** correct code examples found during verification ([8e4f8c4](https://github.com/visulima/visulima/commit/8e4f8c4b0b1664c232fe5ae721b771c72d29a152))
25
+ * **storage-client:** guard setInterval against unmounted component and migrate deps to pnpm catalogs ([a6618bc](https://github.com/visulima/visulima/commit/a6618bc7b3f866592a73ba79bf310ffe272f253a))
26
+ * **storage-client:** resolve TanStack Query v5.94+ source-only packages in tests ([1c1b39f](https://github.com/visulima/visulima/commit/1c1b39fd4b259768ffd5b18eb676a146ce5bfb40))
27
+ * updated deps and migrated web app build deps to pnpm catalog ([dd4f515](https://github.com/visulima/visulima/commit/dd4f5153a07d0e46de0b3fc091878d66bb70f2d3))
28
+ * **web:** improve build setup with incremental stats caching and prod install ([fe33e75](https://github.com/visulima/visulima/commit/fe33e75827586779b4b3a0c6d57b39f889ee6207))
29
+
30
+ ### Documentation
31
+
32
+ * add missing documentation pages for email, string, and storage-client ([623f8af](https://github.com/visulima/visulima/commit/623f8afd2ea03dd2805fb2d7a9d10083571224bb))
33
+
34
+ ### Miscellaneous Chores
35
+
36
+ * **storage-client:** update dependencies ([7976708](https://github.com/visulima/visulima/commit/7976708758d06d3424a0a659b7f074cd25f9b1b9))
37
+ * visulima website ([#591](https://github.com/visulima/visulima/issues/591)) ([59ab2e2](https://github.com/visulima/visulima/commit/59ab2e2befb03e51cd2088956f83d9b87de6d033))
38
+
39
+ ### Code Refactoring
40
+
41
+ * **storage-client:** replace vite-tsconfig-paths with native Vite 8 resolve.tsconfigPaths ([7d528f1](https://github.com/visulima/visulima/commit/7d528f1a6d3b1b9ec93c891e89af7bdbf78d090c))
42
+
43
+ ## @visulima/storage-client [1.0.0-alpha.7](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.6...@visulima/storage-client@1.0.0-alpha.7) (2026-03-06)
44
+
45
+ ### Bug Fixes
46
+
47
+ * **storage-client:** update packem to 2.0.0-alpha.54 ([98984dd](https://github.com/visulima/visulima/commit/98984dd6f3c9d7b007a4ae723d80f27cd1cce1cc))
48
+
49
+ ### Miscellaneous Chores
50
+
51
+ * **storage-client:** update dependencies ([df3b47d](https://github.com/visulima/visulima/commit/df3b47dc7d961dd242b460384cbb26f91048548f))
52
+ * year update ([47f4105](https://github.com/visulima/visulima/commit/47f410596ce7190cfea36a073db32e0cec50bbcd))
53
+
54
+ ## @visulima/storage-client [1.0.0-alpha.6](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.5...@visulima/storage-client@1.0.0-alpha.6) (2026-02-16)
55
+
56
+ ### Bug Fixes
57
+
58
+ * **storage-client:** prevent state updates after component unmount in useTusUpload ([e40716e](https://github.com/visulima/visulima/commit/e40716e3389c63c609b9f0464e1fad6959d69e20))
59
+
60
+ ### Miscellaneous Chores
61
+
62
+ * **storage:** update dependencies ([f591768](https://github.com/visulima/visulima/commit/f591768de337c1b201191e4b78dd7e3fb79ca42b))
63
+ * update lock file maintenance ([d83e716](https://github.com/visulima/visulima/commit/d83e71697b75d24704185b66bb521a934d2db02d))
64
+
65
+ ## @visulima/storage-client [1.0.0-alpha.5](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.4...@visulima/storage-client@1.0.0-alpha.5) (2026-01-17)
66
+
67
+ ### Bug Fixes
68
+
69
+ * added removed Svelte ([d78857a](https://github.com/visulima/visulima/commit/d78857a4b62020a38db38db568ebe54fc9bf7b05))
70
+
71
+ ### Miscellaneous Chores
72
+
73
+ * **storage-client:** update dependencies ([733b7b3](https://github.com/visulima/visulima/commit/733b7b3f929114e769436633ceb9b4923a289257))
74
+
75
+ ## @visulima/storage-client [1.0.0-alpha.4](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.3...@visulima/storage-client@1.0.0-alpha.4) (2025-12-27)
76
+
77
+ ### Bug Fixes
78
+
79
+ * **storage-client:** update @testing-library/svelte to version 5.3.1 and improve README for Svelte support ([43e8ea5](https://github.com/visulima/visulima/commit/43e8ea5b01399d5dd0f98882629bceedd411e710))
80
+ * **storage-client:** update package files ([ba9d079](https://github.com/visulima/visulima/commit/ba9d079a5b25169e88836fd23af13796250452b1))
81
+
82
+ ### Miscellaneous Chores
83
+
84
+ * **dependencies:** update file-type to version 21.2.0, hono to version 4.11.3, and improve README for storage-client with detailed usage examples ([90bebfa](https://github.com/visulima/visulima/commit/90bebfa9b732afd8d80c133ca0636192b8496801))
85
+ * fixed project.json names and schema path ([964722f](https://github.com/visulima/visulima/commit/964722f691db205c7edb9aa6db29e849a647500b))
86
+
87
+ ## @visulima/storage-client [1.0.0-alpha.3](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.2...@visulima/storage-client@1.0.0-alpha.3) (2025-12-11)
88
+
89
+ ### Bug Fixes
90
+
91
+ * update package OG images across multiple packages ([f08e4dd](https://github.com/visulima/visulima/commit/f08e4dd2b105ccb29c8412020a9c2be36d6c1e9e))
92
+
93
+ ## @visulima/storage-client [1.0.0-alpha.2](https://github.com/visulima/visulima/compare/@visulima/storage-client@1.0.0-alpha.1...@visulima/storage-client@1.0.0-alpha.2) (2025-12-06)
94
+
95
+ ### Bug Fixes
96
+
97
+ * add new package image, fixed readme rendering on npm, fixed building of packages ([b790ba2](https://github.com/visulima/visulima/commit/b790ba253ea07fef83528fd822a678facf021b5f))
98
+
99
+ ### Miscellaneous Chores
100
+
101
+ * **release:** @visulima/storage-client@1.0.0-alpha.1 [skip ci]\n\n## @visulima/storage-client 1.0.0-alpha.1 (2025-12-05) ([9145099](https://github.com/visulima/visulima/commit/9145099002a34b52837b39172507108ebe7a8756))
102
+ * **release:** @visulima/storage-client@1.0.0-alpha.1 [skip ci]\n\n## @visulima/storage-client 1.0.0-alpha.1 (2025-12-05) ([719c655](https://github.com/visulima/visulima/commit/719c655552f3543f7cf787f676043efec314692a))
103
+ * update @anolilab/semantic-release-pnpm and @anolilab/semantic-release-preset to versions 3.2.2 and 12.1.2 across multiple package.json files for improved compatibility ([3921626](https://github.com/visulima/visulima/commit/3921626141fe5da398749bf0ba675f1596f18afb))
104
+ * update CHANGELOG.md to remove duplicate entries and streamline release notes for @visulima/storage-client ([3358ac0](https://github.com/visulima/visulima/commit/3358ac0199534efdebf5b86faa1852bd064f362f))
105
+
106
+ ## @visulima/storage-client 1.0.0-alpha.1 (2025-12-05)
107
+
108
+ ### ⚠ BREAKING CHANGES
109
+
110
+ * change min node version to 22.13
111
+
112
+ ### Bug Fixes
113
+
114
+ * update Node.js engine version requirement to >=22.13 in multiple package.json files for improved compatibility ([b828e9a](https://github.com/visulima/visulima/commit/b828e9aeaebfc798eecddccd90e6ec7560c6d36a))
6
115
 
7
116
  ### Miscellaneous Chores
8
117
 
118
+ * moved all packages into groups ([0615e9d](https://github.com/visulima/visulima/commit/0615e9d14a8a886e11da529ce150cf31ca973c10))
119
+ * **release:** @visulima/storage-client@1.0.0-alpha.1 [skip ci]\n\n## @visulima/storage-client 1.0.0-alpha.1 (2025-12-04) ([d2baf1c](https://github.com/visulima/visulima/commit/d2baf1cb65b9c3bc2b892c91eb25f2097a8b52b9))
120
+ * **release:** @visulima/storage-client@1.0.0-alpha.1 [skip ci]\n\n## @visulima/storage-client 1.0.0-alpha.1 (2025-12-05) ([719c655](https://github.com/visulima/visulima/commit/719c655552f3543f7cf787f676043efec314692a))
121
+ * update dependencies across multiple packages to improve compatibility and performance, including upgrading `@anolilab/semantic-release-pnpm` and `@anolilab/semantic-release-preset` to versions 3.2.0 and 12.1.0 respectively, and updating `react`, `react-dom`, and `next` versions to 19.2.1 and 16.0.7 in various package.json files ([aee8fcd](https://github.com/visulima/visulima/commit/aee8fcd796ae9b8d055903260e7150996ea9f53d))
9
122
  * update @visulima/packem version to 2.0.0-alpha.40 across multiple packages ([e5be373](https://github.com/visulima/visulima/commit/e5be373fef8f8dda20c1dee7a1ac30d9b7a7712e))
10
123
  * update package dependencies and versions across multiple packages ([9a9ac80](https://github.com/visulima/visulima/commit/9a9ac8046f7138cf37bec9e2041bc2125e97f212))
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 visulima
3
+ Copyright (c) 2026 visulima
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,15 +1,24 @@
1
- <div align="center">
2
- <h3>visulima storage-client</h3>
3
- <p>
4
- &quot;The upload client library. Simple and easy file uploads for React | Vue | Solid | .
5
- </p>
6
- </div>
1
+ <!-- START_PACKAGE_OG_IMAGE_PLACEHOLDER -->
2
+
3
+ <a href="https://www.anolilab.com/open-source" align="center">
4
+
5
+ <img src="__assets__/package-og.svg" alt="storage-client" />
6
+
7
+ </a>
8
+
9
+ <h3 align="center">The upload client library. Simple and easy file uploads for React | Vue | Solid | Svelte.</h3>
10
+
11
+ <!-- END_PACKAGE_OG_IMAGE_PLACEHOLDER -->
7
12
 
8
13
  <br />
9
14
 
10
15
  <div align="center">
11
16
 
12
- [![typescript-image]][typescript-url] [![npm-image]][npm-url] [![license-image]][license-url]
17
+ [![typescript-image][typescript-badge]][typescript-url]
18
+ [![mit licence][license-badge]][license]
19
+ [![npm downloads][npm-downloads-badge]][npm-downloads]
20
+ [![Chat][chat-badge]][chat]
21
+ [![PRs Welcome][prs-welcome-badge]][prs-welcome]
13
22
 
14
23
  </div>
15
24
 
@@ -39,10 +48,248 @@ yarn add @visulima/storage-client
39
48
  pnpm add @visulima/storage-client
40
49
  ```
41
50
 
51
+ ## Description
52
+
53
+ The Visulima Storage Client is a powerful, framework-agnostic library for handling file uploads in modern web applications. It provides a unified API across React, Vue, Nuxt, Solid, and Svelte with support for multiple upload methods, progress tracking, retry mechanisms, and batch operations.
54
+
55
+ ## Features
56
+
57
+ - **Framework Support** - First-class support for React, Vue/Nuxt, Solid, and Svelte
58
+ - **Multiple Upload Methods** - Multipart (form-based), TUS (resumable), and chunked REST uploads
59
+ - **Auto-detection** - Automatically selects the best upload method based on file size and available endpoints
60
+ - **Progress Tracking** - Real-time upload progress with percentage and byte-level tracking
61
+ - **Batch Operations** - Upload multiple files simultaneously with batch progress tracking
62
+ - **Retry Mechanism** - Built-in retry with exponential backoff for failed uploads
63
+ - **File Management** - Get, list, delete files with full metadata support
64
+ - **TypeScript Ready** - Full TypeScript support with comprehensive type definitions
65
+ - **TanStack Query Integration** - Built on TanStack Query for powerful caching and state management
66
+ - **Drag & Drop Support** - Built-in file input hooks with drag & drop functionality
67
+ - **Paste Upload** - Support for pasting images from clipboard
68
+ - **Transform Support** - Transform files and metadata on upload
69
+ - **Abort Control** - Cancel uploads at any time with abort functionality
70
+
71
+ ## Prerequisites
72
+
73
+ The storage client requires TanStack Query (formerly React Query) for state management. You'll need to install the appropriate version for your framework:
74
+
75
+ - **React**: `@tanstack/react-query` >= 5.90.10
76
+ - **Vue**: `@tanstack/vue-query` >= 5.91.2
77
+ - **Solid**: `@tanstack/solid-query` >= 5.90.13
78
+ - **Svelte**: `@tanstack/svelte-query` >= 6.0.8
79
+
42
80
  ## Usage
43
81
 
82
+ ### React
83
+
84
+ ```tsx
85
+ import { useUpload } from "@visulima/storage-client/react";
86
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
87
+
88
+ const queryClient = new QueryClient();
89
+
90
+ function App() {
91
+ return (
92
+ <QueryClientProvider client={queryClient}>
93
+ <UploadComponent />
94
+ </QueryClientProvider>
95
+ );
96
+ }
97
+
98
+ function UploadComponent() {
99
+ const { upload, progress, isUploading, error, result } = useUpload({
100
+ endpointMultipart: "/api/upload/multipart",
101
+ onSuccess: (result) => console.log("Upload successful:", result),
102
+ });
103
+
104
+ const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {
105
+ const file = e.target.files?.[0];
106
+ if (file) {
107
+ await upload(file);
108
+ }
109
+ };
110
+
111
+ return (
112
+ <div>
113
+ <input type="file" onChange={handleFileChange} />
114
+ {isUploading && <div>Progress: {progress}%</div>}
115
+ {error && <div>Error: {error.message}</div>}
116
+ {result && <div>File ID: {result.id}</div>}
117
+ </div>
118
+ );
119
+ }
120
+ ```
121
+
122
+ ### Vue / Nuxt
123
+
124
+ ```vue
125
+ <template>
126
+ <div>
127
+ <input type="file" @change="handleFileChange" />
128
+ <div v-if="isUploading">Progress: {{ progress }}%</div>
129
+ <div v-if="error">Error: {{ error.message }}</div>
130
+ <div v-if="result">File ID: {{ result.id }}</div>
131
+ </div>
132
+ </template>
133
+
134
+ <script setup lang="ts">
135
+ import { useUpload } from "@visulima/storage-client/vue";
136
+
137
+ const { upload, progress, isUploading, error, result } = useUpload({
138
+ endpointMultipart: "/api/upload/multipart",
139
+ });
140
+
141
+ const handleFileChange = async (e: Event) => {
142
+ const target = e.target as HTMLInputElement;
143
+ const file = target.files?.[0];
144
+ if (file) {
145
+ await upload(file);
146
+ }
147
+ };
148
+ </script>
149
+ ```
150
+
151
+ ### Solid
152
+
153
+ ```tsx
154
+ import { createUpload } from "@visulima/storage-client/solid";
155
+ import { QueryClient, QueryClientProvider } from "@tanstack/solid-query";
156
+
157
+ const queryClient = new QueryClient();
158
+
159
+ function App() {
160
+ return (
161
+ <QueryClientProvider client={queryClient}>
162
+ <UploadComponent />
163
+ </QueryClientProvider>
164
+ );
165
+ }
166
+
167
+ function UploadComponent() {
168
+ const { upload, progress, isUploading, error, result } = createUpload({
169
+ endpointMultipart: "/api/upload/multipart",
170
+ });
171
+
172
+ const handleFileChange = async (e: Event) => {
173
+ const target = e.target as HTMLInputElement;
174
+ const file = target.files?.[0];
175
+ if (file) {
176
+ await upload(file);
177
+ }
178
+ };
179
+
180
+ return (
181
+ <div>
182
+ <input type="file" onChange={handleFileChange} />
183
+ {isUploading() && <div>Progress: {progress()}%</div>}
184
+ {error() && <div>Error: {error()?.message}</div>}
185
+ {result() && <div>File ID: {result()?.id}</div>}
186
+ </div>
187
+ );
188
+ }
189
+ ```
190
+
191
+ ### Svelte
192
+
193
+ ```svelte
194
+ <script lang="ts">
195
+ import { createUpload } from "@visulima/storage-client/svelte";
196
+ import { QueryClient, QueryClientProvider } from "@tanstack/svelte-query";
197
+
198
+ const queryClient = new QueryClient();
199
+
200
+ const { upload, progress, isUploading, error, result } = createUpload({
201
+ endpointMultipart: "/api/upload/multipart",
202
+ });
203
+
204
+ async function handleFileChange(e: Event) {
205
+ const target = e.target as HTMLInputElement;
206
+ const file = target.files?.[0];
207
+ if (file) {
208
+ await upload(file);
209
+ }
210
+ }
211
+ </script>
212
+
213
+ <QueryClientProvider client={queryClient}>
214
+ <div>
215
+ <input type="file" on:change={handleFileChange} />
216
+ {#if $isUploading}
217
+ <div>Progress: {$progress}%</div>
218
+ {/if}
219
+ {#if $error}
220
+ <div>Error: {$error.message}</div>
221
+ {/if}
222
+ {#if $result}
223
+ <div>File ID: {$result.id}</div>
224
+ {/if}
225
+ </div>
226
+ </QueryClientProvider>
227
+ ```
228
+
229
+ ## Upload Methods
230
+
231
+ ### Multipart Upload
232
+
233
+ Traditional `multipart/form-data` uploads, perfect for small to medium files and web forms.
234
+
235
+ ```tsx
236
+ import { useMultipartUpload } from "@visulima/storage-client/react";
237
+
238
+ const { upload, progress, isUploading } = useMultipartUpload({
239
+ endpoint: "/api/upload/multipart",
240
+ });
241
+
242
+ await upload(file);
243
+ ```
244
+
245
+ ### TUS Upload
246
+
247
+ Resumable uploads using the TUS protocol, ideal for large files and unreliable networks.
248
+
249
+ ```tsx
250
+ import { useTusUpload } from "@visulima/storage-client/react";
251
+
252
+ const { upload, pause, resume, progress } = useTusUpload({
253
+ endpoint: "/api/upload/tus",
254
+ });
255
+
256
+ await upload(file);
257
+ // Can pause and resume later
258
+ pause();
259
+ resume();
260
+ ```
261
+
262
+ ### Chunked REST Upload
263
+
264
+ Client-side chunked uploads for large files without requiring TUS server support.
265
+
266
+ ```tsx
267
+ import { useChunkedRestUpload } from "@visulima/storage-client/react";
268
+
269
+ const { upload, progress } = useChunkedRestUpload({
270
+ endpoint: "/api/upload/chunked-rest",
271
+ chunkSize: 5 * 1024 * 1024, // 5MB chunks
272
+ });
273
+
274
+ await upload(file);
275
+ ```
276
+
277
+ ## Documentation
278
+
279
+ For complete documentation and examples, visit:
280
+
281
+ - [Installation Guide](https://visulima.com/docs/package/storage-client/installation)
282
+ - [React Guide](https://visulima.com/docs/package/storage-client/react)
283
+ - [Vue / Nuxt Guide](https://visulima.com/docs/package/storage-client/vue)
284
+ - [Solid Guide](https://visulima.com/docs/package/storage-client/solid)
285
+ - [Svelte Guide](https://visulima.com/docs/package/storage-client/svelte)
286
+ - [Next.js Guide](https://visulima.com/docs/package/storage-client/nextjs)
287
+ - [TanStack Start Guide](https://visulima.com/docs/package/storage-client/tanstack-start)
288
+
44
289
  ## Related
45
290
 
291
+ - [@visulima/storage-server](../storage-server) - Server-side storage implementation
292
+
46
293
  ## Supported Node.js Versions
47
294
 
48
295
  Libraries in this ecosystem make the best effort to track [Node.js’ release schedule](https://github.com/nodejs/release#release-schedule).
@@ -59,13 +306,23 @@ If you would like to help take a look at the [list of issues](https://github.com
59
306
  - [Daniel Bannert](https://github.com/prisis)
60
307
  - [All Contributors](https://github.com/visulima/visulima/graphs/contributors)
61
308
 
309
+ ## Made with ❤️ at Anolilab
310
+
311
+ This is an open source project and will always remain free to use. If you think it's cool, please star it 🌟. [Anolilab](https://www.anolilab.com/open-source) is a Development and AI Studio. Contact us at [hello@anolilab.com](mailto:hello@anolilab.com) if you need any help with these technologies or just want to say hi!
312
+
62
313
  ## License
63
314
 
64
- The visulima storage-client is open-sourced software licensed under the [MIT][license-url]
315
+ The visulima storage-client is open-sourced software licensed under the [MIT][license]
316
+
317
+ <!-- badges -->
65
318
 
66
- [typescript-image]: https://img.shields.io/badge/Typescript-294E80.svg?style=for-the-badge&logo=typescript
67
- [typescript-url]: https://www.typescriptlang.org/ "TypeScript"
68
- [license-image]: https://img.shields.io/npm/l/@visulima/storage-client?color=blueviolet&style=for-the-badge
69
- [license-url]: LICENSE.md "license"
70
- [npm-image]: https://img.shields.io/npm/v/@visulima/storage-client/latest.svg?style=for-the-badge&logo=npm
71
- [npm-url]: https://www.npmjs.com/package/@visulima/storage-client/v/latest "npm"
319
+ [license-badge]: https://img.shields.io/npm/l/@visulima/storage-client?style=for-the-badge
320
+ [license]: https://github.com/visulima/visulima/blob/main/LICENSE
321
+ [npm-downloads-badge]: https://img.shields.io/npm/dm/@visulima/storage-client?style=for-the-badge
322
+ [npm-downloads]: https://www.npmjs.com/package/@visulima/storage-client
323
+ [prs-welcome-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge
324
+ [prs-welcome]: https://github.com/visulima/visulima/blob/main/.github/CONTRIBUTING.md
325
+ [chat-badge]: https://img.shields.io/discord/932323359193186354.svg?style=for-the-badge
326
+ [chat]: https://discord.gg/TtFJY8xkFK
327
+ [typescript-badge]: https://img.shields.io/badge/Typescript-294E80.svg?style=for-the-badge&logo=typescript
328
+ [typescript-url]: https://www.typescriptlang.org/
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{default as t}from"./packem_shared/storageQueryKeys-cD4rL4b1.js";import{createChunkedRestAdapter as o}from"./packem_shared/createChunkedRestAdapter-Df1E_Adn.js";import{createMultipartAdapter as d}from"./packem_shared/createMultipartAdapter-CoJpvX9z.js";import{buildUrl as c,deleteRequest as l,extractFileMetaFromHeaders as s,fetchFile as u,fetchHead as m,fetchJson as x,parseApiError as h,patchChunk as i,putFile as A}from"./packem_shared/parseApiError-CUagSahh.js";import{createTusAdapter as n}from"./packem_shared/createTusAdapter-DM31lujI.js";import{createUploader as y}from"./packem_shared/createUploader-B_IjjBxw.js";export{c as buildUrl,o as createChunkedRestAdapter,d as createMultipartAdapter,n as createTusAdapter,y as createUploader,l as deleteRequest,s as extractFileMetaFromHeaders,u as fetchFile,m as fetchHead,x as fetchJson,h as parseApiError,i as patchChunk,A as putFile,t as storageQueryKeys};
1
+ import{default as t}from"./packem_shared/storageQueryKeys-cD4rL4b1.js";import{buildUrl as o,deleteRequest as p,extractFileMetaFromHeaders as d,fetchFile as f,fetchHead as c,fetchJson as l,parseApiError as s,patchChunk as u,putFile as m}from"./packem_shared/parseApiError-CUagSahh.js";import{createChunkedRestAdapter as h}from"./packem_shared/createChunkedRestAdapter-Df1E_Adn.js";import{createMultipartAdapter as A}from"./packem_shared/createMultipartAdapter-86KxCYjo.js";import{createTusAdapter as n}from"./packem_shared/createTusAdapter-DM31lujI.js";import{createUploader as y}from"./packem_shared/createUploader-CtXDRurP.js";export{o as buildUrl,h as createChunkedRestAdapter,A as createMultipartAdapter,n as createTusAdapter,y as createUploader,p as deleteRequest,d as extractFileMetaFromHeaders,f as fetchFile,c as fetchHead,l as fetchJson,s as parseApiError,u as patchChunk,m as putFile,t as storageQueryKeys};
@@ -1 +1 @@
1
- var n=Object.defineProperty;var r=(t,e)=>n(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as b}from"./createMultipartAdapter-CoJpvX9z.js";var c=Object.defineProperty,a=r((t,e)=>c(t,"name",{value:e,configurable:!0}),"e");const d=a(t=>{const{endpoint:e,metadata:o}=t,l=b({endpoint:e,metadata:o});return{abortAll:a(()=>{l.abort()},"abortAll")}},"createAbortAll");export{d as createAbortAll};
1
+ var n=Object.defineProperty;var r=(t,e)=>n(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as b}from"./createMultipartAdapter-86KxCYjo.js";var c=Object.defineProperty,a=r((t,e)=>c(t,"name",{value:e,configurable:!0}),"e");const d=a(t=>{const{endpoint:e,metadata:o}=t,l=b({endpoint:e,metadata:o});return{abortAll:a(()=>{l.abort()},"abortAll")}},"createAbortAll");export{d as createAbortAll};
@@ -1 +1 @@
1
- var n=Object.defineProperty;var r=(t,e)=>n(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as b}from"./createMultipartAdapter-CoJpvX9z.js";var c=Object.defineProperty,a=r((t,e)=>c(t,"name",{value:e,configurable:!0}),"e");const d=a(t=>{const{endpoint:e,metadata:o}=t,l=b({endpoint:e,metadata:o});return{abortAll:a(()=>{l.abort()},"abortAll")}},"createAbortAll");export{d as createAbortAll};
1
+ var n=Object.defineProperty;var r=(t,e)=>n(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as b}from"./createMultipartAdapter-86KxCYjo.js";var c=Object.defineProperty,a=r((t,e)=>c(t,"name",{value:e,configurable:!0}),"e");const d=a(t=>{const{endpoint:e,metadata:o}=t,l=b({endpoint:e,metadata:o});return{abortAll:a(()=>{l.abort()},"abortAll")}},"createAbortAll");export{d as createAbortAll};
@@ -1 +1 @@
1
- var b=Object.defineProperty;var e=(t,a)=>b(t,"name",{value:a,configurable:!0});import{createMultipartAdapter as p}from"./createMultipartAdapter-CoJpvX9z.js";var d=Object.defineProperty,r=e((t,a)=>d(t,"name",{value:a,configurable:!0}),"a");const m=r(t=>{const{endpoint:a,metadata:o}=t,c=p({endpoint:a,metadata:o});return{abortBatch:r(n=>{c.abortBatch(n)},"abortBatch")}},"createAbortBatch");export{m as createAbortBatch};
1
+ var b=Object.defineProperty;var e=(t,a)=>b(t,"name",{value:a,configurable:!0});import{createMultipartAdapter as p}from"./createMultipartAdapter-86KxCYjo.js";var d=Object.defineProperty,r=e((t,a)=>d(t,"name",{value:a,configurable:!0}),"a");const m=r(t=>{const{endpoint:a,metadata:o}=t,c=p({endpoint:a,metadata:o});return{abortBatch:r(n=>{c.abortBatch(n)},"abortBatch")}},"createAbortBatch");export{m as createAbortBatch};
@@ -1 +1 @@
1
- var b=Object.defineProperty;var e=(t,a)=>b(t,"name",{value:a,configurable:!0});import{createMultipartAdapter as p}from"./createMultipartAdapter-CoJpvX9z.js";var d=Object.defineProperty,r=e((t,a)=>d(t,"name",{value:a,configurable:!0}),"a");const m=r(t=>{const{endpoint:a,metadata:o}=t,c=p({endpoint:a,metadata:o});return{abortBatch:r(n=>{c.abortBatch(n)},"abortBatch")}},"createAbortBatch");export{m as createAbortBatch};
1
+ var b=Object.defineProperty;var e=(t,a)=>b(t,"name",{value:a,configurable:!0});import{createMultipartAdapter as p}from"./createMultipartAdapter-86KxCYjo.js";var d=Object.defineProperty,r=e((t,a)=>d(t,"name",{value:a,configurable:!0}),"a");const m=r(t=>{const{endpoint:a,metadata:o}=t,c=p({endpoint:a,metadata:o});return{abortBatch:r(n=>{c.abortBatch(n)},"abortBatch")}},"createAbortBatch");export{m as createAbortBatch};
@@ -1 +1 @@
1
- var b=Object.defineProperty;var r=(t,e)=>b(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as c}from"./createMultipartAdapter-CoJpvX9z.js";var i=Object.defineProperty,a=r((t,e)=>i(t,"name",{value:e,configurable:!0}),"r");const u=a(t=>{const{endpoint:e,metadata:o}=t,m=c({endpoint:e,metadata:o});return{abortItem:a(n=>{m.abortItem(n)},"abortItem")}},"createAbortItem");export{u as createAbortItem};
1
+ var b=Object.defineProperty;var r=(t,e)=>b(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as c}from"./createMultipartAdapter-86KxCYjo.js";var i=Object.defineProperty,a=r((t,e)=>i(t,"name",{value:e,configurable:!0}),"r");const u=a(t=>{const{endpoint:e,metadata:o}=t,m=c({endpoint:e,metadata:o});return{abortItem:a(n=>{m.abortItem(n)},"abortItem")}},"createAbortItem");export{u as createAbortItem};
@@ -1 +1 @@
1
- var b=Object.defineProperty;var r=(t,e)=>b(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as c}from"./createMultipartAdapter-CoJpvX9z.js";var i=Object.defineProperty,a=r((t,e)=>i(t,"name",{value:e,configurable:!0}),"r");const u=a(t=>{const{endpoint:e,metadata:o}=t,m=c({endpoint:e,metadata:o});return{abortItem:a(n=>{m.abortItem(n)},"abortItem")}},"createAbortItem");export{u as createAbortItem};
1
+ var b=Object.defineProperty;var r=(t,e)=>b(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as c}from"./createMultipartAdapter-86KxCYjo.js";var i=Object.defineProperty,a=r((t,e)=>i(t,"name",{value:e,configurable:!0}),"r");const u=a(t=>{const{endpoint:e,metadata:o}=t,m=c({endpoint:e,metadata:o});return{abortItem:a(n=>{m.abortItem(n)},"abortItem")}},"createAbortItem");export{u as createAbortItem};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var n=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as c,onCleanup as u}from"solid-js";import{createMultipartAdapter as A}from"./createMultipartAdapter-CoJpvX9z.js";var f=Object.defineProperty,i=n((e,t)=>f(e,"name",{value:t,configurable:!0}),"e");const M=i(e=>{const{endpoint:t,metadata:l,onAbort:p}=e;c(()=>{const r=A({endpoint:t,metadata:l}),o=i(a=>{"file"in a&&p(a)},"handler");r.uploader.on("ITEM_ABORT",o),u(()=>{r.uploader.off("ITEM_ABORT",o)})})},"createAllAbortListener");export{M as createAllAbortListener};
1
+ var d=Object.defineProperty;var n=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as c,onCleanup as u}from"solid-js";import{createMultipartAdapter as A}from"./createMultipartAdapter-86KxCYjo.js";var f=Object.defineProperty,i=n((e,t)=>f(e,"name",{value:t,configurable:!0}),"e");const M=i(e=>{const{endpoint:t,metadata:l,onAbort:p}=e;c(()=>{const r=A({endpoint:t,metadata:l}),o=i(a=>{"file"in a&&p(a)},"handler");r.uploader.on("ITEM_ABORT",o),u(()=>{r.uploader.off("ITEM_ABORT",o)})})},"createAllAbortListener");export{M as createAllAbortListener};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var n=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as c,onDestroy as A}from"svelte";import{createMultipartAdapter as f}from"./createMultipartAdapter-CoJpvX9z.js";var m=Object.defineProperty,i=n((e,t)=>m(e,"name",{value:t,configurable:!0}),"e");const M=i(e=>{const{endpoint:t,metadata:l,onAbort:p}=e;c(()=>{const r=f({endpoint:t,metadata:l}),o=i(a=>{"file"in a&&p(a)},"handler");r.uploader.on("ITEM_ABORT",o),A(()=>{r.uploader.off("ITEM_ABORT",o)})})},"createAllAbortListener");export{M as createAllAbortListener};
1
+ var d=Object.defineProperty;var n=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as c,onDestroy as A}from"svelte";import{createMultipartAdapter as f}from"./createMultipartAdapter-86KxCYjo.js";var m=Object.defineProperty,i=n((e,t)=>m(e,"name",{value:t,configurable:!0}),"e");const M=i(e=>{const{endpoint:t,metadata:l,onAbort:p}=e;c(()=>{const r=f({endpoint:t,metadata:l}),o=i(a=>{"file"in a&&p(a)},"handler");r.uploader.on("ITEM_ABORT",o),A(()=>{r.uploader.off("ITEM_ABORT",o)})})},"createAllAbortListener");export{M as createAllAbortListener};
@@ -1 +1 @@
1
- var i=Object.defineProperty;var r=(e,t)=>i(e,"name",{value:t,configurable:!0});import{onMount as p,onCleanup as C}from"solid-js";import{createMultipartAdapter as m}from"./createMultipartAdapter-CoJpvX9z.js";var u=Object.defineProperty,c=r((e,t)=>u(e,"name",{value:t,configurable:!0}),"a");const A=c(e=>{const{endpoint:t,metadata:d,onBatchCancelled:l}=e;p(()=>{const a=m({endpoint:t,metadata:d}),n=c(o=>{"itemIds"in o&&l(o)},"handler");a.uploader.on("BATCH_CANCELLED",n),C(()=>{a.uploader.off("BATCH_CANCELLED",n)})})},"createBatchCancelledListener");export{A as createBatchCancelledListener};
1
+ var i=Object.defineProperty;var r=(e,t)=>i(e,"name",{value:t,configurable:!0});import{onMount as p,onCleanup as C}from"solid-js";import{createMultipartAdapter as m}from"./createMultipartAdapter-86KxCYjo.js";var u=Object.defineProperty,c=r((e,t)=>u(e,"name",{value:t,configurable:!0}),"a");const A=c(e=>{const{endpoint:t,metadata:d,onBatchCancelled:l}=e;p(()=>{const a=m({endpoint:t,metadata:d}),n=c(o=>{"itemIds"in o&&l(o)},"handler");a.uploader.on("BATCH_CANCELLED",n),C(()=>{a.uploader.off("BATCH_CANCELLED",n)})})},"createBatchCancelledListener");export{A as createBatchCancelledListener};
@@ -1 +1 @@
1
- var l=Object.defineProperty;var r=(e,t)=>l(e,"name",{value:t,configurable:!0});import{onMount as p,onDestroy as C}from"svelte";import{createMultipartAdapter as m}from"./createMultipartAdapter-CoJpvX9z.js";var s=Object.defineProperty,c=r((e,t)=>s(e,"name",{value:t,configurable:!0}),"a");const A=c(e=>{const{endpoint:t,metadata:d,onBatchCancelled:i}=e;p(()=>{const a=m({endpoint:t,metadata:d}),n=c(o=>{"itemIds"in o&&i(o)},"handler");a.uploader.on("BATCH_CANCELLED",n),C(()=>{a.uploader.off("BATCH_CANCELLED",n)})})},"createBatchCancelledListener");export{A as createBatchCancelledListener};
1
+ var l=Object.defineProperty;var r=(e,t)=>l(e,"name",{value:t,configurable:!0});import{onMount as p,onDestroy as C}from"svelte";import{createMultipartAdapter as m}from"./createMultipartAdapter-86KxCYjo.js";var s=Object.defineProperty,c=r((e,t)=>s(e,"name",{value:t,configurable:!0}),"a");const A=c(e=>{const{endpoint:t,metadata:d,onBatchCancelled:i}=e;p(()=>{const a=m({endpoint:t,metadata:d}),n=c(o=>{"itemIds"in o&&i(o)},"handler");a.uploader.on("BATCH_CANCELLED",n),C(()=>{a.uploader.off("BATCH_CANCELLED",n)})})},"createBatchCancelledListener");export{A as createBatchCancelledListener};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var n=(r,e)=>d(r,"name",{value:e,configurable:!0});import{onMount as m,onCleanup as u}from"solid-js";import{createMultipartAdapter as l}from"./createMultipartAdapter-CoJpvX9z.js";var f=Object.defineProperty,c=n((r,e)=>f(r,"name",{value:e,configurable:!0}),"o");const E=c(r=>{const{endpoint:e,metadata:i,onBatchError:p}=r;m(()=>{const t=l({endpoint:e,metadata:i}),a=c(o=>{"itemIds"in o&&p(o)},"handler");t.uploader.on("BATCH_ERROR",a),u(()=>{t.uploader.off("BATCH_ERROR",a)})})},"createBatchErrorListener");export{E as createBatchErrorListener};
1
+ var d=Object.defineProperty;var n=(r,e)=>d(r,"name",{value:e,configurable:!0});import{onMount as m,onCleanup as u}from"solid-js";import{createMultipartAdapter as l}from"./createMultipartAdapter-86KxCYjo.js";var f=Object.defineProperty,c=n((r,e)=>f(r,"name",{value:e,configurable:!0}),"o");const E=c(r=>{const{endpoint:e,metadata:i,onBatchError:p}=r;m(()=>{const t=l({endpoint:e,metadata:i}),a=c(o=>{"itemIds"in o&&p(o)},"handler");t.uploader.on("BATCH_ERROR",a),u(()=>{t.uploader.off("BATCH_ERROR",a)})})},"createBatchErrorListener");export{E as createBatchErrorListener};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var n=(r,e)=>d(r,"name",{value:e,configurable:!0});import{onMount as m,onDestroy as s}from"svelte";import{createMultipartAdapter as u}from"./createMultipartAdapter-CoJpvX9z.js";var f=Object.defineProperty,c=n((r,e)=>f(r,"name",{value:e,configurable:!0}),"o");const E=c(r=>{const{endpoint:e,metadata:i,onBatchError:p}=r;m(()=>{const t=u({endpoint:e,metadata:i}),o=c(a=>{"itemIds"in a&&p(a)},"handler");t.uploader.on("BATCH_ERROR",o),s(()=>{t.uploader.off("BATCH_ERROR",o)})})},"createBatchErrorListener");export{E as createBatchErrorListener};
1
+ var d=Object.defineProperty;var n=(r,e)=>d(r,"name",{value:e,configurable:!0});import{onMount as m,onDestroy as s}from"svelte";import{createMultipartAdapter as u}from"./createMultipartAdapter-86KxCYjo.js";var f=Object.defineProperty,c=n((r,e)=>f(r,"name",{value:e,configurable:!0}),"o");const E=c(r=>{const{endpoint:e,metadata:i,onBatchError:p}=r;m(()=>{const t=u({endpoint:e,metadata:i}),o=c(a=>{"itemIds"in a&&p(a)},"handler");t.uploader.on("BATCH_ERROR",o),s(()=>{t.uploader.off("BATCH_ERROR",o)})})},"createBatchErrorListener");export{E as createBatchErrorListener};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var n=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as l,onDestroy as m}from"svelte";import{createMultipartAdapter as s}from"./createMultipartAdapter-CoJpvX9z.js";var u=Object.defineProperty,i=n((e,t)=>u(e,"name",{value:t,configurable:!0}),"a");const F=i(e=>{const{endpoint:t,metadata:c,onBatchFinalize:p}=e;l(()=>{const a=s({endpoint:t,metadata:c}),r=i(o=>{"itemIds"in o&&p(o)},"handler");a.uploader.on("BATCH_FINALIZE",r),m(()=>{a.uploader.off("BATCH_FINALIZE",r)})})},"createBatchFinalizeListener");export{F as createBatchFinalizeListener};
1
+ var d=Object.defineProperty;var n=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as l,onDestroy as m}from"svelte";import{createMultipartAdapter as s}from"./createMultipartAdapter-86KxCYjo.js";var u=Object.defineProperty,i=n((e,t)=>u(e,"name",{value:t,configurable:!0}),"a");const F=i(e=>{const{endpoint:t,metadata:c,onBatchFinalize:p}=e;l(()=>{const a=s({endpoint:t,metadata:c}),r=i(o=>{"itemIds"in o&&p(o)},"handler");a.uploader.on("BATCH_FINALIZE",r),m(()=>{a.uploader.off("BATCH_FINALIZE",r)})})},"createBatchFinalizeListener");export{F as createBatchFinalizeListener};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var o=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as l,onCleanup as m}from"solid-js";import{createMultipartAdapter as u}from"./createMultipartAdapter-CoJpvX9z.js";var f=Object.defineProperty,i=o((e,t)=>f(e,"name",{value:t,configurable:!0}),"a");const F=i(e=>{const{endpoint:t,metadata:c,onBatchFinalize:p}=e;l(()=>{const a=u({endpoint:t,metadata:c}),n=i(r=>{"itemIds"in r&&p(r)},"handler");a.uploader.on("BATCH_FINALIZE",n),m(()=>{a.uploader.off("BATCH_FINALIZE",n)})})},"createBatchFinalizeListener");export{F as createBatchFinalizeListener};
1
+ var d=Object.defineProperty;var o=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as l,onCleanup as m}from"solid-js";import{createMultipartAdapter as u}from"./createMultipartAdapter-86KxCYjo.js";var f=Object.defineProperty,i=o((e,t)=>f(e,"name",{value:t,configurable:!0}),"a");const F=i(e=>{const{endpoint:t,metadata:c,onBatchFinalize:p}=e;l(()=>{const a=u({endpoint:t,metadata:c}),n=i(r=>{"itemIds"in r&&p(r)},"handler");a.uploader.on("BATCH_FINALIZE",n),m(()=>{a.uploader.off("BATCH_FINALIZE",n)})})},"createBatchFinalizeListener");export{F as createBatchFinalizeListener};
@@ -1 +1 @@
1
- var s=Object.defineProperty;var n=(e,t)=>s(e,"name",{value:t,configurable:!0});import{onMount as d,onDestroy as m}from"svelte";import{createMultipartAdapter as h}from"./createMultipartAdapter-CoJpvX9z.js";var u=Object.defineProperty,i=n((e,t)=>u(e,"name",{value:t,configurable:!0}),"o");const F=i(e=>{const{endpoint:t,metadata:c,onBatchFinish:p}=e;d(()=>{const a=h({endpoint:t,metadata:c}),r=i(o=>{"itemIds"in o&&p(o)},"handler");a.uploader.on("BATCH_FINISH",r),m(()=>{a.uploader.off("BATCH_FINISH",r)})})},"createBatchFinishListener");export{F as createBatchFinishListener};
1
+ var s=Object.defineProperty;var n=(e,t)=>s(e,"name",{value:t,configurable:!0});import{onMount as d,onDestroy as m}from"svelte";import{createMultipartAdapter as h}from"./createMultipartAdapter-86KxCYjo.js";var u=Object.defineProperty,i=n((e,t)=>u(e,"name",{value:t,configurable:!0}),"o");const F=i(e=>{const{endpoint:t,metadata:c,onBatchFinish:p}=e;d(()=>{const a=h({endpoint:t,metadata:c}),r=i(o=>{"itemIds"in o&&p(o)},"handler");a.uploader.on("BATCH_FINISH",r),m(()=>{a.uploader.off("BATCH_FINISH",r)})})},"createBatchFinishListener");export{F as createBatchFinishListener};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var o=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as s,onCleanup as m}from"solid-js";import{createMultipartAdapter as u}from"./createMultipartAdapter-CoJpvX9z.js";var h=Object.defineProperty,i=o((e,t)=>h(e,"name",{value:t,configurable:!0}),"a");const F=i(e=>{const{endpoint:t,metadata:p,onBatchFinish:c}=e;s(()=>{const a=u({endpoint:t,metadata:p}),n=i(r=>{"itemIds"in r&&c(r)},"handler");a.uploader.on("BATCH_FINISH",n),m(()=>{a.uploader.off("BATCH_FINISH",n)})})},"createBatchFinishListener");export{F as createBatchFinishListener};
1
+ var d=Object.defineProperty;var o=(e,t)=>d(e,"name",{value:t,configurable:!0});import{onMount as s,onCleanup as m}from"solid-js";import{createMultipartAdapter as u}from"./createMultipartAdapter-86KxCYjo.js";var h=Object.defineProperty,i=o((e,t)=>h(e,"name",{value:t,configurable:!0}),"a");const F=i(e=>{const{endpoint:t,metadata:p,onBatchFinish:c}=e;s(()=>{const a=u({endpoint:t,metadata:p}),n=i(r=>{"itemIds"in r&&c(r)},"handler");a.uploader.on("BATCH_FINISH",n),m(()=>{a.uploader.off("BATCH_FINISH",n)})})},"createBatchFinishListener");export{F as createBatchFinishListener};
@@ -1 +1 @@
1
- var c=Object.defineProperty;var n=(e,r)=>c(e,"name",{value:r,configurable:!0});import{onMount as d,onCleanup as m}from"solid-js";import{createMultipartAdapter as u}from"./createMultipartAdapter-CoJpvX9z.js";var l=Object.defineProperty,s=n((e,r)=>l(e,"name",{value:r,configurable:!0}),"o");const g=s(e=>{const{endpoint:r,metadata:i,onBatchProgress:p}=e;d(()=>{const t=u({endpoint:r,metadata:i}),a=s(o=>{"itemIds"in o&&p(o)},"handler");t.uploader.on("BATCH_PROGRESS",a),m(()=>{t.uploader.off("BATCH_PROGRESS",a)})})},"createBatchProgressListener");export{g as createBatchProgressListener};
1
+ var c=Object.defineProperty;var n=(e,r)=>c(e,"name",{value:r,configurable:!0});import{onMount as d,onCleanup as m}from"solid-js";import{createMultipartAdapter as u}from"./createMultipartAdapter-86KxCYjo.js";var l=Object.defineProperty,s=n((e,r)=>l(e,"name",{value:r,configurable:!0}),"o");const g=s(e=>{const{endpoint:r,metadata:i,onBatchProgress:p}=e;d(()=>{const t=u({endpoint:r,metadata:i}),a=s(o=>{"itemIds"in o&&p(o)},"handler");t.uploader.on("BATCH_PROGRESS",a),m(()=>{t.uploader.off("BATCH_PROGRESS",a)})})},"createBatchProgressListener");export{g as createBatchProgressListener};
@@ -1 +1 @@
1
- var p=Object.defineProperty;var n=(e,r)=>p(e,"name",{value:r,configurable:!0});import{onMount as d,onDestroy as m}from"svelte";import{createMultipartAdapter as u}from"./createMultipartAdapter-CoJpvX9z.js";var f=Object.defineProperty,s=n((e,r)=>f(e,"name",{value:r,configurable:!0}),"o");const g=s(e=>{const{endpoint:r,metadata:i,onBatchProgress:c}=e;d(()=>{const t=u({endpoint:r,metadata:i}),o=s(a=>{"itemIds"in a&&c(a)},"handler");t.uploader.on("BATCH_PROGRESS",o),m(()=>{t.uploader.off("BATCH_PROGRESS",o)})})},"createBatchProgressListener");export{g as createBatchProgressListener};
1
+ var p=Object.defineProperty;var n=(e,r)=>p(e,"name",{value:r,configurable:!0});import{onMount as d,onDestroy as m}from"svelte";import{createMultipartAdapter as u}from"./createMultipartAdapter-86KxCYjo.js";var f=Object.defineProperty,s=n((e,r)=>f(e,"name",{value:r,configurable:!0}),"o");const g=s(e=>{const{endpoint:r,metadata:i,onBatchProgress:c}=e;d(()=>{const t=u({endpoint:r,metadata:i}),o=s(a=>{"itemIds"in a&&c(a)},"handler");t.uploader.on("BATCH_PROGRESS",o),m(()=>{t.uploader.off("BATCH_PROGRESS",o)})})},"createBatchProgressListener");export{g as createBatchProgressListener};
@@ -1 +1 @@
1
- var p=Object.defineProperty;var r=(t,e)=>p(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as d}from"./createMultipartAdapter-CoJpvX9z.js";var i=Object.defineProperty,a=r((t,e)=>i(t,"name",{value:e,configurable:!0}),"r");const h=a(t=>{const{endpoint:e,metadata:c}=t,n=d({endpoint:e,metadata:c});return{retryBatch:a(o=>{n.uploader.retryBatch(o)},"retryBatch")}},"createBatchRetry");export{h as createBatchRetry};
1
+ var p=Object.defineProperty;var r=(t,e)=>p(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as d}from"./createMultipartAdapter-86KxCYjo.js";var i=Object.defineProperty,a=r((t,e)=>i(t,"name",{value:e,configurable:!0}),"r");const h=a(t=>{const{endpoint:e,metadata:c}=t,n=d({endpoint:e,metadata:c});return{retryBatch:a(o=>{n.uploader.retryBatch(o)},"retryBatch")}},"createBatchRetry");export{h as createBatchRetry};
@@ -1 +1 @@
1
- var p=Object.defineProperty;var r=(t,e)=>p(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as d}from"./createMultipartAdapter-CoJpvX9z.js";var i=Object.defineProperty,a=r((t,e)=>i(t,"name",{value:e,configurable:!0}),"r");const h=a(t=>{const{endpoint:e,metadata:c}=t,n=d({endpoint:e,metadata:c});return{retryBatch:a(o=>{n.uploader.retryBatch(o)},"retryBatch")}},"createBatchRetry");export{h as createBatchRetry};
1
+ var p=Object.defineProperty;var r=(t,e)=>p(t,"name",{value:e,configurable:!0});import{createMultipartAdapter as d}from"./createMultipartAdapter-86KxCYjo.js";var i=Object.defineProperty,a=r((t,e)=>i(t,"name",{value:e,configurable:!0}),"r");const h=a(t=>{const{endpoint:e,metadata:c}=t,n=d({endpoint:e,metadata:c});return{retryBatch:a(o=>{n.uploader.retryBatch(o)},"retryBatch")}},"createBatchRetry");export{h as createBatchRetry};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var n=(t,e)=>d(t,"name",{value:e,configurable:!0});import{onMount as m,onDestroy as s}from"svelte";import{createMultipartAdapter as u}from"./createMultipartAdapter-CoJpvX9z.js";var f=Object.defineProperty,c=n((t,e)=>f(t,"name",{value:e,configurable:!0}),"e");const B=c(t=>{const{endpoint:e,metadata:i,onBatchStart:p}=t;m(()=>{const a=u({endpoint:e,metadata:i}),r=c(o=>{"itemIds"in o&&p(o)},"handler");a.uploader.on("BATCH_START",r),s(()=>{a.uploader.off("BATCH_START",r)})})},"createBatchStartListener");export{B as createBatchStartListener};
1
+ var d=Object.defineProperty;var n=(t,e)=>d(t,"name",{value:e,configurable:!0});import{onMount as m,onDestroy as s}from"svelte";import{createMultipartAdapter as u}from"./createMultipartAdapter-86KxCYjo.js";var f=Object.defineProperty,c=n((t,e)=>f(t,"name",{value:e,configurable:!0}),"e");const B=c(t=>{const{endpoint:e,metadata:i,onBatchStart:p}=t;m(()=>{const a=u({endpoint:e,metadata:i}),r=c(o=>{"itemIds"in o&&p(o)},"handler");a.uploader.on("BATCH_START",r),s(()=>{a.uploader.off("BATCH_START",r)})})},"createBatchStartListener");export{B as createBatchStartListener};
@@ -1 +1 @@
1
- var d=Object.defineProperty;var n=(t,e)=>d(t,"name",{value:e,configurable:!0});import{onMount as m,onCleanup as u}from"solid-js";import{createMultipartAdapter as l}from"./createMultipartAdapter-CoJpvX9z.js";var f=Object.defineProperty,c=n((t,e)=>f(t,"name",{value:e,configurable:!0}),"e");const B=c(t=>{const{endpoint:e,metadata:i,onBatchStart:p}=t;m(()=>{const a=l({endpoint:e,metadata:i}),r=c(o=>{"itemIds"in o&&p(o)},"handler");a.uploader.on("BATCH_START",r),u(()=>{a.uploader.off("BATCH_START",r)})})},"createBatchStartListener");export{B as createBatchStartListener};
1
+ var d=Object.defineProperty;var n=(t,e)=>d(t,"name",{value:e,configurable:!0});import{onMount as m,onCleanup as u}from"solid-js";import{createMultipartAdapter as l}from"./createMultipartAdapter-86KxCYjo.js";var f=Object.defineProperty,c=n((t,e)=>f(t,"name",{value:e,configurable:!0}),"e");const B=c(t=>{const{endpoint:e,metadata:i,onBatchStart:p}=t;m(()=>{const a=l({endpoint:e,metadata:i}),r=c(o=>{"itemIds"in o&&p(o)},"handler");a.uploader.on("BATCH_START",r),u(()=>{a.uploader.off("BATCH_START",r)})})},"createBatchStartListener");export{B as createBatchStartListener};
@@ -1 +1 @@
1
- var z=Object.defineProperty;var I=(s,d)=>z(s,"name",{value:d,configurable:!0});import{createSignal as r,onMount as M,onCleanup as j}from"solid-js";import{createMultipartAdapter as x}from"./createMultipartAdapter-CoJpvX9z.js";var D=Object.defineProperty,i=I((s,d)=>D(s,"name",{value:d,configurable:!0}),"s");const J=i(s=>{const{endpoint:d,metadata:E,onError:_,onProgress:b,onStart:v,onSuccess:y}=s,[N,C]=r([]),[O,c]=r(0),[P,l]=r(!1),[L,h]=r(void 0),[F,p]=r(0),[U,f]=r(0),[m,A]=r(void 0),u=x({endpoint:d,metadata:E});return M(()=>{const{uploader:t}=u,R=i(a=>{if("itemIds"in a){const e=a;A(e.id),l(!0),c(0),h(void 0),p(0),f(0),C(t.getBatchItems(e.id)),v?.(e.id)}},"onBatchStart"),T=i(a=>{if("itemIds"in a){const e=a;e.id===m()&&(c(e.progress),p(e.completedCount),f(e.errorCount),C(t.getBatchItems(e.id)),b?.(e.progress,e.id))}},"onBatchProgress"),g=i(a=>{if("itemIds"in a){const e=a;if(e.id===m()){const B=t.getBatchItems(e.id).filter(o=>o.status==="completed").map(o=>{let n={};try{o.uploadResponse?.data&&typeof o.uploadResponse.data=="object"?n=o.uploadResponse.data:o.uploadResponse?.response&&(n=JSON.parse(o.uploadResponse.response))}catch{}return{bytesWritten:n.bytesWritten,contentType:n.contentType??o.file.type,createdAt:n.createdAt,filename:n.originalName??o.file.name,id:n.id??o.id,metadata:n.metadata,name:n.name,originalName:n.originalName??o.file.name,size:n.size??o.file.size,status:n.status??"completed",url:o.url}});c(100),l(!1),y?.(B,e.id)}}},"onBatchFinish"),S=i(a=>{if("itemIds"in a){const e=a;if(e.id===m()){const B=new Error(`Batch upload failed: ${e.errorCount} file(s) failed`);h(B),l(!1),f(e.errorCount),p(e.completedCount),_?.(B,e.id)}}},"onBatchError"),H=i(a=>{"itemIds"in a&&a.id===m()&&(l(!1),c(0))},"onBatchCancelled");t.on("BATCH_START",R),t.on("BATCH_PROGRESS",T),t.on("BATCH_FINISH",g),t.on("BATCH_ERROR",S),t.on("BATCH_CANCELLED",H),j(()=>{t.off("BATCH_START",R),t.off("BATCH_PROGRESS",T),t.off("BATCH_FINISH",g),t.off("BATCH_ERROR",S),t.off("BATCH_CANCELLED",H)})}),{abortBatch:i(t=>{u.abortBatch(t)},"abortBatch"),completedCount:F,error:L,errorCount:U,isUploading:P,items:N,progress:O,reset:i(()=>{u.clear(),c(0),l(!1),h(void 0),C([]),p(0),f(0),A(void 0)},"reset"),uploadBatch:i(t=>t.length===0?[]:u.uploadBatch(t),"uploadBatch")}},"createBatchUpload");export{J as createBatchUpload};
1
+ var z=Object.defineProperty;var I=(s,d)=>z(s,"name",{value:d,configurable:!0});import{createSignal as r,onMount as M,onCleanup as j}from"solid-js";import{createMultipartAdapter as x}from"./createMultipartAdapter-86KxCYjo.js";var D=Object.defineProperty,i=I((s,d)=>D(s,"name",{value:d,configurable:!0}),"s");const J=i(s=>{const{endpoint:d,metadata:E,onError:_,onProgress:b,onStart:v,onSuccess:y}=s,[N,C]=r([]),[O,c]=r(0),[P,l]=r(!1),[L,h]=r(void 0),[F,p]=r(0),[U,f]=r(0),[m,A]=r(void 0),u=x({endpoint:d,metadata:E});return M(()=>{const{uploader:t}=u,R=i(a=>{if("itemIds"in a){const e=a;A(e.id),l(!0),c(0),h(void 0),p(0),f(0),C(t.getBatchItems(e.id)),v?.(e.id)}},"onBatchStart"),T=i(a=>{if("itemIds"in a){const e=a;e.id===m()&&(c(e.progress),p(e.completedCount),f(e.errorCount),C(t.getBatchItems(e.id)),b?.(e.progress,e.id))}},"onBatchProgress"),g=i(a=>{if("itemIds"in a){const e=a;if(e.id===m()){const B=t.getBatchItems(e.id).filter(o=>o.status==="completed").map(o=>{let n={};try{o.uploadResponse?.data&&typeof o.uploadResponse.data=="object"?n=o.uploadResponse.data:o.uploadResponse?.response&&(n=JSON.parse(o.uploadResponse.response))}catch{}return{bytesWritten:n.bytesWritten,contentType:n.contentType??o.file.type,createdAt:n.createdAt,filename:n.originalName??o.file.name,id:n.id??o.id,metadata:n.metadata,name:n.name,originalName:n.originalName??o.file.name,size:n.size??o.file.size,status:n.status??"completed",url:o.url}});c(100),l(!1),y?.(B,e.id)}}},"onBatchFinish"),S=i(a=>{if("itemIds"in a){const e=a;if(e.id===m()){const B=new Error(`Batch upload failed: ${e.errorCount} file(s) failed`);h(B),l(!1),f(e.errorCount),p(e.completedCount),_?.(B,e.id)}}},"onBatchError"),H=i(a=>{"itemIds"in a&&a.id===m()&&(l(!1),c(0))},"onBatchCancelled");t.on("BATCH_START",R),t.on("BATCH_PROGRESS",T),t.on("BATCH_FINISH",g),t.on("BATCH_ERROR",S),t.on("BATCH_CANCELLED",H),j(()=>{t.off("BATCH_START",R),t.off("BATCH_PROGRESS",T),t.off("BATCH_FINISH",g),t.off("BATCH_ERROR",S),t.off("BATCH_CANCELLED",H)})}),{abortBatch:i(t=>{u.abortBatch(t)},"abortBatch"),completedCount:F,error:L,errorCount:U,isUploading:P,items:N,progress:O,reset:i(()=>{u.clear(),c(0),l(!1),h(void 0),C([]),p(0),f(0),A(void 0)},"reset"),uploadBatch:i(t=>t.length===0?[]:u.uploadBatch(t),"uploadBatch")}},"createBatchUpload");export{J as createBatchUpload};