pi-kiosk-shared 2.2.87 → 2.2.89

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 (58) hide show
  1. package/dist/analytics/tenantCommandCenter.d.ts +6 -1
  2. package/dist/analytics/tenantCommandCenter.d.ts.map +1 -1
  3. package/dist/analyticsEventDescriptions.js +10 -10
  4. package/dist/analyticsEventLabels.js +3 -3
  5. package/dist/auditEventDescriptions.js +10 -10
  6. package/dist/auditEventLabels.js +6 -6
  7. package/dist/barcode-scanner.d.ts +2 -1
  8. package/dist/barcode-scanner.d.ts.map +1 -1
  9. package/dist/barcode-scanner.js +1 -1
  10. package/dist/barcode-scanner.js.map +1 -1
  11. package/dist/errors.js +1 -1
  12. package/dist/hooks/scannerCameraConstraints.d.ts +13 -0
  13. package/dist/hooks/scannerCameraConstraints.d.ts.map +1 -0
  14. package/dist/hooks/scannerCameraConstraints.js +49 -0
  15. package/dist/hooks/scannerCameraConstraints.js.map +1 -0
  16. package/dist/hooks/selectEngine.d.ts +10 -4
  17. package/dist/hooks/selectEngine.d.ts.map +1 -1
  18. package/dist/hooks/selectEngine.js +1 -16
  19. package/dist/hooks/selectEngine.js.map +1 -1
  20. package/dist/hooks/useBarcodeScanner.d.ts +18 -1
  21. package/dist/hooks/useBarcodeScanner.d.ts.map +1 -1
  22. package/dist/hooks/useBarcodeScanner.js +208 -34
  23. package/dist/hooks/useBarcodeScanner.js.map +1 -1
  24. package/dist/hooks/zxingWasmEngine.d.ts +66 -0
  25. package/dist/hooks/zxingWasmEngine.d.ts.map +1 -0
  26. package/dist/hooks/zxingWasmEngine.js +203 -0
  27. package/dist/hooks/zxingWasmEngine.js.map +1 -0
  28. package/dist/order/fulfillmentContracts.d.ts +2 -0
  29. package/dist/order/fulfillmentContracts.d.ts.map +1 -1
  30. package/dist/permissions/permissionLabels.js +4 -4
  31. package/dist/tenant-entitlements/adminMfaEntitlement.d.ts +1 -1
  32. package/dist/tenant-entitlements/adminMfaEntitlement.d.ts.map +1 -1
  33. package/dist/tenant-entitlements/adminMfaEntitlement.js +5 -1
  34. package/dist/tenant-entitlements/adminMfaEntitlement.js.map +1 -1
  35. package/dist/tenant-entitlements/applyTenantScopeToSimpleStates.d.ts.map +1 -1
  36. package/dist/tenant-entitlements/applyTenantScopeToSimpleStates.js +3 -0
  37. package/dist/tenant-entitlements/applyTenantScopeToSimpleStates.js.map +1 -1
  38. package/dist/tenant-entitlements/capabilityEntitlementRequirements.d.ts +65 -0
  39. package/dist/tenant-entitlements/capabilityEntitlementRequirements.d.ts.map +1 -0
  40. package/dist/tenant-entitlements/capabilityEntitlementRequirements.js +1154 -0
  41. package/dist/tenant-entitlements/capabilityEntitlementRequirements.js.map +1 -0
  42. package/dist/tenant-entitlements/catalog.d.ts +1 -1
  43. package/dist/tenant-entitlements/catalog.d.ts.map +1 -1
  44. package/dist/tenant-entitlements/catalog.js +12 -4
  45. package/dist/tenant-entitlements/catalog.js.map +1 -1
  46. package/dist/tenant-entitlements/index.d.ts +3 -0
  47. package/dist/tenant-entitlements/index.d.ts.map +1 -1
  48. package/dist/tenant-entitlements/index.js +2 -0
  49. package/dist/tenant-entitlements/index.js.map +1 -1
  50. package/dist/tenant-entitlements/tenantBrandKitEntitlement.d.ts +2 -0
  51. package/dist/tenant-entitlements/tenantBrandKitEntitlement.d.ts.map +1 -0
  52. package/dist/tenant-entitlements/tenantBrandKitEntitlement.js +2 -0
  53. package/dist/tenant-entitlements/tenantBrandKitEntitlement.js.map +1 -0
  54. package/dist/tenant-entitlements/types.d.ts +4 -4
  55. package/dist/tenant-entitlements/types.d.ts.map +1 -1
  56. package/dist/tenant-entitlements/types.js +3 -2
  57. package/dist/tenant-entitlements/types.js.map +1 -1
  58. package/package.json +399 -394
@@ -2,13 +2,31 @@ import { useCallback, useEffect, useRef, useState } from 'react';
2
2
  import { BrowserMultiFormatReader } from '@zxing/browser';
3
3
  import { DecodeHintType } from '@zxing/library';
4
4
  import './scannerNativeTypes.js';
5
- import { selectBarcodeScannerEngine } from './selectEngine.js';
6
5
  import { resolveScannerFormatConfig, } from './scannerFormats.js';
6
+ import { applyScannerTrackEnhancements, SCANNER_VIDEO_CONSTRAINTS, } from './scannerCameraConstraints.js';
7
+ import { buildSensitiveReaderOptions, decodeVideoFrameWithZxingWasm, ensureZXingWasmPrepared, isZXingWasmConfigured, } from './zxingWasmEngine.js';
8
+ /** ~30 fps decode budget — multi-pass zoom is heavier; still prefer hit rate. */
9
+ const WASM_MIN_FRAME_INTERVAL_MS = 32;
10
+ /** G4 — consecutive hard decode rejects before abandoning zxing-wasm for native/@zxing.
11
+ * Only after successful WASM instantiate; unloadable WASM is G3 bootstrap error. */
12
+ const WASM_HARD_FAIL_BOUND = 8;
13
+ /**
14
+ * Live camera barcode/QR decode.
15
+ *
16
+ * Runtime cascade (single SoT — no selectBarcodeScannerEngine helper):
17
+ * 1. Configured ZXing-C++ WASM (required for sensitivity upgrade; missing URL /
18
+ * unloadable asset / instantiate fail → G3 `wasmBootstrapFailed`, no weaker-engine fallthrough)
19
+ * 2. After WASM is successfully instantiated and running: ≥{@link WASM_HARD_FAIL_BOUND}
20
+ * consecutive hard decode rejects → native BarcodeDetector (G4 only — not bootstrap)
21
+ * 3. then pure-JS @zxing/browser
22
+ */
7
23
  export function useBarcodeScanner(options) {
8
- const { enabled, videoRef, onDecode, messages, formatProfile = 'retail' } = options;
24
+ const { enabled, videoRef, onDecode, messages, formatProfile = 'retail', onBackgroundStop, } = options;
9
25
  const [status, setStatus] = useState('idle');
10
26
  const [engine, setEngine] = useState(null);
11
27
  const [errorMessage, setErrorMessage] = useState(null);
28
+ /** Latches after background release until parent sets `enabled` false (G7 / G10). */
29
+ const [heldOffByBackground, setHeldOffByBackground] = useState(false);
12
30
  const onDecodeRef = useRef(onDecode);
13
31
  useEffect(() => {
14
32
  onDecodeRef.current = onDecode;
@@ -17,11 +35,21 @@ export function useBarcodeScanner(options) {
17
35
  useEffect(() => {
18
36
  messagesRef.current = messages;
19
37
  }, [messages]);
38
+ const onBackgroundStopRef = useRef(onBackgroundStop);
39
+ useEffect(() => {
40
+ onBackgroundStopRef.current = onBackgroundStop;
41
+ }, [onBackgroundStop]);
42
+ const enabledRef = useRef(enabled);
43
+ enabledRef.current = enabled;
20
44
  const stopRef = useRef(null);
21
- const [trackedEnabled, setTrackedEnabled] = useState(enabled);
22
- if (trackedEnabled !== enabled) {
23
- setTrackedEnabled(enabled);
24
- if (!enabled) {
45
+ if (!enabled && heldOffByBackground) {
46
+ setHeldOffByBackground(false);
47
+ }
48
+ const scanningEnabled = enabled && !heldOffByBackground;
49
+ const [trackedEnabled, setTrackedEnabled] = useState(scanningEnabled);
50
+ if (trackedEnabled !== scanningEnabled) {
51
+ setTrackedEnabled(scanningEnabled);
52
+ if (!scanningEnabled) {
25
53
  setStatus('idle');
26
54
  setEngine(null);
27
55
  setErrorMessage(null);
@@ -33,8 +61,39 @@ export function useBarcodeScanner(options) {
33
61
  stopRef.current = null;
34
62
  }
35
63
  }, []);
64
+ // G7 — release camera on background; do not auto-restart on visible.
65
+ useEffect(() => {
66
+ if (typeof document === 'undefined') {
67
+ return;
68
+ }
69
+ const releaseForBackground = () => {
70
+ stop();
71
+ if (!enabledRef.current) {
72
+ return;
73
+ }
74
+ setHeldOffByBackground(true);
75
+ setStatus('idle');
76
+ setEngine(null);
77
+ setErrorMessage(null);
78
+ onBackgroundStopRef.current?.();
79
+ };
80
+ const onVisibilityChange = () => {
81
+ if (document.hidden) {
82
+ releaseForBackground();
83
+ }
84
+ };
85
+ const onPageHide = () => {
86
+ releaseForBackground();
87
+ };
88
+ document.addEventListener('visibilitychange', onVisibilityChange);
89
+ window.addEventListener('pagehide', onPageHide);
90
+ return () => {
91
+ document.removeEventListener('visibilitychange', onVisibilityChange);
92
+ window.removeEventListener('pagehide', onPageHide);
93
+ };
94
+ }, [stop]);
36
95
  useEffect(() => {
37
- if (!enabled) {
96
+ if (!scanningEnabled) {
38
97
  stop();
39
98
  return;
40
99
  }
@@ -42,7 +101,12 @@ export function useBarcodeScanner(options) {
42
101
  let stream = null;
43
102
  let zxingControls = null;
44
103
  let nativeFrameHandle = null;
104
+ let wasmFrameHandle = null;
105
+ let wasmBusy = false;
106
+ let wasmAbandoned = false;
107
+ let consecutiveWasmHardFails = 0;
45
108
  const formatConfig = resolveScannerFormatConfig(formatProfile);
109
+ const wasmCanvas = typeof document !== 'undefined' ? document.createElement('canvas') : null;
46
110
  const cleanup = () => {
47
111
  if (zxingControls !== null) {
48
112
  try {
@@ -57,6 +121,10 @@ export function useBarcodeScanner(options) {
57
121
  cancelAnimationFrame(nativeFrameHandle);
58
122
  nativeFrameHandle = null;
59
123
  }
124
+ if (wasmFrameHandle !== null) {
125
+ cancelAnimationFrame(wasmFrameHandle);
126
+ wasmFrameHandle = null;
127
+ }
60
128
  if (stream !== null) {
61
129
  for (const track of stream.getTracks()) {
62
130
  try {
@@ -84,14 +152,9 @@ export function useBarcodeScanner(options) {
84
152
  }
85
153
  return;
86
154
  }
87
- const chosenEngine = await selectBarcodeScannerEngine(formatProfile);
88
- if (cancelled) {
89
- return;
90
- }
91
- setEngine(chosenEngine);
92
155
  try {
93
156
  stream = await navigator.mediaDevices.getUserMedia({
94
- video: { facingMode: { ideal: 'environment' } },
157
+ video: SCANNER_VIDEO_CONSTRAINTS,
95
158
  audio: false,
96
159
  });
97
160
  }
@@ -112,6 +175,11 @@ export function useBarcodeScanner(options) {
112
175
  cleanup();
113
176
  return;
114
177
  }
178
+ const activeStream = stream;
179
+ const [primaryTrack] = activeStream.getVideoTracks();
180
+ if (primaryTrack !== undefined) {
181
+ await applyScannerTrackEnhancements(primaryTrack);
182
+ }
115
183
  const video = videoRef.current;
116
184
  if (video === null) {
117
185
  cleanup();
@@ -119,7 +187,7 @@ export function useBarcodeScanner(options) {
119
187
  }
120
188
  video.setAttribute('playsinline', 'true');
121
189
  video.muted = true;
122
- video.srcObject = stream;
190
+ video.srcObject = activeStream;
123
191
  try {
124
192
  await video.play();
125
193
  }
@@ -130,8 +198,10 @@ export function useBarcodeScanner(options) {
130
198
  cleanup();
131
199
  return;
132
200
  }
133
- setStatus('running');
134
- if (chosenEngine === 'native-detector' && window.BarcodeDetector !== undefined) {
201
+ const startNativeLoop = () => {
202
+ if (window.BarcodeDetector === undefined) {
203
+ return false;
204
+ }
135
205
  const detector = new window.BarcodeDetector({
136
206
  formats: [...formatConfig.nativeFormats],
137
207
  });
@@ -163,30 +233,134 @@ export function useBarcodeScanner(options) {
163
233
  nativeFrameHandle = requestAnimationFrame(() => {
164
234
  void tick();
165
235
  });
236
+ return true;
237
+ };
238
+ const startZxingJsFallback = async () => {
239
+ const hints = new Map();
240
+ hints.set(DecodeHintType.POSSIBLE_FORMATS, [...formatConfig.zxingFormats]);
241
+ hints.set(DecodeHintType.TRY_HARDER, true);
242
+ const reader = new BrowserMultiFormatReader(hints);
243
+ try {
244
+ zxingControls = await reader.decodeFromStream(activeStream, video, (result, _err, controls) => {
245
+ if (cancelled) {
246
+ controls.stop();
247
+ return;
248
+ }
249
+ if (result !== undefined && result !== null) {
250
+ onDecodeRef.current(result.getText());
251
+ }
252
+ });
253
+ return true;
254
+ }
255
+ catch {
256
+ return false;
257
+ }
258
+ };
259
+ const failAllEngines = () => {
260
+ if (!cancelled) {
261
+ setStatus('error');
262
+ setErrorMessage(messagesRef.current.error);
263
+ }
264
+ cleanup();
265
+ };
266
+ const fallThroughFromWasm = async () => {
267
+ if (cancelled) {
268
+ return;
269
+ }
270
+ if (startNativeLoop()) {
271
+ if (!cancelled) {
272
+ setEngine('native-detector');
273
+ setStatus('running');
274
+ }
275
+ return;
276
+ }
277
+ const jsOk = await startZxingJsFallback();
278
+ if (cancelled) {
279
+ return;
280
+ }
281
+ if (jsOk) {
282
+ setEngine('zxing');
283
+ setStatus('running');
284
+ return;
285
+ }
286
+ failAllEngines();
287
+ };
288
+ const failWasmBootstrap = () => {
289
+ if (!cancelled) {
290
+ setStatus('error');
291
+ setErrorMessage(messagesRef.current.wasmBootstrapFailed);
292
+ }
293
+ cleanup();
294
+ };
295
+ // G3 — WASM is required for the sensitivity upgrade; never silently start a weaker engine.
296
+ // Unloadable / instantiate failure → wasmBootstrapFailed (not G4 fallthrough).
297
+ // G4 ≥8 fallthrough is ONLY for post-start decode rejects after successful instantiate.
298
+ if (!isZXingWasmConfigured() || wasmCanvas === null) {
299
+ failWasmBootstrap();
166
300
  return;
167
301
  }
168
- const hints = new Map();
169
- hints.set(DecodeHintType.POSSIBLE_FORMATS, [...formatConfig.zxingFormats]);
170
- hints.set(DecodeHintType.TRY_HARDER, true);
171
- const reader = new BrowserMultiFormatReader(hints);
172
302
  try {
173
- zxingControls = await reader.decodeFromStream(stream, video, (result, _err, controls) => {
174
- if (cancelled) {
175
- controls.stop();
176
- return;
177
- }
178
- if (result !== undefined && result !== null) {
179
- onDecodeRef.current(result.getText());
180
- }
181
- });
303
+ await ensureZXingWasmPrepared();
182
304
  }
183
305
  catch {
184
- if (cancelled) {
306
+ failWasmBootstrap();
307
+ return;
308
+ }
309
+ const readerOptions = buildSensitiveReaderOptions(formatProfile);
310
+ let lastAttemptMs = 0;
311
+ const abandonWasmAndFallThrough = () => {
312
+ if (wasmAbandoned || cancelled) {
185
313
  return;
186
314
  }
187
- setStatus('error');
188
- setErrorMessage(messagesRef.current.error);
189
- cleanup();
315
+ wasmAbandoned = true;
316
+ if (wasmFrameHandle !== null) {
317
+ cancelAnimationFrame(wasmFrameHandle);
318
+ wasmFrameHandle = null;
319
+ }
320
+ void fallThroughFromWasm();
321
+ };
322
+ const tick = () => {
323
+ if (cancelled || wasmAbandoned) {
324
+ return;
325
+ }
326
+ const now = performance.now();
327
+ if (!wasmBusy &&
328
+ video.readyState >= 2 &&
329
+ now - lastAttemptMs >= WASM_MIN_FRAME_INTERVAL_MS) {
330
+ lastAttemptMs = now;
331
+ wasmBusy = true;
332
+ void decodeVideoFrameWithZxingWasm(video, wasmCanvas, readerOptions)
333
+ .then((text) => {
334
+ if (cancelled || wasmAbandoned) {
335
+ return;
336
+ }
337
+ // G4 — null/empty = non-fatal; reset consecutive hard-fail counter.
338
+ consecutiveWasmHardFails = 0;
339
+ if (text !== null) {
340
+ onDecodeRef.current(text);
341
+ }
342
+ })
343
+ .catch(() => {
344
+ if (cancelled || wasmAbandoned) {
345
+ return;
346
+ }
347
+ consecutiveWasmHardFails += 1;
348
+ if (consecutiveWasmHardFails >= WASM_HARD_FAIL_BOUND) {
349
+ abandonWasmAndFallThrough();
350
+ }
351
+ })
352
+ .finally(() => {
353
+ wasmBusy = false;
354
+ });
355
+ }
356
+ if (!cancelled && !wasmAbandoned) {
357
+ wasmFrameHandle = requestAnimationFrame(tick);
358
+ }
359
+ };
360
+ wasmFrameHandle = requestAnimationFrame(tick);
361
+ if (!cancelled) {
362
+ setEngine('zxing-wasm');
363
+ setStatus('running');
190
364
  }
191
365
  })();
192
366
  return () => {
@@ -194,7 +368,7 @@ export function useBarcodeScanner(options) {
194
368
  cleanup();
195
369
  stopRef.current = null;
196
370
  };
197
- }, [enabled, formatProfile, stop, videoRef]);
371
+ }, [scanningEnabled, formatProfile, stop, videoRef]);
198
372
  return { status, engine, errorMessage };
199
373
  }
200
374
  //# sourceMappingURL=useBarcodeScanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBarcodeScanner.js","sourceRoot":"","sources":["../../src/hooks/useBarcodeScanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useBarcodeScanner.js","sourceRoot":"","sources":["../../src/hooks/useBarcodeScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * ZXing-C++ WebAssembly decode path (zxing-wasm).
3
+ * Much more sensitive than pure-JS @zxing/library for live camera frames.
4
+ *
5
+ * WASM must be same-origin under CSP (`connect-src 'self'`). Apps call
6
+ * {@link setZXingWasmUrl} once at boot with a Vite `?url` import.
7
+ *
8
+ * Sensitivity strategy (maximize hit rate for small / distant / low-contrast codes):
9
+ * - Eager WASM instantiate (`fireImmediately`)
10
+ * - Multi-pass digital zoom: full frame + center crops upscaled + 1D mid-band
11
+ * - Alternate binarizer on tight crops
12
+ * - tryDenoise + minLineCount: 1 (non-default reader deltas)
13
+ */
14
+ import { type ReaderOptions } from 'zxing-wasm/reader';
15
+ import type { BarcodeScannerFormatProfile } from './scannerFormats.js';
16
+ /**
17
+ * Configure same-origin URL for `zxing_reader.wasm` (Vite `?url` or `/public`).
18
+ * Empty / whitespace-only URL clears configuration (`isZXingWasmConfigured()` → false).
19
+ */
20
+ export declare function setZXingWasmUrl(url: string): void;
21
+ /** True only when a non-empty URL was set via {@link setZXingWasmUrl}. */
22
+ export declare function isZXingWasmConfigured(): boolean;
23
+ /**
24
+ * Eagerly instantiate zxing-wasm (asset fetch + WASM compile).
25
+ *
26
+ * Must use `fireImmediately: true` and await the Promise — with the library
27
+ * default `fireImmediately: false`, prepare only registers overrides and
28
+ * `prepared = true` would lie; asset/instantiate failure then surfaces later
29
+ * as `readBarcodes` rejects (G4 fallthrough) while status stays `running`.
30
+ *
31
+ * On reject/throw: leave `prepared = false` and rethrow so the caller can
32
+ * hard-fail via G3 `wasmBootstrapFailed` (no native/@zxing fallthrough).
33
+ * G4 ≥8 hard-fail fallthrough applies ONLY to post-start decode rejects after
34
+ * a successfully instantiated module — unloadable WASM is a bootstrap error.
35
+ */
36
+ export declare function ensureZXingWasmPrepared(): Promise<void>;
37
+ export declare function resolveWasmReaderFormats(formatProfile: BarcodeScannerFormatProfile): ReaderOptions['formats'];
38
+ /**
39
+ * Reader options for the high-sensitivity WASM path.
40
+ *
41
+ * Note: `tryHarder` / `tryRotate` / `tryInvert` / `tryDownscale` already default to
42
+ * `true` in zxing-wasm@3.1.3 — kept explicit but they are not the sensitivity upgrade.
43
+ * Real deltas vs library defaults: `tryDenoise: true`, `minLineCount: 1`, earlier
44
+ * downscale threshold, multi-pass digital zoom in {@link decodeVideoFrameWithZxingWasm},
45
+ * plus camera constraints / optical zoom elsewhere.
46
+ */
47
+ export declare function buildSensitiveReaderOptions(formatProfile: BarcodeScannerFormatProfile): ReaderOptions;
48
+ export interface ScanPass {
49
+ readonly sx: number;
50
+ readonly sy: number;
51
+ readonly sw: number;
52
+ readonly sh: number;
53
+ /** Upscale factor when drawing the crop into the decode canvas (digital zoom). */
54
+ readonly scale: number;
55
+ }
56
+ /**
57
+ * Full frame + center zooms + mid-band (1D). Digital zoom is the main lever for
58
+ * distant / small symbols when the user does not fill the viewfinder.
59
+ */
60
+ export declare function buildMaxSensitivityScanPasses(videoWidth: number, videoHeight: number): ScanPass[];
61
+ /**
62
+ * Decode one video frame via multi-pass canvas crops → ImageData → zxing-wasm.
63
+ * Returns the first payload or null when nothing is found.
64
+ */
65
+ export declare function decodeVideoFrameWithZxingWasm(video: HTMLVideoElement, canvas: HTMLCanvasElement, readerOptions: ReaderOptions): Promise<string | null>;
66
+ //# sourceMappingURL=zxingWasmEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zxingWasmEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/zxingWasmEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAKvE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CASjD;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2B7D;AAMD,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,2BAA2B,GACzC,aAAa,CAAC,SAAS,CAAC,CAQ1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,2BAA2B,GACzC,aAAa,CAcf;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmCjG;AA4BD;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCxB"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * ZXing-C++ WebAssembly decode path (zxing-wasm).
3
+ * Much more sensitive than pure-JS @zxing/library for live camera frames.
4
+ *
5
+ * WASM must be same-origin under CSP (`connect-src 'self'`). Apps call
6
+ * {@link setZXingWasmUrl} once at boot with a Vite `?url` import.
7
+ *
8
+ * Sensitivity strategy (maximize hit rate for small / distant / low-contrast codes):
9
+ * - Eager WASM instantiate (`fireImmediately`)
10
+ * - Multi-pass digital zoom: full frame + center crops upscaled + 1D mid-band
11
+ * - Alternate binarizer on tight crops
12
+ * - tryDenoise + minLineCount: 1 (non-default reader deltas)
13
+ */
14
+ import { prepareZXingModule, readBarcodes, } from 'zxing-wasm/reader';
15
+ let wasmUrl = null;
16
+ let prepared = false;
17
+ /**
18
+ * Configure same-origin URL for `zxing_reader.wasm` (Vite `?url` or `/public`).
19
+ * Empty / whitespace-only URL clears configuration (`isZXingWasmConfigured()` → false).
20
+ */
21
+ export function setZXingWasmUrl(url) {
22
+ const trimmed = url.trim();
23
+ if (trimmed.length === 0) {
24
+ wasmUrl = null;
25
+ prepared = false;
26
+ return;
27
+ }
28
+ wasmUrl = trimmed;
29
+ prepared = false;
30
+ }
31
+ /** True only when a non-empty URL was set via {@link setZXingWasmUrl}. */
32
+ export function isZXingWasmConfigured() {
33
+ return wasmUrl !== null && wasmUrl.length > 0;
34
+ }
35
+ /**
36
+ * Eagerly instantiate zxing-wasm (asset fetch + WASM compile).
37
+ *
38
+ * Must use `fireImmediately: true` and await the Promise — with the library
39
+ * default `fireImmediately: false`, prepare only registers overrides and
40
+ * `prepared = true` would lie; asset/instantiate failure then surfaces later
41
+ * as `readBarcodes` rejects (G4 fallthrough) while status stays `running`.
42
+ *
43
+ * On reject/throw: leave `prepared = false` and rethrow so the caller can
44
+ * hard-fail via G3 `wasmBootstrapFailed` (no native/@zxing fallthrough).
45
+ * G4 ≥8 hard-fail fallthrough applies ONLY to post-start decode rejects after
46
+ * a successfully instantiated module — unloadable WASM is a bootstrap error.
47
+ */
48
+ export async function ensureZXingWasmPrepared() {
49
+ if (prepared) {
50
+ return;
51
+ }
52
+ const url = wasmUrl;
53
+ if (url === null) {
54
+ throw new Error('ZXing WASM URL not configured. Import initBarcodeScannerWasm in the app entry.');
55
+ }
56
+ try {
57
+ await prepareZXingModule({
58
+ fireImmediately: true,
59
+ overrides: {
60
+ locateFile: (path, prefix) => {
61
+ if (path.endsWith('.wasm')) {
62
+ return url;
63
+ }
64
+ return prefix + path;
65
+ },
66
+ },
67
+ });
68
+ prepared = true;
69
+ }
70
+ catch (err) {
71
+ prepared = false;
72
+ throw err;
73
+ }
74
+ }
75
+ const WASM_RETAIL_FORMATS = ['Code128', 'EAN13', 'EAN8', 'UPCA'];
76
+ const WASM_QR_ONLY_FORMATS = ['QRCode'];
77
+ const WASM_ALL_FORMATS = [...WASM_RETAIL_FORMATS, 'QRCode'];
78
+ export function resolveWasmReaderFormats(formatProfile) {
79
+ if (formatProfile === 'qr-only') {
80
+ return [...WASM_QR_ONLY_FORMATS];
81
+ }
82
+ if (formatProfile === 'all') {
83
+ return [...WASM_ALL_FORMATS];
84
+ }
85
+ return [...WASM_RETAIL_FORMATS];
86
+ }
87
+ /**
88
+ * Reader options for the high-sensitivity WASM path.
89
+ *
90
+ * Note: `tryHarder` / `tryRotate` / `tryInvert` / `tryDownscale` already default to
91
+ * `true` in zxing-wasm@3.1.3 — kept explicit but they are not the sensitivity upgrade.
92
+ * Real deltas vs library defaults: `tryDenoise: true`, `minLineCount: 1`, earlier
93
+ * downscale threshold, multi-pass digital zoom in {@link decodeVideoFrameWithZxingWasm},
94
+ * plus camera constraints / optical zoom elsewhere.
95
+ */
96
+ export function buildSensitiveReaderOptions(formatProfile) {
97
+ return {
98
+ tryHarder: true,
99
+ tryRotate: true,
100
+ tryInvert: true,
101
+ tryDownscale: true,
102
+ tryDenoise: true,
103
+ minLineCount: 1,
104
+ maxNumberOfSymbols: 1,
105
+ // Start multi-scale search earlier on high-res frames.
106
+ downscaleThreshold: 800,
107
+ downscaleFactor: 2,
108
+ formats: resolveWasmReaderFormats(formatProfile),
109
+ };
110
+ }
111
+ /**
112
+ * Full frame + center zooms + mid-band (1D). Digital zoom is the main lever for
113
+ * distant / small symbols when the user does not fill the viewfinder.
114
+ */
115
+ export function buildMaxSensitivityScanPasses(videoWidth, videoHeight) {
116
+ const vw = videoWidth;
117
+ const vh = videoHeight;
118
+ if (vw < 2 || vh < 2) {
119
+ return [];
120
+ }
121
+ const center = (frac, scale) => {
122
+ const sw = Math.max(2, Math.floor(vw * frac));
123
+ const sh = Math.max(2, Math.floor(vh * frac));
124
+ return {
125
+ sx: Math.floor((vw - sw) / 2),
126
+ sy: Math.floor((vh - sh) / 2),
127
+ sw,
128
+ sh,
129
+ scale,
130
+ };
131
+ };
132
+ const bandH = Math.max(2, Math.floor(vh * 0.28));
133
+ const midBand = {
134
+ sx: 0,
135
+ sy: Math.floor((vh - bandH) / 2),
136
+ sw: vw,
137
+ sh: bandH,
138
+ scale: 2,
139
+ };
140
+ return [
141
+ { sx: 0, sy: 0, sw: vw, sh: vh, scale: 1 },
142
+ center(0.7, 1.75),
143
+ center(0.5, 2.25),
144
+ center(0.35, 3),
145
+ midBand,
146
+ ];
147
+ }
148
+ function firstBarcodeText(results) {
149
+ const first = results[0];
150
+ if (first === undefined || first.text.length === 0) {
151
+ return null;
152
+ }
153
+ return first.text;
154
+ }
155
+ async function decodeImageDataPass(imageData, readerOptions) {
156
+ const primary = firstBarcodeText(await readBarcodes(imageData, readerOptions));
157
+ if (primary !== null) {
158
+ return primary;
159
+ }
160
+ // Alternate binarizer helps washed-out / low-contrast packaging.
161
+ const alt = firstBarcodeText(await readBarcodes(imageData, {
162
+ ...readerOptions,
163
+ binarizer: 'GlobalHistogram',
164
+ }));
165
+ return alt;
166
+ }
167
+ /**
168
+ * Decode one video frame via multi-pass canvas crops → ImageData → zxing-wasm.
169
+ * Returns the first payload or null when nothing is found.
170
+ */
171
+ export async function decodeVideoFrameWithZxingWasm(video, canvas, readerOptions) {
172
+ const width = video.videoWidth;
173
+ const height = video.videoHeight;
174
+ if (width < 2 || height < 2) {
175
+ return null;
176
+ }
177
+ const ctx = canvas.getContext('2d', { willReadFrequently: true });
178
+ if (ctx === null) {
179
+ return null;
180
+ }
181
+ // Nearest-neighbor upscale keeps barcode edges sharp for digital zoom passes.
182
+ ctx.imageSmoothingEnabled = false;
183
+ const passes = buildMaxSensitivityScanPasses(width, height);
184
+ for (const pass of passes) {
185
+ const outW = Math.max(2, Math.floor(pass.sw * pass.scale));
186
+ const outH = Math.max(2, Math.floor(pass.sh * pass.scale));
187
+ if (canvas.width !== outW) {
188
+ canvas.width = outW;
189
+ }
190
+ if (canvas.height !== outH) {
191
+ canvas.height = outH;
192
+ }
193
+ ctx.clearRect(0, 0, outW, outH);
194
+ ctx.drawImage(video, pass.sx, pass.sy, pass.sw, pass.sh, 0, 0, outW, outH);
195
+ const imageData = ctx.getImageData(0, 0, outW, outH);
196
+ const text = await decodeImageDataPass(imageData, readerOptions);
197
+ if (text !== null) {
198
+ return text;
199
+ }
200
+ }
201
+ return null;
202
+ }
203
+ //# sourceMappingURL=zxingWasmEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zxingWasmEngine.js","sourceRoot":"","sources":["../../src/hooks/zxingWasmEngine.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,8 @@ export interface CustomerOrderListItem {
95
95
  readonly currency: string | null;
96
96
  readonly createdAt: string;
97
97
  readonly pickupPointName: string | null;
98
+ /** Owning shop id — additive G2; aligns monogram with payment-backed cards. */
99
+ readonly tenantId: number;
98
100
  }
99
101
  export interface CustomerOrderListResponse {
100
102
  readonly items: readonly CustomerOrderListItem[];