@microbit/microbit-connection 0.9.0-apps.alpha.16 → 0.9.0-apps.alpha.18

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 (457) hide show
  1. package/build/cjs/async-util.d.ts +3 -1
  2. package/build/cjs/async-util.js +5 -1
  3. package/build/cjs/async-util.js.map +1 -1
  4. package/build/cjs/bluetooth/ble-error.d.ts +10 -0
  5. package/build/cjs/bluetooth/ble-error.js +47 -0
  6. package/build/cjs/bluetooth/ble-error.js.map +1 -0
  7. package/build/cjs/bluetooth/connection.d.ts +137 -0
  8. package/build/cjs/{bluetooth.js → bluetooth/connection.js} +158 -106
  9. package/build/cjs/bluetooth/connection.js.map +1 -0
  10. package/build/cjs/{bluetooth.test.js → bluetooth/connection.test.js} +9 -9
  11. package/build/cjs/bluetooth/connection.test.js.map +1 -0
  12. package/build/cjs/bluetooth/device-bond-state.js.map +1 -0
  13. package/build/cjs/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +11 -11
  14. package/build/cjs/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +38 -42
  15. package/build/cjs/bluetooth/device-wrapper.js.map +1 -0
  16. package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.d.ts +2 -2
  17. package/build/cjs/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
  18. package/build/cjs/bluetooth/flashing/flashing-full.js.map +1 -0
  19. package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.d.ts +1 -1
  20. package/build/cjs/bluetooth/flashing/flashing-makecode.js.map +1 -0
  21. package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.test.js +3 -3
  22. package/build/cjs/bluetooth/flashing/flashing-makecode.test.js.map +1 -0
  23. package/build/cjs/{flashing → bluetooth/flashing}/flashing-partial.d.ts +2 -2
  24. package/build/cjs/{flashing → bluetooth/flashing}/flashing-partial.js +7 -6
  25. package/build/cjs/bluetooth/flashing/flashing-partial.js.map +1 -0
  26. package/build/cjs/bluetooth/flashing/flashing-v1.js.map +1 -0
  27. package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
  28. package/build/cjs/{flashing → bluetooth/flashing}/nordic-dfu.js +15 -11
  29. package/build/cjs/bluetooth/flashing/nordic-dfu.js.map +1 -0
  30. package/build/cjs/bluetooth/flashing/zip.js.map +1 -0
  31. package/build/cjs/bluetooth/flashing/zip.test.js.map +1 -0
  32. package/build/cjs/bluetooth/index.d.ts +5 -0
  33. package/build/cjs/bluetooth/index.js +9 -0
  34. package/build/cjs/bluetooth/index.js.map +1 -0
  35. package/build/cjs/{bluetooth-profile.js → bluetooth/profile.js} +1 -1
  36. package/build/cjs/bluetooth/profile.js.map +1 -0
  37. package/build/cjs/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
  38. package/build/cjs/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +17 -12
  39. package/build/cjs/bluetooth/services/accelerometer-service.js.map +1 -0
  40. package/build/{esm → cjs/bluetooth/services}/button-service.d.ts +2 -3
  41. package/build/cjs/{button-service.js → bluetooth/services/button-service.js} +24 -14
  42. package/build/cjs/bluetooth/services/button-service.js.map +1 -0
  43. package/build/{esm → cjs/bluetooth/services}/device-information-service.d.ts +1 -1
  44. package/build/cjs/bluetooth/services/device-information-service.js +29 -0
  45. package/build/cjs/bluetooth/services/device-information-service.js.map +1 -0
  46. package/build/cjs/{dfu-service.js → bluetooth/services/dfu-service.js} +2 -2
  47. package/build/cjs/bluetooth/services/dfu-service.js.map +1 -0
  48. package/build/{esm → cjs/bluetooth/services}/led-service.d.ts +2 -3
  49. package/build/cjs/{led-service.js → bluetooth/services/led-service.js} +10 -7
  50. package/build/cjs/bluetooth/services/led-service.js.map +1 -0
  51. package/build/cjs/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
  52. package/build/cjs/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +19 -14
  53. package/build/cjs/bluetooth/services/magnetometer-service.js.map +1 -0
  54. package/build/{esm → cjs/bluetooth/services}/partial-flashing-service.d.ts +1 -1
  55. package/build/cjs/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +8 -8
  56. package/build/cjs/bluetooth/services/partial-flashing-service.js.map +1 -0
  57. package/build/cjs/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
  58. package/build/cjs/{uart-service.js → bluetooth/services/uart-service.js} +21 -9
  59. package/build/cjs/bluetooth/services/uart-service.js.map +1 -0
  60. package/build/cjs/board-id.d.ts +1 -1
  61. package/build/cjs/board-id.js.map +1 -1
  62. package/build/cjs/device.d.ts +145 -123
  63. package/build/cjs/device.js +47 -128
  64. package/build/cjs/device.js.map +1 -1
  65. package/build/cjs/events.d.ts +8 -108
  66. package/build/cjs/events.js +27 -88
  67. package/build/cjs/events.js.map +1 -1
  68. package/build/cjs/events.test.js +54 -48
  69. package/build/cjs/events.test.js.map +1 -1
  70. package/build/cjs/hex-util.d.ts +1 -0
  71. package/build/cjs/hex-util.js +15 -0
  72. package/build/cjs/hex-util.js.map +1 -0
  73. package/build/cjs/index.d.ts +7 -17
  74. package/build/cjs/index.js +6 -28
  75. package/build/cjs/index.js.map +1 -1
  76. package/build/cjs/radio-bridge/connection.d.ts +52 -0
  77. package/build/cjs/{usb-radio-bridge.js → radio-bridge/connection.js} +69 -37
  78. package/build/cjs/radio-bridge/connection.js.map +1 -0
  79. package/build/cjs/radio-bridge/index.d.ts +4 -0
  80. package/build/cjs/radio-bridge/index.js +9 -0
  81. package/build/cjs/radio-bridge/index.js.map +1 -0
  82. package/build/cjs/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
  83. package/build/cjs/radio-bridge/serial-protocol.js.map +1 -0
  84. package/build/cjs/service-events.d.ts +43 -14
  85. package/build/cjs/service-events.js +6 -36
  86. package/build/cjs/service-events.js.map +1 -1
  87. package/build/{esm/hex-flash-data-source.d.ts → cjs/universal-hex/flash-data-source.d.ts} +1 -2
  88. package/build/cjs/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +7 -15
  89. package/build/cjs/universal-hex/flash-data-source.js.map +1 -0
  90. package/build/cjs/universal-hex/index.d.ts +4 -0
  91. package/build/cjs/universal-hex/index.js +9 -0
  92. package/build/cjs/universal-hex/index.js.map +1 -0
  93. package/build/cjs/usb/arm-debug.d.ts +137 -0
  94. package/build/cjs/usb/arm-debug.js +414 -0
  95. package/build/cjs/usb/arm-debug.js.map +1 -0
  96. package/build/cjs/usb/arm-debug.test.js +333 -0
  97. package/build/cjs/usb/arm-debug.test.js.map +1 -0
  98. package/build/{esm → cjs/usb}/board-serial-info.d.ts +2 -1
  99. package/build/cjs/{board-serial-info.js → usb/board-serial-info.js} +10 -7
  100. package/build/cjs/usb/board-serial-info.js.map +1 -0
  101. package/build/cjs/{board-serial-info.test.js → usb/board-serial-info.test.js} +2 -4
  102. package/build/cjs/usb/board-serial-info.test.js.map +1 -0
  103. package/build/cjs/usb/cdc-saturation.d.ts +36 -0
  104. package/build/cjs/usb/cdc-saturation.js +151 -0
  105. package/build/cjs/usb/cdc-saturation.js.map +1 -0
  106. package/build/cjs/usb/cmsis-dap.d.ts +113 -0
  107. package/build/cjs/usb/cmsis-dap.js +349 -0
  108. package/build/cjs/usb/cmsis-dap.js.map +1 -0
  109. package/build/cjs/usb/cmsis-dap.test.js +350 -0
  110. package/build/cjs/usb/cmsis-dap.test.js.map +1 -0
  111. package/build/cjs/usb/connection.d.ts +96 -0
  112. package/build/cjs/{usb.js → usb/connection.js} +257 -173
  113. package/build/cjs/usb/connection.js.map +1 -0
  114. package/build/cjs/{usb.test.js → usb/connection.test.js} +52 -42
  115. package/build/cjs/usb/connection.test.js.map +1 -0
  116. package/build/cjs/usb/cortex-m.d.ts +72 -0
  117. package/build/cjs/usb/cortex-m.js +165 -0
  118. package/build/cjs/usb/cortex-m.js.map +1 -0
  119. package/build/cjs/usb/cortex-m.test.js +217 -0
  120. package/build/cjs/usb/cortex-m.test.js.map +1 -0
  121. package/build/cjs/usb/daplink.d.ts +69 -0
  122. package/build/cjs/usb/daplink.js +238 -0
  123. package/build/cjs/usb/daplink.js.map +1 -0
  124. package/build/cjs/usb/daplink.test.js +290 -0
  125. package/build/cjs/usb/daplink.test.js.map +1 -0
  126. package/build/cjs/usb/device-wrapper.d.ts +34 -0
  127. package/build/cjs/usb/device-wrapper.js +102 -0
  128. package/build/cjs/usb/device-wrapper.js.map +1 -0
  129. package/build/cjs/usb/index.d.ts +5 -0
  130. package/build/cjs/usb/index.js +10 -0
  131. package/build/cjs/usb/index.js.map +1 -0
  132. package/build/{esm/usb-partial-flashing-utils.d.ts → cjs/usb/partial-flashing-utils.d.ts} +6 -9
  133. package/build/cjs/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +6 -49
  134. package/build/cjs/usb/partial-flashing-utils.js.map +1 -0
  135. package/build/{esm/usb-partial-flashing.d.ts → cjs/usb/partial-flashing.d.ts} +37 -11
  136. package/build/cjs/{usb-partial-flashing.js → usb/partial-flashing.js} +170 -135
  137. package/build/cjs/usb/partial-flashing.js.map +1 -0
  138. package/build/cjs/usb/promise-queue.js.map +1 -0
  139. package/build/cjs/usb/promise-queue.test.js.map +1 -0
  140. package/build/cjs/usb/serial-events.d.ts +16 -0
  141. package/build/cjs/{led.js → usb/serial-events.js} +1 -1
  142. package/build/cjs/usb/serial-events.js.map +1 -0
  143. package/build/cjs/usb/transport.d.ts +42 -0
  144. package/build/cjs/usb/transport.js +155 -0
  145. package/build/cjs/usb/transport.js.map +1 -0
  146. package/build/esm/async-util.d.ts +3 -1
  147. package/build/esm/async-util.js +5 -1
  148. package/build/esm/async-util.js.map +1 -1
  149. package/build/esm/bluetooth/ble-error.d.ts +10 -0
  150. package/build/esm/bluetooth/ble-error.js +42 -0
  151. package/build/esm/bluetooth/ble-error.js.map +1 -0
  152. package/build/esm/bluetooth/connection.d.ts +137 -0
  153. package/build/esm/{bluetooth.js → bluetooth/connection.js} +152 -100
  154. package/build/esm/bluetooth/connection.js.map +1 -0
  155. package/build/esm/{bluetooth.test.js → bluetooth/connection.test.js} +9 -9
  156. package/build/esm/bluetooth/connection.test.js.map +1 -0
  157. package/build/esm/bluetooth/device-bond-state.js.map +1 -0
  158. package/build/esm/{bluetooth-device-wrapper.d.ts → bluetooth/device-wrapper.d.ts} +11 -11
  159. package/build/esm/{bluetooth-device-wrapper.js → bluetooth/device-wrapper.js} +35 -39
  160. package/build/esm/bluetooth/device-wrapper.js.map +1 -0
  161. package/build/esm/{flashing → bluetooth/flashing}/flashing-full.d.ts +2 -2
  162. package/build/esm/{flashing → bluetooth/flashing}/flashing-full.js +6 -5
  163. package/build/esm/bluetooth/flashing/flashing-full.js.map +1 -0
  164. package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.d.ts +1 -1
  165. package/build/esm/bluetooth/flashing/flashing-makecode.js.map +1 -0
  166. package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.test.js +2 -2
  167. package/build/esm/bluetooth/flashing/flashing-makecode.test.js.map +1 -0
  168. package/build/esm/{flashing → bluetooth/flashing}/flashing-partial.d.ts +2 -2
  169. package/build/esm/{flashing → bluetooth/flashing}/flashing-partial.js +6 -5
  170. package/build/esm/bluetooth/flashing/flashing-partial.js.map +1 -0
  171. package/build/esm/bluetooth/flashing/flashing-v1.js.map +1 -0
  172. package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.d.ts +2 -2
  173. package/build/esm/{flashing → bluetooth/flashing}/nordic-dfu.js +15 -11
  174. package/build/esm/bluetooth/flashing/nordic-dfu.js.map +1 -0
  175. package/build/esm/bluetooth/flashing/zip.js.map +1 -0
  176. package/build/esm/bluetooth/flashing/zip.test.d.ts +1 -0
  177. package/build/esm/bluetooth/flashing/zip.test.js.map +1 -0
  178. package/build/esm/bluetooth/index.d.ts +5 -0
  179. package/build/esm/bluetooth/index.js +5 -0
  180. package/build/esm/bluetooth/index.js.map +1 -0
  181. package/build/esm/{bluetooth-profile.js → bluetooth/profile.js} +1 -1
  182. package/build/{cjs/bluetooth-profile.js.map → esm/bluetooth/profile.js.map} +1 -1
  183. package/build/esm/{accelerometer-service.d.ts → bluetooth/services/accelerometer-service.d.ts} +2 -3
  184. package/build/esm/{accelerometer-service.js → bluetooth/services/accelerometer-service.js} +11 -6
  185. package/build/esm/bluetooth/services/accelerometer-service.js.map +1 -0
  186. package/build/{cjs → esm/bluetooth/services}/button-service.d.ts +2 -3
  187. package/build/esm/{button-service.js → bluetooth/services/button-service.js} +20 -10
  188. package/build/esm/bluetooth/services/button-service.js.map +1 -0
  189. package/build/{cjs → esm/bluetooth/services}/device-information-service.d.ts +1 -1
  190. package/build/esm/bluetooth/services/device-information-service.js +25 -0
  191. package/build/esm/bluetooth/services/device-information-service.js.map +1 -0
  192. package/build/esm/{dfu-service.js → bluetooth/services/dfu-service.js} +1 -1
  193. package/build/esm/bluetooth/services/dfu-service.js.map +1 -0
  194. package/build/{cjs → esm/bluetooth/services}/led-service.d.ts +2 -3
  195. package/build/esm/{led-service.js → bluetooth/services/led-service.js} +4 -1
  196. package/build/esm/bluetooth/services/led-service.js.map +1 -0
  197. package/build/esm/{magnetometer-service.d.ts → bluetooth/services/magnetometer-service.d.ts} +2 -3
  198. package/build/esm/{magnetometer-service.js → bluetooth/services/magnetometer-service.js} +11 -6
  199. package/build/esm/bluetooth/services/magnetometer-service.js.map +1 -0
  200. package/build/{cjs → esm/bluetooth/services}/partial-flashing-service.d.ts +1 -1
  201. package/build/esm/{partial-flashing-service.js → bluetooth/services/partial-flashing-service.js} +4 -4
  202. package/build/esm/bluetooth/services/partial-flashing-service.js.map +1 -0
  203. package/build/esm/{uart-service.d.ts → bluetooth/services/uart-service.d.ts} +2 -2
  204. package/build/esm/{uart-service.js → bluetooth/services/uart-service.js} +18 -6
  205. package/build/esm/bluetooth/services/uart-service.js.map +1 -0
  206. package/build/esm/board-id.d.ts +1 -1
  207. package/build/esm/board-id.js.map +1 -1
  208. package/build/esm/device.d.ts +145 -123
  209. package/build/esm/device.js +45 -122
  210. package/build/esm/device.js.map +1 -1
  211. package/build/esm/events.d.ts +8 -108
  212. package/build/esm/events.js +26 -86
  213. package/build/esm/events.js.map +1 -1
  214. package/build/esm/events.test.js +55 -49
  215. package/build/esm/events.test.js.map +1 -1
  216. package/build/esm/hex-util.d.ts +1 -0
  217. package/build/esm/hex-util.js +11 -0
  218. package/build/esm/hex-util.js.map +1 -0
  219. package/build/esm/index.d.ts +7 -17
  220. package/build/esm/index.js +6 -11
  221. package/build/esm/index.js.map +1 -1
  222. package/build/esm/radio-bridge/connection.d.ts +52 -0
  223. package/build/esm/{usb-radio-bridge.js → radio-bridge/connection.js} +69 -37
  224. package/build/esm/radio-bridge/connection.js.map +1 -0
  225. package/build/esm/radio-bridge/index.d.ts +4 -0
  226. package/build/esm/radio-bridge/index.js +5 -0
  227. package/build/esm/radio-bridge/index.js.map +1 -0
  228. package/build/esm/{usb-serial-protocol.js → radio-bridge/serial-protocol.js} +1 -1
  229. package/build/esm/radio-bridge/serial-protocol.js.map +1 -0
  230. package/build/esm/service-events.d.ts +43 -14
  231. package/build/esm/service-events.js +5 -34
  232. package/build/esm/service-events.js.map +1 -1
  233. package/build/{cjs/hex-flash-data-source.d.ts → esm/universal-hex/flash-data-source.d.ts} +1 -2
  234. package/build/esm/{hex-flash-data-source.js → universal-hex/flash-data-source.js} +6 -13
  235. package/build/esm/universal-hex/flash-data-source.js.map +1 -0
  236. package/build/esm/universal-hex/index.d.ts +4 -0
  237. package/build/esm/universal-hex/index.js +5 -0
  238. package/build/esm/universal-hex/index.js.map +1 -0
  239. package/build/esm/usb/arm-debug.d.ts +137 -0
  240. package/build/esm/usb/arm-debug.js +409 -0
  241. package/build/esm/usb/arm-debug.js.map +1 -0
  242. package/build/esm/usb/arm-debug.test.d.ts +1 -0
  243. package/build/esm/usb/arm-debug.test.js +331 -0
  244. package/build/esm/usb/arm-debug.test.js.map +1 -0
  245. package/build/{cjs → esm/usb}/board-serial-info.d.ts +2 -1
  246. package/build/esm/{board-serial-info.js → usb/board-serial-info.js} +10 -7
  247. package/build/esm/usb/board-serial-info.js.map +1 -0
  248. package/build/esm/usb/board-serial-info.test.d.ts +1 -0
  249. package/build/esm/{board-serial-info.test.js → usb/board-serial-info.test.js} +2 -4
  250. package/build/esm/usb/board-serial-info.test.js.map +1 -0
  251. package/build/esm/usb/cdc-saturation.d.ts +36 -0
  252. package/build/esm/usb/cdc-saturation.js +148 -0
  253. package/build/esm/usb/cdc-saturation.js.map +1 -0
  254. package/build/esm/usb/cmsis-dap.d.ts +113 -0
  255. package/build/esm/usb/cmsis-dap.js +342 -0
  256. package/build/esm/usb/cmsis-dap.js.map +1 -0
  257. package/build/esm/usb/cmsis-dap.test.d.ts +1 -0
  258. package/build/esm/usb/cmsis-dap.test.js +348 -0
  259. package/build/esm/usb/cmsis-dap.test.js.map +1 -0
  260. package/build/esm/usb/connection.d.ts +96 -0
  261. package/build/esm/{usb.js → usb/connection.js} +253 -168
  262. package/build/esm/usb/connection.js.map +1 -0
  263. package/build/esm/usb/connection.test.d.ts +1 -0
  264. package/build/esm/{usb.test.js → usb/connection.test.js} +47 -37
  265. package/build/esm/usb/connection.test.js.map +1 -0
  266. package/build/esm/usb/cortex-m.d.ts +72 -0
  267. package/build/esm/usb/cortex-m.js +161 -0
  268. package/build/esm/usb/cortex-m.js.map +1 -0
  269. package/build/esm/usb/cortex-m.test.d.ts +1 -0
  270. package/build/esm/usb/cortex-m.test.js +215 -0
  271. package/build/esm/usb/cortex-m.test.js.map +1 -0
  272. package/build/esm/usb/daplink.d.ts +69 -0
  273. package/build/esm/usb/daplink.js +231 -0
  274. package/build/esm/usb/daplink.js.map +1 -0
  275. package/build/esm/usb/daplink.test.d.ts +1 -0
  276. package/build/esm/usb/daplink.test.js +288 -0
  277. package/build/esm/usb/daplink.test.js.map +1 -0
  278. package/build/esm/usb/device-wrapper.d.ts +34 -0
  279. package/build/esm/usb/device-wrapper.js +98 -0
  280. package/build/esm/usb/device-wrapper.js.map +1 -0
  281. package/build/esm/usb/index.d.ts +5 -0
  282. package/build/esm/usb/index.js +5 -0
  283. package/build/esm/usb/index.js.map +1 -0
  284. package/build/{cjs/usb-partial-flashing-utils.d.ts → esm/usb/partial-flashing-utils.d.ts} +6 -9
  285. package/build/esm/{usb-partial-flashing-utils.js → usb/partial-flashing-utils.js} +4 -44
  286. package/build/esm/usb/partial-flashing-utils.js.map +1 -0
  287. package/build/{cjs/usb-partial-flashing.d.ts → esm/usb/partial-flashing.d.ts} +37 -11
  288. package/build/esm/{usb-partial-flashing.js → usb/partial-flashing.js} +169 -111
  289. package/build/esm/usb/partial-flashing.js.map +1 -0
  290. package/build/esm/usb/promise-queue.js.map +1 -0
  291. package/build/esm/usb/promise-queue.test.d.ts +1 -0
  292. package/build/esm/usb/promise-queue.test.js.map +1 -0
  293. package/build/esm/usb/serial-events.d.ts +16 -0
  294. package/build/esm/usb/serial-events.js +2 -0
  295. package/build/esm/usb/serial-events.js.map +1 -0
  296. package/build/esm/usb/transport.d.ts +42 -0
  297. package/build/esm/usb/transport.js +151 -0
  298. package/build/esm/usb/transport.js.map +1 -0
  299. package/package.json +43 -2
  300. package/build/cjs/accelerometer-service.js.map +0 -1
  301. package/build/cjs/accelerometer.d.ts +0 -9
  302. package/build/cjs/accelerometer.js +0 -16
  303. package/build/cjs/accelerometer.js.map +0 -1
  304. package/build/cjs/bluetooth-device-wrapper.js.map +0 -1
  305. package/build/cjs/bluetooth.d.ts +0 -114
  306. package/build/cjs/bluetooth.js.map +0 -1
  307. package/build/cjs/bluetooth.test.js.map +0 -1
  308. package/build/cjs/board-serial-info.js.map +0 -1
  309. package/build/cjs/board-serial-info.test.js.map +0 -1
  310. package/build/cjs/button-service.js.map +0 -1
  311. package/build/cjs/buttons.d.ts +0 -10
  312. package/build/cjs/buttons.js +0 -22
  313. package/build/cjs/buttons.js.map +0 -1
  314. package/build/cjs/constants.d.ts +0 -48
  315. package/build/cjs/constants.js +0 -73
  316. package/build/cjs/constants.js.map +0 -1
  317. package/build/cjs/device-bond-state.js.map +0 -1
  318. package/build/cjs/device-information-service.js +0 -34
  319. package/build/cjs/device-information-service.js.map +0 -1
  320. package/build/cjs/dfu-service.js.map +0 -1
  321. package/build/cjs/flashing/flashing-full.js.map +0 -1
  322. package/build/cjs/flashing/flashing-makecode.js.map +0 -1
  323. package/build/cjs/flashing/flashing-makecode.test.js.map +0 -1
  324. package/build/cjs/flashing/flashing-partial.js.map +0 -1
  325. package/build/cjs/flashing/flashing-v1.js.map +0 -1
  326. package/build/cjs/flashing/nordic-dfu.js.map +0 -1
  327. package/build/cjs/flashing/zip.js.map +0 -1
  328. package/build/cjs/flashing/zip.test.js.map +0 -1
  329. package/build/cjs/hex-flash-data-source.js.map +0 -1
  330. package/build/cjs/led-service.js.map +0 -1
  331. package/build/cjs/led.d.ts +0 -6
  332. package/build/cjs/led.js.map +0 -1
  333. package/build/cjs/magnetometer-service.js.map +0 -1
  334. package/build/cjs/magnetometer.d.ts +0 -9
  335. package/build/cjs/magnetometer.js +0 -16
  336. package/build/cjs/magnetometer.js.map +0 -1
  337. package/build/cjs/partial-flashing-service.js.map +0 -1
  338. package/build/cjs/promise-queue.js.map +0 -1
  339. package/build/cjs/promise-queue.test.js.map +0 -1
  340. package/build/cjs/serial-events.d.ts +0 -20
  341. package/build/cjs/serial-events.js +0 -69
  342. package/build/cjs/serial-events.js.map +0 -1
  343. package/build/cjs/uart-service.js.map +0 -1
  344. package/build/cjs/uart.d.ts +0 -4
  345. package/build/cjs/uart.js +0 -16
  346. package/build/cjs/uart.js.map +0 -1
  347. package/build/cjs/usb-device-wrapper.d.ts +0 -47
  348. package/build/cjs/usb-device-wrapper.js +0 -437
  349. package/build/cjs/usb-device-wrapper.js.map +0 -1
  350. package/build/cjs/usb-partial-flashing-utils.js.map +0 -1
  351. package/build/cjs/usb-partial-flashing.js.map +0 -1
  352. package/build/cjs/usb-radio-bridge.d.ts +0 -24
  353. package/build/cjs/usb-radio-bridge.js.map +0 -1
  354. package/build/cjs/usb-serial-protocol.js.map +0 -1
  355. package/build/cjs/usb.d.ts +0 -66
  356. package/build/cjs/usb.js.map +0 -1
  357. package/build/cjs/usb.test.js.map +0 -1
  358. package/build/esm/accelerometer-service.js.map +0 -1
  359. package/build/esm/accelerometer.d.ts +0 -9
  360. package/build/esm/accelerometer.js +0 -12
  361. package/build/esm/accelerometer.js.map +0 -1
  362. package/build/esm/bluetooth-device-wrapper.js.map +0 -1
  363. package/build/esm/bluetooth-profile.js.map +0 -1
  364. package/build/esm/bluetooth.d.ts +0 -114
  365. package/build/esm/bluetooth.js.map +0 -1
  366. package/build/esm/bluetooth.test.js.map +0 -1
  367. package/build/esm/board-serial-info.js.map +0 -1
  368. package/build/esm/board-serial-info.test.js.map +0 -1
  369. package/build/esm/button-service.js.map +0 -1
  370. package/build/esm/buttons.d.ts +0 -10
  371. package/build/esm/buttons.js +0 -18
  372. package/build/esm/buttons.js.map +0 -1
  373. package/build/esm/constants.d.ts +0 -48
  374. package/build/esm/constants.js +0 -70
  375. package/build/esm/constants.js.map +0 -1
  376. package/build/esm/device-bond-state.js.map +0 -1
  377. package/build/esm/device-information-service.js +0 -30
  378. package/build/esm/device-information-service.js.map +0 -1
  379. package/build/esm/dfu-service.js.map +0 -1
  380. package/build/esm/flashing/flashing-full.js.map +0 -1
  381. package/build/esm/flashing/flashing-makecode.js.map +0 -1
  382. package/build/esm/flashing/flashing-makecode.test.js.map +0 -1
  383. package/build/esm/flashing/flashing-partial.js.map +0 -1
  384. package/build/esm/flashing/flashing-v1.js.map +0 -1
  385. package/build/esm/flashing/nordic-dfu.js.map +0 -1
  386. package/build/esm/flashing/zip.js.map +0 -1
  387. package/build/esm/flashing/zip.test.js.map +0 -1
  388. package/build/esm/hex-flash-data-source.js.map +0 -1
  389. package/build/esm/led-service.js.map +0 -1
  390. package/build/esm/led.d.ts +0 -6
  391. package/build/esm/led.js +0 -2
  392. package/build/esm/led.js.map +0 -1
  393. package/build/esm/magnetometer-service.js.map +0 -1
  394. package/build/esm/magnetometer.d.ts +0 -9
  395. package/build/esm/magnetometer.js +0 -12
  396. package/build/esm/magnetometer.js.map +0 -1
  397. package/build/esm/partial-flashing-service.js.map +0 -1
  398. package/build/esm/promise-queue.js.map +0 -1
  399. package/build/esm/promise-queue.test.js.map +0 -1
  400. package/build/esm/serial-events.d.ts +0 -20
  401. package/build/esm/serial-events.js +0 -61
  402. package/build/esm/serial-events.js.map +0 -1
  403. package/build/esm/uart-service.js.map +0 -1
  404. package/build/esm/uart.d.ts +0 -4
  405. package/build/esm/uart.js +0 -12
  406. package/build/esm/uart.js.map +0 -1
  407. package/build/esm/usb-device-wrapper.d.ts +0 -47
  408. package/build/esm/usb-device-wrapper.js +0 -410
  409. package/build/esm/usb-device-wrapper.js.map +0 -1
  410. package/build/esm/usb-partial-flashing-utils.js.map +0 -1
  411. package/build/esm/usb-partial-flashing.js.map +0 -1
  412. package/build/esm/usb-radio-bridge.d.ts +0 -24
  413. package/build/esm/usb-radio-bridge.js.map +0 -1
  414. package/build/esm/usb-serial-protocol.js.map +0 -1
  415. package/build/esm/usb.d.ts +0 -66
  416. package/build/esm/usb.js.map +0 -1
  417. package/build/esm/usb.test.js.map +0 -1
  418. /package/build/cjs/{bluetooth.test.d.ts → bluetooth/connection.test.d.ts} +0 -0
  419. /package/build/cjs/{device-bond-state.d.ts → bluetooth/device-bond-state.d.ts} +0 -0
  420. /package/build/cjs/{device-bond-state.js → bluetooth/device-bond-state.js} +0 -0
  421. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.js +0 -0
  422. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-makecode.test.d.ts +0 -0
  423. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
  424. /package/build/cjs/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
  425. /package/build/cjs/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
  426. /package/build/cjs/{flashing → bluetooth/flashing}/zip.js +0 -0
  427. /package/build/cjs/{flashing → bluetooth/flashing}/zip.test.d.ts +0 -0
  428. /package/build/cjs/{flashing → bluetooth/flashing}/zip.test.js +0 -0
  429. /package/build/cjs/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +0 -0
  430. /package/build/cjs/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
  431. /package/build/cjs/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
  432. /package/build/cjs/{board-serial-info.test.d.ts → usb/arm-debug.test.d.ts} +0 -0
  433. /package/build/{esm → cjs/usb}/board-serial-info.test.d.ts +0 -0
  434. /package/build/cjs/{promise-queue.test.d.ts → usb/cmsis-dap.test.d.ts} +0 -0
  435. /package/build/cjs/{usb.test.d.ts → usb/connection.test.d.ts} +0 -0
  436. /package/build/{esm/bluetooth.test.d.ts → cjs/usb/cortex-m.test.d.ts} +0 -0
  437. /package/build/{esm/flashing/flashing-makecode.test.d.ts → cjs/usb/daplink.test.d.ts} +0 -0
  438. /package/build/cjs/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
  439. /package/build/cjs/{promise-queue.js → usb/promise-queue.js} +0 -0
  440. /package/build/{esm → cjs/usb}/promise-queue.test.d.ts +0 -0
  441. /package/build/cjs/{promise-queue.test.js → usb/promise-queue.test.js} +0 -0
  442. /package/build/esm/{flashing/zip.test.d.ts → bluetooth/connection.test.d.ts} +0 -0
  443. /package/build/esm/{device-bond-state.d.ts → bluetooth/device-bond-state.d.ts} +0 -0
  444. /package/build/esm/{device-bond-state.js → bluetooth/device-bond-state.js} +0 -0
  445. /package/build/esm/{flashing → bluetooth/flashing}/flashing-makecode.js +0 -0
  446. /package/build/esm/{usb.test.d.ts → bluetooth/flashing/flashing-makecode.test.d.ts} +0 -0
  447. /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.d.ts +0 -0
  448. /package/build/esm/{flashing → bluetooth/flashing}/flashing-v1.js +0 -0
  449. /package/build/esm/{flashing → bluetooth/flashing}/zip.d.ts +0 -0
  450. /package/build/esm/{flashing → bluetooth/flashing}/zip.js +0 -0
  451. /package/build/esm/{flashing → bluetooth/flashing}/zip.test.js +0 -0
  452. /package/build/esm/{bluetooth-profile.d.ts → bluetooth/profile.d.ts} +0 -0
  453. /package/build/esm/{dfu-service.d.ts → bluetooth/services/dfu-service.d.ts} +0 -0
  454. /package/build/esm/{usb-serial-protocol.d.ts → radio-bridge/serial-protocol.d.ts} +0 -0
  455. /package/build/esm/{promise-queue.d.ts → usb/promise-queue.d.ts} +0 -0
  456. /package/build/esm/{promise-queue.js → usb/promise-queue.js} +0 -0
  457. /package/build/esm/{promise-queue.test.js → usb/promise-queue.test.js} +0 -0
@@ -3,124 +3,121 @@
3
3
  *
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- import { TypedEventTarget, ValueIsEvent } from "./events.js";
7
6
  /**
8
7
  * Connection availability status returned by checkAvailability().
9
8
  * Used for pre-flight UX decisions before attempting to connect.
10
9
  */
11
10
  export type ConnectionAvailabilityStatus = "available" | "unsupported" | "disabled" | "permission-denied" | "location-disabled";
12
11
  /**
13
- * Specific identified error types.
12
+ * Error codes identifying specific failure modes.
14
13
  *
15
- * New members may be added over time.
14
+ * Each code represents a distinct category of failure that apps can
15
+ * match on to decide what message to show or what recovery to attempt.
16
+ * New codes may be added in future minor releases.
17
+ *
18
+ * Codes are annotated with **USB**, **BLE**, or **USB, BLE** to indicate
19
+ * which connection types can produce them. USB-only apps can ignore
20
+ * BLE-only codes.
16
21
  */
17
22
  export type DeviceErrorCode =
18
23
  /**
19
- * Operation was aborted via an AbortSignal.
24
+ * **BLE.** The operation was cancelled via an {@link AbortSignal}
25
+ * supplied by the caller. No user-facing error is needed.
20
26
  */
21
27
  "aborted"
22
28
  /**
23
- * Device not selected, e.g. because the user cancelled the dialog.
29
+ * **USB, BLE.** The user dismissed the device-picker dialog without
30
+ * selecting a device. Typically no error message is needed — the user
31
+ * chose not to proceed.
24
32
  */
25
33
  | "no-device-selected"
26
34
  /**
27
- * Device not found, perhaps because it doesn't have new enough firmware (for V1).
28
- */
29
- | "update-req"
30
- /**
31
- * Unable to claim the interface, usually because it's in use in another tab/window.
32
- */
33
- | "clear-connect"
34
- /**
35
- * The device was found to be disconnected.
36
- */
37
- | "device-disconnected"
38
- /**
39
- * A communication timeout occurred.
40
- */
41
- | "timeout-error"
42
- /**
43
- * This is the fallback error case suggesting that the user reconnects their device.
35
+ * **USB, BLE.** The connection type is not supported on this platform
36
+ * or browser. Corresponds to {@link ConnectionAvailabilityStatus}
37
+ * `"unsupported"`.
44
38
  */
45
- | "reconnect-microbit"
39
+ | "unsupported"
46
40
  /**
47
- * Error occured during serial or bluetooth communication.
41
+ * **BLE.** Bluetooth is turned off at the OS level. Prompt the user
42
+ * to enable it in system settings. Corresponds to
43
+ * {@link ConnectionAvailabilityStatus} `"disabled"`.
48
44
  */
49
- | "background-comms-error"
45
+ | "disabled"
50
46
  /**
51
- * Bluetooth service is missing on device.
47
+ * **BLE.** The app does not have the required Bluetooth permissions
48
+ * (iOS/Android). Prompt the user to grant permission in system
49
+ * settings. Corresponds to {@link ConnectionAvailabilityStatus}
50
+ * `"permission-denied"`.
52
51
  */
53
- | "service-missing"
52
+ | "permission-denied"
54
53
  /**
55
- * Failed to establish Bluetooth connection.
54
+ * **BLE.** Location services are disabled. Required on Android
55
+ * versions before 12 for Bluetooth scanning. Prompt the user to
56
+ * enable location in system settings. Corresponds to
57
+ * {@link ConnectionAvailabilityStatus} `"location-disabled"`.
56
58
  */
57
- | "bluetooth-connection-failed"
59
+ | "location-disabled"
58
60
  /**
59
- * Pairing information lost on micro:bit.
61
+ * **USB, BLE.** A method was called that requires an active
62
+ * connection, but no connection is currently open. Call
63
+ * {@link DeviceConnection.connect} first.
60
64
  */
61
- | "pairing-information-lost"
65
+ | "not-connected"
62
66
  /**
63
- * Partial flash operation failed.
67
+ * **USB.** The USB interface could not be claimed, usually because
68
+ * another browser tab or application already has an open connection
69
+ * to the device.
64
70
  */
65
- | "flash-partial-failed"
71
+ | "device-in-use"
66
72
  /**
67
- * Full flash operation failed.
73
+ * **USB, BLE.** The device disconnected during an operation.
74
+ * The physical USB or Bluetooth connection was lost.
68
75
  */
69
- | "flash-full-failed"
76
+ | "device-disconnected"
70
77
  /**
71
- * Flash operation was cancelled.
78
+ * **USB, BLE.** A communication timeout — the device did not respond
79
+ * within the expected time. This may indicate the device is busy,
80
+ * hung, or that the connection is degraded.
72
81
  */
73
- | "flash-cancelled"
82
+ | "timeout"
74
83
  /**
75
- * Connection type is not supported on this platform/browser.
76
- * Aligns with ConnectionAvailabilityStatus "unsupported".
84
+ * **USB, BLE.** A communication failure that does not match any more
85
+ * specific code. Typical handling: prompt the user to physically
86
+ * disconnect and reconnect the device, then retry.
77
87
  */
78
- | "unsupported"
88
+ | "connection-error"
79
89
  /**
80
- * Connection is disabled (e.g., Bluetooth turned off).
81
- * Aligns with ConnectionAvailabilityStatus "disabled".
90
+ * **USB.** The USB device was found but lacks the expected CMSIS-DAP
91
+ * interface. On micro:bit V1 this indicates the DAPLink firmware is
92
+ * too old and needs updating.
82
93
  */
83
- | "disabled"
94
+ | "firmware-update-required"
84
95
  /**
85
- * Required permissions were denied.
86
- * Aligns with ConnectionAvailabilityStatus "permission-denied".
96
+ * **BLE.** The micro:bit's Bluetooth pairing/bonding information has
97
+ * been lost (e.g. after a firmware reflash). The user needs to
98
+ * re-pair the device. Currently only detected on iOS.
87
99
  */
88
- | "permission-denied"
100
+ | "pairing-information-lost";
89
101
  /**
90
- * Location services are disabled (Android < 12 only).
91
- * Aligns with ConnectionAvailabilityStatus "location-disabled".
102
+ * Stages reported by the progress callback during connection and flashing.
92
103
  */
93
- | "location-disabled";
94
- export declare enum ProgressStage {
95
- /**
96
- * Checking permissions and availability before connecting.
97
- */
98
- Initializing = "Initializing",
99
- /**
100
- * Finding device.
101
- */
102
- FindingDevice = "FindingDevice",
103
- /**
104
- * Checking that a bond is established. Only applicable on Native platforms.
105
- */
106
- CheckingBond = "CheckingBond",
107
- /**
108
- * Resetting device in preparation for flashing. Only applicable on Native platforms.
109
- */
110
- ResettingDevice = "ResettingDevice",
111
- /**
112
- * Connecting for flashing.
113
- */
114
- Connecting = "Connecting",
115
- /**
116
- * Partial flashing.
117
- */
118
- PartialFlashing = "PartialFlashing",
119
- /**
120
- * Full flashing.
121
- */
122
- FullFlashing = "FullFlashing"
123
- }
104
+ export declare const ProgressStage: {
105
+ /** Checking permissions and availability before connecting. */
106
+ readonly Initializing: "Initializing";
107
+ /** Finding device. */
108
+ readonly FindingDevice: "FindingDevice";
109
+ /** Checking that a bond is established. Only applicable on Native platforms. */
110
+ readonly CheckingBond: "CheckingBond";
111
+ /** Resetting device in preparation for flashing. Only applicable on Native platforms. */
112
+ readonly ResettingDevice: "ResettingDevice";
113
+ /** Connecting for flashing. */
114
+ readonly Connecting: "Connecting";
115
+ /** Partial flashing. */
116
+ readonly PartialFlashing: "PartialFlashing";
117
+ /** Full flashing. */
118
+ readonly FullFlashing: "FullFlashing";
119
+ };
120
+ export type ProgressStage = (typeof ProgressStage)[keyof typeof ProgressStage];
124
121
  /**
125
122
  * Progress callback for tracking operation stages (connection and flashing).
126
123
  *
@@ -151,15 +148,21 @@ export type ProgressCallback = (stage: ProgressStage, progress?: number) => void
151
148
  */
152
149
  export declare class DeviceError extends Error {
153
150
  code: DeviceErrorCode;
154
- constructor({ code, message }: {
151
+ constructor({ code, message, cause, }: {
155
152
  code: DeviceErrorCode;
156
153
  message?: string;
154
+ cause?: unknown;
157
155
  });
158
156
  }
157
+ /**
158
+ * Asserts that a connection is active, throwing a {@link DeviceError}
159
+ * with code `"not-connected"` if it is not.
160
+ */
161
+ export declare function assertConnected<T>(connection: T | undefined): asserts connection is T;
159
162
  /**
160
163
  * Tracks connection status.
161
164
  */
162
- export declare enum ConnectionStatus {
165
+ export declare const ConnectionStatus: {
163
166
  /**
164
167
  * No device available.
165
168
  *
@@ -169,26 +172,21 @@ export declare enum ConnectionStatus {
169
172
  * Use checkAvailability() to determine whether the connection type is
170
173
  * supported before attempting to connect.
171
174
  */
172
- NO_AUTHORIZED_DEVICE = "NO_AUTHORIZED_DEVICE",
173
- /**
174
- * Authorized device available but we haven't connected to it.
175
- */
176
- DISCONNECTED = "DISCONNECTED",
177
- /**
178
- * Connected.
179
- */
180
- CONNECTED = "CONNECTED",
181
- /**
182
- * Connecting.
183
- */
184
- CONNECTING = "CONNECTING",
175
+ readonly NoAuthorizedDevice: "NoAuthorizedDevice";
176
+ /** Authorized device available but we haven't connected to it. */
177
+ readonly Disconnected: "Disconnected";
178
+ /** Connected. */
179
+ readonly Connected: "Connected";
180
+ /** Connecting. */
181
+ readonly Connecting: "Connecting";
185
182
  /**
186
183
  * Paused due to tab visibility. The connection was temporarily suspended
187
184
  * because the browser tab became hidden. Reconnection will be attempted
188
185
  * automatically when the tab becomes visible again.
189
186
  */
190
- PAUSED = "PAUSED"
191
- }
187
+ readonly Paused: "Paused";
188
+ };
189
+ export type ConnectionStatus = (typeof ConnectionStatus)[keyof typeof ConnectionStatus];
192
190
  export interface ConnectOptions {
193
191
  /**
194
192
  * Optional progress callback for tracking connection stages.
@@ -238,29 +236,33 @@ export declare class FlashDataError extends Error {
238
236
  }
239
237
  export type FlashDataSource = (boardVersion: BoardVersion) => Promise<string | Uint8Array>;
240
238
  export type BoardVersion = "V1" | "V2";
241
- export declare class ConnectionStatusEvent extends Event {
242
- readonly status: ConnectionStatus;
243
- readonly previousStatus: ConnectionStatus;
244
- constructor(status: ConnectionStatus, previousStatus: ConnectionStatus);
245
- }
246
- export declare class BeforeRequestDevice extends Event {
247
- constructor();
248
- }
249
- export declare class AfterRequestDevice extends Event {
250
- constructor();
239
+ export interface ConnectionStatusChange {
240
+ status: ConnectionStatus;
241
+ previousStatus: ConnectionStatus;
251
242
  }
252
- export declare class BackgroundErrorEvent extends Event {
253
- readonly errorMessage: string;
254
- readonly error?: unknown;
255
- constructor(errorMessage: string, error?: unknown);
243
+ export interface BackgroundErrorData {
244
+ error: DeviceError;
245
+ event?: string;
256
246
  }
257
- export declare class DeviceConnectionEventMap {
258
- "status": ConnectionStatusEvent;
259
- "backgrounderror": BackgroundErrorEvent;
260
- "beforerequestdevice": Event;
261
- "afterrequestdevice": Event;
247
+ export interface DeviceConnectionEventMap {
248
+ status: ConnectionStatusChange;
249
+ backgrounderror: BackgroundErrorData;
250
+ beforerequestdevice: void;
251
+ afterrequestdevice: void;
252
+ flash: void;
262
253
  }
263
- export interface DeviceConnection<M extends ValueIsEvent<M>> extends TypedEventTarget<DeviceConnectionEventMap & M> {
254
+ export interface DeviceConnection {
255
+ addEventListener(type: "status", listener: (data: ConnectionStatusChange) => void): void;
256
+ addEventListener(type: "backgrounderror", listener: (data: BackgroundErrorData) => void): void;
257
+ addEventListener(type: "beforerequestdevice", listener: () => void): void;
258
+ addEventListener(type: "afterrequestdevice", listener: () => void): void;
259
+ addEventListener(type: "flash", listener: () => void): void;
260
+ removeEventListener(type: "status", listener: (data: ConnectionStatusChange) => void): void;
261
+ removeEventListener(type: "backgrounderror", listener: (data: BackgroundErrorData) => void): void;
262
+ removeEventListener(type: "beforerequestdevice", listener: () => void): void;
263
+ removeEventListener(type: "afterrequestdevice", listener: () => void): void;
264
+ removeEventListener(type: "flash", listener: () => void): void;
265
+ readonly type: string;
264
266
  status: ConnectionStatus;
265
267
  /**
266
268
  * Initializes the device.
@@ -289,22 +291,42 @@ export interface DeviceConnection<M extends ValueIsEvent<M>> extends TypedEventT
289
291
  /**
290
292
  * Get the board version.
291
293
  *
292
- * @returns the board version or undefined if there is no connection.
294
+ * Cached after the first successful connection until {@link clearDevice}
295
+ * is called, so remains available after disconnection.
296
+ *
297
+ * @returns the board version.
298
+ * @throws {DeviceError} with code `not-connected` if no device has been connected.
293
299
  */
294
- getBoardVersion(): BoardVersion | undefined;
300
+ getBoardVersion(): BoardVersion;
295
301
  /**
296
302
  * Disconnect from the device.
297
303
  */
298
304
  disconnect(): Promise<void>;
299
305
  /**
300
- * Write serial data to the device.
306
+ * Flash the micro:bit.
307
+ *
308
+ * Not all connection types support flashing. For example, radio bridge
309
+ * connections do not support flashing, and Bluetooth connections only
310
+ * support flashing on native platforms (not Web).
311
+ *
312
+ * Post-flash connection state differs by transport:
313
+ *
314
+ * - **USB**: The connection remains in {@link ConnectionStatus.Connected} state.
315
+ * USB connects to the micro:bit's interface chip (running DAPLink firmware),
316
+ * which is not affected by flashing the application processor, so the
317
+ * connection persists and serial communication is automatically reinitialised.
301
318
  *
302
- * Does nothing if there is no connection.
319
+ * - **Bluetooth**: The connection is always left in {@link ConnectionStatus.Disconnected}
320
+ * state. Bluetooth connects to the application processor directly, which
321
+ * reboots after flashing, so the connection is necessarily lost. Callers
322
+ * must call {@link connect} again after flashing.
303
323
  *
304
- * @param data The data to write.
305
- * @returns A promise that resolves when the write is complete.
324
+ * @param dataSource The data to use.
325
+ * @param options Flash options and progress callback.
326
+ * @throws {DeviceError} On flash failure. The error.code property indicates the failure type.
327
+ * @throws {FlashDataError} If data preparation fails.
306
328
  */
307
- serialWrite(data: string): Promise<void>;
329
+ flash?(dataSource: FlashDataSource, options: FlashOptions): Promise<void>;
308
330
  /**
309
331
  * Clear device to enable chooseDevice.
310
332
  */
@@ -1,34 +1,27 @@
1
- export var ProgressStage;
2
- (function (ProgressStage) {
3
- /**
4
- * Checking permissions and availability before connecting.
5
- */
6
- ProgressStage["Initializing"] = "Initializing";
7
- /**
8
- * Finding device.
9
- */
10
- ProgressStage["FindingDevice"] = "FindingDevice";
11
- /**
12
- * Checking that a bond is established. Only applicable on Native platforms.
13
- */
14
- ProgressStage["CheckingBond"] = "CheckingBond";
15
- /**
16
- * Resetting device in preparation for flashing. Only applicable on Native platforms.
17
- */
18
- ProgressStage["ResettingDevice"] = "ResettingDevice";
19
- /**
20
- * Connecting for flashing.
21
- */
22
- ProgressStage["Connecting"] = "Connecting";
23
- /**
24
- * Partial flashing.
25
- */
26
- ProgressStage["PartialFlashing"] = "PartialFlashing";
27
- /**
28
- * Full flashing.
29
- */
30
- ProgressStage["FullFlashing"] = "FullFlashing";
31
- })(ProgressStage || (ProgressStage = {}));
1
+ /**
2
+ * (c) 2021, Micro:bit Educational Foundation and contributors
3
+ *
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Stages reported by the progress callback during connection and flashing.
8
+ */
9
+ export const ProgressStage = {
10
+ /** Checking permissions and availability before connecting. */
11
+ Initializing: "Initializing",
12
+ /** Finding device. */
13
+ FindingDevice: "FindingDevice",
14
+ /** Checking that a bond is established. Only applicable on Native platforms. */
15
+ CheckingBond: "CheckingBond",
16
+ /** Resetting device in preparation for flashing. Only applicable on Native platforms. */
17
+ ResettingDevice: "ResettingDevice",
18
+ /** Connecting for flashing. */
19
+ Connecting: "Connecting",
20
+ /** Partial flashing. */
21
+ PartialFlashing: "PartialFlashing",
22
+ /** Full flashing. */
23
+ FullFlashing: "FullFlashing",
24
+ };
32
25
  /**
33
26
  * Error type used for all interactions with this module.
34
27
  *
@@ -39,8 +32,8 @@ export var ProgressStage;
39
32
  * English.
40
33
  */
41
34
  export class DeviceError extends Error {
42
- constructor({ code, message }) {
43
- super(message);
35
+ constructor({ code, message, cause, }) {
36
+ super(message, { cause });
44
37
  Object.defineProperty(this, "code", {
45
38
  enumerable: true,
46
39
  configurable: true,
@@ -50,11 +43,19 @@ export class DeviceError extends Error {
50
43
  this.code = code;
51
44
  }
52
45
  }
46
+ /**
47
+ * Asserts that a connection is active, throwing a {@link DeviceError}
48
+ * with code `"not-connected"` if it is not.
49
+ */
50
+ export function assertConnected(connection) {
51
+ if (!connection) {
52
+ throw new DeviceError({ code: "not-connected", message: "Not connected" });
53
+ }
54
+ }
53
55
  /**
54
56
  * Tracks connection status.
55
57
  */
56
- export var ConnectionStatus;
57
- (function (ConnectionStatus) {
58
+ export const ConnectionStatus = {
58
59
  /**
59
60
  * No device available.
60
61
  *
@@ -64,98 +65,20 @@ export var ConnectionStatus;
64
65
  * Use checkAvailability() to determine whether the connection type is
65
66
  * supported before attempting to connect.
66
67
  */
67
- ConnectionStatus["NO_AUTHORIZED_DEVICE"] = "NO_AUTHORIZED_DEVICE";
68
- /**
69
- * Authorized device available but we haven't connected to it.
70
- */
71
- ConnectionStatus["DISCONNECTED"] = "DISCONNECTED";
72
- /**
73
- * Connected.
74
- */
75
- ConnectionStatus["CONNECTED"] = "CONNECTED";
76
- /**
77
- * Connecting.
78
- */
79
- ConnectionStatus["CONNECTING"] = "CONNECTING";
68
+ NoAuthorizedDevice: "NoAuthorizedDevice",
69
+ /** Authorized device available but we haven't connected to it. */
70
+ Disconnected: "Disconnected",
71
+ /** Connected. */
72
+ Connected: "Connected",
73
+ /** Connecting. */
74
+ Connecting: "Connecting",
80
75
  /**
81
76
  * Paused due to tab visibility. The connection was temporarily suspended
82
77
  * because the browser tab became hidden. Reconnection will be attempted
83
78
  * automatically when the tab becomes visible again.
84
79
  */
85
- ConnectionStatus["PAUSED"] = "PAUSED";
86
- })(ConnectionStatus || (ConnectionStatus = {}));
80
+ Paused: "Paused",
81
+ };
87
82
  export class FlashDataError extends Error {
88
83
  }
89
- export class ConnectionStatusEvent extends Event {
90
- constructor(status, previousStatus) {
91
- super("status");
92
- Object.defineProperty(this, "status", {
93
- enumerable: true,
94
- configurable: true,
95
- writable: true,
96
- value: status
97
- });
98
- Object.defineProperty(this, "previousStatus", {
99
- enumerable: true,
100
- configurable: true,
101
- writable: true,
102
- value: previousStatus
103
- });
104
- }
105
- }
106
- export class BeforeRequestDevice extends Event {
107
- constructor() {
108
- super("beforerequestdevice");
109
- }
110
- }
111
- export class AfterRequestDevice extends Event {
112
- constructor() {
113
- super("afterrequestdevice");
114
- }
115
- }
116
- export class BackgroundErrorEvent extends Event {
117
- constructor(errorMessage, error) {
118
- super("backgrounderror");
119
- Object.defineProperty(this, "errorMessage", {
120
- enumerable: true,
121
- configurable: true,
122
- writable: true,
123
- value: errorMessage
124
- });
125
- Object.defineProperty(this, "error", {
126
- enumerable: true,
127
- configurable: true,
128
- writable: true,
129
- value: error
130
- });
131
- }
132
- }
133
- export class DeviceConnectionEventMap {
134
- constructor() {
135
- Object.defineProperty(this, "status", {
136
- enumerable: true,
137
- configurable: true,
138
- writable: true,
139
- value: void 0
140
- });
141
- Object.defineProperty(this, "backgrounderror", {
142
- enumerable: true,
143
- configurable: true,
144
- writable: true,
145
- value: void 0
146
- });
147
- Object.defineProperty(this, "beforerequestdevice", {
148
- enumerable: true,
149
- configurable: true,
150
- writable: true,
151
- value: void 0
152
- });
153
- Object.defineProperty(this, "afterrequestdevice", {
154
- enumerable: true,
155
- configurable: true,
156
- writable: true,
157
- value: void 0
158
- });
159
- }
160
- }
161
84
  //# sourceMappingURL=device.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/device.ts"],"names":[],"mappings":"AAqGA,MAAM,CAAN,IAAY,aA6BX;AA7BD,WAAY,aAAa;IACvB;;OAEG;IACH,8CAA6B,CAAA;IAC7B;;OAEG;IACH,gDAA+B,CAAA;IAC/B;;OAEG;IACH,8CAA6B,CAAA;IAC7B;;OAEG;IACH,oDAAmC,CAAA;IACnC;;OAEG;IACH,0CAAyB,CAAA;IACzB;;OAEG;IACH,oDAAmC,CAAA;IACnC;;OAEG;IACH,8CAA6B,CAAA;AAC/B,CAAC,EA7BW,aAAa,KAAb,aAAa,QA6BxB;AAyBD;;;;;;;;GAQG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAEpC,YAAY,EAAE,IAAI,EAAE,OAAO,EAA+C;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC;QAFjB;;;;;WAAsB;QAGpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,gBA6BX;AA7BD,WAAY,gBAAgB;IAC1B;;;;;;;;OAQG;IACH,iEAA6C,CAAA;IAC7C;;OAEG;IACH,iDAA6B,CAAA;IAC7B;;OAEG;IACH,2CAAuB,CAAA;IACvB;;OAEG;IACH,6CAAyB,CAAA;IACzB;;;;OAIG;IACH,qCAAiB,CAAA;AACnB,CAAC,EA7BW,gBAAgB,KAAhB,gBAAgB,QA6B3B;AAiDD,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG;AAQ5C,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YACkB,MAAwB,EACxB,cAAgC;QAEhD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHhB;;;;mBAAgB,MAAM;WAAkB;QACxC;;;;mBAAgB,cAAc;WAAkB;IAGlD,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C;QACE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YACkB,YAAoB,EACpB,KAAe;QAE/B,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAHzB;;;;mBAAgB,YAAY;WAAQ;QACpC;;;;mBAAgB,KAAK;WAAU;IAGjC,CAAC;CACF;AAED,MAAM,OAAO,wBAAwB;IAArC;QACE,4BAAA,QAAQ;;;;;WAAwB;QAChC,4BAAA,iBAAiB;;;;;WAAuB;QACxC,4BAAA,qBAAqB;;;;;WAAQ;QAC7B,4BAAA,oBAAoB;;;;;WAAQ;IAC9B,CAAC;CAAA"}
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/device.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsHH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,+DAA+D;IAC/D,YAAY,EAAE,cAAc;IAC5B,sBAAsB;IACtB,aAAa,EAAE,eAAe;IAC9B,gFAAgF;IAChF,YAAY,EAAE,cAAc;IAC5B,yFAAyF;IACzF,eAAe,EAAE,iBAAiB;IAClC,+BAA+B;IAC/B,UAAU,EAAE,YAAY;IACxB,wBAAwB;IACxB,eAAe,EAAE,iBAAiB;IAClC,qBAAqB;IACrB,YAAY,EAAE,cAAc;CACpB,CAAC;AA2BX;;;;;;;;GAQG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAEpC,YAAY,EACV,IAAI,EACJ,OAAO,EACP,KAAK,GAKN;QACC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAV5B;;;;;WAAsB;QAWpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAyB;IAEzB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B;;;;;;;;OAQG;IACH,kBAAkB,EAAE,oBAAoB;IACxC,kEAAkE;IAClE,YAAY,EAAE,cAAc;IAC5B,iBAAiB;IACjB,SAAS,EAAE,WAAW;IACtB,kBAAkB;IAClB,UAAU,EAAE,YAAY;IACxB;;;;OAIG;IACH,MAAM,EAAE,QAAQ;CACR,CAAC;AAoDX,MAAM,OAAO,cAAe,SAAQ,KAAK;CAAG"}