@visulima/storage-client 1.0.0-alpha.4 → 1.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## @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)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **storage-client:** prevent state updates after component unmount in useTusUpload ([e40716e](https://github.com/visulima/visulima/commit/e40716e3389c63c609b9f0464e1fad6959d69e20))
6
+
7
+ ### Miscellaneous Chores
8
+
9
+ * **storage:** update dependencies ([f591768](https://github.com/visulima/visulima/commit/f591768de337c1b201191e4b78dd7e3fb79ca42b))
10
+ * update lock file maintenance ([d83e716](https://github.com/visulima/visulima/commit/d83e71697b75d24704185b66bb521a934d2db02d))
11
+
12
+ ## @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)
13
+
14
+ ### Bug Fixes
15
+
16
+ * added removed Svelte ([d78857a](https://github.com/visulima/visulima/commit/d78857a4b62020a38db38db568ebe54fc9bf7b05))
17
+
18
+ ### Miscellaneous Chores
19
+
20
+ * **storage-client:** update dependencies ([733b7b3](https://github.com/visulima/visulima/commit/733b7b3f929114e769436633ceb9b4923a289257))
21
+
1
22
  ## @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)
2
23
 
3
24
  ### Bug Fixes
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  </a>
8
8
 
9
- <h3 align="center">The upload client library. Simple and easy file uploads for React | Vue | Solid | Svelte</h3>
9
+ <h3 align="center">The upload client library. Simple and easy file uploads for React | Vue | Solid | Svelte.</h3>
10
10
 
11
11
  <!-- END_PACKAGE_OG_IMAGE_PLACEHOLDER -->
12
12
 
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-CoJpvX9z.js";import{createTusAdapter as n}from"./packem_shared/createTusAdapter-DM31lujI.js";import{createUploader as y}from"./packem_shared/createUploader-B_IjjBxw.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};
@@ -0,0 +1 @@
1
+ var _=Object.defineProperty;var T=(i,u)=>_(i,"name",{value:u,configurable:!0});import{useState as c,useMemo as D,useRef as y,useEffect as U,useCallback as f}from"react";import{createTusAdapter as G}from"./createTusAdapter-DM31lujI.js";var H=Object.defineProperty,K=T((i,u)=>H(i,"name",{value:u,configurable:!0}),"I");const W=K(i=>{const{chunkSize:u,endpoint:R,maxRetries:w,metadata:b,onError:m,onPause:S,onProgress:p,onResume:E,onStart:P,onSuccess:g,retry:k}=i,[x,d]=c(0),[z,o]=c(!1),[F,a]=c(!1),[j,l]=c(void 0),[A,I]=c(void 0),[C,v]=c(0),r=D(()=>G({chunkSize:u,endpoint:R,maxRetries:w,metadata:b,retry:k}),[u,R,w,b,k]),t=y({onError:m,onPause:S,onProgress:p,onResume:E,onStart:P,onSuccess:g}),n=y(void 0),O=y(!0);U(()=>{t.current={onError:m,onPause:S,onProgress:p,onResume:E,onStart:P,onSuccess:g}},[m,p,S,E,P,g]),U(()=>(O.current=!0,r.setOnStart(()=>{o(!0),a(!1),d(0),l(void 0),v(0),t.current.onStart?.()}),r.setOnProgress((e,s)=>{d(e),v(s),t.current.onProgress?.(e)}),r.setOnFinish(e=>{d(100),I(e),o(!1),a(!1),t.current.onSuccess?.(e)}),r.setOnError(e=>{l(e),o(!1),t.current.onError?.(e)}),n.current=setInterval(()=>{O.current&&n.current&&(v(r.getOffset()),a(r.isPaused()))},100),()=>{O.current=!1,n.current&&(clearInterval(n.current),n.current=void 0),r.setOnStart(void 0),r.setOnProgress(void 0),r.setOnFinish(void 0),r.setOnError(void 0)}),[r]);const M=f(async e=>{try{return await r.upload(e)}catch(s){const h=s instanceof Error?s:new Error(String(s));throw l(h),t.current.onError?.(h),h}},[r]),q=f(()=>{r.pause(),a(!0),t.current.onPause?.()},[r]),B=f(async()=>{a(!1),o(!0),t.current.onResume?.();try{await r.resume()}catch(e){const s=e instanceof Error?e:new Error(String(e));throw l(s),o(!1),t.current.onError?.(s),s}},[r]),J=f(()=>{n.current&&(clearInterval(n.current),n.current=void 0),r.abort(),o(!1),a(!1)},[r]),N=f(()=>{r.clear(),d(0),o(!1),a(!1),l(void 0),I(void 0),v(0)},[r]);return{abort:J,error:j,isPaused:F,isUploading:z,offset:C,pause:q,progress:x,reset:N,result:A,resume:B,upload:M}},"useTusUpload");export{W as useTusUpload};
@@ -1 +1 @@
1
- var K=Object.defineProperty;var x=(m,a)=>K(m,"name",{value:a,configurable:!0});import{useMemo as k,useCallback as R}from"react";import{useChunkedRestUpload as L}from"./useChunkedRestUpload-cKHvYQN3.js";import{useMultipartUpload as _}from"./useMultipartUpload-B9Vi7f5z.js";import{useTusUpload as q}from"./useTusUpload-CDRjQl0e.js";var G=Object.defineProperty,i=x((m,a)=>G(m,"name",{value:a,configurable:!0}),"s");const Q=10*1024*1024,$=i(m=>{const{chunkSize:a,endpointChunkedRest:s,endpointMultipart:d,endpointTus:n,maxRetries:v,metadata:p,method:E,onError:l,onPause:P,onProgress:f,onResume:U,onStart:c,onSuccess:g,retry:S,tusThreshold:w=Q}=m,h=k(()=>{if(E!==void 0)return E;const u=[s,d,n].filter(Boolean);if(u.length===1)return s?"chunked-rest":n?"tus":"multipart";if(u.length>1)return"auto";throw new Error("At least one endpoint must be provided: endpointChunkedRest, endpointMultipart, or endpointTus")},[E,s,d,n]),b=k(()=>{if(s)return{chunkSize:a,endpoint:s,maxRetries:v,metadata:p,onError:l,onPause:P,onProgress:f,onResume:U,onStart:c,onSuccess:g,retry:S}},[s,a,p,c,g,l,f,P,U,S,v]),T=k(()=>{if(d)return{endpoint:d,metadata:p,onError:l,onProgress:f,onStart:c,onSuccess:g}},[d,p,c,g,l,f]),y=k(()=>{if(n)return{chunkSize:a,endpoint:n,maxRetries:v,metadata:p,onError:l,onPause:P,onProgress:f,onResume:U,onStart:c,onSuccess:g,retry:S}},[n,a,p,c,g,l,f,P,U,S,v]),e=b?L(b):void 0,o=T?_(T):void 0,r=y?q(y):void 0,C=R(u=>{if(h!=="auto")return h;if(u.size>w){if(n)return"tus";if(s)return"chunked-rest"}if(s)return"chunked-rest";if(d)return"multipart";throw new Error("No available endpoint for upload")},[h,w,s,d,n]),z=R(async u=>{const M=C(u);if(M==="tus"){if(!r)throw new Error("TUS endpoint not configured");return r.upload(u)}if(M==="chunked-rest"){if(!e)throw new Error("Chunked REST endpoint not configured");return e.upload(u)}if(!o)throw new Error("Multipart endpoint not configured");return o.upload(u)},[C,r,e,o]),I=R(()=>{r?.abort(),e?.abort(),o?.reset()},[r,e,o]),O=R(()=>{r?.reset(),e?.reset(),o?.reset()},[r,e,o]),t=k(()=>h!=="auto"?h:r&&(r.isUploading||r.result)?"tus":e&&(e.isUploading||e.result)?"chunked-rest":o&&(o.isUploading||o.result)?"multipart":s?"chunked-rest":n?"tus":"multipart",[h,r,e,o,s,d,n]),A=i(()=>t==="tus"?r?.error??void 0:t==="chunked-rest"?e?.error??void 0:o?.error??void 0,"getError"),B=i(()=>{if(t==="tus")return r?.isPaused;if(t==="chunked-rest")return e?.isPaused},"getIsPaused"),N=i(()=>t==="tus"?r?.isUploading??!1:t==="chunked-rest"?e?.isUploading??!1:o?.isUploading??!1,"getIsUploading"),j=i(()=>{if(t==="tus")return r?.offset;if(t==="chunked-rest")return e?.offset},"getOffset"),D=i(()=>{if(t==="tus")return r?.pause;if(t==="chunked-rest")return e?.pause},"getPause"),F=i(()=>t==="tus"?r?.progress??0:t==="chunked-rest"?e?.progress??0:o?.progress??0,"getProgress"),H=i(()=>t==="tus"?r?.result??void 0:t==="chunked-rest"?e?.result??void 0:o?.result??void 0,"getResult"),J=i(()=>{if(t==="tus")return r?.resume;if(t==="chunked-rest")return e?.resume},"getResume");return{abort:I,currentMethod:t,error:A(),isPaused:B(),isUploading:N(),offset:j(),pause:D(),progress:F(),reset:O,result:H(),resume:J(),upload:z}},"useUpload");export{$ as useUpload};
1
+ var K=Object.defineProperty;var x=(m,a)=>K(m,"name",{value:a,configurable:!0});import{useMemo as k,useCallback as R}from"react";import{useChunkedRestUpload as L}from"./useChunkedRestUpload-cKHvYQN3.js";import{useMultipartUpload as _}from"./useMultipartUpload-B9Vi7f5z.js";import{useTusUpload as q}from"./useTusUpload-DQa9PgkZ.js";var G=Object.defineProperty,i=x((m,a)=>G(m,"name",{value:a,configurable:!0}),"s");const Q=10*1024*1024,$=i(m=>{const{chunkSize:a,endpointChunkedRest:s,endpointMultipart:d,endpointTus:n,maxRetries:v,metadata:p,method:E,onError:l,onPause:P,onProgress:f,onResume:U,onStart:c,onSuccess:g,retry:S,tusThreshold:w=Q}=m,h=k(()=>{if(E!==void 0)return E;const u=[s,d,n].filter(Boolean);if(u.length===1)return s?"chunked-rest":n?"tus":"multipart";if(u.length>1)return"auto";throw new Error("At least one endpoint must be provided: endpointChunkedRest, endpointMultipart, or endpointTus")},[E,s,d,n]),b=k(()=>{if(s)return{chunkSize:a,endpoint:s,maxRetries:v,metadata:p,onError:l,onPause:P,onProgress:f,onResume:U,onStart:c,onSuccess:g,retry:S}},[s,a,p,c,g,l,f,P,U,S,v]),T=k(()=>{if(d)return{endpoint:d,metadata:p,onError:l,onProgress:f,onStart:c,onSuccess:g}},[d,p,c,g,l,f]),y=k(()=>{if(n)return{chunkSize:a,endpoint:n,maxRetries:v,metadata:p,onError:l,onPause:P,onProgress:f,onResume:U,onStart:c,onSuccess:g,retry:S}},[n,a,p,c,g,l,f,P,U,S,v]),e=b?L(b):void 0,o=T?_(T):void 0,r=y?q(y):void 0,C=R(u=>{if(h!=="auto")return h;if(u.size>w){if(n)return"tus";if(s)return"chunked-rest"}if(s)return"chunked-rest";if(d)return"multipart";throw new Error("No available endpoint for upload")},[h,w,s,d,n]),z=R(async u=>{const M=C(u);if(M==="tus"){if(!r)throw new Error("TUS endpoint not configured");return r.upload(u)}if(M==="chunked-rest"){if(!e)throw new Error("Chunked REST endpoint not configured");return e.upload(u)}if(!o)throw new Error("Multipart endpoint not configured");return o.upload(u)},[C,r,e,o]),I=R(()=>{r?.abort(),e?.abort(),o?.reset()},[r,e,o]),O=R(()=>{r?.reset(),e?.reset(),o?.reset()},[r,e,o]),t=k(()=>h!=="auto"?h:r&&(r.isUploading||r.result)?"tus":e&&(e.isUploading||e.result)?"chunked-rest":o&&(o.isUploading||o.result)?"multipart":s?"chunked-rest":n?"tus":"multipart",[h,r,e,o,s,d,n]),A=i(()=>t==="tus"?r?.error??void 0:t==="chunked-rest"?e?.error??void 0:o?.error??void 0,"getError"),B=i(()=>{if(t==="tus")return r?.isPaused;if(t==="chunked-rest")return e?.isPaused},"getIsPaused"),N=i(()=>t==="tus"?r?.isUploading??!1:t==="chunked-rest"?e?.isUploading??!1:o?.isUploading??!1,"getIsUploading"),j=i(()=>{if(t==="tus")return r?.offset;if(t==="chunked-rest")return e?.offset},"getOffset"),D=i(()=>{if(t==="tus")return r?.pause;if(t==="chunked-rest")return e?.pause},"getPause"),F=i(()=>t==="tus"?r?.progress??0:t==="chunked-rest"?e?.progress??0:o?.progress??0,"getProgress"),H=i(()=>t==="tus"?r?.result??void 0:t==="chunked-rest"?e?.result??void 0:o?.result??void 0,"getResult"),J=i(()=>{if(t==="tus")return r?.resume;if(t==="chunked-rest")return e?.resume},"getResume");return{abort:I,currentMethod:t,error:A(),isPaused:B(),isUploading:N(),offset:j(),pause:D(),progress:F(),reset:O,result:H(),resume:J(),upload:z}},"useUpload");export{$ as useUpload};
@@ -1 +1 @@
1
- import{useAbortAll as o}from"../packem_shared/useAbortAll-DrHBz3kQ.js";import{useAbortBatch as s}from"../packem_shared/useAbortBatch-gVI48Gqa.js";import{useAbortItem as u}from"../packem_shared/useAbortItem-Blw0eI13.js";import{useAllAbortListener as f}from"../packem_shared/useAllAbortListener-DiliYPra.js";import{useBatchCancelledListener as a}from"../packem_shared/useBatchCancelledListener-CD0CULd_.js";import{useBatchDeleteFiles as i}from"../packem_shared/useBatchDeleteFiles-KthW4bon.js";import{useBatchErrorListener as h}from"../packem_shared/useBatchErrorListener-D-M1xGbQ.js";import{useBatchFinalizeListener as F}from"../packem_shared/useBatchFinalizeListener-BjnW3Lst.js";import{useBatchFinishListener as B}from"../packem_shared/useBatchFinishListener-DedP4Rm_.js";import{useBatchProgressListener as A}from"../packem_shared/useBatchProgressListener-CBAjGzmu.js";import{useBatchRetry as b}from"../packem_shared/useBatchRetry-C53msBuL.js";import{useBatchStartListener as R}from"../packem_shared/useBatchStartListener-BAOxxo1Y.js";import{useBatchUpload as C}from"../packem_shared/useBatchUpload-DLQNW410.js";import{useChunkedRestUpload as M}from"../packem_shared/useChunkedRestUpload-cKHvYQN3.js";import{useDeleteFile as k}from"../packem_shared/useDeleteFile-CND-6aNW.js";import{useFileInput as I}from"../packem_shared/useFileInput-hIbzJ_JN.js";import{useGetFile as z}from"../packem_shared/useGetFile-DvgluPgA.js";import{useGetFileList as H}from"../packem_shared/useGetFileList-D0tKDYAc.js";import{useGetFileMeta as j}from"../packem_shared/useGetFileMeta-Ekre98Sg.js";import{useHeadFile as v}from"../packem_shared/useHeadFile-CCu61b-B.js";import{useMultipartUpload as J}from"../packem_shared/useMultipartUpload-B9Vi7f5z.js";import{usePasteUpload as N}from"../packem_shared/usePasteUpload-_YqkCkrL.js";import{usePatchChunk as Q}from"../packem_shared/usePatchChunk-DoKsCbBH.js";import{usePutFile as W}from"../packem_shared/usePutFile-B6cFjClD.js";import{useRetry as Y}from"../packem_shared/useRetry-mkTUERYR.js";import{useRetryListener as _}from"../packem_shared/useRetryListener-B45dL00Q.js";import{useTransformFile as ee}from"../packem_shared/useTransformFile-sIkJLAwo.js";import{useTransformMetadata as oe}from"../packem_shared/useTransformMetadata-DK1561-K.js";import{useTusUpload as se}from"../packem_shared/useTusUpload-CDRjQl0e.js";import{useUpload as ue}from"../packem_shared/useUpload-CjLWLpyn.js";export{o as useAbortAll,s as useAbortBatch,u as useAbortItem,f as useAllAbortListener,a as useBatchCancelledListener,i as useBatchDeleteFiles,h as useBatchErrorListener,F as useBatchFinalizeListener,B as useBatchFinishListener,A as useBatchProgressListener,b as useBatchRetry,R as useBatchStartListener,C as useBatchUpload,M as useChunkedRestUpload,k as useDeleteFile,I as useFileInput,z as useGetFile,H as useGetFileList,j as useGetFileMeta,v as useHeadFile,J as useMultipartUpload,N as usePasteUpload,Q as usePatchChunk,W as usePutFile,Y as useRetry,_ as useRetryListener,ee as useTransformFile,oe as useTransformMetadata,se as useTusUpload,ue as useUpload};
1
+ import{useAbortAll as o}from"../packem_shared/useAbortAll-DrHBz3kQ.js";import{useAbortBatch as s}from"../packem_shared/useAbortBatch-gVI48Gqa.js";import{useAbortItem as u}from"../packem_shared/useAbortItem-Blw0eI13.js";import{useAllAbortListener as f}from"../packem_shared/useAllAbortListener-DiliYPra.js";import{useBatchCancelledListener as a}from"../packem_shared/useBatchCancelledListener-CD0CULd_.js";import{useBatchDeleteFiles as i}from"../packem_shared/useBatchDeleteFiles-KthW4bon.js";import{useBatchErrorListener as h}from"../packem_shared/useBatchErrorListener-D-M1xGbQ.js";import{useBatchFinalizeListener as F}from"../packem_shared/useBatchFinalizeListener-BjnW3Lst.js";import{useBatchFinishListener as B}from"../packem_shared/useBatchFinishListener-DedP4Rm_.js";import{useBatchProgressListener as A}from"../packem_shared/useBatchProgressListener-CBAjGzmu.js";import{useBatchRetry as b}from"../packem_shared/useBatchRetry-C53msBuL.js";import{useBatchStartListener as R}from"../packem_shared/useBatchStartListener-BAOxxo1Y.js";import{useBatchUpload as C}from"../packem_shared/useBatchUpload-DLQNW410.js";import{useChunkedRestUpload as M}from"../packem_shared/useChunkedRestUpload-cKHvYQN3.js";import{useDeleteFile as k}from"../packem_shared/useDeleteFile-CND-6aNW.js";import{useFileInput as I}from"../packem_shared/useFileInput-hIbzJ_JN.js";import{useGetFile as z}from"../packem_shared/useGetFile-DvgluPgA.js";import{useGetFileList as H}from"../packem_shared/useGetFileList-D0tKDYAc.js";import{useGetFileMeta as j}from"../packem_shared/useGetFileMeta-Ekre98Sg.js";import{useHeadFile as v}from"../packem_shared/useHeadFile-CCu61b-B.js";import{useMultipartUpload as J}from"../packem_shared/useMultipartUpload-B9Vi7f5z.js";import{usePasteUpload as N}from"../packem_shared/usePasteUpload-_YqkCkrL.js";import{usePatchChunk as Q}from"../packem_shared/usePatchChunk-DoKsCbBH.js";import{usePutFile as W}from"../packem_shared/usePutFile-B6cFjClD.js";import{useRetry as Y}from"../packem_shared/useRetry-mkTUERYR.js";import{useRetryListener as _}from"../packem_shared/useRetryListener-B45dL00Q.js";import{useTransformFile as ee}from"../packem_shared/useTransformFile-sIkJLAwo.js";import{useTransformMetadata as oe}from"../packem_shared/useTransformMetadata-DK1561-K.js";import{useTusUpload as se}from"../packem_shared/useTusUpload-DQa9PgkZ.js";import{useUpload as ue}from"../packem_shared/useUpload-BY_sQuJj.js";export{o as useAbortAll,s as useAbortBatch,u as useAbortItem,f as useAllAbortListener,a as useBatchCancelledListener,i as useBatchDeleteFiles,h as useBatchErrorListener,F as useBatchFinalizeListener,B as useBatchFinishListener,A as useBatchProgressListener,b as useBatchRetry,R as useBatchStartListener,C as useBatchUpload,M as useChunkedRestUpload,k as useDeleteFile,I as useFileInput,z as useGetFile,H as useGetFileList,j as useGetFileMeta,v as useHeadFile,J as useMultipartUpload,N as usePasteUpload,Q as usePatchChunk,W as usePutFile,Y as useRetry,_ as useRetryListener,ee as useTransformFile,oe as useTransformMetadata,se as useTusUpload,ue as useUpload};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@visulima/storage-client",
3
- "version": "1.0.0-alpha.4",
4
- "description": "The upload client library. Simple and easy file uploads for React | Vue | Solid | .",
3
+ "version": "1.0.0-alpha.6",
4
+ "description": "The upload client library. Simple and easy file uploads for React | Vue | Solid | Svelte.",
5
5
  "keywords": [
6
6
  "visulima",
7
7
  "storage-client",
@@ -1 +0,0 @@
1
- var _=Object.defineProperty;var k=(i,u)=>_(i,"name",{value:u,configurable:!0});import{useState as c,useMemo as B,useRef as x,useEffect as T,useCallback as f}from"react";import{createTusAdapter as D}from"./createTusAdapter-DM31lujI.js";var G=Object.defineProperty,H=k((i,u)=>G(i,"name",{value:u,configurable:!0}),"T");const V=H(i=>{const{chunkSize:u,endpoint:h,maxRetries:y,metadata:R,onError:m,onPause:S,onProgress:p,onResume:E,onStart:P,onSuccess:g,retry:b}=i,[U,d]=c(0),[z,n]=c(!1),[F,a]=c(!1),[I,l]=c(void 0),[j,w]=c(void 0),[A,v]=c(0),r=B(()=>D({chunkSize:u,endpoint:h,maxRetries:y,metadata:R,retry:b}),[u,h,y,R,b]),t=x({onError:m,onPause:S,onProgress:p,onResume:E,onStart:P,onSuccess:g}),o=x(void 0);T(()=>{t.current={onError:m,onPause:S,onProgress:p,onResume:E,onStart:P,onSuccess:g}},[m,p,S,E,P,g]),T(()=>(r.setOnStart(()=>{n(!0),a(!1),d(0),l(void 0),v(0),t.current.onStart?.()}),r.setOnProgress((e,s)=>{d(e),v(s),t.current.onProgress?.(e)}),r.setOnFinish(e=>{d(100),w(e),n(!1),a(!1),t.current.onSuccess?.(e)}),r.setOnError(e=>{l(e),n(!1),t.current.onError?.(e)}),o.current=setInterval(()=>{o.current&&(v(r.getOffset()),a(r.isPaused()))},100),()=>{o.current&&(clearInterval(o.current),o.current=void 0),r.setOnStart(void 0),r.setOnProgress(void 0),r.setOnFinish(void 0),r.setOnError(void 0)}),[r]);const C=f(async e=>{try{return await r.upload(e)}catch(s){const O=s instanceof Error?s:new Error(String(s));throw l(O),t.current.onError?.(O),O}},[r]),M=f(()=>{r.pause(),a(!0),t.current.onPause?.()},[r]),q=f(async()=>{a(!1),n(!0),t.current.onResume?.();try{await r.resume()}catch(e){const s=e instanceof Error?e:new Error(String(e));throw l(s),n(!1),t.current.onError?.(s),s}},[r]),J=f(()=>{o.current&&(clearInterval(o.current),o.current=void 0),r.abort(),n(!1),a(!1)},[r]),N=f(()=>{r.clear(),d(0),n(!1),a(!1),l(void 0),w(void 0),v(0)},[r]);return{abort:J,error:I,isPaused:F,isUploading:z,offset:A,pause:M,progress:U,reset:N,result:j,resume:q,upload:C}},"useTusUpload");export{V as useTusUpload};