hap-nodejs 1.1.1-beta.4 → 1.1.1-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@types/bonjour-hap.d.ts +53 -50
- package/@types/simple-plist.d.ts +4 -0
- package/README.md +19 -16
- package/dist/accessories/AirConditioner_accessory.js +30 -28
- package/dist/accessories/AirConditioner_accessory.js.map +1 -1
- package/dist/accessories/AppleTVRemote_accessory.js +81 -69
- package/dist/accessories/AppleTVRemote_accessory.js.map +1 -1
- package/dist/accessories/Camera_accessory.js +136 -141
- package/dist/accessories/Camera_accessory.js.map +1 -1
- package/dist/accessories/Fan_accessory.js +22 -18
- package/dist/accessories/Fan_accessory.js.map +1 -1
- package/dist/accessories/GarageDoorOpener_accessory.js +35 -33
- package/dist/accessories/GarageDoorOpener_accessory.js.map +1 -1
- package/dist/accessories/Light-AdaptiveLighting_accessory.js +44 -42
- package/dist/accessories/Light-AdaptiveLighting_accessory.js.map +1 -1
- package/dist/accessories/Light_accessory.js +34 -32
- package/dist/accessories/Light_accessory.js.map +1 -1
- package/dist/accessories/Lock_accessory.js +26 -25
- package/dist/accessories/Lock_accessory.js.map +1 -1
- package/dist/accessories/MotionSensor_accessory.js +16 -13
- package/dist/accessories/MotionSensor_accessory.js.map +1 -1
- package/dist/accessories/Outlet_accessory.js +22 -20
- package/dist/accessories/Outlet_accessory.js.map +1 -1
- package/dist/accessories/SmartSpeaker_accessory.js +20 -18
- package/dist/accessories/SmartSpeaker_accessory.js.map +1 -1
- package/dist/accessories/Sprinkler_accessory.js +37 -34
- package/dist/accessories/Sprinkler_accessory.js.map +1 -1
- package/dist/accessories/TV_accessory.js +45 -43
- package/dist/accessories/TV_accessory.js.map +1 -1
- package/dist/accessories/TemperatureSensor_accessory.js +15 -12
- package/dist/accessories/TemperatureSensor_accessory.js.map +1 -1
- package/dist/accessories/Wi-FiRouter_accessory.d.ts +1 -1
- package/dist/accessories/Wi-FiRouter_accessory.d.ts.map +1 -1
- package/dist/accessories/Wi-FiRouter_accessory.js +12 -9
- package/dist/accessories/Wi-FiRouter_accessory.js.map +1 -1
- package/dist/accessories/Wi-FiSatellite_accessory.d.ts +1 -1
- package/dist/accessories/Wi-FiSatellite_accessory.d.ts.map +1 -1
- package/dist/accessories/Wi-FiSatellite_accessory.js +14 -11
- package/dist/accessories/Wi-FiSatellite_accessory.js.map +1 -1
- package/dist/accessories/gstreamer-audioProducer.d.ts +3 -3
- package/dist/accessories/gstreamer-audioProducer.d.ts.map +1 -1
- package/dist/accessories/gstreamer-audioProducer.js +38 -37
- package/dist/accessories/gstreamer-audioProducer.js.map +1 -1
- package/dist/accessories/types.d.ts +63 -63
- package/dist/accessories/types.d.ts.map +1 -1
- package/dist/accessories/types.js +87 -83
- package/dist/accessories/types.js.map +1 -1
- package/dist/index.d.ts +28 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -40
- package/dist/index.js.map +1 -1
- package/dist/internal-types.d.ts +1 -1
- package/dist/internal-types.d.ts.map +1 -1
- package/dist/internal-types.js +21 -19
- package/dist/internal-types.js.map +1 -1
- package/dist/lib/Accessory.d.ts +37 -38
- package/dist/lib/Accessory.d.ts.map +1 -1
- package/dist/lib/Accessory.js +296 -286
- package/dist/lib/Accessory.js.map +1 -1
- package/dist/lib/Advertiser.d.ts +7 -7
- package/dist/lib/Advertiser.d.ts.map +1 -1
- package/dist/lib/Advertiser.js +136 -128
- package/dist/lib/Advertiser.js.map +1 -1
- package/dist/lib/Bridge.d.ts +1 -1
- package/dist/lib/Bridge.d.ts.map +1 -1
- package/dist/lib/Bridge.js +6 -2
- package/dist/lib/Bridge.js.map +1 -1
- package/dist/lib/Characteristic.d.ts +41 -40
- package/dist/lib/Characteristic.d.ts.map +1 -1
- package/dist/lib/Characteristic.js +208 -204
- package/dist/lib/Characteristic.js.map +1 -1
- package/dist/lib/HAPServer.d.ts +30 -31
- package/dist/lib/HAPServer.d.ts.map +1 -1
- package/dist/lib/HAPServer.js +229 -220
- package/dist/lib/HAPServer.js.map +1 -1
- package/dist/lib/Service.d.ts +22 -22
- package/dist/lib/Service.d.ts.map +1 -1
- package/dist/lib/Service.js +67 -63
- package/dist/lib/Service.js.map +1 -1
- package/dist/lib/camera/RTPProxy.d.ts +1 -2
- package/dist/lib/camera/RTPProxy.d.ts.map +1 -1
- package/dist/lib/camera/RTPProxy.js +44 -28
- package/dist/lib/camera/RTPProxy.js.map +1 -1
- package/dist/lib/camera/RTPStreamManagement.d.ts +33 -34
- package/dist/lib/camera/RTPStreamManagement.d.ts.map +1 -1
- package/dist/lib/camera/RTPStreamManagement.js +149 -181
- package/dist/lib/camera/RTPStreamManagement.js.map +1 -1
- package/dist/lib/camera/RecordingManagement.d.ts +17 -19
- package/dist/lib/camera/RecordingManagement.d.ts.map +1 -1
- package/dist/lib/camera/RecordingManagement.js +151 -160
- package/dist/lib/camera/RecordingManagement.js.map +1 -1
- package/dist/lib/camera/index.d.ts +3 -3
- package/dist/lib/camera/index.d.ts.map +1 -1
- package/dist/lib/camera/index.js +6 -3
- package/dist/lib/camera/index.js.map +1 -1
- package/dist/lib/controller/AdaptiveLightingController.d.ts +33 -33
- package/dist/lib/controller/AdaptiveLightingController.d.ts.map +1 -1
- package/dist/lib/controller/AdaptiveLightingController.js +144 -152
- package/dist/lib/controller/AdaptiveLightingController.js.map +1 -1
- package/dist/lib/controller/CameraController.d.ts +20 -22
- package/dist/lib/controller/CameraController.d.ts.map +1 -1
- package/dist/lib/controller/CameraController.js +78 -74
- package/dist/lib/controller/CameraController.js.map +1 -1
- package/dist/lib/controller/Controller.d.ts +4 -4
- package/dist/lib/controller/Controller.d.ts.map +1 -1
- package/dist/lib/controller/Controller.js +8 -5
- package/dist/lib/controller/Controller.js.map +1 -1
- package/dist/lib/controller/DoorbellController.d.ts +4 -5
- package/dist/lib/controller/DoorbellController.d.ts.map +1 -1
- package/dist/lib/controller/DoorbellController.js +13 -9
- package/dist/lib/controller/DoorbellController.js.map +1 -1
- package/dist/lib/controller/RemoteController.d.ts +37 -39
- package/dist/lib/controller/RemoteController.d.ts.map +1 -1
- package/dist/lib/controller/RemoteController.js +197 -208
- package/dist/lib/controller/RemoteController.js.map +1 -1
- package/dist/lib/controller/index.d.ts +5 -5
- package/dist/lib/controller/index.d.ts.map +1 -1
- package/dist/lib/controller/index.js +8 -5
- package/dist/lib/controller/index.js.map +1 -1
- package/dist/lib/datastream/DataStreamManagement.d.ts +2 -2
- package/dist/lib/datastream/DataStreamManagement.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamManagement.js +39 -39
- package/dist/lib/datastream/DataStreamManagement.js.map +1 -1
- package/dist/lib/datastream/DataStreamParser.d.ts +0 -1
- package/dist/lib/datastream/DataStreamParser.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamParser.js +77 -57
- package/dist/lib/datastream/DataStreamParser.js.map +1 -1
- package/dist/lib/datastream/DataStreamServer.d.ts +22 -23
- package/dist/lib/datastream/DataStreamServer.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamServer.js +164 -154
- package/dist/lib/datastream/DataStreamServer.js.map +1 -1
- package/dist/lib/datastream/index.d.ts +3 -3
- package/dist/lib/datastream/index.d.ts.map +1 -1
- package/dist/lib/datastream/index.js +6 -3
- package/dist/lib/datastream/index.js.map +1 -1
- package/dist/lib/definitions/CharacteristicDefinitions.d.ts +11 -1
- package/dist/lib/definitions/CharacteristicDefinitions.d.ts.map +1 -1
- package/dist/lib/definitions/CharacteristicDefinitions.js +1218 -957
- package/dist/lib/definitions/CharacteristicDefinitions.js.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.d.ts +1 -1
- package/dist/lib/definitions/ServiceDefinitions.d.ts.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.js +695 -620
- package/dist/lib/definitions/ServiceDefinitions.js.map +1 -1
- package/dist/lib/definitions/generate-definitions.d.ts +3 -3
- package/dist/lib/definitions/generate-definitions.d.ts.map +1 -1
- package/dist/lib/definitions/generate-definitions.js +256 -244
- package/dist/lib/definitions/generate-definitions.js.map +1 -1
- package/dist/lib/definitions/generator-configuration.d.ts +1 -1
- package/dist/lib/definitions/generator-configuration.d.ts.map +1 -1
- package/dist/lib/definitions/generator-configuration.js +170 -160
- package/dist/lib/definitions/generator-configuration.js.map +1 -1
- package/dist/lib/definitions/index.d.ts +2 -2
- package/dist/lib/definitions/index.d.ts.map +1 -1
- package/dist/lib/definitions/index.js +5 -2
- package/dist/lib/definitions/index.js.map +1 -1
- package/dist/lib/gen/HomeKit.d.ts +7 -0
- package/dist/lib/gen/HomeKit.d.ts.map +1 -0
- package/dist/lib/gen/HomeKit.js +8 -0
- package/dist/lib/gen/HomeKit.js.map +1 -0
- package/dist/lib/model/AccessoryInfo.d.ts +3 -4
- package/dist/lib/model/AccessoryInfo.d.ts.map +1 -1
- package/dist/lib/model/AccessoryInfo.js +53 -50
- package/dist/lib/model/AccessoryInfo.js.map +1 -1
- package/dist/lib/model/ControllerStorage.d.ts +3 -3
- package/dist/lib/model/ControllerStorage.d.ts.map +1 -1
- package/dist/lib/model/ControllerStorage.js +23 -18
- package/dist/lib/model/ControllerStorage.js.map +1 -1
- package/dist/lib/model/HAPStorage.d.ts +2 -2
- package/dist/lib/model/HAPStorage.d.ts.map +1 -1
- package/dist/lib/model/HAPStorage.js +11 -4
- package/dist/lib/model/HAPStorage.js.map +1 -1
- package/dist/lib/model/IdentifierCache.d.ts +1 -1
- package/dist/lib/model/IdentifierCache.d.ts.map +1 -1
- package/dist/lib/model/IdentifierCache.js +27 -19
- package/dist/lib/model/IdentifierCache.js.map +1 -1
- package/dist/lib/tv/AccessControlManagement.d.ts +9 -9
- package/dist/lib/tv/AccessControlManagement.d.ts.map +1 -1
- package/dist/lib/tv/AccessControlManagement.js +29 -27
- package/dist/lib/tv/AccessControlManagement.js.map +1 -1
- package/dist/lib/util/checkName.d.ts +2 -2
- package/dist/lib/util/checkName.d.ts.map +1 -1
- package/dist/lib/util/checkName.js +9 -6
- package/dist/lib/util/checkName.js.map +1 -1
- package/dist/lib/util/clone.d.ts.map +1 -1
- package/dist/lib/util/clone.js +5 -1
- package/dist/lib/util/clone.js.map +1 -1
- package/dist/lib/util/color-utils.d.ts +1 -1
- package/dist/lib/util/color-utils.d.ts.map +1 -1
- package/dist/lib/util/color-utils.js +9 -4
- package/dist/lib/util/color-utils.js.map +1 -1
- package/dist/lib/util/eventedhttp.d.ts +22 -23
- package/dist/lib/util/eventedhttp.d.ts.map +1 -1
- package/dist/lib/util/eventedhttp.js +116 -109
- package/dist/lib/util/eventedhttp.js.map +1 -1
- package/dist/lib/util/hapCrypto.d.ts +2 -3
- package/dist/lib/util/hapCrypto.d.ts.map +1 -1
- package/dist/lib/util/hapCrypto.js +40 -31
- package/dist/lib/util/hapCrypto.js.map +1 -1
- package/dist/lib/util/hapStatusError.d.ts +1 -1
- package/dist/lib/util/hapStatusError.d.ts.map +1 -1
- package/dist/lib/util/hapStatusError.js +8 -4
- package/dist/lib/util/hapStatusError.js.map +1 -1
- package/dist/lib/util/net-utils.d.ts +1 -1
- package/dist/lib/util/net-utils.js +23 -17
- package/dist/lib/util/net-utils.js.map +1 -1
- package/dist/lib/util/once.d.ts.map +1 -1
- package/dist/lib/util/once.js +6 -2
- package/dist/lib/util/once.js.map +1 -1
- package/dist/lib/util/promise-utils.d.ts +1 -1
- package/dist/lib/util/promise-utils.d.ts.map +1 -1
- package/dist/lib/util/promise-utils.js +10 -3
- package/dist/lib/util/promise-utils.js.map +1 -1
- package/dist/lib/util/request-util.d.ts +2 -3
- package/dist/lib/util/request-util.d.ts.map +1 -1
- package/dist/lib/util/request-util.js +19 -11
- package/dist/lib/util/request-util.js.map +1 -1
- package/dist/lib/util/time.d.ts +0 -1
- package/dist/lib/util/time.d.ts.map +1 -1
- package/dist/lib/util/time.js +11 -6
- package/dist/lib/util/time.js.map +1 -1
- package/dist/lib/util/tlv.d.ts +0 -1
- package/dist/lib/util/tlv.d.ts.map +1 -1
- package/dist/lib/util/tlv.js +43 -28
- package/dist/lib/util/tlv.js.map +1 -1
- package/dist/lib/util/uuid.d.ts +0 -1
- package/dist/lib/util/uuid.d.ts.map +1 -1
- package/dist/lib/util/uuid.js +38 -26
- package/dist/lib/util/uuid.js.map +1 -1
- package/dist/types.d.ts +24 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -3
- package/dist/types.js.map +1 -1
- package/package.json +45 -50
- package/dist/lib/dbus/align.d.ts +0 -2
- package/dist/lib/dbus/align.d.ts.map +0 -1
- package/dist/lib/dbus/align.js +0 -12
- package/dist/lib/dbus/align.js.map +0 -1
- package/dist/lib/dbus/bus.d.ts +0 -38
- package/dist/lib/dbus/bus.d.ts.map +0 -1
- package/dist/lib/dbus/bus.js +0 -222
- package/dist/lib/dbus/bus.js.map +0 -1
- package/dist/lib/dbus/constants.d.ts +0 -43
- package/dist/lib/dbus/constants.d.ts.map +0 -1
- package/dist/lib/dbus/constants.js +0 -53
- package/dist/lib/dbus/constants.js.map +0 -1
- package/dist/lib/dbus/dbus-buffer.d.ts +0 -30
- package/dist/lib/dbus/dbus-buffer.d.ts.map +0 -1
- package/dist/lib/dbus/dbus-buffer.js +0 -175
- package/dist/lib/dbus/dbus-buffer.js.map +0 -1
- package/dist/lib/dbus/handshake.d.ts +0 -2
- package/dist/lib/dbus/handshake.d.ts.map +0 -1
- package/dist/lib/dbus/handshake.js +0 -130
- package/dist/lib/dbus/handshake.js.map +0 -1
- package/dist/lib/dbus/index.d.ts +0 -3
- package/dist/lib/dbus/index.d.ts.map +0 -1
- package/dist/lib/dbus/index.js +0 -123
- package/dist/lib/dbus/index.js.map +0 -1
- package/dist/lib/dbus/introspect.d.ts +0 -30
- package/dist/lib/dbus/introspect.d.ts.map +0 -1
- package/dist/lib/dbus/introspect.js +0 -208
- package/dist/lib/dbus/introspect.js.map +0 -1
- package/dist/lib/dbus/marshall.d.ts +0 -2
- package/dist/lib/dbus/marshall.d.ts.map +0 -1
- package/dist/lib/dbus/marshall.js +0 -97
- package/dist/lib/dbus/marshall.js.map +0 -1
- package/dist/lib/dbus/marshallers.d.ts +0 -10
- package/dist/lib/dbus/marshallers.d.ts.map +0 -1
- package/dist/lib/dbus/marshallers.js +0 -329
- package/dist/lib/dbus/marshallers.js.map +0 -1
- package/dist/lib/dbus/message.d.ts +0 -4
- package/dist/lib/dbus/message.d.ts.map +0 -1
- package/dist/lib/dbus/message.js +0 -116
- package/dist/lib/dbus/message.js.map +0 -1
- package/dist/lib/dbus/put.d.ts +0 -21
- package/dist/lib/dbus/put.d.ts.map +0 -1
- package/dist/lib/dbus/put.js +0 -120
- package/dist/lib/dbus/put.js.map +0 -1
- package/dist/lib/dbus/readline.d.ts +0 -2
- package/dist/lib/dbus/readline.d.ts.map +0 -1
- package/dist/lib/dbus/readline.js +0 -27
- package/dist/lib/dbus/readline.js.map +0 -1
- package/dist/lib/dbus/signature.d.ts +0 -2
- package/dist/lib/dbus/signature.d.ts.map +0 -1
- package/dist/lib/dbus/signature.js +0 -59
- package/dist/lib/dbus/signature.js.map +0 -1
- package/dist/lib/dbus/stdifaces.d.ts +0 -3
- package/dist/lib/dbus/stdifaces.d.ts.map +0 -1
- package/dist/lib/dbus/stdifaces.js +0 -206
- package/dist/lib/dbus/stdifaces.js.map +0 -1
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HAPStorage = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
const node_persist_1 = tslib_1.__importDefault(require("node-persist"));
|
|
2
8
|
/**
|
|
3
9
|
* @group Model
|
|
4
10
|
*/
|
|
5
|
-
|
|
11
|
+
class HAPStorage {
|
|
6
12
|
static INSTANCE = new HAPStorage();
|
|
7
13
|
localStore;
|
|
8
14
|
customStoragePath;
|
|
@@ -14,7 +20,7 @@ export class HAPStorage {
|
|
|
14
20
|
}
|
|
15
21
|
storage() {
|
|
16
22
|
if (!this.localStore) {
|
|
17
|
-
this.localStore =
|
|
23
|
+
this.localStore = node_persist_1.default.create();
|
|
18
24
|
if (this.customStoragePath) {
|
|
19
25
|
this.localStore.initSync({
|
|
20
26
|
dir: this.customStoragePath,
|
|
@@ -28,9 +34,10 @@ export class HAPStorage {
|
|
|
28
34
|
}
|
|
29
35
|
setCustomStoragePath(path) {
|
|
30
36
|
if (this.localStore) {
|
|
31
|
-
throw new Error(
|
|
37
|
+
throw new Error("Cannot change storage path after it has already been initialized!");
|
|
32
38
|
}
|
|
33
39
|
this.customStoragePath = path;
|
|
34
40
|
}
|
|
35
41
|
}
|
|
42
|
+
exports.HAPStorage = HAPStorage;
|
|
36
43
|
//# sourceMappingURL=HAPStorage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HAPStorage.js","sourceRoot":"","sources":["../../../src/lib/model/HAPStorage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HAPStorage.js","sourceRoot":"","sources":["../../../src/lib/model/HAPStorage.ts"],"names":[],"mappings":";;;;AAAA,6DAA6D;AAC7D,aAAa;AACb,wEAAqD;AAErD;;GAEG;AACH,MAAa,UAAU;IAEb,MAAM,CAAU,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;IAE5C,UAAU,CAAgB;IAC1B,iBAAiB,CAAU;IAE5B,MAAM,CAAC,OAAO;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,IAAY;QAC7C,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,sBAAO,CAAC,MAAM,EAAE,CAAC;YAEnC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBACvB,GAAG,EAAE,IAAI,CAAC,iBAAiB;iBAC5B,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEM,oBAAoB,CAAC,IAAY;QACtC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;;AArCH,gCAuCC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { MacAddress } from "../../types";
|
|
2
2
|
/**
|
|
3
3
|
* IdentifierCache is a model class that manages a system of associating HAP "Accessory IDs" and "Instance IDs"
|
|
4
4
|
* with other values that don't usually change. HomeKit Clients use Accessory/Instance IDs as a primary key of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentifierCache.d.ts","sourceRoot":"","sources":["../../../src/lib/model/IdentifierCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IdentifierCache.d.ts","sourceRoot":"","sources":["../../../src/lib/model/IdentifierCache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAKP,QAAQ,EAAE,UAAU;IAJvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAQ;IACjD,eAAe,SAAM;gBAEF,QAAQ,EAAE,UAAU;IAGvC,kBAAkB,IAAI,IAAI;IAI1B,gCAAgC,IAAI,IAAI;IAMxC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS7B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAS5C,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAOrC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM;IAUhH,UAAU,IAAI,MAAM;IAOpB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAOzC,IAAI,IAAI,IAAI;IAYZ;;OAEG;IAEH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM;IAI/C,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI;IAczD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;CAI1C"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdentifierCache = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const crypto_1 = tslib_1.__importDefault(require("crypto"));
|
|
6
|
+
const util_1 = tslib_1.__importDefault(require("util"));
|
|
7
|
+
const HAPStorage_1 = require("./HAPStorage");
|
|
4
8
|
/**
|
|
5
9
|
* IdentifierCache is a model class that manages a system of associating HAP "Accessory IDs" and "Instance IDs"
|
|
6
10
|
* with other values that don't usually change. HomeKit Clients use Accessory/Instance IDs as a primary key of
|
|
@@ -10,11 +14,11 @@ import { HAPStorage } from './HAPStorage.js';
|
|
|
10
14
|
* the scene will stop working.
|
|
11
15
|
* @group Model
|
|
12
16
|
*/
|
|
13
|
-
|
|
17
|
+
class IdentifierCache {
|
|
14
18
|
username;
|
|
15
19
|
_cache = {}; // cache[key:string] = id:number
|
|
16
20
|
_usedCache = null; // for usage tracking and expiring old keys
|
|
17
|
-
_savedCacheHash =
|
|
21
|
+
_savedCacheHash = ""; // for checking if new cache need to be saved
|
|
18
22
|
constructor(username) {
|
|
19
23
|
this.username = username;
|
|
20
24
|
}
|
|
@@ -29,7 +33,7 @@ export class IdentifierCache {
|
|
|
29
33
|
getCache(key) {
|
|
30
34
|
const value = this._cache[key];
|
|
31
35
|
// track this cache item if needed
|
|
32
|
-
if (this._usedCache && typeof value !==
|
|
36
|
+
if (this._usedCache && typeof value !== "undefined") {
|
|
33
37
|
this._usedCache[key] = value;
|
|
34
38
|
}
|
|
35
39
|
return value;
|
|
@@ -45,36 +49,39 @@ export class IdentifierCache {
|
|
|
45
49
|
getAID(accessoryUUID) {
|
|
46
50
|
const key = accessoryUUID;
|
|
47
51
|
// ensure that our "next AID" field is not expired
|
|
48
|
-
this.getCache(
|
|
52
|
+
this.getCache("|nextAID");
|
|
49
53
|
return this.getCache(key) || this.setCache(key, this.getNextAID());
|
|
50
54
|
}
|
|
51
55
|
getIID(accessoryUUID, serviceUUID, serviceSubtype, characteristicUUID) {
|
|
52
|
-
const key =
|
|
56
|
+
const key = accessoryUUID
|
|
57
|
+
+ "|" + serviceUUID
|
|
58
|
+
+ (serviceSubtype ? "|" + serviceSubtype : "")
|
|
59
|
+
+ (characteristicUUID ? "|" + characteristicUUID : "");
|
|
53
60
|
// ensure that our "next IID" field for this accessory is not expired
|
|
54
|
-
this.getCache(
|
|
61
|
+
this.getCache(accessoryUUID + "|nextIID");
|
|
55
62
|
return this.getCache(key) || this.setCache(key, this.getNextIID(accessoryUUID));
|
|
56
63
|
}
|
|
57
64
|
getNextAID() {
|
|
58
|
-
const key =
|
|
65
|
+
const key = "|nextAID";
|
|
59
66
|
const nextAID = this.getCache(key) || 2; // start at 2 because the root Accessory or Bridge must be 1
|
|
60
67
|
this.setCache(key, nextAID + 1); // increment
|
|
61
68
|
return nextAID;
|
|
62
69
|
}
|
|
63
70
|
getNextIID(accessoryUUID) {
|
|
64
|
-
const key =
|
|
71
|
+
const key = accessoryUUID + "|nextIID";
|
|
65
72
|
const nextIID = this.getCache(key) || 2; // iid 1 is reserved for the Accessory Information service
|
|
66
73
|
this.setCache(key, nextIID + 1); // increment
|
|
67
74
|
return nextIID;
|
|
68
75
|
}
|
|
69
76
|
save() {
|
|
70
|
-
const newCacheHash = createHash(
|
|
71
|
-
if (newCacheHash !== this._savedCacheHash) { //
|
|
77
|
+
const newCacheHash = crypto_1.default.createHash("sha1").update(JSON.stringify(this._cache)).digest("hex"); //calculate hash of new cache
|
|
78
|
+
if (newCacheHash !== this._savedCacheHash) { //check if cache need to be saved and proceed accordingly
|
|
72
79
|
const saved = {
|
|
73
80
|
cache: this._cache,
|
|
74
81
|
};
|
|
75
82
|
const key = IdentifierCache.persistKey(this.username);
|
|
76
|
-
HAPStorage.storage().setItemSync(key, saved);
|
|
77
|
-
this._savedCacheHash = newCacheHash; //
|
|
83
|
+
HAPStorage_1.HAPStorage.storage().setItemSync(key, saved);
|
|
84
|
+
this._savedCacheHash = newCacheHash; //update hash of saved cache for future use
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
87
|
/**
|
|
@@ -82,16 +89,16 @@ export class IdentifierCache {
|
|
|
82
89
|
*/
|
|
83
90
|
// Gets a key for storing this IdentifierCache in the filesystem, like "IdentifierCache.CC223DE3CEF3.json"
|
|
84
91
|
static persistKey(username) {
|
|
85
|
-
return format(
|
|
92
|
+
return util_1.default.format("IdentifierCache.%s.json", username.replace(/:/g, "").toUpperCase());
|
|
86
93
|
}
|
|
87
94
|
static load(username) {
|
|
88
95
|
const key = IdentifierCache.persistKey(username);
|
|
89
|
-
const saved = HAPStorage.storage().getItem(key);
|
|
96
|
+
const saved = HAPStorage_1.HAPStorage.storage().getItem(key);
|
|
90
97
|
if (saved) {
|
|
91
98
|
const info = new IdentifierCache(username);
|
|
92
99
|
info._cache = saved.cache;
|
|
93
100
|
// calculate hash of the saved hash to decide in future if saving of new cache is needed
|
|
94
|
-
info._savedCacheHash = createHash(
|
|
101
|
+
info._savedCacheHash = crypto_1.default.createHash("sha1").update(JSON.stringify(info._cache)).digest("hex");
|
|
95
102
|
return info;
|
|
96
103
|
}
|
|
97
104
|
else {
|
|
@@ -100,7 +107,8 @@ export class IdentifierCache {
|
|
|
100
107
|
}
|
|
101
108
|
static remove(username) {
|
|
102
109
|
const key = this.persistKey(username);
|
|
103
|
-
HAPStorage.storage().removeItemSync(key);
|
|
110
|
+
HAPStorage_1.HAPStorage.storage().removeItemSync(key);
|
|
104
111
|
}
|
|
105
112
|
}
|
|
113
|
+
exports.IdentifierCache = IdentifierCache;
|
|
106
114
|
//# sourceMappingURL=IdentifierCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentifierCache.js","sourceRoot":"","sources":["../../../src/lib/model/IdentifierCache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IdentifierCache.js","sourceRoot":"","sources":["../../../src/lib/model/IdentifierCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import type { AccessControl } from "../definitions";
|
|
3
3
|
/**
|
|
4
4
|
* This defines the Access Level for TVs and Speakers. It is pretty much only used for the AirPlay 2 protocol
|
|
5
5
|
* so this information is not really useful.
|
|
@@ -8,15 +8,15 @@ import { EventEmitter } from 'node:events';
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const enum AccessLevel {
|
|
10
10
|
/**
|
|
11
|
-
* This access level is set when the
|
|
11
|
+
* This access level is set when the users selects "Anyone" or "Anyone On The Same Network"
|
|
12
12
|
* in the Access Control settings.
|
|
13
13
|
*/
|
|
14
14
|
ANYONE = 0,
|
|
15
15
|
/**
|
|
16
|
-
* This access level is set when the
|
|
16
|
+
* This access level is set when the users selects "Only People Sharing this Home" in the
|
|
17
17
|
* Access Control settings.
|
|
18
18
|
* On this level password setting is ignored.
|
|
19
|
-
* Requests to the HAPServer can only come from Home members
|
|
19
|
+
* Requests to the HAPServer can only come from Home members anyways, so there is no real use to it.
|
|
20
20
|
* This is pretty much only used for the AirPlay 2 protocol.
|
|
21
21
|
*/
|
|
22
22
|
HOME_MEMBERS_ONLY = 1
|
|
@@ -32,10 +32,10 @@ export declare const enum AccessControlEvent {
|
|
|
32
32
|
* @group Television
|
|
33
33
|
*/
|
|
34
34
|
export declare interface AccessControlManagement {
|
|
35
|
-
on(event:
|
|
36
|
-
on(event:
|
|
37
|
-
emit(event:
|
|
38
|
-
emit(event:
|
|
35
|
+
on(event: "update-control-level", listener: (accessLevel: AccessLevel) => void): this;
|
|
36
|
+
on(event: "update-password", listener: (password: string | undefined, passwordRequired: boolean) => void): this;
|
|
37
|
+
emit(event: "update-control-level", accessLevel: AccessLevel): boolean;
|
|
38
|
+
emit(event: "update-password", password: string | undefined, passwordRequired: boolean): boolean;
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* @group Television
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessControlManagement.d.ts","sourceRoot":"","sources":["../../../src/lib/tv/AccessControlManagement.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AccessControlManagement.d.ts","sourceRoot":"","sources":["../../../src/lib/tv/AccessControlManagement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AASpD;;;;;GAKG;AACH,0BAAkB,WAAW;IAE3B;;;OAGG;IACH,MAAM,IAAI;IACV;;;;;;OAMG;IACH,iBAAiB,IAAI;CAItB;AAED;;GAEG;AACH,0BAAkB,kBAAkB;IAClC,oBAAoB,yBAAyB;IAC7C,wBAAwB,oBAAoB;CAC7C;AAED;;GAEG;AAEH,MAAM,CAAC,OAAO,WAAW,uBAAuB;IAC9C,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;IACtF,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,gBAAgB,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAEhH,IAAI,CAAC,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC;CAClG;AAED;;GAEG;AAEH,qBAAa,uBAAwB,SAAQ,YAAY;IAEvD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IAErD;;OAEG;IACH,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAE1B;;;;OAIG;gBACS,QAAQ,CAAC,EAAE,OAAO;IAC9B;;;;;OAKG;gBACS,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa;IAQvD;;OAEG;IACI,UAAU,IAAI,aAAa;IAIlC;;OAEG;IACI,cAAc,IAAI,WAAW;IAIpC;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;;;OAIG;IACI,OAAO,IAAI,IAAI;IAStB,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,oBAAoB;CAc7B"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccessControlManagement = exports.AccessControlEvent = exports.AccessLevel = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const events_1 = require("events");
|
|
6
|
+
const Characteristic_1 = require("../Characteristic");
|
|
7
|
+
const Service_1 = require("../Service");
|
|
8
|
+
const tlv = tslib_1.__importStar(require("../util/tlv"));
|
|
7
9
|
var AccessControlTypes;
|
|
8
10
|
(function (AccessControlTypes) {
|
|
9
11
|
AccessControlTypes[AccessControlTypes["PASSWORD"] = 1] = "PASSWORD";
|
|
@@ -15,39 +17,38 @@ var AccessControlTypes;
|
|
|
15
17
|
*
|
|
16
18
|
* @group Television
|
|
17
19
|
*/
|
|
18
|
-
|
|
19
|
-
export var AccessLevel;
|
|
20
|
+
var AccessLevel;
|
|
20
21
|
(function (AccessLevel) {
|
|
22
|
+
// noinspection JSUnusedGlobalSymbols
|
|
21
23
|
/**
|
|
22
|
-
* This access level is set when the
|
|
24
|
+
* This access level is set when the users selects "Anyone" or "Anyone On The Same Network"
|
|
23
25
|
* in the Access Control settings.
|
|
24
26
|
*/
|
|
25
27
|
AccessLevel[AccessLevel["ANYONE"] = 0] = "ANYONE";
|
|
26
28
|
/**
|
|
27
|
-
* This access level is set when the
|
|
29
|
+
* This access level is set when the users selects "Only People Sharing this Home" in the
|
|
28
30
|
* Access Control settings.
|
|
29
31
|
* On this level password setting is ignored.
|
|
30
|
-
* Requests to the HAPServer can only come from Home members
|
|
32
|
+
* Requests to the HAPServer can only come from Home members anyways, so there is no real use to it.
|
|
31
33
|
* This is pretty much only used for the AirPlay 2 protocol.
|
|
32
34
|
*/
|
|
33
35
|
AccessLevel[AccessLevel["HOME_MEMBERS_ONLY"] = 1] = "HOME_MEMBERS_ONLY";
|
|
34
36
|
// 2 seems to be also a valid value in the range, but never encountered it.
|
|
35
37
|
// so don't know what's the use of it.
|
|
36
|
-
})(AccessLevel || (AccessLevel = {}));
|
|
38
|
+
})(AccessLevel || (exports.AccessLevel = AccessLevel = {}));
|
|
37
39
|
/**
|
|
38
40
|
* @group Television
|
|
39
41
|
*/
|
|
40
|
-
|
|
41
|
-
export var AccessControlEvent;
|
|
42
|
+
var AccessControlEvent;
|
|
42
43
|
(function (AccessControlEvent) {
|
|
43
44
|
AccessControlEvent["ACCESS_LEVEL_UPDATED"] = "update-control-level";
|
|
44
45
|
AccessControlEvent["PASSWORD_SETTING_UPDATED"] = "update-password";
|
|
45
|
-
})(AccessControlEvent || (AccessControlEvent = {}));
|
|
46
|
+
})(AccessControlEvent || (exports.AccessControlEvent = AccessControlEvent = {}));
|
|
46
47
|
/**
|
|
47
48
|
* @group Television
|
|
48
49
|
*/
|
|
49
|
-
// eslint-disable-next-line
|
|
50
|
-
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
|
|
51
|
+
class AccessControlManagement extends events_1.EventEmitter {
|
|
51
52
|
accessControlService;
|
|
52
53
|
/**
|
|
53
54
|
* The current access level set for the Home
|
|
@@ -57,7 +58,7 @@ export class AccessControlManagement extends EventEmitter {
|
|
|
57
58
|
password; // undefined if passwordRequired = false
|
|
58
59
|
constructor(password, service) {
|
|
59
60
|
super();
|
|
60
|
-
this.accessControlService = service || new Service.AccessControl();
|
|
61
|
+
this.accessControlService = service || new Service_1.Service.AccessControl();
|
|
61
62
|
this.setupServiceHandlers(password);
|
|
62
63
|
}
|
|
63
64
|
/**
|
|
@@ -85,9 +86,9 @@ export class AccessControlManagement extends EventEmitter {
|
|
|
85
86
|
*/
|
|
86
87
|
destroy() {
|
|
87
88
|
this.removeAllListeners();
|
|
88
|
-
this.accessControlService.getCharacteristic(Characteristic.AccessControlLevel).removeOnSet();
|
|
89
|
-
if (this.accessControlService.testCharacteristic(Characteristic.PasswordSetting)) {
|
|
90
|
-
this.accessControlService.getCharacteristic(Characteristic.PasswordSetting).removeOnSet();
|
|
89
|
+
this.accessControlService.getCharacteristic(Characteristic_1.Characteristic.AccessControlLevel).removeOnSet();
|
|
90
|
+
if (this.accessControlService.testCharacteristic(Characteristic_1.Characteristic.PasswordSetting)) {
|
|
91
|
+
this.accessControlService.getCharacteristic(Characteristic_1.Characteristic.PasswordSetting).removeOnSet();
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
94
|
handleAccessLevelChange(value) {
|
|
@@ -97,10 +98,10 @@ export class AccessControlManagement extends EventEmitter {
|
|
|
97
98
|
}, 0).unref();
|
|
98
99
|
}
|
|
99
100
|
handlePasswordChange(value) {
|
|
100
|
-
const data = Buffer.from(value,
|
|
101
|
-
const objects = decode(data);
|
|
101
|
+
const data = Buffer.from(value, "base64");
|
|
102
|
+
const objects = tlv.decode(data);
|
|
102
103
|
if (objects[1 /* AccessControlTypes.PASSWORD */]) {
|
|
103
|
-
this.password = objects[1 /* AccessControlTypes.PASSWORD */].toString(
|
|
104
|
+
this.password = objects[1 /* AccessControlTypes.PASSWORD */].toString("utf8");
|
|
104
105
|
}
|
|
105
106
|
else {
|
|
106
107
|
this.password = undefined;
|
|
@@ -112,14 +113,15 @@ export class AccessControlManagement extends EventEmitter {
|
|
|
112
113
|
}
|
|
113
114
|
setupServiceHandlers(enabledPasswordCharacteristics) {
|
|
114
115
|
// perms: [Perms.NOTIFY, Perms.PAIRED_READ, Perms.PAIRED_WRITE],
|
|
115
|
-
this.accessControlService.getCharacteristic(Characteristic.AccessControlLevel)
|
|
116
|
+
this.accessControlService.getCharacteristic(Characteristic_1.Characteristic.AccessControlLevel)
|
|
116
117
|
.onSet(value => this.handleAccessLevelChange(value))
|
|
117
118
|
.updateValue(0);
|
|
118
119
|
if (enabledPasswordCharacteristics) {
|
|
119
|
-
this.accessControlService.getCharacteristic(Characteristic.PasswordSetting)
|
|
120
|
+
this.accessControlService.getCharacteristic(Characteristic_1.Characteristic.PasswordSetting)
|
|
120
121
|
.onSet(value => this.handlePasswordChange(value))
|
|
121
|
-
.updateValue(
|
|
122
|
+
.updateValue("");
|
|
122
123
|
}
|
|
123
124
|
}
|
|
124
125
|
}
|
|
126
|
+
exports.AccessControlManagement = AccessControlManagement;
|
|
125
127
|
//# sourceMappingURL=AccessControlManagement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessControlManagement.js","sourceRoot":"","sources":["../../../src/lib/tv/AccessControlManagement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AccessControlManagement.js","sourceRoot":"","sources":["../../../src/lib/tv/AccessControlManagement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { CharacteristicValue, Nullable } from "../../types";
|
|
2
2
|
/**
|
|
3
3
|
* Checks that supplied field meets Apple HomeKit naming rules
|
|
4
4
|
* https://developer.apple.com/design/human-interface-guidelines/homekit#Help-people-choose-useful-names
|
|
5
|
-
* @private
|
|
5
|
+
* @private Private API
|
|
6
6
|
*/
|
|
7
7
|
export declare function checkName(displayName: string, name: string, value: Nullable<CharacteristicValue>): void;
|
|
8
8
|
//# sourceMappingURL=checkName.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkName.d.ts","sourceRoot":"","sources":["../../../src/lib/util/checkName.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"checkName.d.ts","sourceRoot":"","sources":["../../../src/lib/util/checkName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;GAIG;AAEH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAQvG"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkName = checkName;
|
|
1
4
|
/**
|
|
2
5
|
* Checks that supplied field meets Apple HomeKit naming rules
|
|
3
6
|
* https://developer.apple.com/design/human-interface-guidelines/homekit#Help-people-choose-useful-names
|
|
4
|
-
* @private
|
|
7
|
+
* @private Private API
|
|
5
8
|
*/
|
|
6
|
-
|
|
9
|
+
function checkName(displayName, name, value) {
|
|
7
10
|
// Ensure the string starts and ends with a Unicode letter or number and allow any combination of letters, numbers, spaces, and apostrophes in the middle.
|
|
8
|
-
if (typeof value ===
|
|
9
|
-
console.warn(
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
if (typeof value === "string" && !(new RegExp(/^[\p{L}\p{N}][\p{L}\p{N} ']*[\p{L}\p{N}]$/u)).test(value)) {
|
|
12
|
+
console.warn("HAP-NodeJS WARNING: The accessory '" + displayName + "' has an invalid '" + name + "' characteristic ('" + value + "'). Please use only " +
|
|
13
|
+
"alphanumeric, space, and apostrophe characters. Ensure it starts and ends with an alphabetic or numeric character, and avoid emojis. This may prevent " +
|
|
14
|
+
"the accessory from being added in the Home App or cause unresponsiveness.");
|
|
12
15
|
}
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=checkName.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkName.js","sourceRoot":"","sources":["../../../src/lib/util/checkName.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkName.js","sourceRoot":"","sources":["../../../src/lib/util/checkName.ts"],"names":[],"mappings":";;AAQA,8BAQC;AAdD;;;;GAIG;AAEH,SAAgB,SAAS,CAAC,WAAmB,EAAE,IAAY,EAAE,KAAoC;IAE/F,0JAA0J;IAC1J,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzG,OAAO,CAAC,IAAI,CAAC,qCAAqC,GAAG,WAAW,GAAG,oBAAoB,GAAG,IAAI,GAAG,qBAAqB,GAAG,KAAK,GAAG,sBAAsB;YACrJ,wJAAwJ;YACxJ,2EAA2E,CAAC,CAAC;IACjF,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/lib/util/clone.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/lib/util/clone.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAevE"}
|
package/dist/lib/util/clone.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.clone = clone;
|
|
1
4
|
/**
|
|
2
5
|
* A simple clone function that also allows you to pass an "extend" object whose properties will be
|
|
3
6
|
* added to the cloned copy of the original object passed.
|
|
4
7
|
* @group Utils
|
|
5
8
|
*/
|
|
6
|
-
|
|
9
|
+
function clone(object, extend) {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
11
|
const cloned = {};
|
|
8
12
|
for (const [key, value] of Object.entries(object)) {
|
|
9
13
|
cloned[key] = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/lib/util/clone.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/lib/util/clone.ts"],"names":[],"mappings":";;AAKA,sBAeC;AApBD;;;;GAIG;AACH,SAAgB,KAAK,CAAsB,MAAS,EAAE,MAAU;IAC9D,8DAA8D;IAC9D,MAAM,MAAM,GAAG,EAAsB,CAAC;IAEtC,KAAK,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -7,7 +7,7 @@ export declare class ColorUtils {
|
|
|
7
7
|
*
|
|
8
8
|
* @param colorTemperature - The color temperature in mired.
|
|
9
9
|
* @param roundResults - The lookup table has a precision of .1 decimal places. The given characteristics only have a step value of 1.
|
|
10
|
-
*
|
|
10
|
+
* Thus, the method will round the results by default to an integer value. This can be turned off using this option.
|
|
11
11
|
* @returns An number array of length 2 with the first element being the saturation and the second argument being the hue.
|
|
12
12
|
*/
|
|
13
13
|
static colorTemperatureToHueAndSaturation(colorTemperature: number, roundResults?: boolean): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/util/color-utils.ts"],"names":[],"mappings":"AAsZA;;GAEG;AACH,qBAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/util/color-utils.ts"],"names":[],"mappings":"AAsZA;;GAEG;AACH,qBAAa,UAAU;IAErB;;;;;;;OAOG;WACW,kCAAkC,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;CAqBrI"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ColorUtils = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
2
6
|
const lookupTable = new Map([
|
|
3
7
|
[100, [19, 222.1]],
|
|
4
8
|
[101, [18.7, 222.2]],
|
|
@@ -405,13 +409,13 @@ const lookupTable = new Map([
|
|
|
405
409
|
/**
|
|
406
410
|
* @group Utils
|
|
407
411
|
*/
|
|
408
|
-
|
|
412
|
+
class ColorUtils {
|
|
409
413
|
/**
|
|
410
414
|
* Returns the Hue and Saturation representation of the given color temperature in mired.
|
|
411
415
|
*
|
|
412
416
|
* @param colorTemperature - The color temperature in mired.
|
|
413
417
|
* @param roundResults - The lookup table has a precision of .1 decimal places. The given characteristics only have a step value of 1.
|
|
414
|
-
*
|
|
418
|
+
* Thus, the method will round the results by default to an integer value. This can be turned off using this option.
|
|
415
419
|
* @returns An number array of length 2 with the first element being the saturation and the second argument being the hue.
|
|
416
420
|
*/
|
|
417
421
|
static colorTemperatureToHueAndSaturation(colorTemperature, roundResults = true) {
|
|
@@ -423,7 +427,7 @@ export class ColorUtils {
|
|
|
423
427
|
}
|
|
424
428
|
colorTemperature = Math.round(colorTemperature); // ensure integer
|
|
425
429
|
const hueAndTemperature = lookupTable.get(colorTemperature);
|
|
426
|
-
|
|
430
|
+
(0, assert_1.default)(colorTemperature != null, "lookup for temperature " + colorTemperature + " did not yield any results");
|
|
427
431
|
if (roundResults) {
|
|
428
432
|
hueAndTemperature[0] = Math.round(hueAndTemperature[0]);
|
|
429
433
|
hueAndTemperature[1] = Math.round(hueAndTemperature[1]);
|
|
@@ -434,4 +438,5 @@ export class ColorUtils {
|
|
|
434
438
|
};
|
|
435
439
|
}
|
|
436
440
|
}
|
|
441
|
+
exports.ColorUtils = ColorUtils;
|
|
437
442
|
//# sourceMappingURL=color-utils.js.map
|