11import os from "os" ;
22
33import { Adapter } from "@node-escpos/adapter" ;
4- import type { Interface , InEndpoint , OutEndpoint , LibUSBException } from "usb" ;
4+ import type { Interface , InEndpoint , OutEndpoint , LibUSBException , Device as _Device } from "usb" ;
55import { findBySerialNumber } from "usb" ;
66import { usb , getDeviceList , findByIds } from "usb" ;
77
8+ const { Device, on, removeListener } = usb ;
9+
810/**
911 * [USB Class Codes ]
1012 * @type {Object }
@@ -17,20 +19,22 @@ const IFACE_CLASS = {
1719 HUB : 0x09 ,
1820} ;
1921
22+ export type TDevice = _Device ;
23+
2024export default class USBAdapter extends Adapter < [ ] > {
21- device : usb . Device | null = null ;
25+ device : TDevice | null = null ;
2226 endpoint : OutEndpoint | null = null ;
2327 deviceToPcEndpoint : InEndpoint | null = null ;
2428
25- constructor ( vid ?: number | usb . Device , pid ?: number ) {
29+ constructor ( vid ?: number | TDevice , pid ?: number ) {
2630 super ( ) ;
2731 // Bind class reference this to the method
2832 this . detachDevice = this . detachDevice . bind ( this ) ;
2933
3034 if ( vid && pid && typeof vid === "number" ) {
3135 this . device = findByIds ( vid , pid ) || null ;
3236 }
33- else if ( vid && vid instanceof usb . Device ) {
37+ else if ( vid && vid instanceof Device ) {
3438 // Set specific USB device from devices array as coming from USB.findPrinter() function.
3539 // for example
3640 // let devices = escpos.USB.findPrinter();
@@ -47,22 +51,22 @@ export default class USBAdapter extends Adapter<[]> {
4751 if ( ! this . device )
4852 throw new Error ( "Can not find printer" ) ;
4953
50- usb . on ( "detach" , this . detachDevice ) ;
54+ on ( "detach" , this . detachDevice ) ;
5155 }
5256
53- private detachDevice ( device : usb . Device ) {
57+ private detachDevice ( device : TDevice ) {
5458 if ( device === this . device ) {
5559 this . emit ( "detach" , device ) ;
5660 this . emit ( "disconnect" , device ) ;
5761 this . device = null ;
5862 }
5963 }
6064
61- static on ( event : "attach" | "detach" , listener : ( device : usb . Device ) => void ) {
62- usb . on ( event , listener ) ;
65+ static on ( event : "attach" | "detach" , listener : ( device : TDevice ) => void ) {
66+ on ( event , listener ) ;
6367 }
6468
65- static isPrinter ( device : usb . Device ) : boolean {
69+ static isPrinter ( device : TDevice ) : boolean {
6670 try {
6771 const length = device . configDescriptor ?. interfaces . filter ( ( iface ) => {
6872 return iface . filter ( ( conf ) => {
@@ -175,7 +179,7 @@ export default class USBAdapter extends Adapter<[]> {
175179 if ( ! this . device ) callback ?.( new Error ( "Device not found" ) ) ;
176180 try {
177181 this . device ?. close ( ) ;
178- usb . removeListener ( 'detach' , this . detachDevice ) ;
182+ removeListener ( 'detach' , this . detachDevice ) ;
179183 callback && callback ( null ) ;
180184 this . emit ( "close" , this . device ) ;
181185 }
0 commit comments