react-native-web-serial-api 0.0.3 → 0.2.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/README.md +198 -104
- package/TESTING.md +542 -0
- package/android/build.gradle +16 -2
- package/android/src/main/java/dev/webserialapi/NativeUsbSerialModule.java +74 -11
- package/android/src/main/java/dev/webserialapi/PortPickerActivity.java +61 -59
- package/bin/expose-serial.js +205 -0
- package/lib/commonjs/UsbSerial.js +58 -26
- package/lib/commonjs/UsbSerial.js.map +1 -1
- package/lib/commonjs/WebSerial.js +273 -77
- package/lib/commonjs/WebSerial.js.map +1 -1
- package/lib/commonjs/index.js +15 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/lib/dom-exception.js +176 -0
- package/lib/commonjs/lib/dom-exception.js.map +1 -0
- package/lib/commonjs/lib/event-target.js +140 -0
- package/lib/commonjs/lib/event-target.js.map +1 -0
- package/lib/commonjs/lib/promise.js +23 -0
- package/lib/commonjs/lib/promise.js.map +1 -0
- package/lib/commonjs/lib/web-streams.js +42 -0
- package/lib/commonjs/lib/web-streams.js.map +1 -0
- package/lib/commonjs/testing/device-fixture.js +70 -0
- package/lib/commonjs/testing/device-fixture.js.map +1 -0
- package/lib/commonjs/testing/expose.js +91 -0
- package/lib/commonjs/testing/expose.js.map +1 -0
- package/lib/commonjs/testing/harness.js +98 -0
- package/lib/commonjs/testing/harness.js.map +1 -0
- package/lib/commonjs/testing/in-memory-serial-transport.js +653 -0
- package/lib/commonjs/testing/in-memory-serial-transport.js.map +1 -0
- package/lib/commonjs/testing/index.js +153 -0
- package/lib/commonjs/testing/index.js.map +1 -0
- package/lib/commonjs/testing/install-in-memory-serial-transport.js +54 -0
- package/lib/commonjs/testing/install-in-memory-serial-transport.js.map +1 -0
- package/lib/commonjs/testing/serial-client.js +277 -0
- package/lib/commonjs/testing/serial-client.js.map +1 -0
- package/lib/commonjs/testing/simulated-device.js +164 -0
- package/lib/commonjs/testing/simulated-device.js.map +1 -0
- package/lib/commonjs/testing/test-suite.js +142 -0
- package/lib/commonjs/testing/test-suite.js.map +1 -0
- package/lib/commonjs/transport.js +61 -0
- package/lib/commonjs/transport.js.map +1 -0
- package/lib/commonjs/websocket/WebSocketSerialTransport.js +659 -0
- package/lib/commonjs/websocket/WebSocketSerialTransport.js.map +1 -0
- package/lib/commonjs/websocket/bridge.js +234 -0
- package/lib/commonjs/websocket/bridge.js.map +1 -0
- package/lib/commonjs/websocket/index.js +33 -0
- package/lib/commonjs/websocket/index.js.map +1 -0
- package/lib/commonjs/websocket/protocol.js +55 -0
- package/lib/commonjs/websocket/protocol.js.map +1 -0
- package/lib/commonjs/websocket/serial-device-bridge.js +130 -0
- package/lib/commonjs/websocket/serial-device-bridge.js.map +1 -0
- package/lib/typescript/src/UsbSerial.d.ts +24 -67
- package/lib/typescript/src/UsbSerial.d.ts.map +1 -1
- package/lib/typescript/src/WebSerial.d.ts +16 -7
- package/lib/typescript/src/WebSerial.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +3 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/lib/dom-exception.d.ts +100 -0
- package/lib/typescript/src/lib/dom-exception.d.ts.map +1 -0
- package/lib/typescript/src/lib/event-target.d.ts +55 -0
- package/lib/typescript/src/lib/event-target.d.ts.map +1 -0
- package/lib/typescript/src/lib/promise.d.ts +11 -0
- package/lib/typescript/src/lib/promise.d.ts.map +1 -0
- package/lib/typescript/src/lib/web-streams.d.ts +9 -0
- package/lib/typescript/src/lib/web-streams.d.ts.map +1 -0
- package/lib/typescript/src/testing/device-fixture.d.ts +70 -0
- package/lib/typescript/src/testing/device-fixture.d.ts.map +1 -0
- package/lib/typescript/src/testing/expose.d.ts +71 -0
- package/lib/typescript/src/testing/expose.d.ts.map +1 -0
- package/lib/typescript/src/testing/harness.d.ts +34 -0
- package/lib/typescript/src/testing/harness.d.ts.map +1 -0
- package/lib/typescript/src/testing/in-memory-serial-transport.d.ts +216 -0
- package/lib/typescript/src/testing/in-memory-serial-transport.d.ts.map +1 -0
- package/lib/typescript/src/testing/index.d.ts +33 -0
- package/lib/typescript/src/testing/index.d.ts.map +1 -0
- package/lib/typescript/src/testing/install-in-memory-serial-transport.d.ts +25 -0
- package/lib/typescript/src/testing/install-in-memory-serial-transport.d.ts.map +1 -0
- package/lib/typescript/src/testing/serial-client.d.ts +62 -0
- package/lib/typescript/src/testing/serial-client.d.ts.map +1 -0
- package/lib/typescript/src/testing/simulated-device.d.ts +127 -0
- package/lib/typescript/src/testing/simulated-device.d.ts.map +1 -0
- package/lib/typescript/src/testing/test-suite.d.ts +75 -0
- package/lib/typescript/src/testing/test-suite.d.ts.map +1 -0
- package/lib/typescript/src/transport.d.ts +131 -0
- package/lib/typescript/src/transport.d.ts.map +1 -0
- package/lib/typescript/src/websocket/WebSocketSerialTransport.d.ts +111 -0
- package/lib/typescript/src/websocket/WebSocketSerialTransport.d.ts.map +1 -0
- package/lib/typescript/src/websocket/bridge.d.ts +66 -0
- package/lib/typescript/src/websocket/bridge.d.ts.map +1 -0
- package/lib/typescript/src/websocket/index.d.ts +19 -0
- package/lib/typescript/src/websocket/index.d.ts.map +1 -0
- package/lib/typescript/src/websocket/protocol.d.ts +64 -0
- package/lib/typescript/src/websocket/protocol.d.ts.map +1 -0
- package/lib/typescript/src/websocket/serial-device-bridge.d.ts +32 -0
- package/lib/typescript/src/websocket/serial-device-bridge.d.ts.map +1 -0
- package/package.json +57 -3
- package/src/UsbSerial.ts +65 -90
- package/src/WebSerial.ts +351 -113
- package/src/index.ts +6 -8
- package/src/lib/dom-exception.ts +129 -60
- package/src/lib/event-target.ts +58 -21
- package/src/lib/promise.ts +7 -7
- package/src/lib/web-streams.ts +43 -0
- package/src/testing/device-fixture.ts +150 -0
- package/src/testing/expose.ts +147 -0
- package/src/testing/harness.ts +124 -0
- package/src/testing/in-memory-serial-transport.ts +840 -0
- package/src/testing/index.ts +90 -0
- package/src/testing/install-in-memory-serial-transport.ts +65 -0
- package/src/testing/serial-client.ts +313 -0
- package/src/testing/simulated-device.ts +193 -0
- package/src/testing/test-suite.ts +186 -0
- package/src/transport.ts +200 -0
- package/src/websocket/WebSocketSerialTransport.ts +796 -0
- package/src/websocket/bridge.ts +299 -0
- package/src/websocket/index.ts +38 -0
- package/src/websocket/protocol.ts +101 -0
- package/src/websocket/serial-device-bridge.ts +160 -0
- package/babel.config.js +0 -3
- package/biome.json +0 -35
- package/example/.watchmanconfig +0 -1
- package/example/App.tsx +0 -71
- package/example/__tests__/App.test.tsx +0 -16
- package/example/__tests__/connectEvents.test.tsx +0 -81
- package/example/__tests__/getPorts.test.tsx +0 -140
- package/example/android/app/build.gradle +0 -120
- package/example/android/app/debug.keystore +0 -0
- package/example/android/app/proguard-rules.pro +0 -10
- package/example/android/app/src/debug/AndroidManifest.xml +0 -9
- package/example/android/app/src/main/AndroidManifest.xml +0 -38
- package/example/android/app/src/main/java/dev/uzlopak/MainActivity.kt +0 -22
- package/example/android/app/src/main/java/dev/uzlopak/MainApplication.kt +0 -41
- package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -37
- package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
- package/example/android/app/src/main/res/values/strings.xml +0 -3
- package/example/android/app/src/main/res/values/styles.xml +0 -9
- package/example/android/build.gradle +0 -22
- package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/example/android/gradle/wrapper/gradle-wrapper.properties +0 -7
- package/example/android/gradle.properties +0 -47
- package/example/android/gradlew +0 -252
- package/example/android/gradlew.bat +0 -94
- package/example/android/settings.gradle +0 -6
- package/example/app.json +0 -4
- package/example/babel.config.js +0 -21
- package/example/biome.json +0 -47
- package/example/deploy.sh +0 -11
- package/example/index.html +0 -26
- package/example/index.js +0 -9
- package/example/index.web.js +0 -8
- package/example/jest.config.js +0 -12
- package/example/metro.config.js +0 -58
- package/example/package-lock.json +0 -14510
- package/example/package.json +0 -48
- package/example/react-native.config.js +0 -17
- package/example/src/components/AppBar.tsx +0 -73
- package/example/src/components/Menu.tsx +0 -90
- package/example/src/components/SingleChoiceDialog.tsx +0 -120
- package/example/src/screens/ConnectScreen.tsx +0 -195
- package/example/src/screens/DevicesScreen.tsx +0 -252
- package/example/src/screens/TerminalScreen.tsx +0 -572
- package/example/src/settings.ts +0 -43
- package/example/src/theme.ts +0 -19
- package/example/src/util/TextUtil.ts +0 -129
- package/example/tsconfig.json +0 -10
- package/example/vite.config.mjs +0 -55
- package/scripts/deploy-release.sh +0 -127
- package/tsconfig.build.json +0 -7
- package/tsconfig.json +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_transport","require","toByte","n","mapInputSignals","s","out","dataCarrierDetect","undefined","dcd","clearToSend","cts","ringIndicator","ri","dataSetReady","dsr","DeviceHandle","attached","isOpen","reading","flowControl","openOptions","overrunLimit","_rxDelivered","_overran","_hwWritten","output","dtr","rts","brk","input","written","fails","Set","transport","constructor","deviceId","device","options","simulatedDevice","usbVendorId","usbProductId","portNumber","serialNumber","toString","hasPermission","loopbackSignals","flowControlThreshold","push","bytes","_deliver","map","emitError","message","name","_error","overrunAfter","failNext","op","add","_consumeFail","has","delete","setInputSignals","signals","Object","assign","attach","detach","loseDevice","openWaiters","closeWaiters","whenOpened","Promise","resolve","whenClosed","_notifyOpen","waiter","clear","_notifyClose","exports","InMemorySerialTransport","devices","latencyMs","autoGrant","chunkSize","nextDeviceId","dataListeners","errorListeners","connectListeners","disconnectListeners","pendingPick","autoGrantPermission","addDevice","_bind","hostFor","#hostFor","send","raiseError","setSignals","invokeHook","#invokeHook","fn","result","then","catch","err","console","error","removeDevice","i","indexOf","splice","emit","lost","wasOpen","selectNextPort","target","rejectNextPortPicker","data","remaining","length","head","slice","Math","max","emitData","event","errorName","schedule","#emitData","emitOne","chunk","findAllDrivers","ports","filter","d","toPortId","showPortPicker","_labels","pick","reject","Error","candidates","matchesFilters","chosen","find","includes","requestPermission","open","DEFAULT_OPEN_OPTIONS","onOpen","close","onClose","write","_timeout","onData","Uint8Array","from","startReading","stopReading","setParameters","setDTR","value","setOutput","setRTS","setBreak","getDTR","getRTS","getCD","getCTS","getRI","getDSR","getControlLines","lines","getSupportedControlLines","_deviceId","_portNumber","setFlowControl","getFlowControl","getSupportedFlowControl","purgeHwBuffers","_purgeWriteBuffers","_purgeReadBuffers","getSerial","listener","subscribe","onError","onConnect","onDisconnect","#setOutput","key","onHostSignals","dataTerminalReady","requestToSend","break","#matchesFilters","filters","some","f","#find","#subscribe","set","remove","#emit","#schedule","setTimeout","queueMicrotask","#resolve","r","#reject","_"],"sourceRoot":"../../../src","sources":["testing/in-memory-serial-transport.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "DeviceHandle", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _inMemorySerialTransport.DeviceHandle;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "InMemorySerialTransport", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _inMemorySerialTransport.InMemorySerialTransport;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "LineBufferedDevice", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _simulatedDevice.LineBufferedDevice;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "LoopbackDevice", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _simulatedDevice.LoopbackDevice;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "SerialClient", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _serialClient.SerialClient;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "SimulatedDevice", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _simulatedDevice.SimulatedDevice;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "SinkDevice", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _simulatedDevice.SinkDevice;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "assert", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _harness.assert;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "assertEqual", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _harness.assertEqual;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "assertRejects", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _harness.assertRejects;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, "bytesEqual", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return _harness.bytesEqual;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(exports, "compareTestResults", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _testSuite.compareTestResults;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(exports, "createDeviceFixture", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return _deviceFixture.createDeviceFixture;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
Object.defineProperty(exports, "createSerialClient", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function () {
|
|
87
|
+
return _serialClient.createSerialClient;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
Object.defineProperty(exports, "errorMessage", {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
get: function () {
|
|
93
|
+
return _harness.errorMessage;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
Object.defineProperty(exports, "exposeSimulatedDevice", {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function () {
|
|
99
|
+
return _expose.exposeSimulatedDevice;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
Object.defineProperty(exports, "getUsbSerial", {
|
|
103
|
+
enumerable: true,
|
|
104
|
+
get: function () {
|
|
105
|
+
return _UsbSerial.getUsbSerial;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
Object.defineProperty(exports, "installInMemorySerialTransport", {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
get: function () {
|
|
111
|
+
return _installInMemorySerialTransport.installInMemorySerialTransport;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
Object.defineProperty(exports, "readBytes", {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
get: function () {
|
|
117
|
+
return _harness.readBytes;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(exports, "resetUsbSerial", {
|
|
121
|
+
enumerable: true,
|
|
122
|
+
get: function () {
|
|
123
|
+
return _UsbSerial.resetUsbSerial;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
Object.defineProperty(exports, "runTestSuite", {
|
|
127
|
+
enumerable: true,
|
|
128
|
+
get: function () {
|
|
129
|
+
return _testSuite.runTestSuite;
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
Object.defineProperty(exports, "setUsbSerial", {
|
|
133
|
+
enumerable: true,
|
|
134
|
+
get: function () {
|
|
135
|
+
return _UsbSerial.setUsbSerial;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
Object.defineProperty(exports, "withTimeout", {
|
|
139
|
+
enumerable: true,
|
|
140
|
+
get: function () {
|
|
141
|
+
return _harness.withTimeout;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
var _UsbSerial = require("../UsbSerial");
|
|
145
|
+
var _deviceFixture = require("./device-fixture");
|
|
146
|
+
var _expose = require("./expose");
|
|
147
|
+
var _harness = require("./harness");
|
|
148
|
+
var _inMemorySerialTransport = require("./in-memory-serial-transport");
|
|
149
|
+
var _installInMemorySerialTransport = require("./install-in-memory-serial-transport");
|
|
150
|
+
var _serialClient = require("./serial-client");
|
|
151
|
+
var _simulatedDevice = require("./simulated-device");
|
|
152
|
+
var _testSuite = require("./test-suite");
|
|
153
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_UsbSerial","require","_deviceFixture","_expose","_harness","_inMemorySerialTransport","_installInMemorySerialTransport","_serialClient","_simulatedDevice","_testSuite"],"sourceRoot":"../../../src","sources":["testing/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAAA,UAAA,GAAAC,OAAA;AAOA,IAAAC,cAAA,GAAAD,OAAA;AASA,IAAAE,OAAA,GAAAF,OAAA;AAGA,IAAAG,QAAA,GAAAH,OAAA;AAcA,IAAAI,wBAAA,GAAAJ,OAAA;AASA,IAAAK,+BAAA,GAAAL,OAAA;AAGA,IAAAM,aAAA,GAAAN,OAAA;AAYA,IAAAO,gBAAA,GAAAP,OAAA;AAcA,IAAAQ,UAAA,GAAAR,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.installInMemorySerialTransport = installInMemorySerialTransport;
|
|
7
|
+
var _UsbSerial = require("../UsbSerial");
|
|
8
|
+
var _inMemorySerialTransport = require("./in-memory-serial-transport");
|
|
9
|
+
var _simulatedDevice = require("./simulated-device");
|
|
10
|
+
/**
|
|
11
|
+
* installInMemorySerialTransport — point the library at a simulated device set in one call.
|
|
12
|
+
*
|
|
13
|
+
* Built for E2E: call it once at app startup, behind your own env/build flag, to
|
|
14
|
+
* make `navigator.serial` / this library's `serial` talk to simulated
|
|
15
|
+
* {@link SimulatedDevice}s instead of real USB hardware while a test driver
|
|
16
|
+
* (Maestro, Detox, …) exercises the app on a device/emulator.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* // index.js (debug/E2E build only)
|
|
20
|
+
* import {installInMemorySerialTransport, LoopbackDevice} from 'react-native-web-serial-api/testing';
|
|
21
|
+
* installInMemorySerialTransport({
|
|
22
|
+
* enabled: process.env.RNWS_SERIAL_MOCK === '1',
|
|
23
|
+
* devices: [new LoopbackDevice(), new MyThermometer()],
|
|
24
|
+
* });
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/** A device to register: a SimulatedDevice, optionally with transport options. */
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Build an {@link InMemorySerialTransport} from `devices` and install it globally
|
|
31
|
+
* via {@link setUsbSerial}. SimulatedDevices default to granted USB permission (so
|
|
32
|
+
* they show up immediately); pass the `{device, options}` form to override.
|
|
33
|
+
* Returns the transport (handy for driving devices in-test), or `null` when
|
|
34
|
+
* disabled.
|
|
35
|
+
*/
|
|
36
|
+
function installInMemorySerialTransport(options) {
|
|
37
|
+
if (options.enabled === false) return null;
|
|
38
|
+
const transport = new _inMemorySerialTransport.InMemorySerialTransport(options.transport);
|
|
39
|
+
for (const entry of options.devices) {
|
|
40
|
+
if (entry instanceof _simulatedDevice.SimulatedDevice) {
|
|
41
|
+
transport.addDevice(entry, {
|
|
42
|
+
hasPermission: true
|
|
43
|
+
});
|
|
44
|
+
} else {
|
|
45
|
+
transport.addDevice(entry.device, {
|
|
46
|
+
hasPermission: true,
|
|
47
|
+
...entry.options
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
(0, _UsbSerial.setUsbSerial)(transport);
|
|
52
|
+
return transport;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=install-in-memory-serial-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_UsbSerial","require","_inMemorySerialTransport","_simulatedDevice","installInMemorySerialTransport","options","enabled","transport","InMemorySerialTransport","entry","devices","SimulatedDevice","addDevice","hasPermission","device","setUsbSerial"],"sourceRoot":"../../../src","sources":["testing/install-in-memory-serial-transport.ts"],"mappings":";;;;;;AAgBA,IAAAA,UAAA,GAAAC,OAAA;AAKA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,8BAA8BA,CAC5CC,OAA8C,EACd;EAChC,IAAIA,OAAO,CAACC,OAAO,KAAK,KAAK,EAAE,OAAO,IAAI;EAE1C,MAAMC,SAAS,GAAG,IAAIC,gDAAuB,CAACH,OAAO,CAACE,SAAS,CAAC;EAChE,KAAK,MAAME,KAAK,IAAIJ,OAAO,CAACK,OAAO,EAAE;IACnC,IAAID,KAAK,YAAYE,gCAAe,EAAE;MACpCJ,SAAS,CAACK,SAAS,CAACH,KAAK,EAAE;QAACI,aAAa,EAAE;MAAI,CAAC,CAAC;IACnD,CAAC,MAAM;MACLN,SAAS,CAACK,SAAS,CAACH,KAAK,CAACK,MAAM,EAAE;QAChCD,aAAa,EAAE,IAAI;QACnB,GAAGJ,KAAK,CAACJ;MACX,CAAC,CAAC;IACJ;EACF;EAEA,IAAAU,uBAAY,EAACR,SAAS,CAAC;EACvB,OAAOA,SAAS;AAClB","ignoreList":[]}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SerialClient = void 0;
|
|
7
|
+
exports.createSerialClient = createSerialClient;
|
|
8
|
+
var _simulatedDevice = require("./simulated-device");
|
|
9
|
+
/**
|
|
10
|
+
* A fluent request/response client over a {@link SerialPort} — the host-side
|
|
11
|
+
* driver every serial test otherwise hand-rolls (reader + writer, a pending
|
|
12
|
+
* byte buffer, framed reads with timeouts). Works on ANY SerialPort: the
|
|
13
|
+
* in-memory {@link InMemorySerialTransport}, a real USB device, or a
|
|
14
|
+
* WebSocket-backed one — so the same test runs in Jest and on a device.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const {client} = await mountDeviceFixture(new MyDevice());
|
|
18
|
+
* await client.open({baudRate: 115200});
|
|
19
|
+
* await client.write('PING\n');
|
|
20
|
+
* expect(await client.readLine()).toBe('PONG');
|
|
21
|
+
* await client.close();
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
function indexOfSubsequence(haystack, needle) {
|
|
25
|
+
if (needle.length === 0) return 0;
|
|
26
|
+
outer: for (let i = 0; i + needle.length <= haystack.length; i++) {
|
|
27
|
+
for (let j = 0; j < needle.length; j++) {
|
|
28
|
+
if (haystack[i + j] !== needle[j]) continue outer;
|
|
29
|
+
}
|
|
30
|
+
return i;
|
|
31
|
+
}
|
|
32
|
+
return -1;
|
|
33
|
+
}
|
|
34
|
+
class SerialClient {
|
|
35
|
+
#port;
|
|
36
|
+
#defaultTimeout;
|
|
37
|
+
#reader = null;
|
|
38
|
+
#writer = null;
|
|
39
|
+
#open = false;
|
|
40
|
+
#done = false;
|
|
41
|
+
#closed = false;
|
|
42
|
+
/** Inbound bytes read by the pump but not yet consumed. */
|
|
43
|
+
#pending = [];
|
|
44
|
+
/** Resolvers woken whenever #pending grows or the stream ends. */
|
|
45
|
+
#waiters = [];
|
|
46
|
+
constructor(port, options = {}) {
|
|
47
|
+
this.#port = port;
|
|
48
|
+
this.#defaultTimeout = options.defaultTimeoutMs ?? 2000;
|
|
49
|
+
}
|
|
50
|
+
get port() {
|
|
51
|
+
return this.#port;
|
|
52
|
+
}
|
|
53
|
+
get isOpen() {
|
|
54
|
+
return this.#open;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** True once the underlying stream has ended (device closed or lost). */
|
|
58
|
+
get ended() {
|
|
59
|
+
return this.#done;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Open the port (idempotent) and acquire reader + writer; start reading. */
|
|
63
|
+
async open(options = {
|
|
64
|
+
baudRate: 115200
|
|
65
|
+
}) {
|
|
66
|
+
if (this.#open) return this;
|
|
67
|
+
await this.#port.open(options);
|
|
68
|
+
this.#reader = this.#port.readable.getReader();
|
|
69
|
+
this.#writer = this.#port.writable.getWriter();
|
|
70
|
+
this.#open = true;
|
|
71
|
+
this.#done = false;
|
|
72
|
+
this.#closed = false;
|
|
73
|
+
void this.#pump();
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Background reader: drains the stream into #pending and wakes waiters. */
|
|
78
|
+
async #pump() {
|
|
79
|
+
const reader = this.#reader;
|
|
80
|
+
/* istanbul ignore next */
|
|
81
|
+
if (!reader) return;
|
|
82
|
+
try {
|
|
83
|
+
while (!this.#closed) {
|
|
84
|
+
const {
|
|
85
|
+
done,
|
|
86
|
+
value
|
|
87
|
+
} = await reader.read();
|
|
88
|
+
if (done) break;
|
|
89
|
+
/* istanbul ignore else — InMemorySerialTransport never emits empty chunks */
|
|
90
|
+
if (value && value.length > 0) {
|
|
91
|
+
for (let i = 0; i < value.length; i++) this.#pending.push(value[i]);
|
|
92
|
+
this.#wake();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
} catch {
|
|
96
|
+
// read errored (e.g. device lost) — surface as end-of-stream to waiters
|
|
97
|
+
} finally {
|
|
98
|
+
this.#done = true;
|
|
99
|
+
this.#wake();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
#wake() {
|
|
103
|
+
const waiters = this.#waiters;
|
|
104
|
+
this.#waiters = [];
|
|
105
|
+
for (const w of waiters) w();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Resolve on the next #pending change / stream end, or reject after `ms`. */
|
|
109
|
+
#waitForChange(ms) {
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
const timer = setTimeout(() => {
|
|
112
|
+
this.#waiters = this.#waiters.filter(w => w !== waiter);
|
|
113
|
+
reject(new Error('read timeout'));
|
|
114
|
+
}, ms);
|
|
115
|
+
const waiter = () => {
|
|
116
|
+
clearTimeout(timer);
|
|
117
|
+
resolve();
|
|
118
|
+
};
|
|
119
|
+
this.#waiters.push(waiter);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Block until `ready(buffer)` returns a non-negative count of bytes to
|
|
125
|
+
* consume, then splice and return them. Rejects with `label` on timeout.
|
|
126
|
+
*/
|
|
127
|
+
async #consume(ready, timeoutMs, label) {
|
|
128
|
+
const deadline = Date.now() + timeoutMs;
|
|
129
|
+
while (true) {
|
|
130
|
+
const take = ready(this.#pending);
|
|
131
|
+
if (take !== false) {
|
|
132
|
+
return Uint8Array.from(this.#pending.splice(0, take));
|
|
133
|
+
}
|
|
134
|
+
if (this.#done) {
|
|
135
|
+
if (this.#pending.length > 0) {
|
|
136
|
+
// Return whatever is buffered rather than hang on a closed stream.
|
|
137
|
+
return Uint8Array.from(this.#pending.splice(0, this.#pending.length));
|
|
138
|
+
}
|
|
139
|
+
// The transport can surface end-of-stream before the final queued data
|
|
140
|
+
// event has been pumped into #pending. Give that last turn a chance to
|
|
141
|
+
// land before we conclude there is nothing buffered.
|
|
142
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
143
|
+
/* istanbul ignore next -- race-guard checks again after yielding */
|
|
144
|
+
if (this.#pending.length === 0) {
|
|
145
|
+
return Uint8Array.from([]);
|
|
146
|
+
}
|
|
147
|
+
/* istanbul ignore next -- race-guard re-enters the loop after yielding */
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
const remaining = deadline - Date.now();
|
|
151
|
+
if (remaining <= 0) throw new Error(label());
|
|
152
|
+
try {
|
|
153
|
+
await this.#waitForChange(remaining);
|
|
154
|
+
} catch {
|
|
155
|
+
throw new Error(label());
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/** Write bytes (string → char codes & 0xff). */
|
|
161
|
+
async write(data) {
|
|
162
|
+
if (!this.#writer) throw new Error('SerialClient is not open.');
|
|
163
|
+
await this.#writer.write(Uint8Array.from((0, _simulatedDevice.toBytes)(data)));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/** Read exactly `n` bytes (fewer only if the stream ends first). */
|
|
167
|
+
readBytes(n, options = {}) {
|
|
168
|
+
const timeout = options.timeout ?? this.#defaultTimeout;
|
|
169
|
+
return this.#consume(buf => buf.length >= n ? n : false, timeout, () => `timed out reading ${n} bytes (got ${this.#pending.length})`);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** Read up to and including `delimiter`; returns the slice (incl. delimiter). */
|
|
173
|
+
readUntil(delimiter, options = {}) {
|
|
174
|
+
const needle = (0, _simulatedDevice.toBytes)(delimiter);
|
|
175
|
+
const timeout = options.timeout ?? this.#defaultTimeout;
|
|
176
|
+
return this.#consume(buf => {
|
|
177
|
+
const idx = indexOfSubsequence(buf, needle);
|
|
178
|
+
return idx < 0 ? false : idx + needle.length;
|
|
179
|
+
}, timeout, () => `timed out reading until delimiter`);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/** Read one `\n`-terminated line as text (trailing CR/LF stripped). */
|
|
183
|
+
async readLine(options = {}) {
|
|
184
|
+
const bytes = await this.readUntil('\n', options);
|
|
185
|
+
let end = bytes.length;
|
|
186
|
+
if (end > 0 && bytes[end - 1] === 0x0a) end--;
|
|
187
|
+
if (end > 0 && bytes[end - 1] === 0x0d) end--;
|
|
188
|
+
return String.fromCharCode(...bytes.subarray(0, end));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Frame a message: `predicate(buffer)` returns the number of leading bytes the
|
|
193
|
+
* next frame occupies (consumed and returned), or `false` to wait for more.
|
|
194
|
+
*/
|
|
195
|
+
readMatching(predicate, options = {}) {
|
|
196
|
+
const timeout = options.timeout ?? this.#defaultTimeout;
|
|
197
|
+
return this.#consume(buf => predicate(Uint8Array.from(buf)), timeout, () => `timed out waiting for a frame`);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Resolve with the next chunk of buffered inbound bytes (one or more), or an
|
|
202
|
+
* empty array once the stream has ended. Rejects on timeout. Use this to layer
|
|
203
|
+
* your own framing/decoder (SLIP, COBS, length-prefix, …) on the byte stream;
|
|
204
|
+
* pair it with {@link ended} to stop when the device goes away.
|
|
205
|
+
*/
|
|
206
|
+
readAvailable(options = {}) {
|
|
207
|
+
const timeout = options.timeout ?? this.#defaultTimeout;
|
|
208
|
+
return this.#consume(buf => buf.length > 0 ? buf.length : false, timeout, () => `timed out waiting for data`);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** Assert no inbound bytes arrive for `ms`. Rejects if any do. */
|
|
212
|
+
async expectIdle(ms) {
|
|
213
|
+
if (this.#pending.length > 0) {
|
|
214
|
+
throw new Error(`expected no inbound data but ${this.#pending.length} byte(s) were already buffered`);
|
|
215
|
+
}
|
|
216
|
+
try {
|
|
217
|
+
await this.#waitForChange(ms);
|
|
218
|
+
} catch {
|
|
219
|
+
return; // no change within the window — idle, as expected
|
|
220
|
+
}
|
|
221
|
+
if (this.#pending.length > 0) {
|
|
222
|
+
throw new Error(`expected no inbound data for ${ms}ms but received ${this.#pending.length} byte(s)`);
|
|
223
|
+
}
|
|
224
|
+
// stream ended with no data — also idle
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/** Drop any buffered-but-unread inbound bytes. */
|
|
228
|
+
drain() {
|
|
229
|
+
this.#pending.length = 0;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/** Release reader + writer locks and close the port. Safe to call twice. */
|
|
233
|
+
async close() {
|
|
234
|
+
if (this.#closed) return;
|
|
235
|
+
this.#closed = true;
|
|
236
|
+
this.#wake();
|
|
237
|
+
if (this.#reader) {
|
|
238
|
+
try {
|
|
239
|
+
await this.#reader.cancel();
|
|
240
|
+
} catch {
|
|
241
|
+
// ignore
|
|
242
|
+
}
|
|
243
|
+
try {
|
|
244
|
+
this.#reader.releaseLock();
|
|
245
|
+
} catch {
|
|
246
|
+
// already released
|
|
247
|
+
}
|
|
248
|
+
this.#reader = null;
|
|
249
|
+
}
|
|
250
|
+
if (this.#writer) {
|
|
251
|
+
try {
|
|
252
|
+
await this.#writer.close();
|
|
253
|
+
} catch {
|
|
254
|
+
// ignore
|
|
255
|
+
}
|
|
256
|
+
try {
|
|
257
|
+
this.#writer.releaseLock();
|
|
258
|
+
} catch {
|
|
259
|
+
// already released
|
|
260
|
+
}
|
|
261
|
+
this.#writer = null;
|
|
262
|
+
}
|
|
263
|
+
this.#open = false;
|
|
264
|
+
try {
|
|
265
|
+
await this.#port.close();
|
|
266
|
+
} catch {
|
|
267
|
+
// already closed
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** Create a {@link SerialClient} for any SerialPort (virtual, real, or WS). */
|
|
273
|
+
exports.SerialClient = SerialClient;
|
|
274
|
+
function createSerialClient(port, options) {
|
|
275
|
+
return new SerialClient(port, options);
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=serial-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_simulatedDevice","require","indexOfSubsequence","haystack","needle","length","outer","i","j","SerialClient","port","defaultTimeout","reader","writer","open","done","closed","pending","waiters","constructor","options","defaultTimeoutMs","isOpen","ended","baudRate","readable","getReader","writable","getWriter","pump","#pump","value","read","push","wake","#wake","w","waitForChange","#waitForChange","ms","Promise","resolve","reject","timer","setTimeout","filter","waiter","Error","clearTimeout","consume","#consume","ready","timeoutMs","label","deadline","Date","now","take","Uint8Array","from","splice","remaining","write","data","toBytes","readBytes","n","timeout","buf","readUntil","delimiter","idx","readLine","bytes","end","String","fromCharCode","subarray","readMatching","predicate","readAvailable","expectIdle","drain","close","cancel","releaseLock","exports","createSerialClient"],"sourceRoot":"../../../src","sources":["testing/serial-client.ts"],"mappings":"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","ignoreList":[]}
|