@souscheflabs/ml-vision 0.1.0 → 0.1.2
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/CHANGELOG.md +54 -0
- package/LICENSE +15 -0
- package/README.md +50 -5
- package/dist/{components → cjs/components}/DetectionOverlay.js +1 -0
- package/dist/cjs/components/DetectionOverlay.js.map +1 -0
- package/dist/{components → cjs/components}/index.js +1 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/{core → cjs/core}/CacheManager.js +1 -0
- package/dist/cjs/core/CacheManager.js.map +1 -0
- package/dist/{core → cjs/core}/MLVisionProvider.js +4 -2
- package/dist/cjs/core/MLVisionProvider.js.map +1 -0
- package/dist/{core → cjs/core}/ServerClient.js +33 -13
- package/dist/cjs/core/ServerClient.js.map +1 -0
- package/dist/{core → cjs/core}/index.js +1 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/classLabels.js +1 -0
- package/dist/cjs/hooks/classLabels.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/classLabelsCoco.js +1 -0
- package/dist/cjs/hooks/classLabelsCoco.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/index.js +1 -0
- package/dist/cjs/hooks/index.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useMultiBarcodeScanner.js +6 -3
- package/dist/cjs/hooks/useMultiBarcodeScanner.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useProductDetector.js +161 -90
- package/dist/cjs/hooks/useProductDetector.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useReceiptScanner.js +60 -52
- package/dist/cjs/hooks/useReceiptScanner.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useVideoScanner.js +8 -5
- package/dist/cjs/hooks/useVideoScanner.js.map +1 -0
- package/dist/{index.js → cjs/index.js} +8 -4
- package/dist/cjs/index.js.map +1 -0
- package/dist/{processors → cjs/processors}/detectionProcessor.js +1 -0
- package/dist/cjs/processors/detectionProcessor.js.map +1 -0
- package/dist/{processors → cjs/processors}/index.js +1 -0
- package/dist/cjs/processors/index.js.map +1 -0
- package/dist/{processors → cjs/processors}/tfliteFrameProcessor.js +108 -25
- package/dist/cjs/processors/tfliteFrameProcessor.js.map +1 -0
- package/dist/{types → cjs/types}/barcode.js +1 -0
- package/dist/cjs/types/barcode.js.map +1 -0
- package/dist/{types → cjs/types}/detection.js +1 -0
- package/dist/cjs/types/detection.js.map +1 -0
- package/dist/{types → cjs/types}/index.js +1 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/{types → cjs/types}/ocr.js +1 -0
- package/dist/cjs/types/ocr.js.map +1 -0
- package/dist/{utils → cjs/utils}/imagePreprocessor.js +30 -25
- package/dist/cjs/utils/imagePreprocessor.js.map +1 -0
- package/dist/cjs/utils/logger.js +99 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/{utils → cjs/utils}/yoloProcessor.js +1 -0
- package/dist/cjs/utils/yoloProcessor.js.map +1 -0
- package/dist/esm/components/DetectionOverlay.js +130 -0
- package/dist/esm/components/DetectionOverlay.js.map +1 -0
- package/dist/esm/components/index.js +5 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/core/CacheManager.js +327 -0
- package/dist/esm/core/CacheManager.js.map +1 -0
- package/dist/esm/core/MLVisionProvider.js +185 -0
- package/dist/esm/core/MLVisionProvider.js.map +1 -0
- package/dist/esm/core/ServerClient.js +305 -0
- package/dist/esm/core/ServerClient.js.map +1 -0
- package/dist/esm/core/index.js +7 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/hooks/classLabels.js +436 -0
- package/dist/esm/hooks/classLabels.js.map +1 -0
- package/dist/esm/hooks/classLabelsCoco.js +98 -0
- package/dist/esm/hooks/classLabelsCoco.js.map +1 -0
- package/dist/esm/hooks/index.js +9 -0
- package/dist/esm/hooks/index.js.map +1 -0
- package/dist/esm/hooks/useMultiBarcodeScanner.js +290 -0
- package/dist/esm/hooks/useMultiBarcodeScanner.js.map +1 -0
- package/dist/esm/hooks/useProductDetector.js +714 -0
- package/dist/esm/hooks/useProductDetector.js.map +1 -0
- package/dist/esm/hooks/useReceiptScanner.js +407 -0
- package/dist/esm/hooks/useReceiptScanner.js.map +1 -0
- package/dist/esm/hooks/useVideoScanner.js +383 -0
- package/dist/esm/hooks/useVideoScanner.js.map +1 -0
- package/dist/esm/index.js +93 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/processors/detectionProcessor.js +121 -0
- package/dist/esm/processors/detectionProcessor.js.map +1 -0
- package/dist/esm/processors/index.js +7 -0
- package/dist/esm/processors/index.js.map +1 -0
- package/dist/esm/processors/tfliteFrameProcessor.js +292 -0
- package/dist/esm/processors/tfliteFrameProcessor.js.map +1 -0
- package/dist/esm/types/barcode.js +17 -0
- package/dist/esm/types/barcode.js.map +1 -0
- package/dist/esm/types/detection.js +8 -0
- package/dist/esm/types/detection.js.map +1 -0
- package/dist/esm/types/index.js +10 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/ocr.js +8 -0
- package/dist/esm/types/ocr.js.map +1 -0
- package/dist/esm/utils/imagePreprocessor.js +268 -0
- package/dist/esm/utils/imagePreprocessor.js.map +1 -0
- package/dist/esm/utils/logger.js +94 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/yoloProcessor.js +151 -0
- package/dist/esm/utils/yoloProcessor.js.map +1 -0
- package/dist/{components → types/components}/DetectionOverlay.d.ts +1 -0
- package/dist/types/components/DetectionOverlay.d.ts.map +1 -0
- package/dist/{components → types/components}/index.d.ts +1 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/{core → types/core}/CacheManager.d.ts +1 -0
- package/dist/types/core/CacheManager.d.ts.map +1 -0
- package/dist/{core → types/core}/MLVisionProvider.d.ts +1 -0
- package/dist/types/core/MLVisionProvider.d.ts.map +1 -0
- package/dist/{core → types/core}/ServerClient.d.ts +1 -0
- package/dist/types/core/ServerClient.d.ts.map +1 -0
- package/dist/{core → types/core}/index.d.ts +1 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/classLabels.d.ts +1 -0
- package/dist/types/hooks/classLabels.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/classLabelsCoco.d.ts +1 -0
- package/dist/types/hooks/classLabelsCoco.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/index.d.ts +1 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useMultiBarcodeScanner.d.ts +1 -0
- package/dist/types/hooks/useMultiBarcodeScanner.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useProductDetector.d.ts +1 -0
- package/dist/types/hooks/useProductDetector.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useReceiptScanner.d.ts +2 -1
- package/dist/types/hooks/useReceiptScanner.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useVideoScanner.d.ts +1 -0
- package/dist/types/hooks/useVideoScanner.d.ts.map +1 -0
- package/dist/types/index.d.ts +58 -124
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{processors → types/processors}/detectionProcessor.d.ts +1 -0
- package/dist/types/processors/detectionProcessor.d.ts.map +1 -0
- package/dist/{processors → types/processors}/index.d.ts +1 -0
- package/dist/types/processors/index.d.ts.map +1 -0
- package/dist/{processors → types/processors}/tfliteFrameProcessor.d.ts +5 -4
- package/dist/types/processors/tfliteFrameProcessor.d.ts.map +1 -0
- package/dist/types/{barcode.d.ts → types/barcode.d.ts} +1 -0
- package/dist/types/types/barcode.d.ts.map +1 -0
- package/dist/types/{detection.d.ts → types/detection.d.ts} +1 -0
- package/dist/types/types/detection.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +127 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/{ocr.d.ts → types/ocr.d.ts} +1 -0
- package/dist/types/types/ocr.d.ts.map +1 -0
- package/dist/{utils → types/utils}/imagePreprocessor.d.ts +1 -0
- package/dist/types/utils/imagePreprocessor.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +52 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/{utils → types/utils}/yoloProcessor.d.ts +1 -0
- package/dist/types/utils/yoloProcessor.d.ts.map +1 -0
- package/package.json +62 -21
- package/dist/index.d.ts +0 -58
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ServerClient - HTTP client for ML inference server communication
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Health checks
|
|
6
|
+
* - Product detection requests
|
|
7
|
+
* - OCR requests
|
|
8
|
+
* - Error handling and retries
|
|
9
|
+
*/
|
|
10
|
+
import { logger } from '../utils/logger';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Server Error
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Custom error for server communication failures
|
|
16
|
+
*/
|
|
17
|
+
export class ServerError extends Error {
|
|
18
|
+
constructor(message, code, statusCode, details) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'ServerError';
|
|
21
|
+
this.code = code;
|
|
22
|
+
this.statusCode = statusCode;
|
|
23
|
+
this.details = details;
|
|
24
|
+
}
|
|
25
|
+
static fromResponse(response, statusCode) {
|
|
26
|
+
return new ServerError(response.error, response.code, statusCode, response.details);
|
|
27
|
+
}
|
|
28
|
+
static networkError(originalError) {
|
|
29
|
+
return new ServerError(originalError?.message || 'Network request failed', 'NETWORK_ERROR');
|
|
30
|
+
}
|
|
31
|
+
static timeoutError() {
|
|
32
|
+
return new ServerError('Request timed out', 'TIMEOUT_ERROR');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// ============================================================================
|
|
36
|
+
// ServerClient Class
|
|
37
|
+
// ============================================================================
|
|
38
|
+
/**
|
|
39
|
+
* Client for communicating with the ML inference server
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const client = new ServerClient('http://192.168.1.100:8000');
|
|
44
|
+
*
|
|
45
|
+
* // Check health
|
|
46
|
+
* const health = await client.checkHealth();
|
|
47
|
+
*
|
|
48
|
+
* // Detect products
|
|
49
|
+
* const detections = await client.detectProducts({
|
|
50
|
+
* image: base64Image,
|
|
51
|
+
* isBase64: true,
|
|
52
|
+
* });
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export class ServerClient {
|
|
56
|
+
constructor(baseUrl, defaultTimeout = 5000) {
|
|
57
|
+
// Remove trailing slash
|
|
58
|
+
this.baseUrl = baseUrl.replace(/\/$/, '');
|
|
59
|
+
this.defaultTimeout = defaultTimeout;
|
|
60
|
+
}
|
|
61
|
+
// ==========================================================================
|
|
62
|
+
// Health Check
|
|
63
|
+
// ==========================================================================
|
|
64
|
+
/**
|
|
65
|
+
* Check server health status
|
|
66
|
+
*/
|
|
67
|
+
async checkHealth(options) {
|
|
68
|
+
const response = await this.request('/health', 'GET', undefined, options);
|
|
69
|
+
return response;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Quick connectivity check (returns boolean)
|
|
73
|
+
*/
|
|
74
|
+
async isAvailable() {
|
|
75
|
+
try {
|
|
76
|
+
const health = await this.checkHealth({ timeout: 2000 });
|
|
77
|
+
return health.status === 'healthy';
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// ==========================================================================
|
|
84
|
+
// Detection Endpoints
|
|
85
|
+
// ==========================================================================
|
|
86
|
+
/**
|
|
87
|
+
* Detect products in an image
|
|
88
|
+
*/
|
|
89
|
+
async detectProducts(imageData, options) {
|
|
90
|
+
logger.debug('[ServerClient] detectProducts called');
|
|
91
|
+
logger.debug('[ServerClient] baseUrl:', this.baseUrl);
|
|
92
|
+
logger.debug('[ServerClient] imageData.image:', imageData.image?.substring(0, 100));
|
|
93
|
+
logger.debug('[ServerClient] imageData.isBase64:', imageData.isBase64);
|
|
94
|
+
const formData = this.createImageFormData(imageData);
|
|
95
|
+
if (options?.maxDetections) {
|
|
96
|
+
formData.append('max_detections', String(options.maxDetections));
|
|
97
|
+
}
|
|
98
|
+
if (options?.minConfidence) {
|
|
99
|
+
formData.append('min_confidence', String(options.minConfidence));
|
|
100
|
+
}
|
|
101
|
+
if (options?.categories) {
|
|
102
|
+
formData.append('categories', options.categories.join(','));
|
|
103
|
+
}
|
|
104
|
+
logger.debug('[ServerClient] Sending request to /api/v1/detect/products...');
|
|
105
|
+
try {
|
|
106
|
+
const response = await this.requestWithForm('/api/v1/detect/products', formData, options);
|
|
107
|
+
logger.debug('[ServerClient] Response received:', JSON.stringify(response));
|
|
108
|
+
return response.detections;
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
logger.error('[ServerClient] Request failed:', err);
|
|
112
|
+
throw err;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Detect fresh produce with quality assessment
|
|
117
|
+
*/
|
|
118
|
+
async detectProduce(imageData, options) {
|
|
119
|
+
const formData = this.createImageFormData(imageData);
|
|
120
|
+
const response = await this.requestWithForm('/api/v1/detect/produce', formData, options);
|
|
121
|
+
return response.detections;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Detect spice jars (requires larger model on server)
|
|
125
|
+
*/
|
|
126
|
+
async detectSpices(imageData, options) {
|
|
127
|
+
const formData = this.createImageFormData(imageData);
|
|
128
|
+
const response = await this.requestWithForm('/api/v1/detect/spices', formData, options);
|
|
129
|
+
return response.detections;
|
|
130
|
+
}
|
|
131
|
+
// ==========================================================================
|
|
132
|
+
// OCR Endpoints
|
|
133
|
+
// ==========================================================================
|
|
134
|
+
/**
|
|
135
|
+
* Extract text and items from a receipt image
|
|
136
|
+
*/
|
|
137
|
+
async scanReceipt(imageData, options) {
|
|
138
|
+
const formData = this.createImageFormData(imageData);
|
|
139
|
+
if (options?.storeHint) {
|
|
140
|
+
formData.append('store_hint', options.storeHint);
|
|
141
|
+
}
|
|
142
|
+
if (options?.languageHint) {
|
|
143
|
+
formData.append('language_hint', options.languageHint);
|
|
144
|
+
}
|
|
145
|
+
const response = await this.requestWithForm('/api/v1/ocr/receipt', formData, options);
|
|
146
|
+
return response;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Read text from a product label
|
|
150
|
+
*/
|
|
151
|
+
async readLabel(imageData, options) {
|
|
152
|
+
const formData = this.createImageFormData(imageData);
|
|
153
|
+
const response = await this.requestWithForm('/api/v1/ocr/label', formData, options);
|
|
154
|
+
return response;
|
|
155
|
+
}
|
|
156
|
+
// ==========================================================================
|
|
157
|
+
// Private Methods
|
|
158
|
+
// ==========================================================================
|
|
159
|
+
/**
|
|
160
|
+
* Create FormData with image
|
|
161
|
+
*/
|
|
162
|
+
createImageFormData(imageData) {
|
|
163
|
+
const formData = new FormData();
|
|
164
|
+
if (imageData.isBase64) {
|
|
165
|
+
// For base64, send as a field
|
|
166
|
+
formData.append('image_base64', imageData.image);
|
|
167
|
+
if (imageData.mimeType) {
|
|
168
|
+
formData.append('mime_type', imageData.mimeType);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
// For file URI, create a file object
|
|
173
|
+
// React Native's FormData handles file:// URIs
|
|
174
|
+
const uri = imageData.image;
|
|
175
|
+
const filename = uri.split('/').pop() || 'image.jpg';
|
|
176
|
+
const type = imageData.mimeType || 'image/jpeg';
|
|
177
|
+
formData.append('image', {
|
|
178
|
+
uri,
|
|
179
|
+
name: filename,
|
|
180
|
+
type,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return formData;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Make a JSON request
|
|
187
|
+
*/
|
|
188
|
+
async request(endpoint, method, body, options) {
|
|
189
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
190
|
+
const timeout = options?.timeout ?? this.defaultTimeout;
|
|
191
|
+
// Create abort controller for timeout
|
|
192
|
+
const controller = new AbortController();
|
|
193
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
194
|
+
// Track external abort handler for cleanup
|
|
195
|
+
let externalAbortHandler = null;
|
|
196
|
+
// Combine with external signal if provided
|
|
197
|
+
if (options?.signal) {
|
|
198
|
+
externalAbortHandler = () => controller.abort();
|
|
199
|
+
options.signal.addEventListener('abort', externalAbortHandler);
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
const response = await fetch(url, {
|
|
203
|
+
method,
|
|
204
|
+
headers: {
|
|
205
|
+
'Content-Type': 'application/json',
|
|
206
|
+
Accept: 'application/json',
|
|
207
|
+
},
|
|
208
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
209
|
+
signal: controller.signal,
|
|
210
|
+
});
|
|
211
|
+
if (!response.ok) {
|
|
212
|
+
const errorBody = await response.json().catch(() => ({
|
|
213
|
+
error: 'Unknown error',
|
|
214
|
+
code: 'UNKNOWN_ERROR',
|
|
215
|
+
}));
|
|
216
|
+
throw ServerError.fromResponse(errorBody, response.status);
|
|
217
|
+
}
|
|
218
|
+
return (await response.json());
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
if (error instanceof ServerError) {
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
if (error instanceof Error) {
|
|
225
|
+
if (error.name === 'AbortError') {
|
|
226
|
+
throw ServerError.timeoutError();
|
|
227
|
+
}
|
|
228
|
+
throw ServerError.networkError(error);
|
|
229
|
+
}
|
|
230
|
+
throw ServerError.networkError();
|
|
231
|
+
}
|
|
232
|
+
finally {
|
|
233
|
+
// Clean up timeout
|
|
234
|
+
clearTimeout(timeoutId);
|
|
235
|
+
// Clean up external abort listener
|
|
236
|
+
if (options?.signal && externalAbortHandler) {
|
|
237
|
+
options.signal.removeEventListener('abort', externalAbortHandler);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Make a multipart form request
|
|
243
|
+
*/
|
|
244
|
+
async requestWithForm(endpoint, formData, options) {
|
|
245
|
+
const url = `${this.baseUrl}${endpoint}`;
|
|
246
|
+
const timeout = options?.timeout ?? this.defaultTimeout;
|
|
247
|
+
const controller = new AbortController();
|
|
248
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
249
|
+
// Track external abort handler for cleanup
|
|
250
|
+
let externalAbortHandler = null;
|
|
251
|
+
if (options?.signal) {
|
|
252
|
+
externalAbortHandler = () => controller.abort();
|
|
253
|
+
options.signal.addEventListener('abort', externalAbortHandler);
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
const response = await fetch(url, {
|
|
257
|
+
method: 'POST',
|
|
258
|
+
headers: {
|
|
259
|
+
Accept: 'application/json',
|
|
260
|
+
// Don't set Content-Type for FormData - fetch will set it with boundary
|
|
261
|
+
},
|
|
262
|
+
body: formData,
|
|
263
|
+
signal: controller.signal,
|
|
264
|
+
});
|
|
265
|
+
if (!response.ok) {
|
|
266
|
+
const errorBody = await response.json().catch(() => ({
|
|
267
|
+
error: 'Unknown error',
|
|
268
|
+
code: 'UNKNOWN_ERROR',
|
|
269
|
+
}));
|
|
270
|
+
throw ServerError.fromResponse(errorBody, response.status);
|
|
271
|
+
}
|
|
272
|
+
return (await response.json());
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
if (error instanceof ServerError) {
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
if (error instanceof Error) {
|
|
279
|
+
if (error.name === 'AbortError') {
|
|
280
|
+
throw ServerError.timeoutError();
|
|
281
|
+
}
|
|
282
|
+
throw ServerError.networkError(error);
|
|
283
|
+
}
|
|
284
|
+
throw ServerError.networkError();
|
|
285
|
+
}
|
|
286
|
+
finally {
|
|
287
|
+
// Clean up timeout
|
|
288
|
+
clearTimeout(timeoutId);
|
|
289
|
+
// Clean up external abort listener
|
|
290
|
+
if (options?.signal && externalAbortHandler) {
|
|
291
|
+
options.signal.removeEventListener('abort', externalAbortHandler);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// ============================================================================
|
|
297
|
+
// Factory Function
|
|
298
|
+
// ============================================================================
|
|
299
|
+
/**
|
|
300
|
+
* Create a ServerClient instance
|
|
301
|
+
*/
|
|
302
|
+
export function createServerClient(baseUrl, timeout) {
|
|
303
|
+
return new ServerClient(baseUrl, timeout);
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=ServerClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerClient.js","sourceRoot":"","sources":["../../../src/core/ServerClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core module exports
|
|
3
|
+
*/
|
|
4
|
+
export { MLVisionProvider, useMLVisionContext, useMLVisionReady, } from './MLVisionProvider';
|
|
5
|
+
export { CacheManager, createCacheManager, CACHE_TTL, } from './CacheManager';
|
|
6
|
+
export { ServerClient, createServerClient, ServerError, } from './ServerClient';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GAGjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,SAAS,GAGV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,WAAW,GAKZ,MAAM,gBAAgB,CAAC"}
|