node-switchbot 2.5.0-beta.9 → 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 (340) 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.js +70 -20
  127. package/dist/test/woblindtilt.test.js.map +1 -1
  128. package/dist/test/wobulb.test.js +87 -44
  129. package/dist/test/wobulb.test.js.map +1 -1
  130. package/dist/test/woceilinglight.test.js +72 -54
  131. package/dist/test/woceilinglight.test.js.map +1 -1
  132. package/dist/test/wocontact.test.js +51 -20
  133. package/dist/test/wocontact.test.js.map +1 -1
  134. package/dist/test/wocurtain.test.js +65 -23
  135. package/dist/test/wocurtain.test.js.map +1 -1
  136. package/dist/test/wohand.test.js +34 -40
  137. package/dist/test/wohand.test.js.map +1 -1
  138. package/dist/test/wohub2.test.d.ts +2 -0
  139. package/dist/test/wohub2.test.d.ts.map +1 -0
  140. package/dist/test/wohub2.test.js +80 -0
  141. package/dist/test/wohub2.test.js.map +1 -0
  142. package/dist/test/wohumi.test.js +70 -49
  143. package/dist/test/wohumi.test.js.map +1 -1
  144. package/dist/test/woiosensorth.test.js +33 -32
  145. package/dist/test/woiosensorth.test.js.map +1 -1
  146. package/dist/test/woplugmini.test.js +80 -57
  147. package/dist/test/woplugmini.test.js.map +1 -1
  148. package/dist/test/wopresence.test.js +44 -18
  149. package/dist/test/wopresence.test.js.map +1 -1
  150. package/dist/test/wosensorth.test.js +44 -52
  151. package/dist/test/wosensorth.test.js.map +1 -1
  152. package/dist/test/wosmartlock.test.js +126 -59
  153. package/dist/test/wosmartlock.test.js.map +1 -1
  154. package/dist/test/wosmartlockpro.test.js +96 -69
  155. package/dist/test/wosmartlockpro.test.js.map +1 -1
  156. package/dist/test/wostrip.test.js +70 -83
  157. package/dist/test/wostrip.test.js.map +1 -1
  158. package/dist/types/bledevicestatus.d.ts +4 -12
  159. package/dist/types/bledevicestatus.d.ts.map +1 -1
  160. package/dist/types/devicelist.d.ts.map +1 -1
  161. package/dist/types/devicelist.js +0 -4
  162. package/dist/types/devicelist.js.map +1 -1
  163. package/dist/types/devicepush.d.ts +13 -0
  164. package/dist/types/devicepush.d.ts.map +1 -0
  165. package/dist/types/devicepush.js +2 -0
  166. package/dist/types/devicepush.js.map +1 -0
  167. package/dist/types/deviceresponse.d.ts +2 -3
  168. package/dist/types/deviceresponse.d.ts.map +1 -1
  169. package/dist/types/devicestatus.d.ts.map +1 -1
  170. package/dist/types/devicewebhookstatus.d.ts +32 -0
  171. package/dist/types/devicewebhookstatus.d.ts.map +1 -1
  172. package/dist/types/irdevicelist.d.ts.map +1 -1
  173. package/dist/types/types.d.ts +23 -0
  174. package/dist/types/types.d.ts.map +1 -1
  175. package/dist/types/types.js +14 -0
  176. package/dist/types/types.js.map +1 -1
  177. package/docs/assets/highlight.css +12 -47
  178. package/docs/assets/main.js +1 -1
  179. package/docs/assets/navigation.js +1 -1
  180. package/docs/assets/search.js +1 -1
  181. package/docs/classes/SwitchBotBLE.html +64 -0
  182. package/docs/classes/SwitchBotOpenAPI.html +47 -0
  183. package/docs/classes/SwitchbotDevice.html +32 -33
  184. package/docs/enums/LogLevel.html +10 -0
  185. package/docs/enums/SwitchBotBLEModel.html +2 -2
  186. package/docs/enums/SwitchBotBLEModelFriendlyName.html +2 -2
  187. package/docs/enums/SwitchBotBLEModelName.html +2 -2
  188. package/docs/enums/SwitchBotModel.html +2 -2
  189. package/docs/hierarchy.html +1 -0
  190. package/docs/index.html +16 -993
  191. package/docs/interfaces/Ad-1.html +5 -0
  192. package/docs/interfaces/AdvertisementData.html +3 -0
  193. package/docs/interfaces/Chars.html +4 -0
  194. package/docs/interfaces/ErrorObject.html +3 -0
  195. package/docs/interfaces/Params.html +6 -0
  196. package/docs/interfaces/ServiceData.html +2 -0
  197. package/docs/interfaces/SwitchBotBLEDevice.html +21 -0
  198. package/docs/interfaces/WebhookDetail.html +6 -0
  199. package/docs/interfaces/ad.html +5 -0
  200. package/docs/interfaces/body.html +3 -0
  201. package/docs/interfaces/bodyChange.html +4 -0
  202. package/docs/interfaces/deleteWebhookResponse.html +4 -0
  203. package/docs/interfaces/device.html +7 -0
  204. package/docs/interfaces/deviceList.html +2 -0
  205. package/docs/interfaces/deviceStatus.html +7 -0
  206. package/docs/interfaces/deviceStatusRequest.html +4 -0
  207. package/docs/interfaces/deviceWebhook.html +4 -0
  208. package/docs/interfaces/deviceWebhookContext.html +4 -0
  209. package/docs/interfaces/devices.html +4 -0
  210. package/docs/interfaces/infraredRemoteList.html +2 -0
  211. package/docs/interfaces/irdevice.html +5 -0
  212. package/docs/interfaces/pushResponse.html +4 -0
  213. package/docs/interfaces/queryWebhookResponse.html +4 -0
  214. package/docs/interfaces/setupWebhookResponse.html +4 -0
  215. package/docs/interfaces/switchbot.html +3 -0
  216. package/docs/interfaces/updateWebhookResponse.html +4 -0
  217. package/docs/interfaces/webhookRequest.html +4 -0
  218. package/docs/media/BLE.md +1109 -0
  219. package/docs/media/OpenAPI.md +185 -0
  220. package/docs/modules.html +136 -3
  221. package/docs/types/MacAddress.html +1 -0
  222. package/docs/types/batteryCirculatorFan.html +1 -0
  223. package/docs/types/batteryCirculatorFanServiceData.html +1 -0
  224. package/docs/types/batteryCirculatorFanStatus.html +1 -0
  225. package/docs/types/batteryCirculatorFanWebhookContext.html +1 -0
  226. package/docs/types/blindTilt.html +1 -0
  227. package/docs/types/blindTiltServiceData.html +1 -0
  228. package/docs/types/blindTiltStatus.html +1 -0
  229. package/docs/types/blindTiltWebhookContext.html +1 -0
  230. package/docs/types/bot.html +1 -0
  231. package/docs/types/botServiceData.html +1 -0
  232. package/docs/types/botStatus.html +1 -0
  233. package/docs/types/botWebhookContext.html +1 -0
  234. package/docs/types/ceilingLight.html +1 -0
  235. package/docs/types/ceilingLightPro.html +1 -0
  236. package/docs/types/ceilingLightProServiceData.html +1 -0
  237. package/docs/types/ceilingLightProStatus.html +1 -0
  238. package/docs/types/ceilingLightProWebhookContext.html +1 -0
  239. package/docs/types/ceilingLightServiceData.html +1 -0
  240. package/docs/types/ceilingLightStatus.html +1 -0
  241. package/docs/types/ceilingLightWebhookContext.html +1 -0
  242. package/docs/types/colorBulb.html +1 -0
  243. package/docs/types/colorBulbServiceData.html +1 -0
  244. package/docs/types/colorBulbStatus.html +1 -0
  245. package/docs/types/colorBulbWebhookContext.html +1 -0
  246. package/docs/types/contactSensor.html +1 -0
  247. package/docs/types/contactSensorServiceData.html +1 -0
  248. package/docs/types/contactSensorStatus.html +1 -0
  249. package/docs/types/contactSensorWebhookContext.html +1 -0
  250. package/docs/types/curtain.html +1 -0
  251. package/docs/types/curtain3.html +1 -0
  252. package/docs/types/curtain3ServiceData.html +1 -0
  253. package/docs/types/curtain3WebhookContext.html +1 -0
  254. package/docs/types/curtainServiceData.html +1 -0
  255. package/docs/types/curtainStatus.html +1 -0
  256. package/docs/types/curtainWebhookContext.html +1 -0
  257. package/docs/types/floorCleaningRobotS10.html +1 -0
  258. package/docs/types/floorCleaningRobotS10Status.html +1 -0
  259. package/docs/types/floorCleaningRobotS10WebhookContext.html +1 -0
  260. package/docs/types/hub2.html +1 -0
  261. package/docs/types/hub2ServiceData.html +1 -0
  262. package/docs/types/hub2Status.html +1 -0
  263. package/docs/types/hub2WebhookContext.html +1 -0
  264. package/docs/types/humidifier.html +1 -0
  265. package/docs/types/humidifierServiceData.html +1 -0
  266. package/docs/types/humidifierStatus.html +1 -0
  267. package/docs/types/humidifierWebhookContext.html +1 -0
  268. package/docs/types/indoorCam.html +1 -0
  269. package/docs/types/indoorCameraWebhookContext.html +1 -0
  270. package/docs/types/keypad.html +1 -0
  271. package/docs/types/keypadTouch.html +1 -0
  272. package/docs/types/keypadTouchWebhookContext.html +1 -0
  273. package/docs/types/keypadWebhookContext.html +1 -0
  274. package/docs/types/lock.html +1 -0
  275. package/docs/types/lockPro.html +1 -0
  276. package/docs/types/lockProServiceData.html +1 -0
  277. package/docs/types/lockProStatus.html +1 -0
  278. package/docs/types/lockProWebhookContext.html +1 -0
  279. package/docs/types/lockServiceData.html +1 -0
  280. package/docs/types/lockStatus.html +1 -0
  281. package/docs/types/lockWebhookContext.html +1 -0
  282. package/docs/types/meter.html +1 -0
  283. package/docs/types/meterPlus.html +1 -0
  284. package/docs/types/meterPlusServiceData.html +1 -0
  285. package/docs/types/meterPlusStatus.html +1 -0
  286. package/docs/types/meterPlusWebhookContext.html +1 -0
  287. package/docs/types/meterServiceData.html +1 -0
  288. package/docs/types/meterStatus.html +1 -0
  289. package/docs/types/meterWebhookContext.html +1 -0
  290. package/docs/types/motionSensor.html +1 -0
  291. package/docs/types/motionSensorServiceData.html +1 -0
  292. package/docs/types/motionSensorStatus.html +1 -0
  293. package/docs/types/motionSensorWebhookContext.html +1 -0
  294. package/docs/types/outdoorMeter.html +1 -0
  295. package/docs/types/outdoorMeterServiceData.html +1 -0
  296. package/docs/types/outdoorMeterStatus.html +1 -0
  297. package/docs/types/outdoorMeterWebhookContext.html +1 -0
  298. package/docs/types/panTiltCamWebhookContext.html +1 -0
  299. package/docs/types/pantiltCam.html +1 -0
  300. package/docs/types/pantiltCam2k.html +1 -0
  301. package/docs/types/plug.html +1 -0
  302. package/docs/types/plugMini.html +1 -0
  303. package/docs/types/plugMiniJPServiceData.html +1 -0
  304. package/docs/types/plugMiniJPWebhookContext.html +1 -0
  305. package/docs/types/plugMiniStatus.html +1 -0
  306. package/docs/types/plugMiniUSServiceData.html +1 -0
  307. package/docs/types/plugMiniUSWebhookContext.html +1 -0
  308. package/docs/types/plugStatus.html +1 -0
  309. package/docs/types/plugWebhookContext.html +1 -0
  310. package/docs/types/remote.html +1 -0
  311. package/docs/types/robotVacuumCleanerS1.html +1 -0
  312. package/docs/types/robotVacuumCleanerS1Plus.html +1 -0
  313. package/docs/types/robotVacuumCleanerS1PlusStatus.html +1 -0
  314. package/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +1 -0
  315. package/docs/types/robotVacuumCleanerS1Status.html +1 -0
  316. package/docs/types/robotVacuumCleanerS1WebhookContext.html +1 -0
  317. package/docs/types/robotVacuumCleanerServiceData.html +1 -0
  318. package/docs/types/stripLight.html +1 -0
  319. package/docs/types/stripLightServiceData.html +1 -0
  320. package/docs/types/stripLightStatus.html +1 -0
  321. package/docs/types/stripLightWebhookContext.html +1 -0
  322. package/docs/types/waterLeakDetector.html +1 -0
  323. package/docs/types/waterLeakDetectorServiceData.html +1 -0
  324. package/docs/types/waterLeakDetectorStatus.html +1 -0
  325. package/docs/types/waterLeakDetectorWebhookContext.html +1 -0
  326. package/package.json +13 -11
  327. package/.github/npm-version-script.cjs +0 -81
  328. package/dist/switchbot.d.ts.map +0 -1
  329. package/dist/switchbot.js +0 -259
  330. package/dist/switchbot.js.map +0 -1
  331. package/dist/test/wohand2.test.d.ts +0 -2
  332. package/dist/test/wohand2.test.d.ts.map +0 -1
  333. package/dist/test/wohand2.test.js +0 -50
  334. package/dist/test/wohand2.test.js.map +0 -1
  335. package/dist/types/pushbody.d.ts +0 -6
  336. package/dist/types/pushbody.d.ts.map +0 -1
  337. package/dist/types/pushbody.js +0 -2
  338. package/dist/types/pushbody.js.map +0 -1
  339. package/docs/classes/SwitchBot.html +0 -16
  340. package/docs/types/SwitchBotBLEDevice.html +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "node-switchbot",
3
3
  "type": "module",
4
- "version": "2.5.0-beta.9",
4
+ "version": "3.0.0",
5
5
  "description": "The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).",
6
6
  "author": "OpenWonderLabs (https://github.com/OpenWonderLabs)",
7
7
  "license": "MIT",
@@ -27,8 +27,9 @@
27
27
  "Bluetooth"
28
28
  ],
29
29
  "main": "dist/index.js",
30
+ "types": "dist/index.d.ts",
30
31
  "engines": {
31
- "node": "^18 || ^20 || ^22"
32
+ "node": "^20 || ^22"
32
33
  },
33
34
  "scripts": {
34
35
  "check": "npm install && npm outdated",
@@ -38,22 +39,21 @@
38
39
  "watch": "npm run build && npm link && nodemon",
39
40
  "build": "npm run clean && tsc",
40
41
  "prepublishOnly": "npm run lint && npm run build",
41
- "postpublish": "npm run clean",
42
+ "postpublish": "npm run clean && npm ci",
42
43
  "clean": "shx rm -rf ./dist",
43
- "test-coverage": "jest --coverage --forceExit --detectOpenHandles",
44
- "test": "npm run lint",
44
+ "test": "vitest run",
45
+ "test-coverage": "npm run test -- --coverage",
45
46
  "docs": "typedoc",
46
47
  "lint-docs": "typedoc --emit none --treatWarningsAsErrors"
47
48
  },
48
49
  "readmeFilename": "README.md",
49
50
  "dependencies": {
50
- "@types/sinon": "^17.0.3",
51
+ "@stoprocent/noble": "^1.15.1",
51
52
  "async-mutex": "^0.5.0",
52
- "sinon": "^19.0.2"
53
+ "undici": "^6.19.8"
53
54
  },
54
55
  "optionalDependencies": {
55
- "@stoprocent/bluetooth-hci-socket": "^1.4.0",
56
- "@stoprocent/noble": "^1.15.0"
56
+ "@stoprocent/bluetooth-hci-socket": "^1.4.1"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@antfu/eslint-config": "^3.7.3",
@@ -64,17 +64,19 @@
64
64
  "@types/mdast": "^4.0.4",
65
65
  "@types/node": "^22.7.4",
66
66
  "@types/semver": "^7.5.8",
67
+ "@types/sinon": "^17.0.3",
67
68
  "@types/source-map-support": "^0.5.10",
68
- "@vitest/coverage-v8": "^2.1.1",
69
+ "@vitest/coverage-v8": "^2.1.2",
69
70
  "eslint": "^9.11.1",
70
71
  "eslint-plugin-format": "^0.1.2",
71
72
  "jest": "^29.7.0",
72
73
  "nodemon": "^3.1.7",
73
74
  "npm-check-updates": "^17.1.3",
74
75
  "shx": "^0.3.4",
76
+ "sinon": "^19.0.2",
75
77
  "ts-node": "^10.9.2",
76
78
  "typedoc": "^0.26.7",
77
79
  "typescript": "^5.6.2",
78
- "vitest": "^2.1.1"
80
+ "vitest": "^2.1.2"
79
81
  }
80
82
  }
@@ -1,81 +0,0 @@
1
- #!/bin/env node
2
-
3
- /**
4
- * This scripts queries the npm registry to pull out the latest version for a given tag.
5
- */
6
-
7
- const fs = require("fs");
8
- const semver = require("semver");
9
- const child_process = require("child_process");
10
- const assert = require("assert");
11
-
12
- const BRANCH_VERSION_PATTERN = /^([A-Za-z]*)-(\d+.\d+.\d+)$/
13
-
14
- // Load the contents of the package.json file
15
- const packageJSON = JSON.parse(fs.readFileSync("package.json", "utf8"));
16
-
17
- let refArgument = process.argv[2];
18
- let tagArgument = process.argv[3] || "latest";
19
-
20
- if (refArgument == null) {
21
- console.error("ref argument is missing");
22
- console.error("Usage: npm-version-script.cjs <ref> [tag]");
23
- process.exit(1);
24
- }
25
-
26
- /**
27
- * Queries the NPM registry for the latest version for the provided tag.
28
- * @param tag The tag to query for.
29
- * @returns {string} Returns the version.
30
- */
31
- function getTagVersionFromNpm(tag) {
32
- try {
33
- return child_process.execSync(`npm info ${packageJSON.name} version --tag="${tag}"`).toString("utf8").trim();
34
- } catch (e) {
35
- throw e;
36
- }
37
- }
38
-
39
- function desiredTargetVersion(ref) {
40
- // ref is a GitHub action ref string
41
- if (ref.startsWith("refs/pull/")) {
42
- throw Error("The version script was executed inside a PR!");
43
- }
44
-
45
- assert(ref.startsWith("refs/heads/"))
46
- let branchName = ref.slice("refs/heads/".length);
47
-
48
- let results = branchName.match(BRANCH_VERSION_PATTERN);
49
- if (results != null) {
50
- if (results[1] !== tagArgument) {
51
- console.warn(`The base branch name (${results[1]}) differs from the tag name ${tagArgument}`);
52
- }
53
-
54
- return results[2];
55
- }
56
-
57
- // legacy mode were we use the `betaVersion` property in the package.json
58
- if (branchName === "beta" && packageJSON.betaVersion) {
59
- return packageJSON.betaVersion
60
- }
61
-
62
- throw new Error("Malformed branch name for ref: " + ref + ". Can't derive the base version. Use a branch name like: beta-x.x.x!");
63
- }
64
-
65
- // derive the base version from the branch ref
66
- const baseVersion = desiredTargetVersion(refArgument);
67
-
68
- // query the npm registry for the latest version of the provided tag name
69
- const latestReleasedVersion = getTagVersionFromNpm(tagArgument); // e.g. 0.7.0-beta.12
70
- const latestReleaseBase = semver.inc(latestReleasedVersion, "patch"); // will produce 0.7.0 (removing the preid, needed for the equality check below)
71
-
72
- let publishTag;
73
- if (semver.eq(baseVersion, latestReleaseBase)) { // check if we are releasing another version for the latest beta
74
- publishTag = latestReleasedVersion; // set the current latest beta to be incremented
75
- } else {
76
- publishTag = baseVersion; // start of with a new beta version
77
- }
78
-
79
- // save the package.json
80
- packageJSON.version = publishTag;
81
- fs.writeFileSync("package.json", JSON.stringify(packageJSON, null, 2));
@@ -1 +0,0 @@
1
- {"version":3,"file":"switchbot.d.ts","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAmB7C;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAe;IAC5B,KAAK,EAAG,OAAO,KAAK,CAAA;IACpB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;IAC9C,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAA;IAClC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,0BAA0B,SAAO;IACjC,yBAAyB,EAAE,MAAM,EAAE,CAAK;IAExC;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,MAAM;IAI3B;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C;;;;;OAKG;IACG,QAAQ,CAAC,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA2D/D;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B;;;;;;;OAOG;IACG,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAgC/G;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAoB7D;;;;;OAKG;IACG,SAAS,CAAC,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCnD;;;;OAIG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;;;;OAKG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAexC;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
package/dist/switchbot.js DELETED
@@ -1,259 +0,0 @@
1
- import * as Noble from '@stoprocent/noble';
2
- import { Advertising } from './advertising.js';
3
- import { SwitchbotDevice } from './device.js';
4
- import { WoBlindTilt } from './device/woblindtilt.js';
5
- import { WoBulb } from './device/wobulb.js';
6
- import { WoCeilingLight } from './device/woceilinglight.js';
7
- import { WoContact } from './device/wocontact.js';
8
- import { WoCurtain } from './device/wocurtain.js';
9
- import { WoHand } from './device/wohand.js';
10
- import { WoHub2 } from './device/wohub2.js';
11
- import { WoHumi } from './device/wohumi.js';
12
- import { WoIOSensorTH } from './device/woiosensorth.js';
13
- import { WoPlugMini } from './device/woplugmini.js';
14
- import { WoPresence } from './device/wopresence.js';
15
- import { WoSensorTH } from './device/wosensorth.js';
16
- import { WoSmartLock } from './device/wosmartlock.js';
17
- import { WoSmartLockPro } from './device/wosmartlockpro.js';
18
- import { WoStrip } from './device/wostrip.js';
19
- import { parameterChecker } from './parameter-checker.js';
20
- import { SwitchBotBLEModel } from './types/types.js';
21
- /**
22
- * SwitchBot class to interact with SwitchBot devices.
23
- */
24
- export class SwitchBot {
25
- ready;
26
- noble;
27
- ondiscover;
28
- onadvertisement;
29
- onlog;
30
- DEFAULT_DISCOVERY_DURATION = 5000;
31
- PRIMARY_SERVICE_UUID_LIST = [];
32
- /**
33
- * Constructor
34
- *
35
- * @param {Params} [params] - Optional parameters
36
- * @param {typeof Noble} [params.noble] - Optional noble instance
37
- */
38
- constructor(params) {
39
- this.ready = this.init(params);
40
- }
41
- /**
42
- * Initializes the noble object.
43
- *
44
- * @param {Params} [params] - Optional parameters
45
- * @param {typeof Noble} [params.noble] - Optional noble instance
46
- * @returns {Promise<void>} - Resolves when initialization is complete
47
- */
48
- async init(params) {
49
- this.noble = params?.noble ?? Noble;
50
- }
51
- /**
52
- * Discover SwitchBot devices based on the provided parameters.
53
- *
54
- * @param {Params} params - The parameters for discovery.
55
- * @returns {Promise<SwitchbotDevice[]>} - A promise that resolves with a list of discovered devices.
56
- */
57
- async discover(params = {}) {
58
- const valid = parameterChecker.check(params, {
59
- duration: { required: false, type: 'integer', min: 1, max: 60000 },
60
- model: { required: false, type: 'string', enum: Object.values(SwitchBotBLEModel) },
61
- id: { required: false, type: 'string', min: 12, max: 17 },
62
- quick: { required: false, type: 'boolean' },
63
- }, false);
64
- if (!valid) {
65
- throw new Error(parameterChecker.error.message);
66
- }
67
- const { duration = this.DEFAULT_DISCOVERY_DURATION, model = '', id = '', quick = false } = params;
68
- await this._init();
69
- if (!this.noble) {
70
- throw new Error('noble failed to initialize');
71
- }
72
- const peripherals = {};
73
- let timer;
74
- const finishDiscovery = () => {
75
- clearTimeout(timer);
76
- this.noble.removeAllListeners('discover');
77
- this.noble.stopScanning();
78
- return Object.values(peripherals);
79
- };
80
- return new Promise((resolve, reject) => {
81
- try {
82
- this.noble.on('discover', async (peripheral) => {
83
- const device = await this.getDeviceObject(peripheral, id, model);
84
- if (device) {
85
- peripherals[device.id] = device;
86
- if (this.ondiscover) {
87
- this.ondiscover(device);
88
- }
89
- if (quick) {
90
- resolve(finishDiscovery());
91
- }
92
- }
93
- });
94
- this.noble.startScanningAsync(this.PRIMARY_SERVICE_UUID_LIST, false)
95
- .then(() => {
96
- timer = setTimeout(() => {
97
- resolve(finishDiscovery());
98
- }, duration);
99
- })
100
- .catch((error) => {
101
- reject(new Error(error.message));
102
- });
103
- }
104
- catch (error) {
105
- reject(new Error(String(error)));
106
- }
107
- });
108
- }
109
- /**
110
- * Initializes the noble object and waits for it to be powered on.
111
- *
112
- * @returns {Promise<void>} - Resolves when the noble object is powered on.
113
- */
114
- async _init() {
115
- await this.ready;
116
- if (this.noble._state === 'poweredOn') {
117
- return;
118
- }
119
- return new Promise((resolve, reject) => {
120
- this.noble.once('stateChange', (state) => {
121
- if (state === 'poweredOn') {
122
- resolve();
123
- }
124
- else if (['unsupported', 'unauthorized', 'poweredOff'].includes(state)) {
125
- reject(new Error(`Failed to initialize the Noble object: ${state}`));
126
- }
127
- else if (['resetting', 'unknown'].includes(state)) {
128
- reject(new Error(`Adapter is not ready: ${state}`));
129
- }
130
- else {
131
- reject(new Error(`Unknown state: ${state}`));
132
- }
133
- });
134
- });
135
- }
136
- /**
137
- * Gets the device object based on the peripheral, id, and model.
138
- *
139
- * @param {Noble.Peripheral} peripheral - The peripheral object.
140
- * @param {string} id - The device id.
141
- * @param {string} model - The device model.
142
- * @returns {Promise<SwitchbotDevice | null>} - The device object or null.
143
- */
144
- async getDeviceObject(peripheral, id, model) {
145
- const ad = await Advertising.parse(peripheral, this.onlog);
146
- if (!ad || !this.filterAdvertising(ad, id, model)) {
147
- return null;
148
- }
149
- const modelMapping = {
150
- [SwitchBotBLEModel.Bot]: WoHand,
151
- [SwitchBotBLEModel.Curtain]: WoCurtain,
152
- [SwitchBotBLEModel.Curtain3]: WoCurtain,
153
- [SwitchBotBLEModel.Humidifier]: WoHumi,
154
- [SwitchBotBLEModel.Meter]: WoSensorTH,
155
- [SwitchBotBLEModel.MeterPlus]: WoSensorTH,
156
- [SwitchBotBLEModel.Hub2]: WoHub2,
157
- [SwitchBotBLEModel.OutdoorMeter]: WoIOSensorTH,
158
- [SwitchBotBLEModel.MotionSensor]: WoPresence,
159
- [SwitchBotBLEModel.ContactSensor]: WoContact,
160
- [SwitchBotBLEModel.ColorBulb]: WoBulb,
161
- [SwitchBotBLEModel.CeilingLight]: WoCeilingLight,
162
- [SwitchBotBLEModel.CeilingLightPro]: WoCeilingLight,
163
- [SwitchBotBLEModel.StripLight]: WoStrip,
164
- [SwitchBotBLEModel.PlugMiniUS]: WoPlugMini,
165
- [SwitchBotBLEModel.PlugMiniJP]: WoPlugMini,
166
- [SwitchBotBLEModel.Lock]: WoSmartLock,
167
- [SwitchBotBLEModel.LockPro]: WoSmartLockPro,
168
- [SwitchBotBLEModel.BlindTilt]: WoBlindTilt,
169
- };
170
- const DeviceClass = ad?.serviceData?.model ? modelMapping[ad.serviceData.model] : SwitchbotDevice;
171
- return new DeviceClass(peripheral, this.noble);
172
- }
173
- /**
174
- * Filters advertising data based on id and model.
175
- *
176
- * @param {Ad} ad - The advertising data.
177
- * @param {string} id - The device id.
178
- * @param {string} model - The device model.
179
- * @returns {boolean} - True if the advertising data matches the id and model, false otherwise.
180
- */
181
- filterAdvertising(ad, id, model) {
182
- if (!ad) {
183
- return false;
184
- }
185
- if (id) {
186
- const normalizedId = id.toLowerCase().replace(/:/g, '');
187
- const adId = ad.address.toLowerCase().replace(/[^a-z0-9]/g, '');
188
- if (adId !== normalizedId) {
189
- return false;
190
- }
191
- }
192
- if (model && ad.serviceData.model !== model) {
193
- return false;
194
- }
195
- return true;
196
- }
197
- /**
198
- * Starts scanning for SwitchBot devices.
199
- *
200
- * @param {Params} [params] - Optional parameters.
201
- * @returns {Promise<void>} - Resolves when scanning starts successfully.
202
- */
203
- async startScan(params = {}) {
204
- const valid = parameterChecker.check(params, {
205
- model: {
206
- required: false,
207
- type: 'string',
208
- enum: Object.values(SwitchBotBLEModel),
209
- },
210
- id: { required: false, type: 'string', min: 12, max: 17 },
211
- }, false);
212
- if (!valid) {
213
- throw new Error(parameterChecker.error.message);
214
- }
215
- await this._init();
216
- if (!this.noble) {
217
- throw new Error('noble object failed to initialize');
218
- }
219
- const { model = '', id = '' } = params;
220
- this.noble.on('discover', async (peripheral) => {
221
- const ad = await Advertising.parse(peripheral, this.onlog);
222
- if (ad && this.filterAdvertising(ad, id, model)) {
223
- if (this.onadvertisement && typeof this.onadvertisement === 'function') {
224
- this.onadvertisement(ad);
225
- }
226
- }
227
- });
228
- await this.noble.startScanningAsync(this.PRIMARY_SERVICE_UUID_LIST, true);
229
- }
230
- /**
231
- * Stops scanning for SwitchBot devices.
232
- *
233
- * @returns {Promise<void>} - Resolves when scanning stops successfully.
234
- */
235
- async stopScan() {
236
- if (!this.noble) {
237
- return;
238
- }
239
- this.noble.removeAllListeners('discover');
240
- await this.noble.stopScanningAsync();
241
- }
242
- /**
243
- * Waits for the specified time.
244
- *
245
- * @param {number} msec - The time to wait in milliseconds.
246
- * @returns {Promise<void>} - Resolves after the specified time.
247
- */
248
- async wait(msec) {
249
- const valid = parameterChecker.check({ msec }, {
250
- msec: { required: true, type: 'integer', min: 0 },
251
- }, true);
252
- if (!valid) {
253
- throw new Error(parameterChecker.error.message);
254
- }
255
- return new Promise(resolve => setTimeout(resolve, msec));
256
- }
257
- }
258
- export { SwitchbotDevice };
259
- //# sourceMappingURL=switchbot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"switchbot.js","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wohand2.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wohand2.test.d.ts","sourceRoot":"","sources":["../../src/test/wohand2.test.ts"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
1
- import { Buffer } from 'node:buffer';
2
- import { WoHub2 } from '../device/wohub2.js';
3
- describe('woHub2', () => {
4
- let onlog;
5
- beforeEach(() => {
6
- onlog = jest.fn();
7
- });
8
- it('should return null if manufacturerData length is not 16', async () => {
9
- const manufacturerData = Buffer.alloc(15); // Invalid length
10
- const result = await WoHub2.parseServiceData(manufacturerData, onlog);
11
- expect(result).toBeNull();
12
- expect(onlog).toHaveBeenCalledWith('[parseServiceDataForWoSensorTH] Buffer length 15 !== 16!');
13
- });
14
- it('should parse valid manufacturerData correctly', async () => {
15
- const manufacturerData = Buffer.from([
16
- 0x01,
17
- 0x82,
18
- 0x7F,
19
- 0x00,
20
- 0x00,
21
- 0x00,
22
- 0x00,
23
- 0x00,
24
- 0x00,
25
- 0x00,
26
- 0x00,
27
- 0x00,
28
- 0x1F,
29
- 0x00,
30
- 0x00,
31
- 0x00,
32
- ]); // Example valid data
33
- const result = await WoHub2.parseServiceData(manufacturerData, onlog);
34
- expect(result).toEqual({
35
- model: 'Hub2',
36
- modelName: 'Hub2',
37
- modelFriendlyName: 'Hub2',
38
- temperature: {
39
- c: 2.1,
40
- f: 35.8,
41
- },
42
- fahrenheit: true,
43
- humidity: 127,
44
- lightLevel: 31,
45
- });
46
- expect(onlog).not.toHaveBeenCalled();
47
- });
48
- // Add more test cases as needed
49
- });
50
- //# sourceMappingURL=wohand2.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wohand2.test.js","sourceRoot":"","sources":["../../src/test/wohand2.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,IAAI,KAAgB,CAAA;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,iBAAiB;QAC3D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAA;QACzB,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,0DAA0D,CAAC,CAAA;IAChG,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC;YACnC,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;SACL,CAAC,CAAA,CAAC,qBAAqB;QACxB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,MAAM;YACjB,iBAAiB,EAAE,MAAM;YACzB,WAAW,EAAE;gBACX,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,IAAI;aACR;YACD,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,EAAE;SACf,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,gCAAgC;AAClC,CAAC,CAAC,CAAA"}
@@ -1,6 +0,0 @@
1
- export interface body {
2
- command: string;
3
- parameter: string;
4
- commandType: string;
5
- }
6
- //# sourceMappingURL=pushbody.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pushbody.d.ts","sourceRoot":"","sources":["../../src/types/pushbody.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,IAAI;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pushbody.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pushbody.js","sourceRoot":"","sources":["../../src/types/pushbody.ts"],"names":[],"mappings":""}