From 33f55531e6d5935d57a065fb95fa5dc340c4f392 Mon Sep 17 00:00:00 2001 From: Patrick Seal Date: Wed, 15 Nov 2023 09:17:02 -0800 Subject: [PATCH] chore(release): 5.0.0 --- CHANGELOG.md | 26 +- docs/assets/highlight.css | 14 +- docs/assets/icons.css | 1043 ----------- docs/assets/icons.png | Bin 9615 -> 0 bytes docs/assets/icons@2x.png | Bin 28144 -> 0 bytes docs/assets/main.js | 111 +- docs/assets/navigation.js | 1 + docs/assets/search.js | 2 +- docs/assets/style.css | 1626 ++++++++--------- docs/assets/widgets.png | Bin 480 -> 0 bytes docs/assets/widgets@2x.png | Bin 855 -> 0 bytes docs/classes/Away.html | 38 + docs/classes/Bulb.html | 643 ++++--- docs/classes/BulbSchedule.html | 59 + docs/classes/Client.html | 344 +++- docs/classes/Cloud.html | 27 + docs/classes/Device.html | 401 +++- docs/classes/Dimmer.html | 69 + docs/classes/Emeter.html | 30 + docs/classes/Lighting.html | 20 + docs/classes/Netif.html | 13 + docs/classes/Plug.html | 519 ++++-- docs/classes/PlugSchedule.html | 59 + docs/classes/ResponseError.html | 50 +- docs/classes/Time.html | 14 + docs/classes/Timer.html | 23 + docs/index.html | 50 +- docs/interfaces/ApiModuleNamespace.html | 9 +- docs/interfaces/AwayRuleInput.html | 23 +- docs/interfaces/BulbConstructorOptions.html | 11 +- docs/interfaces/BulbEvents.html | 26 + docs/interfaces/BulbScheduleRuleInput.html | 19 +- docs/interfaces/BulbSysinfoLightState.html | 17 + docs/interfaces/ClientConstructorOptions.html | 16 +- docs/interfaces/ClientEvents.html | 23 + docs/interfaces/DeviceConstructorOptions.html | 10 +- docs/interfaces/DeviceEvents.html | 3 + docs/interfaces/DimmerActionInput.html | 4 +- docs/interfaces/DimmerTransitionInput.html | 14 +- docs/interfaces/DiscoveryOptions.html | 79 +- docs/interfaces/LightState.html | 26 +- docs/interfaces/LightStateInput.html | 29 +- docs/interfaces/PlugConstructorOptions.html | 22 +- docs/interfaces/PlugEvents.html | 18 + docs/interfaces/PlugScheduleRuleInput.html | 20 +- docs/modules.html | 71 +- docs/types/AnyDevice.html | 1 + docs/types/AnyDeviceDiscovery.html | 1 + docs/types/AnyDeviceOptionsConstructable.html | 1 + docs/types/AwayRule.html | 1 + docs/types/BulbScheduleRule.html | 1 + docs/types/BulbSysinfo.html | 1 + docs/types/CloudInfo.html | 1 + docs/types/CommonSysinfo.html | 1 + docs/types/DeviceDiscovery.html | 1 + docs/types/DeviceOptionsDiscovery.html | 1 + docs/types/DiscoveryDevice.html | 1 + docs/types/HasErrCode.html | 1 + docs/types/HasRuleListWithRuleIds.html | 1 + docs/types/LogLevelMethodNames.html | 1 + docs/types/Logger.html | 1 + docs/types/PlugChild.html | 1 + docs/types/PlugScheduleRule.html | 1 + docs/types/PlugSysinfo.html | 1 + docs/types/Realtime.html | 1 + docs/types/RealtimeNormalized.html | 1 + docs/types/RealtimeV1.html | 1 + docs/types/RealtimeV2.html | 1 + docs/types/ScheduleDateStart.html | 1 + docs/types/ScheduleNextAction.html | 1 + docs/types/ScheduleNextActionResponse.html | 1 + docs/types/ScheduleRule.html | 1 + docs/types/ScheduleRuleInputTime.html | 1 + docs/types/ScheduleRuleResponse.html | 1 + docs/types/ScheduleRuleWithId.html | 1 + docs/types/ScheduleRules.html | 1 + docs/types/ScheduleRulesResponse.html | 1 + docs/types/SendOptions.html | 6 + docs/types/Sysinfo.html | 1 + docs/types/SysinfoChildren.html | 1 + docs/types/TimerRuleInput.html | 1 + docs/types/WDay.html | 1 + package-lock.json | 4 +- package.json | 2 +- 84 files changed, 2964 insertions(+), 2705 deletions(-) delete mode 100644 docs/assets/icons.css delete mode 100644 docs/assets/icons.png delete mode 100644 docs/assets/icons@2x.png create mode 100644 docs/assets/navigation.js delete mode 100644 docs/assets/widgets.png delete mode 100644 docs/assets/widgets@2x.png create mode 100644 docs/classes/Away.html create mode 100644 docs/classes/BulbSchedule.html create mode 100644 docs/classes/Cloud.html create mode 100644 docs/classes/Dimmer.html create mode 100644 docs/classes/Emeter.html create mode 100644 docs/classes/Lighting.html create mode 100644 docs/classes/Netif.html create mode 100644 docs/classes/PlugSchedule.html create mode 100644 docs/classes/Time.html create mode 100644 docs/classes/Timer.html create mode 100644 docs/interfaces/BulbEvents.html create mode 100644 docs/interfaces/BulbSysinfoLightState.html create mode 100644 docs/interfaces/ClientEvents.html create mode 100644 docs/interfaces/DeviceEvents.html create mode 100644 docs/interfaces/PlugEvents.html create mode 100644 docs/types/AnyDevice.html create mode 100644 docs/types/AnyDeviceDiscovery.html create mode 100644 docs/types/AnyDeviceOptionsConstructable.html create mode 100644 docs/types/AwayRule.html create mode 100644 docs/types/BulbScheduleRule.html create mode 100644 docs/types/BulbSysinfo.html create mode 100644 docs/types/CloudInfo.html create mode 100644 docs/types/CommonSysinfo.html create mode 100644 docs/types/DeviceDiscovery.html create mode 100644 docs/types/DeviceOptionsDiscovery.html create mode 100644 docs/types/DiscoveryDevice.html create mode 100644 docs/types/HasErrCode.html create mode 100644 docs/types/HasRuleListWithRuleIds.html create mode 100644 docs/types/LogLevelMethodNames.html create mode 100644 docs/types/Logger.html create mode 100644 docs/types/PlugChild.html create mode 100644 docs/types/PlugScheduleRule.html create mode 100644 docs/types/PlugSysinfo.html create mode 100644 docs/types/Realtime.html create mode 100644 docs/types/RealtimeNormalized.html create mode 100644 docs/types/RealtimeV1.html create mode 100644 docs/types/RealtimeV2.html create mode 100644 docs/types/ScheduleDateStart.html create mode 100644 docs/types/ScheduleNextAction.html create mode 100644 docs/types/ScheduleNextActionResponse.html create mode 100644 docs/types/ScheduleRule.html create mode 100644 docs/types/ScheduleRuleInputTime.html create mode 100644 docs/types/ScheduleRuleResponse.html create mode 100644 docs/types/ScheduleRuleWithId.html create mode 100644 docs/types/ScheduleRules.html create mode 100644 docs/types/ScheduleRulesResponse.html create mode 100644 docs/types/SendOptions.html create mode 100644 docs/types/Sysinfo.html create mode 100644 docs/types/SysinfoChildren.html create mode 100644 docs/types/TimerRuleInput.html create mode 100644 docs/types/WDay.html diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a3046e..a234b32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,30 @@ # Changelog -All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines. + +## [5.0.0](https://github.com/plasticrake/tplink-smarthome-api/compare/v4.2.0...v5.0.0) (2023-11-15) + + +### ⚠ BREAKING CHANGES + +* **Device:** `Device#startPolling`, `Device#stopPolling`, and Device/Bulb/Plug event `polling-error` have been removed. +* Requires minimum node version v16 +* Requires minimum node version v14 + +* drop support for node < v14 ([348401a](https://github.com/plasticrake/tplink-smarthome-api/commit/348401afd10a3e6c8a82e3914350bb1d5574b3b2)) +* drop support for node < v16 ([#156](https://github.com/plasticrake/tplink-smarthome-api/issues/156)) ([893b82b](https://github.com/plasticrake/tplink-smarthome-api/commit/893b82bfd6a508ff34f36cfc8f883b498b825d8b)) + + +### Features + +* **Bulb:** add Bulb#blink method ([#162](https://github.com/plasticrake/tplink-smarthome-api/issues/162)) ([a8dd13d](https://github.com/plasticrake/tplink-smarthome-api/commit/a8dd13dd899f1dae53b43e61e2c97d764ed5b636)) +* catch more invalid discovery messages ([#154](https://github.com/plasticrake/tplink-smarthome-api/issues/154)) ([935d3f3](https://github.com/plasticrake/tplink-smarthome-api/commit/935d3f369fc0c958b59d2b5c8a307b02618d982e)) +* **Device:** remove startPolling, stopPolling, that were previously deprecated ([#157](https://github.com/plasticrake/tplink-smarthome-api/issues/157)) ([513deca](https://github.com/plasticrake/tplink-smarthome-api/commit/513decac9364633b138e459a2d3385231ac476fc)) + + +### Bug Fixes + +* exported type fixes ([fd336b2](https://github.com/plasticrake/tplink-smarthome-api/commit/fd336b20668b926c982e0cee5e83665b65f643ac)) ## [4.2.0](https://github.com/plasticrake/tplink-smarthome-api/compare/v4.1.0...v4.2.0) (2022-02-14) diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css index c1988b6..343c5e0 100644 --- a/docs/assets/highlight.css +++ b/docs/assets/highlight.css @@ -13,15 +13,15 @@ --dark-hl-5: #9CDCFE; --light-hl-6: #008000; --dark-hl-6: #6A9955; - --light-hl-7: #267F99; - --dark-hl-7: #4EC9B0; + --light-hl-7: #AF00DB; + --dark-hl-7: #C586C0; --light-hl-8: #098658; --dark-hl-8: #B5CEA8; - --light-hl-9: #AF00DB; - --dark-hl-9: #C586C0; + --light-hl-9: #267F99; + --dark-hl-9: #4EC9B0; --light-hl-10: #000000; --dark-hl-10: #C8C8C8; - --light-code-background: #F5F5F5; + --light-code-background: #FFFFFF; --dark-code-background: #1E1E1E; } @@ -55,7 +55,7 @@ --code-background: var(--dark-code-background); } } -body.light { +:root[data-theme='light'] { --hl-0: var(--light-hl-0); --hl-1: var(--light-hl-1); --hl-2: var(--light-hl-2); @@ -70,7 +70,7 @@ body.light { --code-background: var(--light-code-background); } -body.dark { +:root[data-theme='dark'] { --hl-0: var(--dark-hl-0); --hl-1: var(--dark-hl-1); --hl-2: var(--dark-hl-2); diff --git a/docs/assets/icons.css b/docs/assets/icons.css deleted file mode 100644 index 776a356..0000000 --- a/docs/assets/icons.css +++ /dev/null @@ -1,1043 +0,0 @@ -.tsd-kind-icon { - display: block; - position: relative; - padding-left: 20px; - text-indent: -20px; -} -.tsd-kind-icon:before { - content: ""; - display: inline-block; - vertical-align: middle; - width: 17px; - height: 17px; - margin: 0 3px 2px 0; - background-image: url(./icons.png); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-kind-icon:before { - background-image: url(./icons@2x.png); - background-size: 238px 204px; - } -} - -.tsd-signature.tsd-kind-icon:before { - background-position: 0 -153px; -} - -.tsd-kind-object-literal > .tsd-kind-icon:before { - background-position: 0px -17px; -} -.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -17px; -} -.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -17px; -} - -.tsd-kind-class > .tsd-kind-icon:before { - background-position: 0px -34px; -} -.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -34px; -} -.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -34px; -} - -.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -51px; -} -.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -17px -51px; -} -.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -51px; -} - -.tsd-kind-interface > .tsd-kind-icon:before { - background-position: 0px -68px; -} -.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -68px; -} -.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -68px; -} - -.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -85px; -} -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -17px -85px; -} -.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private - > .tsd-kind-icon:before { - background-position: -34px -85px; -} - -.tsd-kind-namespace > .tsd-kind-icon:before { - background-position: 0px -102px; -} -.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; -} -.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; -} - -.tsd-kind-module > .tsd-kind-icon:before { - background-position: 0px -102px; -} -.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -102px; -} -.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -102px; -} - -.tsd-kind-enum > .tsd-kind-icon:before { - background-position: 0px -119px; -} -.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -119px; -} -.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -119px; -} - -.tsd-kind-enum-member > .tsd-kind-icon:before { - background-position: 0px -136px; -} -.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -136px; -} -.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -136px; -} - -.tsd-kind-signature > .tsd-kind-icon:before { - background-position: 0px -153px; -} -.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -153px; -} -.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -153px; -} - -.tsd-kind-type-alias > .tsd-kind-icon:before { - background-position: 0px -170px; -} -.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { - background-position: -17px -170px; -} -.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { - background-position: -34px -170px; -} - -.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: 0px -187px; -} -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -17px -187px; -} -.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private - > .tsd-kind-icon:before { - background-position: -34px -187px; -} - -.tsd-kind-variable > .tsd-kind-icon:before { - background-position: -136px -0px; -} -.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; -} -.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -0px; -} -.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -0px; -} -.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; -} -.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -0px; -} - -.tsd-kind-property > .tsd-kind-icon:before { - background-position: -136px -0px; -} -.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -0px; -} -.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -0px; -} -.tsd-kind-property.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -0px; -} -.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -0px; -} -.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -0px; -} -.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -0px; -} - -.tsd-kind-get-signature > .tsd-kind-icon:before { - background-position: -136px -17px; -} -.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -17px; -} -.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -17px; -} -.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -17px; -} - -.tsd-kind-set-signature > .tsd-kind-icon:before { - background-position: -136px -34px; -} -.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -34px; -} -.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -34px; -} -.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -34px; -} - -.tsd-kind-accessor > .tsd-kind-icon:before { - background-position: -136px -51px; -} -.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -51px; -} -.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -51px; -} -.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -51px; -} - -.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-function.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -68px; -} -.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -68px; -} -.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -68px; -} -.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -68px; -} - -.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -153px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class - > .tsd-kind-icon:before { - background-position: -51px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum - > .tsd-kind-icon:before { - background-position: -170px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -85px; -} -.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -85px; -} - -.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { - background-position: -136px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -153px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class - > .tsd-kind-icon:before { - background-position: -51px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum - > .tsd-kind-icon:before { - background-position: -170px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -85px; -} -.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -85px; -} - -.tsd-kind-constructor > .tsd-kind-icon:before { - background-position: -136px -102px; -} -.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; -} -.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -102px; -} -.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -102px; -} - -.tsd-kind-constructor-signature > .tsd-kind-icon:before { - background-position: -136px -102px; -} -.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -102px; -} -.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -102px; -} -.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -102px; -} - -.tsd-kind-index-signature > .tsd-kind-icon:before { - background-position: -136px -119px; -} -.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -119px; -} -.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -119px; -} -.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -119px; -} - -.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -136px; -} -.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -136px; -} -.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -136px; -} -.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -136px; -} -.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -136px; -} -.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -136px; -} -.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -136px; -} - -.tsd-is-static > .tsd-kind-icon:before { - background-position: -136px -153px; -} -.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -153px; -} -.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { - background-position: -68px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { - background-position: -85px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -153px; -} -.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -153px; -} -.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { - background-position: -187px -153px; -} -.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -153px; -} -.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { - background-position: -204px -153px; -} -.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -153px; -} - -.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { - background-position: -136px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -153px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class - > .tsd-kind-icon:before { - background-position: -51px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum - > .tsd-kind-icon:before { - background-position: -170px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -170px; -} -.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -170px; -} - -.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { - background-position: -136px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { - background-position: -153px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { - background-position: -51px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -68px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -85px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -102px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { - background-position: -170px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected - > .tsd-kind-icon:before { - background-position: -187px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private - > .tsd-kind-icon:before { - background-position: -119px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface - > .tsd-kind-icon:before { - background-position: -204px -187px; -} -.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited - > .tsd-kind-icon:before { - background-position: -221px -187px; -} diff --git a/docs/assets/icons.png b/docs/assets/icons.png deleted file mode 100644 index 3836d5fe46e48bbe186116855aae879c23935327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9615 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 NZmR35l_G4O{0}dcmS_L~ diff --git a/docs/assets/icons@2x.png b/docs/assets/icons@2x.png deleted file mode 100644 index 5a209e2f6d7f915cc9cb6fe7a4264c8be4db87b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28144 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 Ce=Object.create;var J=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Me=t=>J(t,"__esModule",{value:!0});var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!_e.call(t,i)&&(r||i!=="default")&&J(t,i,{get:()=>e[i],enumerable:!(n=Pe(e,i))||n.enumerable});return t},Ae=(t,e)=>De(Me(J(t!=null?Ce(Re(t)):{},"default",!e&&t&&t.__esModule?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var de=Fe((ce,he)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var h=t.utils.clone(r)||{};h.position=[a,l],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ou?h+=2:a==u&&(r+=n[l+1]*i[h+1],l+=2,h+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),p=s.str.charAt(1),v;p in s.node.edges?v=s.node.edges[p]:(v=new t.TokenSet,s.node.edges[p]=v),s.str.length==1&&(v.final=!0),i.push({node:v,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof ce=="object"?he.exports=r():e.lunr=r()}(this,function(){return t})})()});var le=[];function N(t,e){le.push({selector:e,constructor:t})}var X=class{constructor(){this.createComponents(document.body)}createComponents(e){le.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n}),n.dataset.hasInstance=String(!0))})})}};var Q=class{constructor(e){this.el=e.el}};var Z=class{constructor(){this.listeners={}}addEventListener(e,r){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){if(!(e in this.listeners))return;let n=this.listeners[e];for(let i=0,s=n.length;i{let r=Date.now();return(...n)=>{r+e-Date.now()<0&&(t(...n),r=Date.now())}};var ee=class extends Z{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.secondaryNav=document.querySelector(".tsd-navigation.secondary"),window.addEventListener("scroll",K(()=>this.onScroll(),10)),window.addEventListener("resize",K(()=>this.onResize(),10)),this.onResize(),this.onScroll()}triggerResize(){let e=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(e)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let e=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(e)}onScroll(){this.scrollTop=window.scrollY||0;let e=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(e),this.hideShowToolbar()}hideShowToolbar(){var r;let e=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0,e!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),(r=this.secondaryNav)==null||r.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop}},I=ee;I.instance=new ee;var te=class extends Q{constructor(e){super(e);this.anchors=[];this.index=-1;I.instance.addEventListener("resize",()=>this.onResize()),I.instance.addEventListener("scroll",r=>this.onScroll(r)),this.createAnchors()}createAnchors(){let e=window.location.href;e.indexOf("#")!=-1&&(e=e.substr(0,e.indexOf("#"))),this.el.querySelectorAll("a").forEach(r=>{let n=r.href;if(n.indexOf("#")==-1||n.substr(0,e.length)!=e)return;let i=n.substr(n.indexOf("#")+1),s=document.querySelector("a.tsd-anchor[name="+i+"]"),o=r.parentNode;!s||!o||this.anchors.push({link:o,anchor:s,position:0})}),this.onResize()}onResize(){let e;for(let n=0,i=this.anchors.length;nn.position-i.position);let r=new CustomEvent("scroll",{detail:{scrollTop:I.instance.scrollTop}});this.onScroll(r)}onScroll(e){let r=e.detail.scrollTop+5,n=this.anchors,i=n.length-1,s=this.index;for(;s>-1&&n[s].position>r;)s-=1;for(;s-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=s,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var ue=(t,e=100)=>{let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>t(n),e)}};var fe=Ae(de());function pe(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Ve(t,n,r,s)}function Ve(t,e,r,n){r.addEventListener("input",ue(()=>{ze(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ne(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?me(e,-1):s.key==="ArrowDown"?me(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function He(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=fe.Index.load(window.searchData.index))}function ze(t,e,r,n){if(He(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=n.index.search(`*${i}*`);for(let o=0,a=Math.min(10,s.length);o${ve(u.parent,i)}.${l}`);let h=document.createElement("li");h.classList.value=u.classes;let p=document.createElement("a");p.href=n.base+u.url,p.classList.add("tsd-kind-icon"),p.innerHTML=l,h.append(p),e.appendChild(h)}}function me(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function Ne(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function ve(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(re(t.substring(s,o)),`${re(t.substring(o,o+n.length))}`),s=o+n.length,o=r.indexOf(n,s);return i.push(re(t.substring(s))),i.join("")}var je={"&":"&","<":"<",">":">","'":"'",'"':"""};function re(t){return t.replace(/[&<>"'"]/g,e=>je[e])}var ge=class{constructor(e,r){this.signature=e,this.description=r}addClass(e){return this.signature.classList.add(e),this.description.classList.add(e),this}removeClass(e){return this.signature.classList.remove(e),this.description.classList.remove(e),this}},ne=class extends Q{constructor(e){super(e);this.groups=[];this.index=-1;this.createGroups(),this.container&&(this.el.classList.add("active"),Array.from(this.el.children).forEach(r=>{r.addEventListener("touchstart",n=>this.onClick(n)),r.addEventListener("click",n=>this.onClick(n))}),this.container.classList.add("active"),this.setIndex(0))}setIndex(e){if(e<0&&(e=0),e>this.groups.length-1&&(e=this.groups.length-1),this.index==e)return;let r=this.groups[e];if(this.index>-1){let n=this.groups[this.index];n.removeClass("current").addClass("fade-out"),r.addClass("current"),r.addClass("fade-in"),I.instance.triggerResize(),setTimeout(()=>{n.removeClass("fade-out"),r.removeClass("fade-in")},300)}else r.addClass("current"),I.instance.triggerResize();this.index=e}createGroups(){let e=this.el.children;if(e.length<2)return;this.container=this.el.nextElementSibling;let r=this.container.children;this.groups=[];for(let n=0;n{r.signature===e.currentTarget&&this.setIndex(n)})}};var C="mousedown",ye="mousemove",_="mouseup",G={x:0,y:0},xe=!1,ie=!1,Be=!1,A=!1,Le=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Le?"is-mobile":"not-mobile");Le&&"ontouchstart"in document.documentElement&&(Be=!0,C="touchstart",ye="touchmove",_="touchend");document.addEventListener(C,t=>{ie=!0,A=!1;let e=C=="touchstart"?t.targetTouches[0]:t;G.y=e.pageY||0,G.x=e.pageX||0});document.addEventListener(ye,t=>{if(!!ie&&!A){let e=C=="touchstart"?t.targetTouches[0]:t,r=G.x-(e.pageX||0),n=G.y-(e.pageY||0);A=Math.sqrt(r*r+n*n)>10}});document.addEventListener(_,()=>{ie=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var se=class extends Q{constructor(e){super(e);this.className=this.el.dataset.toggle||"",this.el.addEventListener(_,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(C,r=>this.onDocumentPointerDown(r)),document.addEventListener(_,r=>this.onDocumentPointerUp(r))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(e){A||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!A&&this.active&&e.target.closest(".col-menu")){let r=e.target.closest("a");if(r){let n=window.location.href;n.indexOf("#")!=-1&&(n=n.substr(0,n.indexOf("#"))),r.href.substr(0,n.length)==n&&setTimeout(()=>this.setActive(!1),250)}}}};var oe=class{constructor(e,r){this.key=e,this.value=r,this.defaultValue=r,this.initialize(),window.localStorage[this.key]&&this.setValue(this.fromLocalStorage(window.localStorage[this.key]))}initialize(){}setValue(e){if(this.value==e)return;let r=this.value;this.value=e,window.localStorage[this.key]=this.toLocalStorage(e),this.handleValueChange(r,e)}},ae=class extends oe{initialize(){let e=document.querySelector("#tsd-filter-"+this.key);!e||(this.checkbox=e,this.checkbox.addEventListener("change",()=>{this.setValue(this.checkbox.checked)}))}handleValueChange(e,r){!this.checkbox||(this.checkbox.checked=this.value,document.documentElement.classList.toggle("toggle-"+this.key,this.value!=this.defaultValue))}fromLocalStorage(e){return e=="true"}toLocalStorage(e){return e?"true":"false"}},Ee=class extends oe{initialize(){document.documentElement.classList.add("toggle-"+this.key+this.value);let e=document.querySelector("#tsd-filter-"+this.key);if(!e)return;this.select=e;let r=()=>{this.select.classList.add("active")},n=()=>{this.select.classList.remove("active")};this.select.addEventListener(C,r),this.select.addEventListener("mouseover",r),this.select.addEventListener("mouseleave",n),this.select.querySelectorAll("li").forEach(i=>{i.addEventListener(_,s=>{e.classList.remove("active"),this.setValue(s.target.dataset.value||"")})}),document.addEventListener(C,i=>{this.select.contains(i.target)||this.select.classList.remove("active")})}handleValueChange(e,r){this.select.querySelectorAll("li.selected").forEach(s=>{s.classList.remove("selected")});let n=this.select.querySelector('li[data-value="'+r+'"]'),i=this.select.querySelector(".tsd-select-label");n&&i&&(n.classList.add("selected"),i.textContent=n.textContent),document.documentElement.classList.remove("toggle-"+e),document.documentElement.classList.add("toggle-"+r)}fromLocalStorage(e){return e}toLocalStorage(e){return e}},Y=class extends Q{constructor(e){super(e);this.optionVisibility=new Ee("visibility","private"),this.optionInherited=new ae("inherited",!0),this.optionExternals=new ae("externals",!0)}static isSupported(){try{return typeof window.localStorage!="undefined"}catch{return!1}}};function be(t){let e=localStorage.getItem("tsd-theme")||"os";t.value=e,we(e),t.addEventListener("change",()=>{localStorage.setItem("tsd-theme",t.value),we(t.value)})}function we(t){switch(t){case"os":document.body.classList.remove("light","dark");break;case"light":document.body.classList.remove("dark"),document.body.classList.add("light");break;case"dark":document.body.classList.remove("light"),document.body.classList.add("dark");break}}pe();N(te,".menu-highlight");N(ne,".tsd-signatures");N(se,"a[data-toggle]");Y.isSupported()?N(Y,"#tsd-filter"):document.documentElement.classList.add("no-filter");var Te=document.getElementById("theme");Te&&be(Te);var qe=new X;Object.defineProperty(window,"app",{value:qe});})(); -/*! - * lunr.Builder - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Index - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Pipeline - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Set - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.TokenSet - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.Vector - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.stemmer - * Copyright (C) 2020 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ -/*! - * lunr.stopWordFilter - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.tokenizer - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.trimmer - * Copyright (C) 2020 Oliver Nightingale - */ -/*! - * lunr.utils - * Copyright (C) 2020 Oliver Nightingale - */ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ +"use strict"; +"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(B,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){D||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!D&&this.active&&n.target.closest(".col-sidebar")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var Z=class extends C{constructor(n){super(n);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let r=Q.getItem(this.key);this.el.open=r?r==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let i=this.summary.querySelector("a");i&&i.addEventListener("click",()=>{location.assign(i.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js new file mode 100644 index 0000000..ec7f311 --- /dev/null +++ b/docs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE5WYTY+bMBCG/wvnVdtE2n7sLU0iNVI2rbLR7qHqgQUnWAWMsEmbVv3vtSEQsIcZc2TmfR9/MB6cfP8bKPZbBQ/B4ld4Ce6CIlSJforSUEom35rom0RlqU795HkcPMzmH//dda7PVfrqukyUcj1FCYurlMHuNotRlilnuXL9TRx3iiqGjDqM+VbszCNgxk0cdfIsYyXgrOOYc50xBTmbOObc8lOieH5yvW0Gc++Y4kfXWocx37e0AkY0Uco1XhH9LEbZM1mIXLJ1WQpgywZpjHPgGTALE6VcwKh1GPMtCv4ozNJ2YaZnGPYrjOf6JR91SB9FRzaEzu/f96H64O61eJMXlYJ5fQWGMudxqfdNlVWkRPm1UFw/gUxYSsHXZ31ex4FNmoK09YEvGlSS6Ivk+VHUp+ZJhQp+P6ASQzd9ynNnx8T0AMju9gUYqOlvnjMdE9MDIDPtC1BQ3U8XkRlxvAocFY08lGEuuQ/WUuJoGYkzKy/ofloiDEiUqF9d3lTjS7U0GM40b8/SgaUUHCmbW5qC+LUPUIm24fxiXxrUpTDdt01Y7nefPszu5xChq4NRVKfwZl53uNvz8DUdnykkJke6fmQc6DVO+e1+bXPsvBevadIgqklRlPqiuAEYXYIkiCwT+chMBkmKRBTHxMoYvGkCaqtIdiuET4SVpmhfQqnvcUsRO6BbxoNhimbLpXrhKqlPdCwBHqCi2Ftx2rIzSx+ZSkRc39lsMCDxoJ76l8wOdLLvmK637q4JT2Pb3iV8CNhptPNePPgM9FIUZc/CVA1u7A2ijfv6d6LMwpT/Yc4GuQpf5vNsjPU882bMRxlzitG+jZX+UuvPdalslCPwJe70Y3ODGkPeFNOZ7U81mt0qfceA6nZKzTqf/wNQeqBoCplaf18zhWsa2Mapb1cxhen0tUFyEsln2dJ73SyPndvmlXdLkRS4P3n2pqus7q4lc4/KME3R6r8SgBtqAxtmKdbLKnS+6yYG+378ByCBGnIpFAAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index b4bab53..9a7923e 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = JSON.parse("{\"kinds\":{\"128\":\"Class\",\"256\":\"Interface\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\",\"4194304\":\"Type alias\"},\"rows\":[{\"id\":0,\"kind\":128,\"name\":\"Bulb\",\"url\":\"classes/Bulb.html\",\"classes\":\"tsd-kind-class\"},{\"id\":1,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Bulb.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":2,\"kind\":2048,\"name\":\"on\",\"url\":\"classes/Bulb.html#on\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Bulb\"},{\"id\":3,\"kind\":2048,\"name\":\"emit\",\"url\":\"classes/Bulb.html#emit\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter\",\"parent\":\"Bulb\"},{\"id\":4,\"kind\":1024,\"name\":\"emitEventsEnabled\",\"url\":\"classes/Bulb.html#emitEventsEnabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":5,\"kind\":1024,\"name\":\"supportsEmeter\",\"url\":\"classes/Bulb.html#supportsEmeter\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":6,\"kind\":1024,\"name\":\"apiModules\",\"url\":\"classes/Bulb.html#apiModules\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":7,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Bulb.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":8,\"kind\":1024,\"name\":\"system\",\"url\":\"classes/Bulb.html#__type.system\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Bulb.__type\"},{\"id\":9,\"kind\":1024,\"name\":\"cloud\",\"url\":\"classes/Bulb.html#__type.cloud\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Bulb.__type\"},{\"id\":10,\"kind\":1024,\"name\":\"schedule\",\"url\":\"classes/Bulb.html#__type.schedule\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Bulb.__type\"},{\"id\":11,\"kind\":1024,\"name\":\"timesetting\",\"url\":\"classes/Bulb.html#__type.timesetting\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Bulb.__type\"},{\"id\":12,\"kind\":1024,\"name\":\"emeter\",\"url\":\"classes/Bulb.html#__type.emeter\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Bulb.__type\"},{\"id\":13,\"kind\":1024,\"name\":\"netif\",\"url\":\"classes/Bulb.html#__type.netif\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Bulb.__type\"},{\"id\":14,\"kind\":1024,\"name\":\"lightingservice\",\"url\":\"classes/Bulb.html#__type.lightingservice\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Bulb.__type\"},{\"id\":15,\"kind\":1024,\"name\":\"cloud\",\"url\":\"classes/Bulb.html#cloud-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":16,\"kind\":1024,\"name\":\"emeter\",\"url\":\"classes/Bulb.html#emeter-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":17,\"kind\":1024,\"name\":\"lighting\",\"url\":\"classes/Bulb.html#lighting\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":18,\"kind\":1024,\"name\":\"schedule\",\"url\":\"classes/Bulb.html#schedule-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":19,\"kind\":1024,\"name\":\"time\",\"url\":\"classes/Bulb.html#time\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":20,\"kind\":262144,\"name\":\"sysInfo\",\"url\":\"classes/Bulb.html#sysInfo\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":21,\"kind\":262144,\"name\":\"description\",\"url\":\"classes/Bulb.html#description\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":22,\"kind\":262144,\"name\":\"deviceType\",\"url\":\"classes/Bulb.html#deviceType\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":23,\"kind\":262144,\"name\":\"supportsBrightness\",\"url\":\"classes/Bulb.html#supportsBrightness\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":24,\"kind\":262144,\"name\":\"supportsColor\",\"url\":\"classes/Bulb.html#supportsColor\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":25,\"kind\":262144,\"name\":\"supportsColorTemperature\",\"url\":\"classes/Bulb.html#supportsColorTemperature\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":26,\"kind\":262144,\"name\":\"colorTemperatureRange\",\"url\":\"classes/Bulb.html#colorTemperatureRange\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":27,\"kind\":2048,\"name\":\"getSysInfo\",\"url\":\"classes/Bulb.html#getSysInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":28,\"kind\":2048,\"name\":\"getInfo\",\"url\":\"classes/Bulb.html#getInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":29,\"kind\":2048,\"name\":\"getPowerState\",\"url\":\"classes/Bulb.html#getPowerState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":30,\"kind\":2048,\"name\":\"setPowerState\",\"url\":\"classes/Bulb.html#setPowerState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":31,\"kind\":2048,\"name\":\"togglePowerState\",\"url\":\"classes/Bulb.html#togglePowerState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Bulb\"},{\"id\":32,\"kind\":1024,\"name\":\"client\",\"url\":\"classes/Bulb.html#client\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":33,\"kind\":1024,\"name\":\"host\",\"url\":\"classes/Bulb.html#host\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":34,\"kind\":1024,\"name\":\"port\",\"url\":\"classes/Bulb.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":35,\"kind\":1024,\"name\":\"netif\",\"url\":\"classes/Bulb.html#netif-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":36,\"kind\":1024,\"name\":\"log\",\"url\":\"classes/Bulb.html#log\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":37,\"kind\":1024,\"name\":\"defaultSendOptions\",\"url\":\"classes/Bulb.html#defaultSendOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":38,\"kind\":262144,\"name\":\"childId\",\"url\":\"classes/Bulb.html#childId\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":39,\"kind\":262144,\"name\":\"alias\",\"url\":\"classes/Bulb.html#alias\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":40,\"kind\":262144,\"name\":\"id\",\"url\":\"classes/Bulb.html#id\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":41,\"kind\":262144,\"name\":\"deviceId\",\"url\":\"classes/Bulb.html#deviceId\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":42,\"kind\":262144,\"name\":\"model\",\"url\":\"classes/Bulb.html#model\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":43,\"kind\":262144,\"name\":\"name\",\"url\":\"classes/Bulb.html#name\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":44,\"kind\":262144,\"name\":\"type\",\"url\":\"classes/Bulb.html#type\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":45,\"kind\":262144,\"name\":\"softwareVersion\",\"url\":\"classes/Bulb.html#softwareVersion\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":46,\"kind\":262144,\"name\":\"hardwareVersion\",\"url\":\"classes/Bulb.html#hardwareVersion\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":47,\"kind\":262144,\"name\":\"mac\",\"url\":\"classes/Bulb.html#mac\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":48,\"kind\":262144,\"name\":\"macNormalized\",\"url\":\"classes/Bulb.html#macNormalized\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":49,\"kind\":2048,\"name\":\"closeConnection\",\"url\":\"classes/Bulb.html#closeConnection\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":50,\"kind\":2048,\"name\":\"send\",\"url\":\"classes/Bulb.html#send\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":51,\"kind\":2048,\"name\":\"sendCommand\",\"url\":\"classes/Bulb.html#sendCommand\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":52,\"kind\":2048,\"name\":\"startPolling\",\"url\":\"classes/Bulb.html#startPolling\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":53,\"kind\":2048,\"name\":\"stopPolling\",\"url\":\"classes/Bulb.html#stopPolling\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":54,\"kind\":2048,\"name\":\"setAlias\",\"url\":\"classes/Bulb.html#setAlias\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":55,\"kind\":2048,\"name\":\"setLocation\",\"url\":\"classes/Bulb.html#setLocation\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":56,\"kind\":2048,\"name\":\"getModel\",\"url\":\"classes/Bulb.html#getModel\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":57,\"kind\":2048,\"name\":\"reboot\",\"url\":\"classes/Bulb.html#reboot\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":58,\"kind\":2048,\"name\":\"reset\",\"url\":\"classes/Bulb.html#reset\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Bulb\"},{\"id\":59,\"kind\":256,\"name\":\"BulbConstructorOptions\",\"url\":\"interfaces/BulbConstructorOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":60,\"kind\":1024,\"name\":\"sysInfo\",\"url\":\"interfaces/BulbConstructorOptions.html#sysInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BulbConstructorOptions\"},{\"id\":61,\"kind\":1024,\"name\":\"client\",\"url\":\"interfaces/BulbConstructorOptions.html#client\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BulbConstructorOptions\"},{\"id\":62,\"kind\":1024,\"name\":\"host\",\"url\":\"interfaces/BulbConstructorOptions.html#host\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BulbConstructorOptions\"},{\"id\":63,\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/BulbConstructorOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BulbConstructorOptions\"},{\"id\":64,\"kind\":1024,\"name\":\"logger\",\"url\":\"interfaces/BulbConstructorOptions.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BulbConstructorOptions\"},{\"id\":65,\"kind\":1024,\"name\":\"defaultSendOptions\",\"url\":\"interfaces/BulbConstructorOptions.html#defaultSendOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"BulbConstructorOptions\"},{\"id\":66,\"kind\":4194304,\"name\":\"BulbSysinfo\",\"url\":\"modules.html#BulbSysinfo\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":67,\"kind\":256,\"name\":\"LightState\",\"url\":\"interfaces/LightState.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":68,\"kind\":1024,\"name\":\"transition_period\",\"url\":\"interfaces/LightState.html#transition_period\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":69,\"kind\":1024,\"name\":\"on_off\",\"url\":\"interfaces/LightState.html#on_off\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":70,\"kind\":1024,\"name\":\"mode\",\"url\":\"interfaces/LightState.html#mode-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":71,\"kind\":1024,\"name\":\"hue\",\"url\":\"interfaces/LightState.html#hue-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":72,\"kind\":1024,\"name\":\"saturation\",\"url\":\"interfaces/LightState.html#saturation-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":73,\"kind\":1024,\"name\":\"brightness\",\"url\":\"interfaces/LightState.html#brightness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":74,\"kind\":1024,\"name\":\"color_temp\",\"url\":\"interfaces/LightState.html#color_temp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":75,\"kind\":1024,\"name\":\"ignore_default\",\"url\":\"interfaces/LightState.html#ignore_default\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":76,\"kind\":1024,\"name\":\"dft_on_state\",\"url\":\"interfaces/LightState.html#dft_on_state\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":77,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/LightState.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"LightState\"},{\"id\":78,\"kind\":1024,\"name\":\"mode\",\"url\":\"interfaces/LightState.html#__type.mode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightState.__type\"},{\"id\":79,\"kind\":1024,\"name\":\"hue\",\"url\":\"interfaces/LightState.html#__type.hue\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightState.__type\"},{\"id\":80,\"kind\":1024,\"name\":\"saturation\",\"url\":\"interfaces/LightState.html#__type.saturation\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightState.__type\"},{\"id\":81,\"kind\":1024,\"name\":\"color_temp\",\"url\":\"interfaces/LightState.html#__type.color_temp-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightState.__type\"},{\"id\":82,\"kind\":1024,\"name\":\"brightness\",\"url\":\"interfaces/LightState.html#__type.brightness-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightState.__type\"},{\"id\":83,\"kind\":256,\"name\":\"LightStateInput\",\"url\":\"interfaces/LightStateInput.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":84,\"kind\":1024,\"name\":\"ignore_default\",\"url\":\"interfaces/LightStateInput.html#ignore_default\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite\",\"parent\":\"LightStateInput\"},{\"id\":85,\"kind\":1024,\"name\":\"transition_period\",\"url\":\"interfaces/LightStateInput.html#transition_period\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"LightStateInput\"},{\"id\":86,\"kind\":1024,\"name\":\"on_off\",\"url\":\"interfaces/LightStateInput.html#on_off\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"LightStateInput\"},{\"id\":87,\"kind\":1024,\"name\":\"mode\",\"url\":\"interfaces/LightStateInput.html#mode-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"LightStateInput\"},{\"id\":88,\"kind\":1024,\"name\":\"hue\",\"url\":\"interfaces/LightStateInput.html#hue-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"LightStateInput\"},{\"id\":89,\"kind\":1024,\"name\":\"saturation\",\"url\":\"interfaces/LightStateInput.html#saturation-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"LightStateInput\"},{\"id\":90,\"kind\":1024,\"name\":\"brightness\",\"url\":\"interfaces/LightStateInput.html#brightness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"LightStateInput\"},{\"id\":91,\"kind\":1024,\"name\":\"color_temp\",\"url\":\"interfaces/LightStateInput.html#color_temp\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"LightStateInput\"},{\"id\":92,\"kind\":1024,\"name\":\"dft_on_state\",\"url\":\"interfaces/LightStateInput.html#dft_on_state\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"LightStateInput\"},{\"id\":93,\"kind\":65536,\"name\":\"__type\",\"url\":\"interfaces/LightStateInput.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-interface\",\"parent\":\"LightStateInput\"},{\"id\":94,\"kind\":1024,\"name\":\"mode\",\"url\":\"interfaces/LightStateInput.html#__type.mode\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightStateInput.__type\"},{\"id\":95,\"kind\":1024,\"name\":\"hue\",\"url\":\"interfaces/LightStateInput.html#__type.hue\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightStateInput.__type\"},{\"id\":96,\"kind\":1024,\"name\":\"saturation\",\"url\":\"interfaces/LightStateInput.html#__type.saturation\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightStateInput.__type\"},{\"id\":97,\"kind\":1024,\"name\":\"color_temp\",\"url\":\"interfaces/LightStateInput.html#__type.color_temp-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightStateInput.__type\"},{\"id\":98,\"kind\":1024,\"name\":\"brightness\",\"url\":\"interfaces/LightStateInput.html#__type.brightness-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"LightStateInput.__type\"},{\"id\":99,\"kind\":4194304,\"name\":\"BulbScheduleRule\",\"url\":\"modules.html#BulbScheduleRule\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":100,\"kind\":256,\"name\":\"BulbScheduleRuleInput\",\"url\":\"interfaces/BulbScheduleRuleInput.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":101,\"kind\":1024,\"name\":\"lightState\",\"url\":\"interfaces/BulbScheduleRuleInput.html#lightState\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BulbScheduleRuleInput\"},{\"id\":102,\"kind\":1024,\"name\":\"start\",\"url\":\"interfaces/BulbScheduleRuleInput.html#start\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BulbScheduleRuleInput\"},{\"id\":103,\"kind\":1024,\"name\":\"daysOfWeek\",\"url\":\"interfaces/BulbScheduleRuleInput.html#daysOfWeek\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BulbScheduleRuleInput\"},{\"id\":104,\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/BulbScheduleRuleInput.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BulbScheduleRuleInput\"},{\"id\":105,\"kind\":1024,\"name\":\"enable\",\"url\":\"interfaces/BulbScheduleRuleInput.html#enable\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"BulbScheduleRuleInput\"},{\"id\":106,\"kind\":128,\"name\":\"Client\",\"url\":\"classes/Client.html\",\"classes\":\"tsd-kind-class\"},{\"id\":107,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Client.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Client\"},{\"id\":108,\"kind\":1024,\"name\":\"defaultSendOptions\",\"url\":\"classes/Client.html#defaultSendOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":109,\"kind\":1024,\"name\":\"log\",\"url\":\"classes/Client.html#log\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":110,\"kind\":1024,\"name\":\"devices\",\"url\":\"classes/Client.html#devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":111,\"kind\":1024,\"name\":\"discoveryTimer\",\"url\":\"classes/Client.html#discoveryTimer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":112,\"kind\":1024,\"name\":\"discoveryPacketSequence\",\"url\":\"classes/Client.html#discoveryPacketSequence\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":113,\"kind\":1024,\"name\":\"maxSocketId\",\"url\":\"classes/Client.html#maxSocketId\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":114,\"kind\":1024,\"name\":\"socket\",\"url\":\"classes/Client.html#socket\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":115,\"kind\":1024,\"name\":\"isSocketBound\",\"url\":\"classes/Client.html#isSocketBound\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":116,\"kind\":2048,\"name\":\"send\",\"url\":\"classes/Client.html#send\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":117,\"kind\":2048,\"name\":\"getSysInfo\",\"url\":\"classes/Client.html#getSysInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":118,\"kind\":2048,\"name\":\"getBulb\",\"url\":\"classes/Client.html#getBulb\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":119,\"kind\":2048,\"name\":\"getPlug\",\"url\":\"classes/Client.html#getPlug\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":120,\"kind\":2048,\"name\":\"getDevice\",\"url\":\"classes/Client.html#getDevice\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":121,\"kind\":2048,\"name\":\"getDeviceFromSysInfo\",\"url\":\"classes/Client.html#getDeviceFromSysInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":122,\"kind\":2048,\"name\":\"getTypeFromSysInfo\",\"url\":\"classes/Client.html#getTypeFromSysInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":123,\"kind\":2048,\"name\":\"startDiscovery\",\"url\":\"classes/Client.html#startDiscovery\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":124,\"kind\":2048,\"name\":\"stopDiscovery\",\"url\":\"classes/Client.html#stopDiscovery\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Client\"},{\"id\":125,\"kind\":256,\"name\":\"ClientConstructorOptions\",\"url\":\"interfaces/ClientConstructorOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":126,\"kind\":1024,\"name\":\"defaultSendOptions\",\"url\":\"interfaces/ClientConstructorOptions.html#defaultSendOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ClientConstructorOptions\"},{\"id\":127,\"kind\":1024,\"name\":\"logLevel\",\"url\":\"interfaces/ClientConstructorOptions.html#logLevel\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ClientConstructorOptions\"},{\"id\":128,\"kind\":1024,\"name\":\"logger\",\"url\":\"interfaces/ClientConstructorOptions.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ClientConstructorOptions\"},{\"id\":129,\"kind\":256,\"name\":\"DiscoveryOptions\",\"url\":\"interfaces/DiscoveryOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":130,\"kind\":1024,\"name\":\"address\",\"url\":\"interfaces/DiscoveryOptions.html#address\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":131,\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DiscoveryOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":132,\"kind\":1024,\"name\":\"broadcast\",\"url\":\"interfaces/DiscoveryOptions.html#broadcast\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":133,\"kind\":1024,\"name\":\"discoveryInterval\",\"url\":\"interfaces/DiscoveryOptions.html#discoveryInterval\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":134,\"kind\":1024,\"name\":\"discoveryTimeout\",\"url\":\"interfaces/DiscoveryOptions.html#discoveryTimeout\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":135,\"kind\":1024,\"name\":\"offlineTolerance\",\"url\":\"interfaces/DiscoveryOptions.html#offlineTolerance\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":136,\"kind\":1024,\"name\":\"deviceTypes\",\"url\":\"interfaces/DiscoveryOptions.html#deviceTypes\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":137,\"kind\":1024,\"name\":\"macAddresses\",\"url\":\"interfaces/DiscoveryOptions.html#macAddresses\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":138,\"kind\":1024,\"name\":\"excludeMacAddresses\",\"url\":\"interfaces/DiscoveryOptions.html#excludeMacAddresses\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":139,\"kind\":2048,\"name\":\"filterCallback\",\"url\":\"interfaces/DiscoveryOptions.html#filterCallback\",\"classes\":\"tsd-kind-method tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":140,\"kind\":1024,\"name\":\"breakoutChildren\",\"url\":\"interfaces/DiscoveryOptions.html#breakoutChildren\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":141,\"kind\":1024,\"name\":\"devicesUseDiscoveryPort\",\"url\":\"interfaces/DiscoveryOptions.html#devicesUseDiscoveryPort\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":142,\"kind\":1024,\"name\":\"deviceOptions\",\"url\":\"interfaces/DiscoveryOptions.html#deviceOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":143,\"kind\":1024,\"name\":\"devices\",\"url\":\"interfaces/DiscoveryOptions.html#devices\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DiscoveryOptions\"},{\"id\":144,\"kind\":128,\"name\":\"Device\",\"url\":\"classes/Device.html\",\"classes\":\"tsd-kind-class\"},{\"id\":145,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Device.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Device\"},{\"id\":146,\"kind\":1024,\"name\":\"client\",\"url\":\"classes/Device.html#client\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":147,\"kind\":1024,\"name\":\"host\",\"url\":\"classes/Device.html#host\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":148,\"kind\":1024,\"name\":\"port\",\"url\":\"classes/Device.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":149,\"kind\":1024,\"name\":\"netif\",\"url\":\"classes/Device.html#netif\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":150,\"kind\":1024,\"name\":\"log\",\"url\":\"classes/Device.html#log\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":151,\"kind\":1024,\"name\":\"defaultSendOptions\",\"url\":\"classes/Device.html#defaultSendOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":152,\"kind\":1024,\"name\":\"apiModules\",\"url\":\"classes/Device.html#apiModules\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":153,\"kind\":1024,\"name\":\"supportsEmeter\",\"url\":\"classes/Device.html#supportsEmeter\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":154,\"kind\":262144,\"name\":\"childId\",\"url\":\"classes/Device.html#childId\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":155,\"kind\":262144,\"name\":\"sysInfo\",\"url\":\"classes/Device.html#sysInfo\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":156,\"kind\":262144,\"name\":\"alias\",\"url\":\"classes/Device.html#alias\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":157,\"kind\":262144,\"name\":\"id\",\"url\":\"classes/Device.html#id\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":158,\"kind\":262144,\"name\":\"deviceId\",\"url\":\"classes/Device.html#deviceId\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":159,\"kind\":262144,\"name\":\"description\",\"url\":\"classes/Device.html#description\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":160,\"kind\":262144,\"name\":\"model\",\"url\":\"classes/Device.html#model\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":161,\"kind\":262144,\"name\":\"name\",\"url\":\"classes/Device.html#name\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":162,\"kind\":262144,\"name\":\"type\",\"url\":\"classes/Device.html#type\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":163,\"kind\":262144,\"name\":\"deviceType\",\"url\":\"classes/Device.html#deviceType\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":164,\"kind\":262144,\"name\":\"softwareVersion\",\"url\":\"classes/Device.html#softwareVersion\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":165,\"kind\":262144,\"name\":\"hardwareVersion\",\"url\":\"classes/Device.html#hardwareVersion\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":166,\"kind\":262144,\"name\":\"mac\",\"url\":\"classes/Device.html#mac\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":167,\"kind\":262144,\"name\":\"macNormalized\",\"url\":\"classes/Device.html#macNormalized\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":168,\"kind\":2048,\"name\":\"closeConnection\",\"url\":\"classes/Device.html#closeConnection\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":169,\"kind\":2048,\"name\":\"send\",\"url\":\"classes/Device.html#send\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":170,\"kind\":2048,\"name\":\"sendCommand\",\"url\":\"classes/Device.html#sendCommand\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":171,\"kind\":2048,\"name\":\"startPolling\",\"url\":\"classes/Device.html#startPolling\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":172,\"kind\":2048,\"name\":\"stopPolling\",\"url\":\"classes/Device.html#stopPolling\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":173,\"kind\":2048,\"name\":\"getSysInfo\",\"url\":\"classes/Device.html#getSysInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":174,\"kind\":2048,\"name\":\"setAlias\",\"url\":\"classes/Device.html#setAlias\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":175,\"kind\":2048,\"name\":\"setLocation\",\"url\":\"classes/Device.html#setLocation\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":176,\"kind\":2048,\"name\":\"getModel\",\"url\":\"classes/Device.html#getModel\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":177,\"kind\":2048,\"name\":\"reboot\",\"url\":\"classes/Device.html#reboot\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":178,\"kind\":2048,\"name\":\"reset\",\"url\":\"classes/Device.html#reset\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":179,\"kind\":2048,\"name\":\"getInfo\",\"url\":\"classes/Device.html#getInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Device\"},{\"id\":180,\"kind\":256,\"name\":\"ApiModuleNamespace\",\"url\":\"interfaces/ApiModuleNamespace.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":181,\"kind\":1024,\"name\":\"system\",\"url\":\"interfaces/ApiModuleNamespace.html#system\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ApiModuleNamespace\"},{\"id\":182,\"kind\":1024,\"name\":\"cloud\",\"url\":\"interfaces/ApiModuleNamespace.html#cloud\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ApiModuleNamespace\"},{\"id\":183,\"kind\":1024,\"name\":\"schedule\",\"url\":\"interfaces/ApiModuleNamespace.html#schedule\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ApiModuleNamespace\"},{\"id\":184,\"kind\":1024,\"name\":\"timesetting\",\"url\":\"interfaces/ApiModuleNamespace.html#timesetting\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ApiModuleNamespace\"},{\"id\":185,\"kind\":1024,\"name\":\"emeter\",\"url\":\"interfaces/ApiModuleNamespace.html#emeter\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ApiModuleNamespace\"},{\"id\":186,\"kind\":1024,\"name\":\"netif\",\"url\":\"interfaces/ApiModuleNamespace.html#netif\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ApiModuleNamespace\"},{\"id\":187,\"kind\":1024,\"name\":\"lightingservice\",\"url\":\"interfaces/ApiModuleNamespace.html#lightingservice\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"ApiModuleNamespace\"},{\"id\":188,\"kind\":256,\"name\":\"DeviceConstructorOptions\",\"url\":\"interfaces/DeviceConstructorOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":189,\"kind\":1024,\"name\":\"client\",\"url\":\"interfaces/DeviceConstructorOptions.html#client\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DeviceConstructorOptions\"},{\"id\":190,\"kind\":1024,\"name\":\"host\",\"url\":\"interfaces/DeviceConstructorOptions.html#host\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DeviceConstructorOptions\"},{\"id\":191,\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/DeviceConstructorOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DeviceConstructorOptions\"},{\"id\":192,\"kind\":1024,\"name\":\"logger\",\"url\":\"interfaces/DeviceConstructorOptions.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DeviceConstructorOptions\"},{\"id\":193,\"kind\":1024,\"name\":\"defaultSendOptions\",\"url\":\"interfaces/DeviceConstructorOptions.html#defaultSendOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DeviceConstructorOptions\"},{\"id\":194,\"kind\":4194304,\"name\":\"Sysinfo\",\"url\":\"modules.html#Sysinfo\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":195,\"kind\":128,\"name\":\"Plug\",\"url\":\"classes/Plug.html\",\"classes\":\"tsd-kind-class\"},{\"id\":196,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/Plug.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":197,\"kind\":1024,\"name\":\"inUseThreshold\",\"url\":\"classes/Plug.html#inUseThreshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":198,\"kind\":1024,\"name\":\"emitEventsEnabled\",\"url\":\"classes/Plug.html#emitEventsEnabled\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":199,\"kind\":1024,\"name\":\"apiModules\",\"url\":\"classes/Plug.html#apiModules\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":200,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/Plug.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":201,\"kind\":1024,\"name\":\"system\",\"url\":\"classes/Plug.html#__type.system\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Plug.__type\"},{\"id\":202,\"kind\":1024,\"name\":\"cloud\",\"url\":\"classes/Plug.html#__type.cloud\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Plug.__type\"},{\"id\":203,\"kind\":1024,\"name\":\"schedule\",\"url\":\"classes/Plug.html#__type.schedule\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Plug.__type\"},{\"id\":204,\"kind\":1024,\"name\":\"timesetting\",\"url\":\"classes/Plug.html#__type.timesetting\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Plug.__type\"},{\"id\":205,\"kind\":1024,\"name\":\"emeter\",\"url\":\"classes/Plug.html#__type.emeter\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Plug.__type\"},{\"id\":206,\"kind\":1024,\"name\":\"netif\",\"url\":\"classes/Plug.html#__type.netif\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Plug.__type\"},{\"id\":207,\"kind\":1024,\"name\":\"lightingservice\",\"url\":\"classes/Plug.html#__type.lightingservice\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Plug.__type\"},{\"id\":208,\"kind\":1024,\"name\":\"away\",\"url\":\"classes/Plug.html#away\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":209,\"kind\":1024,\"name\":\"cloud\",\"url\":\"classes/Plug.html#cloud-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":210,\"kind\":1024,\"name\":\"dimmer\",\"url\":\"classes/Plug.html#dimmer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":211,\"kind\":1024,\"name\":\"emeter\",\"url\":\"classes/Plug.html#emeter-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":212,\"kind\":1024,\"name\":\"schedule\",\"url\":\"classes/Plug.html#schedule-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":213,\"kind\":1024,\"name\":\"time\",\"url\":\"classes/Plug.html#time\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":214,\"kind\":1024,\"name\":\"timer\",\"url\":\"classes/Plug.html#timer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":215,\"kind\":262144,\"name\":\"sysInfo\",\"url\":\"classes/Plug.html#sysInfo\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":216,\"kind\":262144,\"name\":\"children\",\"url\":\"classes/Plug.html#children\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":217,\"kind\":262144,\"name\":\"childId\",\"url\":\"classes/Plug.html#childId\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":218,\"kind\":262144,\"name\":\"alias\",\"url\":\"classes/Plug.html#alias\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":219,\"kind\":262144,\"name\":\"description\",\"url\":\"classes/Plug.html#description\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":220,\"kind\":262144,\"name\":\"deviceType\",\"url\":\"classes/Plug.html#deviceType\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":221,\"kind\":262144,\"name\":\"id\",\"url\":\"classes/Plug.html#id\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":222,\"kind\":262144,\"name\":\"inUse\",\"url\":\"classes/Plug.html#inUse\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":223,\"kind\":262144,\"name\":\"relayState\",\"url\":\"classes/Plug.html#relayState\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":224,\"kind\":262144,\"name\":\"supportsDimmer\",\"url\":\"classes/Plug.html#supportsDimmer\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":225,\"kind\":262144,\"name\":\"supportsEmeter\",\"url\":\"classes/Plug.html#supportsEmeter\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":226,\"kind\":2048,\"name\":\"getSysInfo\",\"url\":\"classes/Plug.html#getSysInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":227,\"kind\":2048,\"name\":\"getInfo\",\"url\":\"classes/Plug.html#getInfo\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"Plug\"},{\"id\":228,\"kind\":2048,\"name\":\"getInUse\",\"url\":\"classes/Plug.html#getInUse\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":229,\"kind\":2048,\"name\":\"getLedState\",\"url\":\"classes/Plug.html#getLedState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":230,\"kind\":2048,\"name\":\"setLedState\",\"url\":\"classes/Plug.html#setLedState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":231,\"kind\":2048,\"name\":\"getPowerState\",\"url\":\"classes/Plug.html#getPowerState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":232,\"kind\":2048,\"name\":\"setPowerState\",\"url\":\"classes/Plug.html#setPowerState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":233,\"kind\":2048,\"name\":\"togglePowerState\",\"url\":\"classes/Plug.html#togglePowerState\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":234,\"kind\":2048,\"name\":\"blink\",\"url\":\"classes/Plug.html#blink\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"Plug\"},{\"id\":235,\"kind\":1024,\"name\":\"client\",\"url\":\"classes/Plug.html#client\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":236,\"kind\":1024,\"name\":\"host\",\"url\":\"classes/Plug.html#host\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":237,\"kind\":1024,\"name\":\"port\",\"url\":\"classes/Plug.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":238,\"kind\":1024,\"name\":\"netif\",\"url\":\"classes/Plug.html#netif-1\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":239,\"kind\":1024,\"name\":\"log\",\"url\":\"classes/Plug.html#log\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":240,\"kind\":1024,\"name\":\"defaultSendOptions\",\"url\":\"classes/Plug.html#defaultSendOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":241,\"kind\":262144,\"name\":\"deviceId\",\"url\":\"classes/Plug.html#deviceId\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":242,\"kind\":262144,\"name\":\"model\",\"url\":\"classes/Plug.html#model\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":243,\"kind\":262144,\"name\":\"name\",\"url\":\"classes/Plug.html#name\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":244,\"kind\":262144,\"name\":\"type\",\"url\":\"classes/Plug.html#type\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":245,\"kind\":262144,\"name\":\"softwareVersion\",\"url\":\"classes/Plug.html#softwareVersion\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":246,\"kind\":262144,\"name\":\"hardwareVersion\",\"url\":\"classes/Plug.html#hardwareVersion\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":247,\"kind\":262144,\"name\":\"mac\",\"url\":\"classes/Plug.html#mac\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":248,\"kind\":262144,\"name\":\"macNormalized\",\"url\":\"classes/Plug.html#macNormalized\",\"classes\":\"tsd-kind-get-signature tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":249,\"kind\":2048,\"name\":\"closeConnection\",\"url\":\"classes/Plug.html#closeConnection\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":250,\"kind\":2048,\"name\":\"send\",\"url\":\"classes/Plug.html#send\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":251,\"kind\":2048,\"name\":\"sendCommand\",\"url\":\"classes/Plug.html#sendCommand\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":252,\"kind\":2048,\"name\":\"startPolling\",\"url\":\"classes/Plug.html#startPolling\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":253,\"kind\":2048,\"name\":\"stopPolling\",\"url\":\"classes/Plug.html#stopPolling\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":254,\"kind\":2048,\"name\":\"setAlias\",\"url\":\"classes/Plug.html#setAlias\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":255,\"kind\":2048,\"name\":\"setLocation\",\"url\":\"classes/Plug.html#setLocation\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":256,\"kind\":2048,\"name\":\"getModel\",\"url\":\"classes/Plug.html#getModel\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":257,\"kind\":2048,\"name\":\"reboot\",\"url\":\"classes/Plug.html#reboot\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":258,\"kind\":2048,\"name\":\"reset\",\"url\":\"classes/Plug.html#reset\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-inherited\",\"parent\":\"Plug\"},{\"id\":259,\"kind\":256,\"name\":\"PlugConstructorOptions\",\"url\":\"interfaces/PlugConstructorOptions.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":260,\"kind\":1024,\"name\":\"sysInfo\",\"url\":\"interfaces/PlugConstructorOptions.html#sysInfo\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugConstructorOptions\"},{\"id\":261,\"kind\":1024,\"name\":\"inUseThreshold\",\"url\":\"interfaces/PlugConstructorOptions.html#inUseThreshold\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugConstructorOptions\"},{\"id\":262,\"kind\":1024,\"name\":\"childId\",\"url\":\"interfaces/PlugConstructorOptions.html#childId\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugConstructorOptions\"},{\"id\":263,\"kind\":1024,\"name\":\"client\",\"url\":\"interfaces/PlugConstructorOptions.html#client\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"PlugConstructorOptions\"},{\"id\":264,\"kind\":1024,\"name\":\"host\",\"url\":\"interfaces/PlugConstructorOptions.html#host\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"PlugConstructorOptions\"},{\"id\":265,\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/PlugConstructorOptions.html#port\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"PlugConstructorOptions\"},{\"id\":266,\"kind\":1024,\"name\":\"logger\",\"url\":\"interfaces/PlugConstructorOptions.html#logger\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"PlugConstructorOptions\"},{\"id\":267,\"kind\":1024,\"name\":\"defaultSendOptions\",\"url\":\"interfaces/PlugConstructorOptions.html#defaultSendOptions\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited\",\"parent\":\"PlugConstructorOptions\"},{\"id\":268,\"kind\":4194304,\"name\":\"PlugSysinfo\",\"url\":\"modules.html#PlugSysinfo\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":269,\"kind\":4194304,\"name\":\"AwayRule\",\"url\":\"modules.html#AwayRule\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":270,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#AwayRule.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"AwayRule\"},{\"id\":271,\"kind\":1024,\"name\":\"name\",\"url\":\"modules.html#AwayRule.__type.name\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"AwayRule.__type\"},{\"id\":272,\"kind\":1024,\"name\":\"enable\",\"url\":\"modules.html#AwayRule.__type.enable\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"AwayRule.__type\"},{\"id\":273,\"kind\":1024,\"name\":\"frequency\",\"url\":\"modules.html#AwayRule.__type.frequency\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"AwayRule.__type\"},{\"id\":274,\"kind\":1024,\"name\":\"delay\",\"url\":\"modules.html#AwayRule.__type.delay\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"AwayRule.__type\"},{\"id\":275,\"kind\":256,\"name\":\"AwayRuleInput\",\"url\":\"interfaces/AwayRuleInput.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":276,\"kind\":1024,\"name\":\"start\",\"url\":\"interfaces/AwayRuleInput.html#start\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"AwayRuleInput\"},{\"id\":277,\"kind\":1024,\"name\":\"end\",\"url\":\"interfaces/AwayRuleInput.html#end\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"AwayRuleInput\"},{\"id\":278,\"kind\":1024,\"name\":\"daysOfWeek\",\"url\":\"interfaces/AwayRuleInput.html#daysOfWeek\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"AwayRuleInput\"},{\"id\":279,\"kind\":1024,\"name\":\"frequency\",\"url\":\"interfaces/AwayRuleInput.html#frequency\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"AwayRuleInput\"},{\"id\":280,\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/AwayRuleInput.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"AwayRuleInput\"},{\"id\":281,\"kind\":1024,\"name\":\"enable\",\"url\":\"interfaces/AwayRuleInput.html#enable\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"AwayRuleInput\"},{\"id\":282,\"kind\":256,\"name\":\"DimmerActionInput\",\"url\":\"interfaces/DimmerActionInput.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":283,\"kind\":1024,\"name\":\"mode\",\"url\":\"interfaces/DimmerActionInput.html#mode\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DimmerActionInput\"},{\"id\":284,\"kind\":1024,\"name\":\"index\",\"url\":\"interfaces/DimmerActionInput.html#index\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DimmerActionInput\"},{\"id\":285,\"kind\":256,\"name\":\"DimmerTransitionInput\",\"url\":\"interfaces/DimmerTransitionInput.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":286,\"kind\":1024,\"name\":\"brightness\",\"url\":\"interfaces/DimmerTransitionInput.html#brightness\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DimmerTransitionInput\"},{\"id\":287,\"kind\":1024,\"name\":\"mode\",\"url\":\"interfaces/DimmerTransitionInput.html#mode\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DimmerTransitionInput\"},{\"id\":288,\"kind\":1024,\"name\":\"duration\",\"url\":\"interfaces/DimmerTransitionInput.html#duration\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"DimmerTransitionInput\"},{\"id\":289,\"kind\":4194304,\"name\":\"PlugScheduleRule\",\"url\":\"modules.html#PlugScheduleRule\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":290,\"kind\":256,\"name\":\"PlugScheduleRuleInput\",\"url\":\"interfaces/PlugScheduleRuleInput.html\",\"classes\":\"tsd-kind-interface\"},{\"id\":291,\"kind\":1024,\"name\":\"powerState\",\"url\":\"interfaces/PlugScheduleRuleInput.html#powerState\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugScheduleRuleInput\"},{\"id\":292,\"kind\":1024,\"name\":\"dimmer\",\"url\":\"interfaces/PlugScheduleRuleInput.html#dimmer\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugScheduleRuleInput\"},{\"id\":293,\"kind\":1024,\"name\":\"start\",\"url\":\"interfaces/PlugScheduleRuleInput.html#start\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugScheduleRuleInput\"},{\"id\":294,\"kind\":1024,\"name\":\"daysOfWeek\",\"url\":\"interfaces/PlugScheduleRuleInput.html#daysOfWeek\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugScheduleRuleInput\"},{\"id\":295,\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/PlugScheduleRuleInput.html#name\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugScheduleRuleInput\"},{\"id\":296,\"kind\":1024,\"name\":\"enable\",\"url\":\"interfaces/PlugScheduleRuleInput.html#enable\",\"classes\":\"tsd-kind-property tsd-parent-kind-interface\",\"parent\":\"PlugScheduleRuleInput\"},{\"id\":297,\"kind\":4194304,\"name\":\"Realtime\",\"url\":\"modules.html#Realtime\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":298,\"kind\":4194304,\"name\":\"RealtimeNormalized\",\"url\":\"modules.html#RealtimeNormalized\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":299,\"kind\":4194304,\"name\":\"RealtimeV1\",\"url\":\"modules.html#RealtimeV1\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":300,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#RealtimeV1.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"RealtimeV1\"},{\"id\":301,\"kind\":1024,\"name\":\"current\",\"url\":\"modules.html#RealtimeV1.__type.current\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"RealtimeV1.__type\"},{\"id\":302,\"kind\":1024,\"name\":\"power\",\"url\":\"modules.html#RealtimeV1.__type.power\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"RealtimeV1.__type\"},{\"id\":303,\"kind\":1024,\"name\":\"total\",\"url\":\"modules.html#RealtimeV1.__type.total\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"RealtimeV1.__type\"},{\"id\":304,\"kind\":1024,\"name\":\"voltage\",\"url\":\"modules.html#RealtimeV1.__type.voltage\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"RealtimeV1.__type\"},{\"id\":305,\"kind\":4194304,\"name\":\"RealtimeV2\",\"url\":\"modules.html#RealtimeV2\",\"classes\":\"tsd-kind-type-alias\"},{\"id\":306,\"kind\":65536,\"name\":\"__type\",\"url\":\"modules.html#RealtimeV2.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"RealtimeV2\"},{\"id\":307,\"kind\":1024,\"name\":\"current_ma\",\"url\":\"modules.html#RealtimeV2.__type.current_ma\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"RealtimeV2.__type\"},{\"id\":308,\"kind\":1024,\"name\":\"power_mw\",\"url\":\"modules.html#RealtimeV2.__type.power_mw\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"RealtimeV2.__type\"},{\"id\":309,\"kind\":1024,\"name\":\"total_wh\",\"url\":\"modules.html#RealtimeV2.__type.total_wh\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"RealtimeV2.__type\"},{\"id\":310,\"kind\":1024,\"name\":\"voltage_mv\",\"url\":\"modules.html#RealtimeV2.__type.voltage_mv\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"RealtimeV2.__type\"},{\"id\":311,\"kind\":128,\"name\":\"ResponseError\",\"url\":\"classes/ResponseError.html\",\"classes\":\"tsd-kind-class\"},{\"id\":312,\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/ResponseError.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-class\",\"parent\":\"ResponseError\"},{\"id\":313,\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/ResponseError.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"ResponseError\"},{\"id\":314,\"kind\":1024,\"name\":\"stack\",\"url\":\"classes/ResponseError.html#stack\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite\",\"parent\":\"ResponseError\"},{\"id\":315,\"kind\":1024,\"name\":\"response\",\"url\":\"classes/ResponseError.html#response\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ResponseError\"},{\"id\":316,\"kind\":1024,\"name\":\"command\",\"url\":\"classes/ResponseError.html#command\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ResponseError\"},{\"id\":317,\"kind\":1024,\"name\":\"modules\",\"url\":\"classes/ResponseError.html#modules\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ResponseError\"},{\"id\":318,\"kind\":1024,\"name\":\"methods\",\"url\":\"classes/ResponseError.html#methods\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"ResponseError\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"parent\"],\"fieldVectors\":[[\"name/0\",[0,18.075]],[\"parent/0\",[]],[\"name/1\",[1,40.636]],[\"parent/1\",[0,1.739]],[\"name/2\",[2,53.629]],[\"parent/2\",[0,1.739]],[\"name/3\",[3,53.629]],[\"parent/3\",[0,1.739]],[\"name/4\",[4,48.52]],[\"parent/4\",[0,1.739]],[\"name/5\",[5,45.156]],[\"parent/5\",[0,1.739]],[\"name/6\",[6,45.156]],[\"parent/6\",[0,1.739]],[\"name/7\",[7,36.283]],[\"parent/7\",[0,1.739]],[\"name/8\",[8,45.156]],[\"parent/8\",[9,3.611]],[\"name/9\",[10,40.636]],[\"parent/9\",[9,3.611]],[\"name/10\",[11,40.636]],[\"parent/10\",[9,3.611]],[\"name/11\",[12,45.156]],[\"parent/11\",[9,3.611]],[\"name/12\",[13,40.636]],[\"parent/12\",[9,3.611]],[\"name/13\",[14,38.965]],[\"parent/13\",[9,3.611]],[\"name/14\",[15,45.156]],[\"parent/14\",[9,3.611]],[\"name/15\",[10,40.636]],[\"parent/15\",[0,1.739]],[\"name/16\",[13,40.636]],[\"parent/16\",[0,1.739]],[\"name/17\",[16,53.629]],[\"parent/17\",[0,1.739]],[\"name/18\",[11,40.636]],[\"parent/18\",[0,1.739]],[\"name/19\",[17,48.52]],[\"parent/19\",[0,1.739]],[\"name/20\",[18,38.965]],[\"parent/20\",[0,1.739]],[\"name/21\",[19,45.156]],[\"parent/21\",[0,1.739]],[\"name/22\",[20,45.156]],[\"parent/22\",[0,1.739]],[\"name/23\",[21,53.629]],[\"parent/23\",[0,1.739]],[\"name/24\",[22,53.629]],[\"parent/24\",[0,1.739]],[\"name/25\",[23,53.629]],[\"parent/25\",[0,1.739]],[\"name/26\",[24,53.629]],[\"parent/26\",[0,1.739]],[\"name/27\",[25,42.642]],[\"parent/27\",[0,1.739]],[\"name/28\",[26,45.156]],[\"parent/28\",[0,1.739]],[\"name/29\",[27,48.52]],[\"parent/29\",[0,1.739]],[\"name/30\",[28,48.52]],[\"parent/30\",[0,1.739]],[\"name/31\",[29,48.52]],[\"parent/31\",[0,1.739]],[\"name/32\",[30,25.296]],[\"parent/32\",[0,1.739]],[\"name/33\",[31,38.965]],[\"parent/33\",[0,1.739]],[\"name/34\",[32,37.534]],[\"parent/34\",[0,1.739]],[\"name/35\",[14,38.965]],[\"parent/35\",[0,1.739]],[\"name/36\",[33,42.642]],[\"parent/36\",[0,1.739]],[\"name/37\",[34,36.283]],[\"parent/37\",[0,1.739]],[\"name/38\",[35,42.642]],[\"parent/38\",[0,1.739]],[\"name/39\",[36,45.156]],[\"parent/39\",[0,1.739]],[\"name/40\",[37,45.156]],[\"parent/40\",[0,1.739]],[\"name/41\",[38,45.156]],[\"parent/41\",[0,1.739]],[\"name/42\",[39,45.156]],[\"parent/42\",[0,1.739]],[\"name/43\",[40,37.534]],[\"parent/43\",[0,1.739]],[\"name/44\",[41,45.156]],[\"parent/44\",[0,1.739]],[\"name/45\",[42,45.156]],[\"parent/45\",[0,1.739]],[\"name/46\",[43,45.156]],[\"parent/46\",[0,1.739]],[\"name/47\",[44,45.156]],[\"parent/47\",[0,1.739]],[\"name/48\",[45,45.156]],[\"parent/48\",[0,1.739]],[\"name/49\",[46,45.156]],[\"parent/49\",[0,1.739]],[\"name/50\",[47,42.642]],[\"parent/50\",[0,1.739]],[\"name/51\",[48,45.156]],[\"parent/51\",[0,1.739]],[\"name/52\",[49,45.156]],[\"parent/52\",[0,1.739]],[\"name/53\",[50,45.156]],[\"parent/53\",[0,1.739]],[\"name/54\",[51,45.156]],[\"parent/54\",[0,1.739]],[\"name/55\",[52,45.156]],[\"parent/55\",[0,1.739]],[\"name/56\",[53,45.156]],[\"parent/56\",[0,1.739]],[\"name/57\",[54,45.156]],[\"parent/57\",[0,1.739]],[\"name/58\",[55,45.156]],[\"parent/58\",[0,1.739]],[\"name/59\",[56,37.534]],[\"parent/59\",[]],[\"name/60\",[18,38.965]],[\"parent/60\",[56,3.611]],[\"name/61\",[30,25.296]],[\"parent/61\",[56,3.611]],[\"name/62\",[31,38.965]],[\"parent/62\",[56,3.611]],[\"name/63\",[32,37.534]],[\"parent/63\",[56,3.611]],[\"name/64\",[57,42.642]],[\"parent/64\",[56,3.611]],[\"name/65\",[34,36.283]],[\"parent/65\",[56,3.611]],[\"name/66\",[58,53.629]],[\"parent/66\",[]],[\"name/67\",[59,32.426]],[\"parent/67\",[]],[\"name/68\",[60,48.52]],[\"parent/68\",[59,3.12]],[\"name/69\",[61,48.52]],[\"parent/69\",[59,3.12]],[\"name/70\",[62,38.965]],[\"parent/70\",[59,3.12]],[\"name/71\",[63,42.642]],[\"parent/71\",[59,3.12]],[\"name/72\",[64,42.642]],[\"parent/72\",[59,3.12]],[\"name/73\",[65,40.636]],[\"parent/73\",[59,3.12]],[\"name/74\",[66,42.642]],[\"parent/74\",[59,3.12]],[\"name/75\",[67,48.52]],[\"parent/75\",[59,3.12]],[\"name/76\",[68,48.52]],[\"parent/76\",[59,3.12]],[\"name/77\",[7,36.283]],[\"parent/77\",[59,3.12]],[\"name/78\",[62,38.965]],[\"parent/78\",[69,3.91]],[\"name/79\",[63,42.642]],[\"parent/79\",[69,3.91]],[\"name/80\",[64,42.642]],[\"parent/80\",[69,3.91]],[\"name/81\",[66,42.642]],[\"parent/81\",[69,3.91]],[\"name/82\",[65,40.636]],[\"parent/82\",[69,3.91]],[\"name/83\",[70,33.26]],[\"parent/83\",[]],[\"name/84\",[67,48.52]],[\"parent/84\",[70,3.2]],[\"name/85\",[60,48.52]],[\"parent/85\",[70,3.2]],[\"name/86\",[61,48.52]],[\"parent/86\",[70,3.2]],[\"name/87\",[62,38.965]],[\"parent/87\",[70,3.2]],[\"name/88\",[63,42.642]],[\"parent/88\",[70,3.2]],[\"name/89\",[64,42.642]],[\"parent/89\",[70,3.2]],[\"name/90\",[65,40.636]],[\"parent/90\",[70,3.2]],[\"name/91\",[66,42.642]],[\"parent/91\",[70,3.2]],[\"name/92\",[68,48.52]],[\"parent/92\",[70,3.2]],[\"name/93\",[7,36.283]],[\"parent/93\",[70,3.2]],[\"name/94\",[62,38.965]],[\"parent/94\",[71,3.91]],[\"name/95\",[63,42.642]],[\"parent/95\",[71,3.91]],[\"name/96\",[64,42.642]],[\"parent/96\",[71,3.91]],[\"name/97\",[66,42.642]],[\"parent/97\",[71,3.91]],[\"name/98\",[65,40.636]],[\"parent/98\",[71,3.91]],[\"name/99\",[72,53.629]],[\"parent/99\",[]],[\"name/100\",[73,38.965]],[\"parent/100\",[]],[\"name/101\",[59,32.426]],[\"parent/101\",[73,3.749]],[\"name/102\",[74,45.156]],[\"parent/102\",[73,3.749]],[\"name/103\",[75,45.156]],[\"parent/103\",[73,3.749]],[\"name/104\",[40,37.534]],[\"parent/104\",[73,3.749]],[\"name/105\",[76,42.642]],[\"parent/105\",[73,3.749]],[\"name/106\",[30,25.296]],[\"parent/106\",[]],[\"name/107\",[1,40.636]],[\"parent/107\",[30,2.434]],[\"name/108\",[34,36.283]],[\"parent/108\",[30,2.434]],[\"name/109\",[33,42.642]],[\"parent/109\",[30,2.434]],[\"name/110\",[77,48.52]],[\"parent/110\",[30,2.434]],[\"name/111\",[78,53.629]],[\"parent/111\",[30,2.434]],[\"name/112\",[79,53.629]],[\"parent/112\",[30,2.434]],[\"name/113\",[80,53.629]],[\"parent/113\",[30,2.434]],[\"name/114\",[81,53.629]],[\"parent/114\",[30,2.434]],[\"name/115\",[82,53.629]],[\"parent/115\",[30,2.434]],[\"name/116\",[47,42.642]],[\"parent/116\",[30,2.434]],[\"name/117\",[25,42.642]],[\"parent/117\",[30,2.434]],[\"name/118\",[83,53.629]],[\"parent/118\",[30,2.434]],[\"name/119\",[84,53.629]],[\"parent/119\",[30,2.434]],[\"name/120\",[85,53.629]],[\"parent/120\",[30,2.434]],[\"name/121\",[86,53.629]],[\"parent/121\",[30,2.434]],[\"name/122\",[87,53.629]],[\"parent/122\",[30,2.434]],[\"name/123\",[88,53.629]],[\"parent/123\",[30,2.434]],[\"name/124\",[89,53.629]],[\"parent/124\",[30,2.434]],[\"name/125\",[90,42.642]],[\"parent/125\",[]],[\"name/126\",[34,36.283]],[\"parent/126\",[90,4.103]],[\"name/127\",[91,53.629]],[\"parent/127\",[90,4.103]],[\"name/128\",[57,42.642]],[\"parent/128\",[90,4.103]],[\"name/129\",[92,30.275]],[\"parent/129\",[]],[\"name/130\",[93,53.629]],[\"parent/130\",[92,2.913]],[\"name/131\",[32,37.534]],[\"parent/131\",[92,2.913]],[\"name/132\",[94,53.629]],[\"parent/132\",[92,2.913]],[\"name/133\",[95,53.629]],[\"parent/133\",[92,2.913]],[\"name/134\",[96,53.629]],[\"parent/134\",[92,2.913]],[\"name/135\",[97,53.629]],[\"parent/135\",[92,2.913]],[\"name/136\",[98,53.629]],[\"parent/136\",[92,2.913]],[\"name/137\",[99,53.629]],[\"parent/137\",[92,2.913]],[\"name/138\",[100,53.629]],[\"parent/138\",[92,2.913]],[\"name/139\",[101,53.629]],[\"parent/139\",[92,2.913]],[\"name/140\",[102,53.629]],[\"parent/140\",[92,2.913]],[\"name/141\",[103,53.629]],[\"parent/141\",[92,2.913]],[\"name/142\",[104,53.629]],[\"parent/142\",[92,2.913]],[\"name/143\",[77,48.52]],[\"parent/143\",[92,2.913]],[\"name/144\",[105,21.71]],[\"parent/144\",[]],[\"name/145\",[1,40.636]],[\"parent/145\",[105,2.089]],[\"name/146\",[30,25.296]],[\"parent/146\",[105,2.089]],[\"name/147\",[31,38.965]],[\"parent/147\",[105,2.089]],[\"name/148\",[32,37.534]],[\"parent/148\",[105,2.089]],[\"name/149\",[14,38.965]],[\"parent/149\",[105,2.089]],[\"name/150\",[33,42.642]],[\"parent/150\",[105,2.089]],[\"name/151\",[34,36.283]],[\"parent/151\",[105,2.089]],[\"name/152\",[6,45.156]],[\"parent/152\",[105,2.089]],[\"name/153\",[5,45.156]],[\"parent/153\",[105,2.089]],[\"name/154\",[35,42.642]],[\"parent/154\",[105,2.089]],[\"name/155\",[18,38.965]],[\"parent/155\",[105,2.089]],[\"name/156\",[36,45.156]],[\"parent/156\",[105,2.089]],[\"name/157\",[37,45.156]],[\"parent/157\",[105,2.089]],[\"name/158\",[38,45.156]],[\"parent/158\",[105,2.089]],[\"name/159\",[19,45.156]],[\"parent/159\",[105,2.089]],[\"name/160\",[39,45.156]],[\"parent/160\",[105,2.089]],[\"name/161\",[40,37.534]],[\"parent/161\",[105,2.089]],[\"name/162\",[41,45.156]],[\"parent/162\",[105,2.089]],[\"name/163\",[20,45.156]],[\"parent/163\",[105,2.089]],[\"name/164\",[42,45.156]],[\"parent/164\",[105,2.089]],[\"name/165\",[43,45.156]],[\"parent/165\",[105,2.089]],[\"name/166\",[44,45.156]],[\"parent/166\",[105,2.089]],[\"name/167\",[45,45.156]],[\"parent/167\",[105,2.089]],[\"name/168\",[46,45.156]],[\"parent/168\",[105,2.089]],[\"name/169\",[47,42.642]],[\"parent/169\",[105,2.089]],[\"name/170\",[48,45.156]],[\"parent/170\",[105,2.089]],[\"name/171\",[49,45.156]],[\"parent/171\",[105,2.089]],[\"name/172\",[50,45.156]],[\"parent/172\",[105,2.089]],[\"name/173\",[25,42.642]],[\"parent/173\",[105,2.089]],[\"name/174\",[51,45.156]],[\"parent/174\",[105,2.089]],[\"name/175\",[52,45.156]],[\"parent/175\",[105,2.089]],[\"name/176\",[53,45.156]],[\"parent/176\",[105,2.089]],[\"name/177\",[54,45.156]],[\"parent/177\",[105,2.089]],[\"name/178\",[55,45.156]],[\"parent/178\",[105,2.089]],[\"name/179\",[26,45.156]],[\"parent/179\",[105,2.089]],[\"name/180\",[106,36.283]],[\"parent/180\",[]],[\"name/181\",[8,45.156]],[\"parent/181\",[106,3.491]],[\"name/182\",[10,40.636]],[\"parent/182\",[106,3.491]],[\"name/183\",[11,40.636]],[\"parent/183\",[106,3.491]],[\"name/184\",[12,45.156]],[\"parent/184\",[106,3.491]],[\"name/185\",[13,40.636]],[\"parent/185\",[106,3.491]],[\"name/186\",[14,38.965]],[\"parent/186\",[106,3.491]],[\"name/187\",[15,45.156]],[\"parent/187\",[106,3.491]],[\"name/188\",[107,38.965]],[\"parent/188\",[]],[\"name/189\",[30,25.296]],[\"parent/189\",[107,3.749]],[\"name/190\",[31,38.965]],[\"parent/190\",[107,3.749]],[\"name/191\",[32,37.534]],[\"parent/191\",[107,3.749]],[\"name/192\",[57,42.642]],[\"parent/192\",[107,3.749]],[\"name/193\",[34,36.283]],[\"parent/193\",[107,3.749]],[\"name/194\",[18,38.965]],[\"parent/194\",[]],[\"name/195\",[108,17.165]],[\"parent/195\",[]],[\"name/196\",[1,40.636]],[\"parent/196\",[108,1.652]],[\"name/197\",[109,48.52]],[\"parent/197\",[108,1.652]],[\"name/198\",[4,48.52]],[\"parent/198\",[108,1.652]],[\"name/199\",[6,45.156]],[\"parent/199\",[108,1.652]],[\"name/200\",[7,36.283]],[\"parent/200\",[108,1.652]],[\"name/201\",[8,45.156]],[\"parent/201\",[110,3.611]],[\"name/202\",[10,40.636]],[\"parent/202\",[110,3.611]],[\"name/203\",[11,40.636]],[\"parent/203\",[110,3.611]],[\"name/204\",[12,45.156]],[\"parent/204\",[110,3.611]],[\"name/205\",[13,40.636]],[\"parent/205\",[110,3.611]],[\"name/206\",[14,38.965]],[\"parent/206\",[110,3.611]],[\"name/207\",[15,45.156]],[\"parent/207\",[110,3.611]],[\"name/208\",[111,53.629]],[\"parent/208\",[108,1.652]],[\"name/209\",[10,40.636]],[\"parent/209\",[108,1.652]],[\"name/210\",[112,48.52]],[\"parent/210\",[108,1.652]],[\"name/211\",[13,40.636]],[\"parent/211\",[108,1.652]],[\"name/212\",[11,40.636]],[\"parent/212\",[108,1.652]],[\"name/213\",[17,48.52]],[\"parent/213\",[108,1.652]],[\"name/214\",[113,53.629]],[\"parent/214\",[108,1.652]],[\"name/215\",[18,38.965]],[\"parent/215\",[108,1.652]],[\"name/216\",[114,53.629]],[\"parent/216\",[108,1.652]],[\"name/217\",[35,42.642]],[\"parent/217\",[108,1.652]],[\"name/218\",[36,45.156]],[\"parent/218\",[108,1.652]],[\"name/219\",[19,45.156]],[\"parent/219\",[108,1.652]],[\"name/220\",[20,45.156]],[\"parent/220\",[108,1.652]],[\"name/221\",[37,45.156]],[\"parent/221\",[108,1.652]],[\"name/222\",[115,53.629]],[\"parent/222\",[108,1.652]],[\"name/223\",[116,53.629]],[\"parent/223\",[108,1.652]],[\"name/224\",[117,53.629]],[\"parent/224\",[108,1.652]],[\"name/225\",[5,45.156]],[\"parent/225\",[108,1.652]],[\"name/226\",[25,42.642]],[\"parent/226\",[108,1.652]],[\"name/227\",[26,45.156]],[\"parent/227\",[108,1.652]],[\"name/228\",[118,53.629]],[\"parent/228\",[108,1.652]],[\"name/229\",[119,53.629]],[\"parent/229\",[108,1.652]],[\"name/230\",[120,53.629]],[\"parent/230\",[108,1.652]],[\"name/231\",[27,48.52]],[\"parent/231\",[108,1.652]],[\"name/232\",[28,48.52]],[\"parent/232\",[108,1.652]],[\"name/233\",[29,48.52]],[\"parent/233\",[108,1.652]],[\"name/234\",[121,53.629]],[\"parent/234\",[108,1.652]],[\"name/235\",[30,25.296]],[\"parent/235\",[108,1.652]],[\"name/236\",[31,38.965]],[\"parent/236\",[108,1.652]],[\"name/237\",[32,37.534]],[\"parent/237\",[108,1.652]],[\"name/238\",[14,38.965]],[\"parent/238\",[108,1.652]],[\"name/239\",[33,42.642]],[\"parent/239\",[108,1.652]],[\"name/240\",[34,36.283]],[\"parent/240\",[108,1.652]],[\"name/241\",[38,45.156]],[\"parent/241\",[108,1.652]],[\"name/242\",[39,45.156]],[\"parent/242\",[108,1.652]],[\"name/243\",[40,37.534]],[\"parent/243\",[108,1.652]],[\"name/244\",[41,45.156]],[\"parent/244\",[108,1.652]],[\"name/245\",[42,45.156]],[\"parent/245\",[108,1.652]],[\"name/246\",[43,45.156]],[\"parent/246\",[108,1.652]],[\"name/247\",[44,45.156]],[\"parent/247\",[108,1.652]],[\"name/248\",[45,45.156]],[\"parent/248\",[108,1.652]],[\"name/249\",[46,45.156]],[\"parent/249\",[108,1.652]],[\"name/250\",[47,42.642]],[\"parent/250\",[108,1.652]],[\"name/251\",[48,45.156]],[\"parent/251\",[108,1.652]],[\"name/252\",[49,45.156]],[\"parent/252\",[108,1.652]],[\"name/253\",[50,45.156]],[\"parent/253\",[108,1.652]],[\"name/254\",[51,45.156]],[\"parent/254\",[108,1.652]],[\"name/255\",[52,45.156]],[\"parent/255\",[108,1.652]],[\"name/256\",[53,45.156]],[\"parent/256\",[108,1.652]],[\"name/257\",[54,45.156]],[\"parent/257\",[108,1.652]],[\"name/258\",[55,45.156]],[\"parent/258\",[108,1.652]],[\"name/259\",[122,35.17]],[\"parent/259\",[]],[\"name/260\",[18,38.965]],[\"parent/260\",[122,3.384]],[\"name/261\",[109,48.52]],[\"parent/261\",[122,3.384]],[\"name/262\",[35,42.642]],[\"parent/262\",[122,3.384]],[\"name/263\",[30,25.296]],[\"parent/263\",[122,3.384]],[\"name/264\",[31,38.965]],[\"parent/264\",[122,3.384]],[\"name/265\",[32,37.534]],[\"parent/265\",[122,3.384]],[\"name/266\",[57,42.642]],[\"parent/266\",[122,3.384]],[\"name/267\",[34,36.283]],[\"parent/267\",[122,3.384]],[\"name/268\",[123,53.629]],[\"parent/268\",[]],[\"name/269\",[124,48.52]],[\"parent/269\",[]],[\"name/270\",[7,36.283]],[\"parent/270\",[124,4.668]],[\"name/271\",[40,37.534]],[\"parent/271\",[125,4.103]],[\"name/272\",[76,42.642]],[\"parent/272\",[125,4.103]],[\"name/273\",[126,48.52]],[\"parent/273\",[125,4.103]],[\"name/274\",[127,53.629]],[\"parent/274\",[125,4.103]],[\"name/275\",[128,37.534]],[\"parent/275\",[]],[\"name/276\",[74,45.156]],[\"parent/276\",[128,3.611]],[\"name/277\",[129,53.629]],[\"parent/277\",[128,3.611]],[\"name/278\",[75,45.156]],[\"parent/278\",[128,3.611]],[\"name/279\",[126,48.52]],[\"parent/279\",[128,3.611]],[\"name/280\",[40,37.534]],[\"parent/280\",[128,3.611]],[\"name/281\",[76,42.642]],[\"parent/281\",[128,3.611]],[\"name/282\",[130,45.156]],[\"parent/282\",[]],[\"name/283\",[62,38.965]],[\"parent/283\",[130,4.345]],[\"name/284\",[131,53.629]],[\"parent/284\",[130,4.345]],[\"name/285\",[132,42.642]],[\"parent/285\",[]],[\"name/286\",[65,40.636]],[\"parent/286\",[132,4.103]],[\"name/287\",[62,38.965]],[\"parent/287\",[132,4.103]],[\"name/288\",[133,53.629]],[\"parent/288\",[132,4.103]],[\"name/289\",[134,53.629]],[\"parent/289\",[]],[\"name/290\",[135,37.534]],[\"parent/290\",[]],[\"name/291\",[136,53.629]],[\"parent/291\",[135,3.611]],[\"name/292\",[112,48.52]],[\"parent/292\",[135,3.611]],[\"name/293\",[74,45.156]],[\"parent/293\",[135,3.611]],[\"name/294\",[75,45.156]],[\"parent/294\",[135,3.611]],[\"name/295\",[40,37.534]],[\"parent/295\",[135,3.611]],[\"name/296\",[76,42.642]],[\"parent/296\",[135,3.611]],[\"name/297\",[137,53.629]],[\"parent/297\",[]],[\"name/298\",[138,53.629]],[\"parent/298\",[]],[\"name/299\",[139,48.52]],[\"parent/299\",[]],[\"name/300\",[7,36.283]],[\"parent/300\",[139,4.668]],[\"name/301\",[140,53.629]],[\"parent/301\",[141,4.103]],[\"name/302\",[142,53.629]],[\"parent/302\",[141,4.103]],[\"name/303\",[143,53.629]],[\"parent/303\",[141,4.103]],[\"name/304\",[144,53.629]],[\"parent/304\",[141,4.103]],[\"name/305\",[145,48.52]],[\"parent/305\",[]],[\"name/306\",[7,36.283]],[\"parent/306\",[145,4.668]],[\"name/307\",[146,53.629]],[\"parent/307\",[147,4.103]],[\"name/308\",[148,53.629]],[\"parent/308\",[147,4.103]],[\"name/309\",[149,53.629]],[\"parent/309\",[147,4.103]],[\"name/310\",[150,53.629]],[\"parent/310\",[147,4.103]],[\"name/311\",[151,36.283]],[\"parent/311\",[]],[\"name/312\",[7,36.283]],[\"parent/312\",[151,3.491]],[\"name/313\",[1,40.636]],[\"parent/313\",[151,3.491]],[\"name/314\",[152,53.629]],[\"parent/314\",[151,3.491]],[\"name/315\",[153,53.629]],[\"parent/315\",[151,3.491]],[\"name/316\",[154,53.629]],[\"parent/316\",[151,3.491]],[\"name/317\",[155,53.629]],[\"parent/317\",[151,3.491]],[\"name/318\",[156,53.629]],[\"parent/318\",[151,3.491]]],\"invertedIndex\":[[\"__type\",{\"_index\":7,\"name\":{\"7\":{},\"77\":{},\"93\":{},\"200\":{},\"270\":{},\"300\":{},\"306\":{},\"312\":{}},\"parent\":{}}],[\"address\",{\"_index\":93,\"name\":{\"130\":{}},\"parent\":{}}],[\"alias\",{\"_index\":36,\"name\":{\"39\":{},\"156\":{},\"218\":{}},\"parent\":{}}],[\"apimodulenamespace\",{\"_index\":106,\"name\":{\"180\":{}},\"parent\":{\"181\":{},\"182\":{},\"183\":{},\"184\":{},\"185\":{},\"186\":{},\"187\":{}}}],[\"apimodules\",{\"_index\":6,\"name\":{\"6\":{},\"152\":{},\"199\":{}},\"parent\":{}}],[\"away\",{\"_index\":111,\"name\":{\"208\":{}},\"parent\":{}}],[\"awayrule\",{\"_index\":124,\"name\":{\"269\":{}},\"parent\":{\"270\":{}}}],[\"awayrule.__type\",{\"_index\":125,\"name\":{},\"parent\":{\"271\":{},\"272\":{},\"273\":{},\"274\":{}}}],[\"awayruleinput\",{\"_index\":128,\"name\":{\"275\":{}},\"parent\":{\"276\":{},\"277\":{},\"278\":{},\"279\":{},\"280\":{},\"281\":{}}}],[\"blink\",{\"_index\":121,\"name\":{\"234\":{}},\"parent\":{}}],[\"breakoutchildren\",{\"_index\":102,\"name\":{\"140\":{}},\"parent\":{}}],[\"brightness\",{\"_index\":65,\"name\":{\"73\":{},\"82\":{},\"90\":{},\"98\":{},\"286\":{}},\"parent\":{}}],[\"broadcast\",{\"_index\":94,\"name\":{\"132\":{}},\"parent\":{}}],[\"bulb\",{\"_index\":0,\"name\":{\"0\":{}},\"parent\":{\"1\":{},\"2\":{},\"3\":{},\"4\":{},\"5\":{},\"6\":{},\"7\":{},\"15\":{},\"16\":{},\"17\":{},\"18\":{},\"19\":{},\"20\":{},\"21\":{},\"22\":{},\"23\":{},\"24\":{},\"25\":{},\"26\":{},\"27\":{},\"28\":{},\"29\":{},\"30\":{},\"31\":{},\"32\":{},\"33\":{},\"34\":{},\"35\":{},\"36\":{},\"37\":{},\"38\":{},\"39\":{},\"40\":{},\"41\":{},\"42\":{},\"43\":{},\"44\":{},\"45\":{},\"46\":{},\"47\":{},\"48\":{},\"49\":{},\"50\":{},\"51\":{},\"52\":{},\"53\":{},\"54\":{},\"55\":{},\"56\":{},\"57\":{},\"58\":{}}}],[\"bulb.__type\",{\"_index\":9,\"name\":{},\"parent\":{\"8\":{},\"9\":{},\"10\":{},\"11\":{},\"12\":{},\"13\":{},\"14\":{}}}],[\"bulbconstructoroptions\",{\"_index\":56,\"name\":{\"59\":{}},\"parent\":{\"60\":{},\"61\":{},\"62\":{},\"63\":{},\"64\":{},\"65\":{}}}],[\"bulbschedulerule\",{\"_index\":72,\"name\":{\"99\":{}},\"parent\":{}}],[\"bulbscheduleruleinput\",{\"_index\":73,\"name\":{\"100\":{}},\"parent\":{\"101\":{},\"102\":{},\"103\":{},\"104\":{},\"105\":{}}}],[\"bulbsysinfo\",{\"_index\":58,\"name\":{\"66\":{}},\"parent\":{}}],[\"childid\",{\"_index\":35,\"name\":{\"38\":{},\"154\":{},\"217\":{},\"262\":{}},\"parent\":{}}],[\"children\",{\"_index\":114,\"name\":{\"216\":{}},\"parent\":{}}],[\"client\",{\"_index\":30,\"name\":{\"32\":{},\"61\":{},\"106\":{},\"146\":{},\"189\":{},\"235\":{},\"263\":{}},\"parent\":{\"107\":{},\"108\":{},\"109\":{},\"110\":{},\"111\":{},\"112\":{},\"113\":{},\"114\":{},\"115\":{},\"116\":{},\"117\":{},\"118\":{},\"119\":{},\"120\":{},\"121\":{},\"122\":{},\"123\":{},\"124\":{}}}],[\"clientconstructoroptions\",{\"_index\":90,\"name\":{\"125\":{}},\"parent\":{\"126\":{},\"127\":{},\"128\":{}}}],[\"closeconnection\",{\"_index\":46,\"name\":{\"49\":{},\"168\":{},\"249\":{}},\"parent\":{}}],[\"cloud\",{\"_index\":10,\"name\":{\"9\":{},\"15\":{},\"182\":{},\"202\":{},\"209\":{}},\"parent\":{}}],[\"color_temp\",{\"_index\":66,\"name\":{\"74\":{},\"81\":{},\"91\":{},\"97\":{}},\"parent\":{}}],[\"colortemperaturerange\",{\"_index\":24,\"name\":{\"26\":{}},\"parent\":{}}],[\"command\",{\"_index\":154,\"name\":{\"316\":{}},\"parent\":{}}],[\"constructor\",{\"_index\":1,\"name\":{\"1\":{},\"107\":{},\"145\":{},\"196\":{},\"313\":{}},\"parent\":{}}],[\"current\",{\"_index\":140,\"name\":{\"301\":{}},\"parent\":{}}],[\"current_ma\",{\"_index\":146,\"name\":{\"307\":{}},\"parent\":{}}],[\"daysofweek\",{\"_index\":75,\"name\":{\"103\":{},\"278\":{},\"294\":{}},\"parent\":{}}],[\"defaultsendoptions\",{\"_index\":34,\"name\":{\"37\":{},\"65\":{},\"108\":{},\"126\":{},\"151\":{},\"193\":{},\"240\":{},\"267\":{}},\"parent\":{}}],[\"delay\",{\"_index\":127,\"name\":{\"274\":{}},\"parent\":{}}],[\"description\",{\"_index\":19,\"name\":{\"21\":{},\"159\":{},\"219\":{}},\"parent\":{}}],[\"device\",{\"_index\":105,\"name\":{\"144\":{}},\"parent\":{\"145\":{},\"146\":{},\"147\":{},\"148\":{},\"149\":{},\"150\":{},\"151\":{},\"152\":{},\"153\":{},\"154\":{},\"155\":{},\"156\":{},\"157\":{},\"158\":{},\"159\":{},\"160\":{},\"161\":{},\"162\":{},\"163\":{},\"164\":{},\"165\":{},\"166\":{},\"167\":{},\"168\":{},\"169\":{},\"170\":{},\"171\":{},\"172\":{},\"173\":{},\"174\":{},\"175\":{},\"176\":{},\"177\":{},\"178\":{},\"179\":{}}}],[\"deviceconstructoroptions\",{\"_index\":107,\"name\":{\"188\":{}},\"parent\":{\"189\":{},\"190\":{},\"191\":{},\"192\":{},\"193\":{}}}],[\"deviceid\",{\"_index\":38,\"name\":{\"41\":{},\"158\":{},\"241\":{}},\"parent\":{}}],[\"deviceoptions\",{\"_index\":104,\"name\":{\"142\":{}},\"parent\":{}}],[\"devices\",{\"_index\":77,\"name\":{\"110\":{},\"143\":{}},\"parent\":{}}],[\"devicesusediscoveryport\",{\"_index\":103,\"name\":{\"141\":{}},\"parent\":{}}],[\"devicetype\",{\"_index\":20,\"name\":{\"22\":{},\"163\":{},\"220\":{}},\"parent\":{}}],[\"devicetypes\",{\"_index\":98,\"name\":{\"136\":{}},\"parent\":{}}],[\"dft_on_state\",{\"_index\":68,\"name\":{\"76\":{},\"92\":{}},\"parent\":{}}],[\"dimmer\",{\"_index\":112,\"name\":{\"210\":{},\"292\":{}},\"parent\":{}}],[\"dimmeractioninput\",{\"_index\":130,\"name\":{\"282\":{}},\"parent\":{\"283\":{},\"284\":{}}}],[\"dimmertransitioninput\",{\"_index\":132,\"name\":{\"285\":{}},\"parent\":{\"286\":{},\"287\":{},\"288\":{}}}],[\"discoveryinterval\",{\"_index\":95,\"name\":{\"133\":{}},\"parent\":{}}],[\"discoveryoptions\",{\"_index\":92,\"name\":{\"129\":{}},\"parent\":{\"130\":{},\"131\":{},\"132\":{},\"133\":{},\"134\":{},\"135\":{},\"136\":{},\"137\":{},\"138\":{},\"139\":{},\"140\":{},\"141\":{},\"142\":{},\"143\":{}}}],[\"discoverypacketsequence\",{\"_index\":79,\"name\":{\"112\":{}},\"parent\":{}}],[\"discoverytimeout\",{\"_index\":96,\"name\":{\"134\":{}},\"parent\":{}}],[\"discoverytimer\",{\"_index\":78,\"name\":{\"111\":{}},\"parent\":{}}],[\"duration\",{\"_index\":133,\"name\":{\"288\":{}},\"parent\":{}}],[\"emeter\",{\"_index\":13,\"name\":{\"12\":{},\"16\":{},\"185\":{},\"205\":{},\"211\":{}},\"parent\":{}}],[\"emit\",{\"_index\":3,\"name\":{\"3\":{}},\"parent\":{}}],[\"emiteventsenabled\",{\"_index\":4,\"name\":{\"4\":{},\"198\":{}},\"parent\":{}}],[\"enable\",{\"_index\":76,\"name\":{\"105\":{},\"272\":{},\"281\":{},\"296\":{}},\"parent\":{}}],[\"end\",{\"_index\":129,\"name\":{\"277\":{}},\"parent\":{}}],[\"excludemacaddresses\",{\"_index\":100,\"name\":{\"138\":{}},\"parent\":{}}],[\"filtercallback\",{\"_index\":101,\"name\":{\"139\":{}},\"parent\":{}}],[\"frequency\",{\"_index\":126,\"name\":{\"273\":{},\"279\":{}},\"parent\":{}}],[\"getbulb\",{\"_index\":83,\"name\":{\"118\":{}},\"parent\":{}}],[\"getdevice\",{\"_index\":85,\"name\":{\"120\":{}},\"parent\":{}}],[\"getdevicefromsysinfo\",{\"_index\":86,\"name\":{\"121\":{}},\"parent\":{}}],[\"getinfo\",{\"_index\":26,\"name\":{\"28\":{},\"179\":{},\"227\":{}},\"parent\":{}}],[\"getinuse\",{\"_index\":118,\"name\":{\"228\":{}},\"parent\":{}}],[\"getledstate\",{\"_index\":119,\"name\":{\"229\":{}},\"parent\":{}}],[\"getmodel\",{\"_index\":53,\"name\":{\"56\":{},\"176\":{},\"256\":{}},\"parent\":{}}],[\"getplug\",{\"_index\":84,\"name\":{\"119\":{}},\"parent\":{}}],[\"getpowerstate\",{\"_index\":27,\"name\":{\"29\":{},\"231\":{}},\"parent\":{}}],[\"getsysinfo\",{\"_index\":25,\"name\":{\"27\":{},\"117\":{},\"173\":{},\"226\":{}},\"parent\":{}}],[\"gettypefromsysinfo\",{\"_index\":87,\"name\":{\"122\":{}},\"parent\":{}}],[\"hardwareversion\",{\"_index\":43,\"name\":{\"46\":{},\"165\":{},\"246\":{}},\"parent\":{}}],[\"host\",{\"_index\":31,\"name\":{\"33\":{},\"62\":{},\"147\":{},\"190\":{},\"236\":{},\"264\":{}},\"parent\":{}}],[\"hue\",{\"_index\":63,\"name\":{\"71\":{},\"79\":{},\"88\":{},\"95\":{}},\"parent\":{}}],[\"id\",{\"_index\":37,\"name\":{\"40\":{},\"157\":{},\"221\":{}},\"parent\":{}}],[\"ignore_default\",{\"_index\":67,\"name\":{\"75\":{},\"84\":{}},\"parent\":{}}],[\"index\",{\"_index\":131,\"name\":{\"284\":{}},\"parent\":{}}],[\"inuse\",{\"_index\":115,\"name\":{\"222\":{}},\"parent\":{}}],[\"inusethreshold\",{\"_index\":109,\"name\":{\"197\":{},\"261\":{}},\"parent\":{}}],[\"issocketbound\",{\"_index\":82,\"name\":{\"115\":{}},\"parent\":{}}],[\"lighting\",{\"_index\":16,\"name\":{\"17\":{}},\"parent\":{}}],[\"lightingservice\",{\"_index\":15,\"name\":{\"14\":{},\"187\":{},\"207\":{}},\"parent\":{}}],[\"lightstate\",{\"_index\":59,\"name\":{\"67\":{},\"101\":{}},\"parent\":{\"68\":{},\"69\":{},\"70\":{},\"71\":{},\"72\":{},\"73\":{},\"74\":{},\"75\":{},\"76\":{},\"77\":{}}}],[\"lightstate.__type\",{\"_index\":69,\"name\":{},\"parent\":{\"78\":{},\"79\":{},\"80\":{},\"81\":{},\"82\":{}}}],[\"lightstateinput\",{\"_index\":70,\"name\":{\"83\":{}},\"parent\":{\"84\":{},\"85\":{},\"86\":{},\"87\":{},\"88\":{},\"89\":{},\"90\":{},\"91\":{},\"92\":{},\"93\":{}}}],[\"lightstateinput.__type\",{\"_index\":71,\"name\":{},\"parent\":{\"94\":{},\"95\":{},\"96\":{},\"97\":{},\"98\":{}}}],[\"log\",{\"_index\":33,\"name\":{\"36\":{},\"109\":{},\"150\":{},\"239\":{}},\"parent\":{}}],[\"logger\",{\"_index\":57,\"name\":{\"64\":{},\"128\":{},\"192\":{},\"266\":{}},\"parent\":{}}],[\"loglevel\",{\"_index\":91,\"name\":{\"127\":{}},\"parent\":{}}],[\"mac\",{\"_index\":44,\"name\":{\"47\":{},\"166\":{},\"247\":{}},\"parent\":{}}],[\"macaddresses\",{\"_index\":99,\"name\":{\"137\":{}},\"parent\":{}}],[\"macnormalized\",{\"_index\":45,\"name\":{\"48\":{},\"167\":{},\"248\":{}},\"parent\":{}}],[\"maxsocketid\",{\"_index\":80,\"name\":{\"113\":{}},\"parent\":{}}],[\"methods\",{\"_index\":156,\"name\":{\"318\":{}},\"parent\":{}}],[\"mode\",{\"_index\":62,\"name\":{\"70\":{},\"78\":{},\"87\":{},\"94\":{},\"283\":{},\"287\":{}},\"parent\":{}}],[\"model\",{\"_index\":39,\"name\":{\"42\":{},\"160\":{},\"242\":{}},\"parent\":{}}],[\"modules\",{\"_index\":155,\"name\":{\"317\":{}},\"parent\":{}}],[\"name\",{\"_index\":40,\"name\":{\"43\":{},\"104\":{},\"161\":{},\"243\":{},\"271\":{},\"280\":{},\"295\":{}},\"parent\":{}}],[\"netif\",{\"_index\":14,\"name\":{\"13\":{},\"35\":{},\"149\":{},\"186\":{},\"206\":{},\"238\":{}},\"parent\":{}}],[\"offlinetolerance\",{\"_index\":97,\"name\":{\"135\":{}},\"parent\":{}}],[\"on\",{\"_index\":2,\"name\":{\"2\":{}},\"parent\":{}}],[\"on_off\",{\"_index\":61,\"name\":{\"69\":{},\"86\":{}},\"parent\":{}}],[\"plug\",{\"_index\":108,\"name\":{\"195\":{}},\"parent\":{\"196\":{},\"197\":{},\"198\":{},\"199\":{},\"200\":{},\"208\":{},\"209\":{},\"210\":{},\"211\":{},\"212\":{},\"213\":{},\"214\":{},\"215\":{},\"216\":{},\"217\":{},\"218\":{},\"219\":{},\"220\":{},\"221\":{},\"222\":{},\"223\":{},\"224\":{},\"225\":{},\"226\":{},\"227\":{},\"228\":{},\"229\":{},\"230\":{},\"231\":{},\"232\":{},\"233\":{},\"234\":{},\"235\":{},\"236\":{},\"237\":{},\"238\":{},\"239\":{},\"240\":{},\"241\":{},\"242\":{},\"243\":{},\"244\":{},\"245\":{},\"246\":{},\"247\":{},\"248\":{},\"249\":{},\"250\":{},\"251\":{},\"252\":{},\"253\":{},\"254\":{},\"255\":{},\"256\":{},\"257\":{},\"258\":{}}}],[\"plug.__type\",{\"_index\":110,\"name\":{},\"parent\":{\"201\":{},\"202\":{},\"203\":{},\"204\":{},\"205\":{},\"206\":{},\"207\":{}}}],[\"plugconstructoroptions\",{\"_index\":122,\"name\":{\"259\":{}},\"parent\":{\"260\":{},\"261\":{},\"262\":{},\"263\":{},\"264\":{},\"265\":{},\"266\":{},\"267\":{}}}],[\"plugschedulerule\",{\"_index\":134,\"name\":{\"289\":{}},\"parent\":{}}],[\"plugscheduleruleinput\",{\"_index\":135,\"name\":{\"290\":{}},\"parent\":{\"291\":{},\"292\":{},\"293\":{},\"294\":{},\"295\":{},\"296\":{}}}],[\"plugsysinfo\",{\"_index\":123,\"name\":{\"268\":{}},\"parent\":{}}],[\"port\",{\"_index\":32,\"name\":{\"34\":{},\"63\":{},\"131\":{},\"148\":{},\"191\":{},\"237\":{},\"265\":{}},\"parent\":{}}],[\"power\",{\"_index\":142,\"name\":{\"302\":{}},\"parent\":{}}],[\"power_mw\",{\"_index\":148,\"name\":{\"308\":{}},\"parent\":{}}],[\"powerstate\",{\"_index\":136,\"name\":{\"291\":{}},\"parent\":{}}],[\"realtime\",{\"_index\":137,\"name\":{\"297\":{}},\"parent\":{}}],[\"realtimenormalized\",{\"_index\":138,\"name\":{\"298\":{}},\"parent\":{}}],[\"realtimev1\",{\"_index\":139,\"name\":{\"299\":{}},\"parent\":{\"300\":{}}}],[\"realtimev1.__type\",{\"_index\":141,\"name\":{},\"parent\":{\"301\":{},\"302\":{},\"303\":{},\"304\":{}}}],[\"realtimev2\",{\"_index\":145,\"name\":{\"305\":{}},\"parent\":{\"306\":{}}}],[\"realtimev2.__type\",{\"_index\":147,\"name\":{},\"parent\":{\"307\":{},\"308\":{},\"309\":{},\"310\":{}}}],[\"reboot\",{\"_index\":54,\"name\":{\"57\":{},\"177\":{},\"257\":{}},\"parent\":{}}],[\"relaystate\",{\"_index\":116,\"name\":{\"223\":{}},\"parent\":{}}],[\"reset\",{\"_index\":55,\"name\":{\"58\":{},\"178\":{},\"258\":{}},\"parent\":{}}],[\"response\",{\"_index\":153,\"name\":{\"315\":{}},\"parent\":{}}],[\"responseerror\",{\"_index\":151,\"name\":{\"311\":{}},\"parent\":{\"312\":{},\"313\":{},\"314\":{},\"315\":{},\"316\":{},\"317\":{},\"318\":{}}}],[\"saturation\",{\"_index\":64,\"name\":{\"72\":{},\"80\":{},\"89\":{},\"96\":{}},\"parent\":{}}],[\"schedule\",{\"_index\":11,\"name\":{\"10\":{},\"18\":{},\"183\":{},\"203\":{},\"212\":{}},\"parent\":{}}],[\"send\",{\"_index\":47,\"name\":{\"50\":{},\"116\":{},\"169\":{},\"250\":{}},\"parent\":{}}],[\"sendcommand\",{\"_index\":48,\"name\":{\"51\":{},\"170\":{},\"251\":{}},\"parent\":{}}],[\"setalias\",{\"_index\":51,\"name\":{\"54\":{},\"174\":{},\"254\":{}},\"parent\":{}}],[\"setledstate\",{\"_index\":120,\"name\":{\"230\":{}},\"parent\":{}}],[\"setlocation\",{\"_index\":52,\"name\":{\"55\":{},\"175\":{},\"255\":{}},\"parent\":{}}],[\"setpowerstate\",{\"_index\":28,\"name\":{\"30\":{},\"232\":{}},\"parent\":{}}],[\"socket\",{\"_index\":81,\"name\":{\"114\":{}},\"parent\":{}}],[\"softwareversion\",{\"_index\":42,\"name\":{\"45\":{},\"164\":{},\"245\":{}},\"parent\":{}}],[\"stack\",{\"_index\":152,\"name\":{\"314\":{}},\"parent\":{}}],[\"start\",{\"_index\":74,\"name\":{\"102\":{},\"276\":{},\"293\":{}},\"parent\":{}}],[\"startdiscovery\",{\"_index\":88,\"name\":{\"123\":{}},\"parent\":{}}],[\"startpolling\",{\"_index\":49,\"name\":{\"52\":{},\"171\":{},\"252\":{}},\"parent\":{}}],[\"stopdiscovery\",{\"_index\":89,\"name\":{\"124\":{}},\"parent\":{}}],[\"stoppolling\",{\"_index\":50,\"name\":{\"53\":{},\"172\":{},\"253\":{}},\"parent\":{}}],[\"supportsbrightness\",{\"_index\":21,\"name\":{\"23\":{}},\"parent\":{}}],[\"supportscolor\",{\"_index\":22,\"name\":{\"24\":{}},\"parent\":{}}],[\"supportscolortemperature\",{\"_index\":23,\"name\":{\"25\":{}},\"parent\":{}}],[\"supportsdimmer\",{\"_index\":117,\"name\":{\"224\":{}},\"parent\":{}}],[\"supportsemeter\",{\"_index\":5,\"name\":{\"5\":{},\"153\":{},\"225\":{}},\"parent\":{}}],[\"sysinfo\",{\"_index\":18,\"name\":{\"20\":{},\"60\":{},\"155\":{},\"194\":{},\"215\":{},\"260\":{}},\"parent\":{}}],[\"system\",{\"_index\":8,\"name\":{\"8\":{},\"181\":{},\"201\":{}},\"parent\":{}}],[\"time\",{\"_index\":17,\"name\":{\"19\":{},\"213\":{}},\"parent\":{}}],[\"timer\",{\"_index\":113,\"name\":{\"214\":{}},\"parent\":{}}],[\"timesetting\",{\"_index\":12,\"name\":{\"11\":{},\"184\":{},\"204\":{}},\"parent\":{}}],[\"togglepowerstate\",{\"_index\":29,\"name\":{\"31\":{},\"233\":{}},\"parent\":{}}],[\"total\",{\"_index\":143,\"name\":{\"303\":{}},\"parent\":{}}],[\"total_wh\",{\"_index\":149,\"name\":{\"309\":{}},\"parent\":{}}],[\"transition_period\",{\"_index\":60,\"name\":{\"68\":{},\"85\":{}},\"parent\":{}}],[\"type\",{\"_index\":41,\"name\":{\"44\":{},\"162\":{},\"244\":{}},\"parent\":{}}],[\"voltage\",{\"_index\":144,\"name\":{\"304\":{}},\"parent\":{}}],[\"voltage_mv\",{\"_index\":150,\"name\":{\"310\":{}},\"parent\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css index a16ed02..108428c 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -1,155 +1,254 @@ -@import url("./icons.css"); - :root { /* Light */ - --light-color-background: #fcfcfc; - --light-color-secondary-background: #fff; + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); --light-color-text: #222; - --light-color-text-aside: #707070; - --light-color-link: #4da6ff; - --light-color-menu-divider: #eee; - --light-color-menu-divider-focus: #000; - --light-color-menu-label: #707070; - --light-color-panel: var(--light-color-secondary-background); - --light-color-panel-divider: #eee; - --light-color-comment-tag: #707070; - --light-color-comment-tag-text: #fff; - --light-color-ts: #9600ff; - --light-color-ts-interface: #647f1b; - --light-color-ts-enum: #937210; - --light-color-ts-class: #0672de; - --light-color-ts-private: #707070; - --light-color-toolbar: #fff; - --light-color-toolbar-text: #333; - --light-icon-filter: invert(0); + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: var(--light-color-ts-type-alias); + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; /* Dark */ - --dark-color-background: #36393f; - --dark-color-secondary-background: #2f3136; - --dark-color-text: #ffffff; - --dark-color-text-aside: #e6e4e4; + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; --dark-color-link: #00aff4; - --dark-color-menu-divider: #eee; - --dark-color-menu-divider-focus: #000; - --dark-color-menu-label: #707070; - --dark-color-panel: var(--dark-color-secondary-background); - --dark-color-panel-divider: #818181; - --dark-color-comment-tag: #dcddde; - --dark-color-comment-tag-text: #2f3136; - --dark-color-ts: #c97dff; - --dark-color-ts-interface: #9cbe3c; - --dark-color-ts-enum: #d6ab29; - --dark-color-ts-class: #3695f3; - --dark-color-ts-private: #e2e2e2; - --dark-color-toolbar: #34373c; - --dark-color-toolbar-text: #ffffff; - --dark-icon-filter: invert(1); + + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias); + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; } @media (prefers-color-scheme: light) { :root { --color-background: var(--light-color-background); - --color-secondary-background: var(--light-color-secondary-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); --color-text-aside: var(--light-color-text-aside); --color-link: var(--light-color-link); - --color-menu-divider: var(--light-color-menu-divider); - --color-menu-divider-focus: var(--light-color-menu-divider-focus); - --color-menu-label: var(--light-color-menu-label); - --color-panel: var(--light-color-panel); - --color-panel-divider: var(--light-color-panel-divider); - --color-comment-tag: var(--light-color-comment-tag); - --color-comment-tag-text: var(--light-color-comment-tag-text); - --color-ts: var(--light-color-ts); - --color-ts-interface: var(--light-color-ts-interface); + + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); --color-ts-class: var(--light-color-ts-class); - --color-ts-private: var(--light-color-ts-private); - --color-toolbar: var(--light-color-toolbar); - --color-toolbar-text: var(--light-color-toolbar-text); - --icon-filter: var(--light-icon-filter); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); } } @media (prefers-color-scheme: dark) { :root { --color-background: var(--dark-color-background); - --color-secondary-background: var(--dark-color-secondary-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); --color-text-aside: var(--dark-color-text-aside); --color-link: var(--dark-color-link); - --color-menu-divider: var(--dark-color-menu-divider); - --color-menu-divider-focus: var(--dark-color-menu-divider-focus); - --color-menu-label: var(--dark-color-menu-label); - --color-panel: var(--dark-color-panel); - --color-panel-divider: var(--dark-color-panel-divider); - --color-comment-tag: var(--dark-color-comment-tag); - --color-comment-tag-text: var(--dark-color-comment-tag-text); - --color-ts: var(--dark-color-ts); - --color-ts-interface: var(--dark-color-ts-interface); + + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); --color-ts-class: var(--dark-color-ts-class); - --color-ts-private: var(--dark-color-ts-private); - --color-toolbar: var(--dark-color-toolbar); - --color-toolbar-text: var(--dark-color-toolbar-text); - --icon-filter: var(--dark-icon-filter); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); } } +html { + color-scheme: var(--color-scheme); +} + body { margin: 0; } -body.light { +:root[data-theme="light"] { --color-background: var(--light-color-background); - --color-secondary-background: var(--light-color-secondary-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); --color-text-aside: var(--light-color-text-aside); --color-link: var(--light-color-link); - --color-menu-divider: var(--light-color-menu-divider); - --color-menu-divider-focus: var(--light-color-menu-divider-focus); - --color-menu-label: var(--light-color-menu-label); - --color-panel: var(--light-color-panel); - --color-panel-divider: var(--light-color-panel-divider); - --color-comment-tag: var(--light-color-comment-tag); - --color-comment-tag-text: var(--light-color-comment-tag-text); - --color-ts: var(--light-color-ts); - --color-ts-interface: var(--light-color-ts-interface); + + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); --color-ts-class: var(--light-color-ts-class); - --color-ts-private: var(--light-color-ts-private); - --color-toolbar: var(--light-color-toolbar); - --color-toolbar-text: var(--light-color-toolbar-text); - --icon-filter: var(--light-icon-filter); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); } -body.dark { +:root[data-theme="dark"] { --color-background: var(--dark-color-background); - --color-secondary-background: var(--dark-color-secondary-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); --color-text-aside: var(--dark-color-text-aside); --color-link: var(--dark-color-link); - --color-menu-divider: var(--dark-color-menu-divider); - --color-menu-divider-focus: var(--dark-color-menu-divider-focus); - --color-menu-label: var(--dark-color-menu-label); - --color-panel: var(--dark-color-panel); - --color-panel-divider: var(--dark-color-panel-divider); - --color-comment-tag: var(--dark-color-comment-tag); - --color-comment-tag-text: var(--dark-color-comment-tag-text); - --color-ts: var(--dark-color-ts); - --color-ts-interface: var(--dark-color-ts-interface); + + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); --color-ts-class: var(--dark-color-ts-class); - --color-ts-private: var(--dark-color-ts-private); - --color-toolbar: var(--dark-color-toolbar); - --color-toolbar-text: var(--dark-color-toolbar-text); - --icon-filter: var(--dark-icon-filter); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; } h1, @@ -161,41 +260,48 @@ h6 { line-height: 1.2; } +h1 > a, +h2 > a, +h3 > a, +h4 > a, +h5 > a, +h6 > a { + text-decoration: none; + color: var(--color-text); +} + h1 { - font-size: 2em; - margin: 0.67em 0; + font-size: 1.875rem; + margin: 0.67rem 0; } h2 { - font-size: 1.5em; - margin: 0.83em 0; + font-size: 1.5rem; + margin: 0.83rem 0; } h3 { - font-size: 1.17em; - margin: 1em 0; + font-size: 1.25rem; + margin: 1rem 0; } -h4, -.tsd-index-panel h3 { - font-size: 1em; - margin: 1.33em 0; +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; } h5 { - font-size: 0.83em; - margin: 1.67em 0; + font-size: 1rem; + margin: 1.5rem 0; } h6 { - font-size: 0.67em; - margin: 2.33em 0; + font-size: 0.875rem; + margin: 2.33rem 0; } -pre { - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; +.uppercase { + text-transform: uppercase; } dl, @@ -210,74 +316,28 @@ dd { } .container { - max-width: 1200px; - margin: 0 auto; - padding: 0 40px; -} -@media (max-width: 640px) { - .container { - padding: 0 20px; - } -} - -.container-main { - padding-bottom: 200px; -} - -.row { - display: flex; - position: relative; - margin: 0 -10px; -} -.row:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; -} - -.col-4, -.col-8 { - box-sizing: border-box; - float: left; - padding: 0 10px; + max-width: 1700px; + padding: 0 2rem; } -.col-4 { - width: 33.3333333333%; -} -.col-8 { - width: 66.6666666667%; +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; } -ul.tsd-descriptions > li > :first-child, -.tsd-panel > :first-child, -.col-8 > :first-child, -.col-4 > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child, -.tsd-panel > :first-child > :first-child, -.col-8 > :first-child > :first-child, -.col-4 > :first-child > :first-child, -ul.tsd-descriptions > li > :first-child > :first-child > :first-child, -.tsd-panel > :first-child > :first-child > :first-child, -.col-8 > :first-child > :first-child > :first-child, -.col-4 > :first-child > :first-child > :first-child { +.tsd-generator > p { margin-top: 0; -} -ul.tsd-descriptions > li > :last-child, -.tsd-panel > :last-child, -.col-8 > :last-child, -.col-4 > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child, -.tsd-panel > :last-child > :last-child, -.col-8 > :last-child > :last-child, -.col-4 > :last-child > :last-child, -ul.tsd-descriptions > li > :last-child > :last-child > :last-child, -.tsd-panel > :last-child > :last-child > :last-child, -.col-8 > :last-child > :last-child > :last-child, -.col-4 > :last-child > :last-child > :last-child { margin-bottom: 0; + padding: 0 1rem; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); } @keyframes fade-in { @@ -320,22 +380,6 @@ ul.tsd-descriptions > li > :last-child > :last-child > :last-child, opacity: 0; } } -@keyframes shift-to-left { - from { - transform: translate(0, 0); - } - to { - transform: translate(-25%, 0); - } -} -@keyframes unshift-to-left { - from { - transform: translate(-25%, 0); - } - to { - transform: translate(0, 0); - } -} @keyframes pop-in-from-right { from { transform: translate(100%, 0); @@ -379,16 +423,34 @@ pre { font-family: Menlo, Monaco, Consolas, "Courier New", monospace; padding: 0.2em; margin: 0; - font-size: 14px; + font-size: 0.875rem; + border-radius: 0.8em; } pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; padding: 10px; + border: 1px solid var(--color-accent); } pre code { padding: 0; font-size: 100%; } +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} blockquote { margin: 1em 0; @@ -404,13 +466,12 @@ blockquote { padding: 0 0 0 20px; margin: 0; } -.tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, +.tsd-typography h4, .tsd-typography h5, .tsd-typography h6 { font-size: 1em; - margin: 0; } .tsd-typography h5, .tsd-typography h6 { @@ -421,108 +482,18 @@ blockquote { .tsd-typography ol { margin: 1em 0; } - -@media (min-width: 901px) and (max-width: 1024px) { - html .col-content { - width: 72%; - } - html .col-menu { - width: 28%; - } - html .tsd-navigation { - padding-left: 10px; - } -} -@media (max-width: 900px) { - html .col-content { - float: none; - width: 100%; - } - html .col-menu { - position: fixed !important; - overflow: auto; - -webkit-overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - width: 100%; - padding: 20px 20px 0 0; - max-width: 450px; - visibility: hidden; - background-color: var(--color-panel); - transform: translate(100%, 0); - } - html .col-menu > *:last-child { - padding-bottom: 20px; - } - html .overlay { - content: ""; - display: block; - position: fixed; - z-index: 1023; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.75); - visibility: hidden; - } - - .to-has-menu .overlay { - animation: fade-in 0.4s; - } - - .to-has-menu :is(header, footer, .col-content) { - animation: shift-to-left 0.4s; - } - - .to-has-menu .col-menu { - animation: pop-in-from-right 0.4s; - } - - .from-has-menu .overlay { - animation: fade-out 0.4s; - } - - .from-has-menu :is(header, footer, .col-content) { - animation: unshift-to-left 0.4s; - } - - .from-has-menu .col-menu { - animation: pop-out-to-right 0.4s; - } - - .has-menu body { - overflow: hidden; - } - .has-menu .overlay { - visibility: visible; - } - .has-menu :is(header, footer, .col-content) { - transform: translate(-25%, 0); - } - .has-menu .col-menu { - visibility: visible; - transform: translate(0, 0); - display: grid; - grid-template-rows: auto 1fr; - max-height: 100vh; - } - .has-menu .tsd-navigation { - max-height: 100%; - } +.tsd-typography table { + border-collapse: collapse; + border: none; } - -.tsd-page-title { - padding: 70px 0 20px 0; - margin: 0 0 40px 0; - background: var(--color-panel); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); } -.tsd-page-title h1 { - margin: 0; +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); } .tsd-breadcrumb { @@ -544,32 +515,44 @@ blockquote { content: " / "; } -dl.tsd-comment-tags { +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; overflow: hidden; + margin: 0.5em 0; } -dl.tsd-comment-tags dt { - float: left; - padding: 1px 5px; - margin: 0 10px 0 0; - border-radius: 4px; - border: 1px solid var(--color-comment-tag); - color: var(--color-comment-tag); - font-size: 0.8em; +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; font-weight: normal; } -dl.tsd-comment-tags dd { - margin: 0 0 10px 0; +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; } -dl.tsd-comment-tags dd:before, -dl.tsd-comment-tags dd:after { - display: table; + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { content: " "; } -dl.tsd-comment-tags dd pre, -dl.tsd-comment-tags dd:after { +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { clear: both; } -dl.tsd-comment-tags p { +dl.tsd-comment-tag-group p { margin: 0; } @@ -582,201 +565,130 @@ dl.tsd-comment-tags p { margin-bottom: 0; } -.toggle-protected .tsd-is-private { - display: none; -} - -.toggle-public .tsd-is-private, -.toggle-public .tsd-is-protected, -.toggle-public .tsd-is-private-protected { - display: none; +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; } - -.toggle-inherited .tsd-is-inherited { - display: none; +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; } - -.toggle-externals .tsd-is-external { - display: none; +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; } - -#tsd-filter { - position: relative; - display: inline-block; - height: 40px; - vertical-align: bottom; +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; } -.no-filter #tsd-filter { - display: none; +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; } -#tsd-filter .tsd-filter-group { - display: inline-block; - height: 40px; - vertical-align: bottom; - white-space: nowrap; +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; } -#tsd-filter input { - display: none; +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); } -@media (max-width: 900px) { - #tsd-filter .tsd-filter-group { - display: block; - position: absolute; - top: 40px; - right: 20px; - height: auto; - background-color: var(--color-panel); - visibility: hidden; - transform: translate(50%, 0); - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - } - .has-options #tsd-filter .tsd-filter-group { - visibility: visible; - } - .to-has-options #tsd-filter .tsd-filter-group { - animation: fade-in 0.2s; - } - .from-has-options #tsd-filter .tsd-filter-group { - animation: fade-out 0.2s; - } - #tsd-filter label, - #tsd-filter .tsd-select { - display: block; - padding-right: 20px; - } +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); } - -footer { - border-top: 1px solid var(--color-panel-divider); - background-color: var(--color-panel); +.tsd-checkbox-background { + fill: var(--color-accent); } -footer:after { - content: ""; - display: table; +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); } -footer.with-border-bottom { - border-bottom: 1px solid var(--color-panel-divider); +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; } -footer .tsd-legend-group { - font-size: 0; +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); } -footer .tsd-legend { - display: inline-block; - width: 25%; - padding: 0; - font-size: 16px; - list-style: none; - line-height: 1.333em; - vertical-align: top; + +.tsd-theme-toggle { + padding-top: 0.75rem; } -@media (max-width: 900px) { - footer .tsd-legend { - width: 50%; - } +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; } .tsd-hierarchy { list-style: square; - padding: 0 0 0 20px; margin: 0; } .tsd-hierarchy .target { font-weight: bold; } -.tsd-index-panel .tsd-index-content { - margin-bottom: -30px !important; -} -.tsd-index-panel .tsd-index-section { - margin-bottom: 30px !important; -} -.tsd-index-panel h3 { - margin: 0 -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid var(--color-panel-divider); -} -.tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 3; - -moz-column-count: 3; - -ms-column-count: 3; - -o-column-count: 3; - column-count: 3; - -webkit-column-gap: 20px; - -moz-column-gap: 20px; - -ms-column-gap: 20px; - -o-column-gap: 20px; - column-gap: 20px; - padding: 0; +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { list-style: none; line-height: 1.333em; -} -@media (max-width: 900px) { - .tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 1; - -moz-column-count: 1; - -ms-column-count: 1; - -o-column-count: 1; - column-count: 1; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); } } -@media (min-width: 901px) and (max-width: 1024px) { - .tsd-index-panel ul.tsd-index-list { - -webkit-column-count: 2; - -moz-column-count: 2; - -ms-column-count: 2; - -o-column-count: 2; - column-count: 2; +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); } } -.tsd-index-panel ul.tsd-index-list li { +.tsd-index-panel .tsd-index-list li { -webkit-page-break-inside: avoid; -moz-page-break-inside: avoid; -ms-page-break-inside: avoid; -o-page-break-inside: avoid; page-break-inside: avoid; } -.tsd-index-panel a, -.tsd-index-panel .tsd-parent-kind-module a { - color: var(--color-ts); -} -.tsd-index-panel .tsd-parent-kind-interface a { - color: var(--color-ts-interface); -} -.tsd-index-panel .tsd-parent-kind-enum a { - color: var(--color-ts-enum); -} -.tsd-index-panel .tsd-parent-kind-class a { - color: var(--color-ts-class); -} -.tsd-index-panel .tsd-kind-module a { - color: var(--color-ts); -} -.tsd-index-panel .tsd-kind-interface a { - color: var(--color-ts-interface); -} -.tsd-index-panel .tsd-kind-enum a { - color: var(--color-ts-enum); -} -.tsd-index-panel .tsd-kind-class a { - color: var(--color-ts-class); -} -.tsd-index-panel .tsd-is-private a { - color: var(--color-ts-private); -} .tsd-flag { display: inline-block; - padding: 1px 5px; + padding: 0.25em 0.4em; border-radius: 4px; color: var(--color-comment-tag-text); background-color: var(--color-comment-tag); text-indent: 0; - font-size: 14px; + font-size: 75%; + line-height: 1; font-weight: normal; } .tsd-anchor { - position: absolute; + position: relative; top: -100px; } @@ -784,154 +696,145 @@ footer .tsd-legend { position: relative; } .tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; margin-top: 0; margin-bottom: 0; border-bottom: none; } -.tsd-member [data-tsd-kind] { - color: var(--color-ts); -} -.tsd-member [data-tsd-kind="Interface"] { - color: var(--color-ts-interface); -} -.tsd-member [data-tsd-kind="Enum"] { - color: var(--color-ts-enum); -} -.tsd-member [data-tsd-kind="Class"] { - color: var(--color-ts-class); -} -.tsd-member [data-tsd-kind="Private"] { - color: var(--color-ts-private); -} -.tsd-navigation { - margin: 0 0 0 40px; +.tsd-navigation.settings { + margin: 1rem 0; } -.tsd-navigation a { - display: block; - padding-top: 2px; - padding-bottom: 2px; - border-left: 2px solid transparent; +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.5rem); +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: inline-flex; + align-items: center; + padding: 0.25rem; color: var(--color-text); text-decoration: none; - transition: border-left-color 0.1s; + box-sizing: border-box; } -.tsd-navigation a:hover { +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { text-decoration: underline; } -.tsd-navigation ul { - margin: 0; +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; padding: 0; list-style: none; } -.tsd-navigation li { +.tsd-navigation li, +.tsd-page-navigation li { padding: 0; + max-width: 100%; } - -.tsd-navigation.primary { - padding-bottom: 40px; -} -.tsd-navigation.primary a { - display: block; - padding-top: 6px; - padding-bottom: 6px; -} -.tsd-navigation.primary ul li a { - padding-left: 5px; -} -.tsd-navigation.primary ul li li a { - padding-left: 25px; -} -.tsd-navigation.primary ul li li li a { - padding-left: 45px; -} -.tsd-navigation.primary ul li li li li a { - padding-left: 65px; -} -.tsd-navigation.primary ul li li li li li a { - padding-left: 85px; +.tsd-nested-navigation { + margin-left: 3rem; } -.tsd-navigation.primary ul li li li li li li a { - padding-left: 105px; +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; } -.tsd-navigation.primary > ul { - border-bottom: 1px solid var(--color-panel-divider); +.tsd-small-nested-navigation { + margin-left: 1.5rem; } -.tsd-navigation.primary li { - border-top: 1px solid var(--color-panel-divider); +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; } -.tsd-navigation.primary li.current > a { - font-weight: bold; -} -.tsd-navigation.primary li.label span { - display: block; - padding: 20px 0 6px 5px; - color: var(--color-menu-label); + +.tsd-nested-navigation > li > a, +.tsd-nested-navigation > li > span { + width: calc(100% - 1.75rem - 0.5rem); } -.tsd-navigation.primary li.globals + li > span, -.tsd-navigation.primary li.globals + li > a { - padding-top: 20px; + +.tsd-page-navigation ul { + padding-left: 1.75rem; } -.tsd-navigation.secondary { - max-height: calc(100vh - 1rem - 40px); - overflow: auto; - position: sticky; - top: calc(0.5rem + 40px); - transition: 0.3s; +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; } -.tsd-navigation.secondary.tsd-navigation--toolbar-hide { - max-height: calc(100vh - 1rem); - top: 0.5rem; +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; } -.tsd-navigation.secondary ul { - transition: opacity 0.2s; + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); } -.tsd-navigation.secondary ul li a { - padding-left: 25px; +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ } -.tsd-navigation.secondary ul li li a { - padding-left: 45px; +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ } -.tsd-navigation.secondary ul li li li a { - padding-left: 65px; +.tsd-accordion-summary, +.tsd-accordion-summary a { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + cursor: pointer; } -.tsd-navigation.secondary ul li li li li a { - padding-left: 85px; +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); } -.tsd-navigation.secondary ul li li li li li a { - padding-left: 105px; +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; } -.tsd-navigation.secondary ul li li li li li li a { - padding-left: 125px; +.tsd-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; } -.tsd-navigation.secondary ul.current a { - border-left-color: var(--color-panel-divider); +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; } -.tsd-navigation.secondary li.focus > a, -.tsd-navigation.secondary ul.current li.focus > a { - border-left-color: var(--color-menu-divider-focus); +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; } -.tsd-navigation.secondary li.current { - margin-top: 20px; - margin-bottom: 20px; - border-left-color: var(--color-panel-divider); + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; } -.tsd-navigation.secondary li.current > a { - font-weight: bold; +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); } - -@media (min-width: 901px) { - .menu-sticky-wrap { - position: static; - } +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; } .tsd-panel { - margin: 20px 0; - padding: 20px; - background-color: var(--color-panel); - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; } .tsd-panel:empty { display: none; @@ -939,48 +842,24 @@ footer .tsd-legend { .tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { - margin: 1.5em -20px 10px -20px; - padding: 0 20px 10px 20px; - border-bottom: 1px solid var(--color-panel-divider); + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; } .tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { margin-bottom: 0; - border-bottom: 0; -} -.tsd-panel table { - display: block; - width: 100%; - overflow: auto; - margin-top: 10px; - word-break: normal; - word-break: keep-all; - border-collapse: collapse; -} -.tsd-panel table th { - font-weight: bold; -} -.tsd-panel table th, -.tsd-panel table td { - padding: 6px 13px; - border: 1px solid var(--color-panel-divider); -} -.tsd-panel table tr { - background: var(--color-background); -} -.tsd-panel table tr:nth-child(even) { - background: var(--color-secondary-background); + border-bottom: none; } .tsd-panel-group { - margin: 60px 0; + margin: 4rem 0; } -.tsd-panel-group > h1, -.tsd-panel-group > h2, -.tsd-panel-group > h3 { - padding-left: 20px; - padding-right: 20px; +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; } #tsd-search { @@ -994,8 +873,8 @@ footer .tsd-legend { position: absolute; left: 0; top: 0; - right: 40px; - height: 40px; + right: 2.5rem; + height: 100%; } #tsd-search .field input { box-sizing: border-box; @@ -1016,7 +895,8 @@ footer .tsd-legend { right: -40px; } #tsd-search .field input, -#tsd-search .title { +#tsd-search .title, +#tsd-toolbar-links a { transition: opacity 0.2s; } #tsd-search .results { @@ -1030,21 +910,25 @@ footer .tsd-legend { box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } #tsd-search .results li { - padding: 0 10px; background-color: var(--color-background); + line-height: initial; + padding: 4px; } #tsd-search .results li:nth-child(even) { - background-color: var(--color-panel); + background-color: var(--color-background-secondary); } #tsd-search .results li.state { display: none; } -#tsd-search .results li.current, -#tsd-search .results li:hover { - background-color: var(--color-panel-divider); +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); } #tsd-search .results a { - display: block; + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; } #tsd-search .results a:before { top: 10px; @@ -1054,13 +938,14 @@ footer .tsd-legend { font-weight: normal; } #tsd-search.has-focus { - background-color: var(--color-panel-divider); + background-color: var(--color-accent); } #tsd-search.has-focus .field input { top: 0; opacity: 1; } -#tsd-search.has-focus .title { +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { z-index: 0; opacity: 0; } @@ -1074,32 +959,30 @@ footer .tsd-legend { display: block; } +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + .tsd-signature { - margin: 0 0 1em 0; - padding: 10px; - border: 1px solid var(--color-panel-divider); + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px; overflow-x: auto; } -.tsd-signature.tsd-kind-icon { - padding-left: 30px; -} -.tsd-signature.tsd-kind-icon:before { - top: 10px; - left: 10px; -} -.tsd-panel > .tsd-signature { - margin-left: -20px; - margin-right: -20px; - border-width: 1px 0; -} -.tsd-panel > .tsd-signature.tsd-kind-icon { - padding-left: 40px; -} -.tsd-panel > .tsd-signature.tsd-kind-icon:before { - left: 20px; -} .tsd-signature-symbol { color: var(--color-text-aside); @@ -1114,123 +997,60 @@ footer .tsd-legend { .tsd-signatures { padding: 0; margin: 0 0 1em 0; - border: 1px solid var(--color-panel-divider); + list-style-type: none; } .tsd-signatures .tsd-signature { margin: 0; - border-width: 1px 0 0 0; - transition: background-color 0.1s; -} -.tsd-signatures .tsd-signature:first-child { - border-top-width: 0; -} -.tsd-signatures .tsd-signature.current { - background-color: var(--color-panel-divider); -} -.tsd-signatures.active > .tsd-signature { - cursor: pointer; -} -.tsd-panel > .tsd-signatures { - margin-left: -20px; - margin-right: -20px; + border-color: var(--color-accent); border-width: 1px 0; + transition: background-color 0.1s; } -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { - padding-left: 40px; -} -.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { - left: 20px; -} -.tsd-panel > a.anchor + .tsd-signatures { - border-top-width: 0; - margin-top: -20px; -} - -ul.tsd-descriptions { - position: relative; - overflow: hidden; - padding: 0; - list-style: none; -} -ul.tsd-descriptions.active > .tsd-description { - display: none; -} -ul.tsd-descriptions.active > .tsd-description.current { - display: block; -} -ul.tsd-descriptions.active > .tsd-description.fade-in { - animation: fade-in-delayed 0.3s; -} -ul.tsd-descriptions.active > .tsd-description.fade-out { - animation: fade-out-delayed 0.3s; - position: absolute; - display: block; - top: 0; - left: 0; - right: 0; - opacity: 0; - visibility: hidden; -} -ul.tsd-descriptions h4, -ul.tsd-descriptions .tsd-index-panel h3, -.tsd-index-panel ul.tsd-descriptions h3 { - font-size: 16px; - margin: 1em 0 0.5em 0; +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; } -ul.tsd-parameters, -ul.tsd-type-parameters { +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { list-style: square; margin: 0; padding-left: 20px; } -ul.tsd-parameters > li.tsd-parameter-signature, -ul.tsd-type-parameters > li.tsd-parameter-signature { +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { list-style: none; margin-left: -20px; } -ul.tsd-parameters h5, -ul.tsd-type-parameters h5 { +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { font-size: 16px; margin: 1em 0 0.5em 0; } -ul.tsd-parameters .tsd-comment, -ul.tsd-type-parameters .tsd-comment { - margin-top: -0.5em; -} - .tsd-sources { - font-size: 14px; - color: var(--color-text-aside); - margin: 0 0 1em 0; + margin-top: 1rem; + font-size: 0.875em; } .tsd-sources a { color: var(--color-text-aside); text-decoration: underline; } -.tsd-sources ul, -.tsd-sources p { - margin: 0 !important; -} .tsd-sources ul { list-style: none; padding: 0; } .tsd-page-toolbar { - position: fixed; + position: sticky; z-index: 1; top: 0; left: 0; width: 100%; - height: 40px; - color: var(--color-toolbar-text); - background: var(--color-toolbar); - border-bottom: 1px solid var(--color-panel-divider); - transition: transform 0.3s linear; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; } .tsd-page-toolbar a { - color: var(--color-toolbar-text); + color: var(--color-text); text-decoration: none; } .tsd-page-toolbar a.title { @@ -1239,13 +1059,13 @@ ul.tsd-type-parameters .tsd-comment { .tsd-page-toolbar a.title:hover { text-decoration: underline; } -.tsd-page-toolbar .table-wrap { - display: table; - width: 100%; - height: 40px; +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; } .tsd-page-toolbar .table-cell { - display: table-cell; position: relative; white-space: nowrap; line-height: 40px; @@ -1253,32 +1073,10 @@ ul.tsd-type-parameters .tsd-comment { .tsd-page-toolbar .table-cell:first-child { width: 100%; } - -.tsd-page-toolbar--hide { - transform: translateY(-100%); -} - -.tsd-select .tsd-select-list li:before, -.tsd-select .tsd-select-label:before, -.tsd-widget:before { - content: ""; - display: inline-block; - width: 40px; - height: 40px; - margin: 0 -8px 0 0; - background-image: url(./widgets.png); - background-repeat: no-repeat; - text-indent: -1024px; - vertical-align: bottom; - filter: var(--icon-filter); -} -@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - .tsd-select .tsd-select-list li:before, - .tsd-select .tsd-select-label:before, - .tsd-widget:before { - background-image: url(./widgets@2x.png); - background-size: 320px 40px; - } +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; } .tsd-widget { @@ -1286,7 +1084,9 @@ ul.tsd-type-parameters .tsd-comment { overflow: hidden; opacity: 0.8; height: 40px; - transition: opacity 0.1s, background-color 0.2s; + transition: + opacity 0.1s, + background-color 0.2s; vertical-align: bottom; cursor: pointer; } @@ -1295,7 +1095,7 @@ ul.tsd-type-parameters .tsd-comment { } .tsd-widget.active { opacity: 1; - background-color: var(--color-panel-divider); + background-color: var(--color-accent); } .tsd-widget.no-caption { width: 40px; @@ -1303,25 +1103,11 @@ ul.tsd-type-parameters .tsd-comment { .tsd-widget.no-caption:before { margin: 0; } -.tsd-widget.search:before { - background-position: 0 0; -} -.tsd-widget.menu:before { - background-position: -40px 0; -} -.tsd-widget.options:before { - background-position: -80px 0; -} + .tsd-widget.options, .tsd-widget.menu { display: none; } -@media (max-width: 900px) { - .tsd-widget.options, - .tsd-widget.menu { - display: inline-block; - } -} input[type="checkbox"] + .tsd-widget:before { background-position: -120px 0; } @@ -1329,85 +1115,269 @@ input[type="checkbox"]:checked + .tsd-widget:before { background-position: -160px 0; } -.tsd-select { - position: relative; - display: inline-block; - height: 40px; - transition: opacity 0.1s, background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-select .tsd-select-label { - opacity: 0.6; - transition: opacity 0.2s; +img { + max-width: 100%; } -.tsd-select .tsd-select-label:before { - background-position: -240px 0; + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); } -.tsd-select.active .tsd-select-label { - opacity: 0.8; + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; } -.tsd-select.active .tsd-select-list { + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { visibility: visible; - opacity: 1; - transition-delay: 0s; } -.tsd-select .tsd-select-list { - position: absolute; - visibility: hidden; - top: 40px; - left: 0; - margin: 0; - padding: 0; - opacity: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); - transition: visibility 0s 0.2s, opacity 0.2s; + +.deprecated { + text-decoration: line-through !important; } -.tsd-select .tsd-select-list li { - padding: 0 20px 0 0; - background-color: var(--color-background); + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); } -.tsd-select .tsd-select-list li:before { - background-position: 40px 0; +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); } -.tsd-select .tsd-select-list li:nth-child(even) { - background-color: var(--color-panel); +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); } -.tsd-select .tsd-select-list li:hover { - background-color: var(--color-panel-divider); +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); } -.tsd-select .tsd-select-list li.selected:before { - background-position: -200px 0; +.tsd-kind-parameter { + color: var(--color-ts-parameter); } -@media (max-width: 900px) { - .tsd-select .tsd-select-list { +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; top: 0; - left: auto; - right: 100%; - margin-right: -5px; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; } - .tsd-select .tsd-select-label:before { - background-position: -280px 0; + + .to-has-menu .overlay { + animation: fade-in 0.4s; } -} -img { - max-width: 100%; -} + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } -.tsd-anchor-icon { - margin-left: 10px; - vertical-align: middle; - color: var(--color-text); + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } } -.tsd-anchor-icon svg { - width: 1em; - height: 1em; - visibility: hidden; +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } } -.tsd-anchor-link:hover > .tsd-anchor-icon svg { - visibility: visible; +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } } diff --git a/docs/assets/widgets.png b/docs/assets/widgets.png deleted file mode 100644 index c7380532ac1b45400620011c37c4dcb7aec27a4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoH8@y+q^jrZML>b&o-U3d6^w6h1+IPUz|;DW zIZ;96kdsD>Qv^q=09&hp0GpEni<1IR%gvP3v%OR9*{MuRTKWHZyIbuBt)Ci`cU_&% z1T+i^Y)o{%281-<3TpPAUTzw5v;RY=>1rvxmPl96#kYc9hX!6V^nB|ad#(S+)}?8C zr_H+lT3B#So$T=?$(w3-{rbQ4R<@nsf$}$hwSO)A$8&`(j+wQf=Jwhb0`CvhR5DCf z^OgI)KQemrUFPH+UynC$Y~QHG%DbTVh-Skz{enNU)cV_hPu~{TD7TPZl>0&K>iuE| z7AYn$7)Jrb9GE&SfQW4q&G*@N|4cHI`VakFa5-C!ov&XD)J(qp$rJJ*9e z-sHv}#g*T7Cv048d1v~BEAzM5FztAse#q78WWC^BUCzQ U&wLp6h6BX&boFyt=akR{0G%$)mH+?% diff --git a/docs/assets/widgets@2x.png b/docs/assets/widgets@2x.png deleted file mode 100644 index 4bbbd57272f3b28f47527d4951ad10f950b8ad43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe12~w0Jcmn z@(X6T|9^jgLcx21{)7exgY)a>N6m2F0<`Rqr;B4q1>>88jUdw-7W`c)zLE*mq8W2H z-<&Jl_Hco5BuC5n@AbF5GD82~-e8-v=#zCyUX0F-o}8pPfAv`!GN$ff+TL<~@kgt} z62eO?_|&+>xBmM$@p|z`tIKEdpPf8%qI>4r7@jn<=eta*{3~?g(zz{Ke9zc-G^gr? z-7foa?LcS!hmbwzru}ICvbWLlW8;+l-}!^=c32!^nV`+`C*;0-*Y%l94pC;Cb3GXz zzSf%a!{gVr{Y_lVuUj+a)*Ca+!-Hu%xmP&&X-2CuANY8^i{D7Kg6qzP zXz_ps9+lN8ESH{K4`yu&b~I>N9xGlE&;2u*b?+Go!AhN?m-bxlLvtC#MzDF2kFzfHJ1W7ybqdefSqVhbOykd*Yi%EDuhs z4wF{ft^bv2+DDnKb8gj1FuvcV`M}luS>lO<^)8x>y1#R;a=-ZKwWTQQb)ioBbi;zh zD!f5V)8581to1LL7c9!l^PSC$NBPYif!_vAZhmL4)v4U)4UsrLYiH_9rmQDd?)(e5 z^pcH>qvBg*i0dus2r*mp4;zKvu=P#s-ti;2obl`NjjwoYd>e(oo#j_uyRb<7Pv^If zzZ|mGHmV)8^tbO%^>eqMw(@7(&3g{jEp-Najo7V75xI_ZHK*FA`elF{r5}E*d7+j_R diff --git a/docs/classes/Away.html b/docs/classes/Away.html new file mode 100644 index 0000000..11de201 --- /dev/null +++ b/docs/classes/Away.html @@ -0,0 +1,38 @@ +Away | tplink-smarthome-api

Hierarchy

  • Away

Constructors

  • Parameters

    • device: Plug
    • apiModuleName: string
    • childId: undefined | string = undefined

    Returns Away

Properties

apiModuleName: string
childId: undefined | string = undefined
device: Plug

Methods

  • Adds Away Rule.

    +

    Sends anti_theft.add_rule command and returns rule id. Support childId.

    +

    Parameters

    Returns Promise<unknown>

    parsed JSON response

    +
  • Deletes All Away Rules.

    +

    Sends anti_theft.delete_all_rules command. Support childId.

    +

    Parameters

    Returns Promise<unknown>

    parsed JSON response

    +
  • Deletes Away Rule.

    +

    Sends anti_theft.delete_rule command. Support childId.

    +

    Parameters

    Returns Promise<unknown>

    parsed JSON response

    +
  • Edits Away rule.

    +

    Sends anti_theft.edit_rule command and returns rule id. Support childId.

    +

    Parameters

    Returns Promise<unknown>

    parsed JSON response

    +
  • Gets Away Rule.

    +

    Requests anti_theft.get_rules and return rule matching Id. Support childId.

    +

    Parameters

    Returns Promise<{
        id: string;
    } & HasErrCode>

  • Enables or Disables Away Rules.

    +

    Sends anti_theft.set_overall_enable command. Support childId.

    +

    Parameters

    • enable: boolean | 0 | 1
    • Optional sendOptions: SendOptions

    Returns Promise<unknown>

    parsed JSON response

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/Bulb.html b/docs/classes/Bulb.html index 6906e96..f9afbd8 100644 --- a/docs/classes/Bulb.html +++ b/docs/classes/Bulb.html @@ -1,218 +1,277 @@ -Bulb | tplink-smarthome-api
Options
All
  • Public
  • Public/Protected
  • All
Menu
-

Bulb Device.

-
fires

Bulb#emeter-realtime-update

-
fires

Bulb#lightstate-on

-
fires

Bulb#lightstate-off

-
fires

Bulb#lightstate-change

-
fires

Bulb#lightstate-update

-
fires

Bulb#lightstate-sysinfo-on

-
fires

Bulb#lightstate-sysinfo-off

-
fires

Bulb#lightstate-sysinfo-change

-
fires

Bulb#lightstate-sysinfo-update

-

Hierarchy

Index

Constructors

Properties

apiModules: { cloud: string; emeter: string; lightingservice: string; netif: string; schedule: string; system: string; timesetting: string } = ...

Type declaration

  • cloud: string
  • emeter: string
  • lightingservice: string
  • netif: string
  • schedule: string
  • system: string
  • timesetting: string
client: Client
cloud: default = ...
borrows

Cloud#getInfo as Bulb.cloud#getInfo

-
borrows

Cloud#bind as Bulb.cloud#bind

-
borrows

Cloud#unbind as Bulb.cloud#unbind

-
borrows

Cloud#getFirmwareList as Bulb.cloud#getFirmwareList

-
borrows

Cloud#setServerUrl as Bulb.cloud#setServerUrl

-
defaultSendOptions: SendOptions
emeter: default = ...
borrows

Emeter#realtime as Bulb.emeter#realtime

-
borrows

Emeter#getRealtime as Bulb.emeter#getRealtime

-
borrows

Emeter#getDayStats as Bulb.emeter#getDayStats

-
borrows

Emeter#getMonthStats as Bulb.emeter#getMonthStats

-
borrows

Emeter#eraseStats as Bulb.emeter#eraseStats

-
emitEventsEnabled: boolean = true
host: string
lighting: default
borrows

Lighting#lightState as Bulb.lighting#lightState

-
borrows

Lighting#getLightState as Bulb.lighting#getLightState

-
borrows

Lighting#setLightState as Bulb.lighting#setLightState

-
log: Logger
netif: default = ...
port: number
schedule: default = ...
borrows

Schedule#getNextAction as Bulb.schedule#getNextAction

-
borrows

Schedule#getRules as Bulb.schedule#getRules

-
borrows

Schedule#getRule as Bulb.schedule#getRule

-
borrows

BulbSchedule#addRule as Bulb.schedule#addRule

-
borrows

BulbSchedule#editRule as Bulb.schedule#editRule

-
borrows

Schedule#deleteAllRules as Bulb.schedule#deleteAllRules

-
borrows

Schedule#deleteRule as Bulb.schedule#deleteRule

-
borrows

Schedule#setOverallEnable as Bulb.schedule#setOverallEnable

-
borrows

Schedule#getDayStats as Bulb.schedule#getDayStats

-
borrows

Schedule#getMonthStats as Bulb.schedule#getMonthStats

-
borrows

Schedule#eraseStats as Bulb.schedule#eraseStats

-
supportsEmeter: true = true
time: default = ...
borrows

Time#getTime as Bulb.time#getTime

-
borrows

Time#getTimezone as Bulb.time#getTimezone

-
captureRejectionSymbol: typeof captureRejectionSymbol
captureRejections: boolean
-

Sets or gets the default captureRejection value for all emitters.

-
defaultMaxListeners: number
errorMonitor: typeof errorMonitor
-

This symbol shall be used to install a listener for only monitoring 'error' -events. Listeners installed using this symbol are called before the regular -'error' listeners are called.

-

Installing a listener using this symbol does not change the behavior once an -'error' event is emitted, therefore the process will still crash if no +Bulb | tplink-smarthome-api

Bulb Device.

+

Fires

Bulb#emeter-realtime-update

+

Fires

Bulb#lightstate-on

+

Fires

Bulb#lightstate-off

+

Fires

Bulb#lightstate-change

+

Fires

Bulb#lightstate-update

+

Fires

Bulb#lightstate-sysinfo-on

+

Fires

Bulb#lightstate-sysinfo-off

+

Fires

Bulb#lightstate-sysinfo-change

+

Fires

Bulb#lightstate-sysinfo-update

+

Hierarchy

Constructors

Properties

apiModules: {
    cloud: string;
    emeter: string;
    lightingservice: string;
    netif: string;
    schedule: string;
    system: string;
    timesetting: string;
} = ...

Type declaration

  • cloud: string
  • emeter: string
  • lightingservice: string
  • netif: string
  • schedule: string
  • system: string
  • timesetting: string
client: Client
cloud: Cloud = ...

Borrows

Cloud#getInfo as Bulb.cloud#getInfo

+

Borrows

Cloud#bind as Bulb.cloud#bind

+

Borrows

Cloud#unbind as Bulb.cloud#unbind

+

Borrows

Cloud#getFirmwareList as Bulb.cloud#getFirmwareList

+

Borrows

Cloud#setServerUrl as Bulb.cloud#setServerUrl

+
defaultSendOptions: SendOptions
emeter: Emeter = ...

Borrows

Emeter#realtime as Bulb.emeter#realtime

+

Borrows

Emeter#getRealtime as Bulb.emeter#getRealtime

+

Borrows

Emeter#getDayStats as Bulb.emeter#getDayStats

+

Borrows

Emeter#getMonthStats as Bulb.emeter#getMonthStats

+

Borrows

Emeter#eraseStats as Bulb.emeter#eraseStats

+
emitEventsEnabled: boolean = true
host: string
lighting: Lighting

Borrows

Lighting#lightState as Bulb.lighting#lightState

+

Borrows

Lighting#getLightState as Bulb.lighting#getLightState

+

Borrows

Lighting#setLightState as Bulb.lighting#setLightState

+
log: Logger
netif: Netif = ...
port: number
schedule: BulbSchedule = ...

Borrows

Schedule#getNextAction as Bulb.schedule#getNextAction

+

Borrows

Schedule#getRules as Bulb.schedule#getRules

+

Borrows

Schedule#getRule as Bulb.schedule#getRule

+

Borrows

BulbSchedule#addRule as Bulb.schedule#addRule

+

Borrows

BulbSchedule#editRule as Bulb.schedule#editRule

+

Borrows

Schedule#deleteAllRules as Bulb.schedule#deleteAllRules

+

Borrows

Schedule#deleteRule as Bulb.schedule#deleteRule

+

Borrows

Schedule#setOverallEnable as Bulb.schedule#setOverallEnable

+

Borrows

Schedule#getDayStats as Bulb.schedule#getDayStats

+

Borrows

Schedule#getMonthStats as Bulb.schedule#getMonthStats

+

Borrows

Schedule#eraseStats as Bulb.schedule#eraseStats

+
supportsEmeter: true = true
time: Time = ...

Borrows

Time#getTime as Bulb.time#getTime

+

Borrows

Time#getTimezone as Bulb.time#getTimezone

+
captureRejectionSymbol: typeof captureRejectionSymbol

Value: Symbol.for('nodejs.rejection')

+

See how to write a custom rejection handler.

+

Since

v13.4.0, v12.16.0

+
captureRejections: boolean

Value: boolean

+

Change the default captureRejections option on all new EventEmitter objects.

+

Since

v13.4.0, v12.16.0

+
defaultMaxListeners: number

By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListenersproperty can be used. If this value is not a positive number, a RangeErroris thrown.

+

Take caution when setting the events.defaultMaxListeners because the +change affects allEventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

+

This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any singleEventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners()methods can be used to +temporarily avoid this warning:

+
import { EventEmitter } from 'node:events';
const emitter = new EventEmitter();
emitter.setMaxListeners(emitter.getMaxListeners() + 1);
emitter.once('event', () => {
// do stuff
emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
}); +
+

The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

+

The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

+

Since

v0.11.2

+
errorMonitor: typeof errorMonitor

This symbol shall be used to install a listener for only monitoring 'error'events. Listeners installed using this symbol are called before the regular'error' listeners are called.

+

Installing a listener using this symbol does not change the behavior once an'error' event is emitted. Therefore, the process will still crash if no regular 'error' listener is installed.

-

Accessors

  • get alias(): string
  • get childId(): undefined | string
  • get colorTemperatureRange(): null | { max: number; min: number }
  • -

    Returns array with min and max supported color temperatures

    -

    Returns null | { max: number; min: number }

    range in kelvin {min,max} or null if not supported

    -
  • get description(): undefined | string
  • -

    Cached value of sysinfo.[description|dev_name].

    -

    Returns undefined | string

  • get deviceId(): string
  • get deviceType(): "bulb"
  • get hardwareVersion(): string
  • get id(): string
  • get mac(): string
  • get macNormalized(): string
  • -

    Normalized cached value of sysinfo.[mac|mic_mac|ethernet_mac]

    -

    Removes all non alphanumeric characters and makes uppercase +

    Since

    v13.6.0, v12.17.0

    +

Accessors

  • get colorTemperatureRange(): null | {
        max: number;
        min: number;
    }
  • Returns array with min and max supported color temperatures

    +

    Returns null | {
        max: number;
        min: number;
    }

    range in kelvin {min,max} or null if not supported

    +
  • get description(): undefined | string
  • Cached value of sysinfo.[description|dev_name].

    +

    Returns undefined | string

  • get deviceType(): "bulb"
  • Type of device (or device if unknown).

    +

    Based on cached value of sysinfo.[type|mic_type]

    +

    Returns "bulb"

  • get mac(): string
  • Cached value of sysinfo.[mac|mic_mac|ethernet_mac].

    +

    Returns string

  • get macNormalized(): string
  • Normalized cached value of sysinfo.[mac|mic_mac|ethernet_mac]

    +

    Removes all non alphanumeric characters and makes uppercase aa:bb:cc:00:11:22 will be normalized to AABBCC001122

    -

Returns string

  • get model(): string
  • get name(): string
  • get softwareVersion(): string
  • get supportsBrightness(): boolean
  • -

    Cached value of sysinfo.is_dimmable === 1

    -

    Returns boolean

    Cached value of sysinfo.is_dimmable === 1

    -
  • get supportsColor(): boolean
  • -

    Cached value of sysinfo.is_color === 1

    -

    Returns boolean

    Cached value of sysinfo.is_color === 1

    -
  • get supportsColorTemperature(): boolean
  • -

    Cached value of sysinfo.is_variable_color_temp === 1

    -

    Returns boolean

    Cached value of sysinfo.is_variable_color_temp === 1

    -
  • get type(): string

Methods

  • addListener(eventName: string | symbol, listener: (...args: any[]) => void): Bulb
  • -

    Alias for emitter.on(eventName, listener).

    -
    since

    v0.1.26

    -

    Parameters

    • eventName: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

  • closeConnection(): void
  • emit<U>(event: U, ...args: Parameters<BulbEvents[U]>): boolean
  • Type parameters

    • U: keyof BulbEvents

    Parameters

    • event: U
    • Rest ...args: Parameters<BulbEvents[U]>

    Returns boolean

  • eventNames(): (string | symbol)[]
  • -

    Returns an array listing the events for which the emitter has registered +

    Returns string

  • get supportsBrightness(): boolean
  • Cached value of sysinfo.is_dimmable === 1

    +

    Returns boolean

    Cached value of sysinfo.is_dimmable === 1

    +
  • get supportsColor(): boolean
  • Cached value of sysinfo.is_color === 1

    +

    Returns boolean

    Cached value of sysinfo.is_color === 1

    +
  • get supportsColorTemperature(): boolean
  • Cached value of sysinfo.is_variable_color_temp === 1

    +

    Returns boolean

    Cached value of sysinfo.is_variable_color_temp === 1

    +

Methods

  • Parameters

    • error: Error
    • event: string
    • Rest ...args: any[]

    Returns void

  • Alias for emitter.on(eventName, listener).

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

    Since

    v0.1.26

    +
  • Blink Bulb.

    +

    Sends system.lighting.set_light_state command alternating on at full brightness and off number of times at rate, +then sets the light state to its pre-blink state.

    +

    Parameters

    • times: number = 5
    • rate: number = 1000
    • Optional sendOptions: SendOptions

    Returns Promise<boolean>

  • Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

    -
    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] -
    -
    since

    v6.0.0

    -

Returns (string | symbol)[]

  • getInfo(sendOptions?: SendOptions): Promise<Record<string, unknown>>
  • -

    Requests common Bulb status details in a single request.

    +
    import { EventEmitter } from 'node:events';

    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
    +

    Returns (string | symbol)[]

    Since

    v6.0.0

    +
  • Requests common Bulb status details in a single request.

    • system.get_sysinfo
    • cloud.get_sysinfo
    • emeter.get_realtime
    • schedule.get_next_action
    -

    This command is likely to fail on some devices when using UDP transport. +

    This command is likely to fail on some devices when using UDP transport. This defaults to TCP transport unless overridden in sendOptions.

    -

Parameters

  • Optional sendOptions: SendOptions

Returns Promise<Record<string, unknown>>

parsed JSON response

-
  • getMaxListeners(): number
  • -

    Returns the current max listener value for the EventEmitter which is either -set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    -
    since

    v1.0.0

    -

    Returns number

  • getModel(sendOptions?: SendOptions): Promise<string>
  • -

    Gets device's model.

    -

    Requests system.sysinfo and returns model name. Does not support childId.

    -
    throws

    ResponseError

    -

    Parameters

    • Optional sendOptions: SendOptions

    Returns Promise<string>

    parsed JSON response

    -
  • getPowerState(sendOptions?: SendOptions): Promise<boolean>
  • -

    Gets on/off state of Bulb.

    -

    Requests lightingservice.get_light_state and returns true if on_off === 1.

    -
    throws

    ResponseError

    -

    Parameters

    • Optional sendOptions: SendOptions

    Returns Promise<boolean>

  • getSysInfo(sendOptions?: SendOptions): Promise<BulbSysinfo>
  • listenerCount(eventName: string | symbol): number
  • -

    Returns the number of listeners listening to the event named eventName.

    -
    since

    v3.2.0

    -

    Parameters

    • eventName: string | symbol
      -

      The name of the event being listened for

      -

    Returns number

  • listeners(eventName: string | symbol): Function[]
  • -

    Returns a copy of the array of listeners for the event named eventName.

    -
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] -
    -
    since

    v0.1.26

    -

    Parameters

    • eventName: string | symbol

    Returns Function[]

  • off(eventName: string | symbol, listener: (...args: any[]) => void): Bulb
  • -

    Alias for emitter.removeListener().

    -
    since

    v10.0.0

    -

    Parameters

    • eventName: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

  • on<U>(event: U, listener: BulbEvents[U]): Bulb
  • once(eventName: string | symbol, listener: (...args: any[]) => void): Bulb
  • -

    Adds a one-timelistener function for the event named eventName. The +

    Parameters

    Returns Promise<Record<string, unknown>>

    parsed JSON response

    +
  • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

    +

    Returns number

    Since

    v1.0.0

    +
  • Gets device's model.

    +

    Requests system.sysinfo and returns model name. Does not support childId.

    +

    Parameters

    Returns Promise<string>

    parsed JSON response

    +
  • Gets on/off state of Bulb.

    +

    Requests lightingservice.get_light_state and returns true if on_off === 1.

    +

    Parameters

    Returns Promise<boolean>

  • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

    +

    Parameters

    • eventName: string | symbol

      The name of the event being listened for

      +
    • Optional listener: Function

      The event handler function

      +

    Returns number

    Since

    v3.2.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +
    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ] +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v0.1.26

    +
  • Alias for emitter.removeListener().

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

    Since

    v10.0.0

    +
  • Adds a one-timelistener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

    -
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); -
    +
    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +

    Returns a reference to the EventEmitter, so that calls can be chained.

    By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the event listener to the beginning of the listeners array.

    -
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a -
    -
    since

    v0.3.0

    -

    Parameters

    • eventName: string | symbol
      -

      The name of the event.

      -
    • listener: (...args: any[]) => void
      -

      The callback function

      -
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

  • prependListener(eventName: string | symbol, listener: (...args: any[]) => void): Bulb
  • -

    Adds the listener function to the beginning of the listeners array for the +

    import { EventEmitter } from 'node:events';
    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a +
    +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

    Since

    v0.3.0

    +
  • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple times.

    -
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); -
    +
    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    }); +

    Returns a reference to the EventEmitter, so that calls can be chained.

    -
    since

    v6.0.0

    -

    Parameters

    • eventName: string | symbol
      -

      The name of the event.

      -
    • listener: (...args: any[]) => void
      -

      The callback function

      -
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

  • prependOnceListener(eventName: string | symbol, listener: (...args: any[]) => void): Bulb
  • -

    Adds a one-timelistener function for the event named eventName to the_beginning_ of the listeners array. The next time eventName is triggered, this +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

    Since

    v6.0.0

    +
  • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

    -
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); -
    +
    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    }); +

    Returns a reference to the EventEmitter, so that calls can be chained.

    -
    since

    v6.0.0

    -

    Parameters

    • eventName: string | symbol
      -

      The name of the event.

      -
    • listener: (...args: any[]) => void
      -

      The callback function

      -
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

  • rawListeners(eventName: string | symbol): Function[]
  • -

    Returns a copy of the array of listeners for the event named eventName, +

    Parameters

    • eventName: string | symbol

      The name of the event.

      +
    • listener: ((...args) => void)

      The callback function

      +
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

    Since

    v6.0.0

    +
  • Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

    -
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); -
    -
    since

    v9.4.0

    -

    Parameters

    • eventName: string | symbol

    Returns Function[]

  • reboot(delay: number, sendOptions?: SendOptions): Promise<unknown>
  • -

    Reboot device.

    -

    Sends system.reboot command. Does not support childId.

    -
    throws

    ResponseError

    -

    Parameters

    • delay: number
    • Optional sendOptions: SendOptions

    Returns Promise<unknown>

    parsed JSON response

    -
  • removeAllListeners(event?: string | symbol): Bulb
  • -

    Removes all listeners, or those of the specified eventName.

    -

    It is bad practice to remove listeners added elsewhere in the code, +

    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log'); +
    +

    Parameters

    • eventName: string | symbol

    Returns Function[]

    Since

    v9.4.0

    +
  • Reboot device.

    +

    Sends system.reboot command. Does not support childId.

    +

    Parameters

    Returns Promise<unknown>

    parsed JSON response

    +
  • Removes all listeners, or those of the specified eventName.

    +

    It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

    Returns a reference to the EventEmitter, so that calls can be chained.

    -
    since

    v0.1.26

    -

    Parameters

    • Optional event: string | symbol

    Returns Bulb

  • removeListener(eventName: string | symbol, listener: (...args: any[]) => void): Bulb
  • -

    Removes the specified listener from the listener array for the event namedeventName.

    -
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); -
    +

    Parameters

    • Optional event: string | symbol

    Returns Bulb

    Since

    v0.1.26

    +
  • Removes the specified listener from the listener array for the event namedeventName.

    +
    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback); +

    removeListener() will remove, at most, one instance of a listener from the listener array. If any single listener has been added multiple times to the listener array for the specified eventName, then removeListener() must be called multiple times to remove each instance.

    Once an event is emitted, all listeners attached to it at the -time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and_before_ the last listener finishes execution will -not remove them fromemit() in progress. Subsequent events behave as expected.

    -
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A -
    +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

    +
    import { EventEmitter } from 'node:events';
    class MyEmitter extends EventEmitter {}
    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A +

    Because listeners are managed using an internal array, calling this will change the position indices of any listener registered after the listener being removed. This will not impact the order in which listeners are called, @@ -221,23 +280,19 @@

    When a single function has been added as a handler multiple times for a single event (as in the example below), removeListener() will remove the most recently added instance. In the example the once('ping')listener is removed:

    -
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); -
    +
    import { EventEmitter } from 'node:events';
    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping'); +

    Returns a reference to the EventEmitter, so that calls can be chained.

    -
    since

    v0.1.26

    -

    Parameters

    • eventName: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

  • reset(delay: number, sendOptions?: SendOptions): Promise<unknown>
  • -

    Reset device.

    -

    Sends system.reset command. Does not support childId.

    -
    throws

    ResponseError

    -

    Parameters

    • delay: number
    • Optional sendOptions: SendOptions

    Returns Promise<unknown>

    parsed JSON response

    -
  • send(payload: string | Record<string, unknown>, sendOptions?: SendOptions): Promise<string>
  • -

    Sends payload to device (using {@link Client#send})

    -

    Parameters

    • payload: string | Record<string, unknown>
      -

      payload to send to device, if object, converted to string via JSON.stringify

      -
    • Optional sendOptions: SendOptions

    Returns Promise<string>

    parsed JSON response

    -
  • sendCommand(command: string | Record<string, unknown>, childIds?: undefined | string | string[], sendOptions?: SendOptions): Promise<unknown>
  • -

    Sends command(s) to device.

    -

    Calls {@link #send} and processes the response.

    +

    Parameters

    • eventName: string | symbol
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns Bulb

    Since

    v0.1.26

    +
  • Reset device.

    +

    Sends system.reset command. Does not support childId.

    +

    Parameters

    Returns Promise<unknown>

    parsed JSON response

    +
  • Sends payload to device (using Client#send)

    +

    Parameters

    • payload: string | Record<string, unknown>

      payload to send to device, if object, converted to string via JSON.stringify

      +
    • Optional sendOptions: SendOptions

    Returns Promise<string>

    parsed JSON response

    +
  • Sends command(s) to device.

    +

    Calls Device#send and processes the response.

    • Adds context.child_ids:[] to the command.

        @@ -249,126 +304,110 @@
        • Promise fulfills with specific parsed JSON response for command.
          Example: {system:{get_sysinfo:{}}}
          • resolves to: {err_code:0,...}\
          • -
          • instead of: {system:{get_sysinfo:{err_code:0,...}}} (as {@link #send} would)
          • +
          • instead of: {system:{get_sysinfo:{err_code:0,...}}} (as Device#send would)
      • If more than one operation was sent:

          -
        • Promise fulfills with full parsed JSON response (same as {@link #send})
        • +
        • Promise fulfills with full parsed JSON response (same as Device#send)
      -

      Also, the response's err_code(s) are checked, if any are missing or != 0 the Promise is rejected with ResponseError.

      -
    throws

    ResponseError

    -

    Parameters

    • command: string | Record<string, unknown>
    • childIds: undefined | string | string[] = ...
    • Optional sendOptions: SendOptions

    Returns Promise<unknown>

    parsed JSON response

    -
  • setAlias(alias: string, sendOptions?: SendOptions): Promise<boolean>
  • -

    Change device's alias (name).

    -

    Sends system.set_dev_alias command. Supports childId.

    -
    throws

    ResponseError

    -

    Parameters

    • alias: string
    • Optional sendOptions: SendOptions

    Returns Promise<boolean>

    parsed JSON response

    -
  • setLocation(latitude: number, longitude: number, sendOptions?: SendOptions): Promise<Record<string, unknown>>
  • -

    Set device's location.

    -

    Sends system.set_dev_location command. Does not support childId.

    -
    throws

    ResponseError

    -

    Parameters

    • latitude: number
    • longitude: number
    • Optional sendOptions: SendOptions

    Returns Promise<Record<string, unknown>>

    parsed JSON response

    -
  • setMaxListeners(n: number): Bulb
  • -

    By default EventEmitters will print a warning if more than 10 listeners are +

    Also, the response's err_code(s) are checked, if any are missing or != 0 the Promise is rejected with ResponseError.

    +

    Parameters

    • command: string | Record<string, unknown>
    • childIds: undefined | string | string[] = ...
    • Optional sendOptions: SendOptions

    Returns Promise<unknown>

    parsed JSON response

    +
  • Change device's alias (name).

    +

    Sends system.set_dev_alias command. Supports childId.

    +

    Parameters

    Returns Promise<boolean>

    parsed JSON response

    +
  • Set device's location.

    +

    Sends system.set_dev_location command. Does not support childId.

    +

    Parameters

    • latitude: number
    • longitude: number
    • Optional sendOptions: SendOptions

    Returns Promise<Record<string, unknown>>

    parsed JSON response

    +
  • By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    -

    Returns a reference to the EventEmitter, so that calls can be chained.

    -
    since

    v0.3.5

    -

    Parameters

    • n: number

    Returns Bulb

  • setPowerState(value: boolean, sendOptions?: SendOptions): Promise<boolean>
  • -

    Sets on/off state of Bulb.

    -

    Sends lightingservice.transition_light_state command with on_off value.

    -
    throws

    ResponseError

    -

    Parameters

    • value: boolean
      -

      true: on, false: off

      -
    • Optional sendOptions: SendOptions

    Returns Promise<boolean>

  • startPolling(interval: number): Bulb
  • -

    Polls the device every interval.

    -

    Returns this (for chaining) that emits events based on state changes. -Refer to specific device sections for event details.

    -
    fires

    Device#polling-error

    -
    deprecated

    This will be removed in a future release.

    -

    Parameters

    • interval: number
      -

      (ms)

      -

    Returns Bulb

  • stopPolling(): void
  • togglePowerState(sendOptions?: SendOptions): Promise<boolean>
  • -

    Toggles state of Bulb.

    -

    Requests lightingservice.get_light_state sets the power state to the opposite of on_off === 1 and returns the new power state.

    -
    throws

    ResponseError

    -

    Parameters

    • Optional sendOptions: SendOptions

    Returns Promise<boolean>

  • getEventListeners(emitter: DOMEventTarget | EventEmitter, name: string | symbol): Function[]
  • -

    Returns a copy of the array of listeners for the event named eventName.

    -

    For EventEmitters this behaves exactly the same as calling .listeners on +

    Returns a reference to the EventEmitter, so that calls can be chained.

    +

    Parameters

    • n: number

    Returns Bulb

    Since

    v0.3.5

    +
  • Sets on/off state of Bulb.

    +

    Sends lightingservice.transition_light_state command with on_off value.

    +

    Parameters

    • value: boolean

      true: on, false: off

      +
    • Optional sendOptions: SendOptions

    Returns Promise<boolean>

  • Toggles state of Bulb.

    +

    Requests lightingservice.get_light_state sets the power state to the opposite of on_off === 1 and returns the new power state.

    +

    Parameters

    Returns Promise<boolean>

  • Experimental

    Listens once to the abort event on the provided signal.

    +

    Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

    +

    This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

    +

    Returns a disposable so that it may be unsubscribed from more easily.

    +
    import { addAbortListener } from 'node:events';

    function example(signal) {
    let disposable;
    try {
    signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
    disposable = addAbortListener(signal, (e) => {
    // Do something when signal is aborted.
    });
    } finally {
    disposable?.[Symbol.dispose]();
    }
    } +
    +

    Parameters

    • signal: AbortSignal
    • resource: ((event) => void)
        • (event): void
        • Parameters

          • event: Event

          Returns void

    Returns Disposable

    Disposable that removes the abort listener.

    +

    Since

    v20.5.0

    +
  • Returns a copy of the array of listeners for the event named eventName.

    +

    For EventEmitters this behaves exactly the same as calling .listeners on the emitter.

    For EventTargets this is the only way to get the event listeners for the event target. This is useful for debugging and diagnostic purposes.

    -
    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    } -
    -
    since

    v15.2.0, v14.17.0

    -

    Parameters

    • emitter: DOMEventTarget | EventEmitter
    • name: string | symbol

    Returns Function[]

  • listenerCount(emitter: EventEmitter, eventName: string | symbol): number
  • -

    A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    -
    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 -
    -
    since

    v0.9.12

    -
    deprecated

    Since v3.2.0 - Use listenerCount instead.

    -

    Parameters

    • emitter: EventEmitter
      -

      The emitter to query

      -
    • eventName: string | symbol
      -

      The event name

      -

    Returns number

  • on(emitter: EventEmitter, eventName: string, options?: StaticEventEmitterOptions): AsyncIterableIterator<any>
  • -

    ```js -const { on, EventEmitter } = require('events');

    -

    (async () => { - const ee = new EventEmitter();

    -

    // Emit later on - process.nextTick(() => { - ee.emit('foo', 'bar'); - ee.emit('foo', 42); - });

    -

    for await (const event of on(ee, 'foo')) { - // The execution of this inner block is synchronous and it - // processes one event at a time (even with await). Do not use - // if concurrent execution is required. - console.log(event); // prints ['bar'] [42] - } - // Unreachable here -})();

    -

    Returns an `AsyncIterator` that iterates `eventName` events. It will throw
    if the `EventEmitter` emits `'error'`. It removes all listeners when
    exiting the loop. The `value` returned by each iteration is an array
    composed of the emitted event arguments.

    An `AbortSignal` can be used to cancel waiting on events:

    ```js
    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); -
    -
    since

    v13.6.0, v12.16.0

    -

    Parameters

    • emitter: EventEmitter
    • eventName: string
      -

      The name of the event being listened for

      -
    • Optional options: StaticEventEmitterOptions

    Returns AsyncIterableIterator<any>

    that iterates eventName events emitted by the emitter

    -
  • once(emitter: NodeEventTarget, eventName: string | symbol, options?: StaticEventEmitterOptions): Promise<any[]>
  • once(emitter: DOMEventTarget, eventName: string, options?: StaticEventEmitterOptions): Promise<any[]>
  • -

    Creates a Promise that is fulfilled when the EventEmitter emits the given +

    import { getEventListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget
    • name: string | symbol

    Returns Function[]

    Since

    v15.2.0, v14.17.0

    +
  • Returns the currently set max amount of listeners.

    +

    For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

    +

    For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

    +
    import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

    {
    const ee = new EventEmitter();
    console.log(getMaxListeners(ee)); // 10
    setMaxListeners(11, ee);
    console.log(getMaxListeners(ee)); // 11
    }
    {
    const et = new EventTarget();
    console.log(getMaxListeners(et)); // 10
    setMaxListeners(11, et);
    console.log(getMaxListeners(et)); // 11
    } +
    +

    Parameters

    • emitter: EventEmitter | _DOMEventTarget

    Returns number

    Since

    v19.9.0

    +
  • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

    +
    import { EventEmitter, listenerCount } from 'node:events';

    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2 +
    +

    Parameters

    • emitter: EventEmitter

      The emitter to query

      +
    • eventName: string | symbol

      The event name

      +

    Returns number

    Since

    v0.9.12

    +

    Deprecated

    Since v3.2.0 - Use listenerCount instead.

    +
  • import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here +
    +

    Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

    +

    An AbortSignal can be used to cancel waiting on events:

    +
    import { on, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort()); +
    +

    Parameters

    • emitter: EventEmitter
    • eventName: string

      The name of the event being listened for

      +
    • Optional options: StaticEventEmitterOptions

    Returns AsyncIterableIterator<any>

    that iterates eventName events emitted by the emitter

    +

    Since

    v13.6.0, v12.16.0

    +
  • Creates a Promise that is fulfilled when the EventEmitter emits the given event or that is rejected if the EventEmitter emits 'error' while waiting. The Promise will resolve with an array of all the arguments emitted to the given event.

    -

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +

    This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event semantics and does not listen to the 'error' event.

    -
    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run(); -
    +
    import { once, EventEmitter } from 'node:events';
    import process from 'node:process';

    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.error('error happened', err);
    } +

    The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the 'error' event itself, then it is treated as any other kind of event without special handling:

    -
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom -
    +
    import { EventEmitter, once } from 'node:events';

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.error('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom +

    An AbortSignal can be used to cancel waiting for the event:

    -
    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled! -
    -
    since

    v11.13.0, v10.16.0

    -

    Parameters

    • emitter: NodeEventTarget
    • eventName: string | symbol
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

  • Parameters

    • emitter: DOMEventTarget
    • eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

  • setMaxListeners(n?: number, ...eventTargets: (DOMEventTarget | EventEmitter)[]): void
  • -

    By default EventEmitters will print a warning if more than 10 listeners are -added for a particular event. This is a useful default that helps finding -memory leaks. The EventEmitter.setMaxListeners() method allows the default limit to be -modified (if eventTargets is empty) or modify the limit specified in every EventTarget | EventEmitter passed as arguments. -The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

    -
    EventEmitter.setMaxListeners(20);
    // Equivalent to
    EventEmitter.defaultMaxListeners = 20;

    const eventTarget = new EventTarget();
    // Only way to increase limit for `EventTarget` instances
    // as these doesn't expose its own `setMaxListeners` method
    EventEmitter.setMaxListeners(20, eventTarget); -
    -
    since

    v15.3.0, v14.17.0

    -

    Parameters

    • Optional n: number
    • Rest ...eventTargets: (DOMEventTarget | EventEmitter)[]

    Returns void

Legend

  • Constructor
  • Property
  • Method
  • Inherited constructor
  • Inherited property
  • Inherited method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +
import { EventEmitter, once } from 'node:events';

const ee = new EventEmitter();
const ac = new AbortController();

async function foo(emitter, event, signal) {
try {
await once(emitter, event, { signal });
console.log('event emitted!');
} catch (error) {
if (error.name === 'AbortError') {
console.error('Waiting for the event was canceled!');
} else {
console.error('There was an error', error.message);
}
}
}

foo(ee, 'foo', ac.signal);
ac.abort(); // Abort waiting for the event
ee.emit('foo'); // Prints: Waiting for the event was canceled! +
+

Parameters

  • emitter: _NodeEventTarget
  • eventName: string | symbol
  • Optional options: StaticEventEmitterOptions

Returns Promise<any[]>

Since

v11.13.0, v10.16.0

+
  • Parameters

    • emitter: _DOMEventTarget
    • eventName: string
    • Optional options: StaticEventEmitterOptions

    Returns Promise<any[]>

    • import { setMaxListeners, EventEmitter } from 'node:events';

      const target = new EventTarget();
      const emitter = new EventEmitter();

      setMaxListeners(5, target, emitter); +
      +

      Parameters

      • Optional n: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

      Returns void

      Since

      v15.4.0

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/BulbSchedule.html b/docs/classes/BulbSchedule.html new file mode 100644 index 0000000..0c4f3b7 --- /dev/null +++ b/docs/classes/BulbSchedule.html @@ -0,0 +1,59 @@ +BulbSchedule | tplink-smarthome-api

    Hierarchy

    • default
      • BulbSchedule

    Constructors

    Properties

    apiModuleName: string
    childId?: string
    device: Bulb
    nextAction: undefined | ScheduleNextActionResponse

    Methods

    • Adds Schedule rule.

      +

      Sends schedule.add_rule command and returns rule id.

      +

      Parameters

      Returns Promise<{
          id: string;
      }>

      parsed JSON response

      +
    • Deletes All Schedule Rules.

      +

      Sends schedule.delete_all_rules command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Deletes Schedule Rule.

      +

      Sends schedule.delete_rule command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Erase Usage Statistics.

      +

      Sends schedule.erase_runtime_stat command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get Daily Usage Statistics.

      +

      Sends schedule.get_daystat command. Supports childId.

      +

      Parameters

      • year: number
      • month: number
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get Monthly Usage Statistics.

      +

      Sends schedule.get_monthstat command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Enables or Disables Schedule Rules.

      +

      Sends schedule.set_overall_enable command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Client.html b/docs/classes/Client.html index 4341dea..9731fff 100644 --- a/docs/classes/Client.html +++ b/docs/classes/Client.html @@ -1,63 +1,219 @@ -Client | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    -

    Client that sends commands to specified devices or discover devices on the local subnet.

    +Client | tplink-smarthome-api

    Client that sends commands to specified devices or discover devices on the local subnet.

    • Contains factory methods to create devices.
    • -
    • Events are emitted after {@link #startDiscovery} is called.
    • +
    • Events are emitted after Client#startDiscovery is called.
    -

    Hierarchy

    • EventEmitter
      • Client

    Implements

    • ClientEventEmitter

    Index

    Constructors

    Properties

    defaultSendOptions: Required<SendOptions> = ...
    devices: Map<string, AnyDeviceDiscovery> = ...
    discoveryPacketSequence: number = 0
    discoveryTimer: null | Timeout = null
    isSocketBound: boolean = false
    log: Logger
    maxSocketId: number = 0
    socket?: Socket

    Methods

    • getDevice(deviceOptions: AnyDeviceOptionsCon, sendOptions?: SendOptions): Promise<AnyDevice>
    • getDeviceFromSysInfo(sysInfo: Sysinfo, deviceOptions: AnyDeviceOptionsCon): AnyDevice
    • getSysInfo(host: string, port?: number, sendOptions?: SendOptions): Promise<Sysinfo>
    • -

      Requests {system:{get_sysinfo:{}}} from device.

      -
      throws

      ResponseError

      -
      throws

      {@link Error}

      -

      Parameters

      • host: string
      • port: number = 9999
      • Optional sendOptions: SendOptions

      Returns Promise<Sysinfo>

      parsed JSON response

      -
    • getTypeFromSysInfo(sysInfo: { type: string } | { mic_type: string }): "bulb" | "plug" | "device"
    • -

      Guess the device type from provided sysInfo.

      -

      Based on sysinfo.[type|mic_type]

      -

      Parameters

      • sysInfo: { type: string } | { mic_type: string }

      Returns "bulb" | "plug" | "device"

    • send(payload: string | Record<string, unknown>, host: string, port?: number, sendOptions?: SendOptions): Promise<string>

    Hierarchy

    • EventEmitter
      • Client

    Constructors

    Properties

    defaultSendOptions: Required<SendOptions> = ...
    devices: Map<string, AnyDeviceDiscovery> = ...
    discoveryPacketSequence: number = 0
    discoveryTimer: null | Timeout = null
    isSocketBound: boolean = false
    log: Logger
    maxSocketId: number = 0
    socket?: Socket
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    Since

    v13.4.0, v12.16.0

    +
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    Since

    v13.4.0, v12.16.0

    +
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListenersproperty can be used. If this value is not a positive number, a RangeErroris thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects allEventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any singleEventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners()methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    Since

    v0.11.2

    +
    errorMonitor: typeof errorMonitor

    This symbol shall be used to install a listener for only monitoring 'error'events. Listeners installed using this symbol are called before the regular'error' listeners are called.

    +

    Installing a listener using this symbol does not change the behavior once an'error' event is emitted. Therefore, the process will still crash if no +regular 'error' listener is installed.

    +

    Since

    v13.6.0, v12.17.0

    +

    Methods

    • Parameters

      • error: Error
      • event: string
      • Rest ...args: any[]

      Returns void

    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Client

      Since

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      +

      Returns (string | symbol)[]

      Since

      v6.0.0

      +
    • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

      +

      Returns number

      Since

      v1.0.0

      +
    • Requests {system:{get_sysinfo:{}}} from device.

      +

      Parameters

      • host: string
      • port: number = 9999
      • Optional sendOptions: SendOptions

      Returns Promise<Sysinfo>

      parsed JSON response

      +

      Throws

      ResponseError

      +

      Throws

      Error

      +
    • Guess the device type from provided sysInfo.

      +

      Based on sysinfo.[type|mic_type]

      +

      Parameters

      • sysInfo: {
            type: string;
        } | {
            mic_type: string;
        }

      Returns "plug" | "bulb" | "device"

    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

        +
      • Optional listener: Function

        The event handler function

        +

      Returns number

      Since

      v3.2.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] +
      +

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v0.1.26

      +
    • Alias for emitter.removeListener().

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Client

      Since

      v10.0.0

      +
    • Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Client

      Since

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Client

      Since

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Client

      Since

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      +

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • Optional event: string | symbol

      Returns Client

      Since

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event namedeventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Client

      Since

      v0.1.26

      +
    • Encrypts payload and sends to device.

      • If payload is not a string, it is JSON.stringify'd.
      • Promise fulfills with encrypted string response.
      -

      Devices use JSON to communicate.
      For Example:

      +

      Devices use JSON to communicate.
      For Example:

      • If a device receives:
        • {"system":{"get_sysinfo":{}}}
      • -
      • It responds with:
          {"system":{"get_sysinfo":{
        err_code: 0,
        sw_ver: "1.0.8 Build 151113 Rel.24658",
        hw_ver: "1.0",
        ...
        }}} -
        -
      • +
      • It responds with:
      +
          {"system":{"get_sysinfo":{
      err_code: 0,
      sw_ver: "1.0.8 Build 151113 Rel.24658",
      hw_ver: "1.0",
      ...
      }}} +

      All responses from device contain an err_code (0 is success).

      -

    Parameters

    • payload: string | Record<string, unknown>
    • host: string
    • port: number = 9999
    • Optional sendOptions: SendOptions

    Returns Promise<string>

    decrypted string response

    -
    • -

      Discover TP-Link Smarthome devices on the network.

      -
        +

      Parameters

      • payload: string | Record<string, unknown>
      • host: string
      • port: number = 9999
      • Optional sendOptions: SendOptions

      Returns Promise<string>

      decrypted string response

      +
    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns Client

      Since

      v0.3.5

      +
    • Discover TP-Link Smarthome devices on the network.

      +
      • Sends a discovery packet (via UDP) to the broadcast address every discoveryInterval(ms).
      • -
      • Stops discovery after discoveryTimeout(ms) (if 0, runs until Client.stopDiscovery is called).
          -
        • If a device does not respond after offlineTolerance number of attempts, {@link Client.device-offline} is emitted.
        • +
        • Stops discovery after discoveryTimeout(ms) (if 0, runs until Client.stopDiscovery is called).
        • If deviceTypes are specified only matching devices are found.
        • @@ -69,17 +225,87 @@
      -
      fires

      Client#error

      -
      fires

      Client#device-new

      -
      fires

      Client#device-online

      -
      fires

      Client#device-offline

      -
      fires

      Client#bulb-new

      -
      fires

      Client#bulb-online

      -
      fires

      Client#bulb-offline

      -
      fires

      Client#plug-new

      -
      fires

      Client#plug-online

      -
      fires

      Client#plug-offline

      -
      fires

      Client#discovery-invalid

      -

    Parameters

    Returns Client

    • stopDiscovery(): void

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +

    Parameters

    Returns Client

    Fires

    Client#error

    +

    Fires

    Client#device-new

    +

    Fires

    Client#device-online

    +

    Fires

    Client#device-offline

    +

    Fires

    Client#bulb-new

    +

    Fires

    Client#bulb-online

    +

    Fires

    Client#bulb-offline

    +

    Fires

    Client#plug-new

    +

    Fires

    Client#plug-online

    +

    Fires

    Client#plug-offline

    +

    Fires

    Client#discovery-invalid

    +
    • Stops discovery and closes UDP socket.

      +

      Returns void

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      +

      Parameters

      • signal: AbortSignal
      • resource: ((event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      Since

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

      +
      import { getEventListeners, EventEmitter } from 'node:events';

      {
      const ee = new EventEmitter();
      const listener = () => console.log('Events are fun');
      ee.on('foo', listener);
      console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
      }
      {
      const et = new EventTarget();
      const listener = () => console.log('Events are fun');
      et.addEventListener('foo', listener);
      console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
      } +
      +

      Parameters

      • emitter: EventEmitter | _DOMEventTarget
      • name: string | symbol

      Returns Function[]

      Since

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

      +
      import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      +

      Parameters

      • emitter: EventEmitter | _DOMEventTarget

      Returns number

      Since

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      +
      import { EventEmitter, listenerCount } from 'node:events';

      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      +

      Parameters

      • emitter: EventEmitter

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      Since

      v0.9.12

      +

      Deprecated

      Since v3.2.0 - Use listenerCount instead.

      +
    • import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here +
      +

      Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); +
      +

      Parameters

      • emitter: EventEmitter
      • eventName: string

        The name of the event being listened for

        +
      • Optional options: StaticEventEmitterOptions

      Returns AsyncIterableIterator<any>

      that iterates eventName events emitted by the emitter

      +

      Since

      v13.6.0, v12.16.0

      +
    • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

      +

      This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

      +
      import { once, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      process.nextTick(() => {
      ee.emit('myevent', 42);
      });

      const [value] = await once(ee, 'myevent');
      console.log(value);

      const err = new Error('kaboom');
      process.nextTick(() => {
      ee.emit('error', err);
      });

      try {
      await once(ee, 'myevent');
      } catch (err) {
      console.error('error happened', err);
      } +
      +

      The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();

      once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.error('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom +
      +

      An AbortSignal can be used to cancel waiting for the event:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
      try {
      await once(emitter, event, { signal });
      console.log('event emitted!');
      } catch (error) {
      if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
      } else {
      console.error('There was an error', error.message);
      }
      }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled! +
      +

      Parameters

      • emitter: _NodeEventTarget
      • eventName: string | symbol
      • Optional options: StaticEventEmitterOptions

      Returns Promise<any[]>

      Since

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: _DOMEventTarget
      • eventName: string
      • Optional options: StaticEventEmitterOptions

      Returns Promise<any[]>

    • import { setMaxListeners, EventEmitter } from 'node:events';

      const target = new EventTarget();
      const emitter = new EventEmitter();

      setMaxListeners(5, target, emitter); +
      +

      Parameters

      • Optional n: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

      Returns void

      Since

      v15.4.0

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Cloud.html b/docs/classes/Cloud.html new file mode 100644 index 0000000..1693c2b --- /dev/null +++ b/docs/classes/Cloud.html @@ -0,0 +1,27 @@ +Cloud | tplink-smarthome-api

    Hierarchy

    • Cloud

    Constructors

    Properties

    apiModuleName: string
    device: AnyDevice
    info: undefined | CloudInfo & HasErrCode

    Methods

    • Add device to TP-Link cloud.

      +

      Sends cloud.bind command. Does not support childId.

      +

      Parameters

      • username: string
      • password: string
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get device's TP-Link cloud firmware list.

      +

      Sends cloud.get_intl_fw_list command. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Sets device's TP-Link cloud server URL.

      +

      Sends cloud.set_server_url command. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Remove device from TP-Link cloud.

      +

      Sends cloud.unbind command. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Device.html b/docs/classes/Device.html index cc67aa6..2998433 100644 --- a/docs/classes/Device.html +++ b/docs/classes/Device.html @@ -1,67 +1,224 @@ -Device | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    -

    TP-Link Device.

    -

    Abstract class. Shared behavior for Plug and Bulb.

    -
    fires

    Device#emeter-realtime-update

    -

    Hierarchy

    Implements

    • DeviceEventEmitter
    • PlugEventEmitter

    Index

    Constructors

    Properties

    apiModules: ApiModuleNamespace
    client: Client
    defaultSendOptions: SendOptions
    host: string
    log: Logger
    netif: default = ...
    port: number
    supportsEmeter: boolean

    Accessors

    • get alias(): string
    • get childId(): undefined | string
    • get description(): undefined | string
    • get deviceId(): string
    • get deviceType(): "bulb" | "plug" | "device"
    • -

      Type of device (or device if unknown).

      -

      Based on cached value of sysinfo.[type|mic_type]

      -

      Returns "bulb" | "plug" | "device"

    • get hardwareVersion(): string
    • get id(): string
    • get mac(): string
    • get macNormalized(): string
    • get model(): string
    • get name(): string
    • get softwareVersion(): string
    • get type(): string

    Methods

    • closeConnection(): void
    • -

      Closes any open network connections including any shared sockets.

      -

      Returns void

    • getInfo(sendOptions?: SendOptions): Promise<Record<string, unknown>>
    • Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<Record<string, unknown>>

    • getModel(sendOptions?: SendOptions): Promise<string>
    • -

      Gets device's model.

      -

      Requests system.sysinfo and returns model name. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<string>

      parsed JSON response

      -
    • getSysInfo(sendOptions?: SendOptions): Promise<Sysinfo>
    • -

      Gets device's SysInfo.

      -

      Requests system.sysinfo from device. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<Sysinfo>

      parsed JSON response

      -
    • reboot(delay: number, sendOptions?: SendOptions): Promise<unknown>
    • -

      Reboot device.

      -

      Sends system.reboot command. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • delay: number
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      -
    • reset(delay: number, sendOptions?: SendOptions): Promise<unknown>
    • -

      Reset device.

      -

      Sends system.reset command. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • delay: number
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      -
    • send(payload: string | Record<string, unknown>, sendOptions?: SendOptions): Promise<string>
    • -

      Sends payload to device (using {@link Client#send})

      -

      Parameters

      • payload: string | Record<string, unknown>
        -

        payload to send to device, if object, converted to string via JSON.stringify

        -
      • Optional sendOptions: SendOptions

      Returns Promise<string>

      parsed JSON response

      -
    • sendCommand(command: string | Record<string, unknown>, childIds?: undefined | string | string[], sendOptions?: SendOptions): Promise<unknown>

    Methods

    • Parameters

      • error: Error
      • event: string
      • Rest ...args: any[]

      Returns void

    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Device

      Since

      v0.1.26

      +
    • Closes any open network connections including any shared sockets.

      +

      Returns void

    • Type Parameters

      • U extends "emeter-realtime-update"

      Parameters

      Returns boolean

    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      +

      Returns (string | symbol)[]

      Since

      v6.0.0

      +
    • Parameters

      Returns Promise<Record<string, unknown>>

    • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

      +

      Returns number

      Since

      v1.0.0

      +
    • Gets device's model.

      +

      Requests system.sysinfo and returns model name. Does not support childId.

      +

      Parameters

      Returns Promise<string>

      parsed JSON response

      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

        +
      • Optional listener: Function

        The event handler function

        +

      Returns number

      Since

      v3.2.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] +
      +

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v0.1.26

      +
    • Alias for emitter.removeListener().

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Device

      Since

      v10.0.0

      +
    • Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Device

      Since

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Device

      Since

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Device

      Since

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      +

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v9.4.0

      +
    • Reboot device.

      +

      Sends system.reboot command. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • Optional event: string | symbol

      Returns Device

      Since

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event namedeventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Device

      Since

      v0.1.26

      +
    • Reset device.

      +

      Sends system.reset command. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Sends payload to device (using Client#send)

      +

      Parameters

      • payload: string | Record<string, unknown>

        payload to send to device, if object, converted to string via JSON.stringify

        +
      • Optional sendOptions: SendOptions

      Returns Promise<string>

      parsed JSON response

      +
    • Sends command(s) to device.

      +

      Calls Device#send and processes the response.

      • Adds context.child_ids:[] to the command.

          @@ -73,39 +230,103 @@
          • Promise fulfills with specific parsed JSON response for command.
            Example: {system:{get_sysinfo:{}}}
            • resolves to: {err_code:0,...}\
            • -
            • instead of: {system:{get_sysinfo:{err_code:0,...}}} (as {@link #send} would)
            • +
            • instead of: {system:{get_sysinfo:{err_code:0,...}}} (as Device#send would)
        • If more than one operation was sent:

            -
          • Promise fulfills with full parsed JSON response (same as {@link #send})
          • +
          • Promise fulfills with full parsed JSON response (same as Device#send)
        -

        Also, the response's err_code(s) are checked, if any are missing or != 0 the Promise is rejected with ResponseError.

        -
      throws

      ResponseError

      -

    Parameters

    • command: string | Record<string, unknown>
    • childIds: undefined | string | string[] = ...
    • Optional sendOptions: SendOptions

    Returns Promise<unknown>

    parsed JSON response

    -
    • setAlias(alias: string, sendOptions?: SendOptions): Promise<boolean>
    • -

      Change device's alias (name).

      -

      Sends system.set_dev_alias command. Supports childId.

      -
      throws

      ResponseError

      -

      Parameters

      • alias: string
      • Optional sendOptions: SendOptions

      Returns Promise<boolean>

      parsed JSON response

      -
    • setLocation(latitude: number, longitude: number, sendOptions?: SendOptions): Promise<Record<string, unknown>>
    • -

      Set device's location.

      -

      Sends system.set_dev_location command. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • latitude: number
      • longitude: number
      • Optional sendOptions: SendOptions

      Returns Promise<Record<string, unknown>>

      parsed JSON response

      -
    • startPolling(interval: number): Device
    • -

      Polls the device every interval.

      -

      Returns this (for chaining) that emits events based on state changes. -Refer to specific device sections for event details.

      -
      fires

      Device#polling-error

      -
      deprecated

      This will be removed in a future release.

      -

      Parameters

      • interval: number
        -

        (ms)

        -

      Returns Device

    • stopPolling(): void
    • -

      Stops device polling.

      -
      deprecated

      This will be removed in a future release.

      -

      Returns void

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +

    Also, the response's err_code(s) are checked, if any are missing or != 0 the Promise is rejected with ResponseError.

    +

    Parameters

    • command: string | Record<string, unknown>
    • childIds: undefined | string | string[] = ...
    • Optional sendOptions: SendOptions

    Returns Promise<unknown>

    parsed JSON response

    +
    • Change device's alias (name).

      +

      Sends system.set_dev_alias command. Supports childId.

      +

      Parameters

      Returns Promise<boolean>

      parsed JSON response

      +
    • Set device's location.

      +

      Sends system.set_dev_location command. Does not support childId.

      +

      Parameters

      • latitude: number
      • longitude: number
      • Optional sendOptions: SendOptions

      Returns Promise<Record<string, unknown>>

      parsed JSON response

      +
    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns Device

      Since

      v0.3.5

      +
    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      +

      Parameters

      • signal: AbortSignal
      • resource: ((event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      Since

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

      +
      import { getEventListeners, EventEmitter } from 'node:events';

      {
      const ee = new EventEmitter();
      const listener = () => console.log('Events are fun');
      ee.on('foo', listener);
      console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
      }
      {
      const et = new EventTarget();
      const listener = () => console.log('Events are fun');
      et.addEventListener('foo', listener);
      console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
      } +
      +

      Parameters

      • emitter: EventEmitter | _DOMEventTarget
      • name: string | symbol

      Returns Function[]

      Since

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

      +
      import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      +

      Parameters

      • emitter: EventEmitter | _DOMEventTarget

      Returns number

      Since

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      +
      import { EventEmitter, listenerCount } from 'node:events';

      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      +

      Parameters

      • emitter: EventEmitter

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      Since

      v0.9.12

      +

      Deprecated

      Since v3.2.0 - Use listenerCount instead.

      +
    • import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here +
      +

      Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); +
      +

      Parameters

      • emitter: EventEmitter
      • eventName: string

        The name of the event being listened for

        +
      • Optional options: StaticEventEmitterOptions

      Returns AsyncIterableIterator<any>

      that iterates eventName events emitted by the emitter

      +

      Since

      v13.6.0, v12.16.0

      +
    • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

      +

      This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

      +
      import { once, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      process.nextTick(() => {
      ee.emit('myevent', 42);
      });

      const [value] = await once(ee, 'myevent');
      console.log(value);

      const err = new Error('kaboom');
      process.nextTick(() => {
      ee.emit('error', err);
      });

      try {
      await once(ee, 'myevent');
      } catch (err) {
      console.error('error happened', err);
      } +
      +

      The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();

      once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.error('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom +
      +

      An AbortSignal can be used to cancel waiting for the event:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
      try {
      await once(emitter, event, { signal });
      console.log('event emitted!');
      } catch (error) {
      if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
      } else {
      console.error('There was an error', error.message);
      }
      }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled! +
      +

      Parameters

      • emitter: _NodeEventTarget
      • eventName: string | symbol
      • Optional options: StaticEventEmitterOptions

      Returns Promise<any[]>

      Since

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: _DOMEventTarget
      • eventName: string
      • Optional options: StaticEventEmitterOptions

      Returns Promise<any[]>

    • import { setMaxListeners, EventEmitter } from 'node:events';

      const target = new EventTarget();
      const emitter = new EventEmitter();

      setMaxListeners(5, target, emitter); +
      +

      Parameters

      • Optional n: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

      Returns void

      Since

      v15.4.0

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Dimmer.html b/docs/classes/Dimmer.html new file mode 100644 index 0000000..55e4945 --- /dev/null +++ b/docs/classes/Dimmer.html @@ -0,0 +1,69 @@ +Dimmer | tplink-smarthome-api

    Dimmer

    +

    TP-Link models: HS220.

    +

    Hierarchy

    • Dimmer

    Constructors

    Properties

    apiModuleName: string
    device: Plug

    Accessors

    • get brightness(): number
    • Cached value of sysinfo.brightness.

      +

      Returns number

    Methods

    • Get Plug/Dimmer default behavior configuration.

      +

      Requests dimmer.get_default_behavior. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get Plug/Dimmer parameters configuration.

      +

      Requests dimmer.get_dimmer_parameters. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Sets Plug to the specified brightness.

      +

      Sends dimmer.set_brightness command. Does not support childId.

      +

      Parameters

      • brightness: number

        0-100

        +
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Transitions Plug to the specified brightness.

      +

      Sends dimmer.set_dimmer_transition command. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Set Plug/Dimmer default_behavior configuration for double_click.

      +

      Sends dimmer.set_double_click_action. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Set Plug dimmer_parameters for fadeOffTime.

      +

      Sends dimmer.set_fade_off_time. Does not support childId.

      +

      Parameters

      • fadeTime: number

        duration in ms

        +
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Set Plug dimmer_parameters for fadeOnTime.

      +

      Sends dimmer.set_fade_on_time. Does not support childId.

      +

      Parameters

      • fadeTime: number

        duration in ms

        +
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Set Plug dimmer_parameters for gentleOffTime.

      +

      Sends dimmer.set_gentle_off_time. Does not support childId.

      +

      Parameters

      • duration: number

        duration in ms

        +
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Set Plug dimmer_parameters for gentleOnTime.

      +

      Sends dimmer.set_gentle_on_time. Does not support childId.

      +

      Parameters

      • duration: number

        duration in ms

        +
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Set Plug/Dimmer default_behavior configuration for long_press.

      +

      Sends dimmer.set_long_press_action. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Sets Plug to the specified on/off state.

      +

      Sends dimmer.set_switch_state command. Does not support childId.

      +

      Parameters

      • state: boolean | 0 | 1

        true=on, false=off

        +
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Emeter.html b/docs/classes/Emeter.html new file mode 100644 index 0000000..86c5f78 --- /dev/null +++ b/docs/classes/Emeter.html @@ -0,0 +1,30 @@ +Emeter | tplink-smarthome-api

    Hierarchy

    • Emeter

    Constructors

    Properties

    apiModuleName: string
    childId: undefined | string = undefined
    device: AnyDevice

    Accessors

    Methods

    • Erase Emeter Statistics.

      +

      Sends emeter.erase_runtime_stat command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get Daily Emeter Statistics.

      +

      Sends emeter.get_daystat command. Supports childId.

      +

      Parameters

      • year: number
      • month: number
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get Monthly Emeter Statistics.

      +

      Sends emeter.get_monthstat command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Gets device's current energy stats.

      +

      Requests emeter.get_realtime. Older devices return current, voltage, etc, +while newer devices return current_ma, voltage_mv etc +This will return a normalized response including both old and new style properties for backwards compatibility. +Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Lighting.html b/docs/classes/Lighting.html new file mode 100644 index 0000000..91b9963 --- /dev/null +++ b/docs/classes/Lighting.html @@ -0,0 +1,20 @@ +Lighting | tplink-smarthome-api

    Hierarchy

    • Lighting

    Constructors

    Accessors

    • get lightState(): LightState
    • Returns cached results from last retrieval of lightingservice.get_light_state.

      +

      Returns LightState

      cached results from last retrieval of lightingservice.get_light_state.

      +

    Methods

    • Get Bulb light details.

      +

      Requests lightingservice.get_light_details.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Sets Bulb light state (on/off, brightness, color, etc).

      +

      Sends lightingservice.transition_light_state command.

      +

      Parameters

      Returns Promise<true>

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Netif.html b/docs/classes/Netif.html new file mode 100644 index 0000000..854f901 --- /dev/null +++ b/docs/classes/Netif.html @@ -0,0 +1,13 @@ +Netif | tplink-smarthome-api

    Hierarchy

    • Netif

    Constructors

    Properties

    Methods

    Constructors

    Properties

    apiModuleName: string
    device: Device

    Methods

    • Requests netif.get_scaninfo (list of WiFi networks).

      +

      Note that timeoutInSeconds is sent in the request and is not the actual network timeout. +The network timeout for the request is calculated by adding the +default network timeout to timeoutInSeconds.

      +

      Parameters

      • refresh: boolean = false

        request device's cached results

        +
      • timeoutInSeconds: number = 10

        timeout for scan in seconds

        +
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Plug.html b/docs/classes/Plug.html index 7ce6b8b..06a97ca 100644 --- a/docs/classes/Plug.html +++ b/docs/classes/Plug.html @@ -1,124 +1,295 @@ -Plug | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    -

    Plug Device.

    -

    TP-Link models: HS100, HS105, HS107, HS110, HS200, HS210, HS220, HS300.

    +Plug | tplink-smarthome-api

    Plug Device.

    +

    TP-Link models: HS100, HS105, HS107, HS110, HS200, HS210, HS220, HS300.

    Models with multiple outlets (HS107, HS300) will have a children property. If Plug is instantiated with a childId it will control the outlet associated with that childId. Some functions only apply to the entire device, and are noted below.

    -

    Emits events after device status is queried, such as {@link #getSysInfo} and {@link #getEmeterRealtime}.

    -
    fires

    Plug#power-on

    -
    fires

    Plug#power-off

    -
    fires

    Plug#power-update

    -
    fires

    Plug#in-use

    -
    fires

    Plug#not-in-use

    -
    fires

    Plug#in-use-update

    -
    fires

    Plug#emeter-realtime-update

    -

    Hierarchy

    Implements

    • PlugEventEmitter

    Index

    Constructors

    Properties

    apiModules: { cloud: string; emeter: string; lightingservice: string; netif: string; schedule: string; system: string; timesetting: string } = ...

    Type declaration

    • cloud: string
    • emeter: string
    • lightingservice: string
    • netif: string
    • schedule: string
    • system: string
    • timesetting: string
    away: default
    client: Client
    cloud: default
    defaultSendOptions: SendOptions
    dimmer: default
    emeter: default
    emitEventsEnabled: boolean = true
    host: string
    inUseThreshold: number = 0.1
    log: Logger
    netif: default = ...
    port: number
    schedule: default
    time: default
    timer: default

    Accessors

    • get alias(): string
    • -

      Cached value of sysinfo.alias or sysinfo.children[childId].alias if childId set.

      -

      Returns string

    • get childId(): undefined | string
    • get children(): Map<string, PlugChild>
    • -

      Returns children as a map keyed by childId. From cached results from last retrieval of system.sysinfo.children.

      -

      Returns Map<string, PlugChild>

    • get description(): undefined | string
    • -

      Cached value of sysinfo.dev_name.

      -

      Returns undefined | string

    • get deviceId(): string
    • -

      Cached value of sysinfo.deviceId.

      -

      Returns string

    • get deviceType(): "plug"
    • get hardwareVersion(): string
    • -

      Cached value of sysinfo.hw_ver.

      -

      Returns string

    • get id(): string
    • -

      Cached value of sysinfo.deviceId or childId if set.

      -

      Returns string

    • get inUse(): boolean
    • -

      Determines if device is in use based on cached emeter.get_realtime results.

      -

      If device supports energy monitoring (e.g. HS110): power > inUseThreshold. inUseThreshold is specified in Watts

      +

      Emits events after device status is queried, such as Plug#getSysInfo and .getRealtime.

      +

      Fires

      Plug#power-on

      +

      Fires

      Plug#power-off

      +

      Fires

      Plug#power-update

      +

      Fires

      Plug#in-use

      +

      Fires

      Plug#not-in-use

      +

      Fires

      Plug#in-use-update

      +

      Fires

      Plug#emeter-realtime-update

      +

    Hierarchy

    Constructors

    Properties

    apiModules: {
        cloud: string;
        emeter: string;
        lightingservice: string;
        netif: string;
        schedule: string;
        system: string;
        timesetting: string;
    } = ...

    Type declaration

    • cloud: string
    • emeter: string
    • lightingservice: string
    • netif: string
    • schedule: string
    • system: string
    • timesetting: string
    away: Away
    client: Client
    cloud: Cloud
    defaultSendOptions: SendOptions
    dimmer: Dimmer
    emeter: Emeter
    emitEventsEnabled: boolean = true
    host: string
    inUseThreshold: number = 0.1
    log: Logger
    netif: Netif = ...
    port: number
    schedule: PlugSchedule
    time: Time
    timer: Timer
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    Since

    v13.4.0, v12.16.0

    +
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    Since

    v13.4.0, v12.16.0

    +
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListenersproperty can be used. If this value is not a positive number, a RangeErroris thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects allEventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any singleEventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners()methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    Since

    v0.11.2

    +
    errorMonitor: typeof errorMonitor

    This symbol shall be used to install a listener for only monitoring 'error'events. Listeners installed using this symbol are called before the regular'error' listeners are called.

    +

    Installing a listener using this symbol does not change the behavior once an'error' event is emitted. Therefore, the process will still crash if no +regular 'error' listener is installed.

    +

    Since

    v13.6.0, v12.17.0

    +

    Accessors

    • get alias(): string
    • Cached value of sysinfo.alias or sysinfo.children[childId].alias if childId set.

      +

      Returns string

    • get childId(): undefined | string
    • Returns childId.

      +

      Returns undefined | string

    • get children(): Map<string, PlugChild>
    • Returns children as a map keyed by childId. From cached results from last retrieval of system.sysinfo.children.

      +

      Returns Map<string, PlugChild>

    • get description(): undefined | string
    • Cached value of sysinfo.dev_name.

      +

      Returns undefined | string

    • get deviceType(): "plug"
    • Type of device (or device if unknown).

      +

      Based on cached value of sysinfo.[type|mic_type]

      +

      Returns "plug"

    • get id(): string
    • Cached value of sysinfo.deviceId or childId if set.

      +

      Returns string

    • get inUse(): boolean
    • Determines if device is in use based on cached emeter.get_realtime results.

      +

      If device supports energy monitoring (e.g. HS110): power > inUseThreshold. inUseThreshold is specified in Watts

      Otherwise fallback on relay state: relay_state === 1 or sysinfo.children[childId].state === 1.

      Supports childId.

      -

    Returns boolean

    • get mac(): string
    • -

      Cached value of sysinfo.[mac|mic_mac|ethernet_mac].

      -

      Returns string

    • get macNormalized(): string
    • -

      Normalized cached value of sysinfo.[mac|mic_mac|ethernet_mac]

      -

      Removes all non alphanumeric characters and makes uppercase +

      Returns boolean

    • get mac(): string
    • Cached value of sysinfo.[mac|mic_mac|ethernet_mac].

      +

      Returns string

    • get macNormalized(): string
    • Normalized cached value of sysinfo.[mac|mic_mac|ethernet_mac]

      +

      Removes all non alphanumeric characters and makes uppercase aa:bb:cc:00:11:22 will be normalized to AABBCC001122

      -

    Returns string

    • get model(): string
    • get name(): string
    • get relayState(): boolean
    • get relayState(): boolean
    • Cached value of sysinfo.relay_state === 1 or sysinfo.children[childId].state === 1. Supports childId. If device supports childId, but childId is not set, then it will return true if any child has state === 1.

      -

    Returns boolean

    On (true) or Off (false)

    -
    • get softwareVersion(): string
    • -

      Cached value of sysinfo.sw_ver.

      -

      Returns string

    • get supportsDimmer(): boolean
    • -

      True if cached value of sysinfo has brightness property.

      -

      Returns boolean

      true if cached value of sysinfo has brightness property.

      -
    • get supportsEmeter(): boolean
    • -

      True if cached value of sysinfo has feature property that contains 'ENE'.

      -

      Returns boolean

      true if cached value of sysinfo has feature property that contains 'ENE'

      -
    • get type(): string
    • -

      Cached value of sysinfo.[type|mic_type].

      -

      Returns string

    Methods

    • blink(times?: number, rate?: number, sendOptions?: SendOptions): Promise<boolean>
    • get supportsDimmer(): boolean
    • True if cached value of sysinfo has brightness property.

      +

      Returns boolean

      true if cached value of sysinfo has brightness property.

      +
    • get supportsEmeter(): boolean
    • True if cached value of sysinfo has feature property that contains 'ENE'.

      +

      Returns boolean

      true if cached value of sysinfo has feature property that contains 'ENE'

      +

    Methods

    • Parameters

      • error: Error
      • event: string
      • Rest ...args: any[]

      Returns void

    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Plug

      Since

      v0.1.26

      +
    • Blink Plug LED.

      +

      Sends system.set_led_off command alternating on and off number of times at rate, then sets the led to its pre-blink state. Does not support childId.

      Note: system.set_led_off is particularly slow, so blink rate is not guaranteed.

      -
      throws

      ResponseError

      -

      Parameters

      • times: number = 5
      • rate: number = 1000
      • Optional sendOptions: SendOptions

      Returns Promise<boolean>

    • closeConnection(): void
    • getInUse(sendOptions?: SendOptions): Promise<boolean>
    • -

      Same as {@link #inUse}, but requests current emeter.get_realtime. Supports childId.

      -
      throws

      ResponseError

      -

      Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<boolean>

      parsed JSON response

      -
    • getInfo(sendOptions?: SendOptions): Promise<{ cloud: { info: Record<string, unknown> }; emeter: { realtime: Record<string, unknown> }; schedule: { nextAction: Record<string, unknown> }; sysInfo: Record<string, unknown> }>
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      +

      Returns (string | symbol)[]

      Since

      v6.0.0

      +
    • Requests common Plug status details in a single request.

      • system.get_sysinfo
      • cloud.get_sysinfo
      • emeter.get_realtime
      • schedule.get_next_action
      -

      This command is likely to fail on some devices when using UDP transport. +

      This command is likely to fail on some devices when using UDP transport. This defaults to TCP transport unless overridden in sendOptions.

      Supports childId.

      -
      throws

      ResponseError

      -

      Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<{ cloud: { info: Record<string, unknown> }; emeter: { realtime: Record<string, unknown> }; schedule: { nextAction: Record<string, unknown> }; sysInfo: Record<string, unknown> }>

      parsed JSON response

      -
    • getLedState(sendOptions?: SendOptions): Promise<boolean>
    • -

      Get Plug LED state (night mode).

      -

      Requests system.sysinfo and returns true if led_off === 0. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<boolean>

      LED State, true === on

      -
    • getModel(sendOptions?: SendOptions): Promise<string>
    • -

      Gets device's model.

      -

      Requests system.sysinfo and returns model name. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<string>

      parsed JSON response

      -
    • getPowerState(sendOptions?: SendOptions): Promise<boolean>
    • -

      Get Plug relay state (on/off).

      -

      Requests system.get_sysinfo and returns true if On. Calls {@link #relayState}. Supports childId.

      -
      throws

      ResponseError

      -

      Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<boolean>

    • getSysInfo(sendOptions?: SendOptions): Promise<PlugSysinfo>
    • reboot(delay: number, sendOptions?: SendOptions): Promise<unknown>
    • -

      Reboot device.

      -

      Sends system.reboot command. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • delay: number
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      -
    • reset(delay: number, sendOptions?: SendOptions): Promise<unknown>
    • -

      Reset device.

      -

      Sends system.reset command. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • delay: number
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      -
    • send(payload: string | Record<string, unknown>, sendOptions?: SendOptions): Promise<string>
    • -

      Sends payload to device (using {@link Client#send})

      -

      Parameters

      • payload: string | Record<string, unknown>
        -

        payload to send to device, if object, converted to string via JSON.stringify

        -
      • Optional sendOptions: SendOptions

      Returns Promise<string>

      parsed JSON response

      -
    • sendCommand(command: string | Record<string, unknown>, childIds?: undefined | string | string[], sendOptions?: SendOptions): Promise<unknown>
    • -

      Sends command(s) to device.

      -

      Calls {@link #send} and processes the response.

      +

      Parameters

      Returns Promise<{
          cloud: {
              info: Record<string, unknown>;
          };
          emeter: {
              realtime: Record<string, unknown>;
          };
          schedule: {
              nextAction: Record<string, unknown>;
          };
          sysInfo: Record<string, unknown>;
      }>

      parsed JSON response

      +
    • Get Plug LED state (night mode).

      +

      Requests system.sysinfo and returns true if led_off === 0. Does not support childId.

      +

      Parameters

      Returns Promise<boolean>

      LED State, true === on

      +
    • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

      +

      Returns number

      Since

      v1.0.0

      +
    • Gets device's model.

      +

      Requests system.sysinfo and returns model name. Does not support childId.

      +

      Parameters

      Returns Promise<string>

      parsed JSON response

      +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

        +
      • Optional listener: Function

        The event handler function

        +

      Returns number

      Since

      v3.2.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ] +
      +

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v0.1.26

      +
    • Alias for emitter.removeListener().

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Plug

      Since

      v10.0.0

      +
    • Adds a one-timelistener function for the event named eventName. The +next time eventName is triggered, this listener is removed and then invoked.

      +
      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      By default, event listeners are invoked in the order they are added. Theemitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Plug

      Since

      v0.3.0

      +
    • Adds the listener function to the beginning of the listeners array for the +event named eventName. No checks are made to see if the listener has +already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple +times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Plug

      Since

      v6.0.0

      +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +listener is removed, and then invoked.

      +
      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      }); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: ((...args) => void)

        The callback function

        +
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Plug

      Since

      v6.0.0

      +
    • Returns a copy of the array of listeners for the event named eventName, +including any wrappers (such as those created by .once()).

      +
      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log'); +
      +

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v9.4.0

      +
    • Reboot device.

      +

      Sends system.reboot command. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Removes all listeners, or those of the specified eventName.

      +

      It is bad practice to remove listeners added elsewhere in the code, +particularly when the EventEmitter instance was created by some other +component or module (e.g. sockets or file streams).

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • Optional event: string | symbol

      Returns Plug

      Since

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event namedeventName.

      +
      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback); +
      +

      removeListener() will remove, at most, one instance of a listener from the +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that anyremoveListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping')listener is removed:

      +
      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping'); +
      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns Plug

      Since

      v0.1.26

      +
    • Reset device.

      +

      Sends system.reset command. Does not support childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Sends payload to device (using Client#send)

      +

      Parameters

      • payload: string | Record<string, unknown>

        payload to send to device, if object, converted to string via JSON.stringify

        +
      • Optional sendOptions: SendOptions

      Returns Promise<string>

      parsed JSON response

      +
    • Sends command(s) to device.

      +

      Calls Device#send and processes the response.

      • Adds context.child_ids:[] to the command.

          @@ -130,53 +301,113 @@
          • Promise fulfills with specific parsed JSON response for command.
            Example: {system:{get_sysinfo:{}}}
            • resolves to: {err_code:0,...}\
            • -
            • instead of: {system:{get_sysinfo:{err_code:0,...}}} (as {@link #send} would)
            • +
            • instead of: {system:{get_sysinfo:{err_code:0,...}}} (as Device#send would)
        • If more than one operation was sent:

            -
          • Promise fulfills with full parsed JSON response (same as {@link #send})
          • +
          • Promise fulfills with full parsed JSON response (same as Device#send)
        -

        Also, the response's err_code(s) are checked, if any are missing or != 0 the Promise is rejected with ResponseError.

        -
      throws

      ResponseError

      -

      Parameters

      • command: string | Record<string, unknown>
      • childIds: undefined | string | string[] = ...
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      -
    • setAlias(alias: string, sendOptions?: SendOptions): Promise<boolean>
    • -

      Change device's alias (name).

      -

      Sends system.set_dev_alias command. Supports childId.

      -
      throws

      ResponseError

      -

      Parameters

      • alias: string
      • Optional sendOptions: SendOptions

      Returns Promise<boolean>

      parsed JSON response

      -
    • setLedState(value: boolean, sendOptions?: SendOptions): Promise<true>
    • -

      Turn Plug LED on/off (night mode). Does not support childId.

      -

      Sends system.set_led_off command.

      -
      throws

      ResponseError

      -

      Parameters

      • value: boolean
        -

        LED State, true === on

        -
      • Optional sendOptions: SendOptions

      Returns Promise<true>

    • setLocation(latitude: number, longitude: number, sendOptions?: SendOptions): Promise<Record<string, unknown>>
    • -

      Set device's location.

      -

      Sends system.set_dev_location command. Does not support childId.

      -
      throws

      ResponseError

      -

      Parameters

      • latitude: number
      • longitude: number
      • Optional sendOptions: SendOptions

      Returns Promise<Record<string, unknown>>

      parsed JSON response

      -
    • setPowerState(value: boolean, sendOptions?: SendOptions): Promise<true>
    • -

      Turns Plug relay on/off.

      -

      Sends system.set_relay_state command. Supports childId.

      -
      throws

      ResponseError

      -

      Parameters

      • value: boolean
      • Optional sendOptions: SendOptions

      Returns Promise<true>

    • startPolling(interval: number): Plug
    • -

      Polls the device every interval.

      -

      Returns this (for chaining) that emits events based on state changes. -Refer to specific device sections for event details.

      -
      fires

      Device#polling-error

      -
      deprecated

      This will be removed in a future release.

      -

      Parameters

      • interval: number
        -

        (ms)

        -

      Returns Plug

    • stopPolling(): void
    • togglePowerState(sendOptions?: SendOptions): Promise<boolean>
    • -

      Toggles Plug relay state.

      -

      Requests system.get_sysinfo sets the power state to the opposite relay_state === 1 and returns the new power state. Supports childId.

      -
      throws

      ResponseError

      -

      Parameters

      • Optional sendOptions: SendOptions

      Returns Promise<boolean>

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +

    Also, the response's err_code(s) are checked, if any are missing or != 0 the Promise is rejected with ResponseError.

    +

    Parameters

    • command: string | Record<string, unknown>
    • childIds: undefined | string | string[] = ...
    • Optional sendOptions: SendOptions

    Returns Promise<unknown>

    parsed JSON response

    +
    • Change device's alias (name).

      +

      Sends system.set_dev_alias command. Supports childId.

      +

      Parameters

      Returns Promise<boolean>

      parsed JSON response

      +
    • Turn Plug LED on/off (night mode). Does not support childId.

      +

      Sends system.set_led_off command.

      +

      Parameters

      • value: boolean

        LED State, true === on

        +
      • Optional sendOptions: SendOptions

      Returns Promise<true>

    • Set device's location.

      +

      Sends system.set_dev_location command. Does not support childId.

      +

      Parameters

      • latitude: number
      • longitude: number
      • Optional sendOptions: SendOptions

      Returns Promise<Record<string, unknown>>

      parsed JSON response

      +
    • By default EventEmitters will print a warning if more than 10 listeners are +added for a particular event. This is a useful default that helps finding +memory leaks. The emitter.setMaxListeners() method allows the limit to be +modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

      +

      Returns a reference to the EventEmitter, so that calls can be chained.

      +

      Parameters

      • n: number

      Returns Plug

      Since

      v0.3.5

      +
    • Turns Plug relay on/off.

      +

      Sends system.set_relay_state command. Supports childId.

      +

      Parameters

      Returns Promise<true>

    • Toggles Plug relay state.

      +

      Requests system.get_sysinfo sets the power state to the opposite relay_state === 1 and returns the new power state. Supports childId.

      +

      Parameters

      Returns Promise<boolean>

    • Experimental

      Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      +

      Parameters

      • signal: AbortSignal
      • resource: ((event) => void)
          • (event): void
          • Parameters

            • event: Event

            Returns void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      Since

      v20.5.0

      +
    • Returns a copy of the array of listeners for the event named eventName.

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

      +
      import { getEventListeners, EventEmitter } from 'node:events';

      {
      const ee = new EventEmitter();
      const listener = () => console.log('Events are fun');
      ee.on('foo', listener);
      console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
      }
      {
      const et = new EventTarget();
      const listener = () => console.log('Events are fun');
      et.addEventListener('foo', listener);
      console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
      } +
      +

      Parameters

      • emitter: EventEmitter | _DOMEventTarget
      • name: string | symbol

      Returns Function[]

      Since

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

      +
      import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      +

      Parameters

      • emitter: EventEmitter | _DOMEventTarget

      Returns number

      Since

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventNameregistered on the given emitter.

      +
      import { EventEmitter, listenerCount } from 'node:events';

      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      +

      Parameters

      • emitter: EventEmitter

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      Since

      v0.9.12

      +

      Deprecated

      Since v3.2.0 - Use listenerCount instead.

      +
    • import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here +
      +

      Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); +
      +

      Parameters

      • emitter: EventEmitter
      • eventName: string

        The name of the event being listened for

        +
      • Optional options: StaticEventEmitterOptions

      Returns AsyncIterableIterator<any>

      that iterates eventName events emitted by the emitter

      +

      Since

      v13.6.0, v12.16.0

      +
    • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

      +

      This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

      +
      import { once, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      process.nextTick(() => {
      ee.emit('myevent', 42);
      });

      const [value] = await once(ee, 'myevent');
      console.log(value);

      const err = new Error('kaboom');
      process.nextTick(() => {
      ee.emit('error', err);
      });

      try {
      await once(ee, 'myevent');
      } catch (err) {
      console.error('error happened', err);
      } +
      +

      The special handling of the 'error' event is only used when events.once()is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();

      once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.error('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom +
      +

      An AbortSignal can be used to cancel waiting for the event:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
      try {
      await once(emitter, event, { signal });
      console.log('event emitted!');
      } catch (error) {
      if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
      } else {
      console.error('There was an error', error.message);
      }
      }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled! +
      +

      Parameters

      • emitter: _NodeEventTarget
      • eventName: string | symbol
      • Optional options: StaticEventEmitterOptions

      Returns Promise<any[]>

      Since

      v11.13.0, v10.16.0

      +
    • Parameters

      • emitter: _DOMEventTarget
      • eventName: string
      • Optional options: StaticEventEmitterOptions

      Returns Promise<any[]>

    • import { setMaxListeners, EventEmitter } from 'node:events';

      const target = new EventTarget();
      const emitter = new EventEmitter();

      setMaxListeners(5, target, emitter); +
      +

      Parameters

      • Optional n: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • Rest ...eventTargets: (EventEmitter | _DOMEventTarget)[]

      Returns void

      Since

      v15.4.0

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/PlugSchedule.html b/docs/classes/PlugSchedule.html new file mode 100644 index 0000000..65eb612 --- /dev/null +++ b/docs/classes/PlugSchedule.html @@ -0,0 +1,59 @@ +PlugSchedule | tplink-smarthome-api

    Hierarchy

    • default
      • PlugSchedule

    Constructors

    Properties

    apiModuleName: string
    childId?: string
    device: Plug
    nextAction: undefined | ScheduleNextActionResponse

    Methods

    • Adds Schedule rule.

      +

      Sends schedule.add_rule command and returns rule id. Supports childId.

      +

      Parameters

      Returns Promise<{
          id: string;
      }>

      parsed JSON response

      +
    • Deletes All Schedule Rules.

      +

      Sends schedule.delete_all_rules command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Deletes Schedule Rule.

      +

      Sends schedule.delete_rule command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Edits Schedule rule.

      +

      Sends schedule.edit_rule command and returns rule id. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Erase Usage Statistics.

      +

      Sends schedule.erase_runtime_stat command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get Daily Usage Statistics.

      +

      Sends schedule.get_daystat command. Supports childId.

      +

      Parameters

      • year: number
      • month: number
      • Optional sendOptions: SendOptions

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get Monthly Usage Statistics.

      +

      Sends schedule.get_monthstat command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Enables or Disables Schedule Rules.

      +

      Sends schedule.set_overall_enable command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/ResponseError.html b/docs/classes/ResponseError.html index b7804b3..287dfae 100644 --- a/docs/classes/ResponseError.html +++ b/docs/classes/ResponseError.html @@ -1,25 +1,25 @@ -ResponseError | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu
    -

    Represents an error result received from a TP-Link device.

    -

    Where response err_code != 0.

    -

    Hierarchy

    • Error
      • ResponseError

    Index

    Constructors

    • new ResponseError(message: string, response: string, command: string, modules?: string[], methods?: string[]): ResponseError
    • Parameters

      • message: string
        -
          -
        • -
        -
      • response: string
        -
          -
        • -
        -
      • command: string
        -

        command sent to device

        -
      • modules: string[] = []
        -

        array of module names that returned with errors.

        -
      • methods: string[] = []
        -

        array of method names (format: ${moduleName}.${methodName}) that returned with errors.

        -

      Returns ResponseError

    Properties

    command: string
    message: string
    methods: string[] = []
    modules: string[] = []
    name: string
    response: string
    stack: "" = ''
    -

    Set by Error.captureStackTrace

    -
    prepareStackTrace?: (err: Error, stackTraces: CallSite[]) => any

    Type declaration

    stackTraceLimit: number

    Methods

    • captureStackTrace(targetObject: object, constructorOpt?: Function): void
    • -

      Create .stack property on a target object

      -

      Parameters

      • targetObject: object
      • Optional constructorOpt: Function

      Returns void

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +ResponseError | tplink-smarthome-api

    Represents an error result received from a TP-Link device.

    +

    Where response err_code != 0.

    +

    Hierarchy

    • Error
      • ResponseError

    Constructors

    • Parameters

      • message: string
      • response: string
      • command: string

        command sent to device

        +
      • modules: string[] = []

        array of module names that returned with errors.

        +
      • methods: string[] = []

        array of method names (format: ${moduleName}.${methodName}) that returned with errors.

        +

      Returns ResponseError

    Properties

    cause?: unknown
    command: string

    command sent to device

    +
    message: string
    methods: string[] = []

    array of method names (format: ${moduleName}.${methodName}) that returned with errors.

    +
    modules: string[] = []

    array of module names that returned with errors.

    +
    name: string
    response: string
    stack: "" = ''

    Set by Error.captureStackTrace

    +
    prepareStackTrace?: ((err, stackTraces) => any)

    Type declaration

    stackTraceLimit: number

    Methods

    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • Optional constructorOpt: Function

      Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Time.html b/docs/classes/Time.html new file mode 100644 index 0000000..dd6c6c2 --- /dev/null +++ b/docs/classes/Time.html @@ -0,0 +1,14 @@ +Time | tplink-smarthome-api

    Hierarchy

    • Time

    Constructors

    Properties

    Methods

    Constructors

    Properties

    apiModuleName: string
    device: AnyDevice

    Methods

    • Gets device's time.

      +

      Requests timesetting.get_time. Does not support ChildId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Gets device's timezone.

      +

      Requests timesetting.get_timezone. Does not support ChildId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Timer.html b/docs/classes/Timer.html new file mode 100644 index 0000000..7238ac1 --- /dev/null +++ b/docs/classes/Timer.html @@ -0,0 +1,23 @@ +Timer | tplink-smarthome-api

    Hierarchy

    • Timer

    Constructors

    Properties

    apiModuleName: string
    childId: undefined | string = undefined
    device: AnyDevice

    Methods

    • Add Countdown Timer Rule (only one allowed).

      +

      Sends count_down.add_rule command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Delete Countdown Timer Rule (only one allowed).

      +

      Sends count_down.delete_all_rules command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Edit Countdown Timer Rule (only one allowed).

      +

      Sends count_down.edit_rule command. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

      parsed JSON response

      +
    • Get Countdown Timer Rule (only one allowed).

      +

      Requests count_down.get_rules. Supports childId.

      +

      Parameters

      Returns Promise<unknown>

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 71757fd..4b65c11 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,19 +1,11 @@ -tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    tplink-smarthome-api

    +tplink-smarthome-api

    tplink-smarthome-api

    - - -

    tplink-smarthome-api

    -
    -

    NPM Version +

    tplink-smarthome-api

    NPM Version Build Status -codecov

    +Coverage Status

    TP-Link Smarthome API

    Changelog

    - - -

    Known Supported Devices

    -
    - +

    Known Supported Devices

    @@ -34,38 +26,18 @@

    Known Supported Devices

    Model

    Many other TP-Link Plug and Bulb models may work as well. Note that Tapo devices are not supported.

    - - -

    Related Projects

    -
    -

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/ApiModuleNamespace.html b/docs/interfaces/ApiModuleNamespace.html index b571235..a41354f 100644 --- a/docs/interfaces/ApiModuleNamespace.html +++ b/docs/interfaces/ApiModuleNamespace.html @@ -1 +1,8 @@ -ApiModuleNamespace | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface ApiModuleNamespace

    Hierarchy

    • ApiModuleNamespace

    Index

    Properties

    cloud: string
    emeter: string
    lightingservice: string
    netif: string
    schedule: string
    system: string
    timesetting: string

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +ApiModuleNamespace | tplink-smarthome-api

    Interface ApiModuleNamespace

    Hierarchy

    • ApiModuleNamespace

    Properties

    cloud: string
    emeter: string
    lightingservice: string
    netif: string
    schedule: string
    system: string
    timesetting: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/AwayRuleInput.html b/docs/interfaces/AwayRuleInput.html index eec948d..3ceebff 100644 --- a/docs/interfaces/AwayRuleInput.html +++ b/docs/interfaces/AwayRuleInput.html @@ -1,9 +1,14 @@ -AwayRuleInput | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface AwayRuleInput

    Hierarchy

    • AwayRuleInput

    Index

    Properties

    daysOfWeek: number[]
    -

    [0,6] = weekend, [1,2,3,4,5] = weekdays

    -
    enable: boolean | 0 | 1
    defaultvalue

    true

    -
    end: ScheduleRuleInputTime
    -

    Date or number of minutes (only time component of date is used)

    -
    frequency: number
    defaultvalue

    5

    -
    name?: string
    start: ScheduleRuleInputTime
    -

    Date or number of minutes

    -

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +AwayRuleInput | tplink-smarthome-api

    Interface AwayRuleInput

    Hierarchy

    • AwayRuleInput

    Properties

    daysOfWeek: number[]

    [0,6] = weekend, [1,2,3,4,5] = weekdays

    +
    enable: boolean | 0 | 1

    Default Value

    true
    +
    +

    Date or number of minutes (only time component of date is used)

    +
    frequency: number

    Default Value

    5
    +
    +
    name?: string

    Date or number of minutes

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/BulbConstructorOptions.html b/docs/interfaces/BulbConstructorOptions.html index 2aafa07..fa62e93 100644 --- a/docs/interfaces/BulbConstructorOptions.html +++ b/docs/interfaces/BulbConstructorOptions.html @@ -1,2 +1,9 @@ -BulbConstructorOptions | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface BulbConstructorOptions

    Hierarchy

    Index

    Properties

    client: Client
    defaultSendOptions?: SendOptions
    host: string
    logger?: RootLogger
    port?: number
    defaultvalue

    9999

    -
    sysInfo: BulbSysinfo

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +BulbConstructorOptions | tplink-smarthome-api

    Interface BulbConstructorOptions

    Hierarchy

    Properties

    client: Client
    defaultSendOptions?: SendOptions
    host: string
    logger?: RootLogger
    port?: number

    Default Value

    9999
    +
    +
    sysInfo: BulbSysinfo

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/BulbEvents.html b/docs/interfaces/BulbEvents.html new file mode 100644 index 0000000..a9b557f --- /dev/null +++ b/docs/interfaces/BulbEvents.html @@ -0,0 +1,26 @@ +BulbEvents | tplink-smarthome-api

    Interface BulbEvents

    Hierarchy

    • BulbEvents

    Properties

    emeter-realtime-update: ((value) => void)

    Type declaration

    Events

    lightstate-change: ((value) => void)

    Type declaration

      • (value): void
      • Bulb's lightstate was changed. + Bulb#lightstate-change

        +

        Parameters

        Returns void

    lightstate-off: ((value) => void)

    Type declaration

      • (value): void
      • Bulb was turned off (lightstate.on_off). + Bulb#lightstate-off

        +

        Parameters

        Returns void

    lightstate-on: ((value) => void)

    Type declaration

      • (value): void
      • Bulb was turned on (lightstate.on_off). + Bulb#lightstate-on

        +

        Parameters

        Returns void

    lightstate-sysinfo-change: ((value) => void)

    Type declaration

      • (value): void
      • Bulb's lightstate (sysinfo.light_state) was changed. + Bulb#lightstate-sysinfo-change

        +

        Parameters

        Returns void

    lightstate-sysinfo-off: ((value) => void)

    Type declaration

      • (value): void
      • Bulb was turned off (sysinfo.light_state.on_off). + Bulb#lightstate-sysinfo-off

        +

        Parameters

        Returns void

    lightstate-sysinfo-on: ((value) => void)

    Type declaration

      • (value): void
      • Bulb was turned on (sysinfo.light_state.on_off). + Bulb#lightstate-sysinfo-on

        +

        Parameters

        Returns void

    lightstate-sysinfo-update: ((value) => void)

    Type declaration

      • (value): void
      • Bulb's lightstate (sysinfo.light_state) was updated from device. Fired regardless if status was changed. + Bulb#lightstate-sysinfo-update

        +

        Parameters

        Returns void

    lightstate-update: ((value) => void)

    Type declaration

      • (value): void
      • Bulb's lightstate was updated from device. Fired regardless if status was changed. + Bulb#lightstate-update

        +

        Parameters

        Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/BulbScheduleRuleInput.html b/docs/interfaces/BulbScheduleRuleInput.html index 0a23392..8a8b62d 100644 --- a/docs/interfaces/BulbScheduleRuleInput.html +++ b/docs/interfaces/BulbScheduleRuleInput.html @@ -1,7 +1,12 @@ -BulbScheduleRuleInput | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface BulbScheduleRuleInput

    Hierarchy

    • BulbScheduleRuleInput

    Index

    Properties

    daysOfWeek?: number[]
    -

    [0,6] = weekend, [1,2,3,4,5] = weekdays

    -
    enable: boolean
    defaultvalue

    true

    -
    lightState: LightState
    name: string
    defaultvalue

    ''

    -
    start: ScheduleRuleInputTime
    -

    Date or number of minutes

    -

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +BulbScheduleRuleInput | tplink-smarthome-api

    Interface BulbScheduleRuleInput

    Hierarchy

    • BulbScheduleRuleInput

    Properties

    daysOfWeek?: number[]

    [0,6] = weekend, [1,2,3,4,5] = weekdays

    +
    enable: boolean

    Default Value

    true
    +
    +
    lightState: LightState
    name: string

    Default Value

    ''
    +
    +

    Date or number of minutes

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/BulbSysinfoLightState.html b/docs/interfaces/BulbSysinfoLightState.html new file mode 100644 index 0000000..f24a4da --- /dev/null +++ b/docs/interfaces/BulbSysinfoLightState.html @@ -0,0 +1,17 @@ +BulbSysinfoLightState | tplink-smarthome-api

    Interface BulbSysinfoLightState

    Hierarchy

    • BulbSysinfoLightState

    Properties

    brightness?: number

    0-100

    +
    color_temp?: number

    Kelvin

    +
    dft_on_state?: {
        brightness?: number;
        color_temp?: number;
        hue?: number;
        mode?: string;
        saturation?: number;
    }

    Type declaration

    • Optional brightness?: number
    • Optional color_temp?: number
    • Optional hue?: number
    • Optional mode?: string
    • Optional saturation?: number
    hue?: number

    0-360

    +
    ignore_default?: 0 | 1
    mode?: string
    on_off?: 0 | 1
    saturation?: number

    0-100

    +
    transition?: number

    (ms)

    +
    transition_period?: number

    (ms)

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/ClientConstructorOptions.html b/docs/interfaces/ClientConstructorOptions.html index 1ee5c40..d669e2f 100644 --- a/docs/interfaces/ClientConstructorOptions.html +++ b/docs/interfaces/ClientConstructorOptions.html @@ -1,8 +1,8 @@ -ClientConstructorOptions | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface ClientConstructorOptions

    Hierarchy

    • ClientConstructorOptions

    Index

    Properties

    defaultSendOptions?: SendOptions
    defaultvalue

    { - timeout: 10000, - transport: 'tcp', - useSharedSocket: false, - sharedSocketTimeout: 20000 -}

    -
    logLevel?: LogLevelDesc
    defaultvalue

    'warn'

    -
    logger?: Logger

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +ClientConstructorOptions | tplink-smarthome-api

    Interface ClientConstructorOptions

    Hierarchy

    • ClientConstructorOptions

    Properties

    defaultSendOptions?: SendOptions

    Default Value

    {
    timeout: 10000,
    transport: 'tcp',
    useSharedSocket: false,
    sharedSocketTimeout: 20000
    } +
    +
    logLevel?: LogLevelDesc

    Default Value

    'warn'
    +
    +
    logger?: Logger

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/ClientEvents.html b/docs/interfaces/ClientEvents.html new file mode 100644 index 0000000..33ac4ea --- /dev/null +++ b/docs/interfaces/ClientEvents.html @@ -0,0 +1,23 @@ +ClientEvents | tplink-smarthome-api

    Interface ClientEvents

    Hierarchy

    • ClientEvents

    Properties

    bulb-new: ((device) => void)

    Type declaration

      • (device): void
      • First response from Bulb.

        +

        Parameters

        Returns void

    bulb-offline: ((device) => void)

    Type declaration

      • (device): void
      • No response from Bulb.

        +

        Parameters

        Returns void

    bulb-online: ((device) => void)

    Type declaration

      • (device): void
      • Follow up response from Bulb.

        +

        Parameters

        Returns void

    device-new: ((device) => void)

    Type declaration

      • (device): void
      • First response from device.

        +

        Parameters

        Returns void

    device-offline: ((device) => void)

    Type declaration

      • (device): void
      • No response from device.

        +

        Parameters

        Returns void

    device-online: ((device) => void)

    Type declaration

      • (device): void
      • Follow up response from device.

        +

        Parameters

        Returns void

    discovery-invalid: ((__namedParameters) => void)

    Type declaration

      • (__namedParameters): void
      • Invalid/Unknown response from device.

        +

        Parameters

        • __namedParameters: {
              decryptedResponse: Buffer;
              response: Buffer;
              rinfo: RemoteInfo;
          }
          • decryptedResponse: Buffer
          • response: Buffer
          • rinfo: RemoteInfo

        Returns void

    error: ((error) => void)

    Type declaration

      • (error): void
      • Error during discovery.

        +

        Parameters

        • error: Error

        Returns void

    plug-new: ((device) => void)

    Type declaration

      • (device): void
      • First response from Plug.

        +

        Parameters

        Returns void

    plug-offline: ((device) => void)

    Type declaration

      • (device): void
      • No response from Plug.

        +

        Parameters

        Returns void

    plug-online: ((device) => void)

    Type declaration

      • (device): void
      • Follow up response from Plug.

        +

        Parameters

        Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/DeviceConstructorOptions.html b/docs/interfaces/DeviceConstructorOptions.html index 99a0d84..e7b33d5 100644 --- a/docs/interfaces/DeviceConstructorOptions.html +++ b/docs/interfaces/DeviceConstructorOptions.html @@ -1,2 +1,8 @@ -DeviceConstructorOptions | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface DeviceConstructorOptions

    Hierarchy

    Index

    Properties

    client: Client
    defaultSendOptions?: SendOptions
    host: string
    logger?: RootLogger
    port?: number
    defaultvalue

    9999

    -

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +DeviceConstructorOptions | tplink-smarthome-api

    Interface DeviceConstructorOptions

    Hierarchy

    Properties

    client: Client
    defaultSendOptions?: SendOptions
    host: string
    logger?: RootLogger
    port?: number

    Default Value

    9999
    +
    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/DeviceEvents.html b/docs/interfaces/DeviceEvents.html new file mode 100644 index 0000000..32a56e3 --- /dev/null +++ b/docs/interfaces/DeviceEvents.html @@ -0,0 +1,3 @@ +DeviceEvents | tplink-smarthome-api

    Interface DeviceEvents

    Hierarchy

    • DeviceEvents

    Properties

    emeter-realtime-update: ((value) => void)

    Type declaration

      • (value): void
      • Energy Monitoring Details were updated from device. Fired regardless if status was changed.

        +

        Parameters

        Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/DimmerActionInput.html b/docs/interfaces/DimmerActionInput.html index e345ef6..2f33329 100644 --- a/docs/interfaces/DimmerActionInput.html +++ b/docs/interfaces/DimmerActionInput.html @@ -1 +1,3 @@ -DimmerActionInput | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface DimmerActionInput

    Hierarchy

    • DimmerActionInput

    Index

    Properties

    Properties

    index?: number
    mode?: string

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +DimmerActionInput | tplink-smarthome-api

    Interface DimmerActionInput

    Hierarchy

    • DimmerActionInput

    Properties

    Properties

    index?: number
    mode?: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/DimmerTransitionInput.html b/docs/interfaces/DimmerTransitionInput.html index 25bd40d..fc1d38b 100644 --- a/docs/interfaces/DimmerTransitionInput.html +++ b/docs/interfaces/DimmerTransitionInput.html @@ -1,7 +1,7 @@ -DimmerTransitionInput | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface DimmerTransitionInput

    Hierarchy

    • DimmerTransitionInput

    Index

    Properties

    brightness?: number
    -

    0-100

    -
    duration?: number
    -

    duration in seconds

    -
    mode?: string
    -

    "gentle_on_off", etc.

    -

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +DimmerTransitionInput | tplink-smarthome-api

    Interface DimmerTransitionInput

    Hierarchy

    • DimmerTransitionInput

    Properties

    brightness?: number

    0-100

    +
    duration?: number

    duration in seconds

    +
    mode?: string

    "gentle_on_off", etc.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/DiscoveryOptions.html b/docs/interfaces/DiscoveryOptions.html index f3eed70..6cf6306 100644 --- a/docs/interfaces/DiscoveryOptions.html +++ b/docs/interfaces/DiscoveryOptions.html @@ -1,35 +1,44 @@ -DiscoveryOptions | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface DiscoveryOptions

    Hierarchy

    • DiscoveryOptions

    Index

    Properties

    address?: string
    -

    address to bind udp socket

    -
    breakoutChildren?: boolean
    -

    if device has multiple outlets, create a separate plug for each outlet, otherwise create a plug for the main device

    -
    defaultvalue

    true

    -
    broadcast?: string
    -

    broadcast address

    -
    defaultvalue

    '255.255.255.255'

    -
    deviceOptions?: DeviceOptionsDiscovery
    -

    passed to device constructors

    -
    deviceTypes?: ("bulb" | "plug")[]
    devices?: DiscoveryDevice[]
    -

    known devices to query instead of relying only on broadcast

    -
    devicesUseDiscoveryPort?: boolean
    -

    Set device port to the port it responded with to the discovery ping

    -
    defaultvalue

    false

    -
    discoveryInterval?: number
    -

    Interval in (ms)

    -
    defaultvalue

    10000

    -
    discoveryTimeout?: number
    -

    Timeout in (ms)

    -
    defaultvalue

    0

    -
    excludeMacAddresses?: string[]
    -

    MAC will be normalized, comparison will be done after removing special characters (:,-, etc.) and case insensitive, glob style *, and ? in pattern are supported

    -
    defaultvalue

    []

    -
    macAddresses?: string[]
    -

    MAC will be normalized, comparison will be done after removing special characters (:,-, etc.) and case insensitive, glob style *, and ? in pattern are supported

    -
    defaultvalue

    []

    -
    offlineTolerance?: number
    -

    Number of consecutive missed replies to consider offline

    -
    defaultvalue

    3

    -
    port?: number
    -

    port to bind udp socket

    -

    Methods

    • filterCallback(sysInfo: Sysinfo): boolean
    • -

      called with fn(sysInfo), return truthy value to include device

      -

      Parameters

      Returns boolean

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +DiscoveryOptions | tplink-smarthome-api

    Interface DiscoveryOptions

    Hierarchy

    • DiscoveryOptions

    Properties

    address?: string

    address to bind udp socket

    +
    breakoutChildren?: boolean

    if device has multiple outlets, create a separate plug for each outlet, otherwise create a plug for the main device

    +

    Default Value

    true
    +
    +
    broadcast?: string

    broadcast address

    +

    Default Value

    '255.255.255.255'
    +
    +
    deviceOptions?: DeviceOptionsDiscovery

    passed to device constructors

    +
    deviceTypes?: ("plug" | "bulb")[]
    devices?: DiscoveryDevice[]

    known devices to query instead of relying only on broadcast

    +
    devicesUseDiscoveryPort?: boolean

    Set device port to the port it responded with to the discovery ping

    +

    Default Value

    false
    +
    +
    discoveryInterval?: number

    Interval in (ms)

    +

    Default Value

    10000
    +
    +
    discoveryTimeout?: number

    Timeout in (ms)

    +

    Default Value

    0
    +
    +
    excludeMacAddresses?: string[]

    MAC will be normalized, comparison will be done after removing special characters (:,-, etc.) and case insensitive, glob style *, and ? in pattern are supported

    +

    Default Value

    []
    +
    +
    filterCallback?: ((sysInfo) => boolean)

    Type declaration

      • (sysInfo): boolean
      • called with fn(sysInfo), return truthy value to include device

        +

        Parameters

        Returns boolean

    macAddresses?: string[]

    MAC will be normalized, comparison will be done after removing special characters (:,-, etc.) and case insensitive, glob style *, and ? in pattern are supported

    +

    Default Value

    []
    +
    +
    offlineTolerance?: number

    Number of consecutive missed replies to consider offline

    +

    Default Value

    3
    +
    +
    port?: number

    port to bind udp socket

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/LightState.html b/docs/interfaces/LightState.html index f498146..5dc6423 100644 --- a/docs/interfaces/LightState.html +++ b/docs/interfaces/LightState.html @@ -1,11 +1,15 @@ -LightState | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface LightState

    Hierarchy

    Index

    Properties

    brightness?: number
    -

    0-100

    -
    color_temp?: number
    -

    Kelvin

    -
    dft_on_state?: { brightness?: number; color_temp?: number; hue?: number; mode?: string; saturation?: number }

    Type declaration

    • Optional brightness?: number
    • Optional color_temp?: number
    • Optional hue?: number
    • Optional mode?: string
    • Optional saturation?: number
    hue?: number
    -

    0-360

    -
    ignore_default?: 0 | 1
    mode?: string
    on_off?: 0 | 1
    saturation?: number
    -

    0-100

    -
    transition_period?: number
    -

    (ms)

    -

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +LightState | tplink-smarthome-api

    Interface LightState

    Hierarchy

    Properties

    brightness?: number

    0-100

    +
    color_temp?: number

    Kelvin

    +
    dft_on_state?: {
        brightness?: number;
        color_temp?: number;
        hue?: number;
        mode?: string;
        saturation?: number;
    }

    Type declaration

    • Optional brightness?: number
    • Optional color_temp?: number
    • Optional hue?: number
    • Optional mode?: string
    • Optional saturation?: number
    hue?: number

    0-360

    +
    ignore_default?: 0 | 1
    mode?: string
    on_off?: 0 | 1
    saturation?: number

    0-100

    +
    transition_period?: number

    (ms)

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/LightStateInput.html b/docs/interfaces/LightStateInput.html index 1d4c586..eff78fe 100644 --- a/docs/interfaces/LightStateInput.html +++ b/docs/interfaces/LightStateInput.html @@ -1,12 +1,17 @@ -LightStateInput | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface LightStateInput

    Hierarchy

    Index

    Properties

    brightness?: number
    -

    0-100

    -
    color_temp?: number
    -

    Kelvin

    -
    dft_on_state?: { brightness?: number; color_temp?: number; hue?: number; mode?: string; saturation?: number }

    Type declaration

    • Optional brightness?: number
    • Optional color_temp?: number
    • Optional hue?: number
    • Optional mode?: string
    • Optional saturation?: number
    hue?: number
    -

    0-360

    -
    ignore_default?: 0 | 1
    defaultvalue

    1

    -
    mode?: string
    on_off?: 0 | 1
    saturation?: number
    -

    0-100

    -
    transition_period?: number
    -

    (ms)

    -

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +LightStateInput | tplink-smarthome-api

    Interface LightStateInput

    Hierarchy

    Properties

    brightness?: number

    0-100

    +
    color_temp?: number

    Kelvin

    +
    dft_on_state?: {
        brightness?: number;
        color_temp?: number;
        hue?: number;
        mode?: string;
        saturation?: number;
    }

    Type declaration

    • Optional brightness?: number
    • Optional color_temp?: number
    • Optional hue?: number
    • Optional mode?: string
    • Optional saturation?: number
    hue?: number

    0-360

    +
    ignore_default?: 0 | 1

    Default Value

    1
    +
    +
    mode?: string
    on_off?: 0 | 1
    saturation?: number

    0-100

    +
    transition_period?: number

    (ms)

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/PlugConstructorOptions.html b/docs/interfaces/PlugConstructorOptions.html index dd9461f..e051e2f 100644 --- a/docs/interfaces/PlugConstructorOptions.html +++ b/docs/interfaces/PlugConstructorOptions.html @@ -1,7 +1,15 @@ -PlugConstructorOptions | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface PlugConstructorOptions

    Hierarchy

    Index

    Properties

    childId?: string
    -

    If passed a string between 0 and 99 it will prepend the deviceId

    -
    client: Client
    defaultSendOptions?: SendOptions
    host: string
    inUseThreshold?: number
    -

    Watts

    -
    defaultvalue

    0.1

    -
    logger?: RootLogger
    port?: number
    defaultvalue

    9999

    -
    sysInfo: PlugSysinfo

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +PlugConstructorOptions | tplink-smarthome-api

    Interface PlugConstructorOptions

    Hierarchy

    Properties

    childId?: string

    If passed a string between 0 and 99 it will prepend the deviceId

    +
    client: Client
    defaultSendOptions?: SendOptions
    host: string
    inUseThreshold?: number

    Watts

    +

    Default Value

    0.1
    +
    +
    logger?: RootLogger
    port?: number

    Default Value

    9999
    +
    +
    sysInfo: PlugSysinfo

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/PlugEvents.html b/docs/interfaces/PlugEvents.html new file mode 100644 index 0000000..1d692ec --- /dev/null +++ b/docs/interfaces/PlugEvents.html @@ -0,0 +1,18 @@ +PlugEvents | tplink-smarthome-api

    Interface PlugEvents

    Hierarchy

    • PlugEvents

    Properties

    brightness-change: ((value) => void)

    Type declaration

      • (value): void
      • Parameters

        • value: number

        Returns void

    brightness-update: ((value) => void)

    Type declaration

      • (value): void
      • Parameters

        • value: number

        Returns void

    in-use: (() => void)

    Type declaration

      • (): void
      • Plug's relay was turned on or power draw exceeded inUseThreshold

        +

        Returns void

    in-use-update: ((value) => void)

    Type declaration

      • (value): void
      • Plug's in-use state was updated from device. Fired regardless if status was changed.

        +

        Parameters

        • value: boolean

        Returns void

    not-in-use: (() => void)

    Type declaration

      • (): void
      • Plug's relay was turned off or power draw fell below inUseThreshold

        +

        Returns void

    power-off: (() => void)

    Type declaration

      • (): void
      • Plug's relay was turned off.

        +

        Returns void

    power-on: (() => void)

    Type declaration

      • (): void
      • Plug's relay was turned on.

        +

        Returns void

    power-update: ((value) => void)

    Type declaration

      • (value): void
      • Plug's relay state was updated from device. Fired regardless if status was changed.

        +

        Parameters

        • value: boolean

        Returns void

    Events

    emeter-realtime-update: ((value) => void)

    Type declaration

      • (value): void
      • Plug's Energy Monitoring Details were updated from device. Fired regardless if status was changed. + Plug#emeter-realtime-update

        +

        Parameters

        Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/PlugScheduleRuleInput.html b/docs/interfaces/PlugScheduleRuleInput.html index 1f27ec1..741ccf3 100644 --- a/docs/interfaces/PlugScheduleRuleInput.html +++ b/docs/interfaces/PlugScheduleRuleInput.html @@ -1,8 +1,12 @@ -PlugScheduleRuleInput | tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    Interface PlugScheduleRuleInput

    Hierarchy

    • PlugScheduleRuleInput

    Index

    Properties

    daysOfWeek?: number[]
    -

    [0,6] = weekend, [1,2,3,4,5] = weekdays

    -
    dimmer?: Record<string, unknown>
    -

    dimmer data (dimmable plugs only)

    -
    enable: boolean
    defaultvalue

    true

    -
    name?: string
    powerState: boolean
    start: ScheduleRuleInputTime
    -

    Date or number of minutes

    -

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +PlugScheduleRuleInput | tplink-smarthome-api

    Interface PlugScheduleRuleInput

    Hierarchy

    • PlugScheduleRuleInput

    Properties

    daysOfWeek?: number[]

    [0,6] = weekend, [1,2,3,4,5] = weekdays

    +
    dimmer?: Record<string, unknown>

    dimmer data (dimmable plugs only)

    +
    enable: boolean

    Default Value

    true
    +
    +
    name?: string
    powerState: boolean

    Date or number of minutes

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index add759f..1ad3d4f 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1 +1,70 @@ -tplink-smarthome-api
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    tplink-smarthome-api

    Index

    Type aliases

    AwayRule: { delay?: number; enable?: number; frequency?: number; name?: string }

    Type declaration

    • Optional delay?: number
    • Optional enable?: number
    • Optional frequency?: number
    • Optional name?: string
    BulbScheduleRule: Omit<ScheduleRule, "emin"> & { emin: -1; etime_opt: -1; s_light: LightState; sact: 2 }
    BulbSysinfo: CommonSysinfo & { description: string; is_color: 0 | 1; is_dimmable: 0 | 1; is_variable_color_temp: 0 | 1; length?: number; light_state: BulbSysinfoLightState; mic_mac: string; mic_type: string }
    PlugScheduleRule: Omit<ScheduleRule, "emin"> & { emin: 0; s_dimmer?: Record<string, unknown>; sact?: number }
    PlugSysinfo: CommonSysinfo & SysinfoChildren & ({ type: "IOT.SMARTPLUGSWITCH" | "IOT.RANGEEXTENDER.SMARTPLUG" } | { mic_type: "IOT.SMARTPLUGSWITCH" }) & ({ mac: string } | { ethernet_mac: string }) & { brightness?: number; dev_name?: string; feature: string; led_off: 0 | 1; relay_state?: 0 | 1 }
    RealtimeNormalized: RealtimeV1 & RealtimeV2
    RealtimeV1: { current?: number; power?: number; total?: number; voltage?: number }

    Type declaration

    • Optional current?: number
    • Optional power?: number
    • Optional total?: number
    • Optional voltage?: number
    RealtimeV2: { current_ma?: number; power_mw?: number; total_wh?: number; voltage_mv?: number }

    Type declaration

    • Optional current_ma?: number
    • Optional power_mw?: number
    • Optional total_wh?: number
    • Optional voltage_mv?: number

    Legend

    • Constructor
    • Property
    • Method
    • Inherited constructor
    • Inherited property
    • Inherited method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/AnyDevice.html b/docs/types/AnyDevice.html new file mode 100644 index 0000000..05d2586 --- /dev/null +++ b/docs/types/AnyDevice.html @@ -0,0 +1 @@ +AnyDevice | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/AnyDeviceDiscovery.html b/docs/types/AnyDeviceDiscovery.html new file mode 100644 index 0000000..94e8af6 --- /dev/null +++ b/docs/types/AnyDeviceDiscovery.html @@ -0,0 +1 @@ +AnyDeviceDiscovery | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/AnyDeviceOptionsConstructable.html b/docs/types/AnyDeviceOptionsConstructable.html new file mode 100644 index 0000000..d06a749 --- /dev/null +++ b/docs/types/AnyDeviceOptionsConstructable.html @@ -0,0 +1 @@ +AnyDeviceOptionsConstructable | tplink-smarthome-api

    Type alias AnyDeviceOptionsConstructable

    AnyDeviceOptionsConstructable: MarkOptional<ConstructorParameters<typeof Plug>[0], "client" | "sysInfo"> | MarkOptional<ConstructorParameters<typeof Bulb>[0], "client" | "sysInfo">

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/AwayRule.html b/docs/types/AwayRule.html new file mode 100644 index 0000000..3e0ecf8 --- /dev/null +++ b/docs/types/AwayRule.html @@ -0,0 +1 @@ +AwayRule | tplink-smarthome-api

    Type alias AwayRule

    AwayRule: {
        delay?: number;
        enable?: number;
        frequency?: number;
        name?: string;
    }

    Type declaration

    • Optional delay?: number
    • Optional enable?: number
    • Optional frequency?: number
    • Optional name?: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/BulbScheduleRule.html b/docs/types/BulbScheduleRule.html new file mode 100644 index 0000000..2c995b2 --- /dev/null +++ b/docs/types/BulbScheduleRule.html @@ -0,0 +1 @@ +BulbScheduleRule | tplink-smarthome-api

    Type alias BulbScheduleRule

    BulbScheduleRule: Omit<ScheduleRule, "emin"> & {
        emin: -1;
        etime_opt: -1;
        s_light: LightState;
        sact: 2;
    }

    Type declaration

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/BulbSysinfo.html b/docs/types/BulbSysinfo.html new file mode 100644 index 0000000..c70e878 --- /dev/null +++ b/docs/types/BulbSysinfo.html @@ -0,0 +1 @@ +BulbSysinfo | tplink-smarthome-api

    Type alias BulbSysinfo

    BulbSysinfo: CommonSysinfo & {
        description: string;
        is_color: 0 | 1;
        is_dimmable: 0 | 1;
        is_variable_color_temp: 0 | 1;
        length?: number;
        light_state: BulbSysinfoLightState;
        mic_mac: string;
        mic_type: string;
    }

    Type declaration

    • description: string
    • is_color: 0 | 1
    • is_dimmable: 0 | 1
    • is_variable_color_temp: 0 | 1
    • Optional length?: number
    • light_state: BulbSysinfoLightState
    • mic_mac: string
    • mic_type: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/CloudInfo.html b/docs/types/CloudInfo.html new file mode 100644 index 0000000..fe061a2 --- /dev/null +++ b/docs/types/CloudInfo.html @@ -0,0 +1 @@ +CloudInfo | tplink-smarthome-api

    Type alias CloudInfo

    CloudInfo: {
        binded?: number;
        cld_connection?: number;
        fwDlPage?: string;
        fwNotifyType?: number;
        illegalType?: number;
        server?: string;
        stopConnect?: number;
        tcspInfo?: string;
        tcspStatus?: number;
        username?: string;
    }

    Type declaration

    • Optional binded?: number
    • Optional cld_connection?: number
    • Optional fwDlPage?: string
    • Optional fwNotifyType?: number
    • Optional illegalType?: number
    • Optional server?: string
    • Optional stopConnect?: number
    • Optional tcspInfo?: string
    • Optional tcspStatus?: number
    • Optional username?: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/CommonSysinfo.html b/docs/types/CommonSysinfo.html new file mode 100644 index 0000000..fe9141e --- /dev/null +++ b/docs/types/CommonSysinfo.html @@ -0,0 +1 @@ +CommonSysinfo | tplink-smarthome-api

    Type alias CommonSysinfo

    CommonSysinfo: {
        alias: string;
        deviceId: string;
        hw_ver: string;
        model: string;
        sw_ver: string;
    }

    Type declaration

    • alias: string
    • deviceId: string
    • hw_ver: string
    • model: string
    • sw_ver: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/DeviceDiscovery.html b/docs/types/DeviceDiscovery.html new file mode 100644 index 0000000..38a6c50 --- /dev/null +++ b/docs/types/DeviceDiscovery.html @@ -0,0 +1 @@ +DeviceDiscovery | tplink-smarthome-api

    Type alias DeviceDiscovery

    DeviceDiscovery: {
        seenOnDiscovery: number;
        status: string;
    }

    Type declaration

    • seenOnDiscovery: number
    • status: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/DeviceOptionsDiscovery.html b/docs/types/DeviceOptionsDiscovery.html new file mode 100644 index 0000000..035f5ee --- /dev/null +++ b/docs/types/DeviceOptionsDiscovery.html @@ -0,0 +1 @@ +DeviceOptionsDiscovery | tplink-smarthome-api

    Type alias DeviceOptionsDiscovery

    DeviceOptionsDiscovery: MarkOptional<ConstructorParameters<typeof Plug>[0], "client" | "sysInfo" | "host"> | MarkOptional<ConstructorParameters<typeof Bulb>[0], "client" | "sysInfo" | "host">

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/DiscoveryDevice.html b/docs/types/DiscoveryDevice.html new file mode 100644 index 0000000..31a0d9f --- /dev/null +++ b/docs/types/DiscoveryDevice.html @@ -0,0 +1 @@ +DiscoveryDevice | tplink-smarthome-api

    Type alias DiscoveryDevice

    DiscoveryDevice: {
        host: string;
        port?: number;
    }

    Type declaration

    • host: string
    • Optional port?: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/HasErrCode.html b/docs/types/HasErrCode.html new file mode 100644 index 0000000..f29b1ee --- /dev/null +++ b/docs/types/HasErrCode.html @@ -0,0 +1 @@ +HasErrCode | tplink-smarthome-api

    Type alias HasErrCode

    HasErrCode: {
        err_code: number;
        err_msg?: string;
    }

    Type declaration

    • err_code: number
    • Optional err_msg?: string

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/HasRuleListWithRuleIds.html b/docs/types/HasRuleListWithRuleIds.html new file mode 100644 index 0000000..7ab664c --- /dev/null +++ b/docs/types/HasRuleListWithRuleIds.html @@ -0,0 +1 @@ +HasRuleListWithRuleIds | tplink-smarthome-api

    Type alias HasRuleListWithRuleIds

    HasRuleListWithRuleIds: {
        rule_list: {
            id: string;
        }[];
    }

    Type declaration

    • rule_list: {
          id: string;
      }[]

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/LogLevelMethodNames.html b/docs/types/LogLevelMethodNames.html new file mode 100644 index 0000000..2193051 --- /dev/null +++ b/docs/types/LogLevelMethodNames.html @@ -0,0 +1 @@ +LogLevelMethodNames | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/Logger.html b/docs/types/Logger.html new file mode 100644 index 0000000..9e37787 --- /dev/null +++ b/docs/types/Logger.html @@ -0,0 +1 @@ +Logger | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/PlugChild.html b/docs/types/PlugChild.html new file mode 100644 index 0000000..8758545 --- /dev/null +++ b/docs/types/PlugChild.html @@ -0,0 +1 @@ +PlugChild | tplink-smarthome-api

    Type alias PlugChild

    PlugChild: {
        alias: string;
        id: string;
        state: number;
    }

    Type declaration

    • alias: string
    • id: string
    • state: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/PlugScheduleRule.html b/docs/types/PlugScheduleRule.html new file mode 100644 index 0000000..ef424c5 --- /dev/null +++ b/docs/types/PlugScheduleRule.html @@ -0,0 +1 @@ +PlugScheduleRule | tplink-smarthome-api

    Type alias PlugScheduleRule

    PlugScheduleRule: Omit<ScheduleRule, "emin"> & {
        emin: 0;
        s_dimmer?: Record<string, unknown>;
        sact?: number;
    }

    Type declaration

    • emin: 0
    • Optional s_dimmer?: Record<string, unknown>
    • Optional sact?: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/PlugSysinfo.html b/docs/types/PlugSysinfo.html new file mode 100644 index 0000000..9025ef9 --- /dev/null +++ b/docs/types/PlugSysinfo.html @@ -0,0 +1 @@ +PlugSysinfo | tplink-smarthome-api

    Type alias PlugSysinfo

    PlugSysinfo: CommonSysinfo & SysinfoChildren & ({
        type: "IOT.SMARTPLUGSWITCH" | "IOT.RANGEEXTENDER.SMARTPLUG";
    } | {
        mic_type: "IOT.SMARTPLUGSWITCH";
    }) & ({
        mac: string;
    } | {
        ethernet_mac: string;
    }) & {
        brightness?: number;
        dev_name?: string;
        feature: string;
        led_off: 0 | 1;
        relay_state?: 0 | 1;
    }

    Type declaration

    • Optional brightness?: number
    • Optional dev_name?: string
    • feature: string
    • led_off: 0 | 1
    • Optional relay_state?: 0 | 1

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/Realtime.html b/docs/types/Realtime.html new file mode 100644 index 0000000..df5cc85 --- /dev/null +++ b/docs/types/Realtime.html @@ -0,0 +1 @@ +Realtime | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/RealtimeNormalized.html b/docs/types/RealtimeNormalized.html new file mode 100644 index 0000000..650fd30 --- /dev/null +++ b/docs/types/RealtimeNormalized.html @@ -0,0 +1 @@ +RealtimeNormalized | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/RealtimeV1.html b/docs/types/RealtimeV1.html new file mode 100644 index 0000000..d3c1bcd --- /dev/null +++ b/docs/types/RealtimeV1.html @@ -0,0 +1 @@ +RealtimeV1 | tplink-smarthome-api

    Type alias RealtimeV1

    RealtimeV1: {
        current?: number;
        power?: number;
        total?: number;
        voltage?: number;
    }

    Type declaration

    • Optional current?: number
    • Optional power?: number
    • Optional total?: number
    • Optional voltage?: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/RealtimeV2.html b/docs/types/RealtimeV2.html new file mode 100644 index 0000000..e74ab87 --- /dev/null +++ b/docs/types/RealtimeV2.html @@ -0,0 +1 @@ +RealtimeV2 | tplink-smarthome-api

    Type alias RealtimeV2

    RealtimeV2: {
        current_ma?: number;
        power_mw?: number;
        total_wh?: number;
        voltage_mv?: number;
    }

    Type declaration

    • Optional current_ma?: number
    • Optional power_mw?: number
    • Optional total_wh?: number
    • Optional voltage_mv?: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleDateStart.html b/docs/types/ScheduleDateStart.html new file mode 100644 index 0000000..b8d05de --- /dev/null +++ b/docs/types/ScheduleDateStart.html @@ -0,0 +1 @@ +ScheduleDateStart | tplink-smarthome-api

    Type alias ScheduleDateStart

    ScheduleDateStart: {
        smin: number;
        stime_opt: number;
    }

    Type declaration

    • smin: number
    • stime_opt: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleNextAction.html b/docs/types/ScheduleNextAction.html new file mode 100644 index 0000000..689cda6 --- /dev/null +++ b/docs/types/ScheduleNextAction.html @@ -0,0 +1 @@ +ScheduleNextAction | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleNextActionResponse.html b/docs/types/ScheduleNextActionResponse.html new file mode 100644 index 0000000..18ff6b2 --- /dev/null +++ b/docs/types/ScheduleNextActionResponse.html @@ -0,0 +1 @@ +ScheduleNextActionResponse | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleRule.html b/docs/types/ScheduleRule.html new file mode 100644 index 0000000..6f05105 --- /dev/null +++ b/docs/types/ScheduleRule.html @@ -0,0 +1 @@ +ScheduleRule | tplink-smarthome-api

    Type alias ScheduleRule

    ScheduleRule: {
        day?: number;
        emin: -1 | 0;
        enable?: number;
        etime_opt: -1;
        month?: number;
        name?: string;
        repeat?: boolean;
        wday?: WDay;
        year?: number;
    } & (ScheduleDateStart | Record<string, unknown>)

    Type declaration

    • Optional day?: number
    • emin: -1 | 0
    • Optional enable?: number
    • etime_opt: -1
    • Optional month?: number
    • Optional name?: string
    • Optional repeat?: boolean
    • Optional wday?: WDay
    • Optional year?: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleRuleInputTime.html b/docs/types/ScheduleRuleInputTime.html new file mode 100644 index 0000000..44c8ecf --- /dev/null +++ b/docs/types/ScheduleRuleInputTime.html @@ -0,0 +1 @@ +ScheduleRuleInputTime | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleRuleResponse.html b/docs/types/ScheduleRuleResponse.html new file mode 100644 index 0000000..cc440cf --- /dev/null +++ b/docs/types/ScheduleRuleResponse.html @@ -0,0 +1 @@ +ScheduleRuleResponse | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleRuleWithId.html b/docs/types/ScheduleRuleWithId.html new file mode 100644 index 0000000..315ae29 --- /dev/null +++ b/docs/types/ScheduleRuleWithId.html @@ -0,0 +1 @@ +ScheduleRuleWithId | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleRules.html b/docs/types/ScheduleRules.html new file mode 100644 index 0000000..ff444e5 --- /dev/null +++ b/docs/types/ScheduleRules.html @@ -0,0 +1 @@ +ScheduleRules | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ScheduleRulesResponse.html b/docs/types/ScheduleRulesResponse.html new file mode 100644 index 0000000..7a09b8c --- /dev/null +++ b/docs/types/ScheduleRulesResponse.html @@ -0,0 +1 @@ +ScheduleRulesResponse | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/SendOptions.html b/docs/types/SendOptions.html new file mode 100644 index 0000000..5009a95 --- /dev/null +++ b/docs/types/SendOptions.html @@ -0,0 +1,6 @@ +SendOptions | tplink-smarthome-api

    Type alias SendOptions

    SendOptions: {
        sharedSocketTimeout?: number;
        timeout?: number;
        transport?: "tcp" | "udp";
        useSharedSocket?: boolean;
    }

    Send Options.

    +

    Type declaration

    • Optional sharedSocketTimeout?: number
    • Optional timeout?: number
    • Optional transport?: "tcp" | "udp"
    • Optional useSharedSocket?: boolean

    Type Param

    (ms)

    +

    Type Param

    'tcp','udp'

    +

    Type Param

    attempt to reuse a shared socket if available, UDP only

    +

    Type Param

    (ms) how long to wait for another send before closing a shared socket. 0 = never automatically close socket

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/Sysinfo.html b/docs/types/Sysinfo.html new file mode 100644 index 0000000..de56396 --- /dev/null +++ b/docs/types/Sysinfo.html @@ -0,0 +1 @@ +Sysinfo | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/SysinfoChildren.html b/docs/types/SysinfoChildren.html new file mode 100644 index 0000000..0d0e09e --- /dev/null +++ b/docs/types/SysinfoChildren.html @@ -0,0 +1 @@ +SysinfoChildren | tplink-smarthome-api

    Type alias SysinfoChildren

    SysinfoChildren: {
        children?: [{
            alias: string;
            id: string;
            state: number;
        }];
    }

    Type declaration

    • Optional children?: [{
          alias: string;
          id: string;
          state: number;
      }]

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/TimerRuleInput.html b/docs/types/TimerRuleInput.html new file mode 100644 index 0000000..871b1a3 --- /dev/null +++ b/docs/types/TimerRuleInput.html @@ -0,0 +1 @@ +TimerRuleInput | tplink-smarthome-api

    Type alias TimerRuleInput

    TimerRuleInput: {
        delay: number;
        enable: boolean;
        name?: string;
        powerState: boolean | 0 | 1;
    }

    Type declaration

    • delay: number
    • enable: boolean
    • Optional name?: string
    • powerState: boolean | 0 | 1

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/WDay.html b/docs/types/WDay.html new file mode 100644 index 0000000..69df24b --- /dev/null +++ b/docs/types/WDay.html @@ -0,0 +1 @@ +WDay | tplink-smarthome-api

    Generated using TypeDoc

    \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 19fe93a..6134c99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "tplink-smarthome-api", - "version": "4.2.0", + "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tplink-smarthome-api", - "version": "4.2.0", + "version": "5.0.0", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "~11.1.0", diff --git a/package.json b/package.json index 8888954..8e3f35e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tplink-smarthome-api", - "version": "4.2.0", + "version": "5.0.0", "description": "TP-Link Smart Home API", "keywords": [ "tplink",