hap-nodejs 1.0.0-alpha.23 → 1.0.0-alpha.24
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/dist/BridgedCore.d.ts +2 -0
- package/dist/BridgedCore.d.ts.map +1 -0
- package/dist/BridgedCore.js +42 -0
- package/dist/BridgedCore.js.map +1 -0
- package/dist/Core.d.ts +2 -0
- package/dist/Core.d.ts.map +1 -0
- package/dist/Core.js +49 -0
- package/dist/Core.js.map +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 +26 -26
- 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.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/Accessory.js +779 -1087
- package/dist/lib/Accessory.js.map +1 -1
- package/dist/lib/AccessoryLoader.js +40 -40
- package/dist/lib/AccessoryLoader.js.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.js +1393 -497
- package/dist/lib/Characteristic.js.map +1 -1
- package/dist/lib/HAPServer.js +215 -265
- package/dist/lib/HAPServer.js.map +1 -1
- package/dist/lib/Service.js +486 -322
- package/dist/lib/Service.js.map +1 -1
- package/dist/lib/camera/Camera.js +14 -14
- package/dist/lib/camera/Camera.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.js +284 -257
- 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.js +1 -1
- package/dist/lib/controller/AdaptiveLightingController.js +198 -209
- package/dist/lib/controller/AdaptiveLightingController.js.map +1 -1
- package/dist/lib/controller/CameraController.js +190 -249
- 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.js +343 -401
- 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.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.js +1984 -2708
- package/dist/lib/definitions/CharacteristicDefinitions.js.map +1 -1
- package/dist/lib/definitions/ServiceDefinitions.js +818 -1035
- 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 +5 -10
- 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.js +290 -387
- 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.js +57 -75
- package/dist/lib/util/tlv.js.map +1 -1
- package/dist/lib/util/uuid.js +15 -19
- package/dist/lib/util/uuid.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wi-FiRouter_accessory.js","sourceRoot":"","sources":["../../src/accessories/Wi-FiRouter_accessory.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Wi-FiRouter_accessory.js","sourceRoot":"","sources":["../../src/accessories/Wi-FiRouter_accessory.ts"],"names":[],"mappings":";;;AAAA,0BAA6F;AAE7F,MAAM,IAAI,GAAG,QAAI,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;AACpD,QAAA,SAAS,GAAG,IAAI,aAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAE7D,wCAAwC;AACxC,iBAAS,CAAC,QAAQ,GAAG,mBAAmB,CAAC;AACzC,wCAAwC;AACxC,iBAAS,CAAC,OAAO,GAAG,YAAY,CAAC;AACjC,iBAAS,CAAC,QAAQ,6BAAoB,CAAC;AAEvC,iBAAS,CAAC,EAAE,gDAA+B,CAAC,MAAe,EAAE,QAAsB,EAAE,EAAE;IACrF,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAS,CAAC,WAAW,CAAC,CAAC;IACxD,QAAQ,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,iBAAS,CAAC,UAAU,CAAC,WAAO,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.accessory = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const UUID = __1.uuid.generate("hap-nodejs:accessories:wifi-satellite");
|
|
6
6
|
exports.accessory = new __1.Accessory("Wi-Fi Satellite", UUID);
|
|
7
7
|
// @ts-expect-error: Core/BridgeCore API
|
|
8
8
|
exports.accessory.username = "FA:3C:ED:5A:1A:A2";
|
|
9
9
|
// @ts-expect-error: Core/BridgeCore API
|
|
10
10
|
exports.accessory.pincode = "031-45-154";
|
|
11
11
|
exports.accessory.category = 33 /* Categories.ROUTER */;
|
|
12
|
-
exports.accessory.on("identify" /* AccessoryEventTypes.IDENTIFY */,
|
|
12
|
+
exports.accessory.on("identify" /* AccessoryEventTypes.IDENTIFY */, (paired, callback) => {
|
|
13
13
|
console.log("Identify the '%s'", exports.accessory.displayName);
|
|
14
14
|
callback();
|
|
15
15
|
});
|
|
16
|
-
|
|
16
|
+
const satellite = exports.accessory.addService(__1.Service.WiFiSatellite);
|
|
17
17
|
satellite.getCharacteristic(__1.Characteristic.WiFiSatelliteStatus)
|
|
18
18
|
.updateValue(__1.Characteristic.WiFiSatelliteStatus.CONNECTED);
|
|
19
19
|
//# sourceMappingURL=Wi-FiSatellite_accessory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Wi-FiSatellite_accessory.js","sourceRoot":"","sources":["../../src/accessories/Wi-FiSatellite_accessory.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Wi-FiSatellite_accessory.js","sourceRoot":"","sources":["../../src/accessories/Wi-FiSatellite_accessory.ts"],"names":[],"mappings":";;;AAAA,0BAA6G;AAE7G,MAAM,IAAI,GAAG,QAAI,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC;AACvD,QAAA,SAAS,GAAG,IAAI,aAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAEhE,wCAAwC;AACxC,iBAAS,CAAC,QAAQ,GAAG,mBAAmB,CAAC;AACzC,wCAAwC;AACxC,iBAAS,CAAC,OAAO,GAAG,YAAY,CAAC;AACjC,iBAAS,CAAC,QAAQ,6BAAoB,CAAC;AAEvC,iBAAS,CAAC,EAAE,gDAA+B,CAAC,MAAe,EAAE,QAAsB,EAAE,EAAE;IACrF,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAS,CAAC,WAAW,CAAC,CAAC;IACxD,QAAQ,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,iBAAS,CAAC,UAAU,CAAC,WAAO,CAAC,aAAa,CAAC,CAAC;AAE9D,SAAS,CAAC,iBAAiB,CAAC,kBAAc,CAAC,mBAAmB,CAAE;KAC7D,WAAW,CAAC,kBAAc,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GStreamerAudioProducer = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const assert_1 = tslib_1.__importDefault(require("assert"));
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
8
|
+
const debug = (0, debug_1.default)("HAP-NodeJS:Remote:GStreamer");
|
|
9
9
|
var AudioType;
|
|
10
10
|
(function (AudioType) {
|
|
11
11
|
AudioType[AudioType["GENERIC"] = 2049] = "GENERIC";
|
|
@@ -35,41 +35,31 @@ var BitrateType;
|
|
|
35
35
|
* gstreamer1.0-plugins-good, gstreamer1.0-plugins- ugly, gstreamer1.0-plugins-bad, gstreamer1.0-alsa
|
|
36
36
|
*
|
|
37
37
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
class GStreamerAudioProducer {
|
|
39
|
+
options = {
|
|
40
|
+
alsaSrc: "plughw:1",
|
|
41
|
+
};
|
|
42
|
+
frameHandler;
|
|
43
|
+
errorHandler;
|
|
44
|
+
process;
|
|
45
|
+
running = false;
|
|
46
|
+
constructor(frameHandler, errorHandler, options) {
|
|
45
47
|
this.frameHandler = frameHandler;
|
|
46
48
|
this.errorHandler = errorHandler;
|
|
47
49
|
if (options) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
// @ts-expect-error: type mismatch
|
|
52
|
-
GStreamerAudioProducer.options[key] = value;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
56
|
-
finally {
|
|
57
|
-
try {
|
|
58
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
59
|
-
}
|
|
60
|
-
finally { if (e_1) throw e_1.error; }
|
|
50
|
+
for (const [key, value] of Object.entries(options)) {
|
|
51
|
+
// @ts-expect-error: type mismatch
|
|
52
|
+
GStreamerAudioProducer.options[key] = value;
|
|
61
53
|
}
|
|
62
54
|
}
|
|
63
55
|
}
|
|
64
|
-
|
|
65
|
-
var _this = this;
|
|
66
|
-
var _a, _b;
|
|
56
|
+
startAudioProduction(selectedAudioConfiguration) {
|
|
67
57
|
if (this.running) {
|
|
68
58
|
throw new Error("Gstreamer already running");
|
|
69
59
|
}
|
|
70
|
-
|
|
60
|
+
const codecParameters = selectedAudioConfiguration.parameters;
|
|
71
61
|
(0, assert_1.default)(selectedAudioConfiguration.codecType === 3 /* AudioCodecTypes.OPUS */);
|
|
72
|
-
|
|
62
|
+
let bitrateType = 1 /* BitrateType.VARIABLE */;
|
|
73
63
|
switch (codecParameters.bitrate) {
|
|
74
64
|
case 1 /* AudioBitrate.CONSTANT */:
|
|
75
65
|
bitrateType = 0 /* BitrateType.CONSTANT */;
|
|
@@ -78,7 +68,7 @@ var GStreamerAudioProducer = /** @class */ (function () {
|
|
|
78
68
|
bitrateType = 1 /* BitrateType.VARIABLE */;
|
|
79
69
|
break;
|
|
80
70
|
}
|
|
81
|
-
|
|
71
|
+
let bandwidth = 1104 /* Bandwidth.SUPER_WIDE_BAND */;
|
|
82
72
|
switch (codecParameters.samplerate) {
|
|
83
73
|
case 0 /* AudioSamplerate.KHZ_8 */:
|
|
84
74
|
bandwidth = 1101 /* Bandwidth.NARROW_BAND */;
|
|
@@ -90,10 +80,10 @@ var GStreamerAudioProducer = /** @class */ (function () {
|
|
|
90
80
|
bandwidth = 1104 /* Bandwidth.SUPER_WIDE_BAND */;
|
|
91
81
|
break;
|
|
92
82
|
}
|
|
93
|
-
|
|
83
|
+
const packetTime = codecParameters.rtpTime;
|
|
94
84
|
debug("Launching gstreamer...");
|
|
95
85
|
this.running = true;
|
|
96
|
-
|
|
86
|
+
const args = "-q " +
|
|
97
87
|
"alsasrc device=" + this.options.alsaSrc + " ! " +
|
|
98
88
|
"capsfilter caps=audio/x-raw,format=S16LE,rate=24000 ! " +
|
|
99
89
|
// "level post-messages=true interval=" + packetTime + "000000 ! " + // used to capture rms
|
|
@@ -105,17 +95,17 @@ var GStreamerAudioProducer = /** @class */ (function () {
|
|
|
105
95
|
"frame-size=" + packetTime + " ! " +
|
|
106
96
|
"fdsink fd=1";
|
|
107
97
|
this.process = (0, child_process_1.spawn)("gst-launch-1.0", args.split(" "), { env: process.env });
|
|
108
|
-
this.process.on("error",
|
|
109
|
-
if (
|
|
98
|
+
this.process.on("error", error => {
|
|
99
|
+
if (this.running) {
|
|
110
100
|
debug("Failed to spawn gstreamer process: " + error.message);
|
|
111
|
-
|
|
101
|
+
this.errorHandler(3 /* HDSProtocolSpecificErrorReason.CANCELLED */);
|
|
112
102
|
}
|
|
113
103
|
else {
|
|
114
104
|
debug("Failed to kill gstreamer process: " + error.message);
|
|
115
105
|
}
|
|
116
106
|
});
|
|
117
|
-
|
|
118
|
-
if (!
|
|
107
|
+
this.process.stdout?.on("data", (data) => {
|
|
108
|
+
if (!this.running) { // received data after it was closed
|
|
119
109
|
return;
|
|
120
110
|
}
|
|
121
111
|
/*
|
|
@@ -128,29 +118,28 @@ var GStreamerAudioProducer = /** @class */ (function () {
|
|
|
128
118
|
If we wanted to make this perfect we would need to write a nodejs c++ submodule or something
|
|
129
119
|
to interface directly with gstreamer api.
|
|
130
120
|
*/
|
|
131
|
-
|
|
121
|
+
this.frameHandler({
|
|
132
122
|
data: data,
|
|
133
123
|
rms: 0.25, // only way currently to extract rms from gstreamer is by interfacing with the api directly (nodejs c++ submodule could be a solution)
|
|
134
124
|
});
|
|
135
125
|
});
|
|
136
|
-
|
|
126
|
+
this.process.stderr?.on("data", data => {
|
|
137
127
|
debug("GStreamer process reports the following error: " + String(data));
|
|
138
128
|
});
|
|
139
|
-
this.process.on("exit",
|
|
129
|
+
this.process.on("exit", (code, signal) => {
|
|
140
130
|
if (signal !== "SIGTERM") { // if we receive SIGTERM, process exited gracefully (we stopped it)
|
|
141
131
|
debug("GStreamer process unexpectedly exited with code %d (signal: %s)", code, signal);
|
|
142
|
-
|
|
132
|
+
this.errorHandler(5 /* HDSProtocolSpecificErrorReason.UNEXPECTED_FAILURE */);
|
|
143
133
|
}
|
|
144
134
|
});
|
|
145
|
-
}
|
|
146
|
-
|
|
135
|
+
}
|
|
136
|
+
stopAudioProduction() {
|
|
147
137
|
if (this.running) {
|
|
148
138
|
this.process.kill("SIGTERM");
|
|
149
139
|
this.running = false;
|
|
150
140
|
}
|
|
151
141
|
this.process = undefined;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
}());
|
|
142
|
+
}
|
|
143
|
+
}
|
|
155
144
|
exports.GStreamerAudioProducer = GStreamerAudioProducer;
|
|
156
145
|
//# sourceMappingURL=gstreamer-audioProducer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gstreamer-audioProducer.js","sourceRoot":"","sources":["../../src/accessories/gstreamer-audioProducer.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"gstreamer-audioProducer.js","sourceRoot":"","sources":["../../src/accessories/gstreamer-audioProducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.MANUFACTURER_CTYPE = exports.LOGS_CTYPE = exports.LOCK_MECHANISM_LAST_KNOWN_ACTION_CTYPE = exports.LOCK_MANAGEMENT_CONTROL_POINT_CTYPE = exports.LOCK_MANAGEMENT_AUTO_SECURE_TIMEOUT_CTYPE = exports.IDENTIFY_CTYPE = exports.HUE_CTYPE = exports.HEATING_THRESHOLD_CTYPE = exports.CURRENT_TEMPERATURE_CTYPE = exports.CURRENT_RELATIVE_HUMIDITY_CTYPE = exports.CURRENT_LOCK_MECHANISM_STATE_CTYPE = exports.CURRENT_DOOR_STATE_CTYPE = exports.CONTACT_SENSOR_STATE_CTYPE = exports.COOLING_THRESHOLD_CTYPE = exports.BATTERY_LEVEL_CTYPE = exports.BRIGHTNESS_CTYPE = exports.AUDIO_FEEDBACK_CTYPE = exports.ADMIN_ONLY_ACCESS_CTYPE = exports.ALARM_TARGET_STATE_CTYPE = exports.ALARM_CURRENT_STATE_CTYPE = exports.TEMPERATURE_SENSOR_STYPE = exports.HUMIDITY_SENSOR_STYPE = exports.MOTION_SENSOR_STYPE = exports.CONTACT_SENSOR_STYPE = exports.OCCUPANCY_SENSOR_STYPE = exports.WINDOW_COVERING_STYPE = exports.ALARM_STYPE = exports.LOCK_MANAGEMENT_STYPE = exports.LOCK_MECHANISM_STYPE = exports.OUTLET_STYPE = exports.FAN_STYPE = exports.ACCESSORY_INFORMATION_STYPE = exports.GARAGE_DOOR_OPENER_STYPE = exports.THERMOSTAT_STYPE = exports.SWITCH_STYPE = exports.LIGHTBULB_STYPE = exports.PROGRAMMABLE_SWITCH_TCTYPE = exports.WINDOW_COVERING_TCTYPE = exports.WINDOW_TCTYPE = exports.DOOR_TCTYPE = exports.ALARM_SYSTEM_TCTYPE = exports.SENSOR_TCTYPE = exports.THERMOSTAT_TCTYPE = exports.SWITCH_TCTYPE = exports.OUTLET_TCTYPE = exports.DOOR_LOCK_TCTYPE = exports.LIGHTBULB_TCTYPE = exports.GARAGE_DOOR_OPENER_TCTYPE = exports.FAN_TCTYPE = exports.OTHER_TCTYPE = void 0;
|
|
5
5
|
exports.TARGETHEATINGCOOLING_CTYPE = exports.CURRENTHEATINGCOOLING_CTYPE = exports.WINDOW_COVERING_OPERATION_STATE_CTYPE = exports.WINDOW_COVERING_CURRENT_POSITION_CTYPE = exports.WINDOW_COVERING_TARGET_POSITION_CTYPE = exports.VERSION_CTYPE = exports.TEMPERATURE_UNITS_CTYPE = exports.TARGET_TEMPERATURE_CTYPE = exports.TARGET_RELATIVE_HUMIDITY_CTYPE = exports.TARGET_LOCK_MECHANISM_STATE_CTYPE = exports.TARGET_DOORSTATE_CTYPE = exports.STATUS_FAULT_CTYPE = exports.STATUS_LOW_BATTERY_CTYPE = exports.FIRMWARE_REVISION_CTYPE = exports.SERIAL_NUMBER_CTYPE = exports.SATURATION_CTYPE = exports.ROTATION_SPEED_CTYPE = exports.ROTATION_DIRECTION_CTYPE = exports.PROGRAMMABLE_SWITCH_OUTPUT_STATE_CTYPE = exports.PROGRAMMABLE_SWITCH_SWITCH_EVENT_CTYPE = exports.POWER_STATE_CTYPE = exports.OCCUPANCY_DETECTED_CTYPE = exports.OUTLET_IN_USE_CTYPE = exports.OBSTRUCTION_DETECTED_CTYPE = exports.NAME_CTYPE = exports.MOTION_DETECTED_CTYPE = exports.MODEL_CTYPE = void 0;
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const stPre = "000000";
|
|
7
|
+
const stPost = "-0000-1000-8000-0026BB765291";
|
|
8
8
|
//HomeKitTransportCategoryTypes
|
|
9
9
|
exports.OTHER_TCTYPE = 1;
|
|
10
10
|
exports.FAN_TCTYPE = 3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/accessories/types.ts"],"names":[],"mappings":";AAAA,sBAAsB;;;;AAEtB,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/accessories/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.LegacyTypes = exports.uuid = exports.AccessoryLoader = void 0;
|
|
4
4
|
exports.HAPLibraryVersion = HAPLibraryVersion;
|
|
5
5
|
exports.init = init;
|
|
6
|
-
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
7
|
require("source-map-support/register"); // registering node-source-map-support for typescript stack traces
|
|
8
8
|
require("./lib/definitions"); // must be loaded before Characteristic and Service class
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
10
|
+
const HAPStorage_1 = require("./lib/model/HAPStorage");
|
|
11
11
|
/**
|
|
12
12
|
* @group Utils
|
|
13
13
|
*/
|
|
@@ -40,7 +40,7 @@ tslib_1.__exportStar(require("./types"), exports);
|
|
|
40
40
|
* @group Utils
|
|
41
41
|
*/
|
|
42
42
|
exports.LegacyTypes = tslib_1.__importStar(require("./accessories/types"));
|
|
43
|
-
|
|
43
|
+
const debug = (0, debug_1.default)("HAP-NodeJS:Advertiser");
|
|
44
44
|
/**
|
|
45
45
|
* This method can be used to retrieve the current running library version of the HAP-NodeJS framework.
|
|
46
46
|
* @returns The SemVer version string.
|
|
@@ -49,7 +49,7 @@ var debug = (0, debug_1.default)("HAP-NodeJS:Advertiser");
|
|
|
49
49
|
*/
|
|
50
50
|
function HAPLibraryVersion() {
|
|
51
51
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
52
|
-
|
|
52
|
+
const packageJson = require("../package.json");
|
|
53
53
|
return packageJson.version;
|
|
54
54
|
}
|
|
55
55
|
function printInit() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAgDA,8CAIC;AAeD,oBAOC;;AA1ED,uCAAqC,CAAC,kEAAkE;AACxG,6BAA2B,CAAC,yDAAyD;AACrF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAgDA,8CAIC;AAeD,oBAOC;;AA1ED,uCAAqC,CAAC,kEAAkE;AACxG,6BAA2B,CAAC,yDAAyD;AACrF,0DAAgC;AAChC,uDAAoD;AAEpD;;GAEG;AACH,iFAAyD;AACzD;;GAEG;AACH,gEAAwC;AACxC,iEAAuC;AACvC,0DAAgC;AAChC,uDAA6B;AAC7B,wDAA8B;AAC9B,+DAAqC;AACrC,gEAAsC;AACtC,uDAA6B;AAC7B,2EAAiD;AACjD,0DAAgC;AAChC,2DAAiC;AACjC,2DAAiC;AACjC,oEAA0C;AAE1C,2DAAiC;AACjC,0DAAgC;AAChC,yDAA+B;AAC/B,oEAA0C;AAC1C,iEAAuC;AACvC,0DAAgC;AAChC,iEAAuC;AAEvC,kDAAwB;AACxB;;GAEG;AACH,2EAAmD;AAEnD,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,uBAAuB,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,SAAgB,iBAAiB;IAC/B,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/C,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,SAAS,SAAS;IAChB,KAAK,CAAC,iCAAiC,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAChE,CAAC;AACD,SAAS,EAAE,CAAC;AAEZ;;;;;;;GAOG;AACH,SAAgB,IAAI,CAAC,WAAoB;IACvC,OAAO,CAAC,GAAG,CAAC,4FAA4F;QACtG,0GAA0G;QAC1G,uDAAuD,CAAC,CAAC;IAC3D,IAAI,WAAW,EAAE,CAAC;QAChB,uBAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
|