@uploadista/client-core 0.0.3

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 (235) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +100 -0
  4. package/dist/auth/auth-http-client.d.ts +50 -0
  5. package/dist/auth/auth-http-client.d.ts.map +1 -0
  6. package/dist/auth/auth-http-client.js +110 -0
  7. package/dist/auth/direct-auth.d.ts +38 -0
  8. package/dist/auth/direct-auth.d.ts.map +1 -0
  9. package/dist/auth/direct-auth.js +95 -0
  10. package/dist/auth/index.d.ts +6 -0
  11. package/dist/auth/index.d.ts.map +1 -0
  12. package/dist/auth/index.js +5 -0
  13. package/dist/auth/no-auth.d.ts +26 -0
  14. package/dist/auth/no-auth.d.ts.map +1 -0
  15. package/dist/auth/no-auth.js +33 -0
  16. package/dist/auth/saas-auth.d.ts +80 -0
  17. package/dist/auth/saas-auth.d.ts.map +1 -0
  18. package/dist/auth/saas-auth.js +167 -0
  19. package/dist/auth/types.d.ts +101 -0
  20. package/dist/auth/types.d.ts.map +1 -0
  21. package/dist/auth/types.js +8 -0
  22. package/dist/chunk-buffer.d.ts +209 -0
  23. package/dist/chunk-buffer.d.ts.map +1 -0
  24. package/dist/chunk-buffer.js +236 -0
  25. package/dist/client/create-uploadista-client.d.ts +369 -0
  26. package/dist/client/create-uploadista-client.d.ts.map +1 -0
  27. package/dist/client/create-uploadista-client.js +518 -0
  28. package/dist/client/index.d.ts +4 -0
  29. package/dist/client/index.d.ts.map +1 -0
  30. package/dist/client/index.js +3 -0
  31. package/dist/client/uploadista-api.d.ts +284 -0
  32. package/dist/client/uploadista-api.d.ts.map +1 -0
  33. package/dist/client/uploadista-api.js +444 -0
  34. package/dist/client/uploadista-websocket-manager.d.ts +110 -0
  35. package/dist/client/uploadista-websocket-manager.d.ts.map +1 -0
  36. package/dist/client/uploadista-websocket-manager.js +207 -0
  37. package/dist/error.d.ts +106 -0
  38. package/dist/error.d.ts.map +1 -0
  39. package/dist/error.js +69 -0
  40. package/dist/index.d.ts +9 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +12 -0
  43. package/dist/logger.d.ts +70 -0
  44. package/dist/logger.d.ts.map +1 -0
  45. package/dist/logger.js +59 -0
  46. package/dist/mock-data-store.d.ts +30 -0
  47. package/dist/mock-data-store.d.ts.map +1 -0
  48. package/dist/mock-data-store.js +88 -0
  49. package/dist/network-monitor.d.ts +262 -0
  50. package/dist/network-monitor.d.ts.map +1 -0
  51. package/dist/network-monitor.js +291 -0
  52. package/dist/services/abort-controller-service.d.ts +19 -0
  53. package/dist/services/abort-controller-service.d.ts.map +1 -0
  54. package/dist/services/abort-controller-service.js +4 -0
  55. package/dist/services/checksum-service.d.ts +4 -0
  56. package/dist/services/checksum-service.d.ts.map +1 -0
  57. package/dist/services/checksum-service.js +1 -0
  58. package/dist/services/file-reader-service.d.ts +38 -0
  59. package/dist/services/file-reader-service.d.ts.map +1 -0
  60. package/dist/services/file-reader-service.js +4 -0
  61. package/dist/services/fingerprint-service.d.ts +4 -0
  62. package/dist/services/fingerprint-service.d.ts.map +1 -0
  63. package/dist/services/fingerprint-service.js +1 -0
  64. package/dist/services/http-client.d.ts +182 -0
  65. package/dist/services/http-client.d.ts.map +1 -0
  66. package/dist/services/http-client.js +1 -0
  67. package/dist/services/id-generation-service.d.ts +10 -0
  68. package/dist/services/id-generation-service.d.ts.map +1 -0
  69. package/dist/services/id-generation-service.js +1 -0
  70. package/dist/services/index.d.ts +11 -0
  71. package/dist/services/index.d.ts.map +1 -0
  72. package/dist/services/index.js +10 -0
  73. package/dist/services/platform-service.d.ts +48 -0
  74. package/dist/services/platform-service.d.ts.map +1 -0
  75. package/dist/services/platform-service.js +10 -0
  76. package/dist/services/service-container.d.ts +25 -0
  77. package/dist/services/service-container.d.ts.map +1 -0
  78. package/dist/services/service-container.js +1 -0
  79. package/dist/services/storage-service.d.ts +26 -0
  80. package/dist/services/storage-service.d.ts.map +1 -0
  81. package/dist/services/storage-service.js +1 -0
  82. package/dist/services/websocket-service.d.ts +36 -0
  83. package/dist/services/websocket-service.d.ts.map +1 -0
  84. package/dist/services/websocket-service.js +4 -0
  85. package/dist/smart-chunker.d.ts +72 -0
  86. package/dist/smart-chunker.d.ts.map +1 -0
  87. package/dist/smart-chunker.js +317 -0
  88. package/dist/storage/client-storage.d.ts +148 -0
  89. package/dist/storage/client-storage.d.ts.map +1 -0
  90. package/dist/storage/client-storage.js +62 -0
  91. package/dist/storage/in-memory-storage-service.d.ts +7 -0
  92. package/dist/storage/in-memory-storage-service.d.ts.map +1 -0
  93. package/dist/storage/in-memory-storage-service.js +24 -0
  94. package/dist/storage/index.d.ts +3 -0
  95. package/dist/storage/index.d.ts.map +1 -0
  96. package/dist/storage/index.js +2 -0
  97. package/dist/types/buffered-chunk.d.ts +6 -0
  98. package/dist/types/buffered-chunk.d.ts.map +1 -0
  99. package/dist/types/buffered-chunk.js +1 -0
  100. package/dist/types/chunk-metrics.d.ts +12 -0
  101. package/dist/types/chunk-metrics.d.ts.map +1 -0
  102. package/dist/types/chunk-metrics.js +1 -0
  103. package/dist/types/flow-result.d.ts +11 -0
  104. package/dist/types/flow-result.d.ts.map +1 -0
  105. package/dist/types/flow-result.js +1 -0
  106. package/dist/types/flow-upload-config.d.ts +54 -0
  107. package/dist/types/flow-upload-config.d.ts.map +1 -0
  108. package/dist/types/flow-upload-config.js +1 -0
  109. package/dist/types/flow-upload-item.d.ts +16 -0
  110. package/dist/types/flow-upload-item.d.ts.map +1 -0
  111. package/dist/types/flow-upload-item.js +1 -0
  112. package/dist/types/flow-upload-options.d.ts +41 -0
  113. package/dist/types/flow-upload-options.d.ts.map +1 -0
  114. package/dist/types/flow-upload-options.js +1 -0
  115. package/dist/types/index.d.ts +14 -0
  116. package/dist/types/index.d.ts.map +1 -0
  117. package/dist/types/index.js +13 -0
  118. package/dist/types/multi-flow-upload-options.d.ts +33 -0
  119. package/dist/types/multi-flow-upload-options.d.ts.map +1 -0
  120. package/dist/types/multi-flow-upload-options.js +1 -0
  121. package/dist/types/multi-flow-upload-state.d.ts +9 -0
  122. package/dist/types/multi-flow-upload-state.d.ts.map +1 -0
  123. package/dist/types/multi-flow-upload-state.js +1 -0
  124. package/dist/types/performance-insights.d.ts +11 -0
  125. package/dist/types/performance-insights.d.ts.map +1 -0
  126. package/dist/types/performance-insights.js +1 -0
  127. package/dist/types/previous-upload.d.ts +20 -0
  128. package/dist/types/previous-upload.d.ts.map +1 -0
  129. package/dist/types/previous-upload.js +9 -0
  130. package/dist/types/upload-options.d.ts +40 -0
  131. package/dist/types/upload-options.d.ts.map +1 -0
  132. package/dist/types/upload-options.js +1 -0
  133. package/dist/types/upload-response.d.ts +6 -0
  134. package/dist/types/upload-response.d.ts.map +1 -0
  135. package/dist/types/upload-response.js +1 -0
  136. package/dist/types/upload-result.d.ts +57 -0
  137. package/dist/types/upload-result.d.ts.map +1 -0
  138. package/dist/types/upload-result.js +1 -0
  139. package/dist/types/upload-session-metrics.d.ts +16 -0
  140. package/dist/types/upload-session-metrics.d.ts.map +1 -0
  141. package/dist/types/upload-session-metrics.js +1 -0
  142. package/dist/upload/chunk-upload.d.ts +40 -0
  143. package/dist/upload/chunk-upload.d.ts.map +1 -0
  144. package/dist/upload/chunk-upload.js +82 -0
  145. package/dist/upload/flow-upload.d.ts +48 -0
  146. package/dist/upload/flow-upload.d.ts.map +1 -0
  147. package/dist/upload/flow-upload.js +240 -0
  148. package/dist/upload/index.d.ts +3 -0
  149. package/dist/upload/index.d.ts.map +1 -0
  150. package/dist/upload/index.js +2 -0
  151. package/dist/upload/parallel-upload.d.ts +65 -0
  152. package/dist/upload/parallel-upload.d.ts.map +1 -0
  153. package/dist/upload/parallel-upload.js +231 -0
  154. package/dist/upload/single-upload.d.ts +118 -0
  155. package/dist/upload/single-upload.d.ts.map +1 -0
  156. package/dist/upload/single-upload.js +332 -0
  157. package/dist/upload/upload-manager.d.ts +30 -0
  158. package/dist/upload/upload-manager.d.ts.map +1 -0
  159. package/dist/upload/upload-manager.js +57 -0
  160. package/dist/upload/upload-metrics.d.ts +37 -0
  161. package/dist/upload/upload-metrics.d.ts.map +1 -0
  162. package/dist/upload/upload-metrics.js +236 -0
  163. package/dist/upload/upload-storage.d.ts +32 -0
  164. package/dist/upload/upload-storage.d.ts.map +1 -0
  165. package/dist/upload/upload-storage.js +46 -0
  166. package/dist/upload/upload-strategy.d.ts +66 -0
  167. package/dist/upload/upload-strategy.d.ts.map +1 -0
  168. package/dist/upload/upload-strategy.js +171 -0
  169. package/dist/upload/upload-utils.d.ts +26 -0
  170. package/dist/upload/upload-utils.d.ts.map +1 -0
  171. package/dist/upload/upload-utils.js +80 -0
  172. package/package.json +29 -0
  173. package/src/__tests__/smart-chunking.test.ts +399 -0
  174. package/src/auth/__tests__/auth-http-client.test.ts +327 -0
  175. package/src/auth/__tests__/direct-auth.test.ts +135 -0
  176. package/src/auth/__tests__/no-auth.test.ts +40 -0
  177. package/src/auth/__tests__/saas-auth.test.ts +337 -0
  178. package/src/auth/auth-http-client.ts +150 -0
  179. package/src/auth/direct-auth.ts +121 -0
  180. package/src/auth/index.ts +5 -0
  181. package/src/auth/no-auth.ts +39 -0
  182. package/src/auth/saas-auth.ts +218 -0
  183. package/src/auth/types.ts +105 -0
  184. package/src/chunk-buffer.ts +287 -0
  185. package/src/client/create-uploadista-client.ts +901 -0
  186. package/src/client/index.ts +3 -0
  187. package/src/client/uploadista-api.ts +857 -0
  188. package/src/client/uploadista-websocket-manager.ts +275 -0
  189. package/src/error.ts +149 -0
  190. package/src/index.ts +13 -0
  191. package/src/logger.ts +104 -0
  192. package/src/mock-data-store.ts +97 -0
  193. package/src/network-monitor.ts +445 -0
  194. package/src/services/abort-controller-service.ts +21 -0
  195. package/src/services/checksum-service.ts +3 -0
  196. package/src/services/file-reader-service.ts +44 -0
  197. package/src/services/fingerprint-service.ts +6 -0
  198. package/src/services/http-client.ts +229 -0
  199. package/src/services/id-generation-service.ts +9 -0
  200. package/src/services/index.ts +10 -0
  201. package/src/services/platform-service.ts +65 -0
  202. package/src/services/service-container.ts +24 -0
  203. package/src/services/storage-service.ts +29 -0
  204. package/src/services/websocket-service.ts +33 -0
  205. package/src/smart-chunker.ts +451 -0
  206. package/src/storage/client-storage.ts +186 -0
  207. package/src/storage/in-memory-storage-service.ts +33 -0
  208. package/src/storage/index.ts +2 -0
  209. package/src/types/buffered-chunk.ts +5 -0
  210. package/src/types/chunk-metrics.ts +11 -0
  211. package/src/types/flow-result.ts +14 -0
  212. package/src/types/flow-upload-config.ts +56 -0
  213. package/src/types/flow-upload-item.ts +16 -0
  214. package/src/types/flow-upload-options.ts +56 -0
  215. package/src/types/index.ts +13 -0
  216. package/src/types/multi-flow-upload-options.ts +39 -0
  217. package/src/types/multi-flow-upload-state.ts +9 -0
  218. package/src/types/performance-insights.ts +7 -0
  219. package/src/types/previous-upload.ts +22 -0
  220. package/src/types/upload-options.ts +56 -0
  221. package/src/types/upload-response.ts +6 -0
  222. package/src/types/upload-result.ts +60 -0
  223. package/src/types/upload-session-metrics.ts +15 -0
  224. package/src/upload/chunk-upload.ts +151 -0
  225. package/src/upload/flow-upload.ts +367 -0
  226. package/src/upload/index.ts +2 -0
  227. package/src/upload/parallel-upload.ts +387 -0
  228. package/src/upload/single-upload.ts +554 -0
  229. package/src/upload/upload-manager.ts +106 -0
  230. package/src/upload/upload-metrics.ts +340 -0
  231. package/src/upload/upload-storage.ts +87 -0
  232. package/src/upload/upload-strategy.ts +296 -0
  233. package/src/upload/upload-utils.ts +114 -0
  234. package/tsconfig.json +23 -0
  235. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,182 @@
1
+ import type { AbortSignalLike } from "./abort-controller-service";
2
+ /**
3
+ * Platform-agnostic request body type.
4
+ *
5
+ * Supports various data formats for HTTP request bodies across different platforms.
6
+ */
7
+ export type RequestBody = string | Uint8Array | ArrayBuffer | null | undefined;
8
+ /**
9
+ * Platform-agnostic HTTP headers interface.
10
+ *
11
+ * Provides a subset of the Web Headers API that works across platforms.
12
+ */
13
+ export interface HeadersLike {
14
+ /** Retrieves a header value by name, or null if not found */
15
+ get(name: string): string | null;
16
+ /** Checks if a header exists */
17
+ has(name: string): boolean;
18
+ /** Iterates over all headers */
19
+ forEach(callback: (value: string, name: string) => void): void;
20
+ }
21
+ /**
22
+ * Options for HTTP requests.
23
+ *
24
+ * Platform-agnostic configuration for making HTTP requests with support
25
+ * for headers, body data, abort signals, timeouts, and credentials.
26
+ */
27
+ export interface HttpRequestOptions {
28
+ /** HTTP method (GET, POST, PATCH, DELETE, etc.) */
29
+ method?: string;
30
+ /** Request headers as key-value pairs */
31
+ headers?: Record<string, string>;
32
+ /** Request body data */
33
+ body?: unknown;
34
+ /** Abort signal for cancelling the request */
35
+ signal?: AbortSignalLike;
36
+ /** Request timeout in milliseconds */
37
+ timeout?: number;
38
+ /** Credentials mode for cross-origin requests */
39
+ credentials?: "include" | "omit" | "same-origin";
40
+ }
41
+ /**
42
+ * Platform-agnostic HTTP response interface.
43
+ *
44
+ * Provides a subset of the Web Response API that works across platforms.
45
+ */
46
+ export interface HttpResponse {
47
+ /** HTTP status code (200, 404, 500, etc.) */
48
+ status: number;
49
+ /** HTTP status text (OK, Not Found, etc.) */
50
+ statusText: string;
51
+ /** Response headers */
52
+ headers: HeadersLike;
53
+ /** True if status is in the 200-299 range */
54
+ ok: boolean;
55
+ /** Parses response body as JSON */
56
+ json(): Promise<unknown>;
57
+ /** Reads response body as text */
58
+ text(): Promise<string>;
59
+ /** Reads response body as ArrayBuffer */
60
+ arrayBuffer(): Promise<ArrayBuffer>;
61
+ }
62
+ /**
63
+ * Configuration for HTTP connection pooling.
64
+ *
65
+ * Controls how connections are managed, reused, and maintained for optimal
66
+ * upload performance. Properly configured connection pooling can significantly
67
+ * improve upload speeds by reusing existing connections.
68
+ */
69
+ export interface ConnectionPoolConfig {
70
+ /** Maximum number of concurrent connections per host. Defaults to 8. */
71
+ maxConnectionsPerHost?: number;
72
+ /** Timeout for establishing new connections in milliseconds. Defaults to 20000. */
73
+ connectionTimeout?: number;
74
+ /** How long to keep idle connections alive in milliseconds. Defaults to 90000. */
75
+ keepAliveTimeout?: number;
76
+ /** Enable HTTP/2 for connection multiplexing. Defaults to true. */
77
+ enableHttp2?: boolean;
78
+ /** Automatically retry requests on connection errors. Defaults to true. */
79
+ retryOnConnectionError?: boolean;
80
+ }
81
+ /**
82
+ * Basic connection pool metrics.
83
+ *
84
+ * Provides insight into connection pool performance and efficiency.
85
+ */
86
+ export interface ConnectionMetrics {
87
+ /** Number of currently active connections */
88
+ activeConnections: number;
89
+ /** Total connections created since pool initialization */
90
+ totalConnections: number;
91
+ /** Ratio of connection reuse (0-1, higher is better) */
92
+ reuseRate: number;
93
+ /** Average time to establish connections in milliseconds */
94
+ averageConnectionTime: number;
95
+ }
96
+ /**
97
+ * Connection pool health assessment.
98
+ *
99
+ * Provides diagnostic information about connection pool health
100
+ * and recommendations for optimization.
101
+ */
102
+ export interface ConnectionHealth {
103
+ /** Overall health status */
104
+ status: "healthy" | "degraded" | "poor";
105
+ /** Health score from 0-100 (higher is better) */
106
+ score: number;
107
+ /** List of identified issues affecting performance */
108
+ issues: string[];
109
+ /** Recommendations for improving connection pool performance */
110
+ recommendations: string[];
111
+ }
112
+ /**
113
+ * HTTP/2 support and status information.
114
+ *
115
+ * Indicates whether HTTP/2 is available and being used,
116
+ * which can significantly improve upload performance through multiplexing.
117
+ */
118
+ export interface Http2Info {
119
+ /** Whether HTTP/2 is supported by the platform */
120
+ supported: boolean;
121
+ /** Whether HTTP/2 was detected on the server */
122
+ detected: boolean;
123
+ /** HTTP version being used (e.g., "2.0", "1.1") */
124
+ version: string;
125
+ /** Whether HTTP/2 multiplexing is actively being used */
126
+ multiplexingActive: boolean;
127
+ }
128
+ /**
129
+ * Detailed connection pool metrics with health diagnostics.
130
+ *
131
+ * Extends basic metrics with comprehensive diagnostic information
132
+ * for troubleshooting performance issues.
133
+ */
134
+ export interface DetailedConnectionMetrics extends ConnectionMetrics {
135
+ /** Connection pool health assessment */
136
+ health: ConnectionHealth;
137
+ /** Average requests per second */
138
+ requestsPerSecond: number;
139
+ /** Ratio of failed requests (0-1) */
140
+ errorRate: number;
141
+ /** Number of requests that timed out */
142
+ timeouts: number;
143
+ /** Number of requests that were retried */
144
+ retries: number;
145
+ /** Number of fast connections (likely reused) */
146
+ fastConnections: number;
147
+ /** Number of slow connections (likely new) */
148
+ slowConnections: number;
149
+ /** HTTP/2 support and usage information */
150
+ http2Info: Http2Info;
151
+ }
152
+ /**
153
+ * HTTP client interface that provides connection pooling capabilities
154
+ * for optimized upload performance.
155
+ */
156
+ export interface HttpClient {
157
+ /**
158
+ * Make an HTTP request using connection pooling
159
+ */
160
+ request(url: string, options?: HttpRequestOptions): Promise<HttpResponse>;
161
+ /**
162
+ * Get current connection pool metrics
163
+ */
164
+ getMetrics(): ConnectionMetrics;
165
+ /**
166
+ * Get detailed connection metrics with health diagnostics
167
+ */
168
+ getDetailedMetrics(): DetailedConnectionMetrics;
169
+ /**
170
+ * Reset connection pool and metrics
171
+ */
172
+ reset(): void;
173
+ /**
174
+ * Gracefully close all connections
175
+ */
176
+ close(): Promise<void>;
177
+ /**
178
+ * Warm up connections by making preflight requests
179
+ */
180
+ warmupConnections(urls: string[]): Promise<void>;
181
+ }
182
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/services/http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Platform-agnostic ID generation service
3
+ */
4
+ export interface IdGenerationService {
5
+ /**
6
+ * Generate a unique identifier
7
+ */
8
+ generate(): string;
9
+ }
10
+ //# sourceMappingURL=id-generation-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-generation-service.d.ts","sourceRoot":"","sources":["../../src/services/id-generation-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;CACpB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ export * from "./abort-controller-service";
2
+ export * from "./checksum-service";
3
+ export * from "./file-reader-service";
4
+ export * from "./fingerprint-service";
5
+ export * from "./http-client";
6
+ export * from "./id-generation-service";
7
+ export * from "./platform-service";
8
+ export * from "./service-container";
9
+ export * from "./storage-service";
10
+ export * from "./websocket-service";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from "./abort-controller-service";
2
+ export * from "./checksum-service";
3
+ export * from "./file-reader-service";
4
+ export * from "./fingerprint-service";
5
+ export * from "./http-client";
6
+ export * from "./id-generation-service";
7
+ export * from "./platform-service";
8
+ export * from "./service-container";
9
+ export * from "./storage-service";
10
+ export * from "./websocket-service";
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Platform-agnostic service for platform-specific APIs
3
+ * Provides abstraction for timer functions and platform detection
4
+ */
5
+ export type Timeout = unknown;
6
+ export interface PlatformService {
7
+ /**
8
+ * Schedule a callback to run after a delay
9
+ */
10
+ setTimeout: (callback: () => void, ms: number | undefined) => Timeout;
11
+ /**
12
+ * Cancel a scheduled callback
13
+ */
14
+ clearTimeout: (id: Timeout) => void;
15
+ /**
16
+ * Check if we're in a browser environment
17
+ */
18
+ isBrowser: () => boolean;
19
+ /**
20
+ * Check if network is online
21
+ */
22
+ isOnline: () => boolean;
23
+ /**
24
+ * Check if a value is a File-like object
25
+ */
26
+ isFileLike: (value: unknown) => boolean;
27
+ /**
28
+ * Get file name from File-like object
29
+ */
30
+ getFileName: (file: unknown) => string | undefined;
31
+ /**
32
+ * Get file type from File-like object
33
+ */
34
+ getFileType: (file: unknown) => string | undefined;
35
+ /**
36
+ * Get file size from File-like object
37
+ */
38
+ getFileSize: (file: unknown) => number | undefined;
39
+ /**
40
+ * Get file last modified timestamp from File-like object
41
+ */
42
+ getFileLastModified: (file: unknown) => number | undefined;
43
+ }
44
+ /**
45
+ * Simple async wait utility
46
+ */
47
+ export declare function wait(platformService: PlatformService, ms: number): Promise<void>;
48
+ //# sourceMappingURL=platform-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-service.d.ts","sourceRoot":"","sources":["../../src/services/platform-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC;AAE9B,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;IAEtE;;OAEG;IACH,YAAY,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IAEpC;;OAEG;IACH,SAAS,EAAE,MAAM,OAAO,CAAC;IAEzB;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAExC;;OAEG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IAEnD;;OAEG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IAEnD;;OAEG;IACH,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IAEnD;;OAEG;IACH,mBAAmB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CAC5D;AAED;;GAEG;AACH,wBAAsB,IAAI,CACxB,eAAe,EAAE,eAAe,EAChC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Platform-agnostic service for platform-specific APIs
3
+ * Provides abstraction for timer functions and platform detection
4
+ */
5
+ /**
6
+ * Simple async wait utility
7
+ */
8
+ export async function wait(platformService, ms) {
9
+ return new Promise((resolve) => platformService.setTimeout(resolve, ms));
10
+ }
@@ -0,0 +1,25 @@
1
+ import type { AbortControllerFactory } from "./abort-controller-service";
2
+ import type { ChecksumService } from "./checksum-service";
3
+ import type { Base64Service, FileReaderService } from "./file-reader-service";
4
+ import type { FingerprintService } from "./fingerprint-service";
5
+ import type { HttpClient } from "./http-client";
6
+ import type { IdGenerationService } from "./id-generation-service";
7
+ import type { PlatformService } from "./platform-service";
8
+ import type { StorageService } from "./storage-service";
9
+ import type { WebSocketFactory } from "./websocket-service";
10
+ /**
11
+ * Service container for dependency injection
12
+ */
13
+ export interface ServiceContainer<UploadInput> {
14
+ storage: StorageService;
15
+ idGeneration: IdGenerationService;
16
+ httpClient: HttpClient;
17
+ fileReader: FileReaderService<UploadInput>;
18
+ base64?: Base64Service;
19
+ websocket: WebSocketFactory;
20
+ abortController: AbortControllerFactory;
21
+ platform: PlatformService;
22
+ checksumService: ChecksumService;
23
+ fingerprintService: FingerprintService<UploadInput>;
24
+ }
25
+ //# sourceMappingURL=service-container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-container.d.ts","sourceRoot":"","sources":["../../src/services/service-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,WAAW;IAC3C,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,mBAAmB,CAAC;IAClC,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,eAAe,EAAE,sBAAsB,CAAC;IACxC,QAAQ,EAAE,eAAe,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;CACrD"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Platform-agnostic storage service for persisting upload state
3
+ */
4
+ export interface StorageService {
5
+ /**
6
+ * Get an item from storage
7
+ */
8
+ getItem(key: string): Promise<string | null>;
9
+ /**
10
+ * Set an item in storage
11
+ */
12
+ setItem(key: string, value: string): Promise<void>;
13
+ /**
14
+ * Remove an item from storage
15
+ */
16
+ removeItem(key: string): Promise<void>;
17
+ /**
18
+ * Get all items in storage
19
+ */
20
+ findAll(): Promise<Record<string, string>>;
21
+ /**
22
+ * Find items by prefix
23
+ */
24
+ find(prefix: string): Promise<Record<string, string>>;
25
+ }
26
+ //# sourceMappingURL=storage-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-service.d.ts","sourceRoot":"","sources":["../../src/services/storage-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE7C;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3C;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Platform-agnostic WebSocket interface
3
+ */
4
+ export interface WebSocketEventMap {
5
+ open: unknown;
6
+ close: unknown;
7
+ error: unknown;
8
+ message: unknown;
9
+ }
10
+ export interface WebSocketLike {
11
+ readyState: number;
12
+ readonly CONNECTING: number;
13
+ readonly OPEN: number;
14
+ readonly CLOSING: number;
15
+ readonly CLOSED: number;
16
+ onopen: (() => void) | null;
17
+ onclose: ((event: {
18
+ code: number;
19
+ reason: string;
20
+ }) => void) | null;
21
+ onerror: ((event: {
22
+ message: string;
23
+ }) => void) | null;
24
+ onmessage: ((event: {
25
+ data: string;
26
+ }) => void) | null;
27
+ send(data: string | Uint8Array): void;
28
+ close(code?: number, reason?: string): void;
29
+ }
30
+ export interface WebSocketFactory {
31
+ /**
32
+ * Create a WebSocket connection to the given URL
33
+ */
34
+ create(url: string): WebSocketLike;
35
+ }
36
+ //# sourceMappingURL=websocket-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-service.d.ts","sourceRoot":"","sources":["../../src/services/websocket-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAEtD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CACpC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Platform-agnostic WebSocket interface
3
+ */
4
+ export {};
@@ -0,0 +1,72 @@
1
+ import type { NetworkCondition, NetworkMonitor } from "./network-monitor";
2
+ import type { ConnectionMetrics } from "./services/http-client";
3
+ export interface ChunkingStrategy {
4
+ name: string;
5
+ minChunkSize: number;
6
+ maxChunkSize: number;
7
+ initialChunkSize: number;
8
+ adaptationRate: number;
9
+ }
10
+ export interface DatastoreConstraints {
11
+ minChunkSize: number;
12
+ maxChunkSize: number;
13
+ optimalChunkSize: number;
14
+ requiresOrderedChunks?: boolean;
15
+ }
16
+ export interface SmartChunkerConfig {
17
+ enabled?: boolean;
18
+ fallbackChunkSize?: number;
19
+ minChunkSize?: number;
20
+ maxChunkSize?: number;
21
+ initialChunkSize?: number;
22
+ targetUtilization?: number;
23
+ adaptationRate?: number;
24
+ conservativeMode?: boolean;
25
+ connectionPoolingAware?: boolean;
26
+ datastoreConstraints?: DatastoreConstraints;
27
+ }
28
+ export interface ChunkSizeDecision {
29
+ size: number;
30
+ strategy: string;
31
+ reason: string;
32
+ networkCondition: NetworkCondition;
33
+ }
34
+ export declare class SmartChunker {
35
+ private config;
36
+ private networkMonitor;
37
+ private currentChunkSize;
38
+ private lastDecision;
39
+ private consecutiveFailures;
40
+ private consecutiveSuccesses;
41
+ private connectionMetrics;
42
+ constructor(networkMonitor: NetworkMonitor, config?: SmartChunkerConfig);
43
+ private getEffectiveInitialChunkSize;
44
+ private applyDatastoreConstraints;
45
+ getNextChunkSize(remainingBytes?: number): ChunkSizeDecision;
46
+ recordChunkResult(size: number, duration: number, success: boolean): void;
47
+ getCurrentChunkSize(): number;
48
+ getLastDecision(): ChunkSizeDecision | null;
49
+ reset(): void;
50
+ /**
51
+ * Update connection metrics for connection pooling aware optimizations
52
+ */
53
+ updateConnectionMetrics(metrics: ConnectionMetrics): void;
54
+ /**
55
+ * Get insights about connection pooling impact on chunking
56
+ */
57
+ getConnectionPoolingInsights(): {
58
+ isOptimized: boolean;
59
+ reuseRate: number;
60
+ recommendedMinChunkSize: number;
61
+ connectionOverhead: number;
62
+ };
63
+ private selectStrategy;
64
+ /**
65
+ * Optimize chunking strategy based on connection pooling performance
66
+ */
67
+ private optimizeStrategyForConnectionPooling;
68
+ private calculateOptimalChunkSize;
69
+ private getTargetChunkDuration;
70
+ private adaptChunkSize;
71
+ }
72
+ //# sourceMappingURL=smart-chunker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-chunker.d.ts","sourceRoot":"","sources":["../src/smart-chunker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAkDD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAEZ;IACF,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,iBAAiB,CAAkC;gBAE/C,cAAc,EAAE,cAAc,EAAE,MAAM,GAAE,kBAAuB;IAkB3E,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,yBAAyB;IAUjC,gBAAgB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAyD5D,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAiBzE,mBAAmB,IAAI,MAAM;IAI7B,eAAe,IAAI,iBAAiB,GAAG,IAAI;IAI3C,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAIzD;;OAEG;IACH,4BAA4B,IAAI;QAC9B,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,uBAAuB,EAAE,MAAM,CAAC;QAChC,kBAAkB,EAAE,MAAM,CAAC;KAC5B;IA4BD,OAAO,CAAC,cAAc;IAgDtB;;OAEG;IACH,OAAO,CAAC,oCAAoC;IAwC5C,OAAO,CAAC,yBAAyB;IA0CjC,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,cAAc;CAoCvB"}