usb 2.6.0 → 2.8.0
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 +10 -0
- package/dist/webusb/index.d.ts +4 -2
- package/dist/webusb/index.js +81 -63
- package/dist/webusb/index.js.map +1 -1
- package/package.json +1 -1
- package/prebuilds/android-arm/node.napi.armv7.node +0 -0
- package/prebuilds/android-arm64/node.napi.armv8.node +0 -0
- package/prebuilds/darwin-x64+arm64/node.napi.node +0 -0
- package/prebuilds/linux-arm/node.napi.armv6.node +0 -0
- package/prebuilds/linux-arm/node.napi.armv7.node +0 -0
- package/prebuilds/linux-arm64/node.napi.armv8.node +0 -0
- package/prebuilds/linux-ia32/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
- package/prebuilds/linux-x64/node.napi.musl.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 -0
- package/src/node_usb.cc +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.8.0] - 2023-02-11
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Minor tweaks to avoid some race conditions - [`569`](https://github.com/node-usb/node-usb/pull/569) ([Rob Moran](https://github.com/thegecko))
|
|
7
|
+
|
|
8
|
+
## [2.7.0] - 2023-01-25
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- Return same WebUSB device on subsequent calls - [`567`](https://github.com/node-usb/node-usb/pull/567) ([Nisarg Jhaveri](https://github.com/nisargjhaveri))
|
|
12
|
+
|
|
3
13
|
## [2.6.0] - 2022-12-10
|
|
4
14
|
|
|
5
15
|
### Changed
|
package/dist/webusb/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/// <reference types="w3c-web-usb" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
+
import * as usb from '../usb';
|
|
3
4
|
import { EventEmitter } from 'events';
|
|
5
|
+
import { WebUSBDevice } from './webusb-device';
|
|
4
6
|
/**
|
|
5
7
|
* USB Options
|
|
6
8
|
*/
|
|
@@ -29,7 +31,7 @@ export declare const getWebUsb: () => USB;
|
|
|
29
31
|
export declare class WebUSB implements USB {
|
|
30
32
|
private options;
|
|
31
33
|
protected emitter: EventEmitter;
|
|
32
|
-
protected knownDevices: Map<
|
|
34
|
+
protected knownDevices: Map<usb.Device, WebUSBDevice>;
|
|
33
35
|
protected allowedDevices: USBDeviceFilter[];
|
|
34
36
|
constructor(options?: USBOptions);
|
|
35
37
|
private _onconnect;
|
|
@@ -53,8 +55,8 @@ export declare class WebUSB implements USB {
|
|
|
53
55
|
*/
|
|
54
56
|
getDevices(): Promise<USBDevice[]>;
|
|
55
57
|
private loadDevices;
|
|
58
|
+
private getWebDevice;
|
|
56
59
|
private preFilterDevices;
|
|
57
60
|
private filterDevice;
|
|
58
|
-
private getDeviceId;
|
|
59
61
|
private isAllowedDevice;
|
|
60
62
|
}
|
package/dist/webusb/index.js
CHANGED
|
@@ -46,6 +46,27 @@ var __values = (this && this.__values) || function(o) {
|
|
|
46
46
|
};
|
|
47
47
|
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
48
48
|
};
|
|
49
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
50
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
51
|
+
if (!m) return o;
|
|
52
|
+
var i = m.call(o), r, ar = [], e;
|
|
53
|
+
try {
|
|
54
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
55
|
+
}
|
|
56
|
+
catch (error) { e = { error: error }; }
|
|
57
|
+
finally {
|
|
58
|
+
try {
|
|
59
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
60
|
+
}
|
|
61
|
+
finally { if (e) throw e.error; }
|
|
62
|
+
}
|
|
63
|
+
return ar;
|
|
64
|
+
};
|
|
65
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
66
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
67
|
+
to[j] = from[i];
|
|
68
|
+
return to;
|
|
69
|
+
};
|
|
49
70
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
71
|
exports.WebUSB = exports.getWebUsb = void 0;
|
|
51
72
|
var usb = require("../usb");
|
|
@@ -70,25 +91,14 @@ var WebUSB = /** @class */ (function () {
|
|
|
70
91
|
this.knownDevices = new Map();
|
|
71
92
|
this.allowedDevices = options.allowedDevices || [];
|
|
72
93
|
var deviceConnectCallback = function (device) { return __awaiter(_this, void 0, void 0, function () {
|
|
73
|
-
var webDevice,
|
|
74
|
-
return __generator(this, function (
|
|
75
|
-
switch (
|
|
76
|
-
case 0:
|
|
77
|
-
_b.trys.push([0, 2, , 3]);
|
|
78
|
-
return [4 /*yield*/, webusb_device_1.WebUSBDevice.createInstance(device)];
|
|
94
|
+
var webDevice, event_1;
|
|
95
|
+
return __generator(this, function (_a) {
|
|
96
|
+
switch (_a.label) {
|
|
97
|
+
case 0: return [4 /*yield*/, this.getWebDevice(device)];
|
|
79
98
|
case 1:
|
|
80
|
-
webDevice =
|
|
81
|
-
return [3 /*break*/, 3];
|
|
82
|
-
case 2:
|
|
83
|
-
_a = _b.sent();
|
|
84
|
-
return [3 /*break*/, 3];
|
|
85
|
-
case 3:
|
|
99
|
+
webDevice = _a.sent();
|
|
86
100
|
// When connected, emit an event if it is an allowed device
|
|
87
101
|
if (webDevice && this.isAllowedDevice(webDevice)) {
|
|
88
|
-
deviceId = this.getDeviceId(device);
|
|
89
|
-
if (deviceId) {
|
|
90
|
-
this.knownDevices.set(deviceId, webDevice);
|
|
91
|
-
}
|
|
92
102
|
event_1 = {
|
|
93
103
|
type: 'connect',
|
|
94
104
|
device: webDevice
|
|
@@ -100,12 +110,11 @@ var WebUSB = /** @class */ (function () {
|
|
|
100
110
|
});
|
|
101
111
|
}); };
|
|
102
112
|
var deviceDisconnectCallback = function (device) { return __awaiter(_this, void 0, void 0, function () {
|
|
103
|
-
var
|
|
113
|
+
var webDevice, event_2;
|
|
104
114
|
return __generator(this, function (_a) {
|
|
105
|
-
deviceId = this.getDeviceId(device);
|
|
106
115
|
// When disconnected, emit an event if the device was a known allowed device
|
|
107
|
-
if (
|
|
108
|
-
webDevice = this.knownDevices.get(
|
|
116
|
+
if (this.knownDevices.has(device)) {
|
|
117
|
+
webDevice = this.knownDevices.get(device);
|
|
109
118
|
if (webDevice && this.isAllowedDevice(webDevice)) {
|
|
110
119
|
event_2 = {
|
|
111
120
|
type: 'disconnect',
|
|
@@ -287,61 +296,76 @@ var WebUSB = /** @class */ (function () {
|
|
|
287
296
|
};
|
|
288
297
|
WebUSB.prototype.loadDevices = function (preFilters) {
|
|
289
298
|
return __awaiter(this, void 0, void 0, function () {
|
|
290
|
-
var devices,
|
|
291
|
-
var e_1,
|
|
292
|
-
return __generator(this, function (
|
|
293
|
-
switch (
|
|
299
|
+
var devices, refreshedKnownDevices, devices_1, devices_1_1, device, webDevice, e_1_1;
|
|
300
|
+
var e_1, _a;
|
|
301
|
+
return __generator(this, function (_b) {
|
|
302
|
+
switch (_b.label) {
|
|
294
303
|
case 0:
|
|
295
304
|
devices = usb.getDeviceList();
|
|
296
305
|
// Pre-filter devices
|
|
297
306
|
devices = this.preFilterDevices(devices, preFilters);
|
|
298
|
-
|
|
299
|
-
|
|
307
|
+
refreshedKnownDevices = new Map();
|
|
308
|
+
_b.label = 1;
|
|
300
309
|
case 1:
|
|
301
|
-
|
|
310
|
+
_b.trys.push([1, 6, 7, 8]);
|
|
302
311
|
devices_1 = __values(devices), devices_1_1 = devices_1.next();
|
|
303
|
-
|
|
312
|
+
_b.label = 2;
|
|
304
313
|
case 2:
|
|
305
|
-
if (!!devices_1_1.done) return [3 /*break*/,
|
|
314
|
+
if (!!devices_1_1.done) return [3 /*break*/, 5];
|
|
306
315
|
device = devices_1_1.value;
|
|
307
|
-
|
|
308
|
-
device.timeout = this.options.deviceTimeout;
|
|
309
|
-
}
|
|
310
|
-
webDevice = void 0;
|
|
311
|
-
_c.label = 3;
|
|
316
|
+
return [4 /*yield*/, this.getWebDevice(device)];
|
|
312
317
|
case 3:
|
|
313
|
-
|
|
314
|
-
return [4 /*yield*/, webusb_device_1.WebUSBDevice.createInstance(device)];
|
|
315
|
-
case 4:
|
|
316
|
-
webDevice = _c.sent();
|
|
317
|
-
return [3 /*break*/, 6];
|
|
318
|
-
case 5:
|
|
319
|
-
_a = _c.sent();
|
|
320
|
-
return [3 /*break*/, 6];
|
|
321
|
-
case 6:
|
|
318
|
+
webDevice = _b.sent();
|
|
322
319
|
if (webDevice) {
|
|
323
|
-
|
|
324
|
-
deviceId = this.getDeviceId(device);
|
|
325
|
-
if (deviceId) {
|
|
326
|
-
this.knownDevices.set(deviceId, webDevice);
|
|
327
|
-
}
|
|
320
|
+
refreshedKnownDevices.set(device, webDevice);
|
|
328
321
|
}
|
|
329
|
-
|
|
330
|
-
case
|
|
322
|
+
_b.label = 4;
|
|
323
|
+
case 4:
|
|
331
324
|
devices_1_1 = devices_1.next();
|
|
332
325
|
return [3 /*break*/, 2];
|
|
333
|
-
case
|
|
334
|
-
case
|
|
335
|
-
e_1_1 =
|
|
326
|
+
case 5: return [3 /*break*/, 8];
|
|
327
|
+
case 6:
|
|
328
|
+
e_1_1 = _b.sent();
|
|
336
329
|
e_1 = { error: e_1_1 };
|
|
337
|
-
return [3 /*break*/,
|
|
338
|
-
case
|
|
330
|
+
return [3 /*break*/, 8];
|
|
331
|
+
case 7:
|
|
339
332
|
try {
|
|
340
|
-
if (devices_1_1 && !devices_1_1.done && (
|
|
333
|
+
if (devices_1_1 && !devices_1_1.done && (_a = devices_1.return)) _a.call(devices_1);
|
|
341
334
|
}
|
|
342
335
|
finally { if (e_1) throw e_1.error; }
|
|
343
336
|
return [7 /*endfinally*/];
|
|
344
|
-
case
|
|
337
|
+
case 8:
|
|
338
|
+
// Refresh knownDevices to remove old devices from the map
|
|
339
|
+
this.knownDevices = refreshedKnownDevices;
|
|
340
|
+
return [2 /*return*/, __spreadArray([], __read(this.knownDevices.values()))];
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
};
|
|
345
|
+
// Get a WebUSBDevice corresponding to underlying device.
|
|
346
|
+
// Returns undefined the device was not found and could not be created.
|
|
347
|
+
WebUSB.prototype.getWebDevice = function (device) {
|
|
348
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
349
|
+
var webDevice, _a;
|
|
350
|
+
return __generator(this, function (_b) {
|
|
351
|
+
switch (_b.label) {
|
|
352
|
+
case 0:
|
|
353
|
+
if (!!this.knownDevices.has(device)) return [3 /*break*/, 4];
|
|
354
|
+
if (this.options.deviceTimeout) {
|
|
355
|
+
device.timeout = this.options.deviceTimeout;
|
|
356
|
+
}
|
|
357
|
+
_b.label = 1;
|
|
358
|
+
case 1:
|
|
359
|
+
_b.trys.push([1, 3, , 4]);
|
|
360
|
+
return [4 /*yield*/, webusb_device_1.WebUSBDevice.createInstance(device)];
|
|
361
|
+
case 2:
|
|
362
|
+
webDevice = _b.sent();
|
|
363
|
+
this.knownDevices.set(device, webDevice);
|
|
364
|
+
return [3 /*break*/, 4];
|
|
365
|
+
case 3:
|
|
366
|
+
_a = _b.sent();
|
|
367
|
+
return [3 /*break*/, 4];
|
|
368
|
+
case 4: return [2 /*return*/, this.knownDevices.get(device)];
|
|
345
369
|
}
|
|
346
370
|
});
|
|
347
371
|
});
|
|
@@ -410,12 +434,6 @@ var WebUSB = /** @class */ (function () {
|
|
|
410
434
|
return true;
|
|
411
435
|
});
|
|
412
436
|
};
|
|
413
|
-
WebUSB.prototype.getDeviceId = function (device) {
|
|
414
|
-
if (device.busNumber === undefined || device.deviceAddress === undefined) {
|
|
415
|
-
return undefined;
|
|
416
|
-
}
|
|
417
|
-
return device.busNumber + "." + device.deviceAddress;
|
|
418
|
-
};
|
|
419
437
|
WebUSB.prototype.isAllowedDevice = function (device) {
|
|
420
438
|
if (this.options.allowAllDevices) {
|
|
421
439
|
return true;
|
package/dist/webusb/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tsc/webusb/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tsc/webusb/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/src/hotplug/windows.cc
CHANGED
|
@@ -80,6 +80,7 @@ class HotPlugManagerWindows : public HotPlugManager
|
|
|
80
80
|
{
|
|
81
81
|
public:
|
|
82
82
|
HotPlugManagerWindows()
|
|
83
|
+
: hcm(nullptr)
|
|
83
84
|
{
|
|
84
85
|
cmNotifyFilter = { 0 };
|
|
85
86
|
cmNotifyFilter.cbSize = sizeof(cmNotifyFilter);
|
|
@@ -105,6 +106,7 @@ public:
|
|
|
105
106
|
auto res = CM_Register_Notification(&cmNotifyFilter, (PVOID)instanceData, (PCM_NOTIFY_CALLBACK)&MyCMInterfaceNotification, &hcm);
|
|
106
107
|
if (res != CR_SUCCESS)
|
|
107
108
|
{
|
|
109
|
+
isRunning = false;
|
|
108
110
|
THROW_ERROR("RegisterNotification failed")
|
|
109
111
|
}
|
|
110
112
|
}
|
package/src/node_usb.cc
CHANGED
|
@@ -141,9 +141,10 @@ Napi::Value EnableHotplugEvents(const Napi::CallbackInfo& info) {
|
|
|
141
141
|
if (!instanceData->hotplugEnabled) {
|
|
142
142
|
instanceData->hotplugThis.Reset(info.This().As<Napi::Object>(), 1);
|
|
143
143
|
|
|
144
|
+
// Start queue, then enable hotplug events
|
|
145
|
+
instanceData->hotplugQueue.start(env);
|
|
144
146
|
instanceData->hotplugManager->enableHotplug(env, instanceData);
|
|
145
147
|
|
|
146
|
-
instanceData->hotplugQueue.start(env);
|
|
147
148
|
instanceData->hotplugEnabled = true;
|
|
148
149
|
}
|
|
149
150
|
return env.Undefined();
|
|
@@ -155,9 +156,11 @@ Napi::Value DisableHotplugEvents(const Napi::CallbackInfo& info) {
|
|
|
155
156
|
ModuleData* instanceData = env.GetInstanceData<ModuleData>();
|
|
156
157
|
|
|
157
158
|
if (instanceData->hotplugEnabled) {
|
|
158
|
-
instanceData->hotplugManager->disableHotplug(env, instanceData);
|
|
159
159
|
|
|
160
|
+
// Disable events, then stop queue
|
|
161
|
+
instanceData->hotplugManager->disableHotplug(env, instanceData);
|
|
160
162
|
instanceData->hotplugQueue.stop();
|
|
163
|
+
|
|
161
164
|
instanceData->hotplugEnabled = false;
|
|
162
165
|
}
|
|
163
166
|
return env.Undefined();
|