@wlindabla/file_uploader 1.0.0 → 2.0.1

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 (110) hide show
  1. package/README.md +54 -28
  2. package/dist/cjs/cache/index.d.ts +198 -0
  3. package/dist/cjs/cache/index.js +318 -0
  4. package/dist/cjs/cache/index.js.map +1 -0
  5. package/dist/cjs/core/index.d.ts +271 -0
  6. package/dist/cjs/core/index.js +762 -0
  7. package/dist/cjs/core/index.js.map +1 -0
  8. package/dist/cjs/events/chunk/index.d.ts +27 -0
  9. package/dist/cjs/events/chunk/index.js +70 -0
  10. package/dist/cjs/events/chunk/index.js.map +1 -0
  11. package/dist/cjs/events/complete/index.d.ts +64 -0
  12. package/dist/cjs/events/complete/index.js +152 -0
  13. package/dist/cjs/events/complete/index.js.map +1 -0
  14. package/dist/cjs/events/index.d.ts +95 -0
  15. package/dist/cjs/events/index.js +85 -0
  16. package/dist/cjs/events/index.js.map +1 -0
  17. package/dist/cjs/events/initialize/index.d.ts +45 -0
  18. package/dist/cjs/events/initialize/index.js +105 -0
  19. package/dist/cjs/events/initialize/index.js.map +1 -0
  20. package/dist/cjs/events/state/index.d.ts +67 -0
  21. package/dist/cjs/events/state/index.js +145 -0
  22. package/dist/cjs/events/state/index.js.map +1 -0
  23. package/dist/cjs/exceptions/index.d.ts +84 -0
  24. package/dist/{exceptions → cjs/exceptions}/index.js +38 -18
  25. package/dist/cjs/exceptions/index.js.map +1 -0
  26. package/dist/cjs/index.d.ts +14 -0
  27. package/dist/cjs/index.js +33 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/cjs/subscribers/index.d.ts +34 -0
  30. package/dist/cjs/subscribers/index.js +187 -0
  31. package/dist/cjs/subscribers/index.js.map +1 -0
  32. package/dist/cjs/types/index.d.ts +110 -0
  33. package/dist/cjs/types/index.js +53 -0
  34. package/dist/cjs/types/index.js.map +1 -0
  35. package/dist/cjs/utils/index.d.ts +72 -0
  36. package/dist/cjs/utils/index.js +208 -0
  37. package/dist/cjs/utils/index.js.map +1 -0
  38. package/dist/esm/cache/index.d.mts +198 -0
  39. package/dist/esm/cache/index.js +4 -0
  40. package/dist/{index.js.map → esm/cache/index.js.map} +1 -1
  41. package/dist/{events/initialize/index.js → esm/chunk-3JTTZCSQ.js} +25 -19
  42. package/dist/esm/chunk-3JTTZCSQ.js.map +1 -0
  43. package/dist/{events/state/index.js → esm/chunk-6225YMFE.js} +38 -20
  44. package/dist/esm/chunk-6225YMFE.js.map +1 -0
  45. package/dist/esm/chunk-7QVYU63E.js +6 -0
  46. package/dist/esm/chunk-7QVYU63E.js.map +1 -0
  47. package/dist/{events/complete/index.js → esm/chunk-BNMI7DW3.js} +25 -19
  48. package/dist/esm/chunk-BNMI7DW3.js.map +1 -0
  49. package/dist/{subscribers/index.js → esm/chunk-HYNJBWW5.js} +36 -34
  50. package/dist/esm/chunk-HYNJBWW5.js.map +1 -0
  51. package/dist/{events/index.js → esm/chunk-JDL3U4OX.js} +7 -37
  52. package/dist/esm/chunk-JDL3U4OX.js.map +1 -0
  53. package/dist/{events/chunk/index.js → esm/chunk-LD2DWZRJ.js} +14 -11
  54. package/dist/esm/chunk-LD2DWZRJ.js.map +1 -0
  55. package/dist/{utils/index.js → esm/chunk-MFYC4PBP.js} +15 -22
  56. package/dist/esm/chunk-MFYC4PBP.js.map +1 -0
  57. package/dist/esm/chunk-NXYS73I4.js +125 -0
  58. package/dist/esm/chunk-NXYS73I4.js.map +1 -0
  59. package/dist/{cache/index.js → esm/chunk-PFALORWQ.js} +10 -11
  60. package/dist/esm/chunk-PFALORWQ.js.map +1 -0
  61. package/dist/{core/index.js → esm/chunk-TONVXBLH.js} +239 -231
  62. package/dist/esm/chunk-TONVXBLH.js.map +1 -0
  63. package/dist/{types/index.js → esm/chunk-X757PBC5.js} +5 -7
  64. package/dist/esm/chunk-X757PBC5.js.map +1 -0
  65. package/dist/esm/core/index.d.mts +271 -0
  66. package/dist/esm/core/index.js +12 -0
  67. package/dist/esm/core/index.js.map +1 -0
  68. package/dist/esm/events/chunk/index.d.mts +27 -0
  69. package/dist/esm/events/chunk/index.js +4 -0
  70. package/dist/esm/events/chunk/index.js.map +1 -0
  71. package/dist/esm/events/complete/index.d.mts +64 -0
  72. package/dist/esm/events/complete/index.js +4 -0
  73. package/dist/esm/events/complete/index.js.map +1 -0
  74. package/dist/esm/events/index.d.mts +95 -0
  75. package/dist/esm/events/index.js +8 -0
  76. package/dist/esm/events/index.js.map +1 -0
  77. package/dist/esm/events/initialize/index.d.mts +45 -0
  78. package/dist/esm/events/initialize/index.js +4 -0
  79. package/dist/esm/events/initialize/index.js.map +1 -0
  80. package/dist/esm/events/state/index.d.mts +67 -0
  81. package/dist/esm/events/state/index.js +4 -0
  82. package/dist/esm/events/state/index.js.map +1 -0
  83. package/dist/esm/exceptions/index.d.mts +84 -0
  84. package/dist/esm/exceptions/index.js +4 -0
  85. package/dist/esm/exceptions/index.js.map +1 -0
  86. package/dist/esm/index.d.mts +14 -0
  87. package/dist/esm/index.js +14 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/subscribers/index.d.mts +34 -0
  90. package/dist/esm/subscribers/index.js +10 -0
  91. package/dist/esm/subscribers/index.js.map +1 -0
  92. package/dist/esm/types/index.d.mts +110 -0
  93. package/dist/esm/types/index.js +4 -0
  94. package/dist/esm/types/index.js.map +1 -0
  95. package/dist/esm/utils/index.d.mts +72 -0
  96. package/dist/esm/utils/index.js +5 -0
  97. package/dist/esm/utils/index.js.map +1 -0
  98. package/package.json +165 -14
  99. package/dist/cache/index.js.map +0 -1
  100. package/dist/core/index.js.map +0 -1
  101. package/dist/events/chunk/index.js.map +0 -1
  102. package/dist/events/complete/index.js.map +0 -1
  103. package/dist/events/index.js.map +0 -1
  104. package/dist/events/initialize/index.js.map +0 -1
  105. package/dist/events/state/index.js.map +0 -1
  106. package/dist/exceptions/index.js.map +0 -1
  107. package/dist/index.js +0 -49
  108. package/dist/subscribers/index.js.map +0 -1
  109. package/dist/types/index.js.map +0 -1
  110. package/dist/utils/index.js.map +0 -1
@@ -0,0 +1,45 @@
1
+ import { InitializeUploadOptions, InitializeUploadResponse } from '../../types/index.mjs';
2
+ import { BaseEvent } from '@wlindabla/event_dispatcher';
3
+ import '@wlindabla/http_client';
4
+
5
+ /**
6
+ * Event data for Upload State INITIALIZE
7
+ */
8
+ declare class InitializingUploadEvent extends BaseEvent {
9
+ readonly initUploadOptions: InitializeUploadOptions;
10
+ private _mediaId;
11
+ constructor(initUploadOptions: InitializeUploadOptions);
12
+ setMediaId(_mediaUploadId: string): void;
13
+ get mediaId(): string;
14
+ }
15
+ /**
16
+ * Event data for INITIALIZE_UPLOAD_STARTED
17
+ */
18
+ declare class InitializeUploadStartedEvent extends BaseEvent {
19
+ readonly fileName: string;
20
+ readonly fileSize: number;
21
+ readonly fileHash: string;
22
+ constructor(fileName: string, fileSize: number, fileHash: string);
23
+ }
24
+ /**
25
+ * Event data for INITIALIZE_UPLOAD_SUCCESS
26
+ */
27
+ declare class InitializeUploadSuccessEvent extends BaseEvent {
28
+ readonly status: number;
29
+ readonly sessionId: string;
30
+ readonly responseData: InitializeUploadResponse;
31
+ constructor(status: number, sessionId: string, responseData: InitializeUploadResponse);
32
+ }
33
+ /**
34
+ * Event data for INITIALIZE_UPLOAD_FAILURE
35
+ */
36
+ declare class InitializeUploadFailureEvent extends BaseEvent {
37
+ readonly error: Error;
38
+ readonly status?: number | undefined;
39
+ readonly errorData?: any | undefined;
40
+ readonly responseData?: any | undefined;
41
+ readonly isNetworkError?: boolean | undefined;
42
+ constructor(error: Error, status?: number | undefined, errorData?: any | undefined, responseData?: any | undefined, isNetworkError?: boolean | undefined);
43
+ }
44
+
45
+ export { InitializeUploadFailureEvent, InitializeUploadStartedEvent, InitializeUploadSuccessEvent, InitializingUploadEvent };
@@ -0,0 +1,4 @@
1
+ export { InitializeUploadFailureEvent, InitializeUploadStartedEvent, InitializeUploadSuccessEvent, InitializingUploadEvent } from '../../chunk-3JTTZCSQ.js';
2
+ import '../../chunk-7QVYU63E.js';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,67 @@
1
+ import { UploadProgress, UploadState } from '../../types/index.mjs';
2
+ import '@wlindabla/http_client';
3
+
4
+ /**
5
+ * Event data for UPLOAD_STATE_CHANGED
6
+ */
7
+ declare class UploadStateChangedEvent {
8
+ readonly oldState: UploadState;
9
+ readonly newState: UploadState;
10
+ readonly changedAt: number;
11
+ constructor(oldState: UploadState, newState: UploadState, changedAt?: number);
12
+ }
13
+ /**
14
+ * Event data for UPLOAD_CANCELLED
15
+ */
16
+ declare class UploadCancelledEvent {
17
+ readonly mediaName: string;
18
+ readonly totalChunks: number;
19
+ readonly uploadedBytes: number;
20
+ readonly percentage: number;
21
+ readonly currentChunkIndex: number;
22
+ readonly message: string;
23
+ readonly cancelledAt: number;
24
+ constructor(mediaName: string, totalChunks: number, uploadedBytes: number, percentage: number, currentChunkIndex: number, message?: string, cancelledAt?: number);
25
+ }
26
+ /**
27
+ * Event data for UPLOAD_RESUMED
28
+ */
29
+ declare class UploadResumedEvent {
30
+ readonly mediaName: string;
31
+ readonly totalChunks: number;
32
+ readonly uploadedBytes: number;
33
+ readonly percentage: number;
34
+ readonly resumedAt: number;
35
+ constructor(mediaName: string, totalChunks: number, uploadedBytes: number, percentage: number, resumedAt?: number);
36
+ }
37
+ /**
38
+ * Event data for UPLOAD_PAUSED
39
+ */
40
+ declare class UploadPausedEvent {
41
+ readonly mediaName: string;
42
+ readonly totalChunks: number;
43
+ readonly uploadedBytes: number;
44
+ readonly percentage: number;
45
+ readonly pausedAt: number;
46
+ constructor(mediaName: string, totalChunks: number, uploadedBytes: number, percentage: number, pausedAt?: number);
47
+ }
48
+ /**
49
+ * Event data for MEDIA_CHUNK_UPLOAD_SUCCESS
50
+ */
51
+ declare class UploadProgressEvent {
52
+ private readonly uploadProgress;
53
+ readonly responseData: string | Record<string, string | any> | unknown;
54
+ readonly httpStatus: number;
55
+ constructor(uploadProgress: UploadProgress, responseData: string | Record<string, string | any> | unknown, httpStatus: number);
56
+ get uploadedChunks(): number;
57
+ get totalChunks(): number;
58
+ get percentage(): number;
59
+ get uploadedBytes(): number;
60
+ get totalBytes(): number;
61
+ get currentChunk(): number;
62
+ get speed(): number | undefined;
63
+ get estimatedTimeRemaining(): number | undefined | null;
64
+ get elapsed(): number;
65
+ }
66
+
67
+ export { UploadCancelledEvent, UploadPausedEvent, UploadProgressEvent, UploadResumedEvent, UploadStateChangedEvent };
@@ -0,0 +1,4 @@
1
+ export { UploadCancelledEvent, UploadPausedEvent, UploadProgressEvent, UploadResumedEvent, UploadStateChangedEvent } from '../../chunk-6225YMFE.js';
2
+ import '../../chunk-7QVYU63E.js';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,84 @@
1
+ import { ChunkError, ChunkInfo } from '../types/index.mjs';
2
+ import '@wlindabla/http_client';
3
+
4
+ declare class InitializeUploadFailureException extends Error {
5
+ readonly responseData: any;
6
+ constructor(responseData: any, message: string);
7
+ }
8
+ /**
9
+ * Exception data for MEDIA_CHUNK_UPLOAD_HTTP_ERROR_RESPONSE
10
+ */
11
+ declare class ChunkUploadHttpErrorException extends Error {
12
+ readonly errorPayload: string | Record<string, string | unknown> | unknown;
13
+ readonly statusResponse: number;
14
+ constructor(errorPayload: string | Record<string, string | unknown> | unknown, statusResponse: number);
15
+ }
16
+ /**
17
+ * Custom error thrown during chunked file upload operations.
18
+ *
19
+ * This error provides detailed information about which chunk failed,
20
+ * the underlying error, and whether a retry will be attempted.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * try {
25
+ * await uploadChunk(chunk);
26
+ * } catch (error) {
27
+ * throw new FileUploadChunkError(
28
+ * `Failed to upload chunk ${chunkIndex}`,
29
+ * chunkError
30
+ * );
31
+ * }
32
+ *
33
+ * // Later in error handler
34
+ * if (error instanceof FileUploadChunkError) {
35
+ * console.log(`Chunk ${error.chunkIndex} failed`);
36
+ * console.log(`Will retry: ${error.willRetry}`);
37
+ * }
38
+ * ```
39
+ */
40
+ declare class FileUploadChunkError extends Error {
41
+ /**
42
+ * The detailed chunk error information
43
+ */
44
+ readonly chunkError: ChunkError;
45
+ /**
46
+ * Creates a new FileUploadChunkError
47
+ *
48
+ * @param message - Human-readable error message
49
+ * @param chunkError - Detailed information about the chunk failure
50
+ */
51
+ constructor(message: string, chunkError: ChunkError);
52
+ /**
53
+ * Gets the index of the chunk that failed
54
+ */
55
+ get chunkIndex(): number;
56
+ /**
57
+ * Gets the attempt number when the chunk failed
58
+ */
59
+ get attemptNumber(): number;
60
+ /**
61
+ * Indicates whether a retry will be attempted
62
+ */
63
+ get willRetry(): boolean;
64
+ /**
65
+ * Gets the underlying error that caused the chunk upload to fail
66
+ */
67
+ get underlyingError(): Error;
68
+ /**
69
+ * Gets the full chunk information
70
+ */
71
+ get chunk(): ChunkInfo;
72
+ /**
73
+ * Returns a JSON representation of the error
74
+ */
75
+ toJSON(): object;
76
+ }
77
+ declare class UploadCancelledException extends Error {
78
+ readonly chunkIndex: number;
79
+ readonly totalChunks: number;
80
+ readonly uploadedBytes: number;
81
+ constructor(chunkIndex: number, totalChunks: number, uploadedBytes: number, message: string);
82
+ }
83
+
84
+ export { ChunkUploadHttpErrorException, FileUploadChunkError, InitializeUploadFailureException, UploadCancelledException };
@@ -0,0 +1,4 @@
1
+ export { ChunkUploadHttpErrorException, FileUploadChunkError, InitializeUploadFailureException, UploadCancelledException } from '../chunk-NXYS73I4.js';
2
+ import '../chunk-7QVYU63E.js';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,14 @@
1
+ export { ChunkError, ChunkInfo, ChunkSizeConfig, DEFAULT_CONFIG, InitializeUploadOptions, InitializeUploadResponse, ResumeData, UploadEndpoints, UploadOptions, UploadProgress, UploadResult, UploadState, UploadStatus } from './types/index.mjs';
2
+ export { ChunkFormDataBuilder, ChunkFormDataOptions, ExponentialBackoffStrategy, FileUtils, LinearBackoffStrategy, createChunkFormData, updateProgressBarHTMLNotified } from './utils/index.mjs';
3
+ export { ChunkUploadHttpErrorException, FileUploadChunkError, InitializeUploadFailureException, UploadCancelledException } from './exceptions/index.mjs';
4
+ export { HttpFileUploaderEvents } from './events/index.mjs';
5
+ export { FinalizeUploadSubscriber, InitializeUploadSubscriber } from './subscribers/index.mjs';
6
+ export { DefaultUploadResumeCacheAdapter, UploadCacheError, UploadResumeCacheInterface } from './cache/index.mjs';
7
+ export { ChunkedFileUploader } from './core/index.mjs';
8
+ export { ChunkUploadHttpErrorResponseEvent, UploadChunkStartedEvent } from './events/chunk/index.mjs';
9
+ export { FinalizeUploadEvent, FinalizeUploadFailureEvent, ResumeUploadEvent, UploadMediaCompleteEvent } from './events/complete/index.mjs';
10
+ export { InitializeUploadFailureEvent, InitializeUploadStartedEvent, InitializeUploadSuccessEvent, InitializingUploadEvent } from './events/initialize/index.mjs';
11
+ export { UploadCancelledEvent, UploadPausedEvent, UploadProgressEvent, UploadResumedEvent, UploadStateChangedEvent } from './events/state/index.mjs';
12
+ import '@wlindabla/http_client';
13
+ import '@wlindabla/event_dispatcher';
14
+ import '@wlindabla/http_client/events';
@@ -0,0 +1,14 @@
1
+ export { FinalizeUploadSubscriber, InitializeUploadSubscriber } from './chunk-HYNJBWW5.js';
2
+ export { DefaultUploadResumeCacheAdapter, UploadCacheError } from './chunk-PFALORWQ.js';
3
+ export { ChunkedFileUploader } from './chunk-TONVXBLH.js';
4
+ export { ChunkUploadHttpErrorException, FileUploadChunkError, InitializeUploadFailureException, UploadCancelledException } from './chunk-NXYS73I4.js';
5
+ export { ChunkFormDataBuilder, ExponentialBackoffStrategy, FileUtils, LinearBackoffStrategy, createChunkFormData, updateProgressBarHTMLNotified } from './chunk-MFYC4PBP.js';
6
+ import './chunk-X757PBC5.js';
7
+ export { HttpFileUploaderEvents } from './chunk-JDL3U4OX.js';
8
+ export { ChunkUploadHttpErrorResponseEvent, UploadChunkStartedEvent } from './chunk-LD2DWZRJ.js';
9
+ export { FinalizeUploadEvent, FinalizeUploadFailureEvent, ResumeUploadEvent, UploadMediaCompleteEvent } from './chunk-BNMI7DW3.js';
10
+ export { InitializeUploadFailureEvent, InitializeUploadStartedEvent, InitializeUploadSuccessEvent, InitializingUploadEvent } from './chunk-3JTTZCSQ.js';
11
+ export { UploadCancelledEvent, UploadPausedEvent, UploadProgressEvent, UploadResumedEvent, UploadStateChangedEvent } from './chunk-6225YMFE.js';
12
+ import './chunk-7QVYU63E.js';
13
+ //# sourceMappingURL=index.js.map
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,34 @@
1
+ import { EventSubscriberInterface, EventDispatcherInterface } from '@wlindabla/event_dispatcher';
2
+ import { InitializingUploadEvent } from '../events/initialize/index.mjs';
3
+ import { FinalizeUploadEvent } from '../events/complete/index.mjs';
4
+ import '../types/index.mjs';
5
+ import '@wlindabla/http_client';
6
+ import '@wlindabla/http_client/events';
7
+
8
+ declare class InitializeUploadSubscriber implements EventSubscriberInterface {
9
+ private readonly eventDispatcher;
10
+ constructor(eventDispatcher: EventDispatcherInterface);
11
+ getSubscribedEvents(): Record<string, string | {
12
+ listener: string;
13
+ priority?: number | undefined;
14
+ }>;
15
+ /**
16
+ * Initializes upload session with the server.
17
+ *
18
+ * @param fileHash - SHA-256 hash of the file (first 1MB)
19
+ * @returns Session ID from server, or null if initialization failed
20
+ * @throws {FileUploadInitializationError} If server returns error or network fails
21
+ */
22
+ onInitializeUpload(event: InitializingUploadEvent): Promise<void>;
23
+ }
24
+ declare class FinalizeUploadSubscriber implements EventSubscriberInterface {
25
+ private readonly eventDispatcher;
26
+ constructor(eventDispatcher: EventDispatcherInterface);
27
+ getSubscribedEvents(): Record<string, string | {
28
+ listener: string;
29
+ priority?: number | undefined;
30
+ }>;
31
+ onFinalizeUpload(event: FinalizeUploadEvent): Promise<void>;
32
+ }
33
+
34
+ export { FinalizeUploadSubscriber, InitializeUploadSubscriber };
@@ -0,0 +1,10 @@
1
+ export { FinalizeUploadSubscriber, InitializeUploadSubscriber } from '../chunk-HYNJBWW5.js';
2
+ import '../chunk-NXYS73I4.js';
3
+ import '../chunk-JDL3U4OX.js';
4
+ import '../chunk-LD2DWZRJ.js';
5
+ import '../chunk-BNMI7DW3.js';
6
+ import '../chunk-3JTTZCSQ.js';
7
+ import '../chunk-6225YMFE.js';
8
+ import '../chunk-7QVYU63E.js';
9
+ //# sourceMappingURL=index.js.map
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,110 @@
1
+ import { FetchResponseInterface } from '@wlindabla/http_client';
2
+
3
+ interface UploadOptions {
4
+ autoSave?: boolean;
5
+ chunkSize?: number;
6
+ speedMbps?: number;
7
+ config?: ChunkSizeConfig;
8
+ headers?: HeadersInit;
9
+ chunkOtherData?: Record<string, any>;
10
+ metadata?: Record<string, any>;
11
+ maxRetries?: number;
12
+ timeout?: number;
13
+ initTimeout?: number;
14
+ headerInitialzingUpload?: HeadersInit;
15
+ headerFinalezingUpload?: HeadersInit;
16
+ concurrency?: number;
17
+ }
18
+ interface InitializeUploadOptions {
19
+ metadata?: Record<string, any>;
20
+ fileHash: string;
21
+ fileName: string;
22
+ fileSize: number;
23
+ fileType: string;
24
+ endpointInit: string | URL;
25
+ headers?: HeadersInit;
26
+ }
27
+ interface UploadEndpoints {
28
+ init: string | URL;
29
+ upload: string | URL;
30
+ finalize: string | URL;
31
+ }
32
+ interface ChunkSizeConfig {
33
+ defaultChunkSizeMB: number;
34
+ slowSpeedThresholdMbps: number;
35
+ slowSpeedChunkSizeMB: number;
36
+ fileSizeThresholds: Array<{
37
+ maxSizeMB: number;
38
+ chunkSizeMB: number;
39
+ }>;
40
+ }
41
+ type UploadStatus = 'pending' | 'uploading' | 'success' | 'error';
42
+ interface ChunkInfo {
43
+ index: number;
44
+ start: number;
45
+ end: number;
46
+ size: number;
47
+ attempt: number;
48
+ status: UploadStatus;
49
+ }
50
+ declare enum UploadState {
51
+ IDLE = "idle",
52
+ INITIALIZING = "initializing",
53
+ UPLOADING = "uploading",
54
+ PAUSED = "paused",
55
+ CANCELLED = "cancelled",
56
+ FINALIZING = "finalizing",
57
+ COMPLETED = "completed",
58
+ FAILED = "failed"
59
+ }
60
+ interface UploadResult {
61
+ success: boolean;
62
+ fileId?: string;
63
+ totalChunks: number;
64
+ totalBytes: number;
65
+ duration: number;
66
+ averageSpeed: number;
67
+ finalizeUploadResponse?: FetchResponseInterface | null;
68
+ statusResponse?: number;
69
+ }
70
+ interface ResumeData {
71
+ fileId: string;
72
+ fileName: string;
73
+ fileSize: number;
74
+ uploadedChunks: number;
75
+ lastChunkIndex: number;
76
+ lastBytePosition: number;
77
+ chunkSize: number;
78
+ concurrency: number;
79
+ }
80
+ declare const DEFAULT_CONFIG: Readonly<ChunkSizeConfig>;
81
+ interface UploadProgress {
82
+ uploadedChunks: number;
83
+ totalChunks: number;
84
+ uploadedBytes: number;
85
+ totalBytes: number;
86
+ percentage: number;
87
+ currentChunk: number;
88
+ speed?: number;
89
+ estimatedTimeRemaining?: number | null;
90
+ elapsed: number;
91
+ }
92
+ interface ChunkError {
93
+ chunk: ChunkInfo;
94
+ error: Error;
95
+ attempt: number;
96
+ willRetry: boolean;
97
+ }
98
+ /**
99
+ * Expected response structure from initialize endpoint
100
+ */
101
+ interface InitializeUploadResponse {
102
+ mediaIdFromServer?: string | number;
103
+ sessionId?: string | number;
104
+ uploadId?: string | number;
105
+ mediaId?: string | number;
106
+ message?: string | number;
107
+ [key: string]: any;
108
+ }
109
+
110
+ export { type ChunkError, type ChunkInfo, type ChunkSizeConfig, DEFAULT_CONFIG, type InitializeUploadOptions, type InitializeUploadResponse, type ResumeData, type UploadEndpoints, type UploadOptions, type UploadProgress, type UploadResult, UploadState, type UploadStatus };
@@ -0,0 +1,4 @@
1
+ export { DEFAULT_CONFIG, UploadState } from '../chunk-X757PBC5.js';
2
+ import '../chunk-7QVYU63E.js';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,72 @@
1
+ import { ChunkSizeConfig } from '../types/index.mjs';
2
+ import '@wlindabla/http_client';
3
+
4
+ declare class FileUtils {
5
+ static readonly MB: number;
6
+ static readonly GB: number;
7
+ static bytesToMB(bytes: number): number;
8
+ static bytesToGB(bytes: number): number;
9
+ static formatBytes(bytes: number): string;
10
+ static formatDuration(seconds: number): string;
11
+ static calculateChunkSize(fileSize: number, speedMbps?: number, config?: ChunkSizeConfig): number;
12
+ static generateFileHash(file: File | Blob): Promise<string>;
13
+ }
14
+ declare function updateProgressBarHTMLNotified(progress: number, media_id: number, filename: string, providerName?: string): string;
15
+ /**
16
+ * Options for creating chunk FormData
17
+ */
18
+ interface ChunkFormDataOptions {
19
+ chunkIndex: number;
20
+ totalChunks: number;
21
+ mediaId: string;
22
+ fileName: string;
23
+ fileSize: number;
24
+ fileHash: string;
25
+ metadata?: Record<string, string | Blob>;
26
+ }
27
+ /**
28
+ * Creates FormData for uploading a single file chunk.
29
+ *
30
+ * @param chunk - The chunk blob to upload
31
+ * @param options - Chunk upload options
32
+ * @returns FormData ready to be sent to the server
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const formData = createChunkFormData(blob, {
37
+ * chunkIndex: 5,
38
+ * totalChunks: 10,
39
+ * mediaId: 'abc123',
40
+ * fileName: 'video.mp4',
41
+ * fileSize: 104857600,
42
+ * fileHash: 'sha256...'
43
+ * });
44
+ * ```
45
+ */
46
+ declare function createChunkFormData(chunk: Blob, options: ChunkFormDataOptions): FormData;
47
+ /**
48
+ * Builder pattern for creating chunk FormData with fluent API.
49
+ */
50
+ declare class ChunkFormDataBuilder {
51
+ private formData;
52
+ constructor(chunk: Blob);
53
+ withChunkInfo(chunkIndex: number, totalChunks: number): this;
54
+ withFileInfo(fileName: string, fileSize: number, fileHash: string): this;
55
+ withSessionId(sessionId: string): this;
56
+ withMetadata(metadata: Record<string, string | Blob>): this;
57
+ build(): FormData;
58
+ }
59
+ interface RetryStrategyInterface {
60
+ shouldRetry(attempt: number, maxRetries: number, error: Error): boolean;
61
+ getDelay(attempt: number): number;
62
+ }
63
+ declare class ExponentialBackoffStrategy implements RetryStrategyInterface {
64
+ shouldRetry(attempt: number, maxRetries: number): boolean;
65
+ getDelay(attempt: number): number;
66
+ }
67
+ declare class LinearBackoffStrategy implements RetryStrategyInterface {
68
+ shouldRetry(attempt: number, maxRetries: number): boolean;
69
+ getDelay(attempt: number): number;
70
+ }
71
+
72
+ export { ChunkFormDataBuilder, type ChunkFormDataOptions, ExponentialBackoffStrategy, FileUtils, LinearBackoffStrategy, createChunkFormData, updateProgressBarHTMLNotified };
@@ -0,0 +1,5 @@
1
+ export { ChunkFormDataBuilder, ExponentialBackoffStrategy, FileUtils, LinearBackoffStrategy, createChunkFormData, updateProgressBarHTMLNotified } from '../chunk-MFYC4PBP.js';
2
+ import '../chunk-X757PBC5.js';
3
+ import '../chunk-7QVYU63E.js';
4
+ //# sourceMappingURL=index.js.map
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}