@souscheflabs/ml-vision 0.1.1 → 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.
Files changed (149) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/LICENSE +15 -0
  3. package/README.md +50 -5
  4. package/dist/{components → cjs/components}/DetectionOverlay.js +1 -0
  5. package/dist/cjs/components/DetectionOverlay.js.map +1 -0
  6. package/dist/{components → cjs/components}/index.js +1 -0
  7. package/dist/cjs/components/index.js.map +1 -0
  8. package/dist/{core → cjs/core}/CacheManager.js +1 -0
  9. package/dist/cjs/core/CacheManager.js.map +1 -0
  10. package/dist/{core → cjs/core}/MLVisionProvider.js +4 -2
  11. package/dist/cjs/core/MLVisionProvider.js.map +1 -0
  12. package/dist/{core → cjs/core}/ServerClient.js +33 -13
  13. package/dist/cjs/core/ServerClient.js.map +1 -0
  14. package/dist/{core → cjs/core}/index.js +1 -0
  15. package/dist/cjs/core/index.js.map +1 -0
  16. package/dist/{hooks → cjs/hooks}/classLabels.js +1 -0
  17. package/dist/cjs/hooks/classLabels.js.map +1 -0
  18. package/dist/{hooks → cjs/hooks}/classLabelsCoco.js +1 -0
  19. package/dist/cjs/hooks/classLabelsCoco.js.map +1 -0
  20. package/dist/{hooks → cjs/hooks}/index.js +1 -0
  21. package/dist/cjs/hooks/index.js.map +1 -0
  22. package/dist/{hooks → cjs/hooks}/useMultiBarcodeScanner.js +6 -3
  23. package/dist/cjs/hooks/useMultiBarcodeScanner.js.map +1 -0
  24. package/dist/{hooks → cjs/hooks}/useProductDetector.js +161 -90
  25. package/dist/cjs/hooks/useProductDetector.js.map +1 -0
  26. package/dist/{hooks → cjs/hooks}/useReceiptScanner.js +60 -52
  27. package/dist/cjs/hooks/useReceiptScanner.js.map +1 -0
  28. package/dist/{hooks → cjs/hooks}/useVideoScanner.js +8 -5
  29. package/dist/cjs/hooks/useVideoScanner.js.map +1 -0
  30. package/dist/{index.js → cjs/index.js} +8 -4
  31. package/dist/cjs/index.js.map +1 -0
  32. package/dist/{processors → cjs/processors}/detectionProcessor.js +1 -0
  33. package/dist/cjs/processors/detectionProcessor.js.map +1 -0
  34. package/dist/{processors → cjs/processors}/index.js +1 -0
  35. package/dist/cjs/processors/index.js.map +1 -0
  36. package/dist/{processors → cjs/processors}/tfliteFrameProcessor.js +108 -25
  37. package/dist/cjs/processors/tfliteFrameProcessor.js.map +1 -0
  38. package/dist/{types → cjs/types}/barcode.js +1 -0
  39. package/dist/cjs/types/barcode.js.map +1 -0
  40. package/dist/{types → cjs/types}/detection.js +1 -0
  41. package/dist/cjs/types/detection.js.map +1 -0
  42. package/dist/{types → cjs/types}/index.js +1 -0
  43. package/dist/cjs/types/index.js.map +1 -0
  44. package/dist/{types → cjs/types}/ocr.js +1 -0
  45. package/dist/cjs/types/ocr.js.map +1 -0
  46. package/dist/{utils → cjs/utils}/imagePreprocessor.js +30 -25
  47. package/dist/cjs/utils/imagePreprocessor.js.map +1 -0
  48. package/dist/cjs/utils/logger.js +99 -0
  49. package/dist/cjs/utils/logger.js.map +1 -0
  50. package/dist/{utils → cjs/utils}/yoloProcessor.js +1 -0
  51. package/dist/cjs/utils/yoloProcessor.js.map +1 -0
  52. package/dist/esm/components/DetectionOverlay.js +130 -0
  53. package/dist/esm/components/DetectionOverlay.js.map +1 -0
  54. package/dist/esm/components/index.js +5 -0
  55. package/dist/esm/components/index.js.map +1 -0
  56. package/dist/esm/core/CacheManager.js +327 -0
  57. package/dist/esm/core/CacheManager.js.map +1 -0
  58. package/dist/esm/core/MLVisionProvider.js +185 -0
  59. package/dist/esm/core/MLVisionProvider.js.map +1 -0
  60. package/dist/esm/core/ServerClient.js +305 -0
  61. package/dist/esm/core/ServerClient.js.map +1 -0
  62. package/dist/esm/core/index.js +7 -0
  63. package/dist/esm/core/index.js.map +1 -0
  64. package/dist/esm/hooks/classLabels.js +436 -0
  65. package/dist/esm/hooks/classLabels.js.map +1 -0
  66. package/dist/esm/hooks/classLabelsCoco.js +98 -0
  67. package/dist/esm/hooks/classLabelsCoco.js.map +1 -0
  68. package/dist/esm/hooks/index.js +9 -0
  69. package/dist/esm/hooks/index.js.map +1 -0
  70. package/dist/esm/hooks/useMultiBarcodeScanner.js +290 -0
  71. package/dist/esm/hooks/useMultiBarcodeScanner.js.map +1 -0
  72. package/dist/esm/hooks/useProductDetector.js +714 -0
  73. package/dist/esm/hooks/useProductDetector.js.map +1 -0
  74. package/dist/esm/hooks/useReceiptScanner.js +407 -0
  75. package/dist/esm/hooks/useReceiptScanner.js.map +1 -0
  76. package/dist/esm/hooks/useVideoScanner.js +383 -0
  77. package/dist/esm/hooks/useVideoScanner.js.map +1 -0
  78. package/dist/esm/index.js +93 -0
  79. package/dist/esm/index.js.map +1 -0
  80. package/dist/esm/processors/detectionProcessor.js +121 -0
  81. package/dist/esm/processors/detectionProcessor.js.map +1 -0
  82. package/dist/esm/processors/index.js +7 -0
  83. package/dist/esm/processors/index.js.map +1 -0
  84. package/dist/esm/processors/tfliteFrameProcessor.js +292 -0
  85. package/dist/esm/processors/tfliteFrameProcessor.js.map +1 -0
  86. package/dist/esm/types/barcode.js +17 -0
  87. package/dist/esm/types/barcode.js.map +1 -0
  88. package/dist/esm/types/detection.js +8 -0
  89. package/dist/esm/types/detection.js.map +1 -0
  90. package/dist/esm/types/index.js +10 -0
  91. package/dist/esm/types/index.js.map +1 -0
  92. package/dist/esm/types/ocr.js +8 -0
  93. package/dist/esm/types/ocr.js.map +1 -0
  94. package/dist/esm/utils/imagePreprocessor.js +268 -0
  95. package/dist/esm/utils/imagePreprocessor.js.map +1 -0
  96. package/dist/esm/utils/logger.js +94 -0
  97. package/dist/esm/utils/logger.js.map +1 -0
  98. package/dist/esm/utils/yoloProcessor.js +151 -0
  99. package/dist/esm/utils/yoloProcessor.js.map +1 -0
  100. package/dist/{components → types/components}/DetectionOverlay.d.ts +1 -0
  101. package/dist/types/components/DetectionOverlay.d.ts.map +1 -0
  102. package/dist/{components → types/components}/index.d.ts +1 -0
  103. package/dist/types/components/index.d.ts.map +1 -0
  104. package/dist/{core → types/core}/CacheManager.d.ts +1 -0
  105. package/dist/types/core/CacheManager.d.ts.map +1 -0
  106. package/dist/{core → types/core}/MLVisionProvider.d.ts +1 -0
  107. package/dist/types/core/MLVisionProvider.d.ts.map +1 -0
  108. package/dist/{core → types/core}/ServerClient.d.ts +1 -0
  109. package/dist/types/core/ServerClient.d.ts.map +1 -0
  110. package/dist/{core → types/core}/index.d.ts +1 -0
  111. package/dist/types/core/index.d.ts.map +1 -0
  112. package/dist/{hooks → types/hooks}/classLabels.d.ts +1 -0
  113. package/dist/types/hooks/classLabels.d.ts.map +1 -0
  114. package/dist/{hooks → types/hooks}/classLabelsCoco.d.ts +1 -0
  115. package/dist/types/hooks/classLabelsCoco.d.ts.map +1 -0
  116. package/dist/{hooks → types/hooks}/index.d.ts +1 -0
  117. package/dist/types/hooks/index.d.ts.map +1 -0
  118. package/dist/{hooks → types/hooks}/useMultiBarcodeScanner.d.ts +1 -0
  119. package/dist/types/hooks/useMultiBarcodeScanner.d.ts.map +1 -0
  120. package/dist/{hooks → types/hooks}/useProductDetector.d.ts +1 -0
  121. package/dist/types/hooks/useProductDetector.d.ts.map +1 -0
  122. package/dist/{hooks → types/hooks}/useReceiptScanner.d.ts +2 -1
  123. package/dist/types/hooks/useReceiptScanner.d.ts.map +1 -0
  124. package/dist/{hooks → types/hooks}/useVideoScanner.d.ts +1 -0
  125. package/dist/types/hooks/useVideoScanner.d.ts.map +1 -0
  126. package/dist/types/index.d.ts +58 -124
  127. package/dist/types/index.d.ts.map +1 -0
  128. package/dist/{processors → types/processors}/detectionProcessor.d.ts +1 -0
  129. package/dist/types/processors/detectionProcessor.d.ts.map +1 -0
  130. package/dist/{processors → types/processors}/index.d.ts +1 -0
  131. package/dist/types/processors/index.d.ts.map +1 -0
  132. package/dist/{processors → types/processors}/tfliteFrameProcessor.d.ts +5 -4
  133. package/dist/types/processors/tfliteFrameProcessor.d.ts.map +1 -0
  134. package/dist/types/{barcode.d.ts → types/barcode.d.ts} +1 -0
  135. package/dist/types/types/barcode.d.ts.map +1 -0
  136. package/dist/types/{detection.d.ts → types/detection.d.ts} +1 -0
  137. package/dist/types/types/detection.d.ts.map +1 -0
  138. package/dist/types/types/index.d.ts +127 -0
  139. package/dist/types/types/index.d.ts.map +1 -0
  140. package/dist/types/{ocr.d.ts → types/ocr.d.ts} +1 -0
  141. package/dist/types/types/ocr.d.ts.map +1 -0
  142. package/dist/{utils → types/utils}/imagePreprocessor.d.ts +1 -0
  143. package/dist/types/utils/imagePreprocessor.d.ts.map +1 -0
  144. package/dist/types/utils/logger.d.ts +52 -0
  145. package/dist/types/utils/logger.d.ts.map +1 -0
  146. package/dist/{utils → types/utils}/yoloProcessor.d.ts +1 -0
  147. package/dist/types/utils/yoloProcessor.d.ts.map +1 -0
  148. package/package.json +62 -21
  149. package/dist/index.d.ts +0 -58
@@ -38,6 +38,7 @@ exports.useReceiptScanner = useReceiptScanner;
38
38
  const react_1 = require("react");
39
39
  const text_recognition_1 = __importDefault(require("@react-native-ml-kit/text-recognition"));
40
40
  const MLVisionProvider_1 = require("../core/MLVisionProvider");
41
+ const logger_1 = require("../utils/logger");
41
42
  // ============================================================================
42
43
  // Receipt Parsing Patterns
43
44
  // ============================================================================
@@ -56,15 +57,15 @@ const TIME_PATTERN = /\d{1,2}:\d{2}(?::\d{2})?\s*(?:AM|PM)?/i;
56
57
  // TOTAL|GRAND TOTAL|AMOUNT DUE, SUBTOTAL, TAX
57
58
  /** Known store patterns for detection */
58
59
  const STORE_PATTERNS = [
59
- { pattern: /WALMART/i, store: 'walmart' },
60
- { pattern: /TARGET/i, store: 'target' },
61
- { pattern: /KROGER/i, store: 'kroger' },
62
- { pattern: /SAFEWAY/i, store: 'safeway' },
63
- { pattern: /COSTCO/i, store: 'costco' },
64
- { pattern: /TRADER\s*JOE/i, store: 'trader_joes' },
65
- { pattern: /WHOLE\s*FOODS/i, store: 'whole_foods' },
66
- { pattern: /PUBLIX/i, store: 'publix' },
67
- { pattern: /ALDI/i, store: 'aldi' },
60
+ { pattern: /WALMART/i, store: "walmart" },
61
+ { pattern: /TARGET/i, store: "target" },
62
+ { pattern: /KROGER/i, store: "kroger" },
63
+ { pattern: /SAFEWAY/i, store: "safeway" },
64
+ { pattern: /COSTCO/i, store: "costco" },
65
+ { pattern: /TRADER\s*JOE/i, store: "trader_joes" },
66
+ { pattern: /WHOLE\s*FOODS/i, store: "whole_foods" },
67
+ { pattern: /PUBLIX/i, store: "publix" },
68
+ { pattern: /ALDI/i, store: "aldi" },
68
69
  ];
69
70
  // ============================================================================
70
71
  // Hook Implementation
@@ -80,7 +81,7 @@ function useReceiptScanner(options = {}) {
80
81
  const [isProcessing, setIsProcessing] = (0, react_1.useState)(false);
81
82
  const [items, setItems] = (0, react_1.useState)([]);
82
83
  const [metadata, setMetadata] = (0, react_1.useState)(null);
83
- const [rawText, setRawText] = (0, react_1.useState)('');
84
+ const [rawText, setRawText] = (0, react_1.useState)("");
84
85
  const [confidence, setConfidence] = (0, react_1.useState)(0);
85
86
  const [source, setSource] = (0, react_1.useState)(null);
86
87
  const [error, setError] = (0, react_1.useState)(null);
@@ -95,14 +96,14 @@ function useReceiptScanner(options = {}) {
95
96
  * Parse raw OCR text into receipt items
96
97
  */
97
98
  const parseReceiptText = (0, react_1.useCallback)((text) => {
98
- const lines = text.split('\n').filter(line => line.trim());
99
+ const lines = text.split("\n").filter((line) => line.trim());
99
100
  const parsedLines = lines.map((line, index) => classifyLine(line, index));
100
101
  // Extract metadata
101
102
  const extractedMetadata = {};
102
103
  // Find store name
103
104
  for (const { pattern, store } of STORE_PATTERNS) {
104
105
  if (pattern.test(text)) {
105
- extractedMetadata.storeName = store.toUpperCase().replace('_', ' ');
106
+ extractedMetadata.storeName = store.toUpperCase().replace("_", " ");
106
107
  break;
107
108
  }
108
109
  }
@@ -127,20 +128,20 @@ function useReceiptScanner(options = {}) {
127
128
  }
128
129
  // Find totals
129
130
  for (const parsedLine of parsedLines) {
130
- if (parsedLine.type === 'total' && parsedLine.values.price) {
131
+ if (parsedLine.type === "total" && parsedLine.values.price) {
131
132
  extractedMetadata.total = parsedLine.values.price;
132
133
  }
133
- else if (parsedLine.type === 'subtotal' && parsedLine.values.price) {
134
+ else if (parsedLine.type === "subtotal" && parsedLine.values.price) {
134
135
  extractedMetadata.subtotal = parsedLine.values.price;
135
136
  }
136
- else if (parsedLine.type === 'tax' && parsedLine.values.price) {
137
+ else if (parsedLine.type === "tax" && parsedLine.values.price) {
137
138
  extractedMetadata.tax = parsedLine.values.price;
138
139
  }
139
140
  }
140
141
  // Extract items
141
142
  const extractedItems = parsedLines
142
- .filter(line => line.type === 'item')
143
- .map(line => {
143
+ .filter((line) => line.type === "item")
144
+ .map((line) => {
144
145
  const item = {
145
146
  name: line.values.name || line.text,
146
147
  normalizedName: normalizeItemName(line.values.name || line.text),
@@ -162,46 +163,46 @@ function useReceiptScanner(options = {}) {
162
163
  */
163
164
  function classifyLine(text, lineNumber) {
164
165
  const trimmed = text.trim();
165
- let type = 'unknown';
166
+ let type = "unknown";
166
167
  let lineConfidence = 0.5;
167
168
  const values = {};
168
169
  // Check for totals first
169
170
  if (/^TOTAL/i.test(trimmed) || /GRAND\s*TOTAL/i.test(trimmed)) {
170
- type = 'total';
171
+ type = "total";
171
172
  lineConfidence = 0.95;
172
173
  }
173
174
  else if (/^SUBTOTAL/i.test(trimmed)) {
174
- type = 'subtotal';
175
+ type = "subtotal";
175
176
  lineConfidence = 0.95;
176
177
  }
177
178
  else if (/^TAX/i.test(trimmed) || /SALES\s*TAX/i.test(trimmed)) {
178
- type = 'tax';
179
+ type = "tax";
179
180
  lineConfidence = 0.95;
180
181
  }
181
182
  else if (/^(CASH|CREDIT|DEBIT|VISA|MASTERCARD|AMEX)/i.test(trimmed)) {
182
- type = 'payment';
183
+ type = "payment";
183
184
  lineConfidence = 0.9;
184
185
  }
185
- else if (DATE_PATTERNS.some(p => p.test(trimmed))) {
186
- type = 'date_time';
186
+ else if (DATE_PATTERNS.some((p) => p.test(trimmed))) {
187
+ type = "date_time";
187
188
  lineConfidence = 0.85;
188
189
  }
189
190
  else if (STORE_PATTERNS.some(({ pattern }) => pattern.test(trimmed))) {
190
- type = 'store_info';
191
+ type = "store_info";
191
192
  lineConfidence = 0.9;
192
193
  }
193
- else if (/^\d{10,20}$/.test(trimmed.replace(/[\s-]/g, ''))) {
194
- type = 'transaction';
194
+ else if (/^\d{10,20}$/.test(trimmed.replace(/[\s-]/g, ""))) {
195
+ type = "transaction";
195
196
  lineConfidence = 0.7;
196
197
  }
197
198
  else if (trimmed.length > 3) {
198
199
  // Likely an item line
199
- type = 'item';
200
+ type = "item";
200
201
  // Extract price
201
202
  const prices = trimmed.match(PRICE_PATTERN);
202
203
  if (prices && prices.length > 0) {
203
204
  const lastPrice = prices[prices.length - 1];
204
- values.price = parseFloat(lastPrice.replace('$', ''));
205
+ values.price = parseFloat(lastPrice.replace("$", ""));
205
206
  lineConfidence = 0.8;
206
207
  }
207
208
  // Extract quantity
@@ -222,14 +223,20 @@ function useReceiptScanner(options = {}) {
222
223
  }
223
224
  }
224
225
  // Extract price for non-item lines too
225
- if (type !== 'item' && type !== 'unknown') {
226
+ if (type !== "item" && type !== "unknown") {
226
227
  const prices = trimmed.match(PRICE_PATTERN);
227
228
  if (prices && prices.length > 0) {
228
229
  const lastPrice = prices[prices.length - 1];
229
- values.price = parseFloat(lastPrice.replace('$', ''));
230
+ values.price = parseFloat(lastPrice.replace("$", ""));
230
231
  }
231
232
  }
232
- return { text: trimmed, type, values, lineNumber, confidence: lineConfidence };
233
+ return {
234
+ text: trimmed,
235
+ type,
236
+ values,
237
+ lineNumber,
238
+ confidence: lineConfidence,
239
+ };
233
240
  }
234
241
  /**
235
242
  * Normalize item name for matching
@@ -237,8 +244,8 @@ function useReceiptScanner(options = {}) {
237
244
  function normalizeItemName(name) {
238
245
  return name
239
246
  .toLowerCase()
240
- .replace(/[^a-z0-9\s]/g, '')
241
- .replace(/\s+/g, ' ')
247
+ .replace(/[^a-z0-9\s]/g, "")
248
+ .replace(/\s+/g, " ")
242
249
  .trim();
243
250
  }
244
251
  // ============================================================================
@@ -252,8 +259,8 @@ function useReceiptScanner(options = {}) {
252
259
  setError(null);
253
260
  const startTime = Date.now();
254
261
  try {
255
- let ocrText = '';
256
- let processSource = 'on_device';
262
+ let ocrText = "";
263
+ let processSource = "on_device";
257
264
  // Try server OCR first if available (better accuracy for receipts)
258
265
  if (serverFallback &&
259
266
  effectiveServerUrl &&
@@ -262,24 +269,24 @@ function useReceiptScanner(options = {}) {
262
269
  try {
263
270
  // Note: Server OCR endpoint would return text
264
271
  // For now, simulate with placeholder
265
- console.log('[useReceiptScanner] Server OCR not yet implemented');
272
+ logger_1.logger.debug("[ReceiptScanner] Server OCR not yet implemented");
266
273
  }
267
274
  catch {
268
- console.log('[useReceiptScanner] Server OCR failed, using on-device');
275
+ logger_1.logger.debug("[useReceiptScanner] Server OCR failed, using on-device");
269
276
  }
270
277
  }
271
278
  // Use on-device OCR with MLKit
272
279
  if (!ocrText) {
273
- console.log('[useReceiptScanner] Running MLKit text recognition...');
280
+ logger_1.logger.debug("[ReceiptScanner] Running MLKit text recognition...");
274
281
  try {
275
282
  const result = await text_recognition_1.default.recognize(uri);
276
283
  ocrText = result.text;
277
- console.log(`[useReceiptScanner] MLKit recognized ${result.blocks.length} blocks, ${ocrText.length} chars`);
278
- processSource = 'on_device';
284
+ logger_1.logger.debug(`[useReceiptScanner] MLKit recognized ${result.blocks.length} blocks, ${ocrText.length} chars`);
285
+ processSource = "on_device";
279
286
  }
280
287
  catch (ocrErr) {
281
- console.error('[useReceiptScanner] MLKit OCR error:', ocrErr);
282
- throw new Error(`OCR failed: ${ocrErr instanceof Error ? ocrErr.message : 'Unknown error'}`);
288
+ logger_1.logger.error("[ReceiptScanner] MLKit OCR error:", ocrErr);
289
+ throw new Error(`OCR failed: ${ocrErr instanceof Error ? ocrErr.message : "Unknown error"}`);
283
290
  }
284
291
  }
285
292
  // Parse the OCR text
@@ -294,13 +301,13 @@ function useReceiptScanner(options = {}) {
294
301
  id: `receipt_${Date.now()}_${Math.random()
295
302
  .toString(36)
296
303
  .substr(2, 9)}`,
297
- type: 'receipt',
304
+ type: "receipt",
298
305
  items: parsedItems,
299
306
  metadata: parsedMetadata,
300
307
  rawText: ocrText,
301
308
  textLines: [], // Would be populated by MLKit
302
309
  confidence: overallConfidence,
303
- itemsNeedingReview: parsedItems.filter(i => i.needsReview).length,
310
+ itemsNeedingReview: parsedItems.filter((i) => i.needsReview).length,
304
311
  source: processSource,
305
312
  processingTimeMs,
306
313
  timestamp: Date.now(),
@@ -318,8 +325,8 @@ function useReceiptScanner(options = {}) {
318
325
  return result;
319
326
  }
320
327
  catch (err) {
321
- const scanError = err instanceof Error ? err : new Error('Receipt scan failed');
322
- console.error('[useReceiptScanner] Error:', scanError);
328
+ const scanError = err instanceof Error ? err : new Error("Receipt scan failed");
329
+ logger_1.logger.error("[ReceiptScanner] Error:", scanError);
323
330
  if (mountedRef.current) {
324
331
  setError(scanError);
325
332
  }
@@ -346,25 +353,25 @@ function useReceiptScanner(options = {}) {
346
353
  const scanFrame = (0, react_1.useCallback)(async () => {
347
354
  // This would capture current frame and scan
348
355
  // Requires VisionCamera integration
349
- throw new Error('Frame scanning not implemented - use scanReceipt with photo URI');
356
+ throw new Error("Frame scanning not implemented - use scanReceipt with photo URI");
350
357
  }, []);
351
358
  /**
352
359
  * Confirm an item is correct
353
360
  */
354
361
  const confirmItem = (0, react_1.useCallback)((item) => {
355
- setItems(prev => prev.map(i => i.lineNumber === item.lineNumber ? { ...i, needsReview: false } : i));
362
+ setItems((prev) => prev.map((i) => i.lineNumber === item.lineNumber ? { ...i, needsReview: false } : i));
356
363
  }, []);
357
364
  /**
358
365
  * Reject/remove an item
359
366
  */
360
367
  const rejectItem = (0, react_1.useCallback)((item) => {
361
- setItems(prev => prev.filter(i => i.lineNumber !== item.lineNumber));
368
+ setItems((prev) => prev.filter((i) => i.lineNumber !== item.lineNumber));
362
369
  }, []);
363
370
  /**
364
371
  * Edit an item
365
372
  */
366
373
  const editItem = (0, react_1.useCallback)((item, updates) => {
367
- setItems(prev => prev.map(i => i.lineNumber === item.lineNumber
374
+ setItems((prev) => prev.map((i) => i.lineNumber === item.lineNumber
368
375
  ? { ...i, ...updates, needsReview: false }
369
376
  : i));
370
377
  }, []);
@@ -374,7 +381,7 @@ function useReceiptScanner(options = {}) {
374
381
  const clearResults = (0, react_1.useCallback)(() => {
375
382
  setItems([]);
376
383
  setMetadata(null);
377
- setRawText('');
384
+ setRawText("");
378
385
  setConfidence(0);
379
386
  setSource(null);
380
387
  setError(null);
@@ -403,3 +410,4 @@ function useReceiptScanner(options = {}) {
403
410
  };
404
411
  }
405
412
  exports.default = useReceiptScanner;
413
+ //# sourceMappingURL=useReceiptScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReceiptScanner.js","sourceRoot":"","sources":["../../../src/hooks/useReceiptScanner.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ const useProductDetector_1 = require("./useProductDetector");
36
36
  const useMultiBarcodeScanner_1 = require("./useMultiBarcodeScanner");
37
37
  const tfliteFrameProcessor_1 = require("../processors/tfliteFrameProcessor");
38
38
  const classLabelsCoco_1 = require("./classLabelsCoco");
39
+ const logger_1 = require("../utils/logger");
39
40
  // ============================================================================
40
41
  // Constants
41
42
  // ============================================================================
@@ -73,7 +74,8 @@ function useVideoScanner(options = {}) {
73
74
  const [frameNumber, setFrameNumber] = (0, react_1.useState)(0);
74
75
  const [fps, setFps] = (0, react_1.useState)(0);
75
76
  const [error, setError] = (0, react_1.useState)(null);
76
- const [inferenceTimeMs, _setInferenceTimeMs] = (0, react_1.useState)(0);
77
+ // Track inference time from TFLite frame processor
78
+ const inferenceTimeMsRef = (0, react_1.useRef)(0);
77
79
  // ============================================================================
78
80
  // TFLite Frame Processor (for real-time video detection)
79
81
  // ============================================================================
@@ -252,7 +254,7 @@ function useVideoScanner(options = {}) {
252
254
  }
253
255
  catch (err) {
254
256
  const frameError = err instanceof Error ? err : new Error('Frame processing failed');
255
- console.error('[useVideoScanner] Frame error:', frameError);
257
+ logger_1.logger.error('[VideoScanner] Frame error:', frameError);
256
258
  setError(frameError);
257
259
  onError?.(frameError);
258
260
  }
@@ -275,7 +277,7 @@ function useVideoScanner(options = {}) {
275
277
  */
276
278
  const startScanning = (0, react_1.useCallback)(() => {
277
279
  if (!isReady) {
278
- console.warn('[useVideoScanner] Not ready to scan');
280
+ logger_1.logger.warn('[VideoScanner] Not ready to scan');
279
281
  return;
280
282
  }
281
283
  setIsScanning(true);
@@ -322,7 +324,7 @@ function useVideoScanner(options = {}) {
322
324
  const captureFrame = (0, react_1.useCallback)(async () => {
323
325
  // This would use VisionCamera's takePhoto method
324
326
  // Requires ref to be properly typed and connected
325
- console.log('[useVideoScanner] Frame capture requires VisionCamera ref');
327
+ logger_1.logger.debug('[VideoScanner] Frame capture requires VisionCamera ref');
326
328
  return null;
327
329
  }, []);
328
330
  // ============================================================================
@@ -365,7 +367,7 @@ function useVideoScanner(options = {}) {
365
367
  frameNumber,
366
368
  fps,
367
369
  error,
368
- inferenceTimeMs,
370
+ inferenceTimeMs: inferenceTimeMsRef.current,
369
371
  // Actions
370
372
  startScanning,
371
373
  stopScanning,
@@ -381,3 +383,4 @@ function useVideoScanner(options = {}) {
381
383
  };
382
384
  }
383
385
  exports.default = useVideoScanner;
386
+ //# sourceMappingURL=useVideoScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVideoScanner.js","sourceRoot":"","sources":["../../../src/hooks/useVideoScanner.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@
43
43
  * @packageDocumentation
44
44
  */
45
45
  Object.defineProperty(exports, "__esModule", { value: true });
46
- exports.VERSION = exports.isFoodClass = exports.getCocoClassInfo = exports.FOOD_CLASS_INDICES = exports.NUM_CLASSES_COCO = exports.CLASS_LABELS_COCO = exports.COCO_CLASSES = exports.scaleDetections = exports.processYoloOutput = exports.getFrameProcessorInstructions = exports.isResizePluginAvailable = exports.isSkiaAvailable = exports.preprocessImage = exports.createTFLiteFrameProcessor = exports.useTFLiteFrameProcessor = exports.getClassLabel = exports.frameDetectionToResult = exports.createDetectionProcessor = exports.DetectionLoadingOverlay = exports.DetectionOverlay = exports.useVideoScanner = exports.useReceiptScanner = exports.useMultiBarcodeScanner = exports.CATEGORY_CLASSES = exports.getLabelsArray = exports.getClassInfo = exports.NUM_CLASSES = exports.CLASS_LABELS = exports.useProductDetector = exports.ServerError = exports.createServerClient = exports.ServerClient = exports.CACHE_TTL = exports.createCacheManager = exports.CacheManager = exports.useMLVisionReady = exports.useMLVisionContext = exports.MLVisionProvider = exports.GROCERY_BARCODE_FORMATS = void 0;
46
+ exports.VERSION = exports.getLogLevel = exports.setLogLevel = exports.logger = exports.isFoodClass = exports.getCocoClassInfo = exports.FOOD_CLASS_INDICES = exports.NUM_CLASSES_COCO = exports.CLASS_LABELS_COCO = exports.COCO_CLASSES = exports.scaleDetections = exports.processYoloOutput = exports.getFrameProcessorInstructions = exports.isResizePluginAvailable = exports.isSkiaAvailable = exports.preprocessImage = exports.createTFLiteFrameProcessor = exports.useTFLiteFrameProcessor = exports.getClassLabel = exports.frameDetectionToResult = exports.createDetectionProcessor = exports.DetectionLoadingOverlay = exports.DetectionOverlay = exports.useVideoScanner = exports.useReceiptScanner = exports.useMultiBarcodeScanner = exports.CATEGORY_CLASSES = exports.getLabelsArray = exports.getClassInfo = exports.NUM_CLASSES = exports.CLASS_LABELS = exports.useProductDetector = exports.ServerError = exports.createServerClient = exports.ServerClient = exports.CACHE_TTL = exports.createCacheManager = exports.CacheManager = exports.useMLVisionReady = exports.useMLVisionContext = exports.MLVisionProvider = exports.GROCERY_BARCODE_FORMATS = void 0;
47
47
  // Re-export barcode format constants
48
48
  var barcode_1 = require("./types/barcode");
49
49
  Object.defineProperty(exports, "GROCERY_BARCODE_FORMATS", { enumerable: true, get: function () { return barcode_1.GROCERY_BARCODE_FORMATS; } });
@@ -104,8 +104,6 @@ Object.defineProperty(exports, "createTFLiteFrameProcessor", { enumerable: true,
104
104
  // ============================================================================
105
105
  // Utilities
106
106
  // ============================================================================
107
- // export { generateImageHash } from './utils/imageUtils';
108
- // export { parseReceiptText } from './utils/receiptParser';
109
107
  // Image preprocessing for on-device TFLite inference
110
108
  var imagePreprocessor_1 = require("./utils/imagePreprocessor");
111
109
  Object.defineProperty(exports, "preprocessImage", { enumerable: true, get: function () { return imagePreprocessor_1.preprocessImage; } });
@@ -124,7 +122,13 @@ Object.defineProperty(exports, "NUM_CLASSES_COCO", { enumerable: true, get: func
124
122
  Object.defineProperty(exports, "FOOD_CLASS_INDICES", { enumerable: true, get: function () { return classLabelsCoco_1.FOOD_CLASS_INDICES; } });
125
123
  Object.defineProperty(exports, "getCocoClassInfo", { enumerable: true, get: function () { return classLabelsCoco_1.getCocoClassInfo; } });
126
124
  Object.defineProperty(exports, "isFoodClass", { enumerable: true, get: function () { return classLabelsCoco_1.isFoodClass; } });
125
+ // Logger utility
126
+ var logger_1 = require("./utils/logger");
127
+ Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
128
+ Object.defineProperty(exports, "setLogLevel", { enumerable: true, get: function () { return logger_1.setLogLevel; } });
129
+ Object.defineProperty(exports, "getLogLevel", { enumerable: true, get: function () { return logger_1.getLogLevel; } });
127
130
  // ============================================================================
128
131
  // Version
129
132
  // ============================================================================
130
- exports.VERSION = '0.1.0';
133
+ exports.VERSION = '0.1.1';
134
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;;;AAsDH,qCAAqC;AACrC,2CAA0D;AAAjD,kHAAA,uBAAuB,OAAA;AAEhC,+EAA+E;AAC/E,wCAAwC;AACxC,+EAA+E;AAE/E,+BAuBgB;AAtBd,WAAW;AACX,wGAAA,gBAAgB,OAAA;AAChB,0GAAA,kBAAkB,OAAA;AAClB,wGAAA,gBAAgB,OAAA;AAIhB,QAAQ;AACR,oGAAA,YAAY,OAAA;AACZ,0GAAA,kBAAkB,OAAA;AAClB,iGAAA,SAAS,OAAA;AAIT,gBAAgB;AAChB,oGAAA,YAAY,OAAA;AACZ,0GAAA,kBAAkB,OAAA;AAClB,mGAAA,WAAW,OAAA;AAOb,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,oCAAoC;AACpC,iEAAgE;AAAvD,wHAAA,kBAAkB,OAAA;AAC3B,mDAM6B;AAL3B,2GAAA,YAAY,OAAA;AACZ,0GAAA,WAAW,OAAA;AACX,2GAAA,YAAY,OAAA;AACZ,6GAAA,cAAc,OAAA;AACd,+GAAA,gBAAgB,OAAA;AAGlB,kCAAkC;AAClC,yEAAwE;AAA/D,gIAAA,sBAAsB,OAAA;AAE/B,uBAAuB;AACvB,+DAA8D;AAArD,sHAAA,iBAAiB,OAAA;AAE1B,0BAA0B;AAC1B,2DAMiC;AAL/B,kHAAA,eAAe,OAAA;AAOjB,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,2CAIsB;AAHpB,8GAAA,gBAAgB,OAAA;AAChB,qHAAA,uBAAuB,OAAA;AAIzB,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,2CAMsB;AALpB,sHAAA,wBAAwB,OAAA;AACxB,oHAAA,sBAAsB,OAAA;AACtB,2GAAA,aAAa,OAAA;AAKf,sDAAsD;AACtD,2CAMsB;AALpB,qHAAA,uBAAuB,OAAA;AACvB,wHAAA,0BAA0B,OAAA;AAM5B,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,qDAAqD;AACrD,+DAKmC;AAJjC,oHAAA,eAAe,OAAA;AACf,oHAAA,eAAe,OAAA;AACf,4HAAA,uBAAuB,OAAA;AACvB,kIAAA,6BAA6B,OAAA;AAG/B,yBAAyB;AACzB,uDAG+B;AAF7B,kHAAA,iBAAiB,OAAA;AACjB,gHAAA,eAAe,OAAA;AAGjB,8DAA8D;AAC9D,2DAOiC;AAN/B,+GAAA,YAAY,OAAA;AACZ,oHAAA,iBAAiB,OAAA;AACjB,mHAAA,gBAAgB,OAAA;AAChB,qHAAA,kBAAkB,OAAA;AAClB,mHAAA,gBAAgB,OAAA;AAChB,8GAAA,WAAW,OAAA;AAGb,iBAAiB;AACjB,yCAKwB;AAJtB,gGAAA,MAAM,OAAA;AACN,qGAAA,WAAW,OAAA;AACX,qGAAA,WAAW,OAAA;AAIb,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAElE,QAAA,OAAO,GAAG,OAAO,CAAC"}
@@ -122,3 +122,4 @@ function frameDetectionToResult(detection, imageWidth, imageHeight) {
122
122
  function getClassLabel(classIndex) {
123
123
  return classLabels_1.CLASS_LABELS[classIndex]?.label ?? `class_${classIndex}`;
124
124
  }
125
+ //# sourceMappingURL=detectionProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectionProcessor.js","sourceRoot":"","sources":["../../../src/processors/detectionProcessor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAuEH,4DAgCC;AAWD,wDAgCC;AAKD,sCAEC;AAtJD,sDAAiE;AA4J3C,6FA5Jb,0BAAY,OA4Ja;AAAzB,4FA5Jc,yBAAW,OA4Jd;AArHpB,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,wBAAwB,CAAC,UAAqC,EAAE;IAC9E,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAElC;;;;;;OAMG;IACH,OAAO,SAAS,qBAAqB,CACnC,MAAe;QAEf,SAAS,CAAC;QAEV,iCAAiC;QACjC,YAAY,EAAE,CAAC;QACf,IAAI,YAAY,GAAG,SAAS,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,wCAAwC;QACxC,sCAAsC;QACtC,iCAAiC;QACjC,gDAAgD;QAChD,yBAAyB;QAEzB,yEAAyE;QACzE,+DAA+D;QAE/D,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;GAIG;AACH,SAAgB,sBAAsB,CACpC,SAAyB,EACzB,UAAkB,EAClB,WAAmB;IAEnB,MAAM,SAAS,GAAG,0BAAY,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI;QACtD,KAAK,EAAE,SAAS,SAAS,CAAC,UAAU,EAAE;QACtC,QAAQ,EAAE,SAAkB;KAC7B,CAAC;IAEF,MAAM,WAAW,GAAgB;QAC/B,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU;QAC/B,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW;QAChC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,UAAU;QACvC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW;KAC3C,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACpE,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,WAAW;QACX,IAAI,EAAE;YACJ,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,SAAS,CAAC,KAAK;YAC3B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SACzC;QACD,MAAM,EAAE,WAAW;QACnB,gBAAgB,EAAE,CAAC,EAAE,4CAA4C;QACjE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,UAAkB;IAC9C,OAAO,0BAAY,CAAC,UAAU,CAAC,EAAE,KAAK,IAAI,SAAS,UAAU,EAAE,CAAC;AAClE,CAAC"}
@@ -14,3 +14,4 @@ Object.defineProperty(exports, "CLASS_LABELS", { enumerable: true, get: function
14
14
  var tfliteFrameProcessor_1 = require("./tfliteFrameProcessor");
15
15
  Object.defineProperty(exports, "useTFLiteFrameProcessor", { enumerable: true, get: function () { return tfliteFrameProcessor_1.useTFLiteFrameProcessor; } });
16
16
  Object.defineProperty(exports, "createTFLiteFrameProcessor", { enumerable: true, get: function () { return tfliteFrameProcessor_1.createTFLiteFrameProcessor; } });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/processors/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2DAQ8B;AAP5B,8HAAA,wBAAwB,OAAA;AACxB,4HAAA,sBAAsB,OAAA;AACtB,mHAAA,aAAa,OAAA;AACb,iHAAA,WAAW,OAAA;AACX,kHAAA,YAAY,OAAA;AAKd,sDAAsD;AACtD,+DAMgC;AAL9B,+HAAA,uBAAuB,OAAA;AACvB,kIAAA,0BAA0B,OAAA"}