hap-nodejs 0.12.3-beta.2 → 0.12.3-beta.21
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/README.md +1 -0
- package/dist/accessories/AirConditioner_accessory.js +24 -24
- package/dist/accessories/AirConditioner_accessory.js.map +1 -1
- package/dist/accessories/AppleTVRemote_accessory.js +23 -23
- package/dist/accessories/AppleTVRemote_accessory.js.map +1 -1
- package/dist/accessories/Camera_accessory.js +292 -373
- package/dist/accessories/Camera_accessory.js.map +1 -1
- package/dist/accessories/Fan_accessory.js +15 -21
- package/dist/accessories/Fan_accessory.js.map +1 -1
- package/dist/accessories/GarageDoorOpener_accessory.js +12 -12
- package/dist/accessories/GarageDoorOpener_accessory.js.map +1 -1
- package/dist/accessories/Light-AdaptiveLighting_accessory.js +31 -21
- package/dist/accessories/Light-AdaptiveLighting_accessory.js.map +1 -1
- package/dist/accessories/Light_accessory.js +45 -48
- package/dist/accessories/Light_accessory.js.map +1 -1
- package/dist/accessories/Lock_accessory.js +11 -11
- package/dist/accessories/Lock_accessory.js.map +1 -1
- package/dist/accessories/MotionSensor_accessory.js +8 -8
- package/dist/accessories/MotionSensor_accessory.js.map +1 -1
- package/dist/accessories/Outlet_accessory.js +10 -10
- package/dist/accessories/Outlet_accessory.js.map +1 -1
- package/dist/accessories/SmartSpeaker_accessory.js +11 -11
- package/dist/accessories/SmartSpeaker_accessory.js.map +1 -1
- package/dist/accessories/Sprinkler_accessory.js +19 -19
- package/dist/accessories/Sprinkler_accessory.js.map +1 -1
- package/dist/accessories/TV_accessory.js +17 -17
- package/dist/accessories/TV_accessory.js.map +1 -1
- package/dist/accessories/TemperatureSensor_accessory.js +6 -6
- package/dist/accessories/TemperatureSensor_accessory.js.map +1 -1
- package/dist/accessories/Wi-FiRouter_accessory.js +3 -3
- package/dist/accessories/Wi-FiRouter_accessory.js.map +1 -1
- package/dist/accessories/Wi-FiSatellite_accessory.js +4 -4
- package/dist/accessories/Wi-FiSatellite_accessory.js.map +1 -1
- package/dist/accessories/gstreamer-audioProducer.js +36 -47
- package/dist/accessories/gstreamer-audioProducer.js.map +1 -1
- package/dist/accessories/types.js +2 -2
- package/dist/accessories/types.js.map +1 -1
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -28
- package/dist/index.js.map +1 -1
- package/dist/lib/Accessory.d.ts +1 -58
- package/dist/lib/Accessory.d.ts.map +1 -1
- package/dist/lib/Accessory.js +747 -1149
- package/dist/lib/Accessory.js.map +1 -1
- package/dist/lib/Advertiser.d.ts +1 -2
- package/dist/lib/Advertiser.d.ts.map +1 -1
- package/dist/lib/Advertiser.js +392 -524
- package/dist/lib/Advertiser.js.map +1 -1
- package/dist/lib/Bridge.js +6 -10
- package/dist/lib/Bridge.js.map +1 -1
- package/dist/lib/Characteristic.d.ts +2 -133
- package/dist/lib/Characteristic.d.ts.map +1 -1
- package/dist/lib/Characteristic.js +1467 -669
- package/dist/lib/Characteristic.js.map +1 -1
- package/dist/lib/HAPServer.d.ts +0 -10
- package/dist/lib/HAPServer.d.ts.map +1 -1
- package/dist/lib/HAPServer.js +216 -280
- package/dist/lib/HAPServer.js.map +1 -1
- package/dist/lib/Service.d.ts +1 -51
- package/dist/lib/Service.d.ts.map +1 -1
- package/dist/lib/Service.js +474 -322
- package/dist/lib/Service.js.map +1 -1
- package/dist/lib/camera/RTPProxy.js +112 -104
- package/dist/lib/camera/RTPProxy.js.map +1 -1
- package/dist/lib/camera/RTPStreamManagement.d.ts +0 -65
- package/dist/lib/camera/RTPStreamManagement.d.ts.map +1 -1
- package/dist/lib/camera/RTPStreamManagement.js +255 -278
- package/dist/lib/camera/RTPStreamManagement.js.map +1 -1
- package/dist/lib/camera/RecordingManagement.js +318 -381
- package/dist/lib/camera/RecordingManagement.js.map +1 -1
- package/dist/lib/camera/index.d.ts +0 -1
- package/dist/lib/camera/index.d.ts.map +1 -1
- package/dist/lib/camera/index.js +1 -2
- package/dist/lib/camera/index.js.map +1 -1
- package/dist/lib/controller/AdaptiveLightingController.d.ts +19 -3
- package/dist/lib/controller/AdaptiveLightingController.d.ts.map +1 -1
- package/dist/lib/controller/AdaptiveLightingController.js +217 -218
- package/dist/lib/controller/AdaptiveLightingController.js.map +1 -1
- package/dist/lib/controller/CameraController.d.ts +0 -4
- package/dist/lib/controller/CameraController.d.ts.map +1 -1
- package/dist/lib/controller/CameraController.js +189 -256
- package/dist/lib/controller/CameraController.js.map +1 -1
- package/dist/lib/controller/DoorbellController.js +38 -39
- package/dist/lib/controller/DoorbellController.js.map +1 -1
- package/dist/lib/controller/RemoteController.d.ts +0 -14
- package/dist/lib/controller/RemoteController.d.ts.map +1 -1
- package/dist/lib/controller/RemoteController.js +340 -415
- package/dist/lib/controller/RemoteController.js.map +1 -1
- package/dist/lib/controller/index.js +1 -1
- package/dist/lib/datastream/DataStreamManagement.js +56 -57
- package/dist/lib/datastream/DataStreamManagement.js.map +1 -1
- package/dist/lib/datastream/DataStreamParser.js +259 -304
- package/dist/lib/datastream/DataStreamParser.js.map +1 -1
- package/dist/lib/datastream/DataStreamServer.d.ts +0 -5
- package/dist/lib/datastream/DataStreamServer.d.ts.map +1 -1
- package/dist/lib/datastream/DataStreamServer.js +252 -269
- package/dist/lib/datastream/DataStreamServer.js.map +1 -1
- package/dist/lib/datastream/index.js +1 -1
- package/dist/lib/definitions/CharacteristicDefinitions.d.ts +1 -106
- package/dist/lib/definitions/CharacteristicDefinitions.d.ts.map +1 -1
- package/dist/lib/definitions/CharacteristicDefinitions.js +2000 -2995
- package/dist/lib/definitions/CharacteristicDefinitions.js.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.d.ts +0 -32
- package/dist/lib/definitions/ServiceDefinitions.d.ts.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.js +820 -1147
- package/dist/lib/definitions/ServiceDefinitions.js.map +1 -1
- package/dist/lib/definitions/generate-definitions.js +383 -679
- package/dist/lib/definitions/generate-definitions.js.map +1 -1
- package/dist/lib/definitions/generator-configuration.js +29 -29
- package/dist/lib/definitions/generator-configuration.js.map +1 -1
- package/dist/lib/definitions/index.js +1 -1
- package/dist/lib/model/AccessoryInfo.js +101 -136
- package/dist/lib/model/AccessoryInfo.js.map +1 -1
- package/dist/lib/model/ControllerStorage.js +86 -89
- package/dist/lib/model/ControllerStorage.js.map +1 -1
- package/dist/lib/model/HAPStorage.js +15 -16
- package/dist/lib/model/HAPStorage.js.map +1 -1
- package/dist/lib/model/IdentifierCache.js +49 -49
- package/dist/lib/model/IdentifierCache.js.map +1 -1
- package/dist/lib/tv/AccessControlManagement.js +40 -44
- package/dist/lib/tv/AccessControlManagement.js.map +1 -1
- package/dist/lib/util/checkName.d.ts +2 -1
- package/dist/lib/util/checkName.d.ts.map +1 -1
- package/dist/lib/util/checkName.js +7 -11
- package/dist/lib/util/checkName.js.map +1 -1
- package/dist/lib/util/clone.js +5 -27
- package/dist/lib/util/clone.js.map +1 -1
- package/dist/lib/util/color-utils.js +8 -12
- package/dist/lib/util/color-utils.js.map +1 -1
- package/dist/lib/util/eventedhttp.d.ts.map +1 -1
- package/dist/lib/util/eventedhttp.js +301 -409
- package/dist/lib/util/eventedhttp.js.map +1 -1
- package/dist/lib/util/hapCrypto.js +31 -32
- package/dist/lib/util/hapCrypto.js.map +1 -1
- package/dist/lib/util/hapStatusError.js +9 -12
- package/dist/lib/util/hapStatusError.js.map +1 -1
- package/dist/lib/util/net-utils.js +32 -53
- package/dist/lib/util/net-utils.js.map +1 -1
- package/dist/lib/util/once.js +3 -8
- package/dist/lib/util/once.js.map +1 -1
- package/dist/lib/util/promise-utils.js +8 -13
- package/dist/lib/util/promise-utils.js.map +1 -1
- package/dist/lib/util/request-util.js +2 -3
- package/dist/lib/util/request-util.js.map +1 -1
- package/dist/lib/util/time.js +5 -5
- package/dist/lib/util/time.js.map +1 -1
- package/dist/lib/util/tlv.d.ts +0 -27
- package/dist/lib/util/tlv.d.ts.map +1 -1
- package/dist/lib/util/tlv.js +71 -113
- package/dist/lib/util/tlv.js.map +1 -1
- package/dist/lib/util/uuid.d.ts +0 -9
- package/dist/lib/util/uuid.d.ts.map +1 -1
- package/dist/lib/util/uuid.js +15 -33
- package/dist/lib/util/uuid.js.map +1 -1
- package/dist/types.d.ts +0 -35
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +10 -10
- package/dist/BridgedCore.d.ts +0 -2
- package/dist/BridgedCore.d.ts.map +0 -1
- package/dist/BridgedCore.js +0 -43
- package/dist/BridgedCore.js.map +0 -1
- package/dist/Core.d.ts +0 -2
- package/dist/Core.d.ts.map +0 -1
- package/dist/Core.js +0 -52
- package/dist/Core.js.map +0 -1
- package/dist/lib/AccessoryLoader.d.ts +0 -28
- package/dist/lib/AccessoryLoader.d.ts.map +0 -1
- package/dist/lib/AccessoryLoader.js +0 -166
- package/dist/lib/AccessoryLoader.js.map +0 -1
- package/dist/lib/camera/Camera.d.ts +0 -43
- package/dist/lib/camera/Camera.d.ts.map +0 -1
- package/dist/lib/camera/Camera.js +0 -36
- package/dist/lib/camera/Camera.js.map +0 -1
|
@@ -1,63 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ControllerStorage = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const util_1 = tslib_1.__importDefault(require("util"));
|
|
6
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
7
|
+
const HAPStorage_1 = require("./HAPStorage");
|
|
8
|
+
const debug = (0, debug_1.default)("HAP-NodeJS:ControllerStorage");
|
|
9
9
|
/**
|
|
10
10
|
* @group Model
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
class ControllerStorage {
|
|
13
|
+
accessoryUUID;
|
|
14
|
+
initialized = false;
|
|
15
|
+
// ----- properties only set in parent storage object ------
|
|
16
|
+
username;
|
|
17
|
+
fileCreated = false;
|
|
18
|
+
purgeUnidentifiedAccessoryData = true;
|
|
19
|
+
// ---------------------------------------------------------
|
|
20
|
+
trackedControllers = []; // used to track controllers before data was loaded from disk
|
|
21
|
+
controllerData = {};
|
|
22
|
+
restoredAccessories; // indexed by accessory UUID
|
|
23
|
+
parent;
|
|
24
|
+
linkedAccessories;
|
|
25
|
+
queuedSaveTimeout;
|
|
26
|
+
queuedSaveTime;
|
|
27
|
+
constructor(accessory) {
|
|
20
28
|
this.accessoryUUID = accessory.UUID;
|
|
21
29
|
}
|
|
22
|
-
|
|
23
|
-
var _this = this;
|
|
24
|
-
var _a;
|
|
25
|
-
if (timeout === void 0) { timeout = 0; }
|
|
30
|
+
enqueueSaveRequest(timeout = 0) {
|
|
26
31
|
if (this.parent) {
|
|
27
32
|
this.parent.enqueueSaveRequest(timeout);
|
|
28
33
|
return;
|
|
29
34
|
}
|
|
30
|
-
|
|
35
|
+
const plannedTime = Date.now() + timeout;
|
|
31
36
|
if (this.queuedSaveTimeout) {
|
|
32
|
-
if (plannedTime <= (
|
|
37
|
+
if (plannedTime <= (this.queuedSaveTime ?? 0)) {
|
|
33
38
|
return;
|
|
34
39
|
}
|
|
35
40
|
clearTimeout(this.queuedSaveTimeout);
|
|
36
41
|
}
|
|
37
|
-
this.queuedSaveTimeout = setTimeout(
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
this.queuedSaveTimeout = setTimeout(() => {
|
|
43
|
+
this.queuedSaveTimeout = this.queuedSaveTime = undefined;
|
|
44
|
+
this.save();
|
|
40
45
|
}, timeout).unref();
|
|
41
46
|
this.queuedSaveTime = Date.now() + timeout;
|
|
42
|
-
}
|
|
47
|
+
}
|
|
43
48
|
/**
|
|
44
49
|
* Links a bridged accessory to the ControllerStorage of the bridge accessory.
|
|
45
50
|
*
|
|
46
51
|
* @param accessory
|
|
47
52
|
*/
|
|
48
|
-
|
|
53
|
+
linkAccessory(accessory) {
|
|
49
54
|
if (!this.linkedAccessories) {
|
|
50
55
|
this.linkedAccessories = [];
|
|
51
56
|
}
|
|
52
|
-
|
|
57
|
+
const storage = accessory.controllerStorage;
|
|
53
58
|
this.linkedAccessories.push(storage);
|
|
54
59
|
storage.parent = this;
|
|
55
|
-
|
|
60
|
+
const saved = this.restoredAccessories && this.restoredAccessories[accessory.UUID];
|
|
56
61
|
if (this.initialized) {
|
|
57
62
|
storage.init(saved);
|
|
58
63
|
}
|
|
59
|
-
}
|
|
60
|
-
|
|
64
|
+
}
|
|
65
|
+
trackController(controller) {
|
|
61
66
|
controller.setupStateChangeDelegate(this.handleStateChange.bind(this, controller)); // setup delegate
|
|
62
67
|
if (!this.initialized) { // track controller if data isn't loaded yet
|
|
63
68
|
this.trackedControllers.push(controller);
|
|
@@ -65,29 +70,29 @@ var ControllerStorage = /** @class */ (function () {
|
|
|
65
70
|
else {
|
|
66
71
|
this.restoreController(controller);
|
|
67
72
|
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
}
|
|
74
|
+
untrackController(controller) {
|
|
75
|
+
const index = this.trackedControllers.indexOf(controller);
|
|
71
76
|
if (index !== -1) { // remove from trackedControllers if storage wasn't initialized yet
|
|
72
77
|
this.trackedControllers.splice(index, 1);
|
|
73
78
|
}
|
|
74
79
|
controller.setupStateChangeDelegate(undefined); // remove association with this storage object
|
|
75
80
|
this.purgeControllerData(controller);
|
|
76
|
-
}
|
|
77
|
-
|
|
81
|
+
}
|
|
82
|
+
purgeControllerData(controller) {
|
|
78
83
|
delete this.controllerData[controller.controllerId()];
|
|
79
84
|
if (this.initialized) {
|
|
80
85
|
this.enqueueSaveRequest(100);
|
|
81
86
|
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
}
|
|
88
|
+
handleStateChange(controller) {
|
|
89
|
+
const id = controller.controllerId();
|
|
90
|
+
const serialized = controller.serialize();
|
|
86
91
|
if (!serialized) { // can be undefined when controller wishes to delete data
|
|
87
92
|
delete this.controllerData[id];
|
|
88
93
|
}
|
|
89
94
|
else {
|
|
90
|
-
|
|
95
|
+
const controllerData = this.controllerData[id];
|
|
91
96
|
if (!controllerData) {
|
|
92
97
|
this.controllerData[id] = {
|
|
93
98
|
data: serialized,
|
|
@@ -102,48 +107,46 @@ var ControllerStorage = /** @class */ (function () {
|
|
|
102
107
|
// this should improve our response time
|
|
103
108
|
this.enqueueSaveRequest(100);
|
|
104
109
|
}
|
|
105
|
-
}
|
|
106
|
-
|
|
110
|
+
}
|
|
111
|
+
restoreController(controller) {
|
|
107
112
|
if (!this.initialized) {
|
|
108
113
|
throw new Error("Illegal state. Controller data wasn't loaded yet!");
|
|
109
114
|
}
|
|
110
|
-
|
|
115
|
+
const controllerData = this.controllerData[controller.controllerId()];
|
|
111
116
|
if (controllerData) {
|
|
112
117
|
try {
|
|
113
118
|
controller.deserialize(controllerData.data);
|
|
114
119
|
}
|
|
115
120
|
catch (error) {
|
|
116
|
-
console.warn(
|
|
121
|
+
console.warn(`Could not initialize controller of type '${controller.controllerId()}' from data stored on disk. Resetting to default: ${error.stack}`);
|
|
117
122
|
controller.handleFactoryReset();
|
|
118
123
|
}
|
|
119
124
|
controllerData.purgeOnNextLoad = undefined;
|
|
120
125
|
}
|
|
121
|
-
}
|
|
126
|
+
}
|
|
122
127
|
/**
|
|
123
128
|
* Called when this particular Storage object is feed with data loaded from disk.
|
|
124
129
|
* This method is only called once.
|
|
125
130
|
*
|
|
126
131
|
* @param data - array of {@link StoredControllerData}. undefined if nothing was stored on disk for this particular storage object
|
|
127
132
|
*/
|
|
128
|
-
|
|
129
|
-
var _this = this;
|
|
133
|
+
init(data) {
|
|
130
134
|
if (this.initialized) {
|
|
131
|
-
throw new Error(
|
|
135
|
+
throw new Error(`ControllerStorage for accessory ${this.accessoryUUID} was already initialized!`);
|
|
132
136
|
}
|
|
133
137
|
this.initialized = true;
|
|
134
138
|
// storing data into our local controllerData Record
|
|
135
|
-
data && data.forEach(
|
|
136
|
-
|
|
137
|
-
this.trackedControllers.forEach(
|
|
138
|
-
|
|
139
|
+
data && data.forEach(saved => this.controllerData[saved.type] = saved.controllerData);
|
|
140
|
+
const restoredControllers = [];
|
|
141
|
+
this.trackedControllers.forEach(controller => {
|
|
142
|
+
this.restoreController(controller);
|
|
139
143
|
restoredControllers.push(controller.controllerId());
|
|
140
144
|
});
|
|
141
145
|
this.trackedControllers.splice(0, this.trackedControllers.length); // clear tracking list
|
|
142
|
-
|
|
143
|
-
Object.entries(this.controllerData).forEach(
|
|
144
|
-
var _b = tslib_1.__read(_a, 2), id = _b[0], data = _b[1];
|
|
146
|
+
let purgedData = false;
|
|
147
|
+
Object.entries(this.controllerData).forEach(([id, data]) => {
|
|
145
148
|
if (data.purgeOnNextLoad) {
|
|
146
|
-
delete
|
|
149
|
+
delete this.controllerData[id];
|
|
147
150
|
purgedData = true;
|
|
148
151
|
return;
|
|
149
152
|
}
|
|
@@ -154,15 +157,15 @@ var ControllerStorage = /** @class */ (function () {
|
|
|
154
157
|
if (purgedData) {
|
|
155
158
|
this.enqueueSaveRequest(500);
|
|
156
159
|
}
|
|
157
|
-
}
|
|
158
|
-
|
|
160
|
+
}
|
|
161
|
+
load(username) {
|
|
159
162
|
if (this.username) {
|
|
160
163
|
throw new Error("ControllerStorage was already loaded!");
|
|
161
164
|
}
|
|
162
165
|
this.username = username;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
+
const key = ControllerStorage.persistKey(username);
|
|
167
|
+
const saved = HAPStorage_1.HAPStorage.storage().getItem(key);
|
|
168
|
+
let ownData;
|
|
166
169
|
if (saved) {
|
|
167
170
|
this.fileCreated = true;
|
|
168
171
|
ownData = saved.accessories[this.accessoryUUID];
|
|
@@ -170,8 +173,8 @@ var ControllerStorage = /** @class */ (function () {
|
|
|
170
173
|
}
|
|
171
174
|
this.init(ownData);
|
|
172
175
|
if (this.linkedAccessories) {
|
|
173
|
-
this.linkedAccessories.forEach(
|
|
174
|
-
|
|
176
|
+
this.linkedAccessories.forEach(linkedStorage => {
|
|
177
|
+
const savedData = saved && saved.accessories[linkedStorage.accessoryUUID];
|
|
175
178
|
linkedStorage.init(savedData);
|
|
176
179
|
if (saved) {
|
|
177
180
|
delete saved.accessories[linkedStorage.accessoryUUID];
|
|
@@ -186,9 +189,8 @@ var ControllerStorage = /** @class */ (function () {
|
|
|
186
189
|
debug("Purging unidentified controller data for bridge %s", username);
|
|
187
190
|
}
|
|
188
191
|
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
var _a;
|
|
192
|
+
}
|
|
193
|
+
save() {
|
|
192
194
|
if (this.parent) {
|
|
193
195
|
this.parent.save();
|
|
194
196
|
return;
|
|
@@ -199,30 +201,26 @@ var ControllerStorage = /** @class */ (function () {
|
|
|
199
201
|
if (!this.username) {
|
|
200
202
|
throw new Error("Cannot save controllerData for a storage without a username!");
|
|
201
203
|
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
204
|
+
const accessories = {
|
|
205
|
+
[this.accessoryUUID]: this.controllerData,
|
|
206
|
+
};
|
|
205
207
|
if (this.linkedAccessories) { // grab data from all linked storage objects
|
|
206
|
-
this.linkedAccessories.forEach(
|
|
208
|
+
this.linkedAccessories.forEach(accessory => accessories[accessory.accessoryUUID] = accessory.controllerData);
|
|
207
209
|
}
|
|
208
210
|
// TODO removed accessories won't ever be deleted?
|
|
209
|
-
|
|
210
|
-
Object.entries(accessories).forEach(
|
|
211
|
-
|
|
212
|
-
var entries = Object.entries(controllerData);
|
|
211
|
+
const accessoryData = this.restoredAccessories || {};
|
|
212
|
+
Object.entries(accessories).forEach(([uuid, controllerData]) => {
|
|
213
|
+
const entries = Object.entries(controllerData);
|
|
213
214
|
if (entries.length > 0) {
|
|
214
|
-
accessoryData[uuid] = entries.map(
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
controllerData: data,
|
|
219
|
-
});
|
|
220
|
-
});
|
|
215
|
+
accessoryData[uuid] = entries.map(([id, data]) => ({
|
|
216
|
+
type: id,
|
|
217
|
+
controllerData: data,
|
|
218
|
+
}));
|
|
221
219
|
}
|
|
222
220
|
});
|
|
223
|
-
|
|
221
|
+
const key = ControllerStorage.persistKey(this.username);
|
|
224
222
|
if (Object.keys(accessoryData).length > 0) {
|
|
225
|
-
|
|
223
|
+
const saved = {
|
|
226
224
|
accessories: accessoryData,
|
|
227
225
|
};
|
|
228
226
|
this.fileCreated = true;
|
|
@@ -232,15 +230,14 @@ var ControllerStorage = /** @class */ (function () {
|
|
|
232
230
|
this.fileCreated = false;
|
|
233
231
|
HAPStorage_1.HAPStorage.storage().removeItemSync(key);
|
|
234
232
|
}
|
|
235
|
-
}
|
|
236
|
-
|
|
233
|
+
}
|
|
234
|
+
static persistKey(username) {
|
|
237
235
|
return util_1.default.format("ControllerStorage.%s.json", username.replace(/:/g, "").toUpperCase());
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
|
|
236
|
+
}
|
|
237
|
+
static remove(username) {
|
|
238
|
+
const key = ControllerStorage.persistKey(username);
|
|
241
239
|
HAPStorage_1.HAPStorage.storage().removeItemSync(key);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
}());
|
|
240
|
+
}
|
|
241
|
+
}
|
|
245
242
|
exports.ControllerStorage = ControllerStorage;
|
|
246
243
|
//# sourceMappingURL=ControllerStorage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControllerStorage.js","sourceRoot":"","sources":["../../../src/lib/model/ControllerStorage.ts"],"names":[],"mappings":";;;;AACA,
|
|
1
|
+
{"version":3,"file":"ControllerStorage.js","sourceRoot":"","sources":["../../../src/lib/model/ControllerStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HAPStorage = void 0;
|
|
4
|
-
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
5
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
6
6
|
// @ts-ignore
|
|
7
|
-
|
|
7
|
+
const node_persist_1 = tslib_1.__importDefault(require("node-persist"));
|
|
8
8
|
/**
|
|
9
9
|
* @group Model
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
class HAPStorage {
|
|
12
|
+
static INSTANCE = new HAPStorage();
|
|
13
|
+
localStore;
|
|
14
|
+
customStoragePath;
|
|
15
|
+
static storage() {
|
|
15
16
|
return this.INSTANCE.storage();
|
|
16
|
-
}
|
|
17
|
-
|
|
17
|
+
}
|
|
18
|
+
static setCustomStoragePath(path) {
|
|
18
19
|
this.INSTANCE.setCustomStoragePath(path);
|
|
19
|
-
}
|
|
20
|
-
|
|
20
|
+
}
|
|
21
|
+
storage() {
|
|
21
22
|
if (!this.localStore) {
|
|
22
23
|
this.localStore = node_persist_1.default.create();
|
|
23
24
|
if (this.customStoragePath) {
|
|
@@ -30,15 +31,13 @@ var HAPStorage = /** @class */ (function () {
|
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
return this.localStore;
|
|
33
|
-
}
|
|
34
|
-
|
|
34
|
+
}
|
|
35
|
+
setCustomStoragePath(path) {
|
|
35
36
|
if (this.localStore) {
|
|
36
37
|
throw new Error("Cannot change storage path after it has already been initialized!");
|
|
37
38
|
}
|
|
38
39
|
this.customStoragePath = path;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return HAPStorage;
|
|
42
|
-
}());
|
|
40
|
+
}
|
|
41
|
+
}
|
|
43
42
|
exports.HAPStorage = HAPStorage;
|
|
44
43
|
//# sourceMappingURL=HAPStorage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HAPStorage.js","sourceRoot":"","sources":["../../../src/lib/model/HAPStorage.ts"],"names":[],"mappings":";;;;AAAA,6DAA6D;AAC7D,aAAa;AACb,
|
|
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,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.IdentifierCache = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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");
|
|
8
8
|
/**
|
|
9
9
|
* IdentifierCache is a model class that manages a system of associating HAP "Accessory IDs" and "Instance IDs"
|
|
10
10
|
* with other values that don't usually change. HomeKit Clients use Accessory/Instance IDs as a primary key of
|
|
@@ -14,87 +14,88 @@ var HAPStorage_1 = require("./HAPStorage");
|
|
|
14
14
|
* the scene will stop working.
|
|
15
15
|
* @group Model
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
class IdentifierCache {
|
|
18
|
+
username;
|
|
19
|
+
_cache = {}; // cache[key:string] = id:number
|
|
20
|
+
_usedCache = null; // for usage tracking and expiring old keys
|
|
21
|
+
_savedCacheHash = ""; // for checking if new cache need to be saved
|
|
22
|
+
constructor(username) {
|
|
19
23
|
this.username = username;
|
|
20
|
-
this._cache = {}; // cache[key:string] = id:number
|
|
21
|
-
this._usedCache = null; // for usage tracking and expiring old keys
|
|
22
|
-
this._savedCacheHash = ""; // for checking if new cache need to be saved
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
+
startTrackingUsage() {
|
|
25
26
|
this._usedCache = {};
|
|
26
|
-
}
|
|
27
|
-
|
|
27
|
+
}
|
|
28
|
+
stopTrackingUsageAndExpireUnused() {
|
|
28
29
|
// simply rotate in the new cache that was built during our normal getXYZ() calls.
|
|
29
30
|
this._cache = this._usedCache || this._cache;
|
|
30
31
|
this._usedCache = null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
}
|
|
33
|
+
getCache(key) {
|
|
34
|
+
const value = this._cache[key];
|
|
34
35
|
// track this cache item if needed
|
|
35
36
|
if (this._usedCache && typeof value !== "undefined") {
|
|
36
37
|
this._usedCache[key] = value;
|
|
37
38
|
}
|
|
38
39
|
return value;
|
|
39
|
-
}
|
|
40
|
-
|
|
40
|
+
}
|
|
41
|
+
setCache(key, value) {
|
|
41
42
|
this._cache[key] = value;
|
|
42
43
|
// track this cache item if needed
|
|
43
44
|
if (this._usedCache) {
|
|
44
45
|
this._usedCache[key] = value;
|
|
45
46
|
}
|
|
46
47
|
return value;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
}
|
|
49
|
+
getAID(accessoryUUID) {
|
|
50
|
+
const key = accessoryUUID;
|
|
50
51
|
// ensure that our "next AID" field is not expired
|
|
51
52
|
this.getCache("|nextAID");
|
|
52
53
|
return this.getCache(key) || this.setCache(key, this.getNextAID());
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
}
|
|
55
|
+
getIID(accessoryUUID, serviceUUID, serviceSubtype, characteristicUUID) {
|
|
56
|
+
const key = accessoryUUID
|
|
56
57
|
+ "|" + serviceUUID
|
|
57
58
|
+ (serviceSubtype ? "|" + serviceSubtype : "")
|
|
58
59
|
+ (characteristicUUID ? "|" + characteristicUUID : "");
|
|
59
60
|
// ensure that our "next IID" field for this accessory is not expired
|
|
60
61
|
this.getCache(accessoryUUID + "|nextIID");
|
|
61
62
|
return this.getCache(key) || this.setCache(key, this.getNextIID(accessoryUUID));
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
}
|
|
64
|
+
getNextAID() {
|
|
65
|
+
const key = "|nextAID";
|
|
66
|
+
const nextAID = this.getCache(key) || 2; // start at 2 because the root Accessory or Bridge must be 1
|
|
66
67
|
this.setCache(key, nextAID + 1); // increment
|
|
67
68
|
return nextAID;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
}
|
|
70
|
+
getNextIID(accessoryUUID) {
|
|
71
|
+
const key = accessoryUUID + "|nextIID";
|
|
72
|
+
const nextIID = this.getCache(key) || 2; // iid 1 is reserved for the Accessory Information service
|
|
72
73
|
this.setCache(key, nextIID + 1); // increment
|
|
73
74
|
return nextIID;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
}
|
|
76
|
+
save() {
|
|
77
|
+
const newCacheHash = crypto_1.default.createHash("sha1").update(JSON.stringify(this._cache)).digest("hex"); //calculate hash of new cache
|
|
77
78
|
if (newCacheHash !== this._savedCacheHash) { //check if cache need to be saved and proceed accordingly
|
|
78
|
-
|
|
79
|
+
const saved = {
|
|
79
80
|
cache: this._cache,
|
|
80
81
|
};
|
|
81
|
-
|
|
82
|
+
const key = IdentifierCache.persistKey(this.username);
|
|
82
83
|
HAPStorage_1.HAPStorage.storage().setItemSync(key, saved);
|
|
83
84
|
this._savedCacheHash = newCacheHash; //update hash of saved cache for future use
|
|
84
85
|
}
|
|
85
|
-
}
|
|
86
|
+
}
|
|
86
87
|
/**
|
|
87
88
|
* Persisting to File System
|
|
88
89
|
*/
|
|
89
90
|
// Gets a key for storing this IdentifierCache in the filesystem, like "IdentifierCache.CC223DE3CEF3.json"
|
|
90
|
-
|
|
91
|
+
static persistKey(username) {
|
|
91
92
|
return util_1.default.format("IdentifierCache.%s.json", username.replace(/:/g, "").toUpperCase());
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
}
|
|
94
|
+
static load(username) {
|
|
95
|
+
const key = IdentifierCache.persistKey(username);
|
|
96
|
+
const saved = HAPStorage_1.HAPStorage.storage().getItem(key);
|
|
96
97
|
if (saved) {
|
|
97
|
-
|
|
98
|
+
const info = new IdentifierCache(username);
|
|
98
99
|
info._cache = saved.cache;
|
|
99
100
|
// calculate hash of the saved hash to decide in future if saving of new cache is needed
|
|
100
101
|
info._savedCacheHash = crypto_1.default.createHash("sha1").update(JSON.stringify(info._cache)).digest("hex");
|
|
@@ -103,12 +104,11 @@ var IdentifierCache = /** @class */ (function () {
|
|
|
103
104
|
else {
|
|
104
105
|
return null;
|
|
105
106
|
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
}
|
|
108
|
+
static remove(username) {
|
|
109
|
+
const key = this.persistKey(username);
|
|
109
110
|
HAPStorage_1.HAPStorage.storage().removeItemSync(key);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
}());
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
113
|
exports.IdentifierCache = IdentifierCache;
|
|
114
114
|
//# sourceMappingURL=IdentifierCache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentifierCache.js","sourceRoot":"","sources":["../../../src/lib/model/IdentifierCache.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"IdentifierCache.js","sourceRoot":"","sources":["../../../src/lib/model/IdentifierCache.ts"],"names":[],"mappings":"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"}
|