node-switchbot 3.5.0-beta.0 → 3.5.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/npm-version-script-esm.js +97 -0
- package/.github/workflows/beta-release.yml +1 -1
- package/.github/workflows/release.yml +1 -1
- package/BLE.md +14 -13
- package/CHANGELOG.md +68 -1
- package/OpenAPI.md +13 -12
- package/branding/Node_x_SwitchBot.svg +2 -3
- package/dist/device.d.ts +1193 -3
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +2478 -2
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +1 -1
- package/dist/{test/index.test.d.ts.map → index.test.d.ts.map} +1 -1
- package/dist/{test/index.test.js → index.test.js} +1 -1
- package/dist/index.test.js.map +1 -0
- package/dist/parameter-checker.d.ts +1 -1
- package/dist/parameter-checker.d.ts.map +1 -1
- package/dist/settings.d.ts +12 -28
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +24 -22
- package/dist/settings.js.map +1 -1
- package/dist/{test/settings.test.d.ts.map → settings.test.d.ts.map} +1 -1
- package/dist/{test/settings.test.js → settings.test.js} +6 -6
- package/dist/{test/settings.test.js.map → settings.test.js.map} +1 -1
- package/dist/switchbot-ble.d.ts +1 -1
- package/dist/switchbot-ble.d.ts.map +1 -1
- package/dist/switchbot-ble.js +8 -27
- package/dist/switchbot-ble.js.map +1 -1
- package/dist/switchbot-openapi.d.ts +33 -22
- package/dist/switchbot-openapi.d.ts.map +1 -1
- package/dist/switchbot-openapi.js +104 -64
- package/dist/switchbot-openapi.js.map +1 -1
- package/dist/types/bledevicestatus.d.ts +32 -8
- package/dist/types/bledevicestatus.d.ts.map +1 -1
- package/dist/types/devicestatus.d.ts +35 -1
- package/dist/types/devicestatus.d.ts.map +1 -1
- package/dist/types/devicewebhookstatus.d.ts +38 -1
- package/dist/types/devicewebhookstatus.d.ts.map +1 -1
- package/dist/types/types.d.ts +0 -223
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +1 -144
- package/dist/types/types.js.map +1 -1
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/icons.js +1 -1
- package/docs/assets/icons.svg +1 -1
- package/docs/assets/main.js +5 -5
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +1405 -1288
- package/docs/classes/Advertising.html +10 -10
- package/docs/classes/SwitchBotBLE.html +13 -13
- package/docs/classes/SwitchBotOpenAPI.html +38 -28
- package/docs/classes/SwitchbotDevice.html +26 -23
- package/docs/classes/WoBlindTilt.html +45 -42
- package/docs/classes/WoBulb.html +42 -39
- package/docs/classes/WoCeilingLight.html +50 -47
- package/docs/classes/WoContact.html +30 -27
- package/docs/classes/WoCurtain.html +40 -37
- package/docs/classes/WoHand.html +37 -34
- package/docs/classes/WoHub2.html +30 -27
- package/docs/classes/WoHumi.html +45 -40
- package/docs/classes/WoHumi2.html +67 -0
- package/docs/classes/WoIOSensorTH.html +30 -27
- package/docs/classes/WoKeypad.html +52 -0
- package/docs/classes/WoLeak.html +53 -0
- package/docs/classes/WoPlugMiniJP.html +78 -0
- package/docs/classes/WoPlugMiniUS.html +39 -36
- package/docs/classes/WoPresence.html +30 -27
- package/docs/classes/WoRelaySwitch1.html +57 -0
- package/docs/classes/WoRelaySwitch1PM.html +57 -0
- package/docs/classes/WoRemote.html +52 -0
- package/docs/classes/WoSensorTH.html +27 -24
- package/docs/classes/WoSensorTHPlus.html +46 -0
- package/docs/classes/WoSensorTHPro.html +46 -0
- package/docs/classes/WoSensorTHProCO2.html +46 -0
- package/docs/classes/WoSmartLock.html +49 -46
- package/docs/classes/WoSmartLockPro.html +49 -46
- package/docs/classes/WoStrip.html +44 -41
- package/docs/enums/LogLevel.html +10 -10
- package/docs/enums/SwitchBotBLEModel.html +29 -27
- package/docs/enums/SwitchBotBLEModelFriendlyName.html +30 -26
- package/docs/enums/SwitchBotBLEModelName.html +28 -26
- package/docs/enums/SwitchBotModel.html +47 -43
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +13 -13
- package/docs/interfaces/AdvertisementData.html +3 -3
- package/docs/interfaces/Chars.html +2 -2
- package/docs/interfaces/ErrorObject.html +2 -2
- package/docs/interfaces/NobleTypes.html +2 -2
- package/docs/interfaces/Params.html +2 -2
- package/docs/interfaces/Rule.html +4 -4
- package/docs/interfaces/ServiceData.html +2 -2
- package/docs/interfaces/SwitchBotBLEDevice.html +23 -23
- package/docs/interfaces/WebhookDetail.html +4 -4
- package/docs/interfaces/ad.html +3 -3
- package/docs/interfaces/body.html +3 -3
- package/docs/interfaces/bodyChange.html +3 -3
- package/docs/interfaces/deleteWebhookResponse.html +3 -3
- package/docs/interfaces/device.html +6 -6
- package/docs/interfaces/deviceList.html +2 -2
- package/docs/interfaces/deviceStatus.html +6 -6
- package/docs/interfaces/deviceStatusRequest.html +3 -3
- package/docs/interfaces/deviceWebhook.html +4 -4
- package/docs/interfaces/deviceWebhookContext.html +4 -4
- package/docs/interfaces/devices.html +3 -3
- package/docs/interfaces/infraredRemoteList.html +2 -2
- package/docs/interfaces/irdevice.html +5 -5
- package/docs/interfaces/pushResponse.html +3 -3
- package/docs/interfaces/queryWebhookResponse.html +3 -3
- package/docs/interfaces/setupWebhookResponse.html +3 -3
- package/docs/interfaces/switchbot.html +2 -2
- package/docs/interfaces/updateWebhookResponse.html +3 -3
- package/docs/interfaces/webhookRequest.html +3 -3
- package/docs/media/BLE.md +14 -13
- package/docs/media/OpenAPI.md +13 -12
- package/docs/modules.html +1 -170
- package/docs/types/MacAddress.html +1 -1
- package/docs/types/batteryCirculatorFan.html +1 -1
- package/docs/types/batteryCirculatorFanServiceData.html +1 -1
- package/docs/types/batteryCirculatorFanStatus.html +1 -1
- package/docs/types/batteryCirculatorFanWebhookContext.html +1 -1
- package/docs/types/blindTilt.html +1 -1
- package/docs/types/blindTiltServiceData.html +1 -1
- package/docs/types/blindTiltStatus.html +1 -1
- package/docs/types/blindTiltWebhookContext.html +1 -1
- package/docs/types/bot.html +1 -1
- package/docs/types/botServiceData.html +1 -1
- package/docs/types/botStatus.html +1 -1
- package/docs/types/botWebhookContext.html +1 -1
- package/docs/types/ceilingLight.html +1 -1
- package/docs/types/ceilingLightPro.html +1 -1
- package/docs/types/ceilingLightProServiceData.html +1 -1
- package/docs/types/ceilingLightProStatus.html +1 -1
- package/docs/types/ceilingLightProWebhookContext.html +1 -1
- package/docs/types/ceilingLightServiceData.html +1 -1
- package/docs/types/ceilingLightStatus.html +1 -1
- package/docs/types/ceilingLightWebhookContext.html +1 -1
- package/docs/types/circulatorFanStatus.html +1 -0
- package/docs/types/circulatorFanWebhookContext.html +1 -0
- package/docs/types/colorBulb.html +1 -1
- package/docs/types/colorBulbServiceData.html +1 -1
- package/docs/types/colorBulbStatus.html +1 -1
- package/docs/types/colorBulbWebhookContext.html +1 -1
- package/docs/types/contactSensor.html +1 -1
- package/docs/types/contactSensorServiceData.html +1 -1
- package/docs/types/contactSensorStatus.html +1 -1
- package/docs/types/contactSensorWebhookContext.html +1 -1
- package/docs/types/curtain.html +1 -1
- package/docs/types/curtain3.html +1 -1
- package/docs/types/curtain3ServiceData.html +1 -1
- package/docs/types/curtain3WebhookContext.html +1 -1
- package/docs/types/curtainServiceData.html +1 -1
- package/docs/types/curtainStatus.html +1 -1
- package/docs/types/curtainWebhookContext.html +1 -1
- package/docs/types/floorCleaningRobotS10.html +1 -1
- package/docs/types/floorCleaningRobotS10Status.html +1 -1
- package/docs/types/floorCleaningRobotS10WebhookContext.html +1 -1
- package/docs/types/hub2.html +1 -1
- package/docs/types/hub2ServiceData.html +1 -1
- package/docs/types/hub2Status.html +1 -1
- package/docs/types/hub2WebhookContext.html +1 -1
- package/docs/types/humidifier.html +1 -1
- package/docs/types/humidifier2ServiceData.html +1 -0
- package/docs/types/humidifier2Status.html +1 -0
- package/docs/types/humidifier2WebhookContext.html +1 -0
- package/docs/types/humidifierServiceData.html +1 -1
- package/docs/types/humidifierStatus.html +1 -1
- package/docs/types/humidifierWebhookContext.html +1 -1
- package/docs/types/indoorCam.html +1 -1
- package/docs/types/indoorCameraWebhookContext.html +1 -1
- package/docs/types/keypad.html +1 -1
- package/docs/types/keypadDetectorServiceData.html +1 -1
- package/docs/types/keypadTouch.html +1 -1
- package/docs/types/keypadTouchWebhookContext.html +1 -1
- package/docs/types/keypadWebhookContext.html +1 -1
- package/docs/types/lock.html +1 -1
- package/docs/types/lockPro.html +1 -1
- package/docs/types/lockProServiceData.html +1 -1
- package/docs/types/lockProStatus.html +1 -1
- package/docs/types/lockProWebhookContext.html +1 -1
- package/docs/types/lockServiceData.html +1 -1
- package/docs/types/lockStatus.html +1 -1
- package/docs/types/lockWebhookContext.html +1 -1
- package/docs/types/meter.html +1 -1
- package/docs/types/meterPlus.html +1 -1
- package/docs/types/meterPlusServiceData.html +1 -1
- package/docs/types/meterPlusStatus.html +1 -1
- package/docs/types/meterPlusWebhookContext.html +1 -1
- package/docs/types/meterPro.html +1 -1
- package/docs/types/meterProCO2ServiceData.html +1 -1
- package/docs/types/meterProCO2Status.html +1 -1
- package/docs/types/meterProCO2WebhookContext.html +1 -1
- package/docs/types/meterProServiceData.html +1 -1
- package/docs/types/meterProStatus.html +1 -1
- package/docs/types/meterProWebhookContext.html +1 -1
- package/docs/types/meterServiceData.html +1 -1
- package/docs/types/meterStatus.html +1 -1
- package/docs/types/meterWebhookContext.html +1 -1
- package/docs/types/motionSensor.html +1 -1
- package/docs/types/motionSensorServiceData.html +1 -1
- package/docs/types/motionSensorStatus.html +1 -1
- package/docs/types/motionSensorWebhookContext.html +1 -1
- package/docs/types/onadvertisement.html +1 -1
- package/docs/types/ondiscover.html +1 -1
- package/docs/types/outdoorMeter.html +1 -1
- package/docs/types/outdoorMeterServiceData.html +1 -1
- package/docs/types/outdoorMeterStatus.html +1 -1
- package/docs/types/outdoorMeterWebhookContext.html +1 -1
- package/docs/types/panTiltCamWebhookContext.html +1 -1
- package/docs/types/pantiltCam.html +1 -1
- package/docs/types/pantiltCam2k.html +1 -1
- package/docs/types/plug.html +1 -1
- package/docs/types/plugMini.html +1 -1
- package/docs/types/plugMiniJPServiceData.html +1 -1
- package/docs/types/plugMiniJPWebhookContext.html +1 -1
- package/docs/types/plugMiniStatus.html +1 -1
- package/docs/types/plugMiniUSServiceData.html +1 -1
- package/docs/types/plugMiniUSWebhookContext.html +1 -1
- package/docs/types/plugStatus.html +1 -1
- package/docs/types/plugWebhookContext.html +1 -1
- package/docs/types/relaySwitch1Context.html +1 -0
- package/docs/types/relaySwitch1PMContext.html +1 -0
- package/docs/types/relaySwitch1PMServiceData.html +1 -1
- package/docs/types/relaySwitch1PMStatus.html +1 -0
- package/docs/types/relaySwitch1ServiceData.html +1 -0
- package/docs/types/relaySwitch1Status.html +1 -0
- package/docs/types/remote.html +1 -1
- package/docs/types/remoteServiceData.html +1 -0
- package/docs/types/robotVacuumCleanerS1.html +1 -1
- package/docs/types/robotVacuumCleanerS1Plus.html +1 -1
- package/docs/types/robotVacuumCleanerS1PlusStatus.html +1 -1
- package/docs/types/robotVacuumCleanerS1PlusWebhookContext.html +1 -1
- package/docs/types/robotVacuumCleanerS1Status.html +1 -1
- package/docs/types/robotVacuumCleanerS1WebhookContext.html +1 -1
- package/docs/types/robotVacuumCleanerServiceData.html +1 -1
- package/docs/types/stripLight.html +1 -1
- package/docs/types/stripLightServiceData.html +1 -1
- package/docs/types/stripLightStatus.html +1 -1
- package/docs/types/stripLightWebhookContext.html +1 -1
- package/docs/types/waterLeakDetector.html +1 -1
- package/docs/types/waterLeakDetectorServiceData.html +1 -1
- package/docs/types/waterLeakDetectorStatus.html +1 -1
- package/docs/types/waterLeakDetectorWebhookContext.html +1 -1
- package/package.json +16 -19
- package/.github/npm-version-script.cjs +0 -81
- package/dist/advertising.d.ts +0 -44
- package/dist/advertising.d.ts.map +0 -1
- package/dist/advertising.js +0 -163
- package/dist/advertising.js.map +0 -1
- package/dist/device/woblindtilt.d.ts +0 -78
- package/dist/device/woblindtilt.d.ts.map +0 -1
- package/dist/device/woblindtilt.js +0 -181
- package/dist/device/woblindtilt.js.map +0 -1
- package/dist/device/wobulb.d.ts +0 -70
- package/dist/device/wobulb.d.ts.map +0 -1
- package/dist/device/wobulb.js +0 -136
- package/dist/device/wobulb.js.map +0 -1
- package/dist/device/woceilinglight.d.ts +0 -74
- package/dist/device/woceilinglight.d.ts.map +0 -1
- package/dist/device/woceilinglight.js +0 -161
- package/dist/device/woceilinglight.js.map +0 -1
- package/dist/device/wocontact.d.ts +0 -19
- package/dist/device/wocontact.d.ts.map +0 -1
- package/dist/device/wocontact.js +0 -48
- package/dist/device/wocontact.js.map +0 -1
- package/dist/device/wocurtain.d.ts +0 -52
- package/dist/device/wocurtain.d.ts.map +0 -1
- package/dist/device/wocurtain.js +0 -135
- package/dist/device/wocurtain.js.map +0 -1
- package/dist/device/wohand.d.ts +0 -50
- package/dist/device/wohand.d.ts.map +0 -1
- package/dist/device/wohand.js +0 -82
- package/dist/device/wohand.js.map +0 -1
- package/dist/device/wohub2.d.ts +0 -19
- package/dist/device/wohub2.d.ts.map +0 -1
- package/dist/device/wohub2.js +0 -40
- package/dist/device/wohub2.js.map +0 -1
- package/dist/device/wohumi.d.ts +0 -50
- package/dist/device/wohumi.d.ts.map +0 -1
- package/dist/device/wohumi.js +0 -89
- package/dist/device/wohumi.js.map +0 -1
- package/dist/device/woiosensorth.d.ts +0 -20
- package/dist/device/woiosensorth.d.ts.map +0 -1
- package/dist/device/woiosensorth.js +0 -49
- package/dist/device/woiosensorth.js.map +0 -1
- package/dist/device/wokeypad.d.ts +0 -19
- package/dist/device/wokeypad.d.ts.map +0 -1
- package/dist/device/wokeypad.js +0 -51
- package/dist/device/wokeypad.js.map +0 -1
- package/dist/device/woleak.d.ts +0 -20
- package/dist/device/woleak.d.ts.map +0 -1
- package/dist/device/woleak.js +0 -52
- package/dist/device/woleak.js.map +0 -1
- package/dist/device/woplugmini.d.ts +0 -52
- package/dist/device/woplugmini.d.ts.map +0 -1
- package/dist/device/woplugmini.js +0 -110
- package/dist/device/woplugmini.js.map +0 -1
- package/dist/device/woplugmini_jp.d.ts +0 -52
- package/dist/device/woplugmini_jp.d.ts.map +0 -1
- package/dist/device/woplugmini_jp.js +0 -110
- package/dist/device/woplugmini_jp.js.map +0 -1
- package/dist/device/wopresence.d.ts +0 -19
- package/dist/device/wopresence.d.ts.map +0 -1
- package/dist/device/wopresence.js +0 -39
- package/dist/device/wopresence.js.map +0 -1
- package/dist/device/worelayswitch1plus.d.ts +0 -36
- package/dist/device/worelayswitch1plus.d.ts.map +0 -1
- package/dist/device/worelayswitch1plus.js +0 -141
- package/dist/device/worelayswitch1plus.js.map +0 -1
- package/dist/device/worelayswitch1pm.d.ts +0 -36
- package/dist/device/worelayswitch1pm.d.ts.map +0 -1
- package/dist/device/worelayswitch1pm.js +0 -144
- package/dist/device/worelayswitch1pm.js.map +0 -1
- package/dist/device/wosensorth.d.ts +0 -13
- package/dist/device/wosensorth.d.ts.map +0 -1
- package/dist/device/wosensorth.js +0 -38
- package/dist/device/wosensorth.js.map +0 -1
- package/dist/device/wosensorthplus.d.ts +0 -13
- package/dist/device/wosensorthplus.d.ts.map +0 -1
- package/dist/device/wosensorthplus.js +0 -38
- package/dist/device/wosensorthplus.js.map +0 -1
- package/dist/device/wosensorthpro.d.ts +0 -13
- package/dist/device/wosensorthpro.d.ts.map +0 -1
- package/dist/device/wosensorthpro.js +0 -38
- package/dist/device/wosensorthpro.js.map +0 -1
- package/dist/device/wosensorthproco2.d.ts +0 -13
- package/dist/device/wosensorthproco2.d.ts.map +0 -1
- package/dist/device/wosensorthproco2.js +0 -40
- package/dist/device/wosensorthproco2.js.map +0 -1
- package/dist/device/wosmartlock.d.ts +0 -86
- package/dist/device/wosmartlock.d.ts.map +0 -1
- package/dist/device/wosmartlock.js +0 -198
- package/dist/device/wosmartlock.js.map +0 -1
- package/dist/device/wosmartlockpro.d.ts +0 -86
- package/dist/device/wosmartlockpro.d.ts.map +0 -1
- package/dist/device/wosmartlockpro.js +0 -200
- package/dist/device/wosmartlockpro.js.map +0 -1
- package/dist/device/wostrip.d.ts +0 -63
- package/dist/device/wostrip.d.ts.map +0 -1
- package/dist/device/wostrip.js +0 -131
- package/dist/device/wostrip.js.map +0 -1
- package/dist/test/advertising.test.d.ts +0 -2
- package/dist/test/advertising.test.d.ts.map +0 -1
- package/dist/test/advertising.test.js +0 -99
- package/dist/test/advertising.test.js.map +0 -1
- package/dist/test/device.test.d.ts +0 -2
- package/dist/test/device.test.d.ts.map +0 -1
- package/dist/test/device.test.js +0 -38
- package/dist/test/device.test.js.map +0 -1
- package/dist/test/index.test.js.map +0 -1
- package/dist/test/parameter-checker.test.d.ts +0 -2
- package/dist/test/parameter-checker.test.d.ts.map +0 -1
- package/dist/test/parameter-checker.test.js +0 -108
- package/dist/test/parameter-checker.test.js.map +0 -1
- package/dist/test/switchbot-ble.test.d.ts +0 -2
- package/dist/test/switchbot-ble.test.d.ts.map +0 -1
- package/dist/test/switchbot-ble.test.js +0 -45
- package/dist/test/switchbot-ble.test.js.map +0 -1
- package/dist/test/switchbot-openapi.test.d.ts +0 -2
- package/dist/test/switchbot-openapi.test.d.ts.map +0 -1
- package/dist/test/switchbot-openapi.test.js +0 -96
- package/dist/test/switchbot-openapi.test.js.map +0 -1
- package/dist/test/woblindtilt.test.d.ts +0 -2
- package/dist/test/woblindtilt.test.d.ts.map +0 -1
- package/dist/test/woblindtilt.test.js +0 -76
- package/dist/test/woblindtilt.test.js.map +0 -1
- package/dist/test/wobulb.test.d.ts +0 -2
- package/dist/test/wobulb.test.d.ts.map +0 -1
- package/dist/test/wobulb.test.js +0 -95
- package/dist/test/wobulb.test.js.map +0 -1
- package/dist/test/woceilinglight.test.d.ts +0 -2
- package/dist/test/woceilinglight.test.d.ts.map +0 -1
- package/dist/test/woceilinglight.test.js +0 -81
- package/dist/test/woceilinglight.test.js.map +0 -1
- package/dist/test/wocontact.test.d.ts +0 -2
- package/dist/test/wocontact.test.d.ts.map +0 -1
- package/dist/test/wocontact.test.js +0 -65
- package/dist/test/wocontact.test.js.map +0 -1
- package/dist/test/wocurtain.test.d.ts +0 -2
- package/dist/test/wocurtain.test.d.ts.map +0 -1
- package/dist/test/wocurtain.test.js +0 -75
- package/dist/test/wocurtain.test.js.map +0 -1
- package/dist/test/wohand.test.d.ts +0 -2
- package/dist/test/wohand.test.d.ts.map +0 -1
- package/dist/test/wohand.test.js +0 -56
- package/dist/test/wohand.test.js.map +0 -1
- package/dist/test/wohub2.test.d.ts +0 -2
- package/dist/test/wohub2.test.d.ts.map +0 -1
- package/dist/test/wohub2.test.js +0 -80
- package/dist/test/wohub2.test.js.map +0 -1
- package/dist/test/wohumi.test.d.ts +0 -2
- package/dist/test/wohumi.test.d.ts.map +0 -1
- package/dist/test/wohumi.test.js +0 -82
- package/dist/test/wohumi.test.js.map +0 -1
- package/dist/test/woiosensorth.test.d.ts +0 -2
- package/dist/test/woiosensorth.test.d.ts.map +0 -1
- package/dist/test/woiosensorth.test.js +0 -40
- package/dist/test/woiosensorth.test.js.map +0 -1
- package/dist/test/wokeypad.test.d.ts +0 -2
- package/dist/test/wokeypad.test.d.ts.map +0 -1
- package/dist/test/wokeypad.test.js +0 -46
- package/dist/test/wokeypad.test.js.map +0 -1
- package/dist/test/woleak.test.d.ts +0 -2
- package/dist/test/woleak.test.d.ts.map +0 -1
- package/dist/test/woleak.test.js +0 -51
- package/dist/test/woleak.test.js.map +0 -1
- package/dist/test/woplugmini.test.d.ts +0 -2
- package/dist/test/woplugmini.test.d.ts.map +0 -1
- package/dist/test/woplugmini.test.js +0 -90
- package/dist/test/woplugmini.test.js.map +0 -1
- package/dist/test/woplugmini_jp.test.d.ts +0 -2
- package/dist/test/woplugmini_jp.test.d.ts.map +0 -1
- package/dist/test/woplugmini_jp.test.js +0 -90
- package/dist/test/woplugmini_jp.test.js.map +0 -1
- package/dist/test/wopresence.test.d.ts +0 -2
- package/dist/test/wopresence.test.d.ts.map +0 -1
- package/dist/test/wopresence.test.js +0 -68
- package/dist/test/wopresence.test.js.map +0 -1
- package/dist/test/wosensorth.test.d.ts +0 -2
- package/dist/test/wosensorth.test.d.ts.map +0 -1
- package/dist/test/wosensorth.test.js +0 -29
- package/dist/test/wosensorth.test.js.map +0 -1
- package/dist/test/wosensorthplus.test.d.ts +0 -2
- package/dist/test/wosensorthplus.test.d.ts.map +0 -1
- package/dist/test/wosensorthplus.test.js +0 -29
- package/dist/test/wosensorthplus.test.js.map +0 -1
- package/dist/test/wosensorthpro.test.d.ts +0 -2
- package/dist/test/wosensorthpro.test.d.ts.map +0 -1
- package/dist/test/wosensorthpro.test.js +0 -29
- package/dist/test/wosensorthpro.test.js.map +0 -1
- package/dist/test/wosensorthproco2.test.d.ts +0 -2
- package/dist/test/wosensorthproco2.test.d.ts.map +0 -1
- package/dist/test/wosensorthproco2.test.js +0 -32
- package/dist/test/wosensorthproco2.test.js.map +0 -1
- package/dist/test/wosmartlock.test.d.ts +0 -2
- package/dist/test/wosmartlock.test.d.ts.map +0 -1
- package/dist/test/wosmartlock.test.js +0 -151
- package/dist/test/wosmartlock.test.js.map +0 -1
- package/dist/test/wosmartlockpro.test.d.ts +0 -2
- package/dist/test/wosmartlockpro.test.d.ts.map +0 -1
- package/dist/test/wosmartlockpro.test.js +0 -150
- package/dist/test/wosmartlockpro.test.js.map +0 -1
- package/dist/test/wostrip.test.d.ts +0 -2
- package/dist/test/wostrip.test.d.ts.map +0 -1
- package/dist/test/wostrip.test.js +0 -102
- package/dist/test/wostrip.test.js.map +0 -1
- package/docs/types/relaySwitch1PlusServiceData.html +0 -1
- /package/dist/{test/index.test.d.ts → index.test.d.ts} +0 -0
- /package/dist/{test/settings.test.d.ts → settings.test.d.ts} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
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
|
+
import assert from 'node:assert'
|
|
8
|
+
import child_process from 'node:child_process'
|
|
9
|
+
import fs from 'node:fs'
|
|
10
|
+
import process from 'node:process'
|
|
11
|
+
|
|
12
|
+
const BRANCH_VERSION_PATTERN = /^([A-Z]+)-(\d+\.\d+\.\d+)$/i
|
|
13
|
+
|
|
14
|
+
// Load the contents of the package.json file
|
|
15
|
+
const packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
16
|
+
|
|
17
|
+
const refArgument = process.argv[2]
|
|
18
|
+
const tagArgument = process.argv[3] || 'latest'
|
|
19
|
+
|
|
20
|
+
if (!refArgument) {
|
|
21
|
+
console.error('ref argument is missing')
|
|
22
|
+
console.error('Usage: npm-version-script-esm.js <ref> [tag]')
|
|
23
|
+
process.exit(1)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Queries the NPM registry for the latest version for the provided base version and tag.
|
|
28
|
+
* If the tag is latest, then the base version is returned if it exists. For other tags, the latest
|
|
29
|
+
* version found for that base version and tag is returned.
|
|
30
|
+
* @param baseVersion The base version to query for, e.g. 2.0.0
|
|
31
|
+
* @param tag The tag to query for, e.g. beta or latest
|
|
32
|
+
* @returns {string} Returns the version, or '' if not found
|
|
33
|
+
*/
|
|
34
|
+
function getTagVersionFromNpm(baseVersion, tag) {
|
|
35
|
+
try {
|
|
36
|
+
return JSON.parse(child_process.execSync(`npm info ${packageJSON.name} versions --json`).toString('utf8').trim())
|
|
37
|
+
.filter(v => tag === 'latest' ? v === baseVersion : v.startsWith(`${baseVersion}-${tag}.`)) // find all published versions for this base version and tag
|
|
38
|
+
.reduce((_, current) => current, '') // choose the last as they're sorted in ascending order, or '' if there are none
|
|
39
|
+
} catch (e) {
|
|
40
|
+
console.error(`Failed to query the npm registry for the latest version for tag: ${tag}`, e)
|
|
41
|
+
// throw e;
|
|
42
|
+
return ''
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function desiredTargetVersion(ref) {
|
|
47
|
+
// ref is a GitHub action ref string
|
|
48
|
+
if (ref.startsWith('refs/pull/')) {
|
|
49
|
+
throw new Error('The version script was executed inside a PR!')
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
assert(ref.startsWith('refs/heads/'))
|
|
53
|
+
const branchName = ref.slice('refs/heads/'.length)
|
|
54
|
+
|
|
55
|
+
const results = branchName.match(BRANCH_VERSION_PATTERN)
|
|
56
|
+
if (results !== null) {
|
|
57
|
+
if (results[1] !== tagArgument) {
|
|
58
|
+
console.warn(`The base branch name (${results[1]}) differs from the tag name ${tagArgument}`)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return results[2]
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
throw new Error(`Malformed branch name for ref: ${ref}. Can't derive the base version. Use a branch name like: beta-x.x.x or alpha-x.x.x`)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// derive the base version from the branch ref
|
|
68
|
+
const baseVersion = desiredTargetVersion(refArgument)
|
|
69
|
+
|
|
70
|
+
// query the npm registry for the latest version of the provided tag name
|
|
71
|
+
const latestReleasedVersion = getTagVersionFromNpm(baseVersion, tagArgument) // e.g. 0.7.0-beta.12
|
|
72
|
+
|
|
73
|
+
let publishTag
|
|
74
|
+
|
|
75
|
+
if (latestReleasedVersion) {
|
|
76
|
+
console.warn(`Latest published version for ${baseVersion} with tag ${tagArgument} is ${latestReleasedVersion}`)
|
|
77
|
+
publishTag = latestReleasedVersion // set this released beta or alpha to be incremented
|
|
78
|
+
} else {
|
|
79
|
+
console.warn(`No published versions for ${baseVersion} with tag ${tagArgument}`)
|
|
80
|
+
publishTag = baseVersion // start off with a new beta or alpha version
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (packageJSON.version !== publishTag) {
|
|
84
|
+
// report the change for CI
|
|
85
|
+
console.warn(`Changing version in package.json from ${packageJSON.version} to ${publishTag}`)
|
|
86
|
+
|
|
87
|
+
// save the package.json
|
|
88
|
+
packageJSON.version = publishTag
|
|
89
|
+
fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2))
|
|
90
|
+
|
|
91
|
+
// perform the same change to the package-lock.json
|
|
92
|
+
const packageLockJSON = JSON.parse(fs.readFileSync('package-lock.json', 'utf8'))
|
|
93
|
+
packageLockJSON.version = publishTag
|
|
94
|
+
fs.writeFileSync('package-lock.json', JSON.stringify(packageLockJSON, null, 2))
|
|
95
|
+
} else {
|
|
96
|
+
console.warn(`Leaving version in package.json at ${packageJSON.version}`)
|
|
97
|
+
}
|
|
@@ -22,7 +22,7 @@ jobs:
|
|
|
22
22
|
if: ${{ github.repository == 'OpenWonderLabs/node-switchbot' }}
|
|
23
23
|
permissions:
|
|
24
24
|
id-token: write
|
|
25
|
-
uses: OpenWonderLabs/.github/.github/workflows/npm-publish.yml@latest
|
|
25
|
+
uses: OpenWonderLabs/.github/.github/workflows/npm-publish-esm.yml@latest
|
|
26
26
|
with:
|
|
27
27
|
tag: 'beta'
|
|
28
28
|
dynamically_adjust_version: true
|
|
@@ -17,7 +17,7 @@ jobs:
|
|
|
17
17
|
if: ${{ github.repository == 'OpenWonderLabs/node-switchbot' }}
|
|
18
18
|
permissions:
|
|
19
19
|
id-token: write
|
|
20
|
-
uses: OpenWonderLabs/.github/.github/workflows/npm-publish.yml@latest
|
|
20
|
+
uses: OpenWonderLabs/.github/.github/workflows/npm-publish-esm.yml@latest
|
|
21
21
|
secrets:
|
|
22
22
|
npm_auth_token: ${{ secrets.npm_token }}
|
|
23
23
|
|
package/BLE.md
CHANGED
|
@@ -1126,19 +1126,20 @@ this.switchBotBLE.on('log', (log) => {
|
|
|
1126
1126
|
|
|
1127
1127
|
The following devices are supported.
|
|
1128
1128
|
|
|
1129
|
-
| Device
|
|
1130
|
-
|
|
|
1131
|
-
| SwitchBot Bot
|
|
1132
|
-
| SwitchBot Curtain
|
|
1133
|
-
| SwitchBot Meter
|
|
1134
|
-
| SwitchBot Motion Sensor
|
|
1135
|
-
| SwitchBot Contact Sensor
|
|
1136
|
-
| SwitchBot Plug Mini
|
|
1137
|
-
| SwitchBot Smart Lock
|
|
1138
|
-
| SwitchBot Smart Lock Pro
|
|
1139
|
-
| SwitchBot Humidifier
|
|
1140
|
-
| SwitchBot
|
|
1141
|
-
| SwitchBot
|
|
1129
|
+
| Device | BLE Support |
|
|
1130
|
+
| ---------------------------------------------- | ----------- |
|
|
1131
|
+
| SwitchBot Bot | Yes |
|
|
1132
|
+
| SwitchBot Curtain | Yes |
|
|
1133
|
+
| SwitchBot Meter | Yes |
|
|
1134
|
+
| SwitchBot Motion Sensor | Yes |
|
|
1135
|
+
| SwitchBot Contact Sensor | Yes |
|
|
1136
|
+
| SwitchBot Plug Mini | Yes |
|
|
1137
|
+
| SwitchBot Smart Lock | Yes |
|
|
1138
|
+
| SwitchBot Smart Lock Pro | Yes |
|
|
1139
|
+
| SwitchBot Humidifier | Yes |
|
|
1140
|
+
| SwitchBot Evaporative Humidifier (Auto-refill) | No |
|
|
1141
|
+
| SwitchBot Color Bulb | Yes |
|
|
1142
|
+
| SwitchBot LED Strip Light | Yes |
|
|
1142
1143
|
|
|
1143
1144
|
### Summary
|
|
1144
1145
|
|
package/CHANGELOG.md
CHANGED
|
@@ -2,10 +2,77 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/)
|
|
4
4
|
|
|
5
|
+
## [3.4.9](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.9) (2025-01-24)
|
|
6
|
+
|
|
7
|
+
### What's Changed
|
|
8
|
+
- Add BLE comands for Relay Switch 1 && Relay Switch 1 PM, not yet functional
|
|
9
|
+
- Housekeeping and update dependencies
|
|
10
|
+
|
|
11
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.8...v3.4.9
|
|
12
|
+
|
|
13
|
+
## [3.4.8](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.8) (2025-01-24)
|
|
14
|
+
|
|
15
|
+
### What's Changed
|
|
16
|
+
- Add exports for Relay Switch 1 && Relay Switch 1 PM
|
|
17
|
+
- Housekeeping and update dependencies
|
|
18
|
+
|
|
19
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.7...v3.4.8
|
|
20
|
+
|
|
21
|
+
## [3.4.7](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.7) (2025-01-24)
|
|
22
|
+
|
|
23
|
+
### What's Changed
|
|
24
|
+
- Add Types for Relay Switch 1 && Relay Switch 1 PM
|
|
25
|
+
- Housekeeping and update dependencies
|
|
26
|
+
|
|
27
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.6...v3.4.7
|
|
28
|
+
|
|
29
|
+
## [3.4.6](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.6) (2025-01-24)
|
|
30
|
+
|
|
31
|
+
### What's Changed
|
|
32
|
+
- Housekeeping and update dependencies
|
|
33
|
+
|
|
34
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.5...v3.4.6
|
|
35
|
+
|
|
36
|
+
## [3.4.5](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.5) (2025-01-23)
|
|
37
|
+
|
|
38
|
+
### What's Changed
|
|
39
|
+
- Housekeeping and update dependencies
|
|
40
|
+
|
|
41
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.4...v3.4.5
|
|
42
|
+
|
|
43
|
+
## [3.4.4](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.4) (2025-01-23)
|
|
44
|
+
|
|
45
|
+
### What's Changed
|
|
46
|
+
- Housekeeping and update dependencies
|
|
47
|
+
|
|
48
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.3...v3.4.4
|
|
49
|
+
|
|
50
|
+
## [3.4.3](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.3) (2024-12-22)
|
|
51
|
+
|
|
52
|
+
### What's Changed
|
|
53
|
+
- Fixed `getDeviceStatus` for `openAPI`
|
|
54
|
+
- Housekeeping and update dependencies
|
|
55
|
+
|
|
56
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.2...v3.4.3
|
|
57
|
+
|
|
58
|
+
## [3.4.2](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.2) (2024-12-21)
|
|
59
|
+
|
|
60
|
+
### What's Changed
|
|
61
|
+
- Housekeeping and update dependencies
|
|
62
|
+
|
|
63
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.1...v3.4.2
|
|
64
|
+
|
|
65
|
+
## [3.4.1](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.1) (2024-11-27)
|
|
66
|
+
|
|
67
|
+
### What's Changed
|
|
68
|
+
- Housekeeping and update dependencies
|
|
69
|
+
|
|
70
|
+
**Full Changelog**: https://github.com/OpenWonderLabs/node-switchbot/compare/v3.4.0...v3.4.1
|
|
71
|
+
|
|
5
72
|
## [3.4.0](https://github.com/OpenWonderLabs/node-switchbot/releases/tag/v3.4.0) (2024-11-18)
|
|
6
73
|
|
|
7
74
|
### What's Changed
|
|
8
|
-
- Add
|
|
75
|
+
- Add RelaySwitch1PM and RealySwitch1PLus Devices
|
|
9
76
|
- Handle no devices found [#272](https://github.com/OpenWonderLabs/node-switchbot/pull/272), Thanks [@dnicolson](https://github.com/dnicolson)
|
|
10
77
|
- Housekeeping and update dependencies
|
|
11
78
|
|
package/OpenAPI.md
CHANGED
|
@@ -167,18 +167,19 @@ this.switchBotAPI.on('log', (log) => {
|
|
|
167
167
|
|
|
168
168
|
The following devices are supported.
|
|
169
169
|
|
|
170
|
-
| Device
|
|
171
|
-
|
|
|
172
|
-
| SwitchBot Bot
|
|
173
|
-
| SwitchBot Curtain
|
|
174
|
-
| SwitchBot Meter
|
|
175
|
-
| SwitchBot Motion Sensor
|
|
176
|
-
| SwitchBot Contact Sensor
|
|
177
|
-
| SwitchBot Plug
|
|
178
|
-
| SwitchBot Smart Lock
|
|
179
|
-
| SwitchBot Humidifier
|
|
180
|
-
| SwitchBot
|
|
181
|
-
| SwitchBot
|
|
170
|
+
| Device | OpenAPI Support | Webhook Support |
|
|
171
|
+
| ---------------------------------------------- | --------------- | --------------- |
|
|
172
|
+
| SwitchBot Bot | Yes | Yes |
|
|
173
|
+
| SwitchBot Curtain | Yes | Yes |
|
|
174
|
+
| SwitchBot Meter | Yes | Yes |
|
|
175
|
+
| SwitchBot Motion Sensor | Yes | Yes |
|
|
176
|
+
| SwitchBot Contact Sensor | Yes | Yes |
|
|
177
|
+
| SwitchBot Plug Min | Yes | Yes |
|
|
178
|
+
| SwitchBot Smart Lock | Yes | Yes |
|
|
179
|
+
| SwitchBot Humidifier | Yes | Yes |
|
|
180
|
+
| SwitchBot Evaporative Humidifier (Auto-refill) | Yes | Yes |
|
|
181
|
+
| SwitchBot Color Bulb | Yes | Yes |
|
|
182
|
+
| SwitchBot LED Strip Light | Yes | Yes |
|
|
182
183
|
|
|
183
184
|
### Summary
|
|
184
185
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!-- Generated by Pixelmator Pro 3.6.
|
|
2
|
+
<!-- Generated by Pixelmator Pro 3.6.13 -->
|
|
3
3
|
<svg width="600" height="450" viewBox="0 0 600 450" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
4
4
|
<g id="Switchbot">
|
|
5
5
|
<image id="image1" x="149" y="25" width="302" height="301" xlink:href="data:image/png;base64, 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"/>
|
|
6
6
|
</g>
|
|
7
|
-
<text id="Node-SwitchBot" xml:space="preserve" x="10
|
|
8
|
-
<text id="Text" xml:space="preserve" x="304" y="244" font-family="Kefa" font-size="75" font-weight="700" fill="#d13939">T</text>
|
|
7
|
+
<text id="Node-SwitchBot" xml:space="preserve" x="10" y="404" font-family="Kefa" font-size="75" font-weight="700" fill="#d13939">Node-SwitchBot</text>
|
|
9
8
|
</svg>
|