node-switchbot 2.5.0-beta.8 → 3.0.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 (406) hide show
  1. package/.github/workflows/beta-release.yml +25 -2
  2. package/.github/workflows/release.yml +13 -0
  3. package/BLE.md +1144 -0
  4. package/CHANGELOG.md +14 -0
  5. package/OpenAPI.md +185 -0
  6. package/README.md +20 -1189
  7. package/branding/Node_x_SwitchBot.svg +9 -0
  8. package/branding/icon.png +0 -0
  9. package/branding/switchbot.png +0 -0
  10. package/dist/advertising.d.ts +3 -3
  11. package/dist/advertising.d.ts.map +1 -1
  12. package/dist/advertising.js +26 -26
  13. package/dist/advertising.js.map +1 -1
  14. package/dist/device/woblindtilt.d.ts +19 -50
  15. package/dist/device/woblindtilt.d.ts.map +1 -1
  16. package/dist/device/woblindtilt.js +41 -100
  17. package/dist/device/woblindtilt.js.map +1 -1
  18. package/dist/device/wobulb.d.ts +41 -15
  19. package/dist/device/wobulb.d.ts.map +1 -1
  20. package/dist/device/wobulb.js +72 -128
  21. package/dist/device/wobulb.js.map +1 -1
  22. package/dist/device/woceilinglight.d.ts +47 -21
  23. package/dist/device/woceilinglight.d.ts.map +1 -1
  24. package/dist/device/woceilinglight.js +96 -171
  25. package/dist/device/woceilinglight.js.map +1 -1
  26. package/dist/device/wocontact.d.ts +11 -1
  27. package/dist/device/wocontact.d.ts.map +1 -1
  28. package/dist/device/wocontact.js +23 -22
  29. package/dist/device/wocontact.js.map +1 -1
  30. package/dist/device/wocurtain.d.ts +39 -1
  31. package/dist/device/wocurtain.d.ts.map +1 -1
  32. package/dist/device/wocurtain.js +69 -103
  33. package/dist/device/wocurtain.js.map +1 -1
  34. package/dist/device/wohand.d.ts +37 -2
  35. package/dist/device/wohand.d.ts.map +1 -1
  36. package/dist/device/wohand.js +55 -89
  37. package/dist/device/wohand.js.map +1 -1
  38. package/dist/device/wohub2.d.ts +11 -1
  39. package/dist/device/wohub2.d.ts.map +1 -1
  40. package/dist/device/wohub2.js +21 -29
  41. package/dist/device/wohub2.js.map +1 -1
  42. package/dist/device/wohumi.d.ts +37 -2
  43. package/dist/device/wohumi.d.ts.map +1 -1
  44. package/dist/device/wohumi.js +52 -83
  45. package/dist/device/wohumi.js.map +1 -1
  46. package/dist/device/woiosensorth.d.ts +12 -1
  47. package/dist/device/woiosensorth.d.ts.map +1 -1
  48. package/dist/device/woiosensorth.js +25 -29
  49. package/dist/device/woiosensorth.js.map +1 -1
  50. package/dist/device/woplugmini.d.ts +45 -12
  51. package/dist/device/woplugmini.d.ts.map +1 -1
  52. package/dist/device/woplugmini.js +71 -77
  53. package/dist/device/woplugmini.js.map +1 -1
  54. package/dist/device/wopresence.d.ts +11 -1
  55. package/dist/device/wopresence.d.ts.map +1 -1
  56. package/dist/device/wopresence.js +21 -27
  57. package/dist/device/wopresence.js.map +1 -1
  58. package/dist/device/wosensorth.d.ts +18 -2
  59. package/dist/device/wosensorth.d.ts.map +1 -1
  60. package/dist/device/wosensorth.js +34 -50
  61. package/dist/device/wosensorth.js.map +1 -1
  62. package/dist/device/wosmartlock.d.ts +63 -13
  63. package/dist/device/wosmartlock.d.ts.map +1 -1
  64. package/dist/device/wosmartlock.js +114 -195
  65. package/dist/device/wosmartlock.js.map +1 -1
  66. package/dist/device/wosmartlockpro.d.ts +16 -12
  67. package/dist/device/wosmartlockpro.d.ts.map +1 -1
  68. package/dist/device/wosmartlockpro.js +34 -29
  69. package/dist/device/wosmartlockpro.js.map +1 -1
  70. package/dist/device/wostrip.d.ts +4 -3
  71. package/dist/device/wostrip.d.ts.map +1 -1
  72. package/dist/device/wostrip.js +5 -4
  73. package/dist/device/wostrip.js.map +1 -1
  74. package/dist/device.d.ts +13 -5
  75. package/dist/device.d.ts.map +1 -1
  76. package/dist/device.js +13 -2
  77. package/dist/device.js.map +1 -1
  78. package/dist/index.d.ts +9 -1
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +9 -1
  81. package/dist/index.js.map +1 -1
  82. package/dist/parameter-checker.d.ts +10 -13
  83. package/dist/parameter-checker.d.ts.map +1 -1
  84. package/dist/parameter-checker.js +16 -1
  85. package/dist/parameter-checker.js.map +1 -1
  86. package/dist/settings.d.ts +41 -0
  87. package/dist/settings.d.ts.map +1 -1
  88. package/dist/settings.js +43 -0
  89. package/dist/settings.js.map +1 -1
  90. package/dist/{switchbot.d.ts → switchbot-ble.d.ts} +13 -8
  91. package/dist/switchbot-ble.d.ts.map +1 -0
  92. package/dist/switchbot-ble.js +427 -0
  93. package/dist/switchbot-ble.js.map +1 -0
  94. package/dist/switchbot-openapi.d.ts +131 -0
  95. package/dist/switchbot-openapi.d.ts.map +1 -0
  96. package/dist/switchbot-openapi.js +311 -0
  97. package/dist/switchbot-openapi.js.map +1 -0
  98. package/dist/test/advertising.test.d.ts +2 -0
  99. package/dist/test/advertising.test.d.ts.map +1 -0
  100. package/dist/test/advertising.test.js +99 -0
  101. package/dist/test/advertising.test.js.map +1 -0
  102. package/dist/test/device.test.d.ts +2 -0
  103. package/dist/test/device.test.d.ts.map +1 -0
  104. package/dist/test/device.test.js +38 -0
  105. package/dist/test/device.test.js.map +1 -0
  106. package/dist/test/index.test.d.ts +2 -0
  107. package/dist/test/index.test.d.ts.map +1 -0
  108. package/dist/test/index.test.js +35 -0
  109. package/dist/test/index.test.js.map +1 -0
  110. package/dist/test/parameter-checker.test.d.ts +2 -0
  111. package/dist/test/parameter-checker.test.d.ts.map +1 -0
  112. package/dist/test/parameter-checker.test.js +108 -0
  113. package/dist/test/parameter-checker.test.js.map +1 -0
  114. package/dist/test/settings.test.d.ts +2 -0
  115. package/dist/test/settings.test.d.ts.map +1 -0
  116. package/dist/test/settings.test.js +49 -0
  117. package/dist/test/settings.test.js.map +1 -0
  118. package/dist/test/switchbot-openapi.test.d.ts +2 -0
  119. package/dist/test/switchbot-openapi.test.d.ts.map +1 -0
  120. package/dist/test/switchbot-openapi.test.js +96 -0
  121. package/dist/test/switchbot-openapi.test.js.map +1 -0
  122. package/dist/test/switchbot.test.d.ts +2 -0
  123. package/dist/test/switchbot.test.d.ts.map +1 -0
  124. package/dist/test/switchbot.test.js +106 -0
  125. package/dist/test/switchbot.test.js.map +1 -0
  126. package/dist/test/woblindtilt.test.d.ts.map +1 -0
  127. package/dist/test/woblindtilt.test.js +76 -0
  128. package/dist/test/woblindtilt.test.js.map +1 -0
  129. package/dist/{device → test}/wobulb.test.d.ts.map +1 -1
  130. package/dist/test/wobulb.test.js +95 -0
  131. package/dist/test/wobulb.test.js.map +1 -0
  132. package/dist/test/woceilinglight.test.d.ts.map +1 -0
  133. package/dist/test/woceilinglight.test.js +81 -0
  134. package/dist/test/woceilinglight.test.js.map +1 -0
  135. package/dist/test/wocontact.test.d.ts.map +1 -0
  136. package/dist/test/wocontact.test.js +65 -0
  137. package/dist/test/wocontact.test.js.map +1 -0
  138. package/dist/test/wocurtain.test.d.ts.map +1 -0
  139. package/dist/test/wocurtain.test.js +75 -0
  140. package/dist/test/wocurtain.test.js.map +1 -0
  141. package/dist/{device → test}/wohand.test.d.ts.map +1 -1
  142. package/dist/test/wohand.test.js +56 -0
  143. package/dist/test/wohand.test.js.map +1 -0
  144. package/dist/test/wohub2.test.d.ts +2 -0
  145. package/dist/test/wohub2.test.d.ts.map +1 -0
  146. package/dist/test/wohub2.test.js +80 -0
  147. package/dist/test/wohub2.test.js.map +1 -0
  148. package/dist/{device → test}/wohumi.test.d.ts.map +1 -1
  149. package/dist/test/wohumi.test.js +82 -0
  150. package/dist/test/wohumi.test.js.map +1 -0
  151. package/dist/test/woiosensorth.test.d.ts.map +1 -0
  152. package/dist/test/woiosensorth.test.js +40 -0
  153. package/dist/test/woiosensorth.test.js.map +1 -0
  154. package/dist/test/woplugmini.test.d.ts.map +1 -0
  155. package/dist/test/woplugmini.test.js +114 -0
  156. package/dist/test/woplugmini.test.js.map +1 -0
  157. package/dist/test/wopresence.test.d.ts.map +1 -0
  158. package/dist/test/wopresence.test.js +68 -0
  159. package/dist/test/wopresence.test.js.map +1 -0
  160. package/dist/test/wosensorth.test.d.ts.map +1 -0
  161. package/dist/test/wosensorth.test.js +51 -0
  162. package/dist/test/wosensorth.test.js.map +1 -0
  163. package/dist/test/wosmartlock.test.d.ts.map +1 -0
  164. package/dist/test/wosmartlock.test.js +151 -0
  165. package/dist/test/wosmartlock.test.js.map +1 -0
  166. package/dist/test/wosmartlockpro.test.d.ts.map +1 -0
  167. package/dist/test/wosmartlockpro.test.js +151 -0
  168. package/dist/test/wosmartlockpro.test.js.map +1 -0
  169. package/dist/{device → test}/wostrip.test.d.ts.map +1 -1
  170. package/dist/test/wostrip.test.js +102 -0
  171. package/dist/test/wostrip.test.js.map +1 -0
  172. package/dist/types/bledevicestatus.d.ts +4 -12
  173. package/dist/types/bledevicestatus.d.ts.map +1 -1
  174. package/dist/types/devicelist.d.ts.map +1 -1
  175. package/dist/types/devicelist.js +0 -4
  176. package/dist/types/devicelist.js.map +1 -1
  177. package/dist/types/devicepush.d.ts +13 -0
  178. package/dist/types/devicepush.d.ts.map +1 -0
  179. package/dist/types/devicepush.js +2 -0
  180. package/dist/types/devicepush.js.map +1 -0
  181. package/dist/types/deviceresponse.d.ts +2 -3
  182. package/dist/types/deviceresponse.d.ts.map +1 -1
  183. package/dist/types/devicestatus.d.ts.map +1 -1
  184. package/dist/types/devicewebhookstatus.d.ts +32 -0
  185. package/dist/types/devicewebhookstatus.d.ts.map +1 -1
  186. package/dist/types/irdevicelist.d.ts.map +1 -1
  187. package/dist/types/types.d.ts +23 -0
  188. package/dist/types/types.d.ts.map +1 -1
  189. package/dist/types/types.js +14 -0
  190. package/dist/types/types.js.map +1 -1
  191. package/docs/assets/highlight.css +12 -47
  192. package/docs/assets/main.js +1 -1
  193. package/docs/assets/navigation.js +1 -1
  194. package/docs/assets/search.js +1 -1
  195. package/docs/classes/SwitchBotBLE.html +64 -0
  196. package/docs/classes/SwitchBotOpenAPI.html +47 -0
  197. package/docs/classes/SwitchbotDevice.html +32 -33
  198. package/docs/enums/LogLevel.html +10 -0
  199. package/docs/enums/SwitchBotBLEModel.html +2 -2
  200. package/docs/enums/SwitchBotBLEModelFriendlyName.html +2 -2
  201. package/docs/enums/SwitchBotBLEModelName.html +2 -2
  202. package/docs/enums/SwitchBotModel.html +2 -2
  203. package/docs/hierarchy.html +1 -0
  204. package/docs/index.html +16 -993
  205. package/docs/interfaces/Ad-1.html +5 -0
  206. package/docs/interfaces/AdvertisementData.html +3 -0
  207. package/docs/interfaces/Chars.html +4 -0
  208. package/docs/interfaces/ErrorObject.html +3 -0
  209. package/docs/interfaces/Params.html +6 -0
  210. package/docs/interfaces/ServiceData.html +2 -0
  211. package/docs/interfaces/SwitchBotBLEDevice.html +21 -0
  212. package/docs/interfaces/WebhookDetail.html +6 -0
  213. package/docs/interfaces/ad.html +5 -0
  214. package/docs/interfaces/body.html +3 -0
  215. package/docs/interfaces/bodyChange.html +4 -0
  216. package/docs/interfaces/deleteWebhookResponse.html +4 -0
  217. package/docs/interfaces/device.html +7 -0
  218. package/docs/interfaces/deviceList.html +2 -0
  219. package/docs/interfaces/deviceStatus.html +7 -0
  220. package/docs/interfaces/deviceStatusRequest.html +4 -0
  221. package/docs/interfaces/deviceWebhook.html +4 -0
  222. package/docs/interfaces/deviceWebhookContext.html +4 -0
  223. package/docs/interfaces/devices.html +4 -0
  224. package/docs/interfaces/infraredRemoteList.html +2 -0
  225. package/docs/interfaces/irdevice.html +5 -0
  226. package/docs/interfaces/pushResponse.html +4 -0
  227. package/docs/interfaces/queryWebhookResponse.html +4 -0
  228. package/docs/interfaces/setupWebhookResponse.html +4 -0
  229. package/docs/interfaces/switchbot.html +3 -0
  230. package/docs/interfaces/updateWebhookResponse.html +4 -0
  231. package/docs/interfaces/webhookRequest.html +4 -0
  232. package/docs/media/BLE.md +1109 -0
  233. package/docs/media/OpenAPI.md +185 -0
  234. package/docs/modules.html +136 -3
  235. package/docs/types/MacAddress.html +1 -0
  236. package/docs/types/batteryCirculatorFan.html +1 -0
  237. package/docs/types/batteryCirculatorFanServiceData.html +1 -0
  238. package/docs/types/batteryCirculatorFanStatus.html +1 -0
  239. package/docs/types/batteryCirculatorFanWebhookContext.html +1 -0
  240. package/docs/types/blindTilt.html +1 -0
  241. package/docs/types/blindTiltServiceData.html +1 -0
  242. package/docs/types/blindTiltStatus.html +1 -0
  243. package/docs/types/blindTiltWebhookContext.html +1 -0
  244. package/docs/types/bot.html +1 -0
  245. package/docs/types/botServiceData.html +1 -0
  246. package/docs/types/botStatus.html +1 -0
  247. package/docs/types/botWebhookContext.html +1 -0
  248. package/docs/types/ceilingLight.html +1 -0
  249. package/docs/types/ceilingLightPro.html +1 -0
  250. package/docs/types/ceilingLightProServiceData.html +1 -0
  251. package/docs/types/ceilingLightProStatus.html +1 -0
  252. package/docs/types/ceilingLightProWebhookContext.html +1 -0
  253. package/docs/types/ceilingLightServiceData.html +1 -0
  254. package/docs/types/ceilingLightStatus.html +1 -0
  255. package/docs/types/ceilingLightWebhookContext.html +1 -0
  256. package/docs/types/colorBulb.html +1 -0
  257. package/docs/types/colorBulbServiceData.html +1 -0
  258. package/docs/types/colorBulbStatus.html +1 -0
  259. package/docs/types/colorBulbWebhookContext.html +1 -0
  260. package/docs/types/contactSensor.html +1 -0
  261. package/docs/types/contactSensorServiceData.html +1 -0
  262. package/docs/types/contactSensorStatus.html +1 -0
  263. package/docs/types/contactSensorWebhookContext.html +1 -0
  264. package/docs/types/curtain.html +1 -0
  265. package/docs/types/curtain3.html +1 -0
  266. package/docs/types/curtain3ServiceData.html +1 -0
  267. package/docs/types/curtain3WebhookContext.html +1 -0
  268. package/docs/types/curtainServiceData.html +1 -0
  269. package/docs/types/curtainStatus.html +1 -0
  270. package/docs/types/curtainWebhookContext.html +1 -0
  271. package/docs/types/floorCleaningRobotS10.html +1 -0
  272. package/docs/types/floorCleaningRobotS10Status.html +1 -0
  273. package/docs/types/floorCleaningRobotS10WebhookContext.html +1 -0
  274. package/docs/types/hub2.html +1 -0
  275. package/docs/types/hub2ServiceData.html +1 -0
  276. package/docs/types/hub2Status.html +1 -0
  277. package/docs/types/hub2WebhookContext.html +1 -0
  278. package/docs/types/humidifier.html +1 -0
  279. package/docs/types/humidifierServiceData.html +1 -0
  280. package/docs/types/humidifierStatus.html +1 -0
  281. package/docs/types/humidifierWebhookContext.html +1 -0
  282. package/docs/types/indoorCam.html +1 -0
  283. package/docs/types/indoorCameraWebhookContext.html +1 -0
  284. package/docs/types/keypad.html +1 -0
  285. package/docs/types/keypadTouch.html +1 -0
  286. package/docs/types/keypadTouchWebhookContext.html +1 -0
  287. package/docs/types/keypadWebhookContext.html +1 -0
  288. package/docs/types/lock.html +1 -0
  289. package/docs/types/lockPro.html +1 -0
  290. package/docs/types/lockProServiceData.html +1 -0
  291. package/docs/types/lockProStatus.html +1 -0
  292. package/docs/types/lockProWebhookContext.html +1 -0
  293. package/docs/types/lockServiceData.html +1 -0
  294. package/docs/types/lockStatus.html +1 -0
  295. package/docs/types/lockWebhookContext.html +1 -0
  296. package/docs/types/meter.html +1 -0
  297. package/docs/types/meterPlus.html +1 -0
  298. package/docs/types/meterPlusServiceData.html +1 -0
  299. package/docs/types/meterPlusStatus.html +1 -0
  300. package/docs/types/meterPlusWebhookContext.html +1 -0
  301. package/docs/types/meterServiceData.html +1 -0
  302. package/docs/types/meterStatus.html +1 -0
  303. package/docs/types/meterWebhookContext.html +1 -0
  304. package/docs/types/motionSensor.html +1 -0
  305. package/docs/types/motionSensorServiceData.html +1 -0
  306. package/docs/types/motionSensorStatus.html +1 -0
  307. package/docs/types/motionSensorWebhookContext.html +1 -0
  308. package/docs/types/outdoorMeter.html +1 -0
  309. package/docs/types/outdoorMeterServiceData.html +1 -0
  310. package/docs/types/outdoorMeterStatus.html +1 -0
  311. package/docs/types/outdoorMeterWebhookContext.html +1 -0
  312. package/docs/types/panTiltCamWebhookContext.html +1 -0
  313. package/docs/types/pantiltCam.html +1 -0
  314. package/docs/types/pantiltCam2k.html +1 -0
  315. package/docs/types/plug.html +1 -0
  316. package/docs/types/plugMini.html +1 -0
  317. package/docs/types/plugMiniJPServiceData.html +1 -0
  318. package/docs/types/plugMiniJPWebhookContext.html +1 -0
  319. package/docs/types/plugMiniStatus.html +1 -0
  320. package/docs/types/plugMiniUSServiceData.html +1 -0
  321. package/docs/types/plugMiniUSWebhookContext.html +1 -0
  322. package/docs/types/plugStatus.html +1 -0
  323. package/docs/types/plugWebhookContext.html +1 -0
  324. package/docs/types/remote.html +1 -0
  325. package/docs/types/robotVacuumCleanerS1.html +1 -0
  326. package/docs/types/robotVacuumCleanerS1Plus.html +1 -0
  327. package/docs/types/robotVacuumCleanerS1PlusStatus.html +1 -0
  328. package/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +1 -0
  329. package/docs/types/robotVacuumCleanerS1Status.html +1 -0
  330. package/docs/types/robotVacuumCleanerS1WebhookContext.html +1 -0
  331. package/docs/types/robotVacuumCleanerServiceData.html +1 -0
  332. package/docs/types/stripLight.html +1 -0
  333. package/docs/types/stripLightServiceData.html +1 -0
  334. package/docs/types/stripLightStatus.html +1 -0
  335. package/docs/types/stripLightWebhookContext.html +1 -0
  336. package/docs/types/waterLeakDetector.html +1 -0
  337. package/docs/types/waterLeakDetectorServiceData.html +1 -0
  338. package/docs/types/waterLeakDetectorStatus.html +1 -0
  339. package/docs/types/waterLeakDetectorWebhookContext.html +1 -0
  340. package/package.json +13 -11
  341. package/.github/npm-version-script.cjs +0 -81
  342. package/dist/device/woblindtilt.test.d.ts.map +0 -1
  343. package/dist/device/woblindtilt.test.js +0 -26
  344. package/dist/device/woblindtilt.test.js.map +0 -1
  345. package/dist/device/wobulb.test.js +0 -52
  346. package/dist/device/wobulb.test.js.map +0 -1
  347. package/dist/device/woceilinglight.test.d.ts.map +0 -1
  348. package/dist/device/woceilinglight.test.js +0 -63
  349. package/dist/device/woceilinglight.test.js.map +0 -1
  350. package/dist/device/wocontact.test.d.ts.map +0 -1
  351. package/dist/device/wocontact.test.js +0 -34
  352. package/dist/device/wocontact.test.js.map +0 -1
  353. package/dist/device/wocurtain.test.d.ts.map +0 -1
  354. package/dist/device/wocurtain.test.js +0 -33
  355. package/dist/device/wocurtain.test.js.map +0 -1
  356. package/dist/device/wohand.test.js +0 -62
  357. package/dist/device/wohand.test.js.map +0 -1
  358. package/dist/device/wohand2.test.d.ts +0 -2
  359. package/dist/device/wohand2.test.d.ts.map +0 -1
  360. package/dist/device/wohand2.test.js +0 -50
  361. package/dist/device/wohand2.test.js.map +0 -1
  362. package/dist/device/wohumi.test.js +0 -61
  363. package/dist/device/wohumi.test.js.map +0 -1
  364. package/dist/device/woiosensorth.test.d.ts.map +0 -1
  365. package/dist/device/woiosensorth.test.js +0 -39
  366. package/dist/device/woiosensorth.test.js.map +0 -1
  367. package/dist/device/woplugmini.test.d.ts.map +0 -1
  368. package/dist/device/woplugmini.test.js +0 -91
  369. package/dist/device/woplugmini.test.js.map +0 -1
  370. package/dist/device/wopresence.test.d.ts.map +0 -1
  371. package/dist/device/wopresence.test.js +0 -42
  372. package/dist/device/wopresence.test.js.map +0 -1
  373. package/dist/device/wosensorth.test.d.ts.map +0 -1
  374. package/dist/device/wosensorth.test.js +0 -59
  375. package/dist/device/wosensorth.test.js.map +0 -1
  376. package/dist/device/wosmartlock.test.d.ts.map +0 -1
  377. package/dist/device/wosmartlock.test.js +0 -84
  378. package/dist/device/wosmartlock.test.js.map +0 -1
  379. package/dist/device/wosmartlockpro.test.d.ts.map +0 -1
  380. package/dist/device/wosmartlockpro.test.js +0 -124
  381. package/dist/device/wosmartlockpro.test.js.map +0 -1
  382. package/dist/device/wostrip.test.js +0 -115
  383. package/dist/device/wostrip.test.js.map +0 -1
  384. package/dist/switchbot.d.ts.map +0 -1
  385. package/dist/switchbot.js +0 -259
  386. package/dist/switchbot.js.map +0 -1
  387. package/dist/types/pushbody.d.ts +0 -6
  388. package/dist/types/pushbody.d.ts.map +0 -1
  389. package/dist/types/pushbody.js +0 -2
  390. package/dist/types/pushbody.js.map +0 -1
  391. package/docs/classes/SwitchBot.html +0 -16
  392. package/docs/types/SwitchBotBLEDevice.html +0 -1
  393. /package/dist/{device → test}/woblindtilt.test.d.ts +0 -0
  394. /package/dist/{device → test}/wobulb.test.d.ts +0 -0
  395. /package/dist/{device → test}/woceilinglight.test.d.ts +0 -0
  396. /package/dist/{device → test}/wocontact.test.d.ts +0 -0
  397. /package/dist/{device → test}/wocurtain.test.d.ts +0 -0
  398. /package/dist/{device → test}/wohand.test.d.ts +0 -0
  399. /package/dist/{device → test}/wohumi.test.d.ts +0 -0
  400. /package/dist/{device → test}/woiosensorth.test.d.ts +0 -0
  401. /package/dist/{device → test}/woplugmini.test.d.ts +0 -0
  402. /package/dist/{device → test}/wopresence.test.d.ts +0 -0
  403. /package/dist/{device → test}/wosensorth.test.d.ts +0 -0
  404. /package/dist/{device → test}/wosmartlock.test.d.ts +0 -0
  405. /package/dist/{device → test}/wosmartlockpro.test.d.ts +0 -0
  406. /package/dist/{device → test}/wostrip.test.d.ts +0 -0
@@ -1,39 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { WoIOSensorTH } from './woiosensorth.js';
3
- describe('woIOSensorTH', () => {
4
- const validServiceData = Buffer.from([0x00, 0x00, 0x7F]);
5
- const validManufacturerData = Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x8F, 0x50, 0x00]);
6
- const invalidServiceData = Buffer.from([0x00, 0x00]);
7
- const invalidManufacturerData = Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A]);
8
- it('should return null for incorrect serviceData length', async () => {
9
- const result = await WoIOSensorTH.parseServiceData(invalidServiceData, validManufacturerData, undefined);
10
- expect(result).toBeNull();
11
- });
12
- it('should return null for incorrect manufacturerData length', async () => {
13
- const result = await WoIOSensorTH.parseServiceData(validServiceData, invalidManufacturerData, undefined);
14
- expect(result).toBeNull();
15
- });
16
- it('should return correct parsed data for valid inputs', async () => {
17
- const result = await WoIOSensorTH.parseServiceData(validServiceData, validManufacturerData, undefined);
18
- expect(result).toEqual({
19
- model: 'OutdoorMeter',
20
- modelName: 'OutdoorMeter',
21
- modelFriendlyName: 'OutdoorMeter',
22
- temperature: {
23
- c: 1.5,
24
- f: 34.7,
25
- },
26
- fahrenheit: true,
27
- humidity: 80,
28
- battery: 127,
29
- });
30
- });
31
- it('should log messages for incorrect data lengths', async () => {
32
- const onlog = jest.fn();
33
- await WoIOSensorTH.parseServiceData(invalidServiceData, validManufacturerData, onlog);
34
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoIOSensorTH] Service Data Buffer length 2 !== 3!');
35
- await WoIOSensorTH.parseServiceData(validServiceData, invalidManufacturerData, onlog);
36
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoIOSensorTH] Manufacturer Data Buffer length 11 !== 14!');
37
- });
38
- });
39
- //# sourceMappingURL=woiosensorth.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woiosensorth.test.js","sourceRoot":"","sources":["../../src/device/woiosensorth.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACxD,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAC/H,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACpD,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAE/G,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAA;QACxG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAA;QACxG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,SAAS,CAAC,CAAA;QACtG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,cAAc;YACzB,iBAAiB,EAAE,cAAc;YACjC,WAAW,EAAE;gBACX,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,IAAI;aACR;YACD,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,GAAG;SACb,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;QACvB,MAAM,YAAY,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAA;QACrF,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,uEAAuE,CAAC,CAAA;QAC3G,MAAM,YAAY,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAA;QACrF,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,8EAA8E,CAAC,CAAA;IACpH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"woplugmini.test.d.ts","sourceRoot":"","sources":["../../src/device/woplugmini.test.ts"],"names":[],"mappings":""}
@@ -1,91 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import * as Noble from '@stoprocent/noble';
3
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
4
- import { WoPlugMini } from './woplugmini.js';
5
- describe('woPlugMini', () => {
6
- let manufacturerData;
7
- let onlog;
8
- beforeEach(() => {
9
- onlog = jest.fn();
10
- });
11
- describe('parseServiceData_US', () => {
12
- it('should return null if manufacturerData length is not 14', async () => {
13
- manufacturerData = Buffer.alloc(13);
14
- const result = await WoPlugMini.parseServiceData_US(manufacturerData, onlog);
15
- expect(result).toBeNull();
16
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoPlugMiniUS] Buffer length 13 should be 14');
17
- });
18
- it('should parse the service data correctly', async () => {
19
- manufacturerData = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0x80, 0x07, 0x64, 0x80, 0x40, 0x01]);
20
- const result = await WoPlugMini.parseServiceData_US(manufacturerData, onlog);
21
- expect(result).toEqual({
22
- model: SwitchBotBLEModel.PlugMiniUS,
23
- modelName: SwitchBotBLEModelName.PlugMini,
24
- modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini,
25
- state: 'on',
26
- delay: true,
27
- timer: true,
28
- syncUtcTime: false,
29
- wifiRssi: 100,
30
- overload: true,
31
- currentPower: 32.1,
32
- });
33
- });
34
- });
35
- describe('parseServiceData_JP', () => {
36
- it('should return null if manufacturerData length is not 14', async () => {
37
- manufacturerData = Buffer.alloc(13);
38
- const result = await WoPlugMini.parseServiceData_JP(manufacturerData, onlog);
39
- expect(result).toBeNull();
40
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoPlugMiniJP] Buffer length 13 should be 14');
41
- });
42
- it('should parse the service data correctly', async () => {
43
- manufacturerData = Buffer.from([0, 0, 0, 0, 0, 0, 0, 0, 0x80, 0x07, 0x64, 0x80, 0x40, 0x01]);
44
- const result = await WoPlugMini.parseServiceData_JP(manufacturerData, onlog);
45
- expect(result).toEqual({
46
- model: SwitchBotBLEModel.PlugMiniJP,
47
- modelName: SwitchBotBLEModelName.PlugMini,
48
- modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini,
49
- state: 'on',
50
- delay: true,
51
- timer: true,
52
- syncUtcTime: false,
53
- wifiRssi: 100,
54
- overload: true,
55
- currentPower: 32.1,
56
- });
57
- });
58
- });
59
- describe('state operations', () => {
60
- let plugMini;
61
- beforeEach(() => {
62
- const peripheral = {}; // Replace with the actual peripheral object (e.g. from Noble)
63
- plugMini = new WoPlugMini(peripheral, Noble);
64
- jest.spyOn(plugMini, 'operatePlug').mockImplementation(async (bytes) => {
65
- if (bytes.includes(0x80)) {
66
- return;
67
- }
68
- if (bytes.includes(0x00)) {
69
- // Intentionally left empty
70
- }
71
- });
72
- });
73
- it('should read state correctly', async () => {
74
- const result = await plugMini.readState();
75
- expect(result).toBe(true);
76
- });
77
- it('should turn on correctly', async () => {
78
- const result = await plugMini.turnOn();
79
- expect(result).toBe(true);
80
- });
81
- it('should turn off correctly', async () => {
82
- const result = await plugMini.turnOff();
83
- expect(result).toBe(false);
84
- });
85
- it('should toggle correctly', async () => {
86
- const result = await plugMini.toggle();
87
- expect(result).toBe(true);
88
- });
89
- });
90
- });
91
- //# sourceMappingURL=woplugmini.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"woplugmini.test.js","sourceRoot":"","sources":["../../src/device/woplugmini.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wopresence.test.d.ts","sourceRoot":"","sources":["../../src/device/wopresence.test.ts"],"names":[],"mappings":""}
@@ -1,42 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
3
- import { WoPresence } from './wopresence.js';
4
- describe('woPresence', () => {
5
- describe('parseServiceData', () => {
6
- it('should return null if serviceData length is not 6', async () => {
7
- const serviceData = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05]);
8
- const onlog = jest.fn();
9
- const result = await WoPresence.parseServiceData(serviceData, onlog);
10
- expect(result).toBeNull();
11
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoPresence] Buffer length 5 !== 6!');
12
- });
13
- it('should parse serviceData correctly', async () => {
14
- const serviceData = Buffer.from([0x00, 0b11000000, 0b01111111, 0x00, 0x00, 0b00111111]);
15
- const onlog = jest.fn();
16
- const result = await WoPresence.parseServiceData(serviceData, onlog);
17
- expect(result).toEqual({
18
- model: SwitchBotBLEModel.MotionSensor,
19
- modelName: SwitchBotBLEModelName.MotionSensor,
20
- modelFriendlyName: SwitchBotBLEModelFriendlyName.MotionSensor,
21
- tested: true,
22
- movement: true,
23
- battery: 127,
24
- led: 1,
25
- iot: 1,
26
- sense_distance: 3,
27
- lightLevel: 'unknown',
28
- is_light: true,
29
- });
30
- expect(onlog).not.toHaveBeenCalled();
31
- });
32
- it('should handle different light levels correctly', async () => {
33
- const serviceDataDark = Buffer.from([0x00, 0b11000000, 0b01111111, 0x00, 0x00, 0b00111101]);
34
- const serviceDataBright = Buffer.from([0x00, 0b11000000, 0b01111111, 0x00, 0x00, 0b00111110]);
35
- const resultDark = await WoPresence.parseServiceData(serviceDataDark, undefined);
36
- const resultBright = await WoPresence.parseServiceData(serviceDataBright, undefined);
37
- expect(resultDark?.lightLevel).toBe('dark');
38
- expect(resultBright?.lightLevel).toBe('bright');
39
- });
40
- });
41
- });
42
- //# sourceMappingURL=wopresence.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wopresence.test.js","sourceRoot":"","sources":["../../src/device/wopresence.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAC3G,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;YAEvB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,wDAAwD,CAAC,CAAA;QAC9F,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;YACvF,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;YAEvB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,KAAK,EAAE,iBAAiB,CAAC,YAAY;gBACrC,SAAS,EAAE,qBAAqB,CAAC,YAAY;gBAC7C,iBAAiB,EAAE,6BAA6B,CAAC,YAAY;gBAC7D,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,GAAG;gBACZ,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,CAAC;gBACN,cAAc,EAAE,CAAC;gBACjB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAA;YACF,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACtC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;YAC3F,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;YAE7F,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAA;YAChF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAA;YAEpF,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC3C,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wosensorth.test.d.ts","sourceRoot":"","sources":["../../src/device/wosensorth.test.ts"],"names":[],"mappings":""}
@@ -1,59 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
3
- // wosensorth.test.ts
4
- import { WoSensorTH } from './wosensorth.js';
5
- describe('woSensorTH', () => {
6
- it('should parse service data correctly for Meter', async () => {
7
- const serviceData = Buffer.from([0x00, 0x00, 0x7F, 0x0A, 0x81, 0x80]);
8
- const expectedData = {
9
- model: SwitchBotBLEModel.Meter,
10
- modelName: SwitchBotBLEModelName.Meter,
11
- modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter,
12
- temperature: {
13
- c: -1.0,
14
- f: 30.2,
15
- },
16
- celcius: -1.0,
17
- fahrenheit: 30.2,
18
- fahrenheit_mode: true,
19
- humidity: 0,
20
- battery: 127,
21
- };
22
- const result = await WoSensorTH.parseServiceData(serviceData, undefined);
23
- expect(result).toEqual(expectedData);
24
- });
25
- it('should parse service data correctly for MeterPlus', async () => {
26
- const serviceData = Buffer.from([0x00, 0x00, 0x7F, 0x0A, 0x81, 0x80]);
27
- const expectedData = {
28
- model: SwitchBotBLEModel.MeterPlus,
29
- modelName: SwitchBotBLEModelName.MeterPlus,
30
- modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPlus,
31
- temperature: {
32
- c: -1.0,
33
- f: 30.2,
34
- },
35
- celcius: -1.0,
36
- fahrenheit: 30.2,
37
- fahrenheit_mode: true,
38
- humidity: 0,
39
- battery: 127,
40
- };
41
- const result = await WoSensorTH.parseServiceData_Plus(serviceData, undefined);
42
- expect(result).toEqual(expectedData);
43
- });
44
- it('should log an error if service data length is incorrect for Meter', async () => {
45
- const serviceData = Buffer.from([0x00, 0x00, 0x7F]);
46
- const mockLog = jest.fn();
47
- const result = await WoSensorTH.parseServiceData(serviceData, mockLog);
48
- expect(result).toBeNull();
49
- expect(mockLog).toHaveBeenCalledWith('[parseServiceDataForWoSensorTH] Buffer length 3 !== 6!');
50
- });
51
- it('should log an error if service data length is incorrect for MeterPlus', async () => {
52
- const serviceData = Buffer.from([0x00, 0x00, 0x7F]);
53
- const mockLog = jest.fn();
54
- const result = await WoSensorTH.parseServiceData_Plus(serviceData, mockLog);
55
- expect(result).toBeNull();
56
- expect(mockLog).toHaveBeenCalledWith('[parseServiceDataForWoSensorTHPlus] Buffer length 3 !== 6!');
57
- });
58
- });
59
- //# sourceMappingURL=wosensorth.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wosensorth.test.js","sourceRoot":"","sources":["../../src/device/wosensorth.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wosmartlock.test.d.ts","sourceRoot":"","sources":["../../src/device/wosmartlock.test.ts"],"names":[],"mappings":""}
@@ -1,84 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import * as Noble from '@stoprocent/noble';
3
- import { SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../types/types.js';
4
- // wosmartlock.test.ts
5
- import { WoSmartLock } from './wosmartlock.js';
6
- jest.mock('@stoprocent/noble');
7
- jest.mock('crypto');
8
- describe('woSmartLock', () => {
9
- let peripheral;
10
- let noble;
11
- let smartLock;
12
- beforeEach(() => {
13
- peripheral = {};
14
- noble = Noble;
15
- smartLock = new WoSmartLock(peripheral, noble);
16
- });
17
- describe('getLockStatus', () => {
18
- it('should return correct lock status', () => {
19
- expect(WoSmartLock.getLockStatus(0b0000000)).toBe('LOCKED');
20
- expect(WoSmartLock.getLockStatus(0b0010000)).toBe('UNLOCKED');
21
- expect(WoSmartLock.getLockStatus(0b0100000)).toBe('LOCKING');
22
- expect(WoSmartLock.getLockStatus(0b0110000)).toBe('UNLOCKING');
23
- expect(WoSmartLock.getLockStatus(0b1000000)).toBe('LOCKING_STOP');
24
- expect(WoSmartLock.getLockStatus(0b1010000)).toBe('UNLOCKING_STOP');
25
- expect(WoSmartLock.getLockStatus(0b1100000)).toBe('NOT_FULLY_LOCKED');
26
- expect(WoSmartLock.getLockStatus(0b1110000)).toBe('UNKNOWN');
27
- });
28
- });
29
- describe('parseServiceData', () => {
30
- it('should parse service data correctly', async () => {
31
- const serviceData = Buffer.from([0x00, 0x00, 0x7F, 0x0A, 0x81, 0x80]);
32
- const manufacturerData = Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20]);
33
- const expectedData = {
34
- model: SwitchBotBLEModel.Lock,
35
- modelName: SwitchBotBLEModelName.Lock,
36
- modelFriendlyName: SwitchBotBLEModelFriendlyName.Lock,
37
- battery: 127,
38
- calibration: false,
39
- status: 'UNLOCKED',
40
- update_from_secondary_lock: false,
41
- door_open: false,
42
- double_lock_mode: false,
43
- unclosed_alarm: false,
44
- unlocked_alarm: false,
45
- auto_lock_paused: false,
46
- night_latch: false,
47
- };
48
- const result = await WoSmartLock.parseServiceData(serviceData, manufacturerData, undefined);
49
- expect(result).toEqual(expectedData);
50
- });
51
- it('should return null if manufacturer data is too short', async () => {
52
- const serviceData = Buffer.from([0x00, 0x00, 0x7F, 0x0A, 0x81, 0x80]);
53
- const manufacturerData = Buffer.from([0x00, 0x00, 0x00, 0x00, 0x00]);
54
- const result = await WoSmartLock.parseServiceData(serviceData, manufacturerData, undefined);
55
- expect(result).toBeNull();
56
- });
57
- });
58
- describe('lock and unlock methods', () => {
59
- beforeEach(() => {
60
- jest.spyOn(smartLock, 'operateLock').mockResolvedValue(Buffer.from([0x01]));
61
- });
62
- it('should unlock the smart lock', async () => {
63
- const result = await smartLock.unlock();
64
- expect(result).toBe(WoSmartLock.Result.SUCCESS);
65
- });
66
- it('should lock the smart lock', async () => {
67
- const result = await smartLock.lock();
68
- expect(result).toBe(WoSmartLock.Result.SUCCESS);
69
- });
70
- it('should get lock info', async () => {
71
- const expectedData = {
72
- calibration: true,
73
- status: 'LOCKED',
74
- door_open: false,
75
- unclosed_alarm: false,
76
- unlocked_alarm: false,
77
- };
78
- jest.spyOn(smartLock, 'operateLock').mockResolvedValue(Buffer.from([0x01, 0b10000000, 0b00000000]));
79
- const result = await smartLock.info();
80
- expect(result).toEqual(expectedData);
81
- });
82
- });
83
- });
84
- //# sourceMappingURL=wosmartlock.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wosmartlock.test.js","sourceRoot":"","sources":["../../src/device/wosmartlock.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wosmartlockpro.test.d.ts","sourceRoot":"","sources":["../../src/device/wosmartlockpro.test.ts"],"names":[],"mappings":""}
@@ -1,124 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import * as Noble from '@stoprocent/noble';
3
- import { expect } from 'chai';
4
- import sinon from 'sinon';
5
- import { WoSmartLockPro } from './wosmartlockpro.js';
6
- describe('woSmartLockPro', () => {
7
- let lock;
8
- let mockPeripheral;
9
- let mockNoble;
10
- beforeEach(() => {
11
- mockPeripheral = {};
12
- mockNoble = sinon.stub(Noble);
13
- lock = new WoSmartLockPro(mockPeripheral, mockNoble);
14
- });
15
- afterEach(() => {
16
- sinon.restore();
17
- });
18
- describe('setKey', () => {
19
- it('should set the key id and encryption key', async () => {
20
- const keyId = 'testKeyId';
21
- const encryptionKey = '0123456789abcdef0123456789abcdef';
22
- await lock.setKey(keyId, encryptionKey);
23
- expect(lock._key_id).to.equal(keyId);
24
- expect(lock._encryption_key?.toString('hex')).to.equal(encryptionKey);
25
- });
26
- });
27
- describe('unlock', () => {
28
- it('should unlock the smart lock', async () => {
29
- const operateLockProStub = sinon.stub(lock, 'operateLockPro').resolves(Buffer.from([0x01]));
30
- const result = await lock.unlock();
31
- expect(result).to.equal(WoSmartLockPro.Result.SUCCESS);
32
- return expect(operateLockProStub.calledOnceWith(WoSmartLockPro.COMMAND_UNLOCK)).to.be.true;
33
- });
34
- });
35
- describe('unlockNoUnlatch', () => {
36
- it('should unlock the smart lock without unlatching', async () => {
37
- const operateLockProStub = sinon.stub(lock, 'operateLockPro').resolves(Buffer.from([0x01]));
38
- const result = await lock.unlockNoUnlatch();
39
- expect(result).to.equal(WoSmartLockPro.Result.SUCCESS);
40
- return expect(operateLockProStub.calledOnceWith(WoSmartLockPro.COMMAND_UNLOCK_NO_UNLATCH)).to.be.true;
41
- });
42
- });
43
- describe('lock', () => {
44
- it('should lock the smart lock', async () => {
45
- const operateLockProStub = sinon.stub(lock, 'operateLockPro').resolves(Buffer.from([0x01]));
46
- const result = await lock.lock();
47
- expect(result).to.equal(WoSmartLockPro.Result.SUCCESS);
48
- return expect(operateLockProStub.calledOnceWith(WoSmartLockPro.COMMAND_LOCK)).to.be.true;
49
- });
50
- });
51
- describe('info', () => {
52
- it('should get the lock info', async () => {
53
- const resBuf = Buffer.from([0b10000000, 0b00100000]);
54
- const operateLockProStub = sinon.stub(lock, 'operateLockPro').resolves(resBuf);
55
- const result = await lock.info();
56
- expect(result).to.deep.equal({
57
- calibration: true,
58
- status: 'LOCKED',
59
- door_open: false,
60
- unclosed_alarm: true,
61
- unlocked_alarm: false,
62
- });
63
- return expect(operateLockProStub.calledOnceWith(WoSmartLockPro.COMMAND_LOCK_INFO)).to.be.true;
64
- });
65
- });
66
- describe('encrypt', () => {
67
- it('should encrypt a string', async () => {
68
- const str = 'test';
69
- lock._encryption_key = Buffer.from('0123456789abcdef0123456789abcdef', 'hex');
70
- lock._iv = Buffer.from('0123456789abcdef', 'hex');
71
- const encrypted = await lock.encrypt(str);
72
- expect(encrypted).to.be.a('string');
73
- });
74
- });
75
- describe('decrypt', () => {
76
- it('should decrypt a buffer', async () => {
77
- const data = Buffer.from('74657374', 'hex'); // 'test' in hex
78
- lock._encryption_key = Buffer.from('0123456789abcdef0123456789abcdef', 'hex');
79
- lock._iv = Buffer.from('0123456789abcdef', 'hex');
80
- const decrypted = await lock.decrypt(data);
81
- expect(decrypted.toString()).to.equal('test');
82
- });
83
- });
84
- describe('getIv', () => {
85
- it('should get the IV', async () => {
86
- const res = Buffer.from('00000000000000000000000000000000', 'hex');
87
- const operateLockProStub = sinon.stub(lock, 'operateLockPro').resolves(res);
88
- const iv = await lock.getIv();
89
- expect(iv).to.deep.equal(res.subarray(4));
90
- return expect(operateLockProStub.calledOnceWith(WoSmartLockPro.COMMAND_GET_CK_IV + lock._key_id, false)).to.be.true;
91
- });
92
- });
93
- describe('encryptedCommand', () => {
94
- it('should send an encrypted command', async () => {
95
- const key = 'testKey';
96
- const iv = Buffer.from('0123456789abcdef', 'hex');
97
- const encrypted = 'encryptedString';
98
- const resBuf = Buffer.from('01000000', 'hex');
99
- sinon.stub(lock, 'getIv').resolves(iv);
100
- sinon.stub(lock, 'encrypt').resolves(encrypted);
101
- sinon.stub(lock, 'command').resolves(resBuf);
102
- sinon.stub(lock, 'decrypt').resolves(Buffer.from('decrypted', 'hex'));
103
- const result = await lock.encryptedCommand(key);
104
- expect(result).to.be.instanceOf(Buffer);
105
- });
106
- });
107
- describe('operateLockPro', () => {
108
- it('should operate the lock with encryption', async () => {
109
- const key = 'testKey';
110
- const encryptedCommandStub = sinon.stub(lock, 'encryptedCommand').resolves(Buffer.from('01000000', 'hex'));
111
- const result = await lock.operateLockPro(key);
112
- expect(result).to.be.instanceOf(Buffer);
113
- return expect(encryptedCommandStub.calledOnceWith(key)).to.be.true;
114
- });
115
- it('should operate the lock without encryption', async () => {
116
- const key = 'testKey';
117
- const resBuf = Buffer.from('01000000', 'hex');
118
- sinon.stub(lock, 'command').resolves(resBuf);
119
- const result = await lock.operateLockPro(key, false);
120
- expect(result).to.be.instanceOf(Buffer);
121
- });
122
- });
123
- });
124
- //# sourceMappingURL=wosmartlockpro.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wosmartlockpro.test.js","sourceRoot":"","sources":["../../src/device/wosmartlockpro.test.ts"],"names":[],"mappings":"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"}
@@ -1,115 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { expect } from 'chai';
3
- import { WoStrip } from './wostrip.js';
4
- describe('woStrip', () => {
5
- describe('parseServiceData', () => {
6
- it('should return null if serviceData length is not 18', async () => {
7
- const serviceData = Buffer.alloc(10);
8
- const result = await WoStrip.parseServiceData(serviceData, () => { });
9
- return expect(result).to.be.null;
10
- });
11
- it('should parse serviceData correctly', async () => {
12
- const serviceData = Buffer.from([0, 0, 0, 255, 255, 255, 0, 128, 8, 127, 254, 0, 0, 0, 0, 0, 0, 0]);
13
- const result = await WoStrip.parseServiceData(serviceData, () => { });
14
- expect(result).to.deep.equal({
15
- model: 'StripLight',
16
- modelName: 'StripLight',
17
- modelFriendlyName: 'StripLight',
18
- power: true,
19
- state: true,
20
- brightness: 127,
21
- red: 255,
22
- green: 255,
23
- blue: 255,
24
- delay: true,
25
- preset: true,
26
- color_mode: 0,
27
- speed: 127,
28
- loop_index: 254,
29
- });
30
- });
31
- });
32
- describe('readState', () => {
33
- it('should return the state of the strip light', async () => {
34
- const peripheral = {}; // Replace with actual peripheral object
35
- const noble = {}; // Replace with actual noble object
36
- const woStrip = new WoStrip(peripheral, noble);
37
- woStrip.operateStripLight = async () => true;
38
- const result = await woStrip.readState();
39
- return expect(result).to.be.true;
40
- });
41
- });
42
- describe('turnOn', () => {
43
- it('should turn on the strip light', async () => {
44
- const peripheral = {}; // Replace with actual peripheral object
45
- const noble = {}; // Replace with actual noble object
46
- const woStrip = new WoStrip(peripheral, noble);
47
- woStrip.setState = async () => true;
48
- const result = await woStrip.turnOn();
49
- return expect(result).to.be.true;
50
- });
51
- });
52
- describe('turnOff', () => {
53
- it('should turn off the strip light', async () => {
54
- const peripheral = {}; // Replace with actual peripheral object
55
- const noble = {}; // Replace with actual noble object
56
- const woStrip = new WoStrip(peripheral, noble);
57
- woStrip.setState = async () => true;
58
- const result = await woStrip.turnOff();
59
- return expect(result).to.be.true;
60
- });
61
- });
62
- describe('setBrightness', () => {
63
- it('should set the brightness of the strip light', async () => {
64
- const peripheral = {}; // Replace with actual peripheral object
65
- const noble = {}; // Replace with actual noble object
66
- const woStrip = new WoStrip(peripheral, noble);
67
- woStrip.setState = async () => true;
68
- const result = await woStrip.setBrightness(50);
69
- return expect(result).to.be.true;
70
- });
71
- it('should throw an error if brightness is not a number', async () => {
72
- const peripheral = {}; // Replace with actual peripheral object
73
- const noble = {}; // Replace with actual noble object
74
- const woStrip = new WoStrip(peripheral, noble);
75
- try {
76
- await woStrip.setBrightness('50');
77
- }
78
- catch (error) {
79
- if (error instanceof Error) {
80
- expect(error.message).to.equal('Invalid brightness value: 50');
81
- }
82
- else {
83
- throw error;
84
- }
85
- }
86
- });
87
- });
88
- describe('setRGB', () => {
89
- it('should set the RGB values of the strip light', async () => {
90
- const peripheral = {}; // Replace with actual peripheral object
91
- const noble = {}; // Replace with actual noble object
92
- const woStrip = new WoStrip(peripheral, noble);
93
- woStrip.setState = async () => true;
94
- const result = await woStrip.setRGB(50, 255, 255, 255);
95
- return expect(result).to.be.true;
96
- });
97
- it('should throw an error if any RGB value is not a number', async () => {
98
- const peripheral = {}; // Replace with actual peripheral object
99
- const noble = {}; // Replace with actual noble object
100
- const woStrip = new WoStrip(peripheral, noble);
101
- try {
102
- await woStrip.setRGB(50, '255', 255, 255);
103
- }
104
- catch (error) {
105
- if (error instanceof Error) {
106
- expect(error.message).to.equal('Invalid RGB or brightness value');
107
- }
108
- else {
109
- throw error;
110
- }
111
- }
112
- });
113
- });
114
- });
115
- //# sourceMappingURL=wostrip.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wostrip.test.js","sourceRoot":"","sources":["../../src/device/wostrip.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACpC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACpE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACnG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC3B,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,YAAY;gBACvB,iBAAiB,EAAE,YAAY;gBAC/B,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,GAAG;gBACf,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,CAAC;gBACb,KAAK,EAAE,GAAG;gBACV,UAAU,EAAE,GAAG;aAChB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,UAAU,GAAG,EAAsB,CAAA,CAAC,wCAAwC;YAClF,MAAM,KAAK,GAAG,EAAkB,CAAA,CAAC,mCAAmC;YACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAC9C,OAAO,CAAC,iBAAiB,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAA;YACxC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,UAAU,GAAG,EAAsB,CAAA,CAAC,wCAAwC;YAClF,MAAM,KAAK,GAAG,EAAkB,CAAA,CAAC,mCAAmC;YACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAC9C,OAAO,CAAC,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;YACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;YACrC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,UAAU,GAAG,EAAsB,CAAA,CAAC,wCAAwC;YAClF,MAAM,KAAK,GAAG,EAAkB,CAAA,CAAC,mCAAmC;YACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAC9C,OAAO,CAAC,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;YACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,UAAU,GAAG,EAAsB,CAAA,CAAC,wCAAwC;YAClF,MAAM,KAAK,GAAG,EAAkB,CAAA,CAAC,mCAAmC;YACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAC9C,OAAO,CAAC,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;YACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,UAAU,GAAG,EAAsB,CAAA,CAAC,wCAAwC;YAClF,MAAM,KAAK,GAAG,EAAkB,CAAA,CAAC,mCAAmC;YACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAC9C,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,aAAa,CAAC,IAAW,CAAC,CAAA;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;gBAChE,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,UAAU,GAAG,EAAsB,CAAA,CAAC,wCAAwC;YAClF,MAAM,KAAK,GAAG,EAAkB,CAAA,CAAC,mCAAmC;YACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAC9C,OAAO,CAAC,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAA;YACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YACtD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAA;QAClC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,UAAU,GAAG,EAAsB,CAAA,CAAC,wCAAwC;YAClF,MAAM,KAAK,GAAG,EAAkB,CAAA,CAAC,mCAAmC;YACpE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YAC9C,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,KAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;YAClD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;gBACnE,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}