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
@@ -1 +1 @@
1
- {"version":3,"file":"UsbSerial.d.ts","sourceRoot":"","sources":["../../../src/UsbSerial.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UsbSerial.d.ts","sourceRoot":"","sources":["../../../src/UsbSerial.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAC;AAOrB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAEvD,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;;IAU7C,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAIhD,cAAc,CACZ,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,EAC9B,MAAM,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,MAAM,CAAC;IAIlB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD,IAAI,CACF,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAYhB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAIrD,KAAK,CACH,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,IAAI,CAAC;IAIhB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAYhB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC;IAMzB,wBAAwB,CACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC;IAOzB,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,IAAI,CAAC;IAIhB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAO1E,uBAAuB,CACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC;IAMzB,QAAQ,CACN,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC;IAIhB,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,OAAO,EAC1B,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC;IAShB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,YAAY;IAO1D,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,YAAY;IAO5D,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,YAAY;IAOhE,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,YAAY;CAMpE;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,IAAI,eAAe,CAM9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAEpE;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
@@ -1,6 +1,6 @@
1
- import { ReadableStream, WritableStream } from 'web-streams-polyfill';
2
1
  import { Event, EventTarget } from './lib/event-target';
3
- import type { UsbSerialModule } from './UsbSerial';
2
+ import { ReadableStreamImpl as ReadableStream, WritableStreamImpl as WritableStream } from './lib/web-streams';
3
+ import type { SerialTransport } from './transport';
4
4
  /**
5
5
  * @see https://wicg.github.io/serial/#dom-paritytype
6
6
  *
@@ -8,13 +8,13 @@ import type { UsbSerialModule } from './UsbSerial';
8
8
  * even - Data word plus parity bit has even parity.
9
9
  * odd - Data word plus parity bit has odd parity.
10
10
  */
11
- type ParityType = 'none' | 'even' | 'odd';
11
+ export type Parity = 'none' | 'even' | 'odd';
12
12
  /**
13
13
  * @see https://wicg.github.io/serial/#dom-flowcontroltype
14
14
  * none - No flow control is enabled.
15
15
  * hardware - Hardware flow control using the RTS and CTS signals is enabled.
16
16
  */
17
- type FlowControlType = 'none' | 'hardware';
17
+ type FlowControl = 'none' | 'hardware';
18
18
  /**
19
19
  * @see https://wicg.github.io/serial/#dom-serialoptions
20
20
  */
@@ -43,7 +43,7 @@ export type SerialOptions = {
43
43
  /**
44
44
  * The parity mode.
45
45
  */
46
- parity?: ParityType;
46
+ parity?: Parity;
47
47
  /**
48
48
  * A positive, non-zero value indicating the size of the read and write
49
49
  * buffers that should be created.
@@ -52,7 +52,7 @@ export type SerialOptions = {
52
52
  /**
53
53
  * The flow control mode.
54
54
  */
55
- flowControl?: FlowControlType;
55
+ flowControl?: FlowControl;
56
56
  };
57
57
  /**
58
58
  * @see https://wicg.github.io/serial/#dom-serialoutputsignals
@@ -149,7 +149,7 @@ export type SerialPortRequestOptions = {
149
149
  */
150
150
  export declare class SerialPort extends EventTarget {
151
151
  #private;
152
- constructor(usb: UsbSerialModule, deviceId: number, portNumber: number, usbVendorId: number, usbProductId: number);
152
+ constructor(usb: SerialTransport, deviceId: number, portNumber: number, usbVendorId: number, usbProductId: number);
153
153
  /**
154
154
  * @see https://wicg.github.io/serial/#dom-serialport-onconnect
155
155
  */
@@ -212,6 +212,15 @@ export declare class SerialPort extends EventTarget {
212
212
  */
213
213
  export declare class Serial extends EventTarget {
214
214
  #private;
215
+ /**
216
+ * @param transport Optional transport override. When provided, this `Serial`
217
+ * talks to it instead of the global native module — the transport override used by tests
218
+ * and the virtual serial device harness (`new Serial(new InMemorySerialTransport())`).
219
+ * Omit it for the normal native-backed instance; the singleton `serial`
220
+ * export is created this way and can still be redirected globally via
221
+ * `setUsbSerial()`.
222
+ */
223
+ constructor(transport?: SerialTransport);
215
224
  /**
216
225
  * Subscribing to "connect"/"disconnect" must wire up the native USB state
217
226
  * listeners, so a consumer can receive attach/detach/permission events
@@ -1 +1 @@
1
- {"version":3,"file":"WebSerial.d.ts","sourceRoot":"","sources":["../../../src/WebSerial.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebSerial.d.ts","sourceRoot":"","sources":["../../../src/WebSerial.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  export { default as serial } from './serial';
2
+ export type { SerialTransport } from './transport';
3
+ export { resetUsbSerial, setUsbSerial } from './UsbSerial';
2
4
  export type { SerialInputSignals, SerialOptions, SerialOutputSignals, SerialPortFilter, SerialPortInfo, SerialPortRequestOptions, } from './WebSerial';
3
5
  export { Serial, SerialPort } from './WebSerial';
4
6
  import * as UsbSerial from './UsbSerial';
5
- export { Event, EventTarget } from './lib/event-target';
7
+ export { EventImpl as Event, EventTargetImpl as EventTarget, } from './lib/event-target';
6
8
  export { UsbSerial };
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,UAAU,CAAC;AAC3C,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,aAAa,CAAC;AAK/C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAC,SAAS,EAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,UAAU,CAAC;AAC3C,YAAY,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,aAAa,CAAC;AACzD,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,SAAS,IAAI,KAAK,EAClB,eAAe,IAAI,WAAW,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,SAAS,EAAC,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * DOMException Polyfill
3
+ *
4
+ * Provides a spec-compliant DOMException implementation for environments
5
+ * where it is missing or incomplete (e.g. Node.js < 17, some older browsers).
6
+ *
7
+ * Spec: https://webidl.spec.whatwg.org/#idl-DOMException
8
+ */
9
+ declare const DOM_EXCEPTION_CODES: Record<string, number>;
10
+ declare const DOM_EXCEPTION_NAMES: Record<number, string>;
11
+ export interface DOMExceptionConstructor {
12
+ new (message?: string, name?: string): DOMException;
13
+ readonly prototype: DOMException;
14
+ readonly INDEX_SIZE_ERR: 1;
15
+ readonly DOMSTRING_SIZE_ERR: 2;
16
+ readonly HIERARCHY_REQUEST_ERR: 3;
17
+ readonly WRONG_DOCUMENT_ERR: 4;
18
+ readonly INVALID_CHARACTER_ERR: 5;
19
+ readonly NO_DATA_ALLOWED_ERR: 6;
20
+ readonly NO_MODIFICATION_ALLOWED_ERR: 7;
21
+ readonly NOT_FOUND_ERR: 8;
22
+ readonly NOT_SUPPORTED_ERR: 9;
23
+ readonly INUSE_ATTRIBUTE_ERR: 10;
24
+ readonly INVALID_STATE_ERR: 11;
25
+ readonly SYNTAX_ERR: 12;
26
+ readonly INVALID_MODIFICATION_ERR: 13;
27
+ readonly NAMESPACE_ERR: 14;
28
+ readonly INVALID_ACCESS_ERR: 15;
29
+ readonly VALIDATION_ERR: 16;
30
+ readonly TYPE_MISMATCH_ERR: 17;
31
+ readonly SECURITY_ERR: 18;
32
+ readonly NETWORK_ERR: 19;
33
+ readonly ABORT_ERR: 20;
34
+ readonly URL_MISMATCH_ERR: 21;
35
+ readonly QUOTA_EXCEEDED_ERR: 22;
36
+ readonly TIMEOUT_ERR: 23;
37
+ readonly INVALID_NODE_TYPE_ERR: 24;
38
+ readonly DATA_CLONE_ERR: 25;
39
+ }
40
+ declare class DOMExceptionPolyfill extends Error {
41
+ readonly code: number;
42
+ readonly name: string;
43
+ static readonly INDEX_SIZE_ERR: 1;
44
+ static readonly DOMSTRING_SIZE_ERR: 2;
45
+ static readonly HIERARCHY_REQUEST_ERR: 3;
46
+ static readonly WRONG_DOCUMENT_ERR: 4;
47
+ static readonly INVALID_CHARACTER_ERR: 5;
48
+ static readonly NO_DATA_ALLOWED_ERR: 6;
49
+ static readonly NO_MODIFICATION_ALLOWED_ERR: 7;
50
+ static readonly NOT_FOUND_ERR: 8;
51
+ static readonly NOT_SUPPORTED_ERR: 9;
52
+ static readonly INUSE_ATTRIBUTE_ERR: 10;
53
+ static readonly INVALID_STATE_ERR: 11;
54
+ static readonly SYNTAX_ERR: 12;
55
+ static readonly INVALID_MODIFICATION_ERR: 13;
56
+ static readonly NAMESPACE_ERR: 14;
57
+ static readonly INVALID_ACCESS_ERR: 15;
58
+ static readonly VALIDATION_ERR: 16;
59
+ static readonly TYPE_MISMATCH_ERR: 17;
60
+ static readonly SECURITY_ERR: 18;
61
+ static readonly NETWORK_ERR: 19;
62
+ static readonly ABORT_ERR: 20;
63
+ static readonly URL_MISMATCH_ERR: 21;
64
+ static readonly QUOTA_EXCEEDED_ERR: 22;
65
+ static readonly TIMEOUT_ERR: 23;
66
+ static readonly INVALID_NODE_TYPE_ERR: 24;
67
+ static readonly DATA_CLONE_ERR: 25;
68
+ constructor(message?: string, name?: string);
69
+ /** Mirror static constants on the prototype (spec §3.1.2) */
70
+ get INDEX_SIZE_ERR(): number;
71
+ get DOMSTRING_SIZE_ERR(): number;
72
+ get HIERARCHY_REQUEST_ERR(): number;
73
+ get WRONG_DOCUMENT_ERR(): number;
74
+ get INVALID_CHARACTER_ERR(): number;
75
+ get NO_DATA_ALLOWED_ERR(): number;
76
+ get NO_MODIFICATION_ALLOWED_ERR(): number;
77
+ get NOT_FOUND_ERR(): number;
78
+ get NOT_SUPPORTED_ERR(): number;
79
+ get INUSE_ATTRIBUTE_ERR(): number;
80
+ get INVALID_STATE_ERR(): number;
81
+ get SYNTAX_ERR(): number;
82
+ get INVALID_MODIFICATION_ERR(): number;
83
+ get NAMESPACE_ERR(): number;
84
+ get INVALID_ACCESS_ERR(): number;
85
+ get VALIDATION_ERR(): number;
86
+ get TYPE_MISMATCH_ERR(): number;
87
+ get SECURITY_ERR(): number;
88
+ get NETWORK_ERR(): number;
89
+ get ABORT_ERR(): number;
90
+ get URL_MISMATCH_ERR(): number;
91
+ get QUOTA_EXCEEDED_ERR(): number;
92
+ get TIMEOUT_ERR(): number;
93
+ get INVALID_NODE_TYPE_ERR(): number;
94
+ get DATA_CLONE_ERR(): number;
95
+ /** Canonical string representation */
96
+ toString(): string;
97
+ }
98
+ export declare const DOMExceptionImpl: DOMExceptionConstructor;
99
+ export { DOM_EXCEPTION_CODES, DOM_EXCEPTION_NAMES, DOMExceptionImpl as DOMException, DOMExceptionPolyfill, };
100
+ //# sourceMappingURL=dom-exception.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-exception.d.ts","sourceRoot":"","sources":["../../../../src/lib/dom-exception.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ export interface EventInit {
2
+ bubbles?: boolean;
3
+ cancelable?: boolean;
4
+ composed?: boolean;
5
+ }
6
+ export declare class Event {
7
+ readonly type: string;
8
+ readonly bubbles: boolean;
9
+ readonly cancelable: boolean;
10
+ readonly composed: boolean;
11
+ target: EventTarget | null;
12
+ currentTarget: EventTarget | null;
13
+ defaultPrevented: boolean;
14
+ cancelBubble: boolean;
15
+ _stopImmediatePropagationFlag: boolean;
16
+ readonly timeStamp: number;
17
+ readonly isTrusted: boolean;
18
+ static readonly NONE = 0;
19
+ static readonly CAPTURING_PHASE = 1;
20
+ static readonly AT_TARGET = 2;
21
+ static readonly BUBBLING_PHASE = 3;
22
+ readonly NONE = 0;
23
+ readonly CAPTURING_PHASE = 1;
24
+ readonly AT_TARGET = 2;
25
+ readonly BUBBLING_PHASE = 3;
26
+ eventPhase: number;
27
+ constructor(type: string, options?: EventInit);
28
+ preventDefault(): void;
29
+ stopPropagation(): void;
30
+ stopImmediatePropagation(): void;
31
+ composedPath(): EventTarget[];
32
+ initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
33
+ }
34
+ type EventListener = (event: Event) => void;
35
+ interface EventListenerObject {
36
+ handleEvent(event: Event): void;
37
+ }
38
+ type EventListenerOrEventListenerObject = EventListener | EventListenerObject;
39
+ type ListenerOptions = {
40
+ once?: boolean;
41
+ capture?: boolean;
42
+ passive?: boolean;
43
+ } | boolean | undefined;
44
+ /** Make events dispatched on `child` also bubble to `parent`'s listeners. */
45
+ export declare function setEventParent(child: EventTarget, parent: EventTarget): void;
46
+ export declare class EventTarget {
47
+ constructor();
48
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: ListenerOptions): void;
49
+ dispatchEvent(event: Event): boolean;
50
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, _options?: ListenerOptions): void;
51
+ }
52
+ export declare const EventImpl: typeof Event;
53
+ export declare const EventTargetImpl: typeof EventTarget;
54
+ export {};
55
+ //# sourceMappingURL=event-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-target.d.ts","sourceRoot":"","sources":["../../../../src/lib/event-target.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,KAAK;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAQ;IAClC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEzC,gBAAgB,EAAE,OAAO,CAAS;IAClC,YAAY,EAAE,OAAO,CAAS;IAC9B,6BAA6B,EAAE,OAAO,CAAS;IAE/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAc;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAS;IAEpC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK;IACzB,MAAM,CAAC,QAAQ,CAAC,eAAe,KAAK;IACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK;IAC9B,MAAM,CAAC,QAAQ,CAAC,cAAc,KAAK;IAEnC,QAAQ,CAAC,IAAI,KAAK;IAClB,QAAQ,CAAC,eAAe,KAAK;IAC7B,QAAQ,CAAC,SAAS,KAAK;IACvB,QAAQ,CAAC,cAAc,KAAK;IAE5B,UAAU,EAAE,MAAM,CAAc;gBAEpB,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;IAO7C,cAAc,IAAI,IAAI;IAMtB,eAAe,IAAI,IAAI;IAIvB,wBAAwB,IAAI,IAAI;IAKhC,YAAY,IAAI,WAAW,EAAE;IAI7B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI;CAKvE;AAID,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAE5C,UAAU,mBAAmB;IAC3B,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACjC;AAED,KAAK,kCAAkC,GAAG,aAAa,GAAG,mBAAmB,CAAC;AAE9E,KAAK,eAAe,GAChB;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAC,GACtD,OAAO,GACP,SAAS,CAAC;AAmBd,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAE5E;AAgCD,qBAAa,WAAW;;IAKtB,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,EAC5C,OAAO,CAAC,EAAE,eAAe,GACxB,IAAI;IAeP,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAoBpC,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,EAC5C,QAAQ,CAAC,EAAE,eAAe,GACzB,IAAI;CAYR;AAID,eAAO,MAAM,SAAS,cAGX,CAAC;AAEZ,eAAO,MAAM,eAAe,oBAGX,CAAC"}
@@ -0,0 +1,11 @@
1
+ type DeferredPromise<T> = {
2
+ promise: Promise<T>;
3
+ resolve: (value?: T) => void;
4
+ reject: (reason?: unknown) => void;
5
+ };
6
+ /**
7
+ * @returns An object containing a promise and its resolve/reject methods.
8
+ */
9
+ export declare function createDeferredPromise<T>(): DeferredPromise<T>;
10
+ export {};
11
+ //# sourceMappingURL=promise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/lib/promise.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,CAAC,CAAC,IAAI;IACxB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,CAS7D"}
@@ -0,0 +1,9 @@
1
+ import { ByteLengthQueuingStrategy as ByteLengthQueuingStrategyPolyfill, ReadableStream as ReadableStreamPolyfill, WritableStream as WritableStreamPolyfill } from 'web-streams-polyfill';
2
+ export { ByteLengthQueuingStrategyPolyfill, ReadableStreamPolyfill, WritableStreamPolyfill, };
3
+ export declare const ReadableStreamImpl: typeof ReadableStreamPolyfill;
4
+ export declare const WritableStreamImpl: typeof WritableStreamPolyfill;
5
+ export declare const ByteLengthQueuingStrategyImpl: typeof ByteLengthQueuingStrategyPolyfill;
6
+ export type ReadableStreamImpl<R = unknown> = ReadableStreamPolyfill<R>;
7
+ export type WritableStreamImpl<W = unknown> = WritableStreamPolyfill<W>;
8
+ export type ByteLengthQueuingStrategyImpl = ByteLengthQueuingStrategyPolyfill;
9
+ //# sourceMappingURL=web-streams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-streams.d.ts","sourceRoot":"","sources":["../../../../src/lib/web-streams.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,IAAI,iCAAiC,EAC9D,cAAc,IAAI,sBAAsB,EACxC,cAAc,IAAI,sBAAsB,EACzC,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EACL,iCAAiC,EACjC,sBAAsB,EACtB,sBAAsB,GACvB,CAAC;AAEF,eAAO,MAAM,kBAAkB,+BAG9B,CAAC;AAEF,eAAO,MAAM,kBAAkB,+BAG9B,CAAC;AAEF,eAAO,MAAM,6BAA6B,0CAGzC,CAAC;AAQF,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI,sBAAsB,CAAC,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,6BAA6B,GAAG,iCAAiC,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * `createDeviceFixture` — the one-call fixture for testing serial code. It wires a
3
+ * {@link SimulatedDevice} simulator to an {@link InMemorySerialTransport} + `Serial`,
4
+ * and hands back everything a test needs to drive *both* sides:
5
+ *
6
+ * - `serial`/`port` — what the app-under-test consumes,
7
+ * - `simulatedDevice` (typed) + `device` handle — drive the device (inject data,
8
+ * move the GPS, inject faults),
9
+ * - `client` — a host-side {@link SerialClient} (for protocol tests), and
10
+ * - `whenOpened()/whenClosed()` — `await` the app connecting.
11
+ *
12
+ * @example Test how your app reacts to a device event
13
+ * const {simulatedDevice, device, whenOpened} = await createDeviceFixture(new MyGps());
14
+ * renderMyApp(); // opens the port itself
15
+ * await whenOpened();
16
+ * simulatedDevice.update({latitude: 51.48, longitude: 0});
17
+ * // …assert your app's UI updated
18
+ */
19
+ import type { SerialPort } from '../WebSerial';
20
+ import { Serial } from '../WebSerial';
21
+ import type { DeviceOptions, InMemorySerialTransportOptions } from './in-memory-serial-transport';
22
+ import { type DeviceHandle, InMemorySerialTransport } from './in-memory-serial-transport';
23
+ import { SerialClient } from './serial-client';
24
+ import type { SimulatedDevice, SimulatedDeviceOpenOptions } from './simulated-device';
25
+ export type DeviceFixtureOptions = {
26
+ /** Per-device transport knobs (single-device form). */
27
+ device?: DeviceOptions;
28
+ /** Per-device transport knobs, by index (multi-device form). */
29
+ devices?: DeviceOptions[];
30
+ /** Transport-level options (latencyMs, chunkSize, autoGrantPermission). */
31
+ transport?: InMemorySerialTransportOptions;
32
+ /** Whether each device is already permitted. Defaults to true (so it lists). */
33
+ hasPermission?: boolean;
34
+ /** Also `setUsbSerial(transport)` so a running app's `serial` sees it. Default false. */
35
+ installGlobally?: boolean;
36
+ /** Options for the host-side {@link SerialClient}. */
37
+ client?: {
38
+ defaultTimeoutMs?: number;
39
+ };
40
+ };
41
+ export type MountedDeviceFixture<D extends SimulatedDevice = SimulatedDevice> = {
42
+ transport: InMemorySerialTransport;
43
+ serial: Serial;
44
+ port: SerialPort;
45
+ /** The transport-side handle: push/emitError/failNext/written/attach/detach/… */
46
+ device: DeviceHandle;
47
+ /** The concrete device simulator, typed (e.g. call `gps.update(...)`). */
48
+ simulatedDevice: D;
49
+ /** A host-side client bound to `port` — NOT opened (call `client.open()`). */
50
+ client: SerialClient;
51
+ /** Resolve when the app opens the port (now if already open). */
52
+ whenOpened(): Promise<SimulatedDeviceOpenOptions>;
53
+ /** Resolve when the app closes the port (now if not open). */
54
+ whenClosed(): Promise<void>;
55
+ };
56
+ export type MountedDeviceFixtures = {
57
+ transport: InMemorySerialTransport;
58
+ serial: Serial;
59
+ ports: SerialPort[];
60
+ devices: DeviceHandle[];
61
+ simulatedDevices: SimulatedDevice[];
62
+ clients: SerialClient[];
63
+ /** Resolve when device `index` opens, or any device when `index` is omitted. */
64
+ whenOpened(index?: number): Promise<SimulatedDeviceOpenOptions>;
65
+ /** Resolve when device `index` closes, or any device when `index` is omitted. */
66
+ whenClosed(index?: number): Promise<void>;
67
+ };
68
+ export declare function createDeviceFixture<D extends SimulatedDevice>(device: D, options?: DeviceFixtureOptions): Promise<MountedDeviceFixture<D>>;
69
+ export declare function createDeviceFixture(devices: SimulatedDevice[], options?: DeviceFixtureOptions): Promise<MountedDeviceFixtures>;
70
+ //# sourceMappingURL=device-fixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-fixture.d.ts","sourceRoot":"","sources":["../../../../src/testing/device-fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EACV,aAAa,EACb,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,KAAK,YAAY,EACjB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,oBAAoB,GAAG;IACjC,uDAAuD;IACvD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gEAAgE;IAChE,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,2EAA2E;IAC3E,SAAS,CAAC,EAAE,8BAA8B,CAAC;IAC3C,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yFAAyF;IACzF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sDAAsD;IACtD,MAAM,CAAC,EAAE;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAC1E;IACE,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,iFAAiF;IACjF,MAAM,EAAE,YAAY,CAAC;IACrB,0EAA0E;IAC1E,eAAe,EAAE,CAAC,CAAC;IACnB,8EAA8E;IAC9E,MAAM,EAAE,YAAY,CAAC;IACrB,iEAAiE;IACjE,UAAU,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClD,8DAA8D;IAC9D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B,CAAC;AAEJ,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,gFAAgF;IAChF,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAChE,iFAAiF;IACjF,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAC3D,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * `exposeSimulatedDevice` — run a {@link SimulatedDevice} simulator behind a WebSocket
3
+ * server so a real app (on a device/emulator) can connect to it with
4
+ * `new Serial(new WebSocketSerialTransport(url))` and drive the *same* simulated
5
+ * peripheral your Jest tests drive. The test process keeps the
6
+ * {@link DeviceHandle} handle, so it can inject frames / move the GPS and
7
+ * `await whenOpened()` for the app to connect — turning an in-memory device
8
+ * suite into an on-device E2E without changing the device code.
9
+ *
10
+ * `ws` is an *optional* dependency: it is loaded lazily (and only in Node), via
11
+ * an indirect require so app bundlers never pull it into a mobile bundle. Pass
12
+ * `options.WebSocketServer` to inject your own (e.g. `import {WebSocketServer}
13
+ * from 'ws'`) and skip the lazy load entirely.
14
+ *
15
+ * @example
16
+ * import {WebSocketServer} from 'ws';
17
+ * const ex = exposeSimulatedDevice(new WMBusGateway('iU891A-XL'), {
18
+ * port: 8090,
19
+ * WebSocketServer,
20
+ * });
21
+ * // …app connects to ex.url…
22
+ * await ex.whenOpened();
23
+ * ex.simulatedDevice.addMeter(meter);
24
+ * meter.sendTelegram(); // the app receives the 0x20 telegram event
25
+ * await ex.close();
26
+ */
27
+ import { type WsLike } from '../websocket';
28
+ import type { DeviceOptions } from './in-memory-serial-transport';
29
+ import { type DeviceHandle, InMemorySerialTransport } from './in-memory-serial-transport';
30
+ import type { SimulatedDevice, SimulatedDeviceOpenOptions } from './simulated-device';
31
+ /** The `ws` WebSocketServer surface this helper uses. */
32
+ export type WebSocketServerLike = {
33
+ on(event: 'connection', listener: (socket: WsLike) => void): void;
34
+ close(cb?: () => void): void;
35
+ };
36
+ /** A `ws`-compatible `WebSocketServer` constructor. */
37
+ export type WebSocketServerCtor = new (options: {
38
+ port: number;
39
+ host?: string;
40
+ }) => WebSocketServerLike;
41
+ export type ExposeSimulatedDeviceOptions = {
42
+ /** TCP port for the WebSocket server. */
43
+ port: number;
44
+ /** Listen address. Defaults to `localhost`. Use `0.0.0.0` for an emulator. */
45
+ host?: string;
46
+ /** Inject a `ws`-compatible `WebSocketServer` (skips the lazy `require('ws')`). */
47
+ WebSocketServer?: WebSocketServerCtor;
48
+ /** Forward device→client data before the app sends startReading. Default true. */
49
+ readingByDefault?: boolean;
50
+ /** Diagnostics logger. */
51
+ log?: (message: string) => void;
52
+ /** Transport-side device options (hasPermission defaults to true). */
53
+ device?: DeviceOptions;
54
+ };
55
+ export type ExposedDevice<D extends SimulatedDevice = SimulatedDevice> = {
56
+ /** The URL the app connects to, e.g. `ws://localhost:8090`. */
57
+ url: string;
58
+ transport: InMemorySerialTransport;
59
+ /** The transport-side handle: push/emitError/whenOpened/whenClosed/… */
60
+ device: DeviceHandle;
61
+ /** The concrete device simulator, typed (drive it from the test). */
62
+ simulatedDevice: D;
63
+ /** Resolve when the app opens the port (now if already open). */
64
+ whenOpened(): Promise<SimulatedDeviceOpenOptions>;
65
+ /** Resolve when the app closes the port (now if not open). */
66
+ whenClosed(): Promise<void>;
67
+ /** Stop the WebSocket server. */
68
+ close(): Promise<void>;
69
+ };
70
+ export declare function exposeSimulatedDevice<D extends SimulatedDevice>(simulatedDevice: D, options: ExposeSimulatedDeviceOptions): ExposedDevice<D>;
71
+ //# sourceMappingURL=expose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expose.d.ts","sourceRoot":"","sources":["../../../../src/testing/expose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAIL,KAAK,MAAM,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,KAAK,YAAY,EACjB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAE5B,yDAAyD;AACzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAClE,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,KAAK,OAAO,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,KAAK,mBAAmB,CAAC;AAE1B,MAAM,MAAM,4BAA4B,GAAG;IACzC,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0BAA0B;IAC1B,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,sEAAsE;IACtE,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IAAI;IACvE,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,uBAAuB,CAAC;IACnC,wEAAwE;IACxE,MAAM,EAAE,YAAY,CAAC;IACrB,qEAAqE;IACrE,eAAe,EAAE,CAAC,CAAC;IACnB,iEAAiE;IACjE,UAAU,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClD,8DAA8D;IAC9D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,iCAAiC;IACjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AA+BF,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,eAAe,EAC7D,eAAe,EAAE,CAAC,EAClB,OAAO,EAAE,4BAA4B,GACpC,aAAa,CAAC,CAAC,CAAC,CA4BlB"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Tiny, dependency-free test helpers for driving serial devices — shared by the
3
+ * library's own conformance suite, the {@link SerialClient}, and consumers' app
4
+ * tests. Free of `jest` and `react-native`, so they run under any test runner
5
+ * and on a real device (e.g. an on-device Self-Test screen).
6
+ */
7
+ /** Throw `message` if `condition` is falsy. */
8
+ export declare function assert(condition: unknown, message: string): asserts condition;
9
+ /** Throw if `actual !== expected`, including both values in the message. */
10
+ export declare function assertEqual<T>(actual: T, expected: T, message: string): void;
11
+ /** Byte-for-byte equality of two sequences. */
12
+ export declare function bytesEqual(a: ArrayLike<number>, b: ArrayLike<number>): boolean;
13
+ /** What {@link assertRejects} may additionally check about the thrown error. */
14
+ export type RejectionExpectation = {
15
+ name?: string;
16
+ type?: new (...args: never[]) => Error;
17
+ message?: string | RegExp;
18
+ };
19
+ /** Assert `fn()` rejects (optionally matching the error name/type/message). */
20
+ export declare function assertRejects(fn: () => Promise<unknown>, message: string, expected?: RejectionExpectation): Promise<void>;
21
+ /** Normalise any thrown value into a `"Name: message"` string. */
22
+ export declare function errorMessage(e: unknown): string;
23
+ /** Reject if `promise` doesn't settle within `ms`; `label` names it on timeout. */
24
+ export declare function withTimeout<T>(promise: Promise<T>, ms: number, label: string): Promise<T>;
25
+ /** The slice of `ReadableStreamDefaultReader` the helpers need. */
26
+ export type ByteReader = {
27
+ read(): Promise<{
28
+ done: boolean;
29
+ value?: Uint8Array;
30
+ }>;
31
+ };
32
+ /** Read exactly `count` bytes from a reader (accumulating chunks), with a timeout. */
33
+ export declare function readBytes(reader: ByteReader, count: number, timeoutMs?: number): Promise<number[]>;
34
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../../src/testing/harness.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+CAA+C;AAC/C,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAE7E;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAM5E;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CACxB,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EACpB,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GACnB,OAAO,CAIT;AAED,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B,CAAC;AAEF,+EAA+E;AAC/E,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAE/C;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,CAAC,EAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,IAAI,OAAO,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAA;KAAC,CAAC,CAAC;CACtD,CAAC;AAEF,sFAAsF;AACtF,wBAAsB,SAAS,CAC7B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,SAAO,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB"}