barcode-reader-javascript-samples icon indicating copy to clipboard operation
barcode-reader-javascript-samples copied to clipboard

Export interface for VideoDeviceInfo

Open qidulak opened this issue 1 year ago • 4 comments

Interface VideoDeviceInfo that is returned by BarcodeScanner.getAllCameras() is not publicly exported, so I need to define it on my own, If I want to make some logic and further process this data. I believe, that Interfaces returned by all public methods should be exported for strongly typped app.

qidulak avatar Sep 12 '24 07:09 qidulak

We will consider your suggestion carefully.

Currently, you can simply implement your needs in this way.

let videoInfos: ReturnType<typeof BarcodeScanner.getAllCameras> = null;
let videoInfo: ReturnType<typeof BarcodeScanner.getAllCameras>[0] = null;
// assign later

Keillion avatar Sep 12 '24 10:09 Keillion

I tested, at least in [email protected] or [email protected], VideoDeviceInfo is exported.

import { VideoDeviceInfo } from 'dynamsoft-camera-enhancer';
// or
import { VideoDeviceInfo } from 'dynamsoft-barcode-reader-bundle';

Keillion avatar Sep 12 '24 11:09 Keillion

Oh, I know you use dynamsoft-javascript-barcode@9.

In [email protected], VideoDeviceInfo is exported.

You can consider upgrading to the latest version 9, which is mainly adapted for the latest iOS to improve camera selection.

Keillion avatar Sep 12 '24 11:09 Keillion

I did check [email protected] dbr.d.ts file. VideoDeviceInfo is declared there but missing in exports. So it cannot be referenced via import.

image

The workaround by return type needs to be tweaked as it is promise and that is kind of messy.

type VideoDeviceInfo = Awaited<ReturnType<BarcodeScanner['getAllCameras']>>[number];

But as you said VideoDeviceInfo import works for dynamsoft-camera-enhancer which comes with dynamsoft-javascript-barcode so I guess its fine to import it from there, thank you.

dobripet avatar Sep 13 '24 07:09 dobripet