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.
Files changed (177) hide show
  1. package/README.md +198 -104
  2. package/TESTING.md +542 -0
  3. package/android/build.gradle +16 -2
  4. package/android/src/main/java/dev/webserialapi/NativeUsbSerialModule.java +74 -11
  5. package/android/src/main/java/dev/webserialapi/PortPickerActivity.java +61 -59
  6. package/bin/expose-serial.js +205 -0
  7. package/lib/commonjs/UsbSerial.js +58 -26
  8. package/lib/commonjs/UsbSerial.js.map +1 -1
  9. package/lib/commonjs/WebSerial.js +273 -77
  10. package/lib/commonjs/WebSerial.js.map +1 -1
  11. package/lib/commonjs/index.js +15 -3
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/commonjs/lib/dom-exception.js +176 -0
  14. package/lib/commonjs/lib/dom-exception.js.map +1 -0
  15. package/lib/commonjs/lib/event-target.js +140 -0
  16. package/lib/commonjs/lib/event-target.js.map +1 -0
  17. package/lib/commonjs/lib/promise.js +23 -0
  18. package/lib/commonjs/lib/promise.js.map +1 -0
  19. package/lib/commonjs/lib/web-streams.js +42 -0
  20. package/lib/commonjs/lib/web-streams.js.map +1 -0
  21. package/lib/commonjs/testing/device-fixture.js +70 -0
  22. package/lib/commonjs/testing/device-fixture.js.map +1 -0
  23. package/lib/commonjs/testing/expose.js +91 -0
  24. package/lib/commonjs/testing/expose.js.map +1 -0
  25. package/lib/commonjs/testing/harness.js +98 -0
  26. package/lib/commonjs/testing/harness.js.map +1 -0
  27. package/lib/commonjs/testing/in-memory-serial-transport.js +653 -0
  28. package/lib/commonjs/testing/in-memory-serial-transport.js.map +1 -0
  29. package/lib/commonjs/testing/index.js +153 -0
  30. package/lib/commonjs/testing/index.js.map +1 -0
  31. package/lib/commonjs/testing/install-in-memory-serial-transport.js +54 -0
  32. package/lib/commonjs/testing/install-in-memory-serial-transport.js.map +1 -0
  33. package/lib/commonjs/testing/serial-client.js +277 -0
  34. package/lib/commonjs/testing/serial-client.js.map +1 -0
  35. package/lib/commonjs/testing/simulated-device.js +164 -0
  36. package/lib/commonjs/testing/simulated-device.js.map +1 -0
  37. package/lib/commonjs/testing/test-suite.js +142 -0
  38. package/lib/commonjs/testing/test-suite.js.map +1 -0
  39. package/lib/commonjs/transport.js +61 -0
  40. package/lib/commonjs/transport.js.map +1 -0
  41. package/lib/commonjs/websocket/WebSocketSerialTransport.js +659 -0
  42. package/lib/commonjs/websocket/WebSocketSerialTransport.js.map +1 -0
  43. package/lib/commonjs/websocket/bridge.js +234 -0
  44. package/lib/commonjs/websocket/bridge.js.map +1 -0
  45. package/lib/commonjs/websocket/index.js +33 -0
  46. package/lib/commonjs/websocket/index.js.map +1 -0
  47. package/lib/commonjs/websocket/protocol.js +55 -0
  48. package/lib/commonjs/websocket/protocol.js.map +1 -0
  49. package/lib/commonjs/websocket/serial-device-bridge.js +130 -0
  50. package/lib/commonjs/websocket/serial-device-bridge.js.map +1 -0
  51. package/lib/typescript/src/UsbSerial.d.ts +24 -67
  52. package/lib/typescript/src/UsbSerial.d.ts.map +1 -1
  53. package/lib/typescript/src/WebSerial.d.ts +16 -7
  54. package/lib/typescript/src/WebSerial.d.ts.map +1 -1
  55. package/lib/typescript/src/index.d.ts +3 -1
  56. package/lib/typescript/src/index.d.ts.map +1 -1
  57. package/lib/typescript/src/lib/dom-exception.d.ts +100 -0
  58. package/lib/typescript/src/lib/dom-exception.d.ts.map +1 -0
  59. package/lib/typescript/src/lib/event-target.d.ts +55 -0
  60. package/lib/typescript/src/lib/event-target.d.ts.map +1 -0
  61. package/lib/typescript/src/lib/promise.d.ts +11 -0
  62. package/lib/typescript/src/lib/promise.d.ts.map +1 -0
  63. package/lib/typescript/src/lib/web-streams.d.ts +9 -0
  64. package/lib/typescript/src/lib/web-streams.d.ts.map +1 -0
  65. package/lib/typescript/src/testing/device-fixture.d.ts +70 -0
  66. package/lib/typescript/src/testing/device-fixture.d.ts.map +1 -0
  67. package/lib/typescript/src/testing/expose.d.ts +71 -0
  68. package/lib/typescript/src/testing/expose.d.ts.map +1 -0
  69. package/lib/typescript/src/testing/harness.d.ts +34 -0
  70. package/lib/typescript/src/testing/harness.d.ts.map +1 -0
  71. package/lib/typescript/src/testing/in-memory-serial-transport.d.ts +216 -0
  72. package/lib/typescript/src/testing/in-memory-serial-transport.d.ts.map +1 -0
  73. package/lib/typescript/src/testing/index.d.ts +33 -0
  74. package/lib/typescript/src/testing/index.d.ts.map +1 -0
  75. package/lib/typescript/src/testing/install-in-memory-serial-transport.d.ts +25 -0
  76. package/lib/typescript/src/testing/install-in-memory-serial-transport.d.ts.map +1 -0
  77. package/lib/typescript/src/testing/serial-client.d.ts +62 -0
  78. package/lib/typescript/src/testing/serial-client.d.ts.map +1 -0
  79. package/lib/typescript/src/testing/simulated-device.d.ts +127 -0
  80. package/lib/typescript/src/testing/simulated-device.d.ts.map +1 -0
  81. package/lib/typescript/src/testing/test-suite.d.ts +75 -0
  82. package/lib/typescript/src/testing/test-suite.d.ts.map +1 -0
  83. package/lib/typescript/src/transport.d.ts +131 -0
  84. package/lib/typescript/src/transport.d.ts.map +1 -0
  85. package/lib/typescript/src/websocket/WebSocketSerialTransport.d.ts +111 -0
  86. package/lib/typescript/src/websocket/WebSocketSerialTransport.d.ts.map +1 -0
  87. package/lib/typescript/src/websocket/bridge.d.ts +66 -0
  88. package/lib/typescript/src/websocket/bridge.d.ts.map +1 -0
  89. package/lib/typescript/src/websocket/index.d.ts +19 -0
  90. package/lib/typescript/src/websocket/index.d.ts.map +1 -0
  91. package/lib/typescript/src/websocket/protocol.d.ts +64 -0
  92. package/lib/typescript/src/websocket/protocol.d.ts.map +1 -0
  93. package/lib/typescript/src/websocket/serial-device-bridge.d.ts +32 -0
  94. package/lib/typescript/src/websocket/serial-device-bridge.d.ts.map +1 -0
  95. package/package.json +57 -3
  96. package/src/UsbSerial.ts +65 -90
  97. package/src/WebSerial.ts +351 -113
  98. package/src/index.ts +6 -8
  99. package/src/lib/dom-exception.ts +129 -60
  100. package/src/lib/event-target.ts +58 -21
  101. package/src/lib/promise.ts +7 -7
  102. package/src/lib/web-streams.ts +43 -0
  103. package/src/testing/device-fixture.ts +150 -0
  104. package/src/testing/expose.ts +147 -0
  105. package/src/testing/harness.ts +124 -0
  106. package/src/testing/in-memory-serial-transport.ts +840 -0
  107. package/src/testing/index.ts +90 -0
  108. package/src/testing/install-in-memory-serial-transport.ts +65 -0
  109. package/src/testing/serial-client.ts +313 -0
  110. package/src/testing/simulated-device.ts +193 -0
  111. package/src/testing/test-suite.ts +186 -0
  112. package/src/transport.ts +200 -0
  113. package/src/websocket/WebSocketSerialTransport.ts +796 -0
  114. package/src/websocket/bridge.ts +299 -0
  115. package/src/websocket/index.ts +38 -0
  116. package/src/websocket/protocol.ts +101 -0
  117. package/src/websocket/serial-device-bridge.ts +160 -0
  118. package/babel.config.js +0 -3
  119. package/biome.json +0 -35
  120. package/example/.watchmanconfig +0 -1
  121. package/example/App.tsx +0 -71
  122. package/example/__tests__/App.test.tsx +0 -16
  123. package/example/__tests__/connectEvents.test.tsx +0 -81
  124. package/example/__tests__/getPorts.test.tsx +0 -140
  125. package/example/android/app/build.gradle +0 -120
  126. package/example/android/app/debug.keystore +0 -0
  127. package/example/android/app/proguard-rules.pro +0 -10
  128. package/example/android/app/src/debug/AndroidManifest.xml +0 -9
  129. package/example/android/app/src/main/AndroidManifest.xml +0 -38
  130. package/example/android/app/src/main/java/dev/uzlopak/MainActivity.kt +0 -22
  131. package/example/android/app/src/main/java/dev/uzlopak/MainApplication.kt +0 -41
  132. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +0 -37
  133. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  134. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  135. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  136. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  137. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  138. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  139. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  140. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  141. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  142. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  143. package/example/android/app/src/main/res/values/strings.xml +0 -3
  144. package/example/android/app/src/main/res/values/styles.xml +0 -9
  145. package/example/android/build.gradle +0 -22
  146. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  147. package/example/android/gradle/wrapper/gradle-wrapper.properties +0 -7
  148. package/example/android/gradle.properties +0 -47
  149. package/example/android/gradlew +0 -252
  150. package/example/android/gradlew.bat +0 -94
  151. package/example/android/settings.gradle +0 -6
  152. package/example/app.json +0 -4
  153. package/example/babel.config.js +0 -21
  154. package/example/biome.json +0 -47
  155. package/example/deploy.sh +0 -11
  156. package/example/index.html +0 -26
  157. package/example/index.js +0 -9
  158. package/example/index.web.js +0 -8
  159. package/example/jest.config.js +0 -12
  160. package/example/metro.config.js +0 -58
  161. package/example/package-lock.json +0 -14510
  162. package/example/package.json +0 -48
  163. package/example/react-native.config.js +0 -17
  164. package/example/src/components/AppBar.tsx +0 -73
  165. package/example/src/components/Menu.tsx +0 -90
  166. package/example/src/components/SingleChoiceDialog.tsx +0 -120
  167. package/example/src/screens/ConnectScreen.tsx +0 -195
  168. package/example/src/screens/DevicesScreen.tsx +0 -252
  169. package/example/src/screens/TerminalScreen.tsx +0 -572
  170. package/example/src/settings.ts +0 -43
  171. package/example/src/theme.ts +0 -19
  172. package/example/src/util/TextUtil.ts +0 -129
  173. package/example/tsconfig.json +0 -10
  174. package/example/vite.config.mjs +0 -55
  175. package/scripts/deploy-release.sh +0 -127
  176. package/tsconfig.build.json +0 -7
  177. 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":[]}