bytekit 0.1.12

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 (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2241 -0
  3. package/bin/sutils.js +9 -0
  4. package/dist/api-client.d.ts +2 -0
  5. package/dist/api-client.d.ts.map +1 -0
  6. package/dist/api-client.js +2 -0
  7. package/dist/api-client.js.map +1 -0
  8. package/dist/cli/index.d.ts +2 -0
  9. package/dist/cli/index.d.ts.map +1 -0
  10. package/dist/cli/index.js +401 -0
  11. package/dist/cli/index.js.map +1 -0
  12. package/dist/cli/type-generator.d.ts +12 -0
  13. package/dist/cli/type-generator.d.ts.map +1 -0
  14. package/dist/cli/type-generator.js +152 -0
  15. package/dist/cli/type-generator.js.map +1 -0
  16. package/dist/date-utils.d.ts +2 -0
  17. package/dist/date-utils.d.ts.map +1 -0
  18. package/dist/date-utils.js +2 -0
  19. package/dist/date-utils.js.map +1 -0
  20. package/dist/debug.d.ts +2 -0
  21. package/dist/debug.d.ts.map +1 -0
  22. package/dist/debug.js +2 -0
  23. package/dist/debug.js.map +1 -0
  24. package/dist/env-manager.d.ts +2 -0
  25. package/dist/env-manager.d.ts.map +1 -0
  26. package/dist/env-manager.js +2 -0
  27. package/dist/env-manager.js.map +1 -0
  28. package/dist/file-upload.d.ts +2 -0
  29. package/dist/file-upload.d.ts.map +1 -0
  30. package/dist/file-upload.js +2 -0
  31. package/dist/file-upload.js.map +1 -0
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +2 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/logger.d.ts +2 -0
  37. package/dist/logger.d.ts.map +1 -0
  38. package/dist/logger.js +2 -0
  39. package/dist/logger.js.map +1 -0
  40. package/dist/profiler.d.ts +2 -0
  41. package/dist/profiler.d.ts.map +1 -0
  42. package/dist/profiler.js +2 -0
  43. package/dist/profiler.js.map +1 -0
  44. package/dist/response-validator.d.ts +2 -0
  45. package/dist/response-validator.d.ts.map +1 -0
  46. package/dist/response-validator.js +2 -0
  47. package/dist/response-validator.js.map +1 -0
  48. package/dist/retry-policy.d.ts +2 -0
  49. package/dist/retry-policy.d.ts.map +1 -0
  50. package/dist/retry-policy.js +2 -0
  51. package/dist/retry-policy.js.map +1 -0
  52. package/dist/storage-utils.d.ts +2 -0
  53. package/dist/storage-utils.d.ts.map +1 -0
  54. package/dist/storage-utils.js +2 -0
  55. package/dist/storage-utils.js.map +1 -0
  56. package/dist/streaming.d.ts +2 -0
  57. package/dist/streaming.d.ts.map +1 -0
  58. package/dist/streaming.js +2 -0
  59. package/dist/streaming.js.map +1 -0
  60. package/dist/string-utils.d.ts +2 -0
  61. package/dist/string-utils.d.ts.map +1 -0
  62. package/dist/string-utils.js +2 -0
  63. package/dist/string-utils.js.map +1 -0
  64. package/dist/utils/core/ApiClient.d.ts +94 -0
  65. package/dist/utils/core/ApiClient.d.ts.map +1 -0
  66. package/dist/utils/core/ApiClient.js +291 -0
  67. package/dist/utils/core/ApiClient.js.map +1 -0
  68. package/dist/utils/core/ErrorBoundary.d.ts +141 -0
  69. package/dist/utils/core/ErrorBoundary.d.ts.map +1 -0
  70. package/dist/utils/core/ErrorBoundary.js +322 -0
  71. package/dist/utils/core/ErrorBoundary.js.map +1 -0
  72. package/dist/utils/core/Logger.d.ts +39 -0
  73. package/dist/utils/core/Logger.d.ts.map +1 -0
  74. package/dist/utils/core/Logger.js +154 -0
  75. package/dist/utils/core/Logger.js.map +1 -0
  76. package/dist/utils/core/Profiler.d.ts +8 -0
  77. package/dist/utils/core/Profiler.d.ts.map +1 -0
  78. package/dist/utils/core/Profiler.js +18 -0
  79. package/dist/utils/core/Profiler.js.map +1 -0
  80. package/dist/utils/core/RateLimiter.d.ts +74 -0
  81. package/dist/utils/core/RateLimiter.d.ts.map +1 -0
  82. package/dist/utils/core/RateLimiter.js +170 -0
  83. package/dist/utils/core/RateLimiter.js.map +1 -0
  84. package/dist/utils/core/RequestCache.d.ts +64 -0
  85. package/dist/utils/core/RequestCache.d.ts.map +1 -0
  86. package/dist/utils/core/RequestCache.js +139 -0
  87. package/dist/utils/core/RequestCache.js.map +1 -0
  88. package/dist/utils/core/RequestDeduplicator.d.ts +41 -0
  89. package/dist/utils/core/RequestDeduplicator.d.ts.map +1 -0
  90. package/dist/utils/core/RequestDeduplicator.js +83 -0
  91. package/dist/utils/core/RequestDeduplicator.js.map +1 -0
  92. package/dist/utils/core/ResponseValidator.d.ts +26 -0
  93. package/dist/utils/core/ResponseValidator.d.ts.map +1 -0
  94. package/dist/utils/core/ResponseValidator.js +140 -0
  95. package/dist/utils/core/ResponseValidator.js.map +1 -0
  96. package/dist/utils/core/RetryPolicy.d.ts +43 -0
  97. package/dist/utils/core/RetryPolicy.d.ts.map +1 -0
  98. package/dist/utils/core/RetryPolicy.js +119 -0
  99. package/dist/utils/core/RetryPolicy.js.map +1 -0
  100. package/dist/utils/core/debug.d.ts +46 -0
  101. package/dist/utils/core/debug.d.ts.map +1 -0
  102. package/dist/utils/core/debug.js +83 -0
  103. package/dist/utils/core/debug.js.map +1 -0
  104. package/dist/utils/core/index.d.ts +11 -0
  105. package/dist/utils/core/index.d.ts.map +1 -0
  106. package/dist/utils/core/index.js +11 -0
  107. package/dist/utils/core/index.js.map +1 -0
  108. package/dist/utils/helpers/ArrayUtils.d.ts +134 -0
  109. package/dist/utils/helpers/ArrayUtils.d.ts.map +1 -0
  110. package/dist/utils/helpers/ArrayUtils.js +301 -0
  111. package/dist/utils/helpers/ArrayUtils.js.map +1 -0
  112. package/dist/utils/helpers/CacheManager.d.ts +67 -0
  113. package/dist/utils/helpers/CacheManager.d.ts.map +1 -0
  114. package/dist/utils/helpers/CacheManager.js +222 -0
  115. package/dist/utils/helpers/CacheManager.js.map +1 -0
  116. package/dist/utils/helpers/CompressionUtils.d.ts +80 -0
  117. package/dist/utils/helpers/CompressionUtils.d.ts.map +1 -0
  118. package/dist/utils/helpers/CompressionUtils.js +224 -0
  119. package/dist/utils/helpers/CompressionUtils.js.map +1 -0
  120. package/dist/utils/helpers/CryptoUtils.d.ts +70 -0
  121. package/dist/utils/helpers/CryptoUtils.d.ts.map +1 -0
  122. package/dist/utils/helpers/CryptoUtils.js +215 -0
  123. package/dist/utils/helpers/CryptoUtils.js.map +1 -0
  124. package/dist/utils/helpers/DateUtils.d.ts +31 -0
  125. package/dist/utils/helpers/DateUtils.d.ts.map +1 -0
  126. package/dist/utils/helpers/DateUtils.js +104 -0
  127. package/dist/utils/helpers/DateUtils.js.map +1 -0
  128. package/dist/utils/helpers/DiffUtils.d.ts +61 -0
  129. package/dist/utils/helpers/DiffUtils.d.ts.map +1 -0
  130. package/dist/utils/helpers/DiffUtils.js +249 -0
  131. package/dist/utils/helpers/DiffUtils.js.map +1 -0
  132. package/dist/utils/helpers/EnvManager.d.ts +7 -0
  133. package/dist/utils/helpers/EnvManager.d.ts.map +1 -0
  134. package/dist/utils/helpers/EnvManager.js +19 -0
  135. package/dist/utils/helpers/EnvManager.js.map +1 -0
  136. package/dist/utils/helpers/EventEmitter.d.ts +78 -0
  137. package/dist/utils/helpers/EventEmitter.d.ts.map +1 -0
  138. package/dist/utils/helpers/EventEmitter.js +208 -0
  139. package/dist/utils/helpers/EventEmitter.js.map +1 -0
  140. package/dist/utils/helpers/FileUploadHelper.d.ts +44 -0
  141. package/dist/utils/helpers/FileUploadHelper.d.ts.map +1 -0
  142. package/dist/utils/helpers/FileUploadHelper.js +127 -0
  143. package/dist/utils/helpers/FileUploadHelper.js.map +1 -0
  144. package/dist/utils/helpers/FormUtils.d.ts +162 -0
  145. package/dist/utils/helpers/FormUtils.d.ts.map +1 -0
  146. package/dist/utils/helpers/FormUtils.js +378 -0
  147. package/dist/utils/helpers/FormUtils.js.map +1 -0
  148. package/dist/utils/helpers/ObjectUtils.d.ts +102 -0
  149. package/dist/utils/helpers/ObjectUtils.d.ts.map +1 -0
  150. package/dist/utils/helpers/ObjectUtils.js +297 -0
  151. package/dist/utils/helpers/ObjectUtils.js.map +1 -0
  152. package/dist/utils/helpers/PaginationHelper.d.ts +127 -0
  153. package/dist/utils/helpers/PaginationHelper.d.ts.map +1 -0
  154. package/dist/utils/helpers/PaginationHelper.js +259 -0
  155. package/dist/utils/helpers/PaginationHelper.js.map +1 -0
  156. package/dist/utils/helpers/PollingHelper.d.ts +64 -0
  157. package/dist/utils/helpers/PollingHelper.d.ts.map +1 -0
  158. package/dist/utils/helpers/PollingHelper.js +131 -0
  159. package/dist/utils/helpers/PollingHelper.js.map +1 -0
  160. package/dist/utils/helpers/StorageUtils.d.ts +9 -0
  161. package/dist/utils/helpers/StorageUtils.d.ts.map +1 -0
  162. package/dist/utils/helpers/StorageUtils.js +33 -0
  163. package/dist/utils/helpers/StorageUtils.js.map +1 -0
  164. package/dist/utils/helpers/StreamingHelper.d.ts +35 -0
  165. package/dist/utils/helpers/StreamingHelper.d.ts.map +1 -0
  166. package/dist/utils/helpers/StreamingHelper.js +167 -0
  167. package/dist/utils/helpers/StreamingHelper.js.map +1 -0
  168. package/dist/utils/helpers/StringUtils.d.ts +42 -0
  169. package/dist/utils/helpers/StringUtils.d.ts.map +1 -0
  170. package/dist/utils/helpers/StringUtils.js +173 -0
  171. package/dist/utils/helpers/StringUtils.js.map +1 -0
  172. package/dist/utils/helpers/TimeUtils.d.ts +87 -0
  173. package/dist/utils/helpers/TimeUtils.d.ts.map +1 -0
  174. package/dist/utils/helpers/TimeUtils.js +234 -0
  175. package/dist/utils/helpers/TimeUtils.js.map +1 -0
  176. package/dist/utils/helpers/Validator.d.ts +31 -0
  177. package/dist/utils/helpers/Validator.d.ts.map +1 -0
  178. package/dist/utils/helpers/Validator.js +156 -0
  179. package/dist/utils/helpers/Validator.js.map +1 -0
  180. package/dist/utils/helpers/WebSocketHelper.d.ts +63 -0
  181. package/dist/utils/helpers/WebSocketHelper.d.ts.map +1 -0
  182. package/dist/utils/helpers/WebSocketHelper.js +200 -0
  183. package/dist/utils/helpers/WebSocketHelper.js.map +1 -0
  184. package/dist/utils/helpers/index.d.ts +20 -0
  185. package/dist/utils/helpers/index.d.ts.map +1 -0
  186. package/dist/utils/helpers/index.js +20 -0
  187. package/dist/utils/helpers/index.js.map +1 -0
  188. package/dist/utils/index.d.ts +21 -0
  189. package/dist/utils/index.d.ts.map +1 -0
  190. package/dist/utils/index.js +21 -0
  191. package/dist/utils/index.js.map +1 -0
  192. package/dist/validator.d.ts +2 -0
  193. package/dist/validator.d.ts.map +1 -0
  194. package/dist/validator.js +2 -0
  195. package/dist/validator.js.map +1 -0
  196. package/dist/websocket.d.ts +2 -0
  197. package/dist/websocket.d.ts.map +1 -0
  198. package/dist/websocket.js +2 -0
  199. package/dist/websocket.js.map +1 -0
  200. package/package.json +189 -0
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Event emitter for pub/sub pattern
3
+ * Framework-agnostic event system
4
+ */
5
+ /**
6
+ * Event emitter for pub/sub communication
7
+ */
8
+ export class EventEmitter {
9
+ eventMap = new Map();
10
+ onceMap = new Map();
11
+ maxListeners;
12
+ captureRejections;
13
+ errorHandlers = new Set();
14
+ constructor(options = {}) {
15
+ this.maxListeners = options.maxListeners ?? 10;
16
+ this.captureRejections = options.captureRejections ?? false;
17
+ }
18
+ /**
19
+ * Register event listener
20
+ */
21
+ on(event, listener) {
22
+ if (!this.eventMap.has(event)) {
23
+ this.eventMap.set(event, new Set());
24
+ }
25
+ const handlers = this.eventMap.get(event);
26
+ if (handlers.size >= this.maxListeners) {
27
+ console.warn(`MaxListenersExceededWarning: ${handlers.size + 1} listeners added for event "${String(event)}"`);
28
+ }
29
+ handlers.add(listener);
30
+ return this;
31
+ }
32
+ /**
33
+ * Register one-time event listener
34
+ */
35
+ once(event, listener) {
36
+ if (!this.onceMap.has(event)) {
37
+ this.onceMap.set(event, new Set());
38
+ }
39
+ const onceListener = async (data) => {
40
+ await listener(data);
41
+ // Remove the wrapped listener from eventMap
42
+ const handlers = this.eventMap.get(event);
43
+ if (handlers) {
44
+ handlers.delete(onceListener);
45
+ }
46
+ // Remove from onceMap
47
+ const onceHandlers = this.onceMap.get(event);
48
+ if (onceHandlers) {
49
+ onceHandlers.delete(onceListener);
50
+ }
51
+ };
52
+ this.onceMap.get(event).add(onceListener);
53
+ return this.on(event, onceListener);
54
+ }
55
+ /**
56
+ * Remove event listener
57
+ */
58
+ off(event, listener) {
59
+ const handlers = this.eventMap.get(event);
60
+ if (handlers) {
61
+ handlers.delete(listener);
62
+ }
63
+ const onceHandlers = this.onceMap.get(event);
64
+ if (onceHandlers) {
65
+ onceHandlers.delete(listener);
66
+ }
67
+ return this;
68
+ }
69
+ /**
70
+ * Remove all listeners for event
71
+ */
72
+ removeAllListeners(event) {
73
+ if (event) {
74
+ this.eventMap.delete(event);
75
+ this.onceMap.delete(event);
76
+ }
77
+ else {
78
+ this.eventMap.clear();
79
+ this.onceMap.clear();
80
+ }
81
+ return this;
82
+ }
83
+ /**
84
+ * Emit event
85
+ */
86
+ async emit(event, data) {
87
+ const handlers = this.eventMap.get(event);
88
+ if (!handlers || handlers.size === 0) {
89
+ return false;
90
+ }
91
+ const promises = [];
92
+ for (const handler of handlers) {
93
+ try {
94
+ const result = handler(data);
95
+ if (result instanceof Promise) {
96
+ promises.push(result);
97
+ }
98
+ }
99
+ catch (error) {
100
+ if (this.captureRejections) {
101
+ this.handleError(error, data);
102
+ }
103
+ else {
104
+ throw error;
105
+ }
106
+ }
107
+ }
108
+ if (promises.length > 0) {
109
+ try {
110
+ await Promise.all(promises);
111
+ }
112
+ catch (error) {
113
+ if (this.captureRejections) {
114
+ this.handleError(error, data);
115
+ }
116
+ else {
117
+ throw error;
118
+ }
119
+ }
120
+ }
121
+ return true;
122
+ }
123
+ /**
124
+ * Emit event synchronously
125
+ */
126
+ emitSync(event, data) {
127
+ const handlers = this.eventMap.get(event);
128
+ if (!handlers || handlers.size === 0) {
129
+ return false;
130
+ }
131
+ for (const handler of handlers) {
132
+ try {
133
+ handler(data);
134
+ }
135
+ catch (error) {
136
+ if (this.captureRejections) {
137
+ this.handleError(error, data);
138
+ }
139
+ else {
140
+ throw error;
141
+ }
142
+ }
143
+ }
144
+ return true;
145
+ }
146
+ /**
147
+ * Register error handler
148
+ */
149
+ onError(listener) {
150
+ this.errorHandlers.add(listener);
151
+ return this;
152
+ }
153
+ /**
154
+ * Handle error
155
+ */
156
+ handleError(error, data) {
157
+ for (const handler of this.errorHandlers) {
158
+ try {
159
+ handler(data, error);
160
+ }
161
+ catch {
162
+ // Ignore errors in error handlers
163
+ }
164
+ }
165
+ }
166
+ /**
167
+ * Get listener count for event
168
+ */
169
+ listenerCount(event) {
170
+ const handlers = this.eventMap.get(event);
171
+ return handlers ? handlers.size : 0;
172
+ }
173
+ /**
174
+ * Get all listeners for event
175
+ */
176
+ getListeners(event) {
177
+ const handlers = this.eventMap.get(event);
178
+ return handlers
179
+ ? Array.from(handlers)
180
+ : [];
181
+ }
182
+ /**
183
+ * Get all event names
184
+ */
185
+ eventNames() {
186
+ return Array.from(this.eventMap.keys());
187
+ }
188
+ /**
189
+ * Set max listeners
190
+ */
191
+ setMaxListeners(n) {
192
+ this.maxListeners = n;
193
+ return this;
194
+ }
195
+ /**
196
+ * Get max listeners
197
+ */
198
+ getMaxListeners() {
199
+ return this.maxListeners;
200
+ }
201
+ }
202
+ /**
203
+ * Factory function for creating event emitters
204
+ */
205
+ export function createEventEmitter(options) {
206
+ return new EventEmitter(options);
207
+ }
208
+ //# sourceMappingURL=EventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../../../src/utils/helpers/EventEmitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export interface UploadProgress {
2
+ loaded: number;
3
+ total: number;
4
+ percentage: number;
5
+ }
6
+ export interface FileUploadOptions {
7
+ onProgress?: (progress: UploadProgress) => void;
8
+ chunkSize?: number;
9
+ maxRetries?: number;
10
+ timeout?: number;
11
+ headers?: Record<string, string>;
12
+ }
13
+ export interface UploadResponse {
14
+ success: boolean;
15
+ fileId?: string;
16
+ url?: string;
17
+ error?: string;
18
+ }
19
+ export declare class FileUploadHelper {
20
+ /**
21
+ * Upload a file with progress tracking and chunking support
22
+ */
23
+ static uploadFile(file: File | Blob, endpoint: string, options?: FileUploadOptions): Promise<UploadResponse>;
24
+ /**
25
+ * Upload a single chunk
26
+ */
27
+ private static uploadChunk;
28
+ /**
29
+ * Generate a unique upload ID
30
+ */
31
+ private static generateUploadId;
32
+ /**
33
+ * Validate file before upload
34
+ */
35
+ static validateFile(file: File, options?: {
36
+ maxSize?: number;
37
+ allowedTypes?: string[];
38
+ allowedExtensions?: string[];
39
+ }): {
40
+ valid: boolean;
41
+ error?: string;
42
+ };
43
+ }
44
+ //# sourceMappingURL=FileUploadHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUploadHelper.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/FileUploadHelper.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAC9B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IACzB;;OAEG;WACU,UAAU,CACnB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAChC,OAAO,CAAC,cAAc,CAAC;IAsF1B;;OAEG;mBACkB,WAAW;IAgChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B;;OAEG;IACH,MAAM,CAAC,YAAY,CACf,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,GACP;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAoCxC"}
@@ -0,0 +1,127 @@
1
+ export class FileUploadHelper {
2
+ /**
3
+ * Upload a file with progress tracking and chunking support
4
+ */
5
+ static async uploadFile(file, endpoint, options = {}) {
6
+ const { onProgress, chunkSize = 5 * 1024 * 1024, // 5MB default
7
+ maxRetries = 3, timeout = 30000, headers = {}, } = options;
8
+ const totalSize = file.size;
9
+ let uploadedSize = 0;
10
+ try {
11
+ // For small files, upload directly
12
+ if (totalSize <= chunkSize) {
13
+ await this.uploadChunk(file, endpoint, 0, totalSize, headers, timeout);
14
+ return {
15
+ success: true,
16
+ fileId: this.generateUploadId(),
17
+ };
18
+ }
19
+ // For large files, upload in chunks
20
+ const chunks = Math.ceil(totalSize / chunkSize);
21
+ const uploadId = this.generateUploadId();
22
+ for (let i = 0; i < chunks; i++) {
23
+ const start = i * chunkSize;
24
+ const end = Math.min(start + chunkSize, totalSize);
25
+ const chunk = file.slice(start, end);
26
+ let retries = 0;
27
+ let success = false;
28
+ while (retries < maxRetries && !success) {
29
+ try {
30
+ await this.uploadChunk(chunk, endpoint, i, chunks, { ...headers, "X-Upload-ID": uploadId }, timeout);
31
+ success = true;
32
+ uploadedSize = end;
33
+ if (onProgress) {
34
+ onProgress({
35
+ loaded: uploadedSize,
36
+ total: totalSize,
37
+ percentage: Math.round((uploadedSize / totalSize) * 100),
38
+ });
39
+ }
40
+ }
41
+ catch (error) {
42
+ retries++;
43
+ if (retries >= maxRetries) {
44
+ throw error;
45
+ }
46
+ // Exponential backoff
47
+ await new Promise((resolve) => setTimeout(resolve, Math.pow(2, retries) * 1000));
48
+ }
49
+ }
50
+ }
51
+ return {
52
+ success: true,
53
+ fileId: this.generateUploadId(),
54
+ };
55
+ }
56
+ catch (error) {
57
+ return {
58
+ success: false,
59
+ error: error instanceof Error ? error.message : "Upload failed",
60
+ };
61
+ }
62
+ }
63
+ /**
64
+ * Upload a single chunk
65
+ */
66
+ static async uploadChunk(chunk, endpoint, chunkIndex, totalChunks, headers, timeout) {
67
+ const formData = new FormData();
68
+ formData.append("file", chunk);
69
+ formData.append("chunkIndex", String(chunkIndex));
70
+ formData.append("totalChunks", String(totalChunks));
71
+ const controller = new AbortController();
72
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
73
+ try {
74
+ const response = await fetch(endpoint, {
75
+ method: "POST",
76
+ body: formData,
77
+ headers,
78
+ signal: controller.signal,
79
+ });
80
+ if (!response.ok) {
81
+ throw new Error(`Upload failed with status ${response.status}`);
82
+ }
83
+ }
84
+ finally {
85
+ clearTimeout(timeoutId);
86
+ }
87
+ }
88
+ /**
89
+ * Generate a unique upload ID
90
+ */
91
+ static generateUploadId() {
92
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
93
+ }
94
+ /**
95
+ * Validate file before upload
96
+ */
97
+ static validateFile(file, options = {}) {
98
+ const { maxSize = 100 * 1024 * 1024, // 100MB default
99
+ allowedTypes = [], allowedExtensions = [], } = options;
100
+ // Check file size
101
+ if (file.size > maxSize) {
102
+ return {
103
+ valid: false,
104
+ error: `File size exceeds maximum of ${maxSize / 1024 / 1024}MB`,
105
+ };
106
+ }
107
+ // Check MIME type
108
+ if (allowedTypes.length > 0 && !allowedTypes.includes(file.type)) {
109
+ return {
110
+ valid: false,
111
+ error: `File type ${file.type} is not allowed`,
112
+ };
113
+ }
114
+ // Check extension
115
+ if (allowedExtensions.length > 0) {
116
+ const extension = file.name.split(".").pop()?.toLowerCase();
117
+ if (!extension || !allowedExtensions.includes(extension)) {
118
+ return {
119
+ valid: false,
120
+ error: `File extension .${extension} is not allowed`,
121
+ };
122
+ }
123
+ }
124
+ return { valid: true };
125
+ }
126
+ }
127
+ //# sourceMappingURL=FileUploadHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUploadHelper.js","sourceRoot":"","sources":["../../../src/utils/helpers/FileUploadHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Form validation and management utilities
3
+ * Framework-agnostic form handling with built-in validators
4
+ */
5
+ export type ValidatorFn<T = unknown> = (value: T) => boolean | string;
6
+ export type AsyncValidatorFn<T = unknown> = (value: T) => Promise<boolean | string>;
7
+ export interface FieldRule<T = unknown> {
8
+ required?: boolean | string;
9
+ minLength?: number | string;
10
+ maxLength?: number | string;
11
+ min?: number | string;
12
+ max?: number | string;
13
+ pattern?: RegExp | string;
14
+ email?: boolean | string;
15
+ url?: boolean | string;
16
+ custom?: ValidatorFn<T> | ValidatorFn<T>[];
17
+ asyncCustom?: AsyncValidatorFn<T> | AsyncValidatorFn<T>[];
18
+ }
19
+ export interface FieldError {
20
+ field: string;
21
+ message: string;
22
+ rule?: string;
23
+ }
24
+ export interface FormState<T extends Record<string, unknown> = Record<string, unknown>> {
25
+ values: T;
26
+ errors: Record<string, string>;
27
+ touched: Record<string, boolean>;
28
+ dirty: Record<string, boolean>;
29
+ isValidating: boolean;
30
+ isValid: boolean;
31
+ }
32
+ export interface FormConfig<T extends Record<string, unknown> = Record<string, unknown>> {
33
+ initialValues: T;
34
+ rules?: Record<keyof T, FieldRule>;
35
+ onSubmit?: (values: T) => void | Promise<void>;
36
+ onError?: (errors: FieldError[]) => void;
37
+ validateOnChange?: boolean;
38
+ validateOnBlur?: boolean;
39
+ }
40
+ /**
41
+ * Built-in validators
42
+ */
43
+ export declare const Validators: {
44
+ required: (value: unknown, message?: string) => boolean | string;
45
+ minLength: (value: unknown, min: number, message?: string) => boolean | string;
46
+ maxLength: (value: unknown, max: number, message?: string) => boolean | string;
47
+ min: (value: unknown, min: number, message?: string) => boolean | string;
48
+ max: (value: unknown, max: number, message?: string) => boolean | string;
49
+ email: (value: unknown, message?: string) => boolean | string;
50
+ url: (value: unknown, message?: string) => boolean | string;
51
+ pattern: (value: unknown, pattern: RegExp, message?: string) => boolean | string;
52
+ match: (value: unknown, other: unknown, message?: string) => boolean | string;
53
+ };
54
+ /**
55
+ * Form validation and state management
56
+ */
57
+ export declare class FormUtils<T extends Record<string, unknown> = Record<string, unknown>> {
58
+ private state;
59
+ private rules;
60
+ private config;
61
+ private validationTimeouts;
62
+ constructor(config: FormConfig<T>);
63
+ /**
64
+ * Get current form state
65
+ */
66
+ getState(): FormState<T>;
67
+ /**
68
+ * Get field value
69
+ */
70
+ getValue<K extends keyof T>(field: K): T[K];
71
+ /**
72
+ * Set field value
73
+ */
74
+ setValue<K extends keyof T>(field: K, value: T[K]): void;
75
+ /**
76
+ * Set multiple values
77
+ */
78
+ setValues(values: Partial<T>): void;
79
+ /**
80
+ * Mark field as touched
81
+ */
82
+ touchField<K extends keyof T>(field: K): void;
83
+ /**
84
+ * Reset form to initial state
85
+ */
86
+ reset(): void;
87
+ /**
88
+ * Validate single field
89
+ */
90
+ validateField<K extends keyof T>(field: K): Promise<string | null>;
91
+ /**
92
+ * Validate all fields
93
+ */
94
+ validate(): Promise<FieldError[]>;
95
+ /**
96
+ * Submit form
97
+ */
98
+ submit(): Promise<boolean>;
99
+ /**
100
+ * Get field error
101
+ */
102
+ getFieldError<K extends keyof T>(field: K): string;
103
+ /**
104
+ * Check if field has error
105
+ */
106
+ hasError<K extends keyof T>(field: K): boolean;
107
+ /**
108
+ * Check if field is touched
109
+ */
110
+ isTouched<K extends keyof T>(field: K): boolean;
111
+ /**
112
+ * Check if field is dirty
113
+ */
114
+ isDirty<K extends keyof T>(field: K): boolean;
115
+ /**
116
+ * Get all errors
117
+ */
118
+ getErrors(): Record<string, string>;
119
+ /**
120
+ * Clear field error
121
+ */
122
+ clearFieldError<K extends keyof T>(field: K): void;
123
+ /**
124
+ * Clear all errors
125
+ */
126
+ clearErrors(): void;
127
+ /**
128
+ * Serialize form data
129
+ */
130
+ serialize(): T;
131
+ /**
132
+ * Deserialize form data
133
+ */
134
+ deserialize(data: Partial<T>): void;
135
+ /**
136
+ * Create form binding for framework integration
137
+ */
138
+ createBinding<K extends keyof T>(field: K): {
139
+ value: T[K];
140
+ onChange: (value: T[K]) => void;
141
+ onBlur: () => void;
142
+ error: string;
143
+ touched: boolean;
144
+ dirty: boolean;
145
+ };
146
+ /**
147
+ * Create form bindings for all fields
148
+ */
149
+ createBindings(): Record<string, {
150
+ value: T[keyof T];
151
+ onChange: (value: T[keyof T]) => void;
152
+ onBlur: () => void;
153
+ error: string;
154
+ touched: boolean;
155
+ dirty: boolean;
156
+ }>;
157
+ }
158
+ /**
159
+ * Factory function for creating forms
160
+ */
161
+ export declare function createForm<T extends Record<string, unknown> = Record<string, unknown>>(config: FormConfig<T>): FormUtils<T>;
162
+ //# sourceMappingURL=FormUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers/FormUtils.ts"],"names":[],"mappings":"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"}