@uploadista/vue 0.0.20-beta.9 → 0.1.0-beta.5

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 (77) hide show
  1. package/dist/components/index.d.mts +3 -3
  2. package/dist/components/index.mjs +1 -1
  3. package/dist/{components-CskPs6sR.css → components-B_L33hsM.css} +33 -33
  4. package/dist/{components-CskPs6sR.css.map → components-B_L33hsM.css.map} +1 -1
  5. package/dist/components-MZ9ETx9c.mjs +2 -0
  6. package/dist/components-MZ9ETx9c.mjs.map +1 -0
  7. package/dist/composables/index.d.mts +1 -1
  8. package/dist/composables/index.mjs +1 -1
  9. package/dist/composables-Dny_9Zrg.mjs +2 -0
  10. package/dist/composables-Dny_9Zrg.mjs.map +1 -0
  11. package/dist/index-6Scxoy1b.d.mts +1289 -0
  12. package/dist/index-6Scxoy1b.d.mts.map +1 -0
  13. package/dist/{index-B2fUTjNP.d.mts → index-BpCRFLJ5.d.mts} +4 -4
  14. package/dist/index-BpCRFLJ5.d.mts.map +1 -0
  15. package/dist/{index-DiRR_Ua6.d.mts → index-RY4FPqAk.d.mts} +431 -432
  16. package/dist/index-RY4FPqAk.d.mts.map +1 -0
  17. package/dist/index.d.mts +5 -5
  18. package/dist/index.mjs +1 -1
  19. package/dist/providers/index.d.mts +1 -1
  20. package/dist/providers/index.mjs +1 -1
  21. package/dist/{providers-fqmOwF71.mjs → providers-CjhEBaQV.mjs} +2 -2
  22. package/dist/providers-CjhEBaQV.mjs.map +1 -0
  23. package/dist/useUploadistaClient-WVuo8jYH.mjs.map +1 -1
  24. package/dist/utils/index.d.mts +62 -2
  25. package/dist/utils/index.d.mts.map +1 -0
  26. package/package.json +11 -9
  27. package/src/__tests__/setup.ts +154 -0
  28. package/src/components/FlowUploadList.vue +25 -24
  29. package/src/components/UploadList.vue +3 -6
  30. package/src/components/UploadZone.vue +2 -5
  31. package/src/components/flow/Flow.vue +16 -4
  32. package/src/components/flow/FlowDropZone.vue +4 -2
  33. package/src/components/flow/FlowInput.vue +14 -8
  34. package/src/components/flow/FlowInputDropZone.vue +4 -2
  35. package/src/components/flow/FlowInputPreview.vue +3 -1
  36. package/src/components/flow/FlowProgress.vue +1 -1
  37. package/src/components/flow/FlowStatus.vue +1 -1
  38. package/src/components/flow/useFlowContext.ts +7 -5
  39. package/src/components/index.ts +4 -2
  40. package/src/components/upload/Upload.vue +146 -0
  41. package/src/components/upload/UploadCancel.vue +22 -0
  42. package/src/components/upload/UploadClearCompleted.vue +24 -0
  43. package/src/components/upload/UploadDropZone.vue +96 -0
  44. package/src/components/upload/UploadError.vue +42 -0
  45. package/src/components/upload/UploadItem.vue +54 -0
  46. package/src/components/upload/UploadItems.vue +33 -0
  47. package/src/components/upload/UploadProgress.vue +35 -0
  48. package/src/components/upload/UploadReset.vue +20 -0
  49. package/src/components/upload/UploadRetry.vue +22 -0
  50. package/src/components/upload/UploadStartAll.vue +30 -0
  51. package/src/components/upload/UploadStatus.vue +65 -0
  52. package/src/components/upload/index.ts +98 -0
  53. package/src/components/upload/useUploadContext.ts +67 -0
  54. package/src/composables/eventUtils.test.ts +267 -0
  55. package/src/composables/eventUtils.ts +5 -4
  56. package/src/composables/index.ts +1 -1
  57. package/src/composables/useDragDrop.test.ts +304 -0
  58. package/src/composables/useFlow.ts +6 -2
  59. package/src/composables/useFlowManagerContext.ts +5 -1
  60. package/src/composables/useUploadEvents.ts +1 -4
  61. package/src/composables/useUploadistaClient.test.ts +152 -0
  62. package/src/index.ts +65 -4
  63. package/src/providers/FlowManagerProvider.vue +5 -2
  64. package/src/utils/index.test.ts +396 -0
  65. package/src/utils/is-browser-file.test.ts +45 -0
  66. package/vitest.config.ts +25 -0
  67. package/dist/components-BxBz_7tS.mjs +0 -2
  68. package/dist/components-BxBz_7tS.mjs.map +0 -1
  69. package/dist/composables-BZ2c_WgI.mjs +0 -2
  70. package/dist/composables-BZ2c_WgI.mjs.map +0 -1
  71. package/dist/index-B2fUTjNP.d.mts.map +0 -1
  72. package/dist/index-BLNNvTVx.d.mts +0 -62
  73. package/dist/index-BLNNvTVx.d.mts.map +0 -1
  74. package/dist/index-D3PNaPGh.d.mts +0 -787
  75. package/dist/index-D3PNaPGh.d.mts.map +0 -1
  76. package/dist/index-DiRR_Ua6.d.mts.map +0 -1
  77. package/dist/providers-fqmOwF71.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-RY4FPqAk.d.mts","names":[],"sources":["../src/composables/useFlow.ts","../src/composables/useDragDrop.ts","../src/composables/eventUtils.ts","../src/composables/useFlowEvents.ts","../src/composables/useUploadEvents.ts","../src/composables/useUploadistaEvents.ts","../src/composables/plugin.ts","../src/composables/useMultiFlowUpload.ts","../src/composables/useUpload.ts","../src/composables/useMultiUpload.ts","../src/composables/useUploadistaClient.ts","../src/composables/useUploadMetrics.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as FlowContextValue, C as useFlowInputContext, D as FlowDropZoneSlotProps, E as FlowDropZoneProps, F as _default$14, M as _default, N as _default$16, O as _default$2, P as _default$15, S as useFlowContext, T as _default$3, _ as FlowInputSlotProps, a as FlowProgressSlotProps, b as FLOW_INPUT_CONTEXT_KEY, c as _default$7, d as FlowInputPreviewSlotProps, f as _default$6, g as FlowInputProps, h as _default$5, i as _default$11, j as FlowProps, k as _default$1, l as FlowInputsSlotProps, m as FlowInputDropZoneSlotProps, n as FlowStatusSlotProps, o as _default$10, p as FlowInputDropZoneProps, r as _default$12, s as FlowInputUrlFieldProps, t as _default$13, u as _default$8, v as _default$4, w as FlowErrorSlotProps, x as FlowInputContextValue, y as FLOW_CONTEXT_KEY } from "./index-D3PNaPGh.mjs";
2
- import { A as createUploadistaPlugin, B as useFlowEvents, C as useFlow, D as UPLOADISTA_CLIENT_KEY, E as useDragDrop, F as UploadValidationSuccessEventData, H as isFlowEvent, I as UploadValidationWarningEventData, L as UseUploadEventsOptions, M as UploadFileEventData, N as UploadProgressEventData, O as UPLOADISTA_EVENT_SUBSCRIBERS_KEY, P as UploadValidationFailedEventData, R as useUploadEvents, S as UseFlowReturn, T as DragDropState, U as isUploadEvent, V as useUploadistaEvents, _ as useMultiFlowUpload, a as useUploadistaClient, b as FlowUploadStatus, c as UploadItem, d as PerformanceInsights, f as UploadInput, g as useUpload, h as UploadStatus, i as UseUploadistaClientReturn, j as UploadFailedEventData, k as UploadistaPluginOptions, l as useMultiUpload, m as UploadState, n as UseUploadMetricsOptions, o as MultiUploadOptions, p as UploadSessionMetrics, r as useUploadMetrics, s as MultiUploadState, t as FileUploadMetrics, u as ChunkMetrics, v as FlowInputMetadata, w as DragDropOptions, x as InputExecutionState, y as FlowUploadState, z as UseFlowEventsOptions } from "./index-DiRR_Ua6.mjs";
3
- import { n as _default$9, t as _default$17 } from "./index-B2fUTjNP.mjs";
4
- import { a as formatSpeed, c as isAudioFile, d as isVideoFile, f as revokeFilePreview, i as formatFileSize, l as isDocumentFile, m as isBrowserFile, n as createFilePreview, o as generateUploadId, p as validateFileType, r as formatDuration, s as getFileExtension, t as calculateProgress, u as isImageFile } from "./index-BLNNvTVx.mjs";
5
- export { ChunkMetrics, DragDropOptions, DragDropState, FLOW_CONTEXT_KEY, FLOW_INPUT_CONTEXT_KEY, FileUploadMetrics, _default as Flow, _default$1 as FlowCancel, FlowContextValue, _default$2 as FlowDropZone, FlowDropZoneProps, FlowDropZoneSlotProps, _default$3 as FlowError, FlowErrorSlotProps, _default$4 as FlowInput, FlowInputContextValue, _default$5 as FlowInputDropZone, FlowInputDropZoneProps, FlowInputDropZoneSlotProps, FlowInputMetadata, _default$6 as FlowInputPreview, FlowInputPreviewSlotProps, FlowInputProps, FlowInputSlotProps, _default$7 as FlowInputUrlField, FlowInputUrlFieldProps, _default$8 as FlowInputs, FlowInputsSlotProps, _default$9 as FlowManagerProvider, _default$10 as FlowProgress, FlowProgressSlotProps, FlowProps, _default$11 as FlowReset, _default$12 as FlowStatus, FlowStatusSlotProps, _default$13 as FlowSubmit, _default$14 as FlowUploadList, FlowUploadState, FlowUploadStatus, InputExecutionState, MultiUploadOptions, MultiUploadState, PerformanceInsights, UPLOADISTA_CLIENT_KEY, UPLOADISTA_EVENT_SUBSCRIBERS_KEY, UploadFailedEventData, UploadFileEventData, UploadInput, UploadItem, _default$15 as UploadList, UploadProgressEventData, UploadSessionMetrics, UploadState, UploadStatus, UploadValidationFailedEventData, UploadValidationSuccessEventData, UploadValidationWarningEventData, _default$16 as UploadZone, UploadistaPluginOptions, _default$17 as UploadistaProvider, UseFlowEventsOptions, UseFlowReturn, UseUploadEventsOptions, UseUploadMetricsOptions, UseUploadistaClientReturn, calculateProgress, createFilePreview, createUploadistaPlugin, formatDuration, formatFileSize, formatSpeed, generateUploadId, getFileExtension, isAudioFile, isBrowserFile, isDocumentFile, isFlowEvent, isImageFile, isUploadEvent, isVideoFile, revokeFilePreview, useDragDrop, useFlow, useFlowContext, useFlowEvents, useFlowInputContext, useMultiFlowUpload, useMultiUpload, useUpload, useUploadEvents, useUploadMetrics, useUploadistaClient, useUploadistaEvents, validateFileType };
1
+ import { $ as FlowErrorSlotProps, A as _default$13, B as FlowInputPreviewSlotProps, C as _default$17, D as _default$15, E as UploadProps, F as _default$10, G as FlowInputProps, H as FlowInputDropZoneProps, I as FlowInputUrlFieldProps, J as FLOW_CONTEXT_KEY, K as FlowInputSlotProps, L as _default$7, M as _default$12, N as _default$11, O as _default$28, P as FlowProgressSlotProps, Q as useFlowInputContext, R as FlowInputsSlotProps, S as _default$18, T as UploadContextValue, U as FlowInputDropZoneSlotProps, V as _default$6, W as _default$5, X as FlowInputContextValue, Y as FLOW_INPUT_CONTEXT_KEY, Z as useFlowContext, _ as useUploadItemContext, a as _default$24, at as FlowContextValue, b as UploadDropZoneProps, c as UploadItemsSlotProps, ct as _default$14, d as UploadItemSlotProps, et as _default$3, f as _default$20, g as useUploadContext, h as UploadItemContextValue, i as _default$25, it as _default$1, j as FlowStatusSlotProps, k as _default$22, l as _default$21, m as UPLOAD_ITEM_CONTEXT_KEY, n as _default$27, nt as FlowDropZoneSlotProps, o as UploadProgressSlotProps, ot as FlowProps, p as UPLOAD_CONTEXT_KEY, q as _default$4, r as _default$26, rt as _default$2, s as _default$23, st as _default, t as UploadStatusSlotProps, tt as FlowDropZoneProps, u as UploadItemProps, v as UploadErrorSlotProps, w as _default$16, x as UploadDropZoneSlotProps, y as _default$19, z as _default$8 } from "./index-6Scxoy1b.mjs";
2
+ import { A as UseFlowEventsOptions, B as InputExecutionState, C as UploadFileEventData, D as UploadValidationWarningEventData, E as UploadValidationSuccessEventData, F as DragDropState, H as useFlow, I as useDragDrop, L as FlowInputMetadata, M as isFlowEvent, N as isUploadEvent, O as UseUploadEventsOptions, P as DragDropOptions, R as FlowUploadState, S as UploadFailedEventData, T as UploadValidationFailedEventData, V as UseFlowReturn, _ as useMultiFlowUpload, a as useUploadistaClient, b as createUploadistaPlugin, c as UploadItem, d as PerformanceInsights, f as UploadInput, g as useUpload, h as UploadStatus, i as UseUploadistaClientReturn, j as useFlowEvents, k as useUploadEvents, l as useMultiUpload, m as UploadState, n as UseUploadMetricsOptions, o as MultiUploadOptions, p as UploadSessionMetrics, r as useUploadMetrics, s as MultiUploadState, t as FileUploadMetrics, u as ChunkMetrics, v as UPLOADISTA_CLIENT_KEY, w as UploadProgressEventData, x as useUploadistaEvents, y as UploadistaPluginOptions, z as FlowUploadStatus } from "./index-RY4FPqAk.mjs";
3
+ import { n as _default$9, t as _default$29 } from "./index-BpCRFLJ5.mjs";
4
+ import { calculateProgress, createFilePreview, formatDuration, formatFileSize, formatSpeed, generateUploadId, getFileExtension, isAudioFile, isBrowserFile, isDocumentFile, isImageFile, isVideoFile, revokeFilePreview, validateFileType } from "./utils/index.mjs";
5
+ export { type ChunkMetrics, type DragDropOptions, type DragDropState, FLOW_CONTEXT_KEY, FLOW_INPUT_CONTEXT_KEY, type FileUploadMetrics, _default as Flow, _default$1 as FlowCancel, FlowContextValue, _default$2 as FlowDropZone, FlowDropZoneProps, FlowDropZoneSlotProps, _default$3 as FlowError, FlowErrorSlotProps, _default$4 as FlowInput, FlowInputContextValue, _default$5 as FlowInputDropZone, FlowInputDropZoneProps, FlowInputDropZoneSlotProps, type FlowInputMetadata, _default$6 as FlowInputPreview, FlowInputPreviewSlotProps, FlowInputProps, FlowInputSlotProps, _default$7 as FlowInputUrlField, FlowInputUrlFieldProps, _default$8 as FlowInputs, FlowInputsSlotProps, _default$9 as FlowManagerProvider, _default$10 as FlowProgress, FlowProgressSlotProps, FlowProps, _default$11 as FlowReset, _default$12 as FlowStatus, FlowStatusSlotProps, _default$13 as FlowSubmit, _default$14 as FlowUploadList, type FlowUploadState, type FlowUploadStatus, type InputExecutionState, type UploadItem as MultiUploadItem, type MultiUploadOptions, type MultiUploadState, type PerformanceInsights, UPLOADISTA_CLIENT_KEY, UPLOAD_CONTEXT_KEY, UPLOAD_ITEM_CONTEXT_KEY, _default$15 as Upload, _default$16 as UploadCancel, _default$17 as UploadClearCompleted, UploadContextValue, _default$18 as UploadDropZone, UploadDropZoneProps, UploadDropZoneSlotProps, _default$19 as UploadError, UploadErrorSlotProps, type UploadFailedEventData, type UploadFileEventData, type UploadInput, _default$20 as UploadItem, UploadItemContextValue, UploadItemProps, UploadItemSlotProps, _default$21 as UploadItems, UploadItemsSlotProps, _default$22 as UploadList, _default$23 as UploadProgress, type UploadProgressEventData, UploadProgressSlotProps, UploadProps, _default$24 as UploadReset, _default$25 as UploadRetry, type UploadSessionMetrics, _default$26 as UploadStartAll, type UploadState, _default$27 as UploadStatus, UploadStatusSlotProps, type UploadStatus as UploadStatusType, type UploadValidationFailedEventData, type UploadValidationSuccessEventData, type UploadValidationWarningEventData, _default$28 as UploadZone, type UploadistaPluginOptions, _default$29 as UploadistaProvider, type UseFlowEventsOptions, type UseFlowReturn, type UseUploadEventsOptions, type UseUploadMetricsOptions, type UseUploadistaClientReturn, calculateProgress, createFilePreview, createUploadistaPlugin, formatDuration, formatFileSize, formatSpeed, generateUploadId, getFileExtension, isAudioFile, isBrowserFile, isDocumentFile, isFlowEvent, isImageFile, isUploadEvent, isVideoFile, revokeFilePreview, useDragDrop, useFlow, useFlowContext, useFlowEvents, useFlowInputContext, useMultiFlowUpload, useMultiUpload, useUpload, useUploadContext, useUploadEvents, useUploadItemContext, useUploadMetrics, useUploadistaClient, useUploadistaEvents, validateFileType };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,c as t,d as n,f as r,i,l as a,m as o,n as s,o as c,p as l,r as u,s as d,t as f,u as p}from"./utils-B_r6xppE.mjs";import{_ as m,a as h,b as g,c as _,d as v,f as y,g as b,h as x,i as S,l as C,m as w,n as T,o as E,p as D,r as O,s as k,t as A,u as j,v as M,y as N}from"./components-BxBz_7tS.mjs";import{a as P,c as F,d as I,i as L,l as R,n as z,o as B,r as V,s as H,t as U,u as W}from"./composables-BZ2c_WgI.mjs";import{i as G,n as K,r as q,t as J}from"./useUploadistaClient-WVuo8jYH.mjs";import{n as Y,t as X}from"./providers-fqmOwF71.mjs";export{D as FLOW_CONTEXT_KEY,w as FLOW_INPUT_CONTEXT_KEY,m as Flow,y as FlowCancel,v as FlowDropZone,j as FlowError,C as FlowInput,_ as FlowInputDropZone,k as FlowInputPreview,h as FlowInputUrlField,E as FlowInputs,Y as FlowManagerProvider,S as FlowProgress,O as FlowReset,T as FlowStatus,A as FlowSubmit,g as FlowUploadList,K as UPLOADISTA_CLIENT_KEY,q as UPLOADISTA_EVENT_SUBSCRIBERS_KEY,N as UploadList,M as UploadZone,X as UploadistaProvider,f as calculateProgress,s as createFilePreview,G as createUploadistaPlugin,u as formatDuration,i as formatFileSize,e as formatSpeed,c as generateUploadId,d as getFileExtension,t as isAudioFile,o as isBrowserFile,a as isDocumentFile,W as isFlowEvent,p as isImageFile,I as isUploadEvent,n as isVideoFile,r as revokeFilePreview,B as useDragDrop,P as useFlow,x as useFlowContext,F as useFlowEvents,b as useFlowInputContext,L as useMultiFlowUpload,V as useMultiUpload,z as useUpload,H as useUploadEvents,U as useUploadMetrics,J as useUploadistaClient,R as useUploadistaEvents,l as validateFileType};
1
+ import{a as e,c as t,d as n,f as r,i,l as a,m as o,n as s,o as c,p as l,r as u,s as d,t as f,u as p}from"./utils-B_r6xppE.mjs";import{A as m,C as h,D as g,E as _,F as v,I as y,M as b,N as x,O as S,P as C,S as w,T,_ as E,a as D,b as O,c as k,d as A,f as j,g as M,h as N,i as P,j as F,k as I,l as L,m as R,n as z,o as B,p as V,r as H,s as U,t as W,u as G,v as K,w as q,x as J,y as Y}from"./components-MZ9ETx9c.mjs";import{a as X,c as Z,d as Q,i as $,l as ee,n as te,o as ne,r as re,s as ie,t as ae,u as oe}from"./composables-Dny_9Zrg.mjs";import{i as se,n as ce,t as le}from"./useUploadistaClient-WVuo8jYH.mjs";import{n as ue,t as de}from"./providers-CjhEBaQV.mjs";export{F as FLOW_CONTEXT_KEY,b as FLOW_INPUT_CONTEXT_KEY,v as Flow,m as FlowCancel,I as FlowDropZone,S as FlowError,g as FlowInput,_ as FlowInputDropZone,T as FlowInputPreview,h as FlowInputUrlField,q as FlowInputs,ue as FlowManagerProvider,w as FlowProgress,J as FlowReset,O as FlowStatus,Y as FlowSubmit,y as FlowUploadList,ce as UPLOADISTA_CLIENT_KEY,V as UPLOAD_CONTEXT_KEY,R as UPLOAD_ITEM_CONTEXT_KEY,j as Upload,A as UploadCancel,G as UploadClearCompleted,L as UploadDropZone,k as UploadError,U as UploadItem,B as UploadItems,K as UploadList,D as UploadProgress,P as UploadReset,H as UploadRetry,z as UploadStartAll,W as UploadStatus,E as UploadZone,de as UploadistaProvider,f as calculateProgress,s as createFilePreview,se as createUploadistaPlugin,u as formatDuration,i as formatFileSize,e as formatSpeed,c as generateUploadId,d as getFileExtension,t as isAudioFile,o as isBrowserFile,a as isDocumentFile,Z as isFlowEvent,p as isImageFile,ee as isUploadEvent,n as isVideoFile,r as revokeFilePreview,oe as useDragDrop,Q as useFlow,x as useFlowContext,ie as useFlowEvents,C as useFlowInputContext,$ as useMultiFlowUpload,re as useMultiUpload,te as useUpload,N as useUploadContext,ne as useUploadEvents,M as useUploadItemContext,ae as useUploadMetrics,le as useUploadistaClient,X as useUploadistaEvents,l as validateFileType};
@@ -1,2 +1,2 @@
1
- import { n as _default, t as _default$1 } from "../index-B2fUTjNP.mjs";
1
+ import { n as _default, t as _default$1 } from "../index-BpCRFLJ5.mjs";
2
2
  export { _default as FlowManagerProvider, _default$1 as UploadistaProvider };
@@ -1 +1 @@
1
- import"../useUploadistaClient-WVuo8jYH.mjs";import{n as e,t}from"../providers-fqmOwF71.mjs";export{e as FlowManagerProvider,t as UploadistaProvider};
1
+ import"../useUploadistaClient-WVuo8jYH.mjs";import{n as e,t}from"../providers-CjhEBaQV.mjs";export{e as FlowManagerProvider,t as UploadistaProvider};
@@ -1,2 +1,2 @@
1
- import{n as e,r as t,t as n}from"./useUploadistaClient-WVuo8jYH.mjs";import{createBlock as r,defineComponent as i,onBeforeUnmount as a,onMounted as o,openBlock as s,provide as c,ref as l,renderSlot as u,withCtx as d}from"vue";import{EventType as f}from"@uploadista/core/flow";import{UploadEventType as p}from"@uploadista/core/types";import{createUploadistaClient as m}from"@uploadista/client-browser";import{FlowManager as h}from"@uploadista/client-core";var g=i({__name:`FlowManagerProvider`,setup(e){function t(e){let t=e;return t.eventType===f.FlowStart||t.eventType===f.FlowEnd||t.eventType===f.FlowError||t.eventType===f.NodeStart||t.eventType===f.NodeEnd||t.eventType===f.NodePause||t.eventType===f.NodeResume||t.eventType===f.NodeError}let{client:r,subscribeToEvents:i}=n(),s=new Map,l=null;return o(()=>{l=i(e=>{if(t(e)){for(let t of s.values())t.manager.handleFlowEvent(e);return}if(`type`in e&&e.type===p.UPLOAD_PROGRESS&&`data`in e){let t=e;for(let e of s.values())e.manager.handleUploadProgress(t.data.id,t.data.progress,t.data.total)}})}),a(()=>{l?.();for(let e of s.values())e.manager.cleanup();s.clear()}),c(`flowManagerContext`,{getManager:(e,t,n)=>{let i=s.get(e);if(i)return i.refCount++,i.manager;let a=new h(r.uploadWithFlow,t,n,r.multiInputFlowUpload);return s.set(e,{manager:a,refCount:1,flowId:e}),a},releaseManager:e=>{let t=s.get(e);t&&(t.refCount--,t.refCount<=0&&(t.manager.cleanup(),s.delete(e)))}}),(e,t)=>u(e.$slots,`default`)}}),_=i({__name:`UploadistaProvider`,props:{serverUrl:{},storageId:{default:`local`},uploadistaBasePath:{default:`uploadista`},chunkSize:{default:1024*1024},parallelUploads:{default:1},storeFingerprintForResuming:{type:Boolean,default:!0}},setup(n){let i=n,o=l(new Set),f=m({baseUrl:i.serverUrl,storageId:i.storageId,uploadistaBasePath:i.uploadistaBasePath,chunkSize:i.chunkSize,parallelUploads:i.parallelUploads,storeFingerprintForResuming:i.storeFingerprintForResuming,onEvent:e=>{o.value.forEach(t=>{try{t(e)}catch(e){console.error(`Error in event subscriber:`,e)}})}});return c(e,f),c(t,o),a(()=>{f.closeAllWebSockets()}),(e,t)=>(s(),r(g,null,{default:d(()=>[u(e.$slots,`default`)]),_:3}))}});export{g as n,_ as t};
2
- //# sourceMappingURL=providers-fqmOwF71.mjs.map
1
+ import{n as e,r as t,t as n}from"./useUploadistaClient-WVuo8jYH.mjs";import{createBlock as r,defineComponent as i,onBeforeUnmount as a,onMounted as o,openBlock as s,provide as c,ref as l,renderSlot as u,withCtx as d}from"vue";import{createUploadistaClient as f}from"@uploadista/client-browser";import{EventType as p}from"@uploadista/core/flow";import{UploadEventType as m}from"@uploadista/core/types";import{FlowManager as h}from"@uploadista/client-core";var g=i({__name:`FlowManagerProvider`,setup(e){function t(e){let t=e;return t.eventType===p.FlowStart||t.eventType===p.FlowEnd||t.eventType===p.FlowError||t.eventType===p.NodeStart||t.eventType===p.NodeEnd||t.eventType===p.NodePause||t.eventType===p.NodeResume||t.eventType===p.NodeError}let{client:r,subscribeToEvents:i}=n(),s=new Map,l=null;return o(()=>{l=i(e=>{if(t(e)){for(let t of s.values())t.manager.handleFlowEvent(e);return}if(`type`in e&&e.type===m.UPLOAD_PROGRESS&&`data`in e){let t=e;for(let e of s.values())e.manager.handleUploadProgress(t.data.id,t.data.progress,t.data.total)}})}),a(()=>{l?.();for(let e of s.values())e.manager.cleanup();s.clear()}),c(`flowManagerContext`,{getManager:(e,t,n)=>{let i=s.get(e);if(i)return i.refCount++,i.manager;let a=new h(r.uploadWithFlow,t,n,r.multiInputFlowUpload);return s.set(e,{manager:a,refCount:1,flowId:e}),a},releaseManager:e=>{let t=s.get(e);t&&(t.refCount--,t.refCount<=0&&(t.manager.cleanup(),s.delete(e)))}}),(e,t)=>u(e.$slots,`default`)}}),_=i({__name:`UploadistaProvider`,props:{serverUrl:{},storageId:{default:`local`},uploadistaBasePath:{default:`uploadista`},chunkSize:{default:1024*1024},parallelUploads:{default:1},storeFingerprintForResuming:{type:Boolean,default:!0}},setup(n){let i=n,o=l(new Set),p=f({baseUrl:i.serverUrl,storageId:i.storageId,uploadistaBasePath:i.uploadistaBasePath,chunkSize:i.chunkSize,parallelUploads:i.parallelUploads,storeFingerprintForResuming:i.storeFingerprintForResuming,onEvent:e=>{o.value.forEach(t=>{try{t(e)}catch(e){console.error(`Error in event subscriber:`,e)}})}});return c(e,p),c(t,o),a(()=>{p.closeAllWebSockets()}),(e,t)=>(s(),r(g,null,{default:d(()=>[u(e.$slots,`default`)]),_:3}))}});export{g as n,_ as t};
2
+ //# sourceMappingURL=providers-CjhEBaQV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers-CjhEBaQV.mjs","names":["unsubscribe: (() => void) | null","flowManagerContext: FlowManagerContextValue"],"sources":["../src/providers/FlowManagerProvider.vue","../src/providers/UploadistaProvider.vue"],"sourcesContent":["<template>\n <slot />\n</template>\n\n<script setup lang=\"ts\">\nimport type {\n BrowserUploadInput,\n UploadistaEvent,\n} from \"@uploadista/client-browser\";\nimport {\n FlowManager,\n type FlowManagerCallbacks,\n type FlowUploadOptions,\n} from \"@uploadista/client-core\";\nimport { EventType, type FlowEvent } from \"@uploadista/core/flow\";\nimport { UploadEventType } from \"@uploadista/core/types\";\nimport { onBeforeUnmount, onMounted, provide } from \"vue\";\nimport { useUploadistaClient } from \"../composables/useUploadistaClient\";\n\n/**\n * Type guard to check if an event is a flow event\n */\nfunction isFlowEvent(event: UploadistaEvent): event is FlowEvent {\n const flowEvent = event as FlowEvent;\n return (\n flowEvent.eventType === EventType.FlowStart ||\n flowEvent.eventType === EventType.FlowEnd ||\n flowEvent.eventType === EventType.FlowError ||\n flowEvent.eventType === EventType.NodeStart ||\n flowEvent.eventType === EventType.NodeEnd ||\n flowEvent.eventType === EventType.NodePause ||\n flowEvent.eventType === EventType.NodeResume ||\n flowEvent.eventType === EventType.NodeError\n );\n}\n\n/**\n * Internal manager registry entry with ref counting\n */\ninterface ManagerEntry {\n manager: FlowManager<unknown>;\n refCount: number;\n flowId: string;\n}\n\n/**\n * Context value providing access to flow managers\n */\ninterface FlowManagerContextValue {\n getManager: (\n flowId: string,\n callbacks: FlowManagerCallbacks,\n options: FlowUploadOptions,\n ) => FlowManager<unknown>;\n releaseManager: (flowId: string) => void;\n}\n\nconst { client, subscribeToEvents } = useUploadistaClient();\nconst managers = new Map<string, ManagerEntry>();\nlet unsubscribe: (() => void) | null = null;\n\n// Subscribe to events and route to managers\nonMounted(() => {\n unsubscribe = subscribeToEvents((event: UploadistaEvent) => {\n // Route flow events to all managers (they filter by jobId internally)\n if (isFlowEvent(event)) {\n for (const entry of managers.values()) {\n entry.manager.handleFlowEvent(event);\n }\n return;\n }\n\n // Route upload progress events to all managers\n if (\n \"type\" in event &&\n event.type === UploadEventType.UPLOAD_PROGRESS &&\n \"data\" in event\n ) {\n const uploadEvent = event;\n\n for (const entry of managers.values()) {\n entry.manager.handleUploadProgress(\n uploadEvent.data.id,\n uploadEvent.data.progress,\n uploadEvent.data.total,\n );\n }\n }\n });\n});\n\n// Cleanup on unmount\nonBeforeUnmount(() => {\n unsubscribe?.();\n for (const entry of managers.values()) {\n entry.manager.cleanup();\n }\n managers.clear();\n});\n\nconst getManager = (\n flowId: string,\n callbacks: FlowManagerCallbacks,\n options: FlowUploadOptions,\n): FlowManager<unknown> => {\n const existing = managers.get(flowId);\n\n if (existing) {\n // Increment ref count for existing manager\n existing.refCount++;\n return existing.manager;\n }\n\n // Create new manager\n const manager = new FlowManager<BrowserUploadInput>(\n client.uploadWithFlow,\n callbacks,\n options,\n client.multiInputFlowUpload,\n );\n\n managers.set(flowId, {\n manager,\n refCount: 1,\n flowId,\n });\n\n return manager;\n};\n\nconst releaseManager = (flowId: string) => {\n const existing = managers.get(flowId);\n if (!existing) return;\n\n existing.refCount--;\n\n // Clean up when no more refs\n if (existing.refCount <= 0) {\n existing.manager.cleanup();\n managers.delete(flowId);\n }\n};\n\n// Provide the context\nconst flowManagerContext: FlowManagerContextValue = {\n getManager,\n releaseManager,\n};\n\nprovide(\"flowManagerContext\", flowManagerContext);\n</script>\n","<script setup lang=\"ts\">\nimport {\n createUploadistaClient,\n type UploadistaEvent,\n} from \"@uploadista/client-browser\";\nimport { onBeforeUnmount, provide, ref } from \"vue\";\nimport {\n UPLOADISTA_CLIENT_KEY,\n UPLOADISTA_EVENT_SUBSCRIBERS_KEY,\n} from \"../composables/plugin\";\nimport FlowManagerProvider from \"./FlowManagerProvider.vue\";\n\nconst props = withDefaults(\n defineProps<{\n serverUrl: string;\n storageId?: string;\n uploadistaBasePath?: string;\n chunkSize?: number;\n parallelUploads?: number;\n storeFingerprintForResuming?: boolean;\n }>(),\n {\n storageId: \"local\",\n uploadistaBasePath: \"uploadista\",\n chunkSize: 1024 * 1024,\n parallelUploads: 1,\n storeFingerprintForResuming: true,\n },\n);\n\n// Create a shared set of event subscribers\nconst eventSubscribers = ref(new Set<(event: UploadistaEvent) => void>());\n\nconst client = createUploadistaClient({\n baseUrl: props.serverUrl,\n storageId: props.storageId,\n uploadistaBasePath: props.uploadistaBasePath,\n chunkSize: props.chunkSize,\n parallelUploads: props.parallelUploads,\n storeFingerprintForResuming: props.storeFingerprintForResuming,\n onEvent: (event) => {\n // Dispatch to all subscribers registered via subscribeToEvents\n eventSubscribers.value.forEach((subscriber) => {\n try {\n subscriber(event);\n } catch (err) {\n console.error(\"Error in event subscriber:\", err);\n }\n });\n },\n});\n\nprovide(UPLOADISTA_CLIENT_KEY, client);\nprovide(UPLOADISTA_EVENT_SUBSCRIBERS_KEY, eventSubscribers);\n\nonBeforeUnmount(() => {\n client.closeAllWebSockets();\n});\n</script>\n\n<template>\n <FlowManagerProvider>\n <slot />\n </FlowManagerProvider>\n</template>\n"],"mappings":"sfAsBA,SAAS,EAAY,EAA4C,CAC/D,IAAM,EAAY,EAClB,OACE,EAAU,YAAc,EAAU,WAClC,EAAU,YAAc,EAAU,SAClC,EAAU,YAAc,EAAU,WAClC,EAAU,YAAc,EAAU,WAClC,EAAU,YAAc,EAAU,SAClC,EAAU,YAAc,EAAU,WAClC,EAAU,YAAc,EAAU,YAClC,EAAU,YAAc,EAAU,UAyBtC,GAAM,CAAE,SAAQ,qBAAsB,GAAqB,CACrD,EAAW,IAAI,IACjBA,EAAmC,YAGvC,MAAgB,CACd,EAAc,EAAmB,GAA2B,CAE1D,GAAI,EAAY,EAAM,CAAE,CACtB,IAAK,IAAM,KAAS,EAAS,QAAQ,CACnC,EAAM,QAAQ,gBAAgB,EAAM,CAEtC,OAIF,GACE,SAAU,GACV,EAAM,OAAS,EAAgB,iBAC/B,SAAU,EACV,CACA,IAAM,EAAc,EAEpB,IAAK,IAAM,KAAS,EAAS,QAAQ,CACnC,EAAM,QAAQ,qBACZ,EAAY,KAAK,GACjB,EAAY,KAAK,SACjB,EAAY,KAAK,MAClB,GAGL,EACF,CAGF,MAAsB,CACpB,KAAe,CACf,IAAK,IAAM,KAAS,EAAS,QAAQ,CACnC,EAAM,QAAQ,SAAS,CAEzB,EAAS,OAAO,EAChB,CAmDF,EAAQ,qBAL4C,CAClD,YA5CA,EACA,EACA,IACyB,CACzB,IAAM,EAAW,EAAS,IAAI,EAAO,CAErC,GAAI,EAGF,MADA,GAAS,WACF,EAAS,QAIlB,IAAM,EAAU,IAAI,EAClB,EAAO,eACP,EACA,EACA,EAAO,qBACR,CAQD,OANA,EAAS,IAAI,EAAQ,CACnB,UACA,SAAU,EACV,SACD,CAAC,CAEK,GAmBP,eAhBsB,GAAmB,CACzC,IAAM,EAAW,EAAS,IAAI,EAAO,CAChC,IAEL,EAAS,WAGL,EAAS,UAAY,IACvB,EAAS,QAAQ,SAAS,CAC1B,EAAS,OAAO,EAAO,IAQ1B,CAEgD,QApJ/C,EAAQ,EAAA,OAAA,UAAA,yPCWV,IAAM,EAAQ,EAmBR,EAAmB,EAAI,IAAI,IAAwC,CAEnE,EAAS,EAAuB,CACpC,QAAS,EAAM,UACf,UAAW,EAAM,UACjB,mBAAoB,EAAM,mBAC1B,UAAW,EAAM,UACjB,gBAAiB,EAAM,gBACvB,4BAA6B,EAAM,4BACnC,QAAU,GAAU,CAElB,EAAiB,MAAM,QAAS,GAAe,CAC7C,GAAI,CACF,EAAW,EAAM,OACV,EAAK,CACZ,QAAQ,MAAM,6BAA8B,EAAI,GAElD,EAEL,CAAC,QAEF,EAAQ,EAAuB,EAAO,CACtC,EAAQ,EAAkC,EAAiB,CAE3D,MAAsB,CACpB,EAAO,oBAAoB,EAC3B,aAIA,EAEsB,EAAA,KAAA,eADZ,CAAR,EAAQ,EAAA,OAAA,UAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUploadistaClient-WVuo8jYH.mjs","names":["UPLOADISTA_CLIENT_KEY: InjectionKey<\n ReturnType<typeof createUploadistaClient>\n>","UPLOADISTA_EVENT_SUBSCRIBERS_KEY: InjectionKey<\n Ref<Set<(event: UploadistaEvent) => void>>\n>"],"sources":["../src/composables/plugin.ts","../src/composables/useUploadistaClient.ts"],"sourcesContent":["import {\n createUploadistaClient,\n type UploadistaClientOptions,\n type UploadistaEvent,\n} from \"@uploadista/client-browser\";\nimport type { App, InjectionKey, Ref } from \"vue\";\nimport { ref } from \"vue\";\n\nexport interface UploadistaPluginOptions extends UploadistaClientOptions {\n /**\n * Global event handler for all upload and flow events from this client\n */\n onEvent?: UploadistaClientOptions[\"onEvent\"];\n}\n\nexport const UPLOADISTA_CLIENT_KEY: InjectionKey<\n ReturnType<typeof createUploadistaClient>\n> = Symbol(\"uploadista-client\");\n\nexport const UPLOADISTA_EVENT_SUBSCRIBERS_KEY: InjectionKey<\n Ref<Set<(event: UploadistaEvent) => void>>\n> = Symbol(\"uploadista-event-subscribers\");\n\n/**\n * Vue plugin for providing Uploadista client instance globally.\n * Uses Vue's provide/inject pattern to make the client available\n * throughout the component tree.\n *\n * @param options - Uploadista client configuration options\n * @returns Vue plugin object\n *\n * @example\n * ```typescript\n * import { createApp } from 'vue';\n * import { createUploadistaPlugin } from '@uploadista/vue';\n * import App from './App.vue';\n *\n * const app = createApp(App);\n *\n * app.use(createUploadistaPlugin({\n * baseUrl: 'https://api.example.com',\n * storageId: 'my-storage',\n * chunkSize: 1024 * 1024, // 1MB\n * storeFingerprintForResuming: true,\n * onEvent: (event) => {\n * console.log('Upload event:', event);\n * }\n * }));\n *\n * app.mount('#app');\n * ```\n */\nexport function createUploadistaPlugin(options: UploadistaPluginOptions) {\n return {\n install(app: App) {\n // Create a shared set of event subscribers\n const eventSubscribers = ref(new Set<(event: UploadistaEvent) => void>());\n\n const client = createUploadistaClient({\n ...options,\n onEvent: (event) => {\n // Dispatch to all subscribers registered via subscribeToEvents\n eventSubscribers.value.forEach((subscriber) => {\n subscriber(event);\n });\n\n // Call the original onEvent handler if provided\n options.onEvent?.(event);\n },\n });\n\n app.provide(UPLOADISTA_CLIENT_KEY, client);\n app.provide(UPLOADISTA_EVENT_SUBSCRIBERS_KEY, eventSubscribers);\n },\n };\n}\n","import type { UploadistaEvent } from \"@uploadista/client-browser\";\nimport { inject, type Ref } from \"vue\";\nimport {\n UPLOADISTA_CLIENT_KEY,\n UPLOADISTA_EVENT_SUBSCRIBERS_KEY,\n} from \"./plugin\";\n\n/**\n * Access the Uploadista client instance from the plugin or provider.\n * Must be used within a component tree that has the Uploadista plugin or provider installed.\n *\n * @returns Uploadista client instance with event subscription\n * @throws Error if used outside of Uploadista plugin/provider context\n *\n * @example\n * ```vue\n * <script setup lang=\"ts\">\n * import { useUploadistaClient } from '@uploadista/vue';\n *\n * const { client, subscribeToEvents } = useUploadistaClient();\n *\n * // Subscribe to all events\n * const unsubscribe = subscribeToEvents((event) => {\n * console.log('Upload event:', event);\n * });\n *\n * // Clean up on unmount\n * onUnmounted(() => {\n * unsubscribe();\n * });\n * </script>\n * ```\n */\nexport function useUploadistaClient() {\n const client = inject(UPLOADISTA_CLIENT_KEY);\n\n if (!client) {\n throw new Error(\n \"useUploadistaClient must be used within a component tree that has the Uploadista plugin or provider installed. \" +\n \"Make sure to either use app.use(createUploadistaPlugin({ ... })) in your main app file, \" +\n \"or wrap your component tree with <UploadistaProvider>.\",\n );\n }\n\n // Try to get the shared event subscribers from the provider\n const eventSubscribersRef = inject<\n Ref<Set<(event: UploadistaEvent) => void>> | undefined\n >(UPLOADISTA_EVENT_SUBSCRIBERS_KEY);\n\n const subscribeToEvents = (handler: (event: UploadistaEvent) => void) => {\n if (!eventSubscribersRef) {\n console.warn(\n \"subscribeToEvents called but no event subscribers provided. Events will not be dispatched. \" +\n \"Make sure to use UploadistaProvider or createUploadistaPlugin with proper configuration.\",\n );\n return () => {\n // No-op unsubscribe if subscribers aren't available\n };\n }\n\n eventSubscribersRef.value.add(handler);\n return () => {\n eventSubscribersRef.value.delete(handler);\n };\n };\n\n return {\n client,\n subscribeToEvents,\n };\n}\n\nexport type UseUploadistaClientReturn = ReturnType<typeof useUploadistaClient>;\n"],"mappings":"0GAeA,MAAaA,EAET,OAAO,oBAAoB,CAElBC,EAET,OAAO,+BAA+B,CA+B1C,SAAgB,EAAuB,EAAkC,CACvE,MAAO,CACL,QAAQ,EAAU,CAEhB,IAAM,EAAmB,EAAI,IAAI,IAAwC,CAEnE,EAAS,EAAuB,CACpC,GAAG,EACH,QAAU,GAAU,CAElB,EAAiB,MAAM,QAAS,GAAe,CAC7C,EAAW,EAAM,EACjB,CAGF,EAAQ,UAAU,EAAM,EAE3B,CAAC,CAEF,EAAI,QAAQ,EAAuB,EAAO,CAC1C,EAAI,QAAQ,EAAkC,EAAiB,EAElE,CCzCH,SAAgB,GAAsB,CACpC,IAAM,EAAS,EAAO,EAAsB,CAE5C,GAAI,CAAC,EACH,MAAU,MACR,gQAGD,CAIH,IAAM,EAAsB,EAE1B,EAAiC,CAmBnC,MAAO,CACL,SACA,kBAnByB,GACpB,GAUL,EAAoB,MAAM,IAAI,EAAQ,KACzB,CACX,EAAoB,MAAM,OAAO,EAAQ,IAXzC,QAAQ,KACN,sLAED,KACY,IAchB"}
1
+ {"version":3,"file":"useUploadistaClient-WVuo8jYH.mjs","names":[],"sources":["../src/composables/plugin.ts","../src/composables/useUploadistaClient.ts"],"sourcesContent":["import {\n createUploadistaClient,\n type UploadistaClientOptions,\n type UploadistaEvent,\n} from \"@uploadista/client-browser\";\nimport type { App, InjectionKey, Ref } from \"vue\";\nimport { ref } from \"vue\";\n\nexport interface UploadistaPluginOptions extends UploadistaClientOptions {\n /**\n * Global event handler for all upload and flow events from this client\n */\n onEvent?: UploadistaClientOptions[\"onEvent\"];\n}\n\nexport const UPLOADISTA_CLIENT_KEY: InjectionKey<\n ReturnType<typeof createUploadistaClient>\n> = Symbol(\"uploadista-client\");\n\nexport const UPLOADISTA_EVENT_SUBSCRIBERS_KEY: InjectionKey<\n Ref<Set<(event: UploadistaEvent) => void>>\n> = Symbol(\"uploadista-event-subscribers\");\n\n/**\n * Vue plugin for providing Uploadista client instance globally.\n * Uses Vue's provide/inject pattern to make the client available\n * throughout the component tree.\n *\n * @param options - Uploadista client configuration options\n * @returns Vue plugin object\n *\n * @example\n * ```typescript\n * import { createApp } from 'vue';\n * import { createUploadistaPlugin } from '@uploadista/vue';\n * import App from './App.vue';\n *\n * const app = createApp(App);\n *\n * app.use(createUploadistaPlugin({\n * baseUrl: 'https://api.example.com',\n * storageId: 'my-storage',\n * chunkSize: 1024 * 1024, // 1MB\n * storeFingerprintForResuming: true,\n * onEvent: (event) => {\n * console.log('Upload event:', event);\n * }\n * }));\n *\n * app.mount('#app');\n * ```\n */\nexport function createUploadistaPlugin(options: UploadistaPluginOptions) {\n return {\n install(app: App) {\n // Create a shared set of event subscribers\n const eventSubscribers = ref(new Set<(event: UploadistaEvent) => void>());\n\n const client = createUploadistaClient({\n ...options,\n onEvent: (event) => {\n // Dispatch to all subscribers registered via subscribeToEvents\n eventSubscribers.value.forEach((subscriber) => {\n subscriber(event);\n });\n\n // Call the original onEvent handler if provided\n options.onEvent?.(event);\n },\n });\n\n app.provide(UPLOADISTA_CLIENT_KEY, client);\n app.provide(UPLOADISTA_EVENT_SUBSCRIBERS_KEY, eventSubscribers);\n },\n };\n}\n","import type { UploadistaEvent } from \"@uploadista/client-browser\";\nimport { inject, type Ref } from \"vue\";\nimport {\n UPLOADISTA_CLIENT_KEY,\n UPLOADISTA_EVENT_SUBSCRIBERS_KEY,\n} from \"./plugin\";\n\n/**\n * Access the Uploadista client instance from the plugin or provider.\n * Must be used within a component tree that has the Uploadista plugin or provider installed.\n *\n * @returns Uploadista client instance with event subscription\n * @throws Error if used outside of Uploadista plugin/provider context\n *\n * @example\n * ```vue\n * <script setup lang=\"ts\">\n * import { useUploadistaClient } from '@uploadista/vue';\n *\n * const { client, subscribeToEvents } = useUploadistaClient();\n *\n * // Subscribe to all events\n * const unsubscribe = subscribeToEvents((event) => {\n * console.log('Upload event:', event);\n * });\n *\n * // Clean up on unmount\n * onUnmounted(() => {\n * unsubscribe();\n * });\n * </script>\n * ```\n */\nexport function useUploadistaClient() {\n const client = inject(UPLOADISTA_CLIENT_KEY);\n\n if (!client) {\n throw new Error(\n \"useUploadistaClient must be used within a component tree that has the Uploadista plugin or provider installed. \" +\n \"Make sure to either use app.use(createUploadistaPlugin({ ... })) in your main app file, \" +\n \"or wrap your component tree with <UploadistaProvider>.\",\n );\n }\n\n // Try to get the shared event subscribers from the provider\n const eventSubscribersRef = inject<\n Ref<Set<(event: UploadistaEvent) => void>> | undefined\n >(UPLOADISTA_EVENT_SUBSCRIBERS_KEY);\n\n const subscribeToEvents = (handler: (event: UploadistaEvent) => void) => {\n if (!eventSubscribersRef) {\n console.warn(\n \"subscribeToEvents called but no event subscribers provided. Events will not be dispatched. \" +\n \"Make sure to use UploadistaProvider or createUploadistaPlugin with proper configuration.\",\n );\n return () => {\n // No-op unsubscribe if subscribers aren't available\n };\n }\n\n eventSubscribersRef.value.add(handler);\n return () => {\n eventSubscribersRef.value.delete(handler);\n };\n };\n\n return {\n client,\n subscribeToEvents,\n };\n}\n\nexport type UseUploadistaClientReturn = ReturnType<typeof useUploadistaClient>;\n"],"mappings":"0GAeA,MAAa,EAET,OAAO,oBAAoB,CAElB,EAET,OAAO,+BAA+B,CA+B1C,SAAgB,EAAuB,EAAkC,CACvE,MAAO,CACL,QAAQ,EAAU,CAEhB,IAAM,EAAmB,EAAI,IAAI,IAAwC,CAEnE,EAAS,EAAuB,CACpC,GAAG,EACH,QAAU,GAAU,CAElB,EAAiB,MAAM,QAAS,GAAe,CAC7C,EAAW,EAAM,EACjB,CAGF,EAAQ,UAAU,EAAM,EAE3B,CAAC,CAEF,EAAI,QAAQ,EAAuB,EAAO,CAC1C,EAAI,QAAQ,EAAkC,EAAiB,EAElE,CCzCH,SAAgB,GAAsB,CACpC,IAAM,EAAS,EAAO,EAAsB,CAE5C,GAAI,CAAC,EACH,MAAU,MACR,gQAGD,CAIH,IAAM,EAAsB,EAE1B,EAAiC,CAmBnC,MAAO,CACL,SACA,kBAnByB,GACpB,GAUL,EAAoB,MAAM,IAAI,EAAQ,KACzB,CACX,EAAoB,MAAM,OAAO,EAAQ,IAXzC,QAAQ,KACN,sLAED,KACY,IAchB"}
@@ -1,2 +1,62 @@
1
- import { a as formatSpeed, c as isAudioFile, d as isVideoFile, f as revokeFilePreview, i as formatFileSize, l as isDocumentFile, m as isBrowserFile, n as createFilePreview, o as generateUploadId, p as validateFileType, r as formatDuration, s as getFileExtension, t as calculateProgress, u as isImageFile } from "../index-BLNNvTVx.mjs";
2
- export { calculateProgress, createFilePreview, formatDuration, formatFileSize, formatSpeed, generateUploadId, getFileExtension, isAudioFile, isBrowserFile, isDocumentFile, isImageFile, isVideoFile, revokeFilePreview, validateFileType };
1
+ //#region src/utils/is-browser-file.d.ts
2
+ declare const isBrowserFile: (value: unknown) => value is File;
3
+ //#endregion
4
+ //#region src/utils/index.d.ts
5
+ /**
6
+ * Utility functions for the Vue upload client
7
+ */
8
+ /**
9
+ * Format file size in human-readable format
10
+ */
11
+ declare function formatFileSize(bytes: number): string;
12
+ /**
13
+ * Format upload speed in human-readable format
14
+ */
15
+ declare function formatSpeed(bytesPerSecond: number): string;
16
+ /**
17
+ * Format duration in human-readable format
18
+ */
19
+ declare function formatDuration(milliseconds: number): string;
20
+ /**
21
+ * Validate file type against accepted types
22
+ */
23
+ declare function validateFileType(file: File, accept: string[]): boolean;
24
+ /**
25
+ * Generate a unique ID for upload items
26
+ */
27
+ declare function generateUploadId(): string;
28
+ /**
29
+ * Get file extension from filename
30
+ */
31
+ declare function getFileExtension(filename: string): string;
32
+ /**
33
+ * Check if a file is an image
34
+ */
35
+ declare function isImageFile(file: File): boolean;
36
+ /**
37
+ * Check if a file is a video
38
+ */
39
+ declare function isVideoFile(file: File): boolean;
40
+ /**
41
+ * Check if a file is an audio file
42
+ */
43
+ declare function isAudioFile(file: File): boolean;
44
+ /**
45
+ * Check if a file is a document
46
+ */
47
+ declare function isDocumentFile(file: File): boolean;
48
+ /**
49
+ * Create a preview URL for a file (if supported)
50
+ */
51
+ declare function createFilePreview(file: File): string | null;
52
+ /**
53
+ * Clean up a preview URL created with createFilePreview
54
+ */
55
+ declare function revokeFilePreview(previewUrl: string): void;
56
+ /**
57
+ * Calculate progress percentage
58
+ */
59
+ declare function calculateProgress(current: number, total: number): number;
60
+ //#endregion
61
+ export { calculateProgress, createFilePreview, formatDuration, formatFileSize, formatSpeed, generateUploadId, getFileExtension, isAudioFile, isBrowserFile, isDocumentFile, isImageFile, isVideoFile, revokeFilePreview, validateFileType };
62
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/utils/is-browser-file.ts","../../src/utils/index.ts"],"sourcesContent":[],"mappings":";cAAa,4CAA2C;;;;AAAxD;;;;ACOA;AAWgB,iBAXA,cAAA,CAWW,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAW3B;AAuBA;AAsBA;AAOgB,iBA/DA,WAAA,CA+DgB,cAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAQhC;AAOA;AAOA;AAOgB,iBAjFA,cAAA,CAiFyB,YAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAoBzC;AAUA;AAOA;iBA/FgB,gBAAA,OAAuB;;;;iBAsBvB,gBAAA,CAAA;;;;iBAOA,gBAAA;;;;iBAQA,WAAA,OAAkB;;;;iBAOlB,WAAA,OAAkB;;;;iBAOlB,WAAA,OAAkB;;;;iBAOlB,cAAA,OAAqB;;;;iBAoBrB,iBAAA,OAAwB;;;;iBAUxB,iBAAA;;;;iBAOA,iBAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@uploadista/vue",
3
3
  "type": "module",
4
- "version": "0.0.20-beta.9",
4
+ "version": "0.1.0-beta.5",
5
5
  "description": "Vue client for Uploadista",
6
6
  "license": "MIT",
7
7
  "author": "Uploadista",
@@ -31,25 +31,27 @@
31
31
  "vue": "^3.3.0"
32
32
  },
33
33
  "dependencies": {
34
- "@uploadista/core": "0.0.20-beta.9",
35
- "@uploadista/client-browser": "0.0.20-beta.9",
36
- "@uploadista/client-core": "0.0.20-beta.9"
34
+ "@uploadista/client-core": "0.1.0-beta.5",
35
+ "@uploadista/client-browser": "0.1.0-beta.5",
36
+ "@uploadista/core": "0.1.0-beta.5"
37
37
  },
38
38
  "devDependencies": {
39
+ "@vitejs/plugin-vue": "^6.0.0",
39
40
  "@vue/test-utils": "^2.4.6",
40
- "tsdown": "0.18.0",
41
+ "happy-dom": "^20.0.0",
42
+ "tsdown": "0.19.0",
41
43
  "unplugin-vue": "^7.0.2",
42
- "vitest": "4.0.15",
44
+ "vitest": "4.0.17",
43
45
  "vue": "^3.5.0",
44
- "vue-tsc": "3.1.8",
45
- "@uploadista/typescript-config": "0.0.20-beta.9"
46
+ "vue-tsc": "3.2.2",
47
+ "@uploadista/typescript-config": "0.1.0-beta.5"
46
48
  },
47
49
  "scripts": {
48
50
  "build": "vue-tsc --noEmit && tsdown",
49
51
  "format": "biome format --write ./src",
50
52
  "lint": "biome lint --write ./src",
51
53
  "check": "biome check --write ./src",
52
- "test": "vitest",
54
+ "test": "vitest run",
53
55
  "test:run": "vitest run",
54
56
  "test:watch": "vitest --watch"
55
57
  }
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Vitest setup file for Vue client tests.
3
+ *
4
+ * Sets up browser-like environment with mocks for Web APIs
5
+ * and Vue-specific test utilities.
6
+ */
7
+
8
+ import { config } from "@vue/test-utils";
9
+ import { afterEach, vi } from "vitest";
10
+
11
+ // Mock crypto.subtle for tests that need it
12
+ const mockSubtle = {
13
+ digest: vi
14
+ .fn()
15
+ .mockImplementation(async (_algorithm: string, data: ArrayBuffer) => {
16
+ // Return a mock hash based on data length for testing
17
+ const mockHash = new Uint8Array(32);
18
+ const view = new Uint8Array(data);
19
+ for (let i = 0; i < 32; i++) {
20
+ mockHash[i] = (view[i % view.length] || 0) ^ (i * 7);
21
+ }
22
+ return mockHash.buffer;
23
+ }),
24
+ };
25
+
26
+ // Mock crypto.randomUUID
27
+ const mockRandomUUID = vi.fn(() => "550e8400-e29b-41d4-a716-446655440000");
28
+
29
+ // Setup global crypto mock if not available
30
+ if (typeof globalThis.crypto === "undefined") {
31
+ Object.defineProperty(globalThis, "crypto", {
32
+ value: {
33
+ subtle: mockSubtle,
34
+ randomUUID: mockRandomUUID,
35
+ getRandomValues: (arr: Uint8Array) => {
36
+ for (let i = 0; i < arr.length; i++) {
37
+ arr[i] = Math.floor(Math.random() * 256);
38
+ }
39
+ return arr;
40
+ },
41
+ },
42
+ writable: true,
43
+ });
44
+ } else {
45
+ // Patch existing crypto object
46
+ if (!globalThis.crypto.subtle) {
47
+ Object.defineProperty(globalThis.crypto, "subtle", {
48
+ value: mockSubtle,
49
+ writable: true,
50
+ });
51
+ }
52
+ if (!globalThis.crypto.randomUUID) {
53
+ Object.defineProperty(globalThis.crypto, "randomUUID", {
54
+ value: mockRandomUUID,
55
+ writable: true,
56
+ });
57
+ }
58
+ }
59
+
60
+ // Spy on URL methods - these are provided by happy-dom but we want to track calls
61
+ export const mockCreateObjectURL = vi
62
+ .spyOn(URL, "createObjectURL")
63
+ .mockReturnValue("blob:mock-url");
64
+ export const mockRevokeObjectURL = vi
65
+ .spyOn(URL, "revokeObjectURL")
66
+ .mockReturnValue(undefined);
67
+
68
+ // Configure Vue Test Utils global stubs/plugins if needed
69
+ config.global.stubs = {};
70
+
71
+ // Clean up mocks after each test
72
+ afterEach(() => {
73
+ vi.clearAllMocks();
74
+ });
75
+
76
+ // Helper to create a mock File
77
+ export function createMockFile(
78
+ name: string,
79
+ size: number,
80
+ type: string,
81
+ ): File {
82
+ const buffer = new ArrayBuffer(size);
83
+ const blob = new Blob([buffer], { type });
84
+ return new File([blob], name, { type });
85
+ }
86
+
87
+ // Helper to create mock DragEvent
88
+ export function createMockDragEvent(
89
+ type: string,
90
+ files: File[] = [],
91
+ ): DragEvent {
92
+ const dataTransfer = {
93
+ items: files.map((file) => ({
94
+ kind: "file",
95
+ type: file.type,
96
+ getAsFile: () => file,
97
+ })),
98
+ files: {
99
+ length: files.length,
100
+ item: (index: number) => files[index] || null,
101
+ [Symbol.iterator]: function* () {
102
+ for (const file of files) {
103
+ yield file;
104
+ }
105
+ },
106
+ } as unknown as FileList,
107
+ dropEffect: "none" as DataTransfer["dropEffect"],
108
+ effectAllowed: "all" as DataTransfer["effectAllowed"],
109
+ types: ["Files"],
110
+ getData: () => "",
111
+ setData: () => {},
112
+ clearData: () => {},
113
+ setDragImage: () => {},
114
+ } as unknown as DataTransfer;
115
+
116
+ const event = new Event(type, {
117
+ bubbles: true,
118
+ cancelable: true,
119
+ }) as DragEvent;
120
+
121
+ Object.defineProperty(event, "dataTransfer", {
122
+ value: dataTransfer,
123
+ writable: false,
124
+ });
125
+
126
+ return event;
127
+ }
128
+
129
+ // Helper to create mock InputEvent with files
130
+ export function createMockInputChangeEvent(files: File[]): Event {
131
+ const event = new Event("change", { bubbles: true });
132
+ const fileList = {
133
+ length: files.length,
134
+ item: (index: number) => files[index] || null,
135
+ [Symbol.iterator]: function* () {
136
+ for (const file of files) {
137
+ yield file;
138
+ }
139
+ },
140
+ } as unknown as FileList;
141
+
142
+ // Create a mock input element
143
+ const mockInput = {
144
+ files: fileList,
145
+ value: "C:\\fakepath\\file.txt",
146
+ };
147
+
148
+ Object.defineProperty(event, "target", {
149
+ value: mockInput,
150
+ writable: false,
151
+ });
152
+
153
+ return event;
154
+ }
@@ -42,6 +42,7 @@ import type {
42
42
  BrowserUploadInput,
43
43
  FlowUploadItem,
44
44
  } from "@uploadista/client-browser";
45
+ import type { VNodeChild } from "vue";
45
46
  import { computed } from "vue";
46
47
  import { isBrowserFile } from "../utils";
47
48
 
@@ -73,27 +74,31 @@ export interface FlowUploadListProps {
73
74
 
74
75
  const props = defineProps<FlowUploadListProps>();
75
76
 
77
+ interface FlowUploadListItemProps {
78
+ item: FlowUploadItem<BrowserUploadInput>;
79
+ index: number;
80
+ isPending: boolean;
81
+ isUploading: boolean;
82
+ isSuccess: boolean;
83
+ isError: boolean;
84
+ isAborted: boolean;
85
+ formatFileSize: (bytes: number) => string;
86
+ }
87
+
88
+ interface FlowUploadListDefaultProps {
89
+ items: FlowUploadItem<BrowserUploadInput>[];
90
+ itemsByStatus: {
91
+ pending: FlowUploadItem<BrowserUploadInput>[];
92
+ uploading: FlowUploadItem<BrowserUploadInput>[];
93
+ success: FlowUploadItem<BrowserUploadInput>[];
94
+ error: FlowUploadItem<BrowserUploadInput>[];
95
+ aborted: FlowUploadItem<BrowserUploadInput>[];
96
+ };
97
+ }
98
+
76
99
  defineSlots<{
77
- item(props: {
78
- item: FlowUploadItem<BrowserUploadInput>;
79
- index: number;
80
- isPending: boolean;
81
- isUploading: boolean;
82
- isSuccess: boolean;
83
- isError: boolean;
84
- isAborted: boolean;
85
- formatFileSize: (bytes: number) => string;
86
- }): any;
87
- default?(props: {
88
- items: FlowUploadItem<BrowserUploadInput>[];
89
- itemsByStatus: {
90
- pending: FlowUploadItem<BrowserUploadInput>[];
91
- uploading: FlowUploadItem<BrowserUploadInput>[];
92
- success: FlowUploadItem<BrowserUploadInput>[];
93
- error: FlowUploadItem<BrowserUploadInput>[];
94
- aborted: FlowUploadItem<BrowserUploadInput>[];
95
- };
96
- }): any;
100
+ item(props: FlowUploadListItemProps): VNodeChild;
101
+ default(props: FlowUploadListDefaultProps): VNodeChild;
97
102
  }>();
98
103
 
99
104
  // Apply filtering and sorting
@@ -112,7 +117,6 @@ const filteredItems = computed(() => {
112
117
  });
113
118
 
114
119
  // Group items by status
115
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
116
120
  const itemsByStatus = computed(() => ({
117
121
  pending: filteredItems.value.filter((item) => item.status === "pending"),
118
122
  uploading: filteredItems.value.filter((item) => item.status === "uploading"),
@@ -122,7 +126,6 @@ const itemsByStatus = computed(() => ({
122
126
  }));
123
127
 
124
128
  // Helper function to format file sizes
125
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
126
129
  const formatFileSize = (bytes: number): string => {
127
130
  if (bytes === 0) return "0 Bytes";
128
131
  const k = 1024;
@@ -132,7 +135,6 @@ const formatFileSize = (bytes: number): string => {
132
135
  };
133
136
 
134
137
  // Helper function to get status icon
135
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
136
138
  const getStatusIcon = (status: string): string => {
137
139
  switch (status) {
138
140
  case "pending":
@@ -151,7 +153,6 @@ const getStatusIcon = (status: string): string => {
151
153
  };
152
154
 
153
155
  // Helper function to get status color
154
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
155
156
  const getStatusColor = (status: string): string => {
156
157
  switch (status) {
157
158
  case "pending":
@@ -32,6 +32,7 @@
32
32
  * :sort-by="(a, b) => a.uploadedAt - b.uploadedAt"
33
33
  * />
34
34
  */
35
+ import type { VNodeChild } from "vue";
35
36
  import { computed } from "vue";
36
37
  import type { UploadItem } from "../composables";
37
38
  import { isBrowserFile } from "../utils";
@@ -69,7 +70,7 @@ defineSlots<{
69
70
  isSuccess: boolean;
70
71
  isError: boolean;
71
72
  formatFileSize: (bytes: number) => string;
72
- }): any;
73
+ }): VNodeChild;
73
74
  default?(props: {
74
75
  items: UploadItem[];
75
76
  itemsByStatus: {
@@ -79,7 +80,7 @@ defineSlots<{
79
80
  error: UploadItem[];
80
81
  aborted: UploadItem[];
81
82
  };
82
- }): any;
83
+ }): VNodeChild;
83
84
  }>();
84
85
 
85
86
  // Apply filtering and sorting
@@ -98,7 +99,6 @@ const filteredItems = computed(() => {
98
99
  });
99
100
 
100
101
  // Group items by status
101
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
102
102
  const itemsByStatus = computed(() => ({
103
103
  idle: filteredItems.value.filter((item) => item.state.status === "idle"),
104
104
  uploading: filteredItems.value.filter(
@@ -114,7 +114,6 @@ const itemsByStatus = computed(() => ({
114
114
  }));
115
115
 
116
116
  // Helper function to format file sizes
117
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
118
117
  const formatFileSize = (bytes: number): string => {
119
118
  if (bytes === 0) return "0 Bytes";
120
119
  const k = 1024;
@@ -124,7 +123,6 @@ const formatFileSize = (bytes: number): string => {
124
123
  };
125
124
 
126
125
  // Helper function to get status icon
127
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
128
126
  const getStatusIcon = (status: string): string => {
129
127
  switch (status) {
130
128
  case "idle":
@@ -143,7 +141,6 @@ const getStatusIcon = (status: string): string => {
143
141
  };
144
142
 
145
143
  // Helper function to get status color
146
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
147
144
  const getStatusColor = (status: string): string => {
148
145
  switch (status) {
149
146
  case "idle":
@@ -34,6 +34,7 @@
34
34
  * @emits validation-error - When validation fails
35
35
  */
36
36
  import type { UploadOptions } from "@uploadista/client-browser";
37
+ import type { VNodeChild } from "vue";
37
38
  import { computed, ref } from "vue";
38
39
  import type { MultiUploadOptions } from "../composables";
39
40
  import { useDragDrop, useMultiUpload, useUpload } from "../composables";
@@ -97,14 +98,13 @@ const emit = defineEmits<{
97
98
  }>();
98
99
 
99
100
  defineSlots<{
100
- // biome-ignore lint/suspicious/noExplicitAny: Vue slot definition requires any
101
101
  default(props: {
102
102
  isDragging: boolean;
103
103
  isOver: boolean;
104
104
  isUploading: boolean;
105
105
  errors: string[];
106
106
  openFilePicker: () => void;
107
- }): any;
107
+ }): VNodeChild;
108
108
  }>();
109
109
 
110
110
  // Initialize upload composables
@@ -147,7 +147,6 @@ const dragDrop = useDragDrop({
147
147
  const fileInputRef = ref<HTMLInputElement>();
148
148
 
149
149
  // Open file picker
150
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
151
150
  const openFilePicker = () => {
152
151
  if (!props.disabled) {
153
152
  fileInputRef.value?.click();
@@ -155,12 +154,10 @@ const openFilePicker = () => {
155
154
  };
156
155
 
157
156
  // Computed states
158
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
159
157
  const isActive = computed(
160
158
  () => dragDrop.state.value.isDragging || dragDrop.state.value.isOver,
161
159
  );
162
160
 
163
- // biome-ignore lint/correctness/noUnusedVariables: Used in slot templates
164
161
  const isUploading = computed(() => {
165
162
  if (props.multiple && multiUpload) {
166
163
  return multiUpload.state.value.isUploading;