@uploadista/react 0.0.13-beta.5 → 0.0.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"use-upload-metrics-C6dTx8Gd.mjs","names":["initialMetrics: UploadMetrics","estimatedTimeRemaining: number | null","newMetrics: UploadMetrics","fileMetric: FileUploadMetrics"],"sources":["../src/hooks/use-upload-metrics.ts"],"sourcesContent":["import type {\n ChunkMetrics,\n PerformanceInsights,\n UploadSessionMetrics,\n} from \"@uploadista/client-core\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport { useUploadistaContext } from \"../components/uploadista-provider\";\n\nexport type Timeout = ReturnType<typeof setInterval>;\n\nexport interface UploadMetrics {\n /**\n * Total bytes uploaded across all files\n */\n totalBytesUploaded: number;\n\n /**\n * Total bytes to upload across all files\n */\n totalBytes: number;\n\n /**\n * Overall upload speed in bytes per second\n */\n averageSpeed: number;\n\n /**\n * Current upload speed in bytes per second\n */\n currentSpeed: number;\n\n /**\n * Estimated time remaining in milliseconds\n */\n estimatedTimeRemaining: number | null;\n\n /**\n * Total number of files being tracked\n */\n totalFiles: number;\n\n /**\n * Number of files completed\n */\n completedFiles: number;\n\n /**\n * Number of files currently uploading\n */\n activeUploads: number;\n\n /**\n * Overall progress as percentage (0-100)\n */\n progress: number;\n\n /**\n * Peak upload speed achieved\n */\n peakSpeed: number;\n\n /**\n * Start time of the first upload\n */\n startTime: number | null;\n\n /**\n * End time of the last completed upload\n */\n endTime: number | null;\n\n /**\n * Total duration of all uploads\n */\n totalDuration: number | null;\n\n /**\n * Detailed performance insights from the upload client\n */\n insights: PerformanceInsights;\n\n /**\n * Session metrics for completed uploads\n */\n sessionMetrics: Partial<UploadSessionMetrics>[];\n\n /**\n * Detailed chunk metrics from recent uploads\n */\n chunkMetrics: ChunkMetrics[];\n}\n\nexport interface FileUploadMetrics {\n id: string;\n filename: string;\n size: number;\n bytesUploaded: number;\n progress: number;\n speed: number;\n startTime: number;\n endTime: number | null;\n duration: number | null;\n isComplete: boolean;\n}\n\nexport interface UseUploadMetricsOptions {\n /**\n * Interval for calculating current speed (in milliseconds)\n */\n speedCalculationInterval?: number;\n\n /**\n * Number of speed samples to keep for average calculation\n */\n speedSampleSize?: number;\n\n /**\n * Called when metrics are updated\n */\n onMetricsUpdate?: (metrics: UploadMetrics) => void;\n\n /**\n * Called when a file upload starts\n */\n onFileStart?: (fileMetrics: FileUploadMetrics) => void;\n\n /**\n * Called when a file upload progresses\n */\n onFileProgress?: (fileMetrics: FileUploadMetrics) => void;\n\n /**\n * Called when a file upload completes\n */\n onFileComplete?: (fileMetrics: FileUploadMetrics) => void;\n}\n\nexport interface UseUploadMetricsReturn {\n /**\n * Current overall metrics\n */\n metrics: UploadMetrics;\n\n /**\n * Individual file metrics\n */\n fileMetrics: FileUploadMetrics[];\n\n /**\n * Start tracking a new file upload\n */\n startFileUpload: (id: string, filename: string, size: number) => void;\n\n /**\n * Update progress for a file upload\n */\n updateFileProgress: (id: string, bytesUploaded: number) => void;\n\n /**\n * Mark a file upload as complete\n */\n completeFileUpload: (id: string) => void;\n\n /**\n * Remove a file from tracking\n */\n removeFile: (id: string) => void;\n\n /**\n * Reset all metrics\n */\n reset: () => void;\n\n /**\n * Get metrics for a specific file\n */\n getFileMetrics: (id: string) => FileUploadMetrics | undefined;\n\n /**\n * Export metrics as JSON\n */\n exportMetrics: () => {\n overall: UploadMetrics;\n files: FileUploadMetrics[];\n exportTime: number;\n };\n}\n\nconst initialMetrics: UploadMetrics = {\n totalBytesUploaded: 0,\n totalBytes: 0,\n averageSpeed: 0,\n currentSpeed: 0,\n estimatedTimeRemaining: null,\n totalFiles: 0,\n completedFiles: 0,\n activeUploads: 0,\n progress: 0,\n peakSpeed: 0,\n startTime: null,\n endTime: null,\n totalDuration: null,\n insights: {\n overallEfficiency: 0,\n chunkingEffectiveness: 0,\n networkStability: 0,\n recommendations: [],\n optimalChunkSizeRange: { min: 256 * 1024, max: 2 * 1024 * 1024 },\n },\n sessionMetrics: [],\n chunkMetrics: [],\n};\n\n/**\n * React hook for tracking detailed upload metrics and performance statistics.\n * Provides comprehensive monitoring of upload progress, speed, and timing data.\n *\n * @param options - Configuration and event handlers\n * @returns Upload metrics state and control methods\n *\n * @example\n * ```tsx\n * const uploadMetrics = useUploadMetrics({\n * speedCalculationInterval: 1000, // Update speed every second\n * speedSampleSize: 10, // Keep last 10 speed samples for average\n * onMetricsUpdate: (metrics) => {\n * console.log(`Overall progress: ${metrics.progress}%`);\n * console.log(`Speed: ${(metrics.currentSpeed / 1024).toFixed(1)} KB/s`);\n * console.log(`ETA: ${metrics.estimatedTimeRemaining}ms`);\n * },\n * onFileComplete: (fileMetrics) => {\n * console.log(`${fileMetrics.filename} completed in ${fileMetrics.duration}ms`);\n * },\n * });\n *\n * // Start tracking a file\n * const handleFileStart = (file: File) => {\n * uploadMetrics.startFileUpload(file.name, file.name, file.size);\n * };\n *\n * // Update progress during upload\n * const handleProgress = (fileId: string, bytesUploaded: number) => {\n * uploadMetrics.updateFileProgress(fileId, bytesUploaded);\n * };\n *\n * // Display metrics\n * return (\n * <div>\n * <div>Overall Progress: {uploadMetrics.metrics.progress}%</div>\n * <div>Speed: {(uploadMetrics.metrics.currentSpeed / 1024).toFixed(1)} KB/s</div>\n * <div>Files: {uploadMetrics.metrics.completedFiles}/{uploadMetrics.metrics.totalFiles}</div>\n *\n * {uploadMetrics.metrics.estimatedTimeRemaining && (\n * <div>ETA: {Math.round(uploadMetrics.metrics.estimatedTimeRemaining / 1000)}s</div>\n * )}\n *\n * {uploadMetrics.fileMetrics.map((file) => (\n * <div key={file.id}>\n * {file.filename}: {file.progress}% ({(file.speed / 1024).toFixed(1)} KB/s)\n * </div>\n * ))}\n * </div>\n * );\n * ```\n */\nexport function useUploadMetrics(\n options: UseUploadMetricsOptions = {},\n): UseUploadMetricsReturn {\n const {\n speedCalculationInterval = 1000,\n speedSampleSize = 10,\n onMetricsUpdate,\n onFileStart,\n onFileProgress,\n onFileComplete,\n } = options;\n\n const uploadClient = useUploadistaContext();\n\n const [metrics, setMetrics] = useState<UploadMetrics>(initialMetrics);\n const [fileMetrics, setFileMetrics] = useState<FileUploadMetrics[]>([]);\n\n const speedSamplesRef = useRef<Array<{ time: number; bytes: number }>>([]);\n const lastUpdateRef = useRef<number>(0);\n const intervalRef = useRef<Timeout | null>(null);\n\n const calculateSpeed = useCallback(\n (currentTime: number, totalBytesUploaded: number) => {\n const sample = { time: currentTime, bytes: totalBytesUploaded };\n speedSamplesRef.current.push(sample);\n\n // Keep only recent samples\n if (speedSamplesRef.current.length > speedSampleSize) {\n speedSamplesRef.current = speedSamplesRef.current.slice(\n -speedSampleSize,\n );\n }\n\n // Calculate current speed (bytes per second)\n let currentSpeed = 0;\n if (speedSamplesRef.current.length >= 2) {\n const recent =\n speedSamplesRef.current[speedSamplesRef.current.length - 1];\n const previous =\n speedSamplesRef.current[speedSamplesRef.current.length - 2];\n if (recent && previous) {\n const timeDiff = (recent.time - previous.time) / 1000; // Convert to seconds\n const bytesDiff = recent.bytes - previous.bytes;\n currentSpeed = timeDiff > 0 ? bytesDiff / timeDiff : 0;\n }\n }\n\n // Calculate average speed\n let averageSpeed = 0;\n if (speedSamplesRef.current.length >= 2) {\n const first = speedSamplesRef.current[0];\n const last =\n speedSamplesRef.current[speedSamplesRef.current.length - 1];\n if (first && last) {\n const totalTime = (last.time - first.time) / 1000; // Convert to seconds\n const totalBytes = last.bytes - first.bytes;\n averageSpeed = totalTime > 0 ? totalBytes / totalTime : 0;\n }\n }\n\n return { currentSpeed, averageSpeed };\n },\n [speedSampleSize],\n );\n\n const updateMetrics = useCallback(() => {\n const now = Date.now();\n\n // Calculate totals from file metrics\n const totalBytes = fileMetrics.reduce((sum, file) => sum + file.size, 0);\n const totalBytesUploaded = fileMetrics.reduce(\n (sum, file) => sum + file.bytesUploaded,\n 0,\n );\n const completedFiles = fileMetrics.filter((file) => file.isComplete).length;\n const activeUploads = fileMetrics.filter(\n (file) => !file.isComplete && file.bytesUploaded > 0,\n ).length;\n\n // Calculate speeds\n const { currentSpeed, averageSpeed } = calculateSpeed(\n now,\n totalBytesUploaded,\n );\n\n // Calculate progress\n const progress =\n totalBytes > 0 ? Math.round((totalBytesUploaded / totalBytes) * 100) : 0;\n\n // Calculate estimated time remaining\n let estimatedTimeRemaining: number | null = null;\n if (currentSpeed > 0) {\n const remainingBytes = totalBytes - totalBytesUploaded;\n estimatedTimeRemaining = (remainingBytes / currentSpeed) * 1000; // Convert to milliseconds\n }\n\n // Find start and end times\n const activeTimes = fileMetrics.filter((file) => file.startTime > 0);\n const startTime =\n activeTimes.length > 0\n ? Math.min(...activeTimes.map((file) => file.startTime))\n : null;\n\n const completedTimes = fileMetrics.filter((file) => file.endTime !== null);\n const endTime =\n completedTimes.length > 0 && completedFiles === fileMetrics.length\n ? Math.max(\n ...completedTimes\n .map((file) => file.endTime)\n .filter((time) => time !== null),\n )\n : null;\n\n const totalDuration = startTime && endTime ? endTime - startTime : null;\n\n const newMetrics: UploadMetrics = {\n totalBytesUploaded,\n totalBytes,\n averageSpeed,\n currentSpeed,\n estimatedTimeRemaining,\n totalFiles: fileMetrics.length,\n completedFiles,\n activeUploads,\n progress,\n peakSpeed: Math.max(metrics.peakSpeed, currentSpeed),\n startTime,\n endTime,\n totalDuration,\n insights: uploadClient.client.getChunkingInsights(),\n sessionMetrics: [uploadClient.client.exportMetrics().session],\n chunkMetrics: uploadClient.client.exportMetrics().chunks,\n };\n\n setMetrics(newMetrics);\n onMetricsUpdate?.(newMetrics);\n }, [\n fileMetrics,\n metrics.peakSpeed,\n calculateSpeed,\n onMetricsUpdate,\n uploadClient.client,\n ]);\n\n // Set up periodic speed calculations\n const setupSpeedCalculation = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n\n intervalRef.current = setInterval(() => {\n if (\n fileMetrics.some((file) => !file.isComplete && file.bytesUploaded > 0)\n ) {\n updateMetrics();\n }\n }, speedCalculationInterval);\n\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n };\n }, [speedCalculationInterval, updateMetrics, fileMetrics]);\n\n const startFileUpload = useCallback(\n (id: string, filename: string, size: number) => {\n const now = Date.now();\n\n const fileMetric: FileUploadMetrics = {\n id,\n filename,\n size,\n bytesUploaded: 0,\n progress: 0,\n speed: 0,\n startTime: now,\n endTime: null,\n duration: null,\n isComplete: false,\n };\n\n setFileMetrics((prev) => {\n const existing = prev.find((file) => file.id === id);\n if (existing) {\n return prev.map((file) => (file.id === id ? fileMetric : file));\n }\n return [...prev, fileMetric];\n });\n\n onFileStart?.(fileMetric);\n\n // Start speed calculation if this is the first active upload\n if (fileMetrics.filter((file) => !file.isComplete).length === 0) {\n setupSpeedCalculation();\n }\n },\n [fileMetrics, onFileStart, setupSpeedCalculation],\n );\n\n const updateFileProgress = useCallback(\n (id: string, bytesUploaded: number) => {\n const now = Date.now();\n\n setFileMetrics((prev) =>\n prev.map((file) => {\n if (file.id !== id) return file;\n\n const timeDiff = (now - file.startTime) / 1000; // seconds\n const speed = timeDiff > 0 ? bytesUploaded / timeDiff : 0;\n const progress =\n file.size > 0 ? Math.round((bytesUploaded / file.size) * 100) : 0;\n\n const updatedFile = {\n ...file,\n bytesUploaded,\n progress,\n speed,\n };\n\n onFileProgress?.(updatedFile);\n return updatedFile;\n }),\n );\n\n // Trigger metrics update\n setTimeout(updateMetrics, 0);\n },\n [onFileProgress, updateMetrics],\n );\n\n const completeFileUpload = useCallback(\n (id: string) => {\n const now = Date.now();\n\n setFileMetrics((prev) =>\n prev.map((file) => {\n if (file.id !== id) return file;\n\n const duration = now - file.startTime;\n const speed = duration > 0 ? (file.size / duration) * 1000 : 0; // bytes per second\n\n const completedFile = {\n ...file,\n bytesUploaded: file.size,\n progress: 100,\n speed,\n endTime: now,\n duration,\n isComplete: true,\n };\n\n onFileComplete?.(completedFile);\n return completedFile;\n }),\n );\n\n // Trigger metrics update\n setTimeout(updateMetrics, 0);\n },\n [onFileComplete, updateMetrics],\n );\n\n const removeFile = useCallback(\n (id: string) => {\n setFileMetrics((prev) => prev.filter((file) => file.id !== id));\n setTimeout(updateMetrics, 0);\n },\n [updateMetrics],\n );\n\n const reset = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n\n setMetrics(initialMetrics);\n setFileMetrics([]);\n speedSamplesRef.current = [];\n lastUpdateRef.current = 0;\n }, []);\n\n const getFileMetrics = useCallback(\n (id: string) => {\n return fileMetrics.find((file) => file.id === id);\n },\n [fileMetrics],\n );\n\n const exportMetrics = useCallback(() => {\n return {\n overall: metrics,\n files: fileMetrics,\n exportTime: Date.now(),\n };\n }, [metrics, fileMetrics]);\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n };\n }, []);\n\n return {\n metrics,\n fileMetrics,\n startFileUpload,\n updateFileProgress,\n completeFileUpload,\n removeFile,\n reset,\n getFileMetrics,\n exportMetrics,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-upload-metrics-2HKWi6GZ.mjs","names":["initialMetrics: UploadMetrics","estimatedTimeRemaining: number | null","newMetrics: UploadMetrics","fileMetric: FileUploadMetrics"],"sources":["../src/hooks/use-upload-metrics.ts"],"sourcesContent":["import type {\n ChunkMetrics,\n PerformanceInsights,\n UploadSessionMetrics,\n} from \"@uploadista/client-core\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport { useUploadistaContext } from \"../components/uploadista-provider\";\n\nexport type Timeout = ReturnType<typeof setInterval>;\n\nexport interface UploadMetrics {\n /**\n * Total bytes uploaded across all files\n */\n totalBytesUploaded: number;\n\n /**\n * Total bytes to upload across all files\n */\n totalBytes: number;\n\n /**\n * Overall upload speed in bytes per second\n */\n averageSpeed: number;\n\n /**\n * Current upload speed in bytes per second\n */\n currentSpeed: number;\n\n /**\n * Estimated time remaining in milliseconds\n */\n estimatedTimeRemaining: number | null;\n\n /**\n * Total number of files being tracked\n */\n totalFiles: number;\n\n /**\n * Number of files completed\n */\n completedFiles: number;\n\n /**\n * Number of files currently uploading\n */\n activeUploads: number;\n\n /**\n * Overall progress as percentage (0-100)\n */\n progress: number;\n\n /**\n * Peak upload speed achieved\n */\n peakSpeed: number;\n\n /**\n * Start time of the first upload\n */\n startTime: number | null;\n\n /**\n * End time of the last completed upload\n */\n endTime: number | null;\n\n /**\n * Total duration of all uploads\n */\n totalDuration: number | null;\n\n /**\n * Detailed performance insights from the upload client\n */\n insights: PerformanceInsights;\n\n /**\n * Session metrics for completed uploads\n */\n sessionMetrics: Partial<UploadSessionMetrics>[];\n\n /**\n * Detailed chunk metrics from recent uploads\n */\n chunkMetrics: ChunkMetrics[];\n}\n\nexport interface FileUploadMetrics {\n id: string;\n filename: string;\n size: number;\n bytesUploaded: number;\n progress: number;\n speed: number;\n startTime: number;\n endTime: number | null;\n duration: number | null;\n isComplete: boolean;\n}\n\nexport interface UseUploadMetricsOptions {\n /**\n * Interval for calculating current speed (in milliseconds)\n */\n speedCalculationInterval?: number;\n\n /**\n * Number of speed samples to keep for average calculation\n */\n speedSampleSize?: number;\n\n /**\n * Called when metrics are updated\n */\n onMetricsUpdate?: (metrics: UploadMetrics) => void;\n\n /**\n * Called when a file upload starts\n */\n onFileStart?: (fileMetrics: FileUploadMetrics) => void;\n\n /**\n * Called when a file upload progresses\n */\n onFileProgress?: (fileMetrics: FileUploadMetrics) => void;\n\n /**\n * Called when a file upload completes\n */\n onFileComplete?: (fileMetrics: FileUploadMetrics) => void;\n}\n\nexport interface UseUploadMetricsReturn {\n /**\n * Current overall metrics\n */\n metrics: UploadMetrics;\n\n /**\n * Individual file metrics\n */\n fileMetrics: FileUploadMetrics[];\n\n /**\n * Start tracking a new file upload\n */\n startFileUpload: (id: string, filename: string, size: number) => void;\n\n /**\n * Update progress for a file upload\n */\n updateFileProgress: (id: string, bytesUploaded: number) => void;\n\n /**\n * Mark a file upload as complete\n */\n completeFileUpload: (id: string) => void;\n\n /**\n * Remove a file from tracking\n */\n removeFile: (id: string) => void;\n\n /**\n * Reset all metrics\n */\n reset: () => void;\n\n /**\n * Get metrics for a specific file\n */\n getFileMetrics: (id: string) => FileUploadMetrics | undefined;\n\n /**\n * Export metrics as JSON\n */\n exportMetrics: () => {\n overall: UploadMetrics;\n files: FileUploadMetrics[];\n exportTime: number;\n };\n}\n\nconst initialMetrics: UploadMetrics = {\n totalBytesUploaded: 0,\n totalBytes: 0,\n averageSpeed: 0,\n currentSpeed: 0,\n estimatedTimeRemaining: null,\n totalFiles: 0,\n completedFiles: 0,\n activeUploads: 0,\n progress: 0,\n peakSpeed: 0,\n startTime: null,\n endTime: null,\n totalDuration: null,\n insights: {\n overallEfficiency: 0,\n chunkingEffectiveness: 0,\n networkStability: 0,\n recommendations: [],\n optimalChunkSizeRange: { min: 256 * 1024, max: 2 * 1024 * 1024 },\n },\n sessionMetrics: [],\n chunkMetrics: [],\n};\n\n/**\n * React hook for tracking detailed upload metrics and performance statistics.\n * Provides comprehensive monitoring of upload progress, speed, and timing data.\n *\n * @param options - Configuration and event handlers\n * @returns Upload metrics state and control methods\n *\n * @example\n * ```tsx\n * const uploadMetrics = useUploadMetrics({\n * speedCalculationInterval: 1000, // Update speed every second\n * speedSampleSize: 10, // Keep last 10 speed samples for average\n * onMetricsUpdate: (metrics) => {\n * console.log(`Overall progress: ${metrics.progress}%`);\n * console.log(`Speed: ${(metrics.currentSpeed / 1024).toFixed(1)} KB/s`);\n * console.log(`ETA: ${metrics.estimatedTimeRemaining}ms`);\n * },\n * onFileComplete: (fileMetrics) => {\n * console.log(`${fileMetrics.filename} completed in ${fileMetrics.duration}ms`);\n * },\n * });\n *\n * // Start tracking a file\n * const handleFileStart = (file: File) => {\n * uploadMetrics.startFileUpload(file.name, file.name, file.size);\n * };\n *\n * // Update progress during upload\n * const handleProgress = (fileId: string, bytesUploaded: number) => {\n * uploadMetrics.updateFileProgress(fileId, bytesUploaded);\n * };\n *\n * // Display metrics\n * return (\n * <div>\n * <div>Overall Progress: {uploadMetrics.metrics.progress}%</div>\n * <div>Speed: {(uploadMetrics.metrics.currentSpeed / 1024).toFixed(1)} KB/s</div>\n * <div>Files: {uploadMetrics.metrics.completedFiles}/{uploadMetrics.metrics.totalFiles}</div>\n *\n * {uploadMetrics.metrics.estimatedTimeRemaining && (\n * <div>ETA: {Math.round(uploadMetrics.metrics.estimatedTimeRemaining / 1000)}s</div>\n * )}\n *\n * {uploadMetrics.fileMetrics.map((file) => (\n * <div key={file.id}>\n * {file.filename}: {file.progress}% ({(file.speed / 1024).toFixed(1)} KB/s)\n * </div>\n * ))}\n * </div>\n * );\n * ```\n */\nexport function useUploadMetrics(\n options: UseUploadMetricsOptions = {},\n): UseUploadMetricsReturn {\n const {\n speedCalculationInterval = 1000,\n speedSampleSize = 10,\n onMetricsUpdate,\n onFileStart,\n onFileProgress,\n onFileComplete,\n } = options;\n\n const uploadClient = useUploadistaContext();\n\n const [metrics, setMetrics] = useState<UploadMetrics>(initialMetrics);\n const [fileMetrics, setFileMetrics] = useState<FileUploadMetrics[]>([]);\n\n const speedSamplesRef = useRef<Array<{ time: number; bytes: number }>>([]);\n const lastUpdateRef = useRef<number>(0);\n const intervalRef = useRef<Timeout | null>(null);\n\n const calculateSpeed = useCallback(\n (currentTime: number, totalBytesUploaded: number) => {\n const sample = { time: currentTime, bytes: totalBytesUploaded };\n speedSamplesRef.current.push(sample);\n\n // Keep only recent samples\n if (speedSamplesRef.current.length > speedSampleSize) {\n speedSamplesRef.current = speedSamplesRef.current.slice(\n -speedSampleSize,\n );\n }\n\n // Calculate current speed (bytes per second)\n let currentSpeed = 0;\n if (speedSamplesRef.current.length >= 2) {\n const recent =\n speedSamplesRef.current[speedSamplesRef.current.length - 1];\n const previous =\n speedSamplesRef.current[speedSamplesRef.current.length - 2];\n if (recent && previous) {\n const timeDiff = (recent.time - previous.time) / 1000; // Convert to seconds\n const bytesDiff = recent.bytes - previous.bytes;\n currentSpeed = timeDiff > 0 ? bytesDiff / timeDiff : 0;\n }\n }\n\n // Calculate average speed\n let averageSpeed = 0;\n if (speedSamplesRef.current.length >= 2) {\n const first = speedSamplesRef.current[0];\n const last =\n speedSamplesRef.current[speedSamplesRef.current.length - 1];\n if (first && last) {\n const totalTime = (last.time - first.time) / 1000; // Convert to seconds\n const totalBytes = last.bytes - first.bytes;\n averageSpeed = totalTime > 0 ? totalBytes / totalTime : 0;\n }\n }\n\n return { currentSpeed, averageSpeed };\n },\n [speedSampleSize],\n );\n\n const updateMetrics = useCallback(() => {\n const now = Date.now();\n\n // Calculate totals from file metrics\n const totalBytes = fileMetrics.reduce((sum, file) => sum + file.size, 0);\n const totalBytesUploaded = fileMetrics.reduce(\n (sum, file) => sum + file.bytesUploaded,\n 0,\n );\n const completedFiles = fileMetrics.filter((file) => file.isComplete).length;\n const activeUploads = fileMetrics.filter(\n (file) => !file.isComplete && file.bytesUploaded > 0,\n ).length;\n\n // Calculate speeds\n const { currentSpeed, averageSpeed } = calculateSpeed(\n now,\n totalBytesUploaded,\n );\n\n // Calculate progress\n const progress =\n totalBytes > 0 ? Math.round((totalBytesUploaded / totalBytes) * 100) : 0;\n\n // Calculate estimated time remaining\n let estimatedTimeRemaining: number | null = null;\n if (currentSpeed > 0) {\n const remainingBytes = totalBytes - totalBytesUploaded;\n estimatedTimeRemaining = (remainingBytes / currentSpeed) * 1000; // Convert to milliseconds\n }\n\n // Find start and end times\n const activeTimes = fileMetrics.filter((file) => file.startTime > 0);\n const startTime =\n activeTimes.length > 0\n ? Math.min(...activeTimes.map((file) => file.startTime))\n : null;\n\n const completedTimes = fileMetrics.filter((file) => file.endTime !== null);\n const endTime =\n completedTimes.length > 0 && completedFiles === fileMetrics.length\n ? Math.max(\n ...completedTimes\n .map((file) => file.endTime)\n .filter((time) => time !== null),\n )\n : null;\n\n const totalDuration = startTime && endTime ? endTime - startTime : null;\n\n const newMetrics: UploadMetrics = {\n totalBytesUploaded,\n totalBytes,\n averageSpeed,\n currentSpeed,\n estimatedTimeRemaining,\n totalFiles: fileMetrics.length,\n completedFiles,\n activeUploads,\n progress,\n peakSpeed: Math.max(metrics.peakSpeed, currentSpeed),\n startTime,\n endTime,\n totalDuration,\n insights: uploadClient.client.getChunkingInsights(),\n sessionMetrics: [uploadClient.client.exportMetrics().session],\n chunkMetrics: uploadClient.client.exportMetrics().chunks,\n };\n\n setMetrics(newMetrics);\n onMetricsUpdate?.(newMetrics);\n }, [\n fileMetrics,\n metrics.peakSpeed,\n calculateSpeed,\n onMetricsUpdate,\n uploadClient.client,\n ]);\n\n // Set up periodic speed calculations\n const setupSpeedCalculation = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n\n intervalRef.current = setInterval(() => {\n if (\n fileMetrics.some((file) => !file.isComplete && file.bytesUploaded > 0)\n ) {\n updateMetrics();\n }\n }, speedCalculationInterval);\n\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n };\n }, [speedCalculationInterval, updateMetrics, fileMetrics]);\n\n const startFileUpload = useCallback(\n (id: string, filename: string, size: number) => {\n const now = Date.now();\n\n const fileMetric: FileUploadMetrics = {\n id,\n filename,\n size,\n bytesUploaded: 0,\n progress: 0,\n speed: 0,\n startTime: now,\n endTime: null,\n duration: null,\n isComplete: false,\n };\n\n setFileMetrics((prev) => {\n const existing = prev.find((file) => file.id === id);\n if (existing) {\n return prev.map((file) => (file.id === id ? fileMetric : file));\n }\n return [...prev, fileMetric];\n });\n\n onFileStart?.(fileMetric);\n\n // Start speed calculation if this is the first active upload\n if (fileMetrics.filter((file) => !file.isComplete).length === 0) {\n setupSpeedCalculation();\n }\n },\n [fileMetrics, onFileStart, setupSpeedCalculation],\n );\n\n const updateFileProgress = useCallback(\n (id: string, bytesUploaded: number) => {\n const now = Date.now();\n\n setFileMetrics((prev) =>\n prev.map((file) => {\n if (file.id !== id) return file;\n\n const timeDiff = (now - file.startTime) / 1000; // seconds\n const speed = timeDiff > 0 ? bytesUploaded / timeDiff : 0;\n const progress =\n file.size > 0 ? Math.round((bytesUploaded / file.size) * 100) : 0;\n\n const updatedFile = {\n ...file,\n bytesUploaded,\n progress,\n speed,\n };\n\n onFileProgress?.(updatedFile);\n return updatedFile;\n }),\n );\n\n // Trigger metrics update\n setTimeout(updateMetrics, 0);\n },\n [onFileProgress, updateMetrics],\n );\n\n const completeFileUpload = useCallback(\n (id: string) => {\n const now = Date.now();\n\n setFileMetrics((prev) =>\n prev.map((file) => {\n if (file.id !== id) return file;\n\n const duration = now - file.startTime;\n const speed = duration > 0 ? (file.size / duration) * 1000 : 0; // bytes per second\n\n const completedFile = {\n ...file,\n bytesUploaded: file.size,\n progress: 100,\n speed,\n endTime: now,\n duration,\n isComplete: true,\n };\n\n onFileComplete?.(completedFile);\n return completedFile;\n }),\n );\n\n // Trigger metrics update\n setTimeout(updateMetrics, 0);\n },\n [onFileComplete, updateMetrics],\n );\n\n const removeFile = useCallback(\n (id: string) => {\n setFileMetrics((prev) => prev.filter((file) => file.id !== id));\n setTimeout(updateMetrics, 0);\n },\n [updateMetrics],\n );\n\n const reset = useCallback(() => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = null;\n }\n\n setMetrics(initialMetrics);\n setFileMetrics([]);\n speedSamplesRef.current = [];\n lastUpdateRef.current = 0;\n }, []);\n\n const getFileMetrics = useCallback(\n (id: string) => {\n return fileMetrics.find((file) => file.id === id);\n },\n [fileMetrics],\n );\n\n const exportMetrics = useCallback(() => {\n return {\n overall: metrics,\n files: fileMetrics,\n exportTime: Date.now(),\n };\n }, [metrics, fileMetrics]);\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n };\n }, []);\n\n return {\n metrics,\n fileMetrics,\n startFileUpload,\n updateFileProgress,\n completeFileUpload,\n removeFile,\n reset,\n getFileMetrics,\n exportMetrics,\n };\n}\n"],"mappings":"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"}
@@ -379,4 +379,4 @@ interface UseUploadMetricsReturn {
379
379
  declare function useUploadMetrics(options?: UseUploadMetricsOptions): UseUploadMetricsReturn;
380
380
  //#endregion
381
381
  export { useUploadMetrics as a, UseUploadMetricsReturn as i, UploadMetrics as n, UseMultiFlowUploadReturn as o, UseUploadMetricsOptions as r, useMultiFlowUpload as s, FileUploadMetrics as t };
382
- //# sourceMappingURL=use-upload-metrics-B1MJ8wLX.d.mts.map
382
+ //# sourceMappingURL=use-upload-metrics-DESSCpN5.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-upload-metrics-B1MJ8wLX.d.mts","names":[],"sources":["../src/hooks/use-multi-flow-upload.ts","../src/hooks/use-upload-metrics.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAuBA;;;;;;AAwKA;;;;AAE2B,UA1KV,wBAAA,CA0KU;;;;ECvLV,KAAA,EDiBR,oBCjBqB,CDiBA,kBCjBA,CAAA;EAqElB;;;EAUI,QAAA,EAAA,CAAA,KAAA,EDzDI,ICyDJ,EAAA,GDzDa,QCyDb,EAAA,GAAA,IAAA;EAAY;AAG5B;AAaA;EAc8B,UAAA,EAAA,CAAA,EAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EAKA;;;EAUoB,WAAA,EAAA,GAAA,GAAA,IAAA;EAGjC;;;EAuCiB,WAAA,EAAA,CAAA,EAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EAMrB;;;EAmFG,QAAA,EAAA,GAAA,GAAA,IAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBD1EhB,kBAAA,UACL,uBAAuB,sBAC/B;;;UCvLc,aAAA;;ADajB;;EAIS,kBAAA,EAAA,MAAA;EAKW;;;EA+JJ,UAAA,EAAA,MAAA;EACkB;;;EACP,YAAA,EAAA,MAAA;;;;ECvLV,YAAA,EAAA,MAAa;EAqElB;;;EAUI,sBAAA,EAAA,MAAA,GAAA,IAAA;EAAY;AAG5B;AAaA;EAc8B,UAAA,EAAA,MAAA;EAKA;;;EAUoB,cAAA,EAAA,MAAA;EAGjC;;;EAuCiB,aAAA,EAAA,MAAA;EAMrB;;;EAmFG,QAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;YA1LJ;;;;kBAKM,QAAQ;;;;gBAKV;;UAGC,iBAAA;;;;;;;;;;;;UAaA,uBAAA;;;;;;;;;;;;8BAca;;;;8BAKA;;;;iCAKG;;;;iCAKA;;UAGhB,sBAAA;;;;WAIN;;;;eAKI;;;;;;;;;;;;;;;;;;;;;;;;kCA8BmB;;;;;aAMrB;WACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkFK,gBAAA,WACL,0BACR"}
1
+ {"version":3,"file":"use-upload-metrics-DESSCpN5.d.mts","names":[],"sources":["../src/hooks/use-multi-flow-upload.ts","../src/hooks/use-upload-metrics.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAuBA;;;;;;AAwKA;;;;AAE2B,UA1KV,wBAAA,CA0KU;;;;ECvLV,KAAA,EDiBR,oBCjBqB,CDiBA,kBCjBA,CAAA;EAqElB;;;EAUI,QAAA,EAAA,CAAA,KAAA,EDzDI,ICyDJ,EAAA,GDzDa,QCyDb,EAAA,GAAA,IAAA;EAAY;AAG5B;AAaA;EAc8B,UAAA,EAAA,CAAA,EAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EAKA;;;EAUoB,WAAA,EAAA,GAAA,GAAA,IAAA;EAGjC;;;EAuCiB,WAAA,EAAA,CAAA,EAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EAMrB;;;EAmFG,QAAA,EAAA,GAAA,GAAA,IAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBD1EhB,kBAAA,UACL,uBAAuB,sBAC/B;;;UCvLc,aAAA;;ADajB;;EAIS,kBAAA,EAAA,MAAA;EAKW;;;EA+JJ,UAAA,EAAA,MAAA;EACkB;;;EACP,YAAA,EAAA,MAAA;;;;ECvLV,YAAA,EAAA,MAAa;EAqElB;;;EAUI,sBAAA,EAAA,MAAA,GAAA,IAAA;EAAY;AAG5B;AAaA;EAc8B,UAAA,EAAA,MAAA;EAKA;;;EAUoB,cAAA,EAAA,MAAA;EAGjC;;;EAuCiB,aAAA,EAAA,MAAA;EAMrB;;;EAmFG,QAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;YA1LJ;;;;kBAKM,QAAQ;;;;gBAKV;;UAGC,iBAAA;;;;;;;;;;;;UAaA,uBAAA;;;;;;;;;;;;8BAca;;;;8BAKA;;;;iCAKG;;;;iCAKA;;UAGhB,sBAAA;;;;WAIN;;;;eAKI;;;;;;;;;;;;;;;;;;;;;;;;kCA8BmB;;;;;aAMrB;WACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkFK,gBAAA,WACL,0BACR"}
@@ -773,4 +773,4 @@ interface UseUploadistaClientReturn {
773
773
  declare function useUploadistaClient(options: UseUploadistaClientOptions): UseUploadistaClientReturn;
774
774
  //#endregion
775
775
  export { useFlowUpload as _, MultiUploadState as a, UseDragDropReturn as b, useMultiUpload as c, UseUploadOptions as d, UseUploadReturn as f, UseFlowUploadReturn as g, FlowUploadStatus as h, MultiUploadOptions as i, UploadState as l, FlowUploadState as m, UseUploadistaClientReturn as n, UploadItem as o, useUpload as p, useUploadistaClient as r, UseMultiUploadReturn as s, UseUploadistaClientOptions as t, UploadStatus as u, DragDropOptions as v, useDragDrop as x, DragDropState as y };
776
- //# sourceMappingURL=use-uploadista-client-CoVgWDdz.d.mts.map
776
+ //# sourceMappingURL=use-uploadista-client-Dp8_ZO7d.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-uploadista-client-CoVgWDdz.d.mts","names":[],"sources":["../src/hooks/use-drag-drop.ts","../src/hooks/use-flow-upload.ts","../src/hooks/use-upload.ts","../src/hooks/use-multi-upload.ts","../src/hooks/use-uploadista-client.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"use-uploadista-client-Dp8_ZO7d.d.mts","names":[],"sources":["../src/hooks/use-drag-drop.ts","../src/hooks/use-flow-upload.ts","../src/hooks/use-upload.ts","../src/hooks/use-multi-upload.ts","../src/hooks/use-uploadista-client.ts"],"sourcesContent":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@uploadista/react",
3
3
  "type": "module",
4
- "version": "0.0.13-beta.5",
4
+ "version": "0.0.13",
5
5
  "description": "React client for Uploadista",
6
6
  "license": "MIT",
7
7
  "author": "Uploadista",
@@ -22,16 +22,16 @@
22
22
  "dependencies": {
23
23
  "react": "19.2.0",
24
24
  "react-dom": "19.2.0",
25
- "@uploadista/client-core": "0.0.13-beta.5",
26
- "@uploadista/core": "0.0.13-beta.5",
27
- "@uploadista/client-browser": "0.0.13-beta.5"
25
+ "@uploadista/core": "0.0.13",
26
+ "@uploadista/client-core": "0.0.13",
27
+ "@uploadista/client-browser": "0.0.13"
28
28
  },
29
29
  "devDependencies": {
30
- "@types/react": "19.2.2",
31
- "@types/react-dom": "19.2.2",
32
- "tsdown": "0.16.0",
33
- "vitest": "4.0.7",
34
- "@uploadista/typescript-config": "0.0.13-beta.5"
30
+ "@types/react": "19.2.3",
31
+ "@types/react-dom": "19.2.3",
32
+ "tsdown": "0.16.3",
33
+ "vitest": "4.0.8",
34
+ "@uploadista/typescript-config": "0.0.13"
35
35
  },
36
36
  "scripts": {
37
37
  "build": "tsdown",