edgeflowjs 0.1.0 → 0.2.0

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 (152) hide show
  1. package/README.md +200 -66
  2. package/dist/backends/index.d.ts +9 -2
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +13 -13
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/onnx.d.ts +11 -4
  7. package/dist/backends/onnx.d.ts.map +1 -1
  8. package/dist/backends/onnx.js +97 -78
  9. package/dist/backends/onnx.js.map +1 -1
  10. package/dist/backends/transformers-adapter.d.ts +99 -0
  11. package/dist/backends/transformers-adapter.d.ts.map +1 -0
  12. package/dist/backends/transformers-adapter.js +171 -0
  13. package/dist/backends/transformers-adapter.js.map +1 -0
  14. package/dist/backends/webgpu.d.ts +7 -5
  15. package/dist/backends/webgpu.d.ts.map +1 -1
  16. package/dist/backends/webgpu.js +7 -5
  17. package/dist/backends/webgpu.js.map +1 -1
  18. package/dist/backends/webnn.d.ts +6 -5
  19. package/dist/backends/webnn.d.ts.map +1 -1
  20. package/dist/backends/webnn.js +6 -5
  21. package/dist/backends/webnn.js.map +1 -1
  22. package/dist/core/composer.d.ts +118 -0
  23. package/dist/core/composer.d.ts.map +1 -0
  24. package/dist/core/composer.js +163 -0
  25. package/dist/core/composer.js.map +1 -0
  26. package/dist/core/device-profiler.d.ts +75 -0
  27. package/dist/core/device-profiler.d.ts.map +1 -0
  28. package/dist/core/device-profiler.js +131 -0
  29. package/dist/core/device-profiler.js.map +1 -0
  30. package/dist/core/index.d.ts +4 -0
  31. package/dist/core/index.d.ts.map +1 -1
  32. package/dist/core/index.js +8 -0
  33. package/dist/core/index.js.map +1 -1
  34. package/dist/core/memory.d.ts +22 -2
  35. package/dist/core/memory.d.ts.map +1 -1
  36. package/dist/core/memory.js +49 -13
  37. package/dist/core/memory.js.map +1 -1
  38. package/dist/core/plugin.d.ts +100 -0
  39. package/dist/core/plugin.d.ts.map +1 -0
  40. package/dist/core/plugin.js +106 -0
  41. package/dist/core/plugin.js.map +1 -0
  42. package/dist/core/runtime.d.ts +4 -0
  43. package/dist/core/runtime.d.ts.map +1 -1
  44. package/dist/core/runtime.js +18 -0
  45. package/dist/core/runtime.js.map +1 -1
  46. package/dist/core/scheduler.d.ts +17 -0
  47. package/dist/core/scheduler.d.ts.map +1 -1
  48. package/dist/core/scheduler.js +101 -3
  49. package/dist/core/scheduler.js.map +1 -1
  50. package/dist/core/types.d.ts +14 -0
  51. package/dist/core/types.d.ts.map +1 -1
  52. package/dist/core/types.js.map +1 -1
  53. package/dist/core/worker.d.ts +202 -0
  54. package/dist/core/worker.d.ts.map +1 -0
  55. package/dist/core/worker.js +477 -0
  56. package/dist/core/worker.js.map +1 -0
  57. package/dist/edgeflow.browser.js +9770 -4383
  58. package/dist/edgeflow.browser.js.map +4 -4
  59. package/dist/edgeflow.browser.min.js +435 -5
  60. package/dist/edgeflow.browser.min.js.map +4 -4
  61. package/dist/index.d.ts +7 -4
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +28 -10
  64. package/dist/index.js.map +1 -1
  65. package/dist/pipelines/automatic-speech-recognition.d.ts +63 -0
  66. package/dist/pipelines/automatic-speech-recognition.d.ts.map +1 -0
  67. package/dist/pipelines/automatic-speech-recognition.js +269 -0
  68. package/dist/pipelines/automatic-speech-recognition.js.map +1 -0
  69. package/dist/pipelines/base.d.ts +6 -1
  70. package/dist/pipelines/base.d.ts.map +1 -1
  71. package/dist/pipelines/base.js +12 -2
  72. package/dist/pipelines/base.js.map +1 -1
  73. package/dist/pipelines/feature-extraction.d.ts +5 -40
  74. package/dist/pipelines/feature-extraction.d.ts.map +1 -1
  75. package/dist/pipelines/feature-extraction.js +44 -63
  76. package/dist/pipelines/feature-extraction.js.map +1 -1
  77. package/dist/pipelines/image-classification.d.ts +4 -36
  78. package/dist/pipelines/image-classification.d.ts.map +1 -1
  79. package/dist/pipelines/image-classification.js +22 -60
  80. package/dist/pipelines/image-classification.js.map +1 -1
  81. package/dist/pipelines/image-segmentation.d.ts +221 -0
  82. package/dist/pipelines/image-segmentation.d.ts.map +1 -0
  83. package/dist/pipelines/image-segmentation.js +535 -0
  84. package/dist/pipelines/image-segmentation.js.map +1 -0
  85. package/dist/pipelines/index.d.ts +18 -0
  86. package/dist/pipelines/index.d.ts.map +1 -1
  87. package/dist/pipelines/index.js +51 -2
  88. package/dist/pipelines/index.js.map +1 -1
  89. package/dist/pipelines/object-detection.d.ts +44 -0
  90. package/dist/pipelines/object-detection.d.ts.map +1 -0
  91. package/dist/pipelines/object-detection.js +218 -0
  92. package/dist/pipelines/object-detection.js.map +1 -0
  93. package/dist/pipelines/question-answering.d.ts +41 -0
  94. package/dist/pipelines/question-answering.d.ts.map +1 -0
  95. package/dist/pipelines/question-answering.js +164 -0
  96. package/dist/pipelines/question-answering.js.map +1 -0
  97. package/dist/pipelines/text-classification.d.ts +3 -39
  98. package/dist/pipelines/text-classification.d.ts.map +1 -1
  99. package/dist/pipelines/text-classification.js +29 -67
  100. package/dist/pipelines/text-classification.js.map +1 -1
  101. package/dist/pipelines/text-generation.d.ts +281 -0
  102. package/dist/pipelines/text-generation.d.ts.map +1 -0
  103. package/dist/pipelines/text-generation.js +766 -0
  104. package/dist/pipelines/text-generation.js.map +1 -0
  105. package/dist/pipelines/zero-shot-classification.d.ts +45 -0
  106. package/dist/pipelines/zero-shot-classification.d.ts.map +1 -0
  107. package/dist/pipelines/zero-shot-classification.js +140 -0
  108. package/dist/pipelines/zero-shot-classification.js.map +1 -0
  109. package/dist/tools/benchmark.d.ts +92 -0
  110. package/dist/tools/benchmark.d.ts.map +1 -0
  111. package/dist/tools/benchmark.js +213 -0
  112. package/dist/tools/benchmark.js.map +1 -0
  113. package/dist/tools/debugger.d.ts +258 -0
  114. package/dist/tools/debugger.d.ts.map +1 -0
  115. package/dist/tools/debugger.js +624 -0
  116. package/dist/tools/debugger.js.map +1 -0
  117. package/dist/tools/index.d.ts +8 -0
  118. package/dist/tools/index.d.ts.map +1 -1
  119. package/dist/tools/index.js +16 -0
  120. package/dist/tools/index.js.map +1 -1
  121. package/dist/tools/monitor.d.ts +284 -0
  122. package/dist/tools/monitor.d.ts.map +1 -0
  123. package/dist/tools/monitor.js +921 -0
  124. package/dist/tools/monitor.js.map +1 -0
  125. package/dist/tools/quantization.d.ts +235 -0
  126. package/dist/tools/quantization.d.ts.map +1 -0
  127. package/dist/tools/quantization.js +830 -0
  128. package/dist/tools/quantization.js.map +1 -0
  129. package/dist/utils/hub.d.ts +162 -0
  130. package/dist/utils/hub.d.ts.map +1 -0
  131. package/dist/utils/hub.js +311 -0
  132. package/dist/utils/hub.js.map +1 -0
  133. package/dist/utils/index.d.ts +3 -1
  134. package/dist/utils/index.d.ts.map +1 -1
  135. package/dist/utils/index.js +5 -1
  136. package/dist/utils/index.js.map +1 -1
  137. package/dist/utils/model-loader.d.ts.map +1 -1
  138. package/dist/utils/model-loader.js +106 -30
  139. package/dist/utils/model-loader.js.map +1 -1
  140. package/dist/utils/offline.d.ts +147 -0
  141. package/dist/utils/offline.d.ts.map +1 -0
  142. package/dist/utils/offline.js +405 -0
  143. package/dist/utils/offline.js.map +1 -0
  144. package/dist/utils/preprocessor.d.ts +82 -6
  145. package/dist/utils/preprocessor.d.ts.map +1 -1
  146. package/dist/utils/preprocessor.js +278 -21
  147. package/dist/utils/preprocessor.js.map +1 -1
  148. package/dist/utils/tokenizer.d.ts +197 -72
  149. package/dist/utils/tokenizer.d.ts.map +1 -1
  150. package/dist/utils/tokenizer.js +558 -274
  151. package/dist/utils/tokenizer.js.map +1 -1
  152. package/package.json +26 -11
@@ -0,0 +1,405 @@
1
+ /**
2
+ * edgeFlow.js - Offline/PWA Support
3
+ *
4
+ * Utilities for offline-first ML inference.
5
+ */
6
+ // ============================================================================
7
+ // Offline Manager
8
+ // ============================================================================
9
+ /**
10
+ * Offline manager for PWA support
11
+ */
12
+ export class OfflineManager {
13
+ config;
14
+ onlineListeners = new Set();
15
+ isInitialized = false;
16
+ constructor(config = {}) {
17
+ this.config = {
18
+ enabled: config.enabled ?? true,
19
+ cacheModels: config.cacheModels ?? true,
20
+ cacheConfig: config.cacheConfig ?? true,
21
+ maxCacheSize: config.maxCacheSize ?? 500 * 1024 * 1024, // 500MB
22
+ preloadModels: config.preloadModels ?? [],
23
+ serviceWorkerPath: config.serviceWorkerPath ?? '/edgeflow-sw.js',
24
+ };
25
+ }
26
+ /**
27
+ * Initialize offline support
28
+ */
29
+ async initialize() {
30
+ if (this.isInitialized)
31
+ return;
32
+ // Listen for online/offline events
33
+ if (typeof window !== 'undefined') {
34
+ window.addEventListener('online', () => this.notifyOnlineStatus(true));
35
+ window.addEventListener('offline', () => this.notifyOnlineStatus(false));
36
+ }
37
+ // Register service worker if available
38
+ if (this.config.enabled && 'serviceWorker' in navigator) {
39
+ try {
40
+ await this.registerServiceWorker();
41
+ }
42
+ catch (error) {
43
+ console.warn('Service worker registration failed:', error);
44
+ }
45
+ }
46
+ // Preload models for offline use
47
+ if (this.config.preloadModels.length > 0) {
48
+ await this.preloadForOffline(this.config.preloadModels);
49
+ }
50
+ this.isInitialized = true;
51
+ }
52
+ /**
53
+ * Register service worker
54
+ */
55
+ async registerServiceWorker() {
56
+ if (!('serviceWorker' in navigator)) {
57
+ throw new Error('Service workers not supported');
58
+ }
59
+ try {
60
+ const registration = await navigator.serviceWorker.register(this.config.serviceWorkerPath, { scope: '/' });
61
+ console.log('edgeFlow.js service worker registered:', registration.scope);
62
+ // Handle updates
63
+ registration.onupdatefound = () => {
64
+ const newWorker = registration.installing;
65
+ if (newWorker) {
66
+ newWorker.onstatechange = () => {
67
+ if (newWorker.state === 'installed' && navigator.serviceWorker.controller) {
68
+ console.log('New edgeFlow.js service worker available');
69
+ }
70
+ };
71
+ }
72
+ };
73
+ }
74
+ catch (error) {
75
+ throw new Error(`Service worker registration failed: ${error}`);
76
+ }
77
+ }
78
+ /**
79
+ * Preload models for offline use
80
+ */
81
+ async preloadForOffline(modelUrls) {
82
+ const { loadModelData } = await import('./model-loader.js');
83
+ for (const url of modelUrls) {
84
+ try {
85
+ console.log(`Preloading for offline: ${url}`);
86
+ await loadModelData(url, { cache: true });
87
+ console.log(`✓ Cached: ${url}`);
88
+ }
89
+ catch (error) {
90
+ console.warn(`Failed to cache ${url}:`, error);
91
+ }
92
+ }
93
+ }
94
+ /**
95
+ * Get offline status
96
+ */
97
+ async getStatus() {
98
+ const { getModelCacheStats } = await import('./model-loader.js');
99
+ const stats = await getModelCacheStats();
100
+ let swStatus = 'none';
101
+ if ('serviceWorker' in navigator) {
102
+ const registration = await navigator.serviceWorker.getRegistration();
103
+ if (registration) {
104
+ if (registration.active)
105
+ swStatus = 'active';
106
+ else if (registration.installing)
107
+ swStatus = 'installing';
108
+ else if (registration.waiting)
109
+ swStatus = 'waiting';
110
+ }
111
+ }
112
+ return {
113
+ isOnline: typeof navigator !== 'undefined' ? navigator.onLine : true,
114
+ offlineReady: stats.models > 0,
115
+ cachedModels: stats.models,
116
+ cacheSize: stats.totalSize,
117
+ serviceWorker: swStatus,
118
+ };
119
+ }
120
+ /**
121
+ * Get list of cached models
122
+ */
123
+ async getCachedModels() {
124
+ // Query IndexedDB for cached model metadata
125
+ const db = await this.openDatabase();
126
+ return new Promise((resolve, reject) => {
127
+ const tx = db.transaction('meta', 'readonly');
128
+ const store = tx.objectStore('meta');
129
+ const request = store.getAll();
130
+ request.onsuccess = () => {
131
+ const models = (request.result || []).map((meta) => ({
132
+ url: meta['url'],
133
+ size: meta['size'],
134
+ cachedAt: new Date(meta['cachedAt']),
135
+ lastAccessed: new Date(meta['lastAccessed'] || meta['cachedAt']),
136
+ modelId: meta['modelId'],
137
+ }));
138
+ resolve(models);
139
+ };
140
+ request.onerror = () => reject(request.error);
141
+ });
142
+ }
143
+ /**
144
+ * Check if a model is available offline
145
+ */
146
+ async isModelAvailableOffline(url) {
147
+ const { isModelCached } = await import('./model-loader.js');
148
+ return isModelCached(url);
149
+ }
150
+ /**
151
+ * Remove model from offline cache
152
+ */
153
+ async removeFromOffline(url) {
154
+ const { deleteCachedModel } = await import('./model-loader.js');
155
+ await deleteCachedModel(url);
156
+ }
157
+ /**
158
+ * Clear all offline data
159
+ */
160
+ async clearOfflineData() {
161
+ const { clearModelCache } = await import('./model-loader.js');
162
+ await clearModelCache();
163
+ }
164
+ /**
165
+ * Check available storage
166
+ */
167
+ async getStorageInfo() {
168
+ if ('storage' in navigator && 'estimate' in navigator.storage) {
169
+ const estimate = await navigator.storage.estimate();
170
+ return {
171
+ quota: estimate.quota ?? 0,
172
+ usage: estimate.usage ?? 0,
173
+ available: (estimate.quota ?? 0) - (estimate.usage ?? 0),
174
+ };
175
+ }
176
+ return { quota: 0, usage: 0, available: 0 };
177
+ }
178
+ /**
179
+ * Request persistent storage
180
+ */
181
+ async requestPersistentStorage() {
182
+ if ('storage' in navigator && 'persist' in navigator.storage) {
183
+ return await navigator.storage.persist();
184
+ }
185
+ return false;
186
+ }
187
+ /**
188
+ * Add online status listener
189
+ */
190
+ onOnlineStatusChange(listener) {
191
+ this.onlineListeners.add(listener);
192
+ return () => this.onlineListeners.delete(listener);
193
+ }
194
+ /**
195
+ * Check if currently online
196
+ */
197
+ isOnline() {
198
+ return typeof navigator !== 'undefined' ? navigator.onLine : true;
199
+ }
200
+ /**
201
+ * Notify listeners of online status change
202
+ */
203
+ notifyOnlineStatus(online) {
204
+ this.onlineListeners.forEach(listener => listener(online));
205
+ }
206
+ /**
207
+ * Open IndexedDB
208
+ */
209
+ async openDatabase() {
210
+ return new Promise((resolve, reject) => {
211
+ const request = indexedDB.open('edgeflow-model-cache', 1);
212
+ request.onsuccess = () => resolve(request.result);
213
+ request.onerror = () => reject(request.error);
214
+ });
215
+ }
216
+ }
217
+ // ============================================================================
218
+ // Service Worker Template
219
+ // ============================================================================
220
+ /**
221
+ * Generate service worker code
222
+ */
223
+ export function generateServiceWorker(options = {}) {
224
+ const { cacheName = 'edgeflow-v1', modelUrls = [], cacheFirst = true, } = options;
225
+ return `
226
+ // edgeFlow.js Service Worker
227
+ // Auto-generated - customize as needed
228
+
229
+ const CACHE_NAME = '${cacheName}';
230
+ const MODEL_URLS = ${JSON.stringify(modelUrls)};
231
+
232
+ // Install event - cache core files
233
+ self.addEventListener('install', (event) => {
234
+ event.waitUntil(
235
+ caches.open(CACHE_NAME)
236
+ .then((cache) => {
237
+ console.log('[edgeFlow SW] Caching core files');
238
+ return cache.addAll([
239
+ '/',
240
+ '/edgeflow.browser.min.js',
241
+ ...MODEL_URLS,
242
+ ]);
243
+ })
244
+ .then(() => self.skipWaiting())
245
+ );
246
+ });
247
+
248
+ // Activate event - cleanup old caches
249
+ self.addEventListener('activate', (event) => {
250
+ event.waitUntil(
251
+ caches.keys()
252
+ .then((cacheNames) => {
253
+ return Promise.all(
254
+ cacheNames
255
+ .filter((name) => name !== CACHE_NAME)
256
+ .map((name) => caches.delete(name))
257
+ );
258
+ })
259
+ .then(() => self.clients.claim())
260
+ );
261
+ });
262
+
263
+ // Fetch event - ${cacheFirst ? 'cache first' : 'network first'} strategy
264
+ self.addEventListener('fetch', (event) => {
265
+ const url = new URL(event.request.url);
266
+
267
+ // Only handle same-origin and model requests
268
+ if (url.origin !== location.origin && !isModelRequest(url)) {
269
+ return;
270
+ }
271
+
272
+ ${cacheFirst ? `
273
+ // Cache first strategy
274
+ event.respondWith(
275
+ caches.match(event.request)
276
+ .then((cached) => {
277
+ if (cached) {
278
+ return cached;
279
+ }
280
+ return fetch(event.request)
281
+ .then((response) => {
282
+ if (response.ok && shouldCache(event.request)) {
283
+ const clone = response.clone();
284
+ caches.open(CACHE_NAME)
285
+ .then((cache) => cache.put(event.request, clone));
286
+ }
287
+ return response;
288
+ });
289
+ })
290
+ );
291
+ ` : `
292
+ // Network first strategy
293
+ event.respondWith(
294
+ fetch(event.request)
295
+ .then((response) => {
296
+ if (response.ok && shouldCache(event.request)) {
297
+ const clone = response.clone();
298
+ caches.open(CACHE_NAME)
299
+ .then((cache) => cache.put(event.request, clone));
300
+ }
301
+ return response;
302
+ })
303
+ .catch(() => caches.match(event.request))
304
+ );
305
+ `}
306
+ });
307
+
308
+ // Check if request is for a model file
309
+ function isModelRequest(url) {
310
+ return url.pathname.endsWith('.onnx') ||
311
+ url.pathname.endsWith('.bin') ||
312
+ url.hostname.includes('huggingface.co');
313
+ }
314
+
315
+ // Check if response should be cached
316
+ function shouldCache(request) {
317
+ const url = new URL(request.url);
318
+ return request.method === 'GET' && (
319
+ url.pathname.endsWith('.js') ||
320
+ url.pathname.endsWith('.onnx') ||
321
+ url.pathname.endsWith('.bin') ||
322
+ url.pathname.endsWith('.json')
323
+ );
324
+ }
325
+
326
+ // Handle messages from main thread
327
+ self.addEventListener('message', (event) => {
328
+ if (event.data.type === 'SKIP_WAITING') {
329
+ self.skipWaiting();
330
+ }
331
+ if (event.data.type === 'CACHE_MODEL') {
332
+ cacheModel(event.data.url);
333
+ }
334
+ });
335
+
336
+ // Cache a model URL
337
+ async function cacheModel(url) {
338
+ const cache = await caches.open(CACHE_NAME);
339
+ try {
340
+ const response = await fetch(url);
341
+ if (response.ok) {
342
+ await cache.put(url, response);
343
+ console.log('[edgeFlow SW] Cached model:', url);
344
+ }
345
+ } catch (error) {
346
+ console.error('[edgeFlow SW] Failed to cache model:', url, error);
347
+ }
348
+ }
349
+ `.trim();
350
+ }
351
+ /**
352
+ * Generate PWA manifest
353
+ */
354
+ export function generateManifest(options = { name: 'edgeFlow.js App' }) {
355
+ return {
356
+ name: options.name,
357
+ short_name: options.shortName ?? options.name,
358
+ description: options.description ?? 'ML-powered application built with edgeFlow.js',
359
+ start_url: '/',
360
+ display: 'standalone',
361
+ theme_color: options.themeColor ?? '#4F46E5',
362
+ background_color: options.backgroundColor ?? '#FFFFFF',
363
+ icons: options.icons ?? [
364
+ { src: '/icon-192.png', sizes: '192x192', type: 'image/png' },
365
+ { src: '/icon-512.png', sizes: '512x512', type: 'image/png' },
366
+ ],
367
+ categories: ['utilities', 'productivity'],
368
+ };
369
+ }
370
+ // ============================================================================
371
+ // Singleton Instance
372
+ // ============================================================================
373
+ let offlineManager = null;
374
+ /**
375
+ * Get the global offline manager instance
376
+ */
377
+ export function getOfflineManager(config) {
378
+ if (!offlineManager) {
379
+ offlineManager = new OfflineManager(config);
380
+ }
381
+ return offlineManager;
382
+ }
383
+ /**
384
+ * Initialize offline support
385
+ */
386
+ export async function initOffline(config) {
387
+ const manager = getOfflineManager(config);
388
+ await manager.initialize();
389
+ return manager.getStatus();
390
+ }
391
+ /**
392
+ * Check if running in offline mode
393
+ */
394
+ export function isOffline() {
395
+ return typeof navigator !== 'undefined' ? !navigator.onLine : false;
396
+ }
397
+ /**
398
+ * Check if PWA features are supported
399
+ */
400
+ export function isPWASupported() {
401
+ return typeof window !== 'undefined' &&
402
+ 'serviceWorker' in navigator &&
403
+ 'caches' in window;
404
+ }
405
+ //# sourceMappingURL=offline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offline.js","sourceRoot":"","sources":["../../src/utils/offline.ts"],"names":[],"mappings":"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"}
@@ -2,37 +2,81 @@
2
2
  * edgeFlow.js - Preprocessor
3
3
  *
4
4
  * Data preprocessing utilities for images, audio, and other data types.
5
+ * Supports HuggingFace preprocessor_config.json format.
5
6
  */
6
7
  import { EdgeFlowTensor } from '../core/tensor.js';
8
+ /**
9
+ * Image input types
10
+ */
11
+ export type ImageInput = HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | Blob | File | string;
12
+ /**
13
+ * Audio input types
14
+ */
15
+ export type AudioInput = AudioBuffer | Float32Array | ArrayBuffer | Blob | File | string;
7
16
  /**
8
17
  * Image preprocessing options
9
18
  */
10
19
  export interface ImagePreprocessorOptions {
11
- /** Target width */
20
+ /** Target width (or size for square) */
12
21
  width?: number;
13
22
  /** Target height */
14
23
  height?: number;
24
+ /** Single size for square output (sets both width and height) */
25
+ size?: number;
15
26
  /** Resize mode */
16
- resizeMode?: 'stretch' | 'contain' | 'cover' | 'pad';
27
+ resizeMode?: 'stretch' | 'contain' | 'cover' | 'pad' | 'shortest_edge' | 'longest_edge';
17
28
  /** Normalization mean */
18
29
  mean?: [number, number, number];
19
30
  /** Normalization std */
20
31
  std?: [number, number, number];
32
+ /** Rescale factor (applied before normalization) */
33
+ rescaleFactor?: number;
21
34
  /** Convert to grayscale */
22
35
  grayscale?: boolean;
23
36
  /** Channel format */
24
37
  channelFormat?: 'CHW' | 'HWC';
25
38
  /** Output data type */
26
39
  dtype?: 'float32' | 'uint8';
40
+ /** Do resize */
41
+ doResize?: boolean;
42
+ /** Do rescale */
43
+ doRescale?: boolean;
44
+ /** Do normalize */
45
+ doNormalize?: boolean;
46
+ /** Do center crop */
47
+ doCenterCrop?: boolean;
48
+ /** Center crop size */
49
+ cropSize?: number | {
50
+ width: number;
51
+ height: number;
52
+ };
53
+ /** Padding color for 'pad' mode (RGB 0-255) */
54
+ paddingColor?: [number, number, number];
27
55
  }
28
56
  /**
29
57
  * ImagePreprocessor - Process images for model input
58
+ *
59
+ * Supports HuggingFace preprocessor_config.json format.
30
60
  */
31
61
  export declare class ImagePreprocessor {
32
62
  private readonly options;
33
63
  private canvas;
34
64
  private ctx;
35
65
  constructor(options?: ImagePreprocessorOptions);
66
+ /**
67
+ * Load from HuggingFace preprocessor_config.json
68
+ */
69
+ static fromConfig(config: Record<string, unknown>): ImagePreprocessor;
70
+ /**
71
+ * Load from HuggingFace Hub
72
+ */
73
+ static fromUrl(url: string): Promise<ImagePreprocessor>;
74
+ /**
75
+ * Load from HuggingFace Hub by model ID
76
+ */
77
+ static fromHuggingFace(modelId: string, options?: {
78
+ revision?: string;
79
+ }): Promise<ImagePreprocessor>;
36
80
  /**
37
81
  * Initialize canvas (lazy)
38
82
  */
@@ -40,15 +84,23 @@ export declare class ImagePreprocessor {
40
84
  /**
41
85
  * Process an image
42
86
  */
43
- process(input: HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | string): Promise<EdgeFlowTensor>;
87
+ process(input: ImageInput): Promise<EdgeFlowTensor>;
44
88
  /**
45
89
  * Process multiple images (batch)
46
90
  */
47
- processBatch(inputs: Array<HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | string>): Promise<EdgeFlowTensor>;
91
+ processBatch(inputs: ImageInput[]): Promise<EdgeFlowTensor>;
48
92
  /**
49
- * Load image from URL
93
+ * Load image from URL or base64
50
94
  */
51
95
  private loadFromUrl;
96
+ /**
97
+ * Load image from Blob/File
98
+ */
99
+ private loadFromBlob;
100
+ /**
101
+ * Center crop image
102
+ */
103
+ private centerCrop;
52
104
  /**
53
105
  * Convert image element to ImageData
54
106
  */
@@ -61,6 +113,10 @@ export declare class ImagePreprocessor {
61
113
  * Convert ImageData to tensor
62
114
  */
63
115
  private toTensor;
116
+ /**
117
+ * Get current options
118
+ */
119
+ getOptions(): ImagePreprocessorOptions;
64
120
  }
65
121
  /**
66
122
  * Audio preprocessing options
@@ -81,11 +137,23 @@ export interface AudioPreprocessorOptions {
81
137
  }
82
138
  /**
83
139
  * AudioPreprocessor - Process audio for model input
140
+ *
141
+ * Supports Whisper and other audio model preprocessing.
84
142
  */
85
143
  export declare class AudioPreprocessor {
86
144
  private readonly options;
87
145
  private audioContext;
88
146
  constructor(options?: AudioPreprocessorOptions);
147
+ /**
148
+ * Load from HuggingFace feature_extractor config
149
+ */
150
+ static fromConfig(config: Record<string, unknown>): AudioPreprocessor;
151
+ /**
152
+ * Load from HuggingFace Hub
153
+ */
154
+ static fromHuggingFace(modelId: string, options?: {
155
+ revision?: string;
156
+ }): Promise<AudioPreprocessor>;
89
157
  /**
90
158
  * Initialize audio context (lazy)
91
159
  */
@@ -93,11 +161,19 @@ export declare class AudioPreprocessor {
93
161
  /**
94
162
  * Process audio data
95
163
  */
96
- process(input: AudioBuffer | Float32Array | ArrayBuffer | string): Promise<EdgeFlowTensor>;
164
+ process(input: AudioInput): Promise<EdgeFlowTensor>;
165
+ /**
166
+ * Process raw waveform (for models that don't need mel spectrogram)
167
+ */
168
+ processRaw(input: AudioInput): Promise<EdgeFlowTensor>;
97
169
  /**
98
170
  * Load audio from URL
99
171
  */
100
172
  private loadFromUrl;
173
+ /**
174
+ * Load audio from Blob/File
175
+ */
176
+ private loadFromBlob;
101
177
  /**
102
178
  * Decode audio data
103
179
  */
@@ -1 +1 @@
1
- {"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../../src/utils/preprocessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../../src/utils/preprocessor.ts"],"names":[],"mappings":"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"}