usb 2.8.1 → 2.8.3
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 +11 -0
- package/README.md +6 -0
- package/dist/usb/bindings.d.ts +8 -0
- package/dist/usb/index.js +18 -8
- package/dist/usb/index.js.map +1 -1
- package/dist/webusb/index.d.ts +1 -1
- package/dist/webusb/index.js +17 -2
- package/dist/webusb/index.js.map +1 -1
- package/package.json +2 -2
- package/prebuilds/darwin-x64+arm64/node.napi.node +0 -0
- package/prebuilds/win32-ia32/node.napi.node +0 -0
- package/prebuilds/win32-x64/node.napi.node +0 -0
- package/src/hotplug/windows.cc +2 -2
- package/test/usb.coffee +16 -1
- package/test/webusb.coffee +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.8.3] - 2023-03-09
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- Fixed Windows X86 crash with USB detection - [`578`](https://github.com/node-usb/node-usb/pull/578) ([Julian Waller](https://github.com/Julusian))
|
|
7
|
+
- Fixed Windows USB detection race condition with delay - [`577`](https://github.com/node-usb/node-usb/pull/577) ([Rob Moran](https://github.com/thegecko))
|
|
8
|
+
|
|
9
|
+
## [2.8.2] - 2023-03-06
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- Added new `usb.pollHotplug` setting to allow users to force hotplug detection using polling - [`576`](https://github.com/node-usb/node-usb/pull/576) ([Rob Moran](https://github.com/thegecko))
|
|
13
|
+
|
|
3
14
|
## [2.8.1] - 2023-02-26
|
|
4
15
|
|
|
5
16
|
### Changed
|
package/README.md
CHANGED
|
@@ -290,6 +290,12 @@ Legacy usb object.
|
|
|
290
290
|
#### usb.LIBUSB_*
|
|
291
291
|
Constant properties from libusb
|
|
292
292
|
|
|
293
|
+
#### usb.getDeviceList()
|
|
294
|
+
Return a list of legacy `Device` objects for the USB devices attached to the system.
|
|
295
|
+
|
|
296
|
+
#### usb.pollHotplug
|
|
297
|
+
Force polling loop for hotplug events.
|
|
298
|
+
|
|
293
299
|
#### usb.setDebugLevel(level : int)
|
|
294
300
|
Set the libusb debug level (between 0 and 4)
|
|
295
301
|
|
package/dist/usb/bindings.d.ts
CHANGED
|
@@ -4,6 +4,14 @@ import type { DeviceDescriptor, ConfigDescriptor, BosDescriptor } from './descri
|
|
|
4
4
|
* Return a list of `Device` objects for the USB devices attached to the system.
|
|
5
5
|
*/
|
|
6
6
|
export declare function getDeviceList(): Device[];
|
|
7
|
+
/**
|
|
8
|
+
* Force polling loop for hotplug events
|
|
9
|
+
*/
|
|
10
|
+
export declare let pollHotplug: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Hotplug polling loop delay (ms)
|
|
13
|
+
*/
|
|
14
|
+
export declare let pollHotplugDelay: number;
|
|
7
15
|
export declare const INIT_ERROR: number;
|
|
8
16
|
export declare class LibUSBException extends Error {
|
|
9
17
|
errno: number;
|
package/dist/usb/index.js
CHANGED
|
@@ -18,14 +18,20 @@ if (usb.INIT_ERROR) {
|
|
|
18
18
|
console.warn('Failed to initialize libusb.');
|
|
19
19
|
}
|
|
20
20
|
Object.setPrototypeOf(usb, events_1.EventEmitter.prototype);
|
|
21
|
+
Object.defineProperty(usb, 'pollHotplug', {
|
|
22
|
+
value: false,
|
|
23
|
+
writable: true
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(usb, 'pollHotplugDelay', {
|
|
26
|
+
value: 500,
|
|
27
|
+
writable: true
|
|
28
|
+
});
|
|
21
29
|
Object.getOwnPropertyNames(device_1.ExtendedDevice.prototype).forEach(function (name) {
|
|
22
30
|
Object.defineProperty(usb.Device.prototype, name, Object.getOwnPropertyDescriptor(device_1.ExtendedDevice.prototype, name) || Object.create(null));
|
|
23
31
|
});
|
|
24
|
-
// Hotplug support
|
|
25
|
-
var hotplugSupported = usb._supportedHotplugEvents();
|
|
26
32
|
// Devices delta support for non-libusb hotplug events
|
|
27
|
-
// This methd needs to be used for attach/detach IDs (hotplugSupportType === 2) rather than a lookup because vid/pid are not unique
|
|
28
33
|
var hotPlugDevices = new Set();
|
|
34
|
+
// This method needs to be used for attach/detach IDs (hotplugSupportType === 2) rather than a lookup because vid/pid are not unique
|
|
29
35
|
var emitHotplugEvents = function () {
|
|
30
36
|
var e_1, _a, e_2, _b;
|
|
31
37
|
// Collect current devices
|
|
@@ -77,10 +83,14 @@ var pollHotplug = function (start) {
|
|
|
77
83
|
else {
|
|
78
84
|
emitHotplugEvents();
|
|
79
85
|
}
|
|
80
|
-
setTimeout(function () { return pollHotplug(); },
|
|
86
|
+
setTimeout(function () { return pollHotplug(); }, usb.pollHotplugDelay);
|
|
81
87
|
};
|
|
88
|
+
// Devices changed event handler
|
|
89
|
+
var devicesChanged = function () { return setTimeout(function () { return emitHotplugEvents(); }, usb.pollHotplugDelay); };
|
|
82
90
|
// Hotplug control
|
|
91
|
+
var hotplugSupported = 0;
|
|
83
92
|
var startHotplug = function () {
|
|
93
|
+
hotplugSupported = usb.pollHotplug ? 0 : usb._supportedHotplugEvents();
|
|
84
94
|
if (hotplugSupported !== 1) {
|
|
85
95
|
// Collect initial devices when not using libusb
|
|
86
96
|
hotPlugDevices = new Set(usb.getDeviceList());
|
|
@@ -90,8 +100,8 @@ var startHotplug = function () {
|
|
|
90
100
|
usb._enableHotplugEvents();
|
|
91
101
|
if (hotplugSupported === 2) {
|
|
92
102
|
// Use hotplug ID events to trigger a change check
|
|
93
|
-
usb.on('attachIds',
|
|
94
|
-
usb.on('detachIds',
|
|
103
|
+
usb.on('attachIds', devicesChanged);
|
|
104
|
+
usb.on('detachIds', devicesChanged);
|
|
95
105
|
}
|
|
96
106
|
}
|
|
97
107
|
else {
|
|
@@ -105,8 +115,8 @@ var stopHotplug = function () {
|
|
|
105
115
|
usb._disableHotplugEvents();
|
|
106
116
|
if (hotplugSupported === 2) {
|
|
107
117
|
// Remove hotplug ID event listeners
|
|
108
|
-
usb.off('attachIds',
|
|
109
|
-
usb.off('detachIds',
|
|
118
|
+
usb.off('attachIds', devicesChanged);
|
|
119
|
+
usb.off('detachIds', devicesChanged);
|
|
110
120
|
}
|
|
111
121
|
}
|
|
112
122
|
else {
|
package/dist/usb/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tsc/usb/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAsC;AACtC,mCAA0C;AAC1C,gCAAkC;AAElC,IAAI,GAAG,CAAC,UAAU,EAAE;IAChB,+BAA+B;IAC/B,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;CAChD;AAED,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,qBAAY,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tsc/usb/index.ts"],"names":[],"mappings":"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"}
|
package/dist/webusb/index.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export declare class WebUSB implements USB {
|
|
|
32
32
|
private options;
|
|
33
33
|
protected emitter: EventEmitter;
|
|
34
34
|
protected knownDevices: Map<usb.Device, WebUSBDevice>;
|
|
35
|
-
protected authorisedDevices: Set<
|
|
35
|
+
protected authorisedDevices: Set<USBDeviceFilter>;
|
|
36
36
|
constructor(options?: USBOptions);
|
|
37
37
|
private _onconnect;
|
|
38
38
|
set onconnect(fn: (ev: USBConnectionEvent) => void);
|
package/dist/webusb/index.js
CHANGED
|
@@ -275,7 +275,14 @@ var WebUSB = /** @class */ (function () {
|
|
|
275
275
|
if (!device) {
|
|
276
276
|
throw new NamedError('Failed to execute \'requestDevice\' on \'USB\': No device selected.', 'NotFoundError');
|
|
277
277
|
}
|
|
278
|
-
this.authorisedDevices.add(
|
|
278
|
+
this.authorisedDevices.add({
|
|
279
|
+
vendorId: device.vendorId,
|
|
280
|
+
productId: device.productId,
|
|
281
|
+
classCode: device.deviceClass,
|
|
282
|
+
subclassCode: device.deviceSubclass,
|
|
283
|
+
protocolCode: device.deviceProtocol,
|
|
284
|
+
serialNumber: device.serialNumber
|
|
285
|
+
});
|
|
279
286
|
return [2 /*return*/, device];
|
|
280
287
|
case 6:
|
|
281
288
|
error_1 = _b.sent();
|
|
@@ -458,7 +465,15 @@ var WebUSB = /** @class */ (function () {
|
|
|
458
465
|
if (this.options.allowedDevices && this.filterDevice(device, this.options.allowedDevices)) {
|
|
459
466
|
return true;
|
|
460
467
|
}
|
|
461
|
-
|
|
468
|
+
// Check authorised devices
|
|
469
|
+
return __spreadArray([], __read(this.authorisedDevices.values())).some(function (authorised) {
|
|
470
|
+
return authorised.vendorId === device.vendorId
|
|
471
|
+
&& authorised.productId === device.productId
|
|
472
|
+
&& authorised.classCode === device.deviceClass
|
|
473
|
+
&& authorised.subclassCode === device.deviceSubclass
|
|
474
|
+
&& authorised.protocolCode === device.deviceProtocol
|
|
475
|
+
&& authorised.serialNumber === device.serialNumber;
|
|
476
|
+
});
|
|
462
477
|
};
|
|
463
478
|
return WebUSB;
|
|
464
479
|
}());
|
package/dist/webusb/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tsc/webusb/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4BAA8B;AAC9B,iCAAsC;AACtC,iDAA+C;AA2B/C;;GAEG;AACI,IAAM,SAAS,GAAG;IACrB,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,EAAE;QAC5B,OAAO,SAAS,CAAC,GAAG,CAAC;KACxB;IAED,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB;AAEF;IAAyB,8BAAK;IAC1B,oBAAmB,OAAe,EAAE,IAAY;QAAhD,YACI,kBAAM,OAAO,CAAC,SAEjB;QADG,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;IACrB,CAAC;IACL,iBAAC;AAAD,CAAC,AALD,CAAyB,KAAK,GAK7B;AAED;IAMI,gBAAoB,OAAwB;QAA5C,iBA0DC;QA1DmB,wBAAA,EAAA,YAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;QAJlC,YAAO,GAAG,IAAI,qBAAY,EAAE,CAAC;QAC7B,iBAAY,GAAkC,IAAI,GAAG,EAAE,CAAC;QACxD,sBAAiB,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tsc/webusb/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "usb",
|
|
3
3
|
"description": "Library to access USB devices",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "2.8.
|
|
5
|
+
"version": "2.8.3",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"engines": {
|
|
8
8
|
"node": ">=10.20.0 <11.x || >=12.17.0 <13.0 || >=14.0.0"
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"postcompile": "eslint . --ext .ts",
|
|
44
44
|
"watch": "tsc -w --preserveWatchOutput",
|
|
45
45
|
"test": "mocha --require coffeescript/register --grep Module test/*",
|
|
46
|
-
"full-test": "mocha --require coffeescript/register test/*.coffee",
|
|
46
|
+
"full-test": "mocha --timeout 10000 --require coffeescript/register test/*.coffee",
|
|
47
47
|
"valgrind": "coffee -c test/*.coffee; valgrind --leak-check=full --show-possibly-lost=no node --expose-gc --trace-gc node_modules/mocha/bin/_mocha -R spec",
|
|
48
48
|
"docs": "typedoc",
|
|
49
49
|
"prebuild": "prebuildify --napi --strip",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/src/hotplug/windows.cc
CHANGED
|
@@ -54,7 +54,7 @@ void extractVidPid(wchar_t *buf, int *vid, int *pid)
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
DWORD MyCMInterfaceNotification(HCMNOTIFICATION hNotify, PVOID Context, CM_NOTIFY_ACTION Action, PCM_NOTIFY_EVENT_DATA EventData, DWORD EventDataSize)
|
|
57
|
+
DWORD WINAPI MyCMInterfaceNotification(HCMNOTIFICATION hNotify, PVOID Context, CM_NOTIFY_ACTION Action, PCM_NOTIFY_EVENT_DATA EventData, DWORD EventDataSize)
|
|
58
58
|
{
|
|
59
59
|
switch (Action)
|
|
60
60
|
{
|
|
@@ -73,7 +73,7 @@ DWORD MyCMInterfaceNotification(HCMNOTIFICATION hNotify, PVOID Context, CM_NOTIF
|
|
|
73
73
|
default:
|
|
74
74
|
break;
|
|
75
75
|
}
|
|
76
|
-
return
|
|
76
|
+
return ERROR_SUCCESS;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
class HotPlugManagerWindows : public HotPlugManager
|
package/test/usb.coffee
CHANGED
|
@@ -41,10 +41,25 @@ describe 'findByIds', ->
|
|
|
41
41
|
assert.ok(dev, "Demo device is not attached")
|
|
42
42
|
|
|
43
43
|
describe 'findBySerialNumber', ->
|
|
44
|
-
it 'should return a single device
|
|
44
|
+
it 'should return a single device', ->
|
|
45
45
|
dev = findBySerialNumber('TEST_DEVICE')
|
|
46
46
|
assert.ok(dev, "Demo device is not attached")
|
|
47
47
|
|
|
48
|
+
describe 'Hotplug', ->
|
|
49
|
+
it 'should detect detach', (done) ->
|
|
50
|
+
usb.once 'detach', (d) ->
|
|
51
|
+
assert.equal(d.deviceDescriptor.idVendor, 0x59e3)
|
|
52
|
+
assert.equal(d.deviceDescriptor.idProduct, 0x0a23)
|
|
53
|
+
done()
|
|
54
|
+
console.log('\n--- DISCONNECT DEVICE ---\n')
|
|
55
|
+
|
|
56
|
+
it 'should detect attach', (done) ->
|
|
57
|
+
usb.once 'attach', (d) ->
|
|
58
|
+
assert.equal(d.deviceDescriptor.idVendor, 0x59e3)
|
|
59
|
+
assert.equal(d.deviceDescriptor.idProduct, 0x0a23)
|
|
60
|
+
done()
|
|
61
|
+
console.log('\n--- CONNECT DEVICE ---\n')
|
|
62
|
+
|
|
48
63
|
describe 'Device', ->
|
|
49
64
|
device = null
|
|
50
65
|
before ->
|
package/test/webusb.coffee
CHANGED
|
@@ -35,6 +35,23 @@ describe 'getDevices', ->
|
|
|
35
35
|
assert.notEqual(l[0], undefined)
|
|
36
36
|
assert.deepEqual(l[0], device)
|
|
37
37
|
|
|
38
|
+
describe 'WebUSB Hotplug', ->
|
|
39
|
+
it 'should detect disconnect', (done) ->
|
|
40
|
+
fn = (e) ->
|
|
41
|
+
assert.equal(e.device.serialNumber, "TEST_DEVICE")
|
|
42
|
+
webusb.removeEventListener 'disconnect', fn
|
|
43
|
+
done()
|
|
44
|
+
webusb.addEventListener 'disconnect', fn
|
|
45
|
+
console.log('\n--- DISCONNECT DEVICE ---\n')
|
|
46
|
+
|
|
47
|
+
it 'should detect connect', (done) ->
|
|
48
|
+
fn = (e) ->
|
|
49
|
+
assert.equal(e.device.serialNumber, "TEST_DEVICE")
|
|
50
|
+
webusb.removeEventListener 'connect', fn
|
|
51
|
+
done()
|
|
52
|
+
webusb.addEventListener 'connect', fn
|
|
53
|
+
console.log('\n--- CONNECT DEVICE ---\n')
|
|
54
|
+
|
|
38
55
|
describe 'Device properties', ->
|
|
39
56
|
device = null
|
|
40
57
|
before ->
|