edgeflowjs 0.1.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.
- package/README.md +473 -0
- package/dist/backends/index.d.ts +13 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +32 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/onnx.d.ts +46 -0
- package/dist/backends/onnx.d.ts.map +1 -0
- package/dist/backends/onnx.js +249 -0
- package/dist/backends/onnx.js.map +1 -0
- package/dist/backends/wasm.d.ts +78 -0
- package/dist/backends/wasm.d.ts.map +1 -0
- package/dist/backends/wasm.js +358 -0
- package/dist/backends/wasm.js.map +1 -0
- package/dist/backends/webgpu.d.ts +143 -0
- package/dist/backends/webgpu.d.ts.map +1 -0
- package/dist/backends/webgpu.js +326 -0
- package/dist/backends/webgpu.js.map +1 -0
- package/dist/backends/webnn.d.ts +115 -0
- package/dist/backends/webnn.d.ts.map +1 -0
- package/dist/backends/webnn.js +202 -0
- package/dist/backends/webnn.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/memory.d.ts +234 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +554 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/runtime.d.ts +129 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +352 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scheduler.d.ts +118 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +600 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/tensor.d.ts +149 -0
- package/dist/core/tensor.d.ts.map +1 -0
- package/dist/core/tensor.js +719 -0
- package/dist/core/tensor.js.map +1 -0
- package/dist/core/types.d.ts +367 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +54 -0
- package/dist/core/types.js.map +1 -0
- package/dist/edgeflow.browser.js +5601 -0
- package/dist/edgeflow.browser.js.map +7 -0
- package/dist/edgeflow.browser.min.js +19 -0
- package/dist/edgeflow.browser.min.js.map +7 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/dist/pipelines/base.d.ts +122 -0
- package/dist/pipelines/base.d.ts.map +1 -0
- package/dist/pipelines/base.js +155 -0
- package/dist/pipelines/base.js.map +1 -0
- package/dist/pipelines/feature-extraction.d.ts +68 -0
- package/dist/pipelines/feature-extraction.d.ts.map +1 -0
- package/dist/pipelines/feature-extraction.js +197 -0
- package/dist/pipelines/feature-extraction.js.map +1 -0
- package/dist/pipelines/image-classification.d.ts +61 -0
- package/dist/pipelines/image-classification.d.ts.map +1 -0
- package/dist/pipelines/image-classification.js +140 -0
- package/dist/pipelines/image-classification.js.map +1 -0
- package/dist/pipelines/index.d.ts +58 -0
- package/dist/pipelines/index.d.ts.map +1 -0
- package/dist/pipelines/index.js +72 -0
- package/dist/pipelines/index.js.map +1 -0
- package/dist/pipelines/text-classification.d.ts +71 -0
- package/dist/pipelines/text-classification.d.ts.map +1 -0
- package/dist/pipelines/text-classification.js +175 -0
- package/dist/pipelines/text-classification.js.map +1 -0
- package/dist/tools/index.d.ts +143 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +294 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/utils/cache.d.ts +162 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +443 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/model-loader.d.ts +107 -0
- package/dist/utils/model-loader.d.ts.map +1 -0
- package/dist/utils/model-loader.js +694 -0
- package/dist/utils/model-loader.js.map +1 -0
- package/dist/utils/preprocessor.d.ts +147 -0
- package/dist/utils/preprocessor.d.ts.map +1 -0
- package/dist/utils/preprocessor.js +423 -0
- package/dist/utils/preprocessor.js.map +1 -0
- package/dist/utils/tokenizer.d.ts +140 -0
- package/dist/utils/tokenizer.d.ts.map +1 -0
- package/dist/utils/tokenizer.js +397 -0
- package/dist/utils/tokenizer.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Caching Utilities
|
|
3
|
+
*
|
|
4
|
+
* Smart caching for models, tensors, and inference results.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Cache strategy types
|
|
8
|
+
*/
|
|
9
|
+
export type CacheStrategy = 'lru' | 'lfu' | 'fifo' | 'ttl';
|
|
10
|
+
/**
|
|
11
|
+
* Cache options
|
|
12
|
+
*/
|
|
13
|
+
export interface CacheOptions {
|
|
14
|
+
/** Cache strategy */
|
|
15
|
+
strategy?: CacheStrategy;
|
|
16
|
+
/** Maximum cache size in bytes */
|
|
17
|
+
maxSize?: number;
|
|
18
|
+
/** Maximum number of entries */
|
|
19
|
+
maxEntries?: number;
|
|
20
|
+
/** Default TTL in milliseconds */
|
|
21
|
+
ttl?: number;
|
|
22
|
+
/** Enable persistence to IndexedDB */
|
|
23
|
+
persistent?: boolean;
|
|
24
|
+
/** Cache name for persistence */
|
|
25
|
+
name?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Cache statistics
|
|
29
|
+
*/
|
|
30
|
+
export interface CacheStats {
|
|
31
|
+
/** Number of entries */
|
|
32
|
+
entries: number;
|
|
33
|
+
/** Total size in bytes */
|
|
34
|
+
size: number;
|
|
35
|
+
/** Cache hits */
|
|
36
|
+
hits: number;
|
|
37
|
+
/** Cache misses */
|
|
38
|
+
misses: number;
|
|
39
|
+
/** Hit rate (0-1) */
|
|
40
|
+
hitRate: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Cache - Generic cache implementation
|
|
44
|
+
*/
|
|
45
|
+
export declare class Cache<T> {
|
|
46
|
+
private readonly options;
|
|
47
|
+
private readonly cache;
|
|
48
|
+
private currentSize;
|
|
49
|
+
private hits;
|
|
50
|
+
private misses;
|
|
51
|
+
constructor(options?: CacheOptions);
|
|
52
|
+
/**
|
|
53
|
+
* Get value from cache
|
|
54
|
+
*/
|
|
55
|
+
get(key: string): T | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Set value in cache
|
|
58
|
+
*/
|
|
59
|
+
set(key: string, value: T, size: number, ttl?: number): void;
|
|
60
|
+
/**
|
|
61
|
+
* Check if key exists
|
|
62
|
+
*/
|
|
63
|
+
has(key: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Delete entry
|
|
66
|
+
*/
|
|
67
|
+
delete(key: string): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Clear the cache
|
|
70
|
+
*/
|
|
71
|
+
clear(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Get cache statistics
|
|
74
|
+
*/
|
|
75
|
+
getStats(): CacheStats;
|
|
76
|
+
/**
|
|
77
|
+
* Evict an entry based on strategy
|
|
78
|
+
*/
|
|
79
|
+
private evict;
|
|
80
|
+
/**
|
|
81
|
+
* Find least recently used entry
|
|
82
|
+
*/
|
|
83
|
+
private findLRU;
|
|
84
|
+
/**
|
|
85
|
+
* Find least frequently used entry
|
|
86
|
+
*/
|
|
87
|
+
private findLFU;
|
|
88
|
+
/**
|
|
89
|
+
* Find oldest entry (FIFO)
|
|
90
|
+
*/
|
|
91
|
+
private findOldest;
|
|
92
|
+
/**
|
|
93
|
+
* Find expired entry
|
|
94
|
+
*/
|
|
95
|
+
private findExpired;
|
|
96
|
+
/**
|
|
97
|
+
* Load cache from IndexedDB
|
|
98
|
+
*/
|
|
99
|
+
private loadFromStorage;
|
|
100
|
+
/**
|
|
101
|
+
* Save cache to IndexedDB
|
|
102
|
+
*/
|
|
103
|
+
private saveToStorage;
|
|
104
|
+
/**
|
|
105
|
+
* Clear IndexedDB storage
|
|
106
|
+
*/
|
|
107
|
+
private clearStorage;
|
|
108
|
+
/**
|
|
109
|
+
* Open IndexedDB database
|
|
110
|
+
*/
|
|
111
|
+
private openDB;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* InferenceCache - Cache for inference results
|
|
115
|
+
*/
|
|
116
|
+
export declare class InferenceCache extends Cache<Float32Array> {
|
|
117
|
+
/**
|
|
118
|
+
* Generate cache key from input
|
|
119
|
+
*/
|
|
120
|
+
generateKey(modelId: string, input: Float32Array | number[]): string;
|
|
121
|
+
/**
|
|
122
|
+
* Simple hash function for arrays
|
|
123
|
+
*/
|
|
124
|
+
private hashArray;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Model download cache using Cache API
|
|
128
|
+
*/
|
|
129
|
+
export declare class ModelDownloadCache {
|
|
130
|
+
private readonly cacheName;
|
|
131
|
+
private cache;
|
|
132
|
+
constructor(cacheName?: string);
|
|
133
|
+
/**
|
|
134
|
+
* Initialize cache
|
|
135
|
+
*/
|
|
136
|
+
private ensureCache;
|
|
137
|
+
/**
|
|
138
|
+
* Get cached response
|
|
139
|
+
*/
|
|
140
|
+
get(url: string): Promise<Response | undefined>;
|
|
141
|
+
/**
|
|
142
|
+
* Store response in cache
|
|
143
|
+
*/
|
|
144
|
+
put(url: string, response: Response): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Delete cached response
|
|
147
|
+
*/
|
|
148
|
+
delete(url: string): Promise<boolean>;
|
|
149
|
+
/**
|
|
150
|
+
* Clear all cached models
|
|
151
|
+
*/
|
|
152
|
+
clear(): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Get all cached URLs
|
|
155
|
+
*/
|
|
156
|
+
keys(): Promise<string[]>;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create a cache with common presets
|
|
160
|
+
*/
|
|
161
|
+
export declare function createCache<T>(preset?: 'small' | 'medium' | 'large' | 'custom', options?: CacheOptions): Cache<T>;
|
|
162
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Caching Utilities
|
|
3
|
+
*
|
|
4
|
+
* Smart caching for models, tensors, and inference results.
|
|
5
|
+
*/
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Cache Implementation
|
|
8
|
+
// ============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Cache - Generic cache implementation
|
|
11
|
+
*/
|
|
12
|
+
export class Cache {
|
|
13
|
+
options;
|
|
14
|
+
cache = new Map();
|
|
15
|
+
currentSize = 0;
|
|
16
|
+
hits = 0;
|
|
17
|
+
misses = 0;
|
|
18
|
+
constructor(options = {}) {
|
|
19
|
+
this.options = {
|
|
20
|
+
strategy: options.strategy ?? 'lru',
|
|
21
|
+
maxSize: options.maxSize ?? 100 * 1024 * 1024, // 100MB
|
|
22
|
+
maxEntries: options.maxEntries ?? 1000,
|
|
23
|
+
ttl: options.ttl ?? 0, // 0 = no TTL
|
|
24
|
+
persistent: options.persistent ?? false,
|
|
25
|
+
name: options.name ?? 'edgeflow-cache',
|
|
26
|
+
};
|
|
27
|
+
// Load from persistent storage if enabled
|
|
28
|
+
if (this.options.persistent) {
|
|
29
|
+
this.loadFromStorage();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get value from cache
|
|
34
|
+
*/
|
|
35
|
+
get(key) {
|
|
36
|
+
const entry = this.cache.get(key);
|
|
37
|
+
if (!entry) {
|
|
38
|
+
this.misses++;
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
// Check TTL
|
|
42
|
+
if (entry.ttl && Date.now() - entry.createdAt > entry.ttl) {
|
|
43
|
+
this.delete(key);
|
|
44
|
+
this.misses++;
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
// Update access stats
|
|
48
|
+
entry.accessedAt = Date.now();
|
|
49
|
+
entry.accessCount++;
|
|
50
|
+
this.hits++;
|
|
51
|
+
return entry.value;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Set value in cache
|
|
55
|
+
*/
|
|
56
|
+
set(key, value, size, ttl) {
|
|
57
|
+
// Remove existing entry if present
|
|
58
|
+
if (this.cache.has(key)) {
|
|
59
|
+
this.delete(key);
|
|
60
|
+
}
|
|
61
|
+
// Evict entries if necessary
|
|
62
|
+
while ((this.currentSize + size > this.options.maxSize ||
|
|
63
|
+
this.cache.size >= this.options.maxEntries) &&
|
|
64
|
+
this.cache.size > 0) {
|
|
65
|
+
this.evict();
|
|
66
|
+
}
|
|
67
|
+
// Determine TTL value
|
|
68
|
+
const entryTtl = ttl !== undefined ? ttl : (this.options.ttl > 0 ? this.options.ttl : undefined);
|
|
69
|
+
// Add new entry
|
|
70
|
+
const entry = {
|
|
71
|
+
value,
|
|
72
|
+
size,
|
|
73
|
+
createdAt: Date.now(),
|
|
74
|
+
accessedAt: Date.now(),
|
|
75
|
+
accessCount: 1,
|
|
76
|
+
ttl: entryTtl,
|
|
77
|
+
};
|
|
78
|
+
this.cache.set(key, entry);
|
|
79
|
+
this.currentSize += size;
|
|
80
|
+
// Persist if enabled
|
|
81
|
+
if (this.options.persistent) {
|
|
82
|
+
this.saveToStorage();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Check if key exists
|
|
87
|
+
*/
|
|
88
|
+
has(key) {
|
|
89
|
+
const entry = this.cache.get(key);
|
|
90
|
+
if (!entry)
|
|
91
|
+
return false;
|
|
92
|
+
// Check TTL
|
|
93
|
+
if (entry.ttl && Date.now() - entry.createdAt > entry.ttl) {
|
|
94
|
+
this.delete(key);
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Delete entry
|
|
101
|
+
*/
|
|
102
|
+
delete(key) {
|
|
103
|
+
const entry = this.cache.get(key);
|
|
104
|
+
if (entry) {
|
|
105
|
+
this.currentSize -= entry.size;
|
|
106
|
+
this.cache.delete(key);
|
|
107
|
+
if (this.options.persistent) {
|
|
108
|
+
this.saveToStorage();
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Clear the cache
|
|
116
|
+
*/
|
|
117
|
+
clear() {
|
|
118
|
+
this.cache.clear();
|
|
119
|
+
this.currentSize = 0;
|
|
120
|
+
this.hits = 0;
|
|
121
|
+
this.misses = 0;
|
|
122
|
+
if (this.options.persistent) {
|
|
123
|
+
this.clearStorage();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get cache statistics
|
|
128
|
+
*/
|
|
129
|
+
getStats() {
|
|
130
|
+
const total = this.hits + this.misses;
|
|
131
|
+
return {
|
|
132
|
+
entries: this.cache.size,
|
|
133
|
+
size: this.currentSize,
|
|
134
|
+
hits: this.hits,
|
|
135
|
+
misses: this.misses,
|
|
136
|
+
hitRate: total > 0 ? this.hits / total : 0,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Evict an entry based on strategy
|
|
141
|
+
*/
|
|
142
|
+
evict() {
|
|
143
|
+
let keyToEvict = null;
|
|
144
|
+
switch (this.options.strategy) {
|
|
145
|
+
case 'lru':
|
|
146
|
+
keyToEvict = this.findLRU();
|
|
147
|
+
break;
|
|
148
|
+
case 'lfu':
|
|
149
|
+
keyToEvict = this.findLFU();
|
|
150
|
+
break;
|
|
151
|
+
case 'fifo':
|
|
152
|
+
keyToEvict = this.findOldest();
|
|
153
|
+
break;
|
|
154
|
+
case 'ttl':
|
|
155
|
+
keyToEvict = this.findExpired() ?? this.findOldest();
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
if (keyToEvict) {
|
|
159
|
+
this.delete(keyToEvict);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Find least recently used entry
|
|
164
|
+
*/
|
|
165
|
+
findLRU() {
|
|
166
|
+
let oldest = null;
|
|
167
|
+
let oldestTime = Infinity;
|
|
168
|
+
for (const [key, entry] of this.cache) {
|
|
169
|
+
if (entry.accessedAt < oldestTime) {
|
|
170
|
+
oldestTime = entry.accessedAt;
|
|
171
|
+
oldest = key;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return oldest;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Find least frequently used entry
|
|
178
|
+
*/
|
|
179
|
+
findLFU() {
|
|
180
|
+
let lfu = null;
|
|
181
|
+
let minCount = Infinity;
|
|
182
|
+
for (const [key, entry] of this.cache) {
|
|
183
|
+
if (entry.accessCount < minCount) {
|
|
184
|
+
minCount = entry.accessCount;
|
|
185
|
+
lfu = key;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return lfu;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Find oldest entry (FIFO)
|
|
192
|
+
*/
|
|
193
|
+
findOldest() {
|
|
194
|
+
let oldest = null;
|
|
195
|
+
let oldestTime = Infinity;
|
|
196
|
+
for (const [key, entry] of this.cache) {
|
|
197
|
+
if (entry.createdAt < oldestTime) {
|
|
198
|
+
oldestTime = entry.createdAt;
|
|
199
|
+
oldest = key;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return oldest;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Find expired entry
|
|
206
|
+
*/
|
|
207
|
+
findExpired() {
|
|
208
|
+
const now = Date.now();
|
|
209
|
+
for (const [key, entry] of this.cache) {
|
|
210
|
+
if (entry.ttl && now - entry.createdAt > entry.ttl) {
|
|
211
|
+
return key;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Load cache from IndexedDB
|
|
218
|
+
*/
|
|
219
|
+
async loadFromStorage() {
|
|
220
|
+
if (typeof indexedDB === 'undefined')
|
|
221
|
+
return;
|
|
222
|
+
try {
|
|
223
|
+
const db = await this.openDB();
|
|
224
|
+
const tx = db.transaction('cache', 'readonly');
|
|
225
|
+
const store = tx.objectStore('cache');
|
|
226
|
+
const request = store.getAll();
|
|
227
|
+
return new Promise((resolve, reject) => {
|
|
228
|
+
request.onsuccess = () => {
|
|
229
|
+
const entries = request.result;
|
|
230
|
+
for (const { key, entry } of entries) {
|
|
231
|
+
this.cache.set(key, entry);
|
|
232
|
+
this.currentSize += entry.size;
|
|
233
|
+
}
|
|
234
|
+
resolve();
|
|
235
|
+
};
|
|
236
|
+
request.onerror = () => reject(request.error);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
// Ignore storage errors
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Save cache to IndexedDB
|
|
245
|
+
*/
|
|
246
|
+
async saveToStorage() {
|
|
247
|
+
if (typeof indexedDB === 'undefined')
|
|
248
|
+
return;
|
|
249
|
+
try {
|
|
250
|
+
const db = await this.openDB();
|
|
251
|
+
const tx = db.transaction('cache', 'readwrite');
|
|
252
|
+
const store = tx.objectStore('cache');
|
|
253
|
+
// Clear existing entries
|
|
254
|
+
store.clear();
|
|
255
|
+
// Add current entries
|
|
256
|
+
for (const [key, entry] of this.cache) {
|
|
257
|
+
store.put({ key, entry });
|
|
258
|
+
}
|
|
259
|
+
return new Promise((resolve, reject) => {
|
|
260
|
+
tx.oncomplete = () => resolve();
|
|
261
|
+
tx.onerror = () => reject(tx.error);
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
// Ignore storage errors
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Clear IndexedDB storage
|
|
270
|
+
*/
|
|
271
|
+
async clearStorage() {
|
|
272
|
+
if (typeof indexedDB === 'undefined')
|
|
273
|
+
return;
|
|
274
|
+
try {
|
|
275
|
+
const db = await this.openDB();
|
|
276
|
+
const tx = db.transaction('cache', 'readwrite');
|
|
277
|
+
const store = tx.objectStore('cache');
|
|
278
|
+
store.clear();
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
// Ignore storage errors
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Open IndexedDB database
|
|
286
|
+
*/
|
|
287
|
+
openDB() {
|
|
288
|
+
return new Promise((resolve, reject) => {
|
|
289
|
+
const request = indexedDB.open(this.options.name, 1);
|
|
290
|
+
request.onupgradeneeded = () => {
|
|
291
|
+
const db = request.result;
|
|
292
|
+
if (!db.objectStoreNames.contains('cache')) {
|
|
293
|
+
db.createObjectStore('cache', { keyPath: 'key' });
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
request.onsuccess = () => resolve(request.result);
|
|
297
|
+
request.onerror = () => reject(request.error);
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// ============================================================================
|
|
302
|
+
// Inference Result Cache
|
|
303
|
+
// ============================================================================
|
|
304
|
+
/**
|
|
305
|
+
* InferenceCache - Cache for inference results
|
|
306
|
+
*/
|
|
307
|
+
export class InferenceCache extends Cache {
|
|
308
|
+
/**
|
|
309
|
+
* Generate cache key from input
|
|
310
|
+
*/
|
|
311
|
+
generateKey(modelId, input) {
|
|
312
|
+
// Create hash from input data
|
|
313
|
+
const inputArray = Array.isArray(input) ? input : Array.from(input);
|
|
314
|
+
const hash = this.hashArray(inputArray);
|
|
315
|
+
return `${modelId}:${hash}`;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Simple hash function for arrays
|
|
319
|
+
*/
|
|
320
|
+
hashArray(arr) {
|
|
321
|
+
let hash = 0;
|
|
322
|
+
const sample = arr.length > 100
|
|
323
|
+
? arr.filter((_, i) => i % Math.floor(arr.length / 100) === 0)
|
|
324
|
+
: arr;
|
|
325
|
+
for (let i = 0; i < sample.length; i++) {
|
|
326
|
+
const value = sample[i] ?? 0;
|
|
327
|
+
hash = ((hash << 5) - hash) + (value * 1000 | 0);
|
|
328
|
+
hash |= 0;
|
|
329
|
+
}
|
|
330
|
+
return hash.toString(36);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// ============================================================================
|
|
334
|
+
// Model Cache
|
|
335
|
+
// ============================================================================
|
|
336
|
+
/**
|
|
337
|
+
* Model download cache using Cache API
|
|
338
|
+
*/
|
|
339
|
+
export class ModelDownloadCache {
|
|
340
|
+
cacheName;
|
|
341
|
+
cache = null;
|
|
342
|
+
constructor(cacheName = 'edgeflow-models') {
|
|
343
|
+
this.cacheName = cacheName;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Initialize cache
|
|
347
|
+
*/
|
|
348
|
+
async ensureCache() {
|
|
349
|
+
if (!this.cache) {
|
|
350
|
+
if (typeof caches === 'undefined') {
|
|
351
|
+
throw new Error('Cache API is not available');
|
|
352
|
+
}
|
|
353
|
+
this.cache = await caches.open(this.cacheName);
|
|
354
|
+
}
|
|
355
|
+
return this.cache;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Get cached response
|
|
359
|
+
*/
|
|
360
|
+
async get(url) {
|
|
361
|
+
try {
|
|
362
|
+
const cache = await this.ensureCache();
|
|
363
|
+
return await cache.match(url) ?? undefined;
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
return undefined;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Store response in cache
|
|
371
|
+
*/
|
|
372
|
+
async put(url, response) {
|
|
373
|
+
try {
|
|
374
|
+
const cache = await this.ensureCache();
|
|
375
|
+
await cache.put(url, response.clone());
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
// Ignore cache errors
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Delete cached response
|
|
383
|
+
*/
|
|
384
|
+
async delete(url) {
|
|
385
|
+
try {
|
|
386
|
+
const cache = await this.ensureCache();
|
|
387
|
+
return await cache.delete(url);
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Clear all cached models
|
|
395
|
+
*/
|
|
396
|
+
async clear() {
|
|
397
|
+
try {
|
|
398
|
+
await caches.delete(this.cacheName);
|
|
399
|
+
this.cache = null;
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
// Ignore cache errors
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Get all cached URLs
|
|
407
|
+
*/
|
|
408
|
+
async keys() {
|
|
409
|
+
try {
|
|
410
|
+
const cache = await this.ensureCache();
|
|
411
|
+
const requests = await cache.keys();
|
|
412
|
+
return requests.map(r => r.url);
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
return [];
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
// ============================================================================
|
|
420
|
+
// Factory Functions
|
|
421
|
+
// ============================================================================
|
|
422
|
+
/**
|
|
423
|
+
* Create a cache with common presets
|
|
424
|
+
*/
|
|
425
|
+
export function createCache(preset = 'medium', options = {}) {
|
|
426
|
+
const presets = {
|
|
427
|
+
small: {
|
|
428
|
+
maxSize: 10 * 1024 * 1024, // 10MB
|
|
429
|
+
maxEntries: 100,
|
|
430
|
+
},
|
|
431
|
+
medium: {
|
|
432
|
+
maxSize: 100 * 1024 * 1024, // 100MB
|
|
433
|
+
maxEntries: 500,
|
|
434
|
+
},
|
|
435
|
+
large: {
|
|
436
|
+
maxSize: 500 * 1024 * 1024, // 500MB
|
|
437
|
+
maxEntries: 2000,
|
|
438
|
+
},
|
|
439
|
+
custom: {},
|
|
440
|
+
};
|
|
441
|
+
return new Cache({ ...presets[preset], ...options });
|
|
442
|
+
}
|
|
443
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Utilities Exports
|
|
3
|
+
*/
|
|
4
|
+
export { Tokenizer, createBasicTokenizer, loadTokenizer, type TokenizerModel, type TokenizerOptions, } from './tokenizer.js';
|
|
5
|
+
export { ImagePreprocessor, AudioPreprocessor, preprocessText, createImagePreprocessor, createAudioPreprocessor, type ImagePreprocessorOptions, type AudioPreprocessorOptions, type TextPreprocessorOptions, } from './preprocessor.js';
|
|
6
|
+
export { Cache, InferenceCache, ModelDownloadCache, createCache, type CacheStrategy, type CacheOptions, type CacheStats, } from './cache.js';
|
|
7
|
+
export { loadModelData, preloadModel, preloadModels, isModelCached, getCachedModel, deleteCachedModel, clearModelCache, getModelCacheStats, getPreloadStatus, cancelPreload, getPreloadedModel, type DownloadProgress, type ModelLoaderOptions, type PreloadOptions, } from './model-loader.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,KAAK,EACL,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Utilities Exports
|
|
3
|
+
*/
|
|
4
|
+
// Tokenizer
|
|
5
|
+
export { Tokenizer, createBasicTokenizer, loadTokenizer, } from './tokenizer.js';
|
|
6
|
+
// Preprocessor
|
|
7
|
+
export { ImagePreprocessor, AudioPreprocessor, preprocessText, createImagePreprocessor, createAudioPreprocessor, } from './preprocessor.js';
|
|
8
|
+
// Cache
|
|
9
|
+
export { Cache, InferenceCache, ModelDownloadCache, createCache, } from './cache.js';
|
|
10
|
+
// Model Loader (Preloading, Sharding, Resume, Caching)
|
|
11
|
+
export { loadModelData, preloadModel, preloadModels, isModelCached, getCachedModel, deleteCachedModel, clearModelCache, getModelCacheStats, getPreloadStatus, cancelPreload, getPreloadedModel, } from './model-loader.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY;AACZ,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,aAAa,GAGd,MAAM,gBAAgB,CAAC;AAExB,eAAe;AACf,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,GAIxB,MAAM,mBAAmB,CAAC;AAE3B,QAAQ;AACR,OAAO,EACL,KAAK,EACL,cAAc,EACd,kBAAkB,EAClB,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,uDAAuD;AACvD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GAIlB,MAAM,mBAAmB,CAAC"}
|