node-switchbot 3.5.0-beta.0 → 3.5.0-beta.1

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 (452) hide show
  1. package/.github/npm-version-script-esm.js +97 -0
  2. package/.github/workflows/beta-release.yml +1 -1
  3. package/.github/workflows/release.yml +1 -1
  4. package/BLE.md +14 -13
  5. package/CHANGELOG.md +68 -1
  6. package/OpenAPI.md +13 -12
  7. package/branding/Node_x_SwitchBot.svg +2 -3
  8. package/dist/device.d.ts +1193 -3
  9. package/dist/device.d.ts.map +1 -1
  10. package/dist/device.js +2478 -2
  11. package/dist/device.js.map +1 -1
  12. package/dist/index.d.ts +0 -17
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +0 -17
  15. package/dist/index.js.map +1 -1
  16. package/dist/{test/index.test.d.ts.map → index.test.d.ts.map} +1 -1
  17. package/dist/{test/index.test.js → index.test.js} +1 -1
  18. package/dist/index.test.js.map +1 -0
  19. package/dist/parameter-checker.d.ts +1 -1
  20. package/dist/parameter-checker.d.ts.map +1 -1
  21. package/dist/settings.d.ts +12 -28
  22. package/dist/settings.d.ts.map +1 -1
  23. package/dist/settings.js +24 -22
  24. package/dist/settings.js.map +1 -1
  25. package/dist/{test/settings.test.d.ts.map → settings.test.d.ts.map} +1 -1
  26. package/dist/{test/settings.test.js → settings.test.js} +6 -6
  27. package/dist/{test/settings.test.js.map → settings.test.js.map} +1 -1
  28. package/dist/switchbot-ble.d.ts +1 -1
  29. package/dist/switchbot-ble.d.ts.map +1 -1
  30. package/dist/switchbot-ble.js +8 -27
  31. package/dist/switchbot-ble.js.map +1 -1
  32. package/dist/switchbot-openapi.d.ts +33 -22
  33. package/dist/switchbot-openapi.d.ts.map +1 -1
  34. package/dist/switchbot-openapi.js +104 -64
  35. package/dist/switchbot-openapi.js.map +1 -1
  36. package/dist/types/bledevicestatus.d.ts +32 -8
  37. package/dist/types/bledevicestatus.d.ts.map +1 -1
  38. package/dist/types/devicestatus.d.ts +35 -1
  39. package/dist/types/devicestatus.d.ts.map +1 -1
  40. package/dist/types/devicewebhookstatus.d.ts +38 -1
  41. package/dist/types/devicewebhookstatus.d.ts.map +1 -1
  42. package/dist/types/types.d.ts +0 -223
  43. package/dist/types/types.d.ts.map +1 -1
  44. package/dist/types/types.js +1 -144
  45. package/dist/types/types.js.map +1 -1
  46. package/docs/assets/hierarchy.js +1 -0
  47. package/docs/assets/icons.js +1 -1
  48. package/docs/assets/icons.svg +1 -1
  49. package/docs/assets/main.js +5 -5
  50. package/docs/assets/navigation.js +1 -1
  51. package/docs/assets/search.js +1 -1
  52. package/docs/assets/style.css +1405 -1288
  53. package/docs/classes/Advertising.html +10 -10
  54. package/docs/classes/SwitchBotBLE.html +13 -13
  55. package/docs/classes/SwitchBotOpenAPI.html +38 -28
  56. package/docs/classes/SwitchbotDevice.html +26 -23
  57. package/docs/classes/WoBlindTilt.html +45 -42
  58. package/docs/classes/WoBulb.html +42 -39
  59. package/docs/classes/WoCeilingLight.html +50 -47
  60. package/docs/classes/WoContact.html +30 -27
  61. package/docs/classes/WoCurtain.html +40 -37
  62. package/docs/classes/WoHand.html +37 -34
  63. package/docs/classes/WoHub2.html +30 -27
  64. package/docs/classes/WoHumi.html +45 -40
  65. package/docs/classes/WoHumi2.html +67 -0
  66. package/docs/classes/WoIOSensorTH.html +30 -27
  67. package/docs/classes/WoKeypad.html +52 -0
  68. package/docs/classes/WoLeak.html +53 -0
  69. package/docs/classes/WoPlugMiniJP.html +78 -0
  70. package/docs/classes/WoPlugMiniUS.html +39 -36
  71. package/docs/classes/WoPresence.html +30 -27
  72. package/docs/classes/WoRelaySwitch1.html +57 -0
  73. package/docs/classes/WoRelaySwitch1PM.html +57 -0
  74. package/docs/classes/WoRemote.html +52 -0
  75. package/docs/classes/WoSensorTH.html +27 -24
  76. package/docs/classes/WoSensorTHPlus.html +46 -0
  77. package/docs/classes/WoSensorTHPro.html +46 -0
  78. package/docs/classes/WoSensorTHProCO2.html +46 -0
  79. package/docs/classes/WoSmartLock.html +49 -46
  80. package/docs/classes/WoSmartLockPro.html +49 -46
  81. package/docs/classes/WoStrip.html +44 -41
  82. package/docs/enums/LogLevel.html +10 -10
  83. package/docs/enums/SwitchBotBLEModel.html +29 -27
  84. package/docs/enums/SwitchBotBLEModelFriendlyName.html +30 -26
  85. package/docs/enums/SwitchBotBLEModelName.html +28 -26
  86. package/docs/enums/SwitchBotModel.html +47 -43
  87. package/docs/hierarchy.html +1 -1
  88. package/docs/index.html +13 -13
  89. package/docs/interfaces/AdvertisementData.html +3 -3
  90. package/docs/interfaces/Chars.html +2 -2
  91. package/docs/interfaces/ErrorObject.html +2 -2
  92. package/docs/interfaces/NobleTypes.html +2 -2
  93. package/docs/interfaces/Params.html +2 -2
  94. package/docs/interfaces/Rule.html +4 -4
  95. package/docs/interfaces/ServiceData.html +2 -2
  96. package/docs/interfaces/SwitchBotBLEDevice.html +23 -23
  97. package/docs/interfaces/WebhookDetail.html +4 -4
  98. package/docs/interfaces/ad.html +3 -3
  99. package/docs/interfaces/body.html +3 -3
  100. package/docs/interfaces/bodyChange.html +3 -3
  101. package/docs/interfaces/deleteWebhookResponse.html +3 -3
  102. package/docs/interfaces/device.html +6 -6
  103. package/docs/interfaces/deviceList.html +2 -2
  104. package/docs/interfaces/deviceStatus.html +6 -6
  105. package/docs/interfaces/deviceStatusRequest.html +3 -3
  106. package/docs/interfaces/deviceWebhook.html +4 -4
  107. package/docs/interfaces/deviceWebhookContext.html +4 -4
  108. package/docs/interfaces/devices.html +3 -3
  109. package/docs/interfaces/infraredRemoteList.html +2 -2
  110. package/docs/interfaces/irdevice.html +5 -5
  111. package/docs/interfaces/pushResponse.html +3 -3
  112. package/docs/interfaces/queryWebhookResponse.html +3 -3
  113. package/docs/interfaces/setupWebhookResponse.html +3 -3
  114. package/docs/interfaces/switchbot.html +2 -2
  115. package/docs/interfaces/updateWebhookResponse.html +3 -3
  116. package/docs/interfaces/webhookRequest.html +3 -3
  117. package/docs/media/BLE.md +14 -13
  118. package/docs/media/OpenAPI.md +13 -12
  119. package/docs/modules.html +1 -170
  120. package/docs/types/MacAddress.html +1 -1
  121. package/docs/types/batteryCirculatorFan.html +1 -1
  122. package/docs/types/batteryCirculatorFanServiceData.html +1 -1
  123. package/docs/types/batteryCirculatorFanStatus.html +1 -1
  124. package/docs/types/batteryCirculatorFanWebhookContext.html +1 -1
  125. package/docs/types/blindTilt.html +1 -1
  126. package/docs/types/blindTiltServiceData.html +1 -1
  127. package/docs/types/blindTiltStatus.html +1 -1
  128. package/docs/types/blindTiltWebhookContext.html +1 -1
  129. package/docs/types/bot.html +1 -1
  130. package/docs/types/botServiceData.html +1 -1
  131. package/docs/types/botStatus.html +1 -1
  132. package/docs/types/botWebhookContext.html +1 -1
  133. package/docs/types/ceilingLight.html +1 -1
  134. package/docs/types/ceilingLightPro.html +1 -1
  135. package/docs/types/ceilingLightProServiceData.html +1 -1
  136. package/docs/types/ceilingLightProStatus.html +1 -1
  137. package/docs/types/ceilingLightProWebhookContext.html +1 -1
  138. package/docs/types/ceilingLightServiceData.html +1 -1
  139. package/docs/types/ceilingLightStatus.html +1 -1
  140. package/docs/types/ceilingLightWebhookContext.html +1 -1
  141. package/docs/types/circulatorFanStatus.html +1 -0
  142. package/docs/types/circulatorFanWebhookContext.html +1 -0
  143. package/docs/types/colorBulb.html +1 -1
  144. package/docs/types/colorBulbServiceData.html +1 -1
  145. package/docs/types/colorBulbStatus.html +1 -1
  146. package/docs/types/colorBulbWebhookContext.html +1 -1
  147. package/docs/types/contactSensor.html +1 -1
  148. package/docs/types/contactSensorServiceData.html +1 -1
  149. package/docs/types/contactSensorStatus.html +1 -1
  150. package/docs/types/contactSensorWebhookContext.html +1 -1
  151. package/docs/types/curtain.html +1 -1
  152. package/docs/types/curtain3.html +1 -1
  153. package/docs/types/curtain3ServiceData.html +1 -1
  154. package/docs/types/curtain3WebhookContext.html +1 -1
  155. package/docs/types/curtainServiceData.html +1 -1
  156. package/docs/types/curtainStatus.html +1 -1
  157. package/docs/types/curtainWebhookContext.html +1 -1
  158. package/docs/types/floorCleaningRobotS10.html +1 -1
  159. package/docs/types/floorCleaningRobotS10Status.html +1 -1
  160. package/docs/types/floorCleaningRobotS10WebhookContext.html +1 -1
  161. package/docs/types/hub2.html +1 -1
  162. package/docs/types/hub2ServiceData.html +1 -1
  163. package/docs/types/hub2Status.html +1 -1
  164. package/docs/types/hub2WebhookContext.html +1 -1
  165. package/docs/types/humidifier.html +1 -1
  166. package/docs/types/humidifier2ServiceData.html +1 -0
  167. package/docs/types/humidifier2Status.html +1 -0
  168. package/docs/types/humidifier2WebhookContext.html +1 -0
  169. package/docs/types/humidifierServiceData.html +1 -1
  170. package/docs/types/humidifierStatus.html +1 -1
  171. package/docs/types/humidifierWebhookContext.html +1 -1
  172. package/docs/types/indoorCam.html +1 -1
  173. package/docs/types/indoorCameraWebhookContext.html +1 -1
  174. package/docs/types/keypad.html +1 -1
  175. package/docs/types/keypadDetectorServiceData.html +1 -1
  176. package/docs/types/keypadTouch.html +1 -1
  177. package/docs/types/keypadTouchWebhookContext.html +1 -1
  178. package/docs/types/keypadWebhookContext.html +1 -1
  179. package/docs/types/lock.html +1 -1
  180. package/docs/types/lockPro.html +1 -1
  181. package/docs/types/lockProServiceData.html +1 -1
  182. package/docs/types/lockProStatus.html +1 -1
  183. package/docs/types/lockProWebhookContext.html +1 -1
  184. package/docs/types/lockServiceData.html +1 -1
  185. package/docs/types/lockStatus.html +1 -1
  186. package/docs/types/lockWebhookContext.html +1 -1
  187. package/docs/types/meter.html +1 -1
  188. package/docs/types/meterPlus.html +1 -1
  189. package/docs/types/meterPlusServiceData.html +1 -1
  190. package/docs/types/meterPlusStatus.html +1 -1
  191. package/docs/types/meterPlusWebhookContext.html +1 -1
  192. package/docs/types/meterPro.html +1 -1
  193. package/docs/types/meterProCO2ServiceData.html +1 -1
  194. package/docs/types/meterProCO2Status.html +1 -1
  195. package/docs/types/meterProCO2WebhookContext.html +1 -1
  196. package/docs/types/meterProServiceData.html +1 -1
  197. package/docs/types/meterProStatus.html +1 -1
  198. package/docs/types/meterProWebhookContext.html +1 -1
  199. package/docs/types/meterServiceData.html +1 -1
  200. package/docs/types/meterStatus.html +1 -1
  201. package/docs/types/meterWebhookContext.html +1 -1
  202. package/docs/types/motionSensor.html +1 -1
  203. package/docs/types/motionSensorServiceData.html +1 -1
  204. package/docs/types/motionSensorStatus.html +1 -1
  205. package/docs/types/motionSensorWebhookContext.html +1 -1
  206. package/docs/types/onadvertisement.html +1 -1
  207. package/docs/types/ondiscover.html +1 -1
  208. package/docs/types/outdoorMeter.html +1 -1
  209. package/docs/types/outdoorMeterServiceData.html +1 -1
  210. package/docs/types/outdoorMeterStatus.html +1 -1
  211. package/docs/types/outdoorMeterWebhookContext.html +1 -1
  212. package/docs/types/panTiltCamWebhookContext.html +1 -1
  213. package/docs/types/pantiltCam.html +1 -1
  214. package/docs/types/pantiltCam2k.html +1 -1
  215. package/docs/types/plug.html +1 -1
  216. package/docs/types/plugMini.html +1 -1
  217. package/docs/types/plugMiniJPServiceData.html +1 -1
  218. package/docs/types/plugMiniJPWebhookContext.html +1 -1
  219. package/docs/types/plugMiniStatus.html +1 -1
  220. package/docs/types/plugMiniUSServiceData.html +1 -1
  221. package/docs/types/plugMiniUSWebhookContext.html +1 -1
  222. package/docs/types/plugStatus.html +1 -1
  223. package/docs/types/plugWebhookContext.html +1 -1
  224. package/docs/types/relaySwitch1Context.html +1 -0
  225. package/docs/types/relaySwitch1PMContext.html +1 -0
  226. package/docs/types/relaySwitch1PMServiceData.html +1 -1
  227. package/docs/types/relaySwitch1PMStatus.html +1 -0
  228. package/docs/types/relaySwitch1ServiceData.html +1 -0
  229. package/docs/types/relaySwitch1Status.html +1 -0
  230. package/docs/types/remote.html +1 -1
  231. package/docs/types/remoteServiceData.html +1 -0
  232. package/docs/types/robotVacuumCleanerS1.html +1 -1
  233. package/docs/types/robotVacuumCleanerS1Plus.html +1 -1
  234. package/docs/types/robotVacuumCleanerS1PlusStatus.html +1 -1
  235. package/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +1 -1
  236. package/docs/types/robotVacuumCleanerS1Status.html +1 -1
  237. package/docs/types/robotVacuumCleanerS1WebhookContext.html +1 -1
  238. package/docs/types/robotVacuumCleanerServiceData.html +1 -1
  239. package/docs/types/stripLight.html +1 -1
  240. package/docs/types/stripLightServiceData.html +1 -1
  241. package/docs/types/stripLightStatus.html +1 -1
  242. package/docs/types/stripLightWebhookContext.html +1 -1
  243. package/docs/types/waterLeakDetector.html +1 -1
  244. package/docs/types/waterLeakDetectorServiceData.html +1 -1
  245. package/docs/types/waterLeakDetectorStatus.html +1 -1
  246. package/docs/types/waterLeakDetectorWebhookContext.html +1 -1
  247. package/package.json +16 -19
  248. package/.github/npm-version-script.cjs +0 -81
  249. package/dist/advertising.d.ts +0 -44
  250. package/dist/advertising.d.ts.map +0 -1
  251. package/dist/advertising.js +0 -163
  252. package/dist/advertising.js.map +0 -1
  253. package/dist/device/woblindtilt.d.ts +0 -78
  254. package/dist/device/woblindtilt.d.ts.map +0 -1
  255. package/dist/device/woblindtilt.js +0 -181
  256. package/dist/device/woblindtilt.js.map +0 -1
  257. package/dist/device/wobulb.d.ts +0 -70
  258. package/dist/device/wobulb.d.ts.map +0 -1
  259. package/dist/device/wobulb.js +0 -136
  260. package/dist/device/wobulb.js.map +0 -1
  261. package/dist/device/woceilinglight.d.ts +0 -74
  262. package/dist/device/woceilinglight.d.ts.map +0 -1
  263. package/dist/device/woceilinglight.js +0 -161
  264. package/dist/device/woceilinglight.js.map +0 -1
  265. package/dist/device/wocontact.d.ts +0 -19
  266. package/dist/device/wocontact.d.ts.map +0 -1
  267. package/dist/device/wocontact.js +0 -48
  268. package/dist/device/wocontact.js.map +0 -1
  269. package/dist/device/wocurtain.d.ts +0 -52
  270. package/dist/device/wocurtain.d.ts.map +0 -1
  271. package/dist/device/wocurtain.js +0 -135
  272. package/dist/device/wocurtain.js.map +0 -1
  273. package/dist/device/wohand.d.ts +0 -50
  274. package/dist/device/wohand.d.ts.map +0 -1
  275. package/dist/device/wohand.js +0 -82
  276. package/dist/device/wohand.js.map +0 -1
  277. package/dist/device/wohub2.d.ts +0 -19
  278. package/dist/device/wohub2.d.ts.map +0 -1
  279. package/dist/device/wohub2.js +0 -40
  280. package/dist/device/wohub2.js.map +0 -1
  281. package/dist/device/wohumi.d.ts +0 -50
  282. package/dist/device/wohumi.d.ts.map +0 -1
  283. package/dist/device/wohumi.js +0 -89
  284. package/dist/device/wohumi.js.map +0 -1
  285. package/dist/device/woiosensorth.d.ts +0 -20
  286. package/dist/device/woiosensorth.d.ts.map +0 -1
  287. package/dist/device/woiosensorth.js +0 -49
  288. package/dist/device/woiosensorth.js.map +0 -1
  289. package/dist/device/wokeypad.d.ts +0 -19
  290. package/dist/device/wokeypad.d.ts.map +0 -1
  291. package/dist/device/wokeypad.js +0 -51
  292. package/dist/device/wokeypad.js.map +0 -1
  293. package/dist/device/woleak.d.ts +0 -20
  294. package/dist/device/woleak.d.ts.map +0 -1
  295. package/dist/device/woleak.js +0 -52
  296. package/dist/device/woleak.js.map +0 -1
  297. package/dist/device/woplugmini.d.ts +0 -52
  298. package/dist/device/woplugmini.d.ts.map +0 -1
  299. package/dist/device/woplugmini.js +0 -110
  300. package/dist/device/woplugmini.js.map +0 -1
  301. package/dist/device/woplugmini_jp.d.ts +0 -52
  302. package/dist/device/woplugmini_jp.d.ts.map +0 -1
  303. package/dist/device/woplugmini_jp.js +0 -110
  304. package/dist/device/woplugmini_jp.js.map +0 -1
  305. package/dist/device/wopresence.d.ts +0 -19
  306. package/dist/device/wopresence.d.ts.map +0 -1
  307. package/dist/device/wopresence.js +0 -39
  308. package/dist/device/wopresence.js.map +0 -1
  309. package/dist/device/worelayswitch1plus.d.ts +0 -36
  310. package/dist/device/worelayswitch1plus.d.ts.map +0 -1
  311. package/dist/device/worelayswitch1plus.js +0 -141
  312. package/dist/device/worelayswitch1plus.js.map +0 -1
  313. package/dist/device/worelayswitch1pm.d.ts +0 -36
  314. package/dist/device/worelayswitch1pm.d.ts.map +0 -1
  315. package/dist/device/worelayswitch1pm.js +0 -144
  316. package/dist/device/worelayswitch1pm.js.map +0 -1
  317. package/dist/device/wosensorth.d.ts +0 -13
  318. package/dist/device/wosensorth.d.ts.map +0 -1
  319. package/dist/device/wosensorth.js +0 -38
  320. package/dist/device/wosensorth.js.map +0 -1
  321. package/dist/device/wosensorthplus.d.ts +0 -13
  322. package/dist/device/wosensorthplus.d.ts.map +0 -1
  323. package/dist/device/wosensorthplus.js +0 -38
  324. package/dist/device/wosensorthplus.js.map +0 -1
  325. package/dist/device/wosensorthpro.d.ts +0 -13
  326. package/dist/device/wosensorthpro.d.ts.map +0 -1
  327. package/dist/device/wosensorthpro.js +0 -38
  328. package/dist/device/wosensorthpro.js.map +0 -1
  329. package/dist/device/wosensorthproco2.d.ts +0 -13
  330. package/dist/device/wosensorthproco2.d.ts.map +0 -1
  331. package/dist/device/wosensorthproco2.js +0 -40
  332. package/dist/device/wosensorthproco2.js.map +0 -1
  333. package/dist/device/wosmartlock.d.ts +0 -86
  334. package/dist/device/wosmartlock.d.ts.map +0 -1
  335. package/dist/device/wosmartlock.js +0 -198
  336. package/dist/device/wosmartlock.js.map +0 -1
  337. package/dist/device/wosmartlockpro.d.ts +0 -86
  338. package/dist/device/wosmartlockpro.d.ts.map +0 -1
  339. package/dist/device/wosmartlockpro.js +0 -200
  340. package/dist/device/wosmartlockpro.js.map +0 -1
  341. package/dist/device/wostrip.d.ts +0 -63
  342. package/dist/device/wostrip.d.ts.map +0 -1
  343. package/dist/device/wostrip.js +0 -131
  344. package/dist/device/wostrip.js.map +0 -1
  345. package/dist/test/advertising.test.d.ts +0 -2
  346. package/dist/test/advertising.test.d.ts.map +0 -1
  347. package/dist/test/advertising.test.js +0 -99
  348. package/dist/test/advertising.test.js.map +0 -1
  349. package/dist/test/device.test.d.ts +0 -2
  350. package/dist/test/device.test.d.ts.map +0 -1
  351. package/dist/test/device.test.js +0 -38
  352. package/dist/test/device.test.js.map +0 -1
  353. package/dist/test/index.test.js.map +0 -1
  354. package/dist/test/parameter-checker.test.d.ts +0 -2
  355. package/dist/test/parameter-checker.test.d.ts.map +0 -1
  356. package/dist/test/parameter-checker.test.js +0 -108
  357. package/dist/test/parameter-checker.test.js.map +0 -1
  358. package/dist/test/switchbot-ble.test.d.ts +0 -2
  359. package/dist/test/switchbot-ble.test.d.ts.map +0 -1
  360. package/dist/test/switchbot-ble.test.js +0 -45
  361. package/dist/test/switchbot-ble.test.js.map +0 -1
  362. package/dist/test/switchbot-openapi.test.d.ts +0 -2
  363. package/dist/test/switchbot-openapi.test.d.ts.map +0 -1
  364. package/dist/test/switchbot-openapi.test.js +0 -96
  365. package/dist/test/switchbot-openapi.test.js.map +0 -1
  366. package/dist/test/woblindtilt.test.d.ts +0 -2
  367. package/dist/test/woblindtilt.test.d.ts.map +0 -1
  368. package/dist/test/woblindtilt.test.js +0 -76
  369. package/dist/test/woblindtilt.test.js.map +0 -1
  370. package/dist/test/wobulb.test.d.ts +0 -2
  371. package/dist/test/wobulb.test.d.ts.map +0 -1
  372. package/dist/test/wobulb.test.js +0 -95
  373. package/dist/test/wobulb.test.js.map +0 -1
  374. package/dist/test/woceilinglight.test.d.ts +0 -2
  375. package/dist/test/woceilinglight.test.d.ts.map +0 -1
  376. package/dist/test/woceilinglight.test.js +0 -81
  377. package/dist/test/woceilinglight.test.js.map +0 -1
  378. package/dist/test/wocontact.test.d.ts +0 -2
  379. package/dist/test/wocontact.test.d.ts.map +0 -1
  380. package/dist/test/wocontact.test.js +0 -65
  381. package/dist/test/wocontact.test.js.map +0 -1
  382. package/dist/test/wocurtain.test.d.ts +0 -2
  383. package/dist/test/wocurtain.test.d.ts.map +0 -1
  384. package/dist/test/wocurtain.test.js +0 -75
  385. package/dist/test/wocurtain.test.js.map +0 -1
  386. package/dist/test/wohand.test.d.ts +0 -2
  387. package/dist/test/wohand.test.d.ts.map +0 -1
  388. package/dist/test/wohand.test.js +0 -56
  389. package/dist/test/wohand.test.js.map +0 -1
  390. package/dist/test/wohub2.test.d.ts +0 -2
  391. package/dist/test/wohub2.test.d.ts.map +0 -1
  392. package/dist/test/wohub2.test.js +0 -80
  393. package/dist/test/wohub2.test.js.map +0 -1
  394. package/dist/test/wohumi.test.d.ts +0 -2
  395. package/dist/test/wohumi.test.d.ts.map +0 -1
  396. package/dist/test/wohumi.test.js +0 -82
  397. package/dist/test/wohumi.test.js.map +0 -1
  398. package/dist/test/woiosensorth.test.d.ts +0 -2
  399. package/dist/test/woiosensorth.test.d.ts.map +0 -1
  400. package/dist/test/woiosensorth.test.js +0 -40
  401. package/dist/test/woiosensorth.test.js.map +0 -1
  402. package/dist/test/wokeypad.test.d.ts +0 -2
  403. package/dist/test/wokeypad.test.d.ts.map +0 -1
  404. package/dist/test/wokeypad.test.js +0 -46
  405. package/dist/test/wokeypad.test.js.map +0 -1
  406. package/dist/test/woleak.test.d.ts +0 -2
  407. package/dist/test/woleak.test.d.ts.map +0 -1
  408. package/dist/test/woleak.test.js +0 -51
  409. package/dist/test/woleak.test.js.map +0 -1
  410. package/dist/test/woplugmini.test.d.ts +0 -2
  411. package/dist/test/woplugmini.test.d.ts.map +0 -1
  412. package/dist/test/woplugmini.test.js +0 -90
  413. package/dist/test/woplugmini.test.js.map +0 -1
  414. package/dist/test/woplugmini_jp.test.d.ts +0 -2
  415. package/dist/test/woplugmini_jp.test.d.ts.map +0 -1
  416. package/dist/test/woplugmini_jp.test.js +0 -90
  417. package/dist/test/woplugmini_jp.test.js.map +0 -1
  418. package/dist/test/wopresence.test.d.ts +0 -2
  419. package/dist/test/wopresence.test.d.ts.map +0 -1
  420. package/dist/test/wopresence.test.js +0 -68
  421. package/dist/test/wopresence.test.js.map +0 -1
  422. package/dist/test/wosensorth.test.d.ts +0 -2
  423. package/dist/test/wosensorth.test.d.ts.map +0 -1
  424. package/dist/test/wosensorth.test.js +0 -29
  425. package/dist/test/wosensorth.test.js.map +0 -1
  426. package/dist/test/wosensorthplus.test.d.ts +0 -2
  427. package/dist/test/wosensorthplus.test.d.ts.map +0 -1
  428. package/dist/test/wosensorthplus.test.js +0 -29
  429. package/dist/test/wosensorthplus.test.js.map +0 -1
  430. package/dist/test/wosensorthpro.test.d.ts +0 -2
  431. package/dist/test/wosensorthpro.test.d.ts.map +0 -1
  432. package/dist/test/wosensorthpro.test.js +0 -29
  433. package/dist/test/wosensorthpro.test.js.map +0 -1
  434. package/dist/test/wosensorthproco2.test.d.ts +0 -2
  435. package/dist/test/wosensorthproco2.test.d.ts.map +0 -1
  436. package/dist/test/wosensorthproco2.test.js +0 -32
  437. package/dist/test/wosensorthproco2.test.js.map +0 -1
  438. package/dist/test/wosmartlock.test.d.ts +0 -2
  439. package/dist/test/wosmartlock.test.d.ts.map +0 -1
  440. package/dist/test/wosmartlock.test.js +0 -151
  441. package/dist/test/wosmartlock.test.js.map +0 -1
  442. package/dist/test/wosmartlockpro.test.d.ts +0 -2
  443. package/dist/test/wosmartlockpro.test.d.ts.map +0 -1
  444. package/dist/test/wosmartlockpro.test.js +0 -150
  445. package/dist/test/wosmartlockpro.test.js.map +0 -1
  446. package/dist/test/wostrip.test.d.ts +0 -2
  447. package/dist/test/wostrip.test.d.ts.map +0 -1
  448. package/dist/test/wostrip.test.js +0 -102
  449. package/dist/test/wostrip.test.js.map +0 -1
  450. package/docs/types/relaySwitch1PlusServiceData.html +0 -1
  451. /package/dist/{test/index.test.d.ts → index.test.d.ts} +0 -0
  452. /package/dist/{test/settings.test.d.ts → settings.test.d.ts} +0 -0
@@ -1,96 +0,0 @@
1
- import { request } from 'undici';
2
- import { describe, expect, it } from 'vitest';
3
- import { SwitchBotOpenAPI } from '../switchbot-openapi.js';
4
- jest.mock('undici', () => ({
5
- request: jest.fn(),
6
- }));
7
- describe('switchBotOpenAPI', () => {
8
- let switchBotAPI;
9
- const token = 'test-token';
10
- const secret = 'test-secret';
11
- beforeEach(() => {
12
- switchBotAPI = new SwitchBotOpenAPI(token, secret);
13
- });
14
- afterEach(() => {
15
- jest.clearAllMocks();
16
- });
17
- describe('getDevices', () => {
18
- it('should retrieve the list of devices', async () => {
19
- const mockDevicesResponse = { body: { devices: [] }, statusCode: 200 };
20
- request.mockResolvedValue({
21
- body: {
22
- json: jest.fn().mockResolvedValue(mockDevicesResponse.body),
23
- },
24
- statusCode: mockDevicesResponse.statusCode,
25
- });
26
- const result = await switchBotAPI.getDevices();
27
- expect(result).toEqual(mockDevicesResponse);
28
- expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
29
- });
30
- it('should throw an error if the request fails', async () => {
31
- const errorMessage = 'Failed to get devices';
32
- request.mockRejectedValue(new Error(errorMessage));
33
- await expect(switchBotAPI.getDevices()).rejects.toThrow(`Failed to get devices: ${errorMessage}`);
34
- });
35
- });
36
- describe('controlDevice', () => {
37
- it('should control a device by sending a command', async () => {
38
- const mockControlResponse = { body: {}, statusCode: 200 };
39
- request.mockResolvedValue({
40
- body: {
41
- json: jest.fn().mockResolvedValue(mockControlResponse.body),
42
- },
43
- statusCode: mockControlResponse.statusCode,
44
- });
45
- const result = await switchBotAPI.controlDevice('device-id', 'turnOn', 'default');
46
- expect(result).toEqual(mockControlResponse);
47
- expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
48
- });
49
- it('should throw an error if the device control fails', async () => {
50
- const errorMessage = 'Failed to control device';
51
- request.mockRejectedValue(new Error(errorMessage));
52
- await expect(switchBotAPI.controlDevice('device-id', 'turnOn', 'default')).rejects.toThrow(`Failed to control device: ${errorMessage}`);
53
- });
54
- });
55
- describe('getDeviceStatus', () => {
56
- it('should retrieve the status of a specific device', async () => {
57
- const mockStatusResponse = { body: {}, statusCode: 200 };
58
- request.mockResolvedValue({
59
- body: {
60
- json: jest.fn().mockResolvedValue(mockStatusResponse.body),
61
- },
62
- statusCode: mockStatusResponse.statusCode,
63
- });
64
- const result = await switchBotAPI.getDeviceStatus('device-id');
65
- expect(result).toEqual(mockStatusResponse);
66
- expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
67
- });
68
- it('should throw an error if the request fails', async () => {
69
- const errorMessage = 'Failed to get device status';
70
- request.mockRejectedValue(new Error(errorMessage));
71
- await expect(switchBotAPI.getDeviceStatus('device-id')).rejects.toThrow(`Failed to get device status: ${errorMessage}`);
72
- });
73
- });
74
- describe('setupWebhook', () => {
75
- it('should set up a webhook listener and configure the webhook on the server', async () => {
76
- const mockWebhookResponse = { body: {}, statusCode: 200 };
77
- request.mockResolvedValue({
78
- body: {
79
- json: jest.fn().mockResolvedValue(mockWebhookResponse.body),
80
- },
81
- statusCode: mockWebhookResponse.statusCode,
82
- });
83
- const url = 'http://localhost:3000/webhook';
84
- await switchBotAPI.setupWebhook(url);
85
- expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
86
- });
87
- it('should log an error if the webhook setup fails', async () => {
88
- const errorMessage = 'Failed to create webhook listener';
89
- request.mockRejectedValue(new Error(errorMessage));
90
- const url = 'http://localhost:3000/webhook';
91
- await switchBotAPI.setupWebhook(url);
92
- expect(request).toHaveBeenCalledWith(expect.any(String), expect.any(Object));
93
- });
94
- });
95
- });
96
- //# sourceMappingURL=switchbot-openapi.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"switchbot-openapi.test.js","sourceRoot":"","sources":["../../src/test/switchbot-openapi.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=woblindtilt.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woblindtilt.test.d.ts","sourceRoot":"","sources":["../../src/test/woblindtilt.test.ts"],"names":[],"mappings":""}
@@ -1,76 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { describe, expect, it, vi } from 'vitest';
3
- import { WoBlindTilt } from '../device/woblindtilt.js';
4
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
5
- describe('woBlindTilt', () => {
6
- const emitLog = vi.fn();
7
- it('should parse valid service and manufacturer data correctly', async () => {
8
- const serviceData = Buffer.from([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x32]);
9
- const manufacturerData = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07]);
10
- const result = await WoBlindTilt.parseServiceData(serviceData, manufacturerData, emitLog, false);
11
- expect(result).toEqual({
12
- model: SwitchBotBLEModel.BlindTilt,
13
- modelName: SwitchBotBLEModelName.BlindTilt,
14
- modelFriendlyName: SwitchBotBLEModelFriendlyName.BlindTilt,
15
- calibration: false,
16
- battery: 69,
17
- inMotion: false,
18
- tilt: 7,
19
- lightLevel: 0,
20
- sequenceNumber: 7,
21
- });
22
- });
23
- it('should return null for invalid manufacturer data length', async () => {
24
- const serviceData = Buffer.from([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x32]);
25
- const manufacturerData = Buffer.from([0x01, 0x02, 0x03]);
26
- const result = await WoBlindTilt.parseServiceData(serviceData, manufacturerData, emitLog, false);
27
- expect(result).toBeNull();
28
- expect(emitLog).toHaveBeenCalledWith('error', '[parseServiceDataForWoBlindTilt] Buffer length 3 !== 5 or 6!');
29
- });
30
- it('should open the blind tilt', async () => {
31
- const peripheral = {};
32
- const device = new WoBlindTilt(peripheral, emitLog);
33
- vi.spyOn(device, 'operateBlindTilt').mockResolvedValue(undefined);
34
- await device.open();
35
- expect(device.operateBlindTilt).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x32]);
36
- });
37
- it('should close the blind tilt up', async () => {
38
- const peripheral = {};
39
- const device = new WoBlindTilt(peripheral, emitLog);
40
- vi.spyOn(device, 'operateBlindTilt').mockResolvedValue(undefined);
41
- await device.closeUp();
42
- expect(device.operateBlindTilt).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x64]);
43
- });
44
- it('should close the blind tilt down', async () => {
45
- const peripheral = {};
46
- const device = new WoBlindTilt(peripheral, emitLog);
47
- vi.spyOn(device, 'operateBlindTilt').mockResolvedValue(undefined);
48
- await device.closeDown();
49
- expect(device.operateBlindTilt).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0xFF, 0x00]);
50
- });
51
- it('should pause the blind tilt', async () => {
52
- const peripheral = {};
53
- const device = new WoBlindTilt(peripheral, emitLog);
54
- vi.spyOn(device, 'operateBlindTilt').mockResolvedValue(undefined);
55
- await device.pause();
56
- expect(device.operateBlindTilt).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x00, 0xFF]);
57
- });
58
- it('should run the blind tilt to a specified position', async () => {
59
- const peripheral = {};
60
- const device = new WoBlindTilt(peripheral, emitLog);
61
- vi.spyOn(device, 'operateBlindTilt').mockResolvedValue(undefined);
62
- await device.runToPos(50, 1);
63
- expect(device.operateBlindTilt).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0x01, 50]);
64
- });
65
- it('should throw an error for invalid position percentage', async () => {
66
- const peripheral = {};
67
- const device = new WoBlindTilt(peripheral, emitLog);
68
- await expect(device.runToPos(150, 1)).rejects.toThrow(RangeError);
69
- });
70
- it('should throw an error for invalid mode', async () => {
71
- const peripheral = {};
72
- const device = new WoBlindTilt(peripheral, emitLog);
73
- await expect(device.runToPos(50, 2)).rejects.toThrow(RangeError);
74
- });
75
- });
76
- //# sourceMappingURL=woblindtilt.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woblindtilt.test.js","sourceRoot":"","sources":["../../src/test/woblindtilt.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE3G,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IAEvB,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC3E,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAEhF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QAEhG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,iBAAiB,CAAC,SAAS;YAClC,SAAS,EAAE,qBAAqB,CAAC,SAAS;YAC1C,iBAAiB,EAAE,6BAA6B,CAAC,SAAS;YAC1D,WAAW,EAAE,KAAK;YAClB,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,CAAC;YACP,UAAU,EAAE,CAAC;YACb,cAAc,EAAE,CAAC;SAClB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAC3E,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAExD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QAEhG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QACzB,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,8DAA8D,CAAC,CAAA;IAC/G,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,UAAU,GAAG,EAAyC,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,OAAc,CAAC,CAAA;QAC1D,EAAE,CAAC,KAAK,CAAC,MAAa,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAExE,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAEnB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,UAAU,GAAG,EAAyC,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,OAAc,CAAC,CAAA;QAC1D,EAAE,CAAC,KAAK,CAAC,MAAa,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAExE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QAEtB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,UAAU,GAAG,EAAyC,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,OAAc,CAAC,CAAA;QAC1D,EAAE,CAAC,KAAK,CAAC,MAAa,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAExE,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;QAExB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,UAAU,GAAG,EAAyC,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,OAAc,CAAC,CAAA;QAC1D,EAAE,CAAC,KAAK,CAAC,MAAa,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAExE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,UAAU,GAAG,EAAyC,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,OAAc,CAAC,CAAA;QAC1D,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;QAEjE,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAE5B,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;IAChG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,UAAU,GAAG,EAAyC,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,OAAc,CAAC,CAAA;QAE1D,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,UAAU,GAAG,EAAyC,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,OAAc,CAAC,CAAA;QAE1D,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wobulb.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wobulb.test.d.ts","sourceRoot":"","sources":["../../src/test/wobulb.test.ts"],"names":[],"mappings":""}
@@ -1,95 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { describe, expect, it, vi } from 'vitest';
3
- import { WoBulb } from '../device/wobulb.js';
4
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
5
- describe('woBulb', () => {
6
- const emitLog = vi.fn();
7
- describe('parseServiceData', () => {
8
- it('should return null if serviceData length is not 18', async () => {
9
- const serviceData = Buffer.alloc(10);
10
- const manufacturerData = Buffer.alloc(13);
11
- const result = await WoBulb.parseServiceData(serviceData, manufacturerData, emitLog);
12
- expect(result).toBeNull();
13
- expect(emitLog).toHaveBeenCalledWith('error', '[parseServiceDataForWoBulb] Buffer length 10 !== 18!');
14
- });
15
- it('should return null if manufacturerData length is not 13', async () => {
16
- const serviceData = Buffer.alloc(18);
17
- const manufacturerData = Buffer.alloc(10);
18
- const result = await WoBulb.parseServiceData(serviceData, manufacturerData, emitLog);
19
- expect(result).toBeNull();
20
- expect(emitLog).toHaveBeenCalledWith('error', '[parseServiceDataForWoBulb] Buffer length 10 !== 13!');
21
- });
22
- it('should parse valid serviceData and manufacturerData', async () => {
23
- const serviceData = Buffer.alloc(18);
24
- const manufacturerData = Buffer.from([0, 1, 0, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0]);
25
- const result = await WoBulb.parseServiceData(serviceData, manufacturerData, emitLog);
26
- expect(result).toEqual({
27
- model: SwitchBotBLEModel.ColorBulb,
28
- modelName: SwitchBotBLEModelName.ColorBulb,
29
- modelFriendlyName: SwitchBotBLEModelFriendlyName.ColorBulb,
30
- power: 1,
31
- red: 3,
32
- green: 4,
33
- blue: 5,
34
- color_temperature: 6,
35
- state: true,
36
- brightness: 7,
37
- delay: true,
38
- preset: false,
39
- color_mode: 0,
40
- speed: 9,
41
- loop_index: 10,
42
- });
43
- });
44
- });
45
- describe('woBulb operations', () => {
46
- let bulb;
47
- let commandMock;
48
- beforeEach(() => {
49
- const peripheral = {};
50
- bulb = new WoBulb(peripheral, emitLog);
51
- commandMock = vi.fn();
52
- bulb.command = commandMock;
53
- });
54
- it('should turn on the bulb', async () => {
55
- commandMock.mockResolvedValue(Buffer.from([0x57, 0x80]));
56
- const result = await bulb.turnOn();
57
- expect(result).toBe(true);
58
- expect(commandMock).toHaveBeenCalledWith(Buffer.from([0x57, 0x0F, 0x47, 0x01, 0x01, 0x01]));
59
- });
60
- it('should turn off the bulb', async () => {
61
- commandMock.mockResolvedValue(Buffer.from([0x57, 0x80]));
62
- const result = await bulb.turnOff();
63
- expect(result).toBe(true);
64
- expect(commandMock).toHaveBeenCalledWith(Buffer.from([0x57, 0x0F, 0x47, 0x01, 0x01, 0x02]));
65
- });
66
- it('should set brightness', async () => {
67
- commandMock.mockResolvedValue(Buffer.from([0x57, 0x80]));
68
- const result = await bulb.setBrightness(50);
69
- expect(result).toBe(true);
70
- expect(commandMock).toHaveBeenCalledWith(Buffer.from([0x57, 0x0F, 0x47, 0x01, 0x02, 0x14, 50]));
71
- });
72
- it('should throw error for invalid brightness', async () => {
73
- await expect(bulb.setBrightness(150)).rejects.toThrow(RangeError);
74
- });
75
- it('should set color temperature', async () => {
76
- commandMock.mockResolvedValue(Buffer.from([0x57, 0x80]));
77
- const result = await bulb.setColorTemperature(50);
78
- expect(result).toBe(true);
79
- expect(commandMock).toHaveBeenCalledWith(Buffer.from([0x57, 0x0F, 0x47, 0x01, 0x02, 0x17, 50]));
80
- });
81
- it('should throw error for invalid color temperature', async () => {
82
- await expect(bulb.setColorTemperature(150)).rejects.toThrow(RangeError);
83
- });
84
- it('should set RGB color', async () => {
85
- commandMock.mockResolvedValue(Buffer.from([0x57, 0x80]));
86
- const result = await bulb.setRGB(50, 100, 150, 200);
87
- expect(result).toBe(true);
88
- expect(commandMock).toHaveBeenCalledWith(Buffer.from([0x57, 0x0F, 0x47, 0x01, 0x02, 0x12, 50, 100, 150, 200]));
89
- });
90
- it('should throw error for invalid RGB values', async () => {
91
- await expect(bulb.setRGB(50, 300, 150, 200)).rejects.toThrow(RangeError);
92
- });
93
- });
94
- });
95
- //# sourceMappingURL=wobulb.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wobulb.test.js","sourceRoot":"","sources":["../../src/test/wobulb.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=woceilinglight.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woceilinglight.test.d.ts","sourceRoot":"","sources":["../../src/test/woceilinglight.test.ts"],"names":[],"mappings":""}
@@ -1,81 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { describe, expect, it, vi } from 'vitest';
3
- import { WoCeilingLight } from '../device/woceilinglight.js';
4
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
5
- describe('woCeilingLight', () => {
6
- const emitLog = vi.fn();
7
- describe('parseServiceData', () => {
8
- it('should parse valid manufacturer data', async () => {
9
- const manufacturerData = Buffer.from([0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x87, 0x08, 0x09, 0x00, 0x00]);
10
- const result = await WoCeilingLight.parseServiceData(manufacturerData, emitLog);
11
- expect(result).toEqual({
12
- model: SwitchBotBLEModel.CeilingLight,
13
- modelName: SwitchBotBLEModelName.CeilingLight,
14
- modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLight,
15
- power: 0x01,
16
- red: 0x02,
17
- green: 0x03,
18
- blue: 0x04,
19
- color_temperature: 0x05,
20
- state: true,
21
- brightness: 0x06,
22
- delay: true,
23
- preset: false,
24
- color_mode: 0x07,
25
- speed: 0x08,
26
- loop_index: 0x08,
27
- });
28
- });
29
- it('should return null for invalid manufacturer data length', async () => {
30
- const manufacturerData = Buffer.from([0x00, 0x01, 0x00]);
31
- const result = await WoCeilingLight.parseServiceData(manufacturerData, emitLog);
32
- expect(result).toBeNull();
33
- expect(emitLog).toHaveBeenCalledWith('error', '[parseServiceDataForWoCeilingLight] Buffer length 3 !== 13!');
34
- });
35
- });
36
- describe('parseServiceData_Pro', () => {
37
- it('should parse valid manufacturer data for Pro', async () => {
38
- const manufacturerData = Buffer.from([0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x87, 0x08, 0x09, 0x00, 0x00]);
39
- const result = await WoCeilingLight.parseServiceData_Pro(manufacturerData, emitLog);
40
- expect(result).toEqual({
41
- model: SwitchBotBLEModel.CeilingLightPro,
42
- modelName: SwitchBotBLEModelName.CeilingLightPro,
43
- modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLightPro,
44
- power: 0x01,
45
- red: 0x02,
46
- green: 0x03,
47
- blue: 0x04,
48
- color_temperature: 0x05,
49
- state: true,
50
- brightness: 0x06,
51
- delay: true,
52
- preset: false,
53
- color_mode: 0x07,
54
- speed: 0x08,
55
- loop_index: 0x08,
56
- });
57
- });
58
- it('should return null for invalid manufacturer data length for Pro', async () => {
59
- const manufacturerData = Buffer.from([0x00, 0x01, 0x00]);
60
- const result = await WoCeilingLight.parseServiceData_Pro(manufacturerData, emitLog);
61
- expect(result).toBeNull();
62
- expect(emitLog).toHaveBeenCalledWith('error', '[parseServiceDataForWoCeilingLightPro] Buffer length 3 !== 13!');
63
- });
64
- });
65
- describe('operateCeilingLight', () => {
66
- it('should return true for successful operation', async () => {
67
- const peripheral = {};
68
- const device = new WoCeilingLight(peripheral, emitLog);
69
- vi.spyOn(device, 'command').mockResolvedValue(Buffer.from([0x00, 0x80]));
70
- const result = await device.operateCeilingLight([0x57, 0x0F, 0x48, 0x01]);
71
- expect(result).toBe(true);
72
- });
73
- it('should throw an error for invalid response length', async () => {
74
- const peripheral = {};
75
- const device = new WoCeilingLight(peripheral, emitLog);
76
- vi.spyOn(device, 'command').mockResolvedValue(Buffer.from([0x00]));
77
- await expect(device.operateCeilingLight([0x57, 0x0F, 0x48, 0x01])).rejects.toThrow('Expecting a 2-byte response, got instead: 0x00');
78
- });
79
- });
80
- });
81
- //# sourceMappingURL=woceilinglight.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woceilinglight.test.js","sourceRoot":"","sources":["../../src/test/woceilinglight.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wocontact.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wocontact.test.d.ts","sourceRoot":"","sources":["../../src/test/wocontact.test.ts"],"names":[],"mappings":""}
@@ -1,65 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { describe, expect, it, vi } from 'vitest';
3
- import { WoContact } from '../device/wocontact.js';
4
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
5
- describe('woContact', () => {
6
- const emitLog = vi.fn();
7
- it('should parse valid service data correctly', async () => {
8
- const serviceData = Buffer.from([0b11000000, 0b01111111, 0b00000110, 0, 0, 0, 0, 0, 0b00001111]);
9
- const result = await WoContact.parseServiceData(serviceData, emitLog);
10
- expect(result).toEqual({
11
- model: SwitchBotBLEModel.ContactSensor,
12
- modelName: SwitchBotBLEModelName.ContactSensor,
13
- modelFriendlyName: SwitchBotBLEModelFriendlyName.ContactSensor,
14
- movement: true,
15
- tested: true,
16
- battery: 127,
17
- contact_open: true,
18
- contact_timeout: true,
19
- lightLevel: 'dark',
20
- button_count: 15,
21
- doorState: 'open',
22
- });
23
- });
24
- it('should return null for invalid service data length', async () => {
25
- const serviceData = Buffer.from([0b11000000, 0b01111111]);
26
- const result = await WoContact.parseServiceData(serviceData, emitLog);
27
- expect(result).toBeNull();
28
- expect(emitLog).toHaveBeenCalledWith('error', '[parseServiceDataForWoContact] Buffer length 2 !== 9!');
29
- });
30
- it('should parse service data with different hall state correctly', async () => {
31
- const serviceData = Buffer.from([0b01000000, 0b01111111, 0b00000000, 0, 0, 0, 0, 0, 0b00000001]);
32
- const result = await WoContact.parseServiceData(serviceData, emitLog);
33
- expect(result).toEqual({
34
- model: SwitchBotBLEModel.ContactSensor,
35
- modelName: SwitchBotBLEModelName.ContactSensor,
36
- modelFriendlyName: SwitchBotBLEModelFriendlyName.ContactSensor,
37
- movement: true,
38
- tested: false,
39
- battery: 127,
40
- contact_open: false,
41
- contact_timeout: false,
42
- lightLevel: 'dark',
43
- button_count: 1,
44
- doorState: 'close',
45
- });
46
- });
47
- it('should parse service data with bright light level correctly', async () => {
48
- const serviceData = Buffer.from([0b01000000, 0b01111111, 0b00000001, 0, 0, 0, 0, 0, 0b00000001]);
49
- const result = await WoContact.parseServiceData(serviceData, emitLog);
50
- expect(result).toEqual({
51
- model: SwitchBotBLEModel.ContactSensor,
52
- modelName: SwitchBotBLEModelName.ContactSensor,
53
- modelFriendlyName: SwitchBotBLEModelFriendlyName.ContactSensor,
54
- movement: true,
55
- tested: false,
56
- battery: 127,
57
- contact_open: false,
58
- contact_timeout: false,
59
- lightLevel: 'bright',
60
- button_count: 1,
61
- doorState: 'close',
62
- });
63
- });
64
- });
65
- //# sourceMappingURL=wocontact.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wocontact.test.js","sourceRoot":"","sources":["../../src/test/wocontact.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wocurtain.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wocurtain.test.d.ts","sourceRoot":"","sources":["../../src/test/wocurtain.test.ts"],"names":[],"mappings":""}
@@ -1,75 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { describe, expect, it, vi } from 'vitest';
3
- import { WoCurtain } from '../device/wocurtain.js';
4
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
5
- describe('woCurtain', () => {
6
- const emitLog = vi.fn();
7
- describe('parseServiceData', () => {
8
- it('should return null if serviceData length is not 5 or 6', async () => {
9
- const serviceData = Buffer.from([0x01, 0x02, 0x03, 0x04]);
10
- const manufacturerData = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D]);
11
- const result = await WoCurtain.parseServiceData(serviceData, manufacturerData, emitLog);
12
- expect(result).toBeNull();
13
- expect(emitLog).toHaveBeenCalledWith('error', '[parseServiceDataForWoCurtain] Buffer length 4 !== 5 or 6!');
14
- });
15
- it('should parse valid serviceData and manufacturerData correctly', async () => {
16
- const serviceData = Buffer.from([0x63, 0x40, 0x50, 0x01, 0x02, 0x03]);
17
- const manufacturerData = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x64]);
18
- const result = await WoCurtain.parseServiceData(serviceData, manufacturerData, emitLog);
19
- expect(result).toEqual({
20
- model: SwitchBotBLEModel.Curtain,
21
- modelName: SwitchBotBLEModelName.Curtain,
22
- modelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain,
23
- calibration: true,
24
- battery: 100,
25
- inMotion: false,
26
- position: 1,
27
- lightLevel: 0,
28
- deviceChain: 2,
29
- });
30
- });
31
- });
32
- describe('open', () => {
33
- it('should call runToPos with 0 and default mode', async () => {
34
- const peripheral = {};
35
- const curtain = new WoCurtain(peripheral, emitLog);
36
- const runToPosSpy = vi.spyOn(curtain, 'runToPos').mockResolvedValue();
37
- await curtain.open();
38
- expect(runToPosSpy).toHaveBeenCalledWith(0, 0xFF);
39
- });
40
- });
41
- describe('close', () => {
42
- it('should call runToPos with 100 and default mode', async () => {
43
- const peripheral = {};
44
- const curtain = new WoCurtain(peripheral, emitLog);
45
- const runToPosSpy = vi.spyOn(curtain, 'runToPos').mockResolvedValue();
46
- await curtain.close();
47
- expect(runToPosSpy).toHaveBeenCalledWith(100, 0xFF);
48
- });
49
- });
50
- describe('pause', () => {
51
- it('should call operateCurtain with correct bytes', async () => {
52
- const peripheral = {};
53
- const curtain = new WoCurtain(peripheral, emitLog);
54
- const operateCurtainSpy = vi.spyOn(curtain, 'operateCurtain').mockResolvedValue();
55
- await curtain.pause();
56
- expect(operateCurtainSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x00, 0xFF]);
57
- });
58
- });
59
- describe('runToPos', () => {
60
- it('should call operateCurtain with correct bytes', async () => {
61
- const peripheral = {};
62
- const curtain = new WoCurtain(peripheral, emitLog);
63
- const operateCurtainSpy = vi.spyOn(curtain, 'operateCurtain').mockResolvedValue();
64
- await curtain.runToPos(50, 0x01);
65
- expect(operateCurtainSpy).toHaveBeenCalledWith([0x57, 0x0F, 0x45, 0x01, 0x05, 0x01, 50]);
66
- });
67
- it('should throw TypeError if percent or mode is not a number', async () => {
68
- const peripheral = {};
69
- const curtain = new WoCurtain(peripheral, emitLog);
70
- await expect(curtain.runToPos('50', 0x01)).rejects.toThrow(TypeError);
71
- await expect(curtain.runToPos(50, '0x01')).rejects.toThrow(TypeError);
72
- });
73
- });
74
- });
75
- //# sourceMappingURL=wocurtain.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wocurtain.test.js","sourceRoot":"","sources":["../../src/test/wocurtain.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wohand.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wohand.test.d.ts","sourceRoot":"","sources":["../../src/test/wohand.test.ts"],"names":[],"mappings":""}