node-poweredup 10.0.0 → 10.1.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 (313) hide show
  1. package/README.md +0 -1
  2. package/dist/browser/poweredup.js +6193 -0
  3. package/dist/browser/poweredup.js.map +7 -0
  4. package/dist/consts.d.ts +40 -0
  5. package/dist/consts.d.ts.map +1 -1
  6. package/dist/consts.js +42 -0
  7. package/dist/consts.js.map +1 -1
  8. package/dist/devices/absolutemotor.d.ts +8 -6
  9. package/dist/devices/absolutemotor.d.ts.map +1 -1
  10. package/dist/devices/absolutemotor.js +24 -31
  11. package/dist/devices/absolutemotor.js.map +1 -1
  12. package/dist/devices/basicmotor.d.ts +11 -10
  13. package/dist/devices/basicmotor.d.ts.map +1 -1
  14. package/dist/devices/basicmotor.js +16 -22
  15. package/dist/devices/basicmotor.js.map +1 -1
  16. package/dist/devices/colordistancesensor.d.ts +13 -12
  17. package/dist/devices/colordistancesensor.d.ts.map +1 -1
  18. package/dist/devices/colordistancesensor.js +25 -31
  19. package/dist/devices/colordistancesensor.js.map +1 -1
  20. package/dist/devices/device.d.ts +15 -6
  21. package/dist/devices/device.d.ts.map +1 -1
  22. package/dist/devices/device.js +209 -21
  23. package/dist/devices/device.js.map +1 -1
  24. package/dist/devices/duplotrainbasespeaker.d.ts +4 -4
  25. package/dist/devices/duplotrainbasespeaker.d.ts.map +1 -1
  26. package/dist/devices/duplotrainbasespeaker.js +5 -8
  27. package/dist/devices/duplotrainbasespeaker.js.map +1 -1
  28. package/dist/devices/hubled.d.ts +5 -4
  29. package/dist/devices/hubled.d.ts.map +1 -1
  30. package/dist/devices/hubled.js +24 -24
  31. package/dist/devices/hubled.js.map +1 -1
  32. package/dist/devices/light.d.ts +7 -4
  33. package/dist/devices/light.d.ts.map +1 -1
  34. package/dist/devices/light.js +11 -17
  35. package/dist/devices/light.js.map +1 -1
  36. package/dist/devices/piezobuzzer.d.ts +3 -2
  37. package/dist/devices/piezobuzzer.d.ts.map +1 -1
  38. package/dist/devices/piezobuzzer.js +2 -2
  39. package/dist/devices/piezobuzzer.js.map +1 -1
  40. package/dist/devices/tachomotor.d.ts +14 -8
  41. package/dist/devices/tachomotor.d.ts.map +1 -1
  42. package/dist/devices/tachomotor.js +50 -56
  43. package/dist/devices/tachomotor.js.map +1 -1
  44. package/dist/devices/technic3x3colorlightmatrix.d.ts +3 -2
  45. package/dist/devices/technic3x3colorlightmatrix.d.ts.map +1 -1
  46. package/dist/devices/technic3x3colorlightmatrix.js +20 -23
  47. package/dist/devices/technic3x3colorlightmatrix.js.map +1 -1
  48. package/dist/devices/techniccolorsensor.d.ts +9 -4
  49. package/dist/devices/techniccolorsensor.d.ts.map +1 -1
  50. package/dist/devices/techniccolorsensor.js +99 -8
  51. package/dist/devices/techniccolorsensor.js.map +1 -1
  52. package/dist/devices/technicdistancesensor.d.ts +1 -1
  53. package/dist/devices/technicdistancesensor.js +1 -1
  54. package/dist/devices/technicmediumhubtiltsensor.d.ts +7 -6
  55. package/dist/devices/technicmediumhubtiltsensor.d.ts.map +1 -1
  56. package/dist/devices/technicmediumhubtiltsensor.js +9 -18
  57. package/dist/devices/technicmediumhubtiltsensor.js.map +1 -1
  58. package/dist/devices/tiltsensor.d.ts +4 -1
  59. package/dist/devices/tiltsensor.d.ts.map +1 -1
  60. package/dist/devices/tiltsensor.js +84 -3
  61. package/dist/devices/tiltsensor.js.map +1 -1
  62. package/dist/hubs/basehub.d.ts +1 -0
  63. package/dist/hubs/basehub.d.ts.map +1 -1
  64. package/dist/hubs/basehub.js +17 -0
  65. package/dist/hubs/basehub.js.map +1 -1
  66. package/dist/hubs/lpf2hub.d.ts +1 -0
  67. package/dist/hubs/lpf2hub.d.ts.map +1 -1
  68. package/dist/hubs/lpf2hub.js +11 -0
  69. package/dist/hubs/lpf2hub.js.map +1 -1
  70. package/dist/portoutputcommand.d.ts +13 -0
  71. package/dist/portoutputcommand.d.ts.map +1 -0
  72. package/dist/portoutputcommand.js +30 -0
  73. package/dist/portoutputcommand.js.map +1 -0
  74. package/dist/portoutputsleep.d.ts +6 -0
  75. package/dist/portoutputsleep.d.ts.map +1 -0
  76. package/dist/portoutputsleep.js +10 -0
  77. package/dist/portoutputsleep.js.map +1 -0
  78. package/dist/utils.d.ts +1 -3
  79. package/dist/utils.d.ts.map +1 -1
  80. package/dist/utils.js +13 -19
  81. package/dist/utils.js.map +1 -1
  82. package/package.json +1 -1
  83. package/src/consts.ts +44 -0
  84. package/src/devices/absolutemotor.ts +24 -31
  85. package/src/devices/basicmotor.ts +16 -22
  86. package/src/devices/colordistancesensor.ts +23 -29
  87. package/src/devices/device.ts +198 -20
  88. package/src/devices/duplotrainbasespeaker.ts +5 -8
  89. package/src/devices/hubled.ts +22 -22
  90. package/src/devices/light.ts +11 -18
  91. package/src/devices/piezobuzzer.ts +3 -3
  92. package/src/devices/tachomotor.ts +47 -53
  93. package/src/devices/technic3x3colorlightmatrix.ts +20 -23
  94. package/src/devices/techniccolorsensor.ts +102 -10
  95. package/src/devices/technicdistancesensor.ts +1 -1
  96. package/src/devices/technicmediumhubtiltsensor.ts +9 -18
  97. package/src/devices/tiltsensor.ts +85 -5
  98. package/src/hubs/basehub.ts +18 -0
  99. package/src/hubs/lpf2hub.ts +12 -5
  100. package/src/portoutputcommand.ts +37 -0
  101. package/src/portoutputsleep.ts +11 -0
  102. package/src/utils.ts +14 -19
  103. package/tsconfig.tsbuildinfo +1 -1
  104. package/webpack.config.cjs +35 -0
  105. package/dist/node/color.d.ts +0 -6
  106. package/dist/node/color.js +0 -15
  107. package/dist/node/color.js.map +0 -1
  108. package/dist/node/commands.d.ts +0 -299
  109. package/dist/node/commands.js +0 -672
  110. package/dist/node/commands.js.map +0 -1
  111. package/dist/node/connection.d.ts +0 -187
  112. package/dist/node/connection.js +0 -478
  113. package/dist/node/connection.js.map +0 -1
  114. package/dist/node/consts.d.ts +0 -644
  115. package/dist/node/consts.js +0 -675
  116. package/dist/node/consts.js.map +0 -1
  117. package/dist/node/devices/absolutemotor.d.ts +0 -43
  118. package/dist/node/devices/absolutemotor.js +0 -118
  119. package/dist/node/devices/absolutemotor.js.map +0 -1
  120. package/dist/node/devices/basicmotor.d.ts +0 -40
  121. package/dist/node/devices/basicmotor.js +0 -61
  122. package/dist/node/devices/basicmotor.js.map +0 -1
  123. package/dist/node/devices/colordistancesensor.d.ts +0 -79
  124. package/dist/node/devices/colordistancesensor.js +0 -284
  125. package/dist/node/devices/colordistancesensor.js.map +0 -1
  126. package/dist/node/devices/currentsensor.d.ts +0 -16
  127. package/dist/node/devices/currentsensor.js +0 -55
  128. package/dist/node/devices/currentsensor.js.map +0 -1
  129. package/dist/node/devices/device.d.ts +0 -71
  130. package/dist/node/devices/device.js +0 -162
  131. package/dist/node/devices/device.js.map +0 -1
  132. package/dist/node/devices/duplotrainbasecolorsensor.d.ts +0 -19
  133. package/dist/node/devices/duplotrainbasecolorsensor.js +0 -77
  134. package/dist/node/devices/duplotrainbasecolorsensor.js.map +0 -1
  135. package/dist/node/devices/duplotrainbasemotor.d.ts +0 -9
  136. package/dist/node/devices/duplotrainbasemotor.js +0 -12
  137. package/dist/node/devices/duplotrainbasemotor.js.map +0 -1
  138. package/dist/node/devices/duplotrainbasespeaker.d.ts +0 -28
  139. package/dist/node/devices/duplotrainbasespeaker.js +0 -40
  140. package/dist/node/devices/duplotrainbasespeaker.js.map +0 -1
  141. package/dist/node/devices/duplotrainbasespeedometer.d.ts +0 -16
  142. package/dist/node/devices/duplotrainbasespeedometer.js +0 -34
  143. package/dist/node/devices/duplotrainbasespeedometer.js.map +0 -1
  144. package/dist/node/devices/hubled.d.ts +0 -29
  145. package/dist/node/devices/hubled.js +0 -60
  146. package/dist/node/devices/hubled.js.map +0 -1
  147. package/dist/node/devices/index.d.ts +0 -14
  148. package/dist/node/devices/index.js +0 -154
  149. package/dist/node/devices/index.js.map +0 -1
  150. package/dist/node/devices/led.d.ts +0 -140
  151. package/dist/node/devices/led.js +0 -295
  152. package/dist/node/devices/led.js.map +0 -1
  153. package/dist/node/devices/light.d.ts +0 -25
  154. package/dist/node/devices/light.js +0 -46
  155. package/dist/node/devices/light.js.map +0 -1
  156. package/dist/node/devices/marioaccelerometer.d.ts +0 -17
  157. package/dist/node/devices/marioaccelerometer.js +0 -50
  158. package/dist/node/devices/marioaccelerometer.js.map +0 -1
  159. package/dist/node/devices/mariobarcodesensor.d.ts +0 -17
  160. package/dist/node/devices/mariobarcodesensor.js +0 -58
  161. package/dist/node/devices/mariobarcodesensor.js.map +0 -1
  162. package/dist/node/devices/mariopantssensor.d.ts +0 -16
  163. package/dist/node/devices/mariopantssensor.js +0 -34
  164. package/dist/node/devices/mariopantssensor.js.map +0 -1
  165. package/dist/node/devices/mediumlinearmotor.d.ts +0 -9
  166. package/dist/node/devices/mediumlinearmotor.js +0 -12
  167. package/dist/node/devices/mediumlinearmotor.js.map +0 -1
  168. package/dist/node/devices/motionsensor.d.ts +0 -16
  169. package/dist/node/devices/motionsensor.js +0 -38
  170. package/dist/node/devices/motionsensor.js.map +0 -1
  171. package/dist/node/devices/motor.d.ts +0 -182
  172. package/dist/node/devices/motor.js +0 -367
  173. package/dist/node/devices/motor.js.map +0 -1
  174. package/dist/node/devices/movehubmediumlinearmotor.d.ts +0 -9
  175. package/dist/node/devices/movehubmediumlinearmotor.js +0 -12
  176. package/dist/node/devices/movehubmediumlinearmotor.js.map +0 -1
  177. package/dist/node/devices/movehubtiltsensor.d.ts +0 -16
  178. package/dist/node/devices/movehubtiltsensor.js +0 -36
  179. package/dist/node/devices/movehubtiltsensor.js.map +0 -1
  180. package/dist/node/devices/piezobuzzer.d.ts +0 -17
  181. package/dist/node/devices/piezobuzzer.js +0 -28
  182. package/dist/node/devices/piezobuzzer.js.map +0 -1
  183. package/dist/node/devices/remotecontrolbutton.d.ts +0 -19
  184. package/dist/node/devices/remotecontrolbutton.js +0 -40
  185. package/dist/node/devices/remotecontrolbutton.js.map +0 -1
  186. package/dist/node/devices/sensor.d.ts +0 -305
  187. package/dist/node/devices/sensor.js +0 -662
  188. package/dist/node/devices/sensor.js.map +0 -1
  189. package/dist/node/devices/simplemediumlinearmotor.d.ts +0 -9
  190. package/dist/node/devices/simplemediumlinearmotor.js +0 -12
  191. package/dist/node/devices/simplemediumlinearmotor.js.map +0 -1
  192. package/dist/node/devices/tachomotor.d.ts +0 -70
  193. package/dist/node/devices/tachomotor.js +0 -167
  194. package/dist/node/devices/tachomotor.js.map +0 -1
  195. package/dist/node/devices/technic3x3colorlightmatrix.d.ts +0 -22
  196. package/dist/node/devices/technic3x3colorlightmatrix.js +0 -54
  197. package/dist/node/devices/technic3x3colorlightmatrix.js.map +0 -1
  198. package/dist/node/devices/techniccolorsensor.d.ts +0 -27
  199. package/dist/node/devices/techniccolorsensor.js +0 -72
  200. package/dist/node/devices/techniccolorsensor.js.map +0 -1
  201. package/dist/node/devices/technicdistancesensor.d.ts +0 -27
  202. package/dist/node/devices/technicdistancesensor.js +0 -58
  203. package/dist/node/devices/technicdistancesensor.js.map +0 -1
  204. package/dist/node/devices/technicforcesensor.d.ts +0 -18
  205. package/dist/node/devices/technicforcesensor.js +0 -58
  206. package/dist/node/devices/technicforcesensor.js.map +0 -1
  207. package/dist/node/devices/techniclargeangularmotor.d.ts +0 -12
  208. package/dist/node/devices/techniclargeangularmotor.js +0 -12
  209. package/dist/node/devices/techniclargeangularmotor.js.map +0 -1
  210. package/dist/node/devices/techniclargelinearmotor.d.ts +0 -9
  211. package/dist/node/devices/techniclargelinearmotor.js +0 -12
  212. package/dist/node/devices/techniclargelinearmotor.js.map +0 -1
  213. package/dist/node/devices/technicmediumangularmotor.d.ts +0 -12
  214. package/dist/node/devices/technicmediumangularmotor.js +0 -12
  215. package/dist/node/devices/technicmediumangularmotor.js.map +0 -1
  216. package/dist/node/devices/technicmediumhubaccelerometersensor.d.ts +0 -16
  217. package/dist/node/devices/technicmediumhubaccelerometersensor.js +0 -38
  218. package/dist/node/devices/technicmediumhubaccelerometersensor.js.map +0 -1
  219. package/dist/node/devices/technicmediumhubgyrosensor.d.ts +0 -16
  220. package/dist/node/devices/technicmediumhubgyrosensor.js +0 -38
  221. package/dist/node/devices/technicmediumhubgyrosensor.js.map +0 -1
  222. package/dist/node/devices/technicmediumhubtiltsensor.d.ts +0 -40
  223. package/dist/node/devices/technicmediumhubtiltsensor.js +0 -106
  224. package/dist/node/devices/technicmediumhubtiltsensor.js.map +0 -1
  225. package/dist/node/devices/technicsmallangularmotor.d.ts +0 -12
  226. package/dist/node/devices/technicsmallangularmotor.js +0 -12
  227. package/dist/node/devices/technicsmallangularmotor.js.map +0 -1
  228. package/dist/node/devices/technicxlargelinearmotor.d.ts +0 -9
  229. package/dist/node/devices/technicxlargelinearmotor.js +0 -12
  230. package/dist/node/devices/technicxlargelinearmotor.js.map +0 -1
  231. package/dist/node/devices/tiltsensor.d.ts +0 -16
  232. package/dist/node/devices/tiltsensor.js +0 -36
  233. package/dist/node/devices/tiltsensor.js.map +0 -1
  234. package/dist/node/devices/trainmotor.d.ts +0 -9
  235. package/dist/node/devices/trainmotor.js +0 -12
  236. package/dist/node/devices/trainmotor.js.map +0 -1
  237. package/dist/node/devices/voltagesensor.d.ts +0 -16
  238. package/dist/node/devices/voltagesensor.js +0 -59
  239. package/dist/node/devices/voltagesensor.js.map +0 -1
  240. package/dist/node/hub.d.ts +0 -291
  241. package/dist/node/hub.js +0 -778
  242. package/dist/node/hub.js.map +0 -1
  243. package/dist/node/hubs/basehub.d.ts +0 -162
  244. package/dist/node/hubs/basehub.js +0 -392
  245. package/dist/node/hubs/basehub.js.map +0 -1
  246. package/dist/node/hubs/duplotrainbase.d.ts +0 -17
  247. package/dist/node/hubs/duplotrainbase.js +0 -35
  248. package/dist/node/hubs/duplotrainbase.js.map +0 -1
  249. package/dist/node/hubs/hub.d.ts +0 -19
  250. package/dist/node/hubs/hub.js +0 -44
  251. package/dist/node/hubs/hub.js.map +0 -1
  252. package/dist/node/hubs/lpf2hub.d.ts +0 -48
  253. package/dist/node/hubs/lpf2hub.js +0 -314
  254. package/dist/node/hubs/lpf2hub.js.map +0 -1
  255. package/dist/node/hubs/mario.d.ts +0 -17
  256. package/dist/node/hubs/mario.js +0 -31
  257. package/dist/node/hubs/mario.js.map +0 -1
  258. package/dist/node/hubs/movehub.d.ts +0 -18
  259. package/dist/node/hubs/movehub.js +0 -46
  260. package/dist/node/hubs/movehub.js.map +0 -1
  261. package/dist/node/hubs/remotecontrol.d.ts +0 -17
  262. package/dist/node/hubs/remotecontrol.js +0 -37
  263. package/dist/node/hubs/remotecontrol.js.map +0 -1
  264. package/dist/node/hubs/technicmediumhub.d.ts +0 -17
  265. package/dist/node/hubs/technicmediumhub.js +0 -42
  266. package/dist/node/hubs/technicmediumhub.js.map +0 -1
  267. package/dist/node/hubs/technicsmallhub.d.ts +0 -18
  268. package/dist/node/hubs/technicsmallhub.js +0 -41
  269. package/dist/node/hubs/technicsmallhub.js.map +0 -1
  270. package/dist/node/hubs/wedo2smarthub.d.ts +0 -40
  271. package/dist/node/hubs/wedo2smarthub.js +0 -188
  272. package/dist/node/hubs/wedo2smarthub.js.map +0 -1
  273. package/dist/node/index-browser.d.ts +0 -1
  274. package/dist/node/index-browser.js +0 -96
  275. package/dist/node/index-browser.js.map +0 -1
  276. package/dist/node/index-node.d.ts +0 -49
  277. package/dist/node/index-node.js +0 -50
  278. package/dist/node/index-node.js.map +0 -1
  279. package/dist/node/index.d.ts +0 -31
  280. package/dist/node/index.js +0 -93
  281. package/dist/node/index.js.map +0 -1
  282. package/dist/node/index.mjs +0 -0
  283. package/dist/node/interfaces.d.ts +0 -23
  284. package/dist/node/interfaces.js +0 -2
  285. package/dist/node/interfaces.js.map +0 -1
  286. package/dist/node/nobleabstraction.d.ts +0 -26
  287. package/dist/node/nobleabstraction.js +0 -123
  288. package/dist/node/nobleabstraction.js.map +0 -1
  289. package/dist/node/poweredup-browser.d.ts +0 -50
  290. package/dist/node/poweredup-browser.js +0 -216
  291. package/dist/node/poweredup-browser.js.map +0 -1
  292. package/dist/node/poweredup-node.d.ts +0 -54
  293. package/dist/node/poweredup-node.js +0 -173
  294. package/dist/node/poweredup-node.js.map +0 -1
  295. package/dist/node/poweredup.d.ts +0 -83
  296. package/dist/node/poweredup.js +0 -542
  297. package/dist/node/poweredup.js.map +0 -1
  298. package/dist/node/protocol-wedo.d.ts +0 -158
  299. package/dist/node/protocol-wedo.js +0 -342
  300. package/dist/node/protocol-wedo.js.map +0 -1
  301. package/dist/node/protocol.d.ts +0 -340
  302. package/dist/node/protocol.js +0 -730
  303. package/dist/node/protocol.js.map +0 -1
  304. package/dist/node/types.d.ts +0 -408
  305. package/dist/node/types.js +0 -291
  306. package/dist/node/types.js.map +0 -1
  307. package/dist/node/utils.d.ts +0 -12
  308. package/dist/node/utils.js +0 -90
  309. package/dist/node/utils.js.map +0 -1
  310. package/dist/node/webbleabstraction.d.ts +0 -26
  311. package/dist/node/webbleabstraction.js +0 -104
  312. package/dist/node/webbleabstraction.js.map +0 -1
  313. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,542 +0,0 @@
1
- "use strict";
2
- /**
3
- * PoweredUp - Main scanner class for discovering LEGO Powered UP hubs
4
- *
5
- * Uses @stoprocent/noble for BLE scanning on Node.js
6
- */
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || (function () {
24
- var ownKeys = function(o) {
25
- ownKeys = Object.getOwnPropertyNames || function (o) {
26
- var ar = [];
27
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
- return ar;
29
- };
30
- return ownKeys(o);
31
- };
32
- return function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
- })();
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.PoweredUpWeb = exports.PoweredUp = void 0;
42
- const events_1 = require("events");
43
- const types_1 = require("./types");
44
- const hub_1 = require("./hub");
45
- const devices_1 = require("./devices");
46
- // ============================================================================
47
- // BLE Service UUIDs
48
- // ============================================================================
49
- const LWP3_SERVICE_UUID = "00001623-1212-efde-1623-785feabcd123";
50
- const WEDO2_SERVICE_UUID = "00001523-1212-efde-1523-785feabcd123";
51
- // Normalized (no dashes, lowercase)
52
- const LWP3_SERVICE_UUID_SHORT = "000016231212efde1623785feabcd123";
53
- const WEDO2_SERVICE_UUID_SHORT = "000015231212efde1523785feabcd123";
54
- // ============================================================================
55
- // PoweredUp Scanner
56
- // ============================================================================
57
- /**
58
- * PoweredUp scanner - discovers LEGO Powered UP hubs via BLE
59
- */
60
- class PoweredUp extends events_1.EventEmitter {
61
- constructor() {
62
- super();
63
- this._noble = null;
64
- this._isScanning = false;
65
- this._discoveredHubs = new Map();
66
- this._connectedHubs = new Set();
67
- }
68
- /**
69
- * Check if currently scanning
70
- */
71
- get isScanning() {
72
- return this._isScanning;
73
- }
74
- /**
75
- * Get all discovered hubs
76
- */
77
- get discoveredHubs() {
78
- return Array.from(this._discoveredHubs.values());
79
- }
80
- /**
81
- * Get all connected hubs
82
- */
83
- get connectedHubs() {
84
- return Array.from(this._connectedHubs);
85
- }
86
- /**
87
- * Start scanning for hubs
88
- */
89
- async scan() {
90
- if (this._isScanning) {
91
- return;
92
- }
93
- await this._initNoble();
94
- if (!this._noble) {
95
- throw new Error("Noble not available - BLE scanning not supported");
96
- }
97
- return new Promise((resolve, reject) => {
98
- const stateHandler = (state) => {
99
- if (state === "poweredOn") {
100
- this._noble.removeListener("stateChange", stateHandler);
101
- this._startScanning();
102
- resolve();
103
- }
104
- else if (state === "poweredOff" || state === "unsupported") {
105
- this._noble.removeListener("stateChange", stateHandler);
106
- reject(new Error(`Bluetooth ${state}`));
107
- }
108
- };
109
- if (this._noble.state === "poweredOn") {
110
- this._startScanning();
111
- resolve();
112
- }
113
- else {
114
- this._noble.on("stateChange", stateHandler);
115
- }
116
- });
117
- }
118
- /**
119
- * Stop scanning for hubs
120
- */
121
- stop() {
122
- if (!this._isScanning || !this._noble) {
123
- return;
124
- }
125
- this._noble.stopScanning();
126
- this._isScanning = false;
127
- }
128
- /**
129
- * Get a hub by ID
130
- */
131
- getHub(id) {
132
- return this._discoveredHubs.get(id);
133
- }
134
- /**
135
- * Get hubs by type
136
- */
137
- getHubsByType(hubType) {
138
- return this.discoveredHubs.filter(hub => hub.hubType === hubType);
139
- }
140
- // Event emitter type overrides
141
- on(event, listener) {
142
- return super.on(event, listener);
143
- }
144
- once(event, listener) {
145
- return super.once(event, listener);
146
- }
147
- emit(event, ...args) {
148
- return super.emit(event, ...args);
149
- }
150
- // ========================================================================
151
- // Private methods
152
- // ========================================================================
153
- async _initNoble() {
154
- if (this._noble) {
155
- return;
156
- }
157
- try {
158
- // Try to load noble
159
- const noble = await Promise.resolve().then(() => __importStar(require("@stoprocent/noble")));
160
- this._noble = (noble.default || noble);
161
- }
162
- catch (error) {
163
- throw new Error("@stoprocent/noble not found. Install it with: npm install @stoprocent/noble");
164
- }
165
- }
166
- _startScanning() {
167
- if (!this._noble)
168
- return;
169
- // Scan for LWP3 and WeDo 2.0 services
170
- const serviceUUIDs = [LWP3_SERVICE_UUID_SHORT, WEDO2_SERVICE_UUID_SHORT];
171
- this._noble.on("discover", (peripheral) => this._handleDiscover(peripheral));
172
- this._noble.startScanning(serviceUUIDs, true);
173
- this._isScanning = true;
174
- }
175
- _handleDiscover(peripheral) {
176
- // Check if already discovered
177
- if (this._discoveredHubs.has(peripheral.id)) {
178
- return;
179
- }
180
- // Detect hub type from advertisement
181
- const hubType = this._detectHubTypeFromAdvertisement(peripheral);
182
- if (hubType === null) {
183
- return;
184
- }
185
- // Create BLE peripheral adapter
186
- const blePeripheral = this._createBLEPeripheral(peripheral);
187
- // Create hub instance
188
- const hub = (0, hub_1.createHub)(blePeripheral, hubType);
189
- // Store hub
190
- this._discoveredHubs.set(peripheral.id, hub);
191
- // Set up hub event handlers
192
- this._setupHubEvents(hub, peripheral.id);
193
- // Emit discover event
194
- this.emit("discover", hub);
195
- }
196
- _detectHubTypeFromAdvertisement(peripheral) {
197
- const serviceUuids = peripheral.advertisement.serviceUuids || [];
198
- const manufacturerData = peripheral.advertisement.manufacturerData;
199
- // Check for WeDo 2.0 (service UUID contains 1523)
200
- if (serviceUuids.some(uuid => uuid.toLowerCase().includes("1523"))) {
201
- return types_1.HubType.WEDO2_SMART_HUB;
202
- }
203
- // Check for LWP3 hubs (service UUID contains 1623)
204
- if (serviceUuids.some(uuid => uuid.toLowerCase().includes("1623"))) {
205
- // Try to detect specific hub type from manufacturer data
206
- if (manufacturerData && manufacturerData.length >= 4) {
207
- // Manufacturer data format: company ID (2 bytes) + hub type (1 byte) + ...
208
- const hubTypeByte = manufacturerData[3];
209
- return this._hubTypeFromByte(hubTypeByte);
210
- }
211
- // Default to generic Hub
212
- return types_1.HubType.HUB;
213
- }
214
- return null;
215
- }
216
- _hubTypeFromByte(typeByte) {
217
- switch (typeByte) {
218
- case 0x00:
219
- return types_1.HubType.WEDO2_SMART_HUB;
220
- case 0x20:
221
- return types_1.HubType.DUPLO_TRAIN_BASE;
222
- case 0x40:
223
- return types_1.HubType.MOVE_HUB;
224
- case 0x41:
225
- return types_1.HubType.HUB;
226
- case 0x42:
227
- return types_1.HubType.REMOTE_CONTROL;
228
- case 0x80:
229
- return types_1.HubType.TECHNIC_MEDIUM_HUB;
230
- case 0x81:
231
- return types_1.HubType.TECHNIC_LARGE_HUB;
232
- case 0x83:
233
- return types_1.HubType.MARIO;
234
- case 0x84:
235
- return types_1.HubType.LUIGI;
236
- case 0x85:
237
- return types_1.HubType.PEACH;
238
- default:
239
- return types_1.HubType.UNKNOWN;
240
- }
241
- }
242
- _createBLEPeripheral(noble) {
243
- var _a, _b;
244
- return {
245
- id: noble.id,
246
- uuid: noble.uuid,
247
- name: ((_a = noble.advertisement) === null || _a === void 0 ? void 0 : _a.localName) || "",
248
- rssi: noble.rssi,
249
- manufacturerData: (_b = noble.advertisement) === null || _b === void 0 ? void 0 : _b.manufacturerData,
250
- connect: () => {
251
- return new Promise((resolve, reject) => {
252
- noble.connect((error) => {
253
- if (error) {
254
- reject(error);
255
- }
256
- else {
257
- resolve();
258
- }
259
- });
260
- });
261
- },
262
- disconnect: () => {
263
- return new Promise((resolve) => {
264
- noble.disconnect(() => resolve());
265
- });
266
- },
267
- discoverServices: async (serviceUUIDs) => {
268
- return new Promise((resolve, reject) => {
269
- noble.discoverServices(serviceUUIDs, (error, services) => {
270
- if (error) {
271
- reject(error);
272
- return;
273
- }
274
- resolve(services.map(service => ({
275
- uuid: service.uuid,
276
- discoverCharacteristics: async (charUUIDs) => {
277
- return new Promise((resolveChars, rejectChars) => {
278
- service.discoverCharacteristics(charUUIDs, (charError, chars) => {
279
- if (charError) {
280
- rejectChars(charError);
281
- return;
282
- }
283
- resolveChars(chars.map(char => ({
284
- uuid: char.uuid,
285
- properties: char.properties,
286
- read: async () => {
287
- return new Promise((resolveRead, rejectRead) => {
288
- char.read((readError, data) => {
289
- if (readError) {
290
- rejectRead(readError);
291
- }
292
- else {
293
- resolveRead(data);
294
- }
295
- });
296
- });
297
- },
298
- write: async (data, withoutResponse) => {
299
- return new Promise((resolveWrite, rejectWrite) => {
300
- char.write(data, withoutResponse, (writeError) => {
301
- if (writeError) {
302
- rejectWrite(writeError);
303
- }
304
- else {
305
- resolveWrite();
306
- }
307
- });
308
- });
309
- },
310
- subscribe: async (callback) => {
311
- return new Promise((resolveSub, rejectSub) => {
312
- // Set up data listener for notifications
313
- char.on("data", (data, isNotification) => {
314
- if (isNotification) {
315
- callback(data);
316
- }
317
- });
318
- char.subscribe((subError) => {
319
- if (subError) {
320
- rejectSub(subError);
321
- }
322
- else {
323
- resolveSub();
324
- }
325
- });
326
- });
327
- },
328
- unsubscribe: async () => {
329
- return new Promise((resolveUnsub, rejectUnsub) => {
330
- char.unsubscribe((unsubError) => {
331
- if (unsubError) {
332
- rejectUnsub(unsubError);
333
- }
334
- else {
335
- resolveUnsub();
336
- }
337
- });
338
- });
339
- },
340
- })));
341
- });
342
- });
343
- },
344
- })));
345
- });
346
- });
347
- },
348
- };
349
- }
350
- _setupHubEvents(hub, id) {
351
- hub.on("connect", () => {
352
- this._connectedHubs.add(hub);
353
- });
354
- hub.on("disconnect", () => {
355
- this._connectedHubs.delete(hub);
356
- });
357
- // Set up device creation when ports are attached
358
- hub.on("attach", (portInfo) => {
359
- const device = (0, devices_1.createDevice)(hub, portInfo);
360
- // Emit device attach event on the hub
361
- hub.emit("device", device);
362
- });
363
- }
364
- }
365
- exports.PoweredUp = PoweredUp;
366
- // ============================================================================
367
- // Web Bluetooth Support
368
- // ============================================================================
369
- /**
370
- * PoweredUp scanner for Web Bluetooth (browser)
371
- */
372
- class PoweredUpWeb extends events_1.EventEmitter {
373
- constructor() {
374
- super();
375
- this._discoveredHubs = new Map();
376
- this._connectedHubs = new Set();
377
- }
378
- /**
379
- * Get all connected hubs
380
- */
381
- get connectedHubs() {
382
- return Array.from(this._connectedHubs);
383
- }
384
- /**
385
- * Request a hub via Web Bluetooth (opens browser's device picker)
386
- */
387
- async requestHub() {
388
- if (typeof navigator === "undefined" || !navigator.bluetooth) {
389
- throw new Error("Web Bluetooth not supported in this environment");
390
- }
391
- const options = {
392
- filters: [
393
- { services: [LWP3_SERVICE_UUID] },
394
- { services: [WEDO2_SERVICE_UUID] },
395
- ],
396
- optionalServices: [LWP3_SERVICE_UUID, WEDO2_SERVICE_UUID],
397
- };
398
- const device = await navigator.bluetooth.requestDevice(options);
399
- if (!device.gatt) {
400
- throw new Error("GATT not available on device");
401
- }
402
- const server = await device.gatt.connect();
403
- // Detect hub type
404
- const hubType = await this._detectHubType(server);
405
- // Create BLE peripheral adapter for Web Bluetooth
406
- const blePeripheral = this._createWebBLEPeripheral(device, server);
407
- // Create hub
408
- const hub = (0, hub_1.createHub)(blePeripheral, hubType);
409
- // Store hub
410
- this._discoveredHubs.set(device.id, hub);
411
- this._setupHubEvents(hub, device.id);
412
- return hub;
413
- }
414
- async _detectHubType(server) {
415
- try {
416
- await server.getPrimaryService(WEDO2_SERVICE_UUID);
417
- return types_1.HubType.WEDO2_SMART_HUB;
418
- }
419
- catch (_a) {
420
- // Not WeDo 2.0
421
- }
422
- try {
423
- await server.getPrimaryService(LWP3_SERVICE_UUID);
424
- // Default to Hub for LWP3
425
- return types_1.HubType.HUB;
426
- }
427
- catch (_b) {
428
- // Unknown
429
- }
430
- return types_1.HubType.UNKNOWN;
431
- }
432
- _createWebBLEPeripheral(device, server) {
433
- return {
434
- id: device.id,
435
- uuid: device.id,
436
- name: device.name || "",
437
- rssi: 0,
438
- connect: async () => {
439
- if (!server.connected) {
440
- await server.connect();
441
- }
442
- },
443
- disconnect: async () => {
444
- if (server.connected) {
445
- server.disconnect();
446
- }
447
- },
448
- discoverServices: async (serviceUUIDs) => {
449
- const services = [];
450
- for (const uuid of serviceUUIDs) {
451
- try {
452
- const service = await server.getPrimaryService(uuid);
453
- services.push({
454
- uuid: service.uuid,
455
- discoverCharacteristics: async (charUUIDs) => {
456
- const chars = [];
457
- for (const charUuid of charUUIDs) {
458
- try {
459
- const char = await service.getCharacteristic(charUuid);
460
- chars.push(this._wrapWebCharacteristic(char));
461
- }
462
- catch (_a) {
463
- // Characteristic not found
464
- }
465
- }
466
- return chars;
467
- },
468
- });
469
- }
470
- catch (_a) {
471
- // Service not found
472
- }
473
- }
474
- return services;
475
- },
476
- };
477
- }
478
- _wrapWebCharacteristic(char) {
479
- const listeners = new Map();
480
- return {
481
- uuid: char.uuid,
482
- properties: [
483
- char.properties.read ? "read" : "",
484
- char.properties.write ? "write" : "",
485
- char.properties.notify ? "notify" : "",
486
- ].filter(Boolean),
487
- read: async () => {
488
- const value = await char.readValue();
489
- return Buffer.from(value.buffer);
490
- },
491
- write: async (data, withoutResponse) => {
492
- // Convert Buffer to Uint8Array for Web Bluetooth API
493
- const arrayBuffer = new Uint8Array(data);
494
- if (withoutResponse && char.properties.writeWithoutResponse) {
495
- await char.writeValueWithoutResponse(arrayBuffer);
496
- }
497
- else {
498
- await char.writeValueWithResponse(arrayBuffer);
499
- }
500
- },
501
- subscribe: async () => {
502
- await char.startNotifications();
503
- char.addEventListener("characteristicvaluechanged", (event) => {
504
- const target = event.target;
505
- const data = Buffer.from(target.value.buffer);
506
- const dataListeners = listeners.get("data") || [];
507
- for (const listener of dataListeners) {
508
- listener(data, true);
509
- }
510
- });
511
- },
512
- unsubscribe: async () => {
513
- await char.stopNotifications();
514
- },
515
- };
516
- }
517
- _setupHubEvents(hub, id) {
518
- hub.on("connect", () => {
519
- this._connectedHubs.add(hub);
520
- });
521
- hub.on("disconnect", () => {
522
- this._connectedHubs.delete(hub);
523
- this._discoveredHubs.delete(id);
524
- });
525
- hub.on("attach", (portInfo) => {
526
- const device = (0, devices_1.createDevice)(hub, portInfo);
527
- hub.emit("device", device);
528
- });
529
- }
530
- // Event emitter type overrides
531
- on(event, listener) {
532
- return super.on(event, listener);
533
- }
534
- once(event, listener) {
535
- return super.once(event, listener);
536
- }
537
- emit(event, ...args) {
538
- return super.emit(event, ...args);
539
- }
540
- }
541
- exports.PoweredUpWeb = PoweredUpWeb;
542
- //# sourceMappingURL=poweredup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"poweredup.js","sourceRoot":"","sources":["../../src/poweredup.ts"],"names":[],"mappings":"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"}