hap-nodejs 1.1.1-beta.5 → 1.1.1-beta.7

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.
Files changed (289) hide show
  1. package/@types/bonjour-hap.d.ts +53 -50
  2. package/@types/simple-plist.d.ts +4 -0
  3. package/README.md +19 -16
  4. package/dist/accessories/AirConditioner_accessory.js +32 -30
  5. package/dist/accessories/AirConditioner_accessory.js.map +1 -1
  6. package/dist/accessories/AppleTVRemote_accessory.js +86 -74
  7. package/dist/accessories/AppleTVRemote_accessory.js.map +1 -1
  8. package/dist/accessories/Camera_accessory.js +138 -143
  9. package/dist/accessories/Camera_accessory.js.map +1 -1
  10. package/dist/accessories/Fan_accessory.js +24 -20
  11. package/dist/accessories/Fan_accessory.js.map +1 -1
  12. package/dist/accessories/GarageDoorOpener_accessory.js +37 -35
  13. package/dist/accessories/GarageDoorOpener_accessory.js.map +1 -1
  14. package/dist/accessories/Light-AdaptiveLighting_accessory.js +46 -44
  15. package/dist/accessories/Light-AdaptiveLighting_accessory.js.map +1 -1
  16. package/dist/accessories/Light_accessory.js +36 -34
  17. package/dist/accessories/Light_accessory.js.map +1 -1
  18. package/dist/accessories/Lock_accessory.js +28 -27
  19. package/dist/accessories/Lock_accessory.js.map +1 -1
  20. package/dist/accessories/MotionSensor_accessory.js +18 -15
  21. package/dist/accessories/MotionSensor_accessory.js.map +1 -1
  22. package/dist/accessories/Outlet_accessory.js +24 -22
  23. package/dist/accessories/Outlet_accessory.js.map +1 -1
  24. package/dist/accessories/SmartSpeaker_accessory.js +22 -20
  25. package/dist/accessories/SmartSpeaker_accessory.js.map +1 -1
  26. package/dist/accessories/Sprinkler_accessory.js +39 -36
  27. package/dist/accessories/Sprinkler_accessory.js.map +1 -1
  28. package/dist/accessories/TV_accessory.js +47 -45
  29. package/dist/accessories/TV_accessory.js.map +1 -1
  30. package/dist/accessories/TemperatureSensor_accessory.js +17 -14
  31. package/dist/accessories/TemperatureSensor_accessory.js.map +1 -1
  32. package/dist/accessories/Wi-FiRouter_accessory.d.ts +1 -1
  33. package/dist/accessories/Wi-FiRouter_accessory.d.ts.map +1 -1
  34. package/dist/accessories/Wi-FiRouter_accessory.js +14 -11
  35. package/dist/accessories/Wi-FiRouter_accessory.js.map +1 -1
  36. package/dist/accessories/Wi-FiSatellite_accessory.d.ts +1 -1
  37. package/dist/accessories/Wi-FiSatellite_accessory.d.ts.map +1 -1
  38. package/dist/accessories/Wi-FiSatellite_accessory.js +16 -13
  39. package/dist/accessories/Wi-FiSatellite_accessory.js.map +1 -1
  40. package/dist/accessories/gstreamer-audioProducer.d.ts +3 -3
  41. package/dist/accessories/gstreamer-audioProducer.d.ts.map +1 -1
  42. package/dist/accessories/gstreamer-audioProducer.js +39 -38
  43. package/dist/accessories/gstreamer-audioProducer.js.map +1 -1
  44. package/dist/accessories/types.d.ts +63 -63
  45. package/dist/accessories/types.d.ts.map +1 -1
  46. package/dist/accessories/types.js +87 -83
  47. package/dist/accessories/types.js.map +1 -1
  48. package/dist/index.d.ts +28 -26
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +34 -40
  51. package/dist/index.js.map +1 -1
  52. package/dist/internal-types.d.ts +1 -1
  53. package/dist/internal-types.d.ts.map +1 -1
  54. package/dist/internal-types.js +21 -19
  55. package/dist/internal-types.js.map +1 -1
  56. package/dist/lib/Accessory.d.ts +37 -38
  57. package/dist/lib/Accessory.d.ts.map +1 -1
  58. package/dist/lib/Accessory.js +299 -289
  59. package/dist/lib/Accessory.js.map +1 -1
  60. package/dist/lib/Advertiser.d.ts +7 -7
  61. package/dist/lib/Advertiser.d.ts.map +1 -1
  62. package/dist/lib/Advertiser.js +136 -128
  63. package/dist/lib/Advertiser.js.map +1 -1
  64. package/dist/lib/Bridge.d.ts +1 -1
  65. package/dist/lib/Bridge.d.ts.map +1 -1
  66. package/dist/lib/Bridge.js +6 -2
  67. package/dist/lib/Bridge.js.map +1 -1
  68. package/dist/lib/Characteristic.d.ts +41 -40
  69. package/dist/lib/Characteristic.d.ts.map +1 -1
  70. package/dist/lib/Characteristic.js +210 -206
  71. package/dist/lib/Characteristic.js.map +1 -1
  72. package/dist/lib/HAPServer.d.ts +30 -35
  73. package/dist/lib/HAPServer.d.ts.map +1 -1
  74. package/dist/lib/HAPServer.js +229 -225
  75. package/dist/lib/HAPServer.js.map +1 -1
  76. package/dist/lib/Service.d.ts +22 -22
  77. package/dist/lib/Service.d.ts.map +1 -1
  78. package/dist/lib/Service.js +71 -67
  79. package/dist/lib/Service.js.map +1 -1
  80. package/dist/lib/camera/RTPProxy.d.ts +1 -2
  81. package/dist/lib/camera/RTPProxy.d.ts.map +1 -1
  82. package/dist/lib/camera/RTPProxy.js +44 -28
  83. package/dist/lib/camera/RTPProxy.js.map +1 -1
  84. package/dist/lib/camera/RTPStreamManagement.d.ts +33 -34
  85. package/dist/lib/camera/RTPStreamManagement.d.ts.map +1 -1
  86. package/dist/lib/camera/RTPStreamManagement.js +149 -181
  87. package/dist/lib/camera/RTPStreamManagement.js.map +1 -1
  88. package/dist/lib/camera/RecordingManagement.d.ts +17 -19
  89. package/dist/lib/camera/RecordingManagement.d.ts.map +1 -1
  90. package/dist/lib/camera/RecordingManagement.js +153 -162
  91. package/dist/lib/camera/RecordingManagement.js.map +1 -1
  92. package/dist/lib/camera/index.d.ts +3 -3
  93. package/dist/lib/camera/index.d.ts.map +1 -1
  94. package/dist/lib/camera/index.js +6 -3
  95. package/dist/lib/camera/index.js.map +1 -1
  96. package/dist/lib/controller/AdaptiveLightingController.d.ts +33 -33
  97. package/dist/lib/controller/AdaptiveLightingController.d.ts.map +1 -1
  98. package/dist/lib/controller/AdaptiveLightingController.js +146 -154
  99. package/dist/lib/controller/AdaptiveLightingController.js.map +1 -1
  100. package/dist/lib/controller/CameraController.d.ts +20 -22
  101. package/dist/lib/controller/CameraController.d.ts.map +1 -1
  102. package/dist/lib/controller/CameraController.js +78 -74
  103. package/dist/lib/controller/CameraController.js.map +1 -1
  104. package/dist/lib/controller/Controller.d.ts +4 -4
  105. package/dist/lib/controller/Controller.d.ts.map +1 -1
  106. package/dist/lib/controller/Controller.js +8 -5
  107. package/dist/lib/controller/Controller.js.map +1 -1
  108. package/dist/lib/controller/DoorbellController.d.ts +4 -5
  109. package/dist/lib/controller/DoorbellController.d.ts.map +1 -1
  110. package/dist/lib/controller/DoorbellController.js +13 -9
  111. package/dist/lib/controller/DoorbellController.js.map +1 -1
  112. package/dist/lib/controller/RemoteController.d.ts +37 -39
  113. package/dist/lib/controller/RemoteController.d.ts.map +1 -1
  114. package/dist/lib/controller/RemoteController.js +199 -210
  115. package/dist/lib/controller/RemoteController.js.map +1 -1
  116. package/dist/lib/controller/index.d.ts +5 -5
  117. package/dist/lib/controller/index.d.ts.map +1 -1
  118. package/dist/lib/controller/index.js +8 -5
  119. package/dist/lib/controller/index.js.map +1 -1
  120. package/dist/lib/datastream/DataStreamManagement.d.ts +2 -2
  121. package/dist/lib/datastream/DataStreamManagement.d.ts.map +1 -1
  122. package/dist/lib/datastream/DataStreamManagement.js +40 -40
  123. package/dist/lib/datastream/DataStreamManagement.js.map +1 -1
  124. package/dist/lib/datastream/DataStreamParser.d.ts +0 -1
  125. package/dist/lib/datastream/DataStreamParser.d.ts.map +1 -1
  126. package/dist/lib/datastream/DataStreamParser.js +77 -57
  127. package/dist/lib/datastream/DataStreamParser.js.map +1 -1
  128. package/dist/lib/datastream/DataStreamServer.d.ts +22 -27
  129. package/dist/lib/datastream/DataStreamServer.d.ts.map +1 -1
  130. package/dist/lib/datastream/DataStreamServer.js +164 -159
  131. package/dist/lib/datastream/DataStreamServer.js.map +1 -1
  132. package/dist/lib/datastream/index.d.ts +3 -3
  133. package/dist/lib/datastream/index.d.ts.map +1 -1
  134. package/dist/lib/datastream/index.js +6 -3
  135. package/dist/lib/datastream/index.js.map +1 -1
  136. package/dist/lib/definitions/CharacteristicDefinitions.d.ts +1 -1
  137. package/dist/lib/definitions/CharacteristicDefinitions.d.ts.map +1 -1
  138. package/dist/lib/definitions/CharacteristicDefinitions.js +1203 -957
  139. package/dist/lib/definitions/CharacteristicDefinitions.js.map +1 -1
  140. package/dist/lib/definitions/ServiceDefinitions.d.ts +1 -1
  141. package/dist/lib/definitions/ServiceDefinitions.d.ts.map +1 -1
  142. package/dist/lib/definitions/ServiceDefinitions.js +695 -620
  143. package/dist/lib/definitions/ServiceDefinitions.js.map +1 -1
  144. package/dist/lib/definitions/generate-definitions.d.ts +3 -3
  145. package/dist/lib/definitions/generate-definitions.d.ts.map +1 -1
  146. package/dist/lib/definitions/generate-definitions.js +259 -247
  147. package/dist/lib/definitions/generate-definitions.js.map +1 -1
  148. package/dist/lib/definitions/generator-configuration.d.ts +1 -1
  149. package/dist/lib/definitions/generator-configuration.d.ts.map +1 -1
  150. package/dist/lib/definitions/generator-configuration.js +181 -176
  151. package/dist/lib/definitions/generator-configuration.js.map +1 -1
  152. package/dist/lib/definitions/index.d.ts +2 -2
  153. package/dist/lib/definitions/index.d.ts.map +1 -1
  154. package/dist/lib/definitions/index.js +5 -2
  155. package/dist/lib/definitions/index.js.map +1 -1
  156. package/dist/lib/gen/HomeKit.d.ts +7 -0
  157. package/dist/lib/gen/HomeKit.d.ts.map +1 -0
  158. package/dist/lib/gen/HomeKit.js +8 -0
  159. package/dist/lib/gen/HomeKit.js.map +1 -0
  160. package/dist/lib/model/AccessoryInfo.d.ts +3 -4
  161. package/dist/lib/model/AccessoryInfo.d.ts.map +1 -1
  162. package/dist/lib/model/AccessoryInfo.js +55 -52
  163. package/dist/lib/model/AccessoryInfo.js.map +1 -1
  164. package/dist/lib/model/ControllerStorage.d.ts +3 -3
  165. package/dist/lib/model/ControllerStorage.d.ts.map +1 -1
  166. package/dist/lib/model/ControllerStorage.js +23 -18
  167. package/dist/lib/model/ControllerStorage.js.map +1 -1
  168. package/dist/lib/model/HAPStorage.d.ts +2 -2
  169. package/dist/lib/model/HAPStorage.d.ts.map +1 -1
  170. package/dist/lib/model/HAPStorage.js +11 -4
  171. package/dist/lib/model/HAPStorage.js.map +1 -1
  172. package/dist/lib/model/IdentifierCache.d.ts +1 -1
  173. package/dist/lib/model/IdentifierCache.d.ts.map +1 -1
  174. package/dist/lib/model/IdentifierCache.js +27 -19
  175. package/dist/lib/model/IdentifierCache.js.map +1 -1
  176. package/dist/lib/tv/AccessControlManagement.d.ts +9 -9
  177. package/dist/lib/tv/AccessControlManagement.d.ts.map +1 -1
  178. package/dist/lib/tv/AccessControlManagement.js +29 -27
  179. package/dist/lib/tv/AccessControlManagement.js.map +1 -1
  180. package/dist/lib/util/checkName.d.ts +2 -2
  181. package/dist/lib/util/checkName.d.ts.map +1 -1
  182. package/dist/lib/util/checkName.js +9 -6
  183. package/dist/lib/util/checkName.js.map +1 -1
  184. package/dist/lib/util/clone.d.ts.map +1 -1
  185. package/dist/lib/util/clone.js +5 -1
  186. package/dist/lib/util/clone.js.map +1 -1
  187. package/dist/lib/util/color-utils.d.ts +1 -1
  188. package/dist/lib/util/color-utils.d.ts.map +1 -1
  189. package/dist/lib/util/color-utils.js +9 -4
  190. package/dist/lib/util/color-utils.js.map +1 -1
  191. package/dist/lib/util/eventedhttp.d.ts +22 -23
  192. package/dist/lib/util/eventedhttp.d.ts.map +1 -1
  193. package/dist/lib/util/eventedhttp.js +116 -109
  194. package/dist/lib/util/eventedhttp.js.map +1 -1
  195. package/dist/lib/util/hapCrypto.d.ts +2 -3
  196. package/dist/lib/util/hapCrypto.d.ts.map +1 -1
  197. package/dist/lib/util/hapCrypto.js +40 -31
  198. package/dist/lib/util/hapCrypto.js.map +1 -1
  199. package/dist/lib/util/hapStatusError.d.ts +1 -1
  200. package/dist/lib/util/hapStatusError.d.ts.map +1 -1
  201. package/dist/lib/util/hapStatusError.js +8 -4
  202. package/dist/lib/util/hapStatusError.js.map +1 -1
  203. package/dist/lib/util/net-utils.d.ts +1 -1
  204. package/dist/lib/util/net-utils.js +23 -17
  205. package/dist/lib/util/net-utils.js.map +1 -1
  206. package/dist/lib/util/once.d.ts.map +1 -1
  207. package/dist/lib/util/once.js +6 -2
  208. package/dist/lib/util/once.js.map +1 -1
  209. package/dist/lib/util/promise-utils.d.ts +1 -1
  210. package/dist/lib/util/promise-utils.d.ts.map +1 -1
  211. package/dist/lib/util/promise-utils.js +10 -3
  212. package/dist/lib/util/promise-utils.js.map +1 -1
  213. package/dist/lib/util/request-util.d.ts +2 -3
  214. package/dist/lib/util/request-util.d.ts.map +1 -1
  215. package/dist/lib/util/request-util.js +19 -11
  216. package/dist/lib/util/request-util.js.map +1 -1
  217. package/dist/lib/util/time.d.ts +0 -1
  218. package/dist/lib/util/time.d.ts.map +1 -1
  219. package/dist/lib/util/time.js +11 -6
  220. package/dist/lib/util/time.js.map +1 -1
  221. package/dist/lib/util/tlv.d.ts +0 -1
  222. package/dist/lib/util/tlv.d.ts.map +1 -1
  223. package/dist/lib/util/tlv.js +43 -28
  224. package/dist/lib/util/tlv.js.map +1 -1
  225. package/dist/lib/util/uuid.d.ts +0 -1
  226. package/dist/lib/util/uuid.d.ts.map +1 -1
  227. package/dist/lib/util/uuid.js +38 -26
  228. package/dist/lib/util/uuid.js.map +1 -1
  229. package/dist/types.d.ts +24 -24
  230. package/dist/types.d.ts.map +1 -1
  231. package/dist/types.js +5 -3
  232. package/dist/types.js.map +1 -1
  233. package/package.json +47 -52
  234. package/dist/lib/dbus/align.d.ts +0 -2
  235. package/dist/lib/dbus/align.d.ts.map +0 -1
  236. package/dist/lib/dbus/align.js +0 -12
  237. package/dist/lib/dbus/align.js.map +0 -1
  238. package/dist/lib/dbus/bus.d.ts +0 -38
  239. package/dist/lib/dbus/bus.d.ts.map +0 -1
  240. package/dist/lib/dbus/bus.js +0 -222
  241. package/dist/lib/dbus/bus.js.map +0 -1
  242. package/dist/lib/dbus/constants.d.ts +0 -43
  243. package/dist/lib/dbus/constants.d.ts.map +0 -1
  244. package/dist/lib/dbus/constants.js +0 -53
  245. package/dist/lib/dbus/constants.js.map +0 -1
  246. package/dist/lib/dbus/dbus-buffer.d.ts +0 -30
  247. package/dist/lib/dbus/dbus-buffer.d.ts.map +0 -1
  248. package/dist/lib/dbus/dbus-buffer.js +0 -175
  249. package/dist/lib/dbus/dbus-buffer.js.map +0 -1
  250. package/dist/lib/dbus/handshake.d.ts +0 -2
  251. package/dist/lib/dbus/handshake.d.ts.map +0 -1
  252. package/dist/lib/dbus/handshake.js +0 -130
  253. package/dist/lib/dbus/handshake.js.map +0 -1
  254. package/dist/lib/dbus/index.d.ts +0 -3
  255. package/dist/lib/dbus/index.d.ts.map +0 -1
  256. package/dist/lib/dbus/index.js +0 -123
  257. package/dist/lib/dbus/index.js.map +0 -1
  258. package/dist/lib/dbus/introspect.d.ts +0 -30
  259. package/dist/lib/dbus/introspect.d.ts.map +0 -1
  260. package/dist/lib/dbus/introspect.js +0 -208
  261. package/dist/lib/dbus/introspect.js.map +0 -1
  262. package/dist/lib/dbus/marshall.d.ts +0 -2
  263. package/dist/lib/dbus/marshall.d.ts.map +0 -1
  264. package/dist/lib/dbus/marshall.js +0 -97
  265. package/dist/lib/dbus/marshall.js.map +0 -1
  266. package/dist/lib/dbus/marshallers.d.ts +0 -10
  267. package/dist/lib/dbus/marshallers.d.ts.map +0 -1
  268. package/dist/lib/dbus/marshallers.js +0 -329
  269. package/dist/lib/dbus/marshallers.js.map +0 -1
  270. package/dist/lib/dbus/message.d.ts +0 -4
  271. package/dist/lib/dbus/message.d.ts.map +0 -1
  272. package/dist/lib/dbus/message.js +0 -116
  273. package/dist/lib/dbus/message.js.map +0 -1
  274. package/dist/lib/dbus/put.d.ts +0 -21
  275. package/dist/lib/dbus/put.d.ts.map +0 -1
  276. package/dist/lib/dbus/put.js +0 -120
  277. package/dist/lib/dbus/put.js.map +0 -1
  278. package/dist/lib/dbus/readline.d.ts +0 -2
  279. package/dist/lib/dbus/readline.d.ts.map +0 -1
  280. package/dist/lib/dbus/readline.js +0 -27
  281. package/dist/lib/dbus/readline.js.map +0 -1
  282. package/dist/lib/dbus/signature.d.ts +0 -2
  283. package/dist/lib/dbus/signature.d.ts.map +0 -1
  284. package/dist/lib/dbus/signature.js +0 -59
  285. package/dist/lib/dbus/signature.js.map +0 -1
  286. package/dist/lib/dbus/stdifaces.d.ts +0 -3
  287. package/dist/lib/dbus/stdifaces.d.ts.map +0 -1
  288. package/dist/lib/dbus/stdifaces.js +0 -206
  289. package/dist/lib/dbus/stdifaces.js.map +0 -1
@@ -1,20 +1,22 @@
1
- import { Buffer } from 'node:buffer';
2
- import { createHash } from 'node:crypto';
3
- import { EventEmitter } from 'node:events';
4
- import createDebug from 'debug';
5
- import { Characteristic } from '../Characteristic.js';
6
- import { DataStreamManagement, HDSConnectionError, HDSProtocolError, HDSProtocolSpecificErrorReasonConst, HDSStatus, } from '../datastream/index.js';
7
- import { Service } from '../Service.js';
8
- import { HapStatusError } from '../util/hapStatusError.js';
9
- import { decode, encode } from '../util/tlv.js';
10
- const debug = createDebug('HAP-NodeJS:Camera:RecordingManagement');
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecordingManagement = exports.PacketDataType = exports.AudioRecordingSamplerate = exports.AudioRecordingCodecType = exports.MediaContainerType = exports.EventTriggerOption = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const crypto_1 = tslib_1.__importDefault(require("crypto"));
6
+ const debug_1 = tslib_1.__importDefault(require("debug"));
7
+ const events_1 = require("events");
8
+ const Characteristic_1 = require("../Characteristic");
9
+ const datastream_1 = require("../datastream");
10
+ const Service_1 = require("../Service");
11
+ const hapStatusError_1 = require("../util/hapStatusError");
12
+ const tlv = tslib_1.__importStar(require("../util/tlv"));
13
+ const debug = (0, debug_1.default)("HAP-NodeJS:Camera:RecordingManagement");
11
14
  /**
12
15
  * Describes the Event trigger.
13
16
  *
14
17
  * @group Camera
15
18
  */
16
- // eslint-disable-next-line no-restricted-syntax
17
- export var EventTriggerOption;
19
+ var EventTriggerOption;
18
20
  (function (EventTriggerOption) {
19
21
  /**
20
22
  * The Motion trigger. If enabled motion should trigger the start of a recording.
@@ -29,23 +31,20 @@ export var EventTriggerOption;
29
31
  * See https://github.com/homebridge/HAP-NodeJS/issues/976#issuecomment-1280301989.
30
32
  */
31
33
  EventTriggerOption[EventTriggerOption["DOORBELL"] = 2] = "DOORBELL";
32
- })(EventTriggerOption || (EventTriggerOption = {}));
34
+ })(EventTriggerOption || (exports.EventTriggerOption = EventTriggerOption = {}));
33
35
  /**
34
36
  * @group Camera
35
37
  */
36
- // eslint-disable-next-line no-restricted-syntax
37
- export var MediaContainerType;
38
+ var MediaContainerType;
38
39
  (function (MediaContainerType) {
39
40
  MediaContainerType[MediaContainerType["FRAGMENTED_MP4"] = 0] = "FRAGMENTED_MP4";
40
- })(MediaContainerType || (MediaContainerType = {}));
41
- // eslint-disable-next-line no-restricted-syntax
41
+ })(MediaContainerType || (exports.MediaContainerType = MediaContainerType = {}));
42
42
  var VideoCodecConfigurationTypes;
43
43
  (function (VideoCodecConfigurationTypes) {
44
44
  VideoCodecConfigurationTypes[VideoCodecConfigurationTypes["CODEC_TYPE"] = 1] = "CODEC_TYPE";
45
45
  VideoCodecConfigurationTypes[VideoCodecConfigurationTypes["CODEC_PARAMETERS"] = 2] = "CODEC_PARAMETERS";
46
46
  VideoCodecConfigurationTypes[VideoCodecConfigurationTypes["ATTRIBUTES"] = 3] = "ATTRIBUTES";
47
47
  })(VideoCodecConfigurationTypes || (VideoCodecConfigurationTypes = {}));
48
- // eslint-disable-next-line no-restricted-syntax
49
48
  var VideoCodecParametersTypes;
50
49
  (function (VideoCodecParametersTypes) {
51
50
  VideoCodecParametersTypes[VideoCodecParametersTypes["PROFILE_ID"] = 1] = "PROFILE_ID";
@@ -53,14 +52,12 @@ var VideoCodecParametersTypes;
53
52
  VideoCodecParametersTypes[VideoCodecParametersTypes["BITRATE"] = 3] = "BITRATE";
54
53
  VideoCodecParametersTypes[VideoCodecParametersTypes["IFRAME_INTERVAL"] = 4] = "IFRAME_INTERVAL";
55
54
  })(VideoCodecParametersTypes || (VideoCodecParametersTypes = {}));
56
- // eslint-disable-next-line no-restricted-syntax
57
55
  var VideoAttributesTypes;
58
56
  (function (VideoAttributesTypes) {
59
57
  VideoAttributesTypes[VideoAttributesTypes["IMAGE_WIDTH"] = 1] = "IMAGE_WIDTH";
60
58
  VideoAttributesTypes[VideoAttributesTypes["IMAGE_HEIGHT"] = 2] = "IMAGE_HEIGHT";
61
59
  VideoAttributesTypes[VideoAttributesTypes["FRAME_RATE"] = 3] = "FRAME_RATE";
62
60
  })(VideoAttributesTypes || (VideoAttributesTypes = {}));
63
- // eslint-disable-next-line no-restricted-syntax
64
61
  var SelectedCameraRecordingConfigurationTypes;
65
62
  (function (SelectedCameraRecordingConfigurationTypes) {
66
63
  SelectedCameraRecordingConfigurationTypes[SelectedCameraRecordingConfigurationTypes["SELECTED_RECORDING_CONFIGURATION"] = 1] = "SELECTED_RECORDING_CONFIGURATION";
@@ -70,17 +67,15 @@ var SelectedCameraRecordingConfigurationTypes;
70
67
  /**
71
68
  * @group Camera
72
69
  */
73
- // eslint-disable-next-line no-restricted-syntax
74
- export var AudioRecordingCodecType;
70
+ var AudioRecordingCodecType;
75
71
  (function (AudioRecordingCodecType) {
76
72
  AudioRecordingCodecType[AudioRecordingCodecType["AAC_LC"] = 0] = "AAC_LC";
77
73
  AudioRecordingCodecType[AudioRecordingCodecType["AAC_ELD"] = 1] = "AAC_ELD";
78
- })(AudioRecordingCodecType || (AudioRecordingCodecType = {}));
74
+ })(AudioRecordingCodecType || (exports.AudioRecordingCodecType = AudioRecordingCodecType = {}));
79
75
  /**
80
76
  * @group Camera
81
77
  */
82
- // eslint-disable-next-line no-restricted-syntax
83
- export var AudioRecordingSamplerate;
78
+ var AudioRecordingSamplerate;
84
79
  (function (AudioRecordingSamplerate) {
85
80
  AudioRecordingSamplerate[AudioRecordingSamplerate["KHZ_8"] = 0] = "KHZ_8";
86
81
  AudioRecordingSamplerate[AudioRecordingSamplerate["KHZ_16"] = 1] = "KHZ_16";
@@ -88,45 +83,38 @@ export var AudioRecordingSamplerate;
88
83
  AudioRecordingSamplerate[AudioRecordingSamplerate["KHZ_32"] = 3] = "KHZ_32";
89
84
  AudioRecordingSamplerate[AudioRecordingSamplerate["KHZ_44_1"] = 4] = "KHZ_44_1";
90
85
  AudioRecordingSamplerate[AudioRecordingSamplerate["KHZ_48"] = 5] = "KHZ_48";
91
- })(AudioRecordingSamplerate || (AudioRecordingSamplerate = {}));
92
- // eslint-disable-next-line no-restricted-syntax
86
+ })(AudioRecordingSamplerate || (exports.AudioRecordingSamplerate = AudioRecordingSamplerate = {}));
93
87
  var SupportedVideoRecordingConfigurationTypes;
94
88
  (function (SupportedVideoRecordingConfigurationTypes) {
95
89
  SupportedVideoRecordingConfigurationTypes[SupportedVideoRecordingConfigurationTypes["VIDEO_CODEC_CONFIGURATION"] = 1] = "VIDEO_CODEC_CONFIGURATION";
96
90
  })(SupportedVideoRecordingConfigurationTypes || (SupportedVideoRecordingConfigurationTypes = {}));
97
- // eslint-disable-next-line no-restricted-syntax
98
91
  var SupportedCameraRecordingConfigurationTypes;
99
92
  (function (SupportedCameraRecordingConfigurationTypes) {
100
93
  SupportedCameraRecordingConfigurationTypes[SupportedCameraRecordingConfigurationTypes["PREBUFFER_LENGTH"] = 1] = "PREBUFFER_LENGTH";
101
94
  SupportedCameraRecordingConfigurationTypes[SupportedCameraRecordingConfigurationTypes["EVENT_TRIGGER_OPTIONS"] = 2] = "EVENT_TRIGGER_OPTIONS";
102
95
  SupportedCameraRecordingConfigurationTypes[SupportedCameraRecordingConfigurationTypes["MEDIA_CONTAINER_CONFIGURATIONS"] = 3] = "MEDIA_CONTAINER_CONFIGURATIONS";
103
96
  })(SupportedCameraRecordingConfigurationTypes || (SupportedCameraRecordingConfigurationTypes = {}));
104
- // eslint-disable-next-line no-restricted-syntax
105
97
  var MediaContainerConfigurationTypes;
106
98
  (function (MediaContainerConfigurationTypes) {
107
99
  MediaContainerConfigurationTypes[MediaContainerConfigurationTypes["MEDIA_CONTAINER_TYPE"] = 1] = "MEDIA_CONTAINER_TYPE";
108
100
  MediaContainerConfigurationTypes[MediaContainerConfigurationTypes["MEDIA_CONTAINER_PARAMETERS"] = 2] = "MEDIA_CONTAINER_PARAMETERS";
109
101
  })(MediaContainerConfigurationTypes || (MediaContainerConfigurationTypes = {}));
110
- // eslint-disable-next-line no-restricted-syntax
111
102
  var MediaContainerParameterTypes;
112
103
  (function (MediaContainerParameterTypes) {
113
104
  MediaContainerParameterTypes[MediaContainerParameterTypes["FRAGMENT_LENGTH"] = 1] = "FRAGMENT_LENGTH";
114
105
  })(MediaContainerParameterTypes || (MediaContainerParameterTypes = {}));
115
- // eslint-disable-next-line no-restricted-syntax
116
106
  var AudioCodecParametersTypes;
117
107
  (function (AudioCodecParametersTypes) {
118
108
  AudioCodecParametersTypes[AudioCodecParametersTypes["CHANNEL"] = 1] = "CHANNEL";
119
109
  AudioCodecParametersTypes[AudioCodecParametersTypes["BIT_RATE"] = 2] = "BIT_RATE";
120
110
  AudioCodecParametersTypes[AudioCodecParametersTypes["SAMPLE_RATE"] = 3] = "SAMPLE_RATE";
121
- AudioCodecParametersTypes[AudioCodecParametersTypes["MAX_AUDIO_BITRATE"] = 4] = "MAX_AUDIO_BITRATE";
111
+ AudioCodecParametersTypes[AudioCodecParametersTypes["MAX_AUDIO_BITRATE"] = 4] = "MAX_AUDIO_BITRATE"; // only present in selected audio codec parameters tlv
122
112
  })(AudioCodecParametersTypes || (AudioCodecParametersTypes = {}));
123
- // eslint-disable-next-line no-restricted-syntax
124
113
  var AudioCodecConfigurationTypes;
125
114
  (function (AudioCodecConfigurationTypes) {
126
115
  AudioCodecConfigurationTypes[AudioCodecConfigurationTypes["CODEC_TYPE"] = 1] = "CODEC_TYPE";
127
116
  AudioCodecConfigurationTypes[AudioCodecConfigurationTypes["CODEC_PARAMETERS"] = 2] = "CODEC_PARAMETERS";
128
117
  })(AudioCodecConfigurationTypes || (AudioCodecConfigurationTypes = {}));
129
- // eslint-disable-next-line no-restricted-syntax
130
118
  var SupportedAudioRecordingConfigurationTypes;
131
119
  (function (SupportedAudioRecordingConfigurationTypes) {
132
120
  SupportedAudioRecordingConfigurationTypes[SupportedAudioRecordingConfigurationTypes["AUDIO_CODEC_CONFIGURATION"] = 1] = "AUDIO_CODEC_CONFIGURATION";
@@ -134,8 +122,7 @@ var SupportedAudioRecordingConfigurationTypes;
134
122
  /**
135
123
  * @group Camera
136
124
  */
137
- // eslint-disable-next-line no-restricted-syntax
138
- export var PacketDataType;
125
+ var PacketDataType;
139
126
  (function (PacketDataType) {
140
127
  /**
141
128
  * mp4 moov box
@@ -145,11 +132,11 @@ export var PacketDataType;
145
132
  * mp4 moof + mdat boxes
146
133
  */
147
134
  PacketDataType["MEDIA_FRAGMENT"] = "mediaFragment";
148
- })(PacketDataType || (PacketDataType = {}));
135
+ })(PacketDataType || (exports.PacketDataType = PacketDataType = {}));
149
136
  /**
150
137
  * @group Camera
151
138
  */
152
- export class RecordingManagement {
139
+ class RecordingManagement {
153
140
  options;
154
141
  delegate;
155
142
  stateChangeDelegate;
@@ -197,32 +184,32 @@ export class RecordingManagement {
197
184
  this.setupServiceHandlers();
198
185
  }
199
186
  constructService() {
200
- const recordingManagement = new Service.CameraRecordingManagement('', '');
201
- recordingManagement.setCharacteristic(Characteristic.Active, false);
202
- recordingManagement.setCharacteristic(Characteristic.RecordingAudioActive, false);
203
- const operatingMode = new Service.CameraOperatingMode('', '');
204
- operatingMode.setCharacteristic(Characteristic.EventSnapshotsActive, true);
205
- operatingMode.setCharacteristic(Characteristic.HomeKitCameraActive, true);
206
- operatingMode.setCharacteristic(Characteristic.PeriodicSnapshotsActive, true);
207
- const dataStreamManagement = new DataStreamManagement();
187
+ const recordingManagement = new Service_1.Service.CameraRecordingManagement("", "");
188
+ recordingManagement.setCharacteristic(Characteristic_1.Characteristic.Active, false);
189
+ recordingManagement.setCharacteristic(Characteristic_1.Characteristic.RecordingAudioActive, false);
190
+ const operatingMode = new Service_1.Service.CameraOperatingMode("", "");
191
+ operatingMode.setCharacteristic(Characteristic_1.Characteristic.EventSnapshotsActive, true);
192
+ operatingMode.setCharacteristic(Characteristic_1.Characteristic.HomeKitCameraActive, true);
193
+ operatingMode.setCharacteristic(Characteristic_1.Characteristic.PeriodicSnapshotsActive, true);
194
+ const dataStreamManagement = new datastream_1.DataStreamManagement();
208
195
  recordingManagement.addLinkedService(dataStreamManagement.getService());
209
196
  return {
210
- recordingManagement,
211
- operatingMode,
212
- dataStreamManagement,
197
+ recordingManagement: recordingManagement,
198
+ operatingMode: operatingMode,
199
+ dataStreamManagement: dataStreamManagement,
213
200
  };
214
201
  }
215
202
  setupServiceHandlers() {
216
203
  // update the current configuration values to the current state.
217
- this.recordingManagementService.setCharacteristic(Characteristic.SupportedCameraRecordingConfiguration, this.supportedCameraRecordingConfiguration);
218
- this.recordingManagementService.setCharacteristic(Characteristic.SupportedVideoRecordingConfiguration, this.supportedVideoRecordingConfiguration);
219
- this.recordingManagementService.setCharacteristic(Characteristic.SupportedAudioRecordingConfiguration, this.supportedAudioRecordingConfiguration);
220
- this.recordingManagementService.getCharacteristic(Characteristic.SelectedCameraRecordingConfiguration)
204
+ this.recordingManagementService.setCharacteristic(Characteristic_1.Characteristic.SupportedCameraRecordingConfiguration, this.supportedCameraRecordingConfiguration);
205
+ this.recordingManagementService.setCharacteristic(Characteristic_1.Characteristic.SupportedVideoRecordingConfiguration, this.supportedVideoRecordingConfiguration);
206
+ this.recordingManagementService.setCharacteristic(Characteristic_1.Characteristic.SupportedAudioRecordingConfiguration, this.supportedAudioRecordingConfiguration);
207
+ this.recordingManagementService.getCharacteristic(Characteristic_1.Characteristic.SelectedCameraRecordingConfiguration)
221
208
  .onGet(this.handleSelectedCameraRecordingConfigurationRead.bind(this))
222
209
  .onSet(this.handleSelectedCameraRecordingConfigurationWrite.bind(this))
223
210
  .setProps({ adminOnlyAccess: [1 /* Access.WRITE */] });
224
- this.recordingManagementService.getCharacteristic(Characteristic.Active)
225
- .onSet((value) => {
211
+ this.recordingManagementService.getCharacteristic(Characteristic_1.Characteristic.Active)
212
+ .onSet(value => {
226
213
  if (!!value === this.recordingActive) {
227
214
  return; // skip delegate call if state didn't change!
228
215
  }
@@ -231,12 +218,12 @@ export class RecordingManagement {
231
218
  })
232
219
  .on("change" /* CharacteristicEventTypes.CHANGE */, () => this.stateChangeDelegate?.())
233
220
  .setProps({ adminOnlyAccess: [1 /* Access.WRITE */] });
234
- this.recordingManagementService.getCharacteristic(Characteristic.RecordingAudioActive)
221
+ this.recordingManagementService.getCharacteristic(Characteristic_1.Characteristic.RecordingAudioActive)
235
222
  .on("change" /* CharacteristicEventTypes.CHANGE */, () => this.stateChangeDelegate?.());
236
- this.operatingModeService.getCharacteristic(Characteristic.HomeKitCameraActive)
237
- .on("change" /* CharacteristicEventTypes.CHANGE */, (change) => {
223
+ this.operatingModeService.getCharacteristic(Characteristic_1.Characteristic.HomeKitCameraActive)
224
+ .on("change" /* CharacteristicEventTypes.CHANGE */, change => {
238
225
  for (const service of this.sensorServices) {
239
- service.setCharacteristic(Characteristic.StatusActive, !!change.newValue);
226
+ service.setCharacteristic(Characteristic_1.Characteristic.StatusActive, !!change.newValue);
240
227
  }
241
228
  if (!change.newValue && this.recordingStream) {
242
229
  this.recordingStream.close(1 /* HDSProtocolSpecificErrorReason.NOT_ALLOWED */);
@@ -244,70 +231,71 @@ export class RecordingManagement {
244
231
  this.stateChangeDelegate?.();
245
232
  })
246
233
  .setProps({ adminOnlyAccess: [1 /* Access.WRITE */] });
247
- this.operatingModeService.getCharacteristic(Characteristic.EventSnapshotsActive)
234
+ this.operatingModeService.getCharacteristic(Characteristic_1.Characteristic.EventSnapshotsActive)
248
235
  .on("change" /* CharacteristicEventTypes.CHANGE */, () => this.stateChangeDelegate?.())
249
236
  .setProps({ adminOnlyAccess: [1 /* Access.WRITE */] });
250
- this.operatingModeService.getCharacteristic(Characteristic.PeriodicSnapshotsActive)
237
+ this.operatingModeService.getCharacteristic(Characteristic_1.Characteristic.PeriodicSnapshotsActive)
251
238
  .on("change" /* CharacteristicEventTypes.CHANGE */, () => this.stateChangeDelegate?.())
252
239
  .setProps({ adminOnlyAccess: [1 /* Access.WRITE */] });
253
240
  this.dataStreamManagement
254
241
  .onRequestMessage("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, this.handleDataSendOpen.bind(this));
255
242
  }
243
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
256
244
  handleDataSendOpen(connection, id, message) {
257
245
  // for message fields see https://github.com/Supereg/secure-video-specification#41-start
258
246
  const streamId = message.streamId;
259
247
  const type = message.type;
260
248
  const target = message.target;
261
249
  const reason = message.reason;
262
- if (target !== 'controller' || type !== 'ipcamera.recording') {
263
- debug('[HDS %s] Received data send with unexpected target: %s or type: %d. Rejecting...', connection.remoteAddress, target, type);
264
- connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
250
+ if (target !== "controller" || type !== "ipcamera.recording") {
251
+ debug("[HDS %s] Received data send with unexpected target: %s or type: %d. Rejecting...", connection.remoteAddress, target, type);
252
+ connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, datastream_1.HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
265
253
  status: 5 /* HDSProtocolSpecificErrorReason.UNEXPECTED_FAILURE */,
266
254
  });
267
255
  return;
268
256
  }
269
257
  if (!this.recordingActive) {
270
- connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
258
+ connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, datastream_1.HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
271
259
  status: 1 /* HDSProtocolSpecificErrorReason.NOT_ALLOWED */,
272
260
  });
273
261
  return;
274
262
  }
275
- if (!this.operatingModeService.getCharacteristic(Characteristic.HomeKitCameraActive).value) {
276
- connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
263
+ if (!this.operatingModeService.getCharacteristic(Characteristic_1.Characteristic.HomeKitCameraActive).value) {
264
+ connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, datastream_1.HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
277
265
  status: 1 /* HDSProtocolSpecificErrorReason.NOT_ALLOWED */,
278
266
  });
279
267
  return;
280
268
  }
281
269
  if (this.recordingStream) {
282
- debug('[HDS %s] Rejecting DATA_SEND OPEN as another stream (%s) is already recording with streamId %d!', connection.remoteAddress, this.recordingStream.connection.remoteAddress, this.recordingStream.streamId);
270
+ debug("[HDS %s] Rejecting DATA_SEND OPEN as another stream (%s) is already recording with streamId %d!", connection.remoteAddress, this.recordingStream.connection.remoteAddress, this.recordingStream.streamId);
283
271
  // there is already a recording stream running.
284
- connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
272
+ connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, datastream_1.HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
285
273
  status: 2 /* HDSProtocolSpecificErrorReason.BUSY */,
286
274
  });
287
275
  return;
288
276
  }
289
277
  if (!this.selectedConfiguration) {
290
- connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
278
+ connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, id, datastream_1.HDSStatus.PROTOCOL_SPECIFIC_ERROR, {
291
279
  status: 9 /* HDSProtocolSpecificErrorReason.INVALID_CONFIGURATION */,
292
280
  });
293
281
  return;
294
282
  }
295
- debug('[HDS %s] HDS DATA_SEND Open with reason \'%s\'.', connection.remoteAddress, reason);
296
- // eslint-disable-next-line ts/no-use-before-define
283
+ debug("[HDS %s] HDS DATA_SEND Open with reason '%s'.", connection.remoteAddress, reason);
284
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
297
285
  this.recordingStream = new CameraRecordingStream(connection, this.delegate, id, streamId);
298
- // eslint-disable-next-line ts/no-use-before-define
299
286
  this.recordingStream.on("closed" /* CameraRecordingStreamEvents.CLOSED */, () => {
300
- debug('[HDS %s] Removing active recoding session from recording management!', connection.remoteAddress);
287
+ debug("[HDS %s] Removing active recoding session from recording management!", connection.remoteAddress);
301
288
  this.recordingStream = undefined;
302
289
  });
303
290
  this.recordingStream.startStreaming();
304
291
  }
305
292
  handleSelectedCameraRecordingConfigurationRead() {
306
293
  if (!this.selectedConfiguration) {
307
- throw new HapStatusError(-70402 /* HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
294
+ throw new hapStatusError_1.HapStatusError(-70402 /* HAPStatus.SERVICE_COMMUNICATION_FAILURE */);
308
295
  }
309
296
  return this.selectedConfiguration.base64;
310
297
  }
298
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
311
299
  handleSelectedCameraRecordingConfigurationWrite(value) {
312
300
  const configuration = this.parseSelectedConfiguration(value);
313
301
  const changed = this.selectedConfiguration?.base64 !== value;
@@ -322,19 +310,19 @@ export class RecordingManagement {
322
310
  }
323
311
  }
324
312
  parseSelectedConfiguration(value) {
325
- const decoded = decode(Buffer.from(value, 'base64'));
326
- const recording = decode(decoded[1 /* SelectedCameraRecordingConfigurationTypes.SELECTED_RECORDING_CONFIGURATION */]);
327
- const video = decode(decoded[2 /* SelectedCameraRecordingConfigurationTypes.SELECTED_VIDEO_CONFIGURATION */]);
328
- const audio = decode(decoded[3 /* SelectedCameraRecordingConfigurationTypes.SELECTED_AUDIO_CONFIGURATION */]);
313
+ const decoded = tlv.decode(Buffer.from(value, "base64"));
314
+ const recording = tlv.decode(decoded[1 /* SelectedCameraRecordingConfigurationTypes.SELECTED_RECORDING_CONFIGURATION */]);
315
+ const video = tlv.decode(decoded[2 /* SelectedCameraRecordingConfigurationTypes.SELECTED_VIDEO_CONFIGURATION */]);
316
+ const audio = tlv.decode(decoded[3 /* SelectedCameraRecordingConfigurationTypes.SELECTED_AUDIO_CONFIGURATION */]);
329
317
  const prebufferLength = recording[1 /* SupportedCameraRecordingConfigurationTypes.PREBUFFER_LENGTH */].readInt32LE(0);
330
318
  let eventTriggerOptions = recording[2 /* SupportedCameraRecordingConfigurationTypes.EVENT_TRIGGER_OPTIONS */].readInt32LE(0);
331
- const mediaContainerConfiguration = decode(recording[3 /* SupportedCameraRecordingConfigurationTypes.MEDIA_CONTAINER_CONFIGURATIONS */]);
319
+ const mediaContainerConfiguration = tlv.decode(recording[3 /* SupportedCameraRecordingConfigurationTypes.MEDIA_CONTAINER_CONFIGURATIONS */]);
332
320
  const containerType = mediaContainerConfiguration[1 /* MediaContainerConfigurationTypes.MEDIA_CONTAINER_TYPE */][0];
333
- const mediaContainerParameters = decode(mediaContainerConfiguration[2 /* MediaContainerConfigurationTypes.MEDIA_CONTAINER_PARAMETERS */]);
321
+ const mediaContainerParameters = tlv.decode(mediaContainerConfiguration[2 /* MediaContainerConfigurationTypes.MEDIA_CONTAINER_PARAMETERS */]);
334
322
  const fragmentLength = mediaContainerParameters[1 /* MediaContainerParameterTypes.FRAGMENT_LENGTH */].readInt32LE(0);
335
323
  const videoCodec = video[1 /* VideoCodecConfigurationTypes.CODEC_TYPE */][0];
336
- const videoParameters = decode(video[2 /* VideoCodecConfigurationTypes.CODEC_PARAMETERS */]);
337
- const videoAttributes = decode(video[3 /* VideoCodecConfigurationTypes.ATTRIBUTES */]);
324
+ const videoParameters = tlv.decode(video[2 /* VideoCodecConfigurationTypes.CODEC_PARAMETERS */]);
325
+ const videoAttributes = tlv.decode(video[3 /* VideoCodecConfigurationTypes.ATTRIBUTES */]);
338
326
  const profile = videoParameters[1 /* VideoCodecParametersTypes.PROFILE_ID */][0];
339
327
  const level = videoParameters[2 /* VideoCodecParametersTypes.LEVEL */][0];
340
328
  const videoBitrate = videoParameters[3 /* VideoCodecParametersTypes.BITRATE */].readInt32LE(0);
@@ -343,22 +331,22 @@ export class RecordingManagement {
343
331
  const height = videoAttributes[2 /* VideoAttributesTypes.IMAGE_HEIGHT */].readInt16LE(0);
344
332
  const framerate = videoAttributes[3 /* VideoAttributesTypes.FRAME_RATE */][0];
345
333
  const audioCodec = audio[1 /* AudioCodecConfigurationTypes.CODEC_TYPE */][0];
346
- const audioParameters = decode(audio[2 /* AudioCodecConfigurationTypes.CODEC_PARAMETERS */]);
334
+ const audioParameters = tlv.decode(audio[2 /* AudioCodecConfigurationTypes.CODEC_PARAMETERS */]);
347
335
  const audioChannels = audioParameters[1 /* AudioCodecParametersTypes.CHANNEL */][0];
348
336
  const samplerate = audioParameters[3 /* AudioCodecParametersTypes.SAMPLE_RATE */][0];
349
337
  const audioBitrateMode = audioParameters[2 /* AudioCodecParametersTypes.BIT_RATE */][0];
350
338
  const audioBitrate = audioParameters[4 /* AudioCodecParametersTypes.MAX_AUDIO_BITRATE */].readUInt32LE(0);
351
339
  const typedEventTriggers = [];
352
- let bitIndex = 0;
340
+ let bit_index = 0;
353
341
  while (eventTriggerOptions > 0) {
354
- if (eventTriggerOptions % 2 === 1) { // check if the lowest bit is set
355
- typedEventTriggers.push(1 << bitIndex);
342
+ if (eventTriggerOptions & 0x01) { // of the lowest bit is set add the next event trigger option
343
+ typedEventTriggers.push(1 << bit_index);
356
344
  }
357
- eventTriggerOptions = Math.floor(eventTriggerOptions / 2); // shift right by dividing by 2
358
- bitIndex += 1;
345
+ eventTriggerOptions = eventTriggerOptions >> 1; // shift to right till we reach zero.
346
+ bit_index += 1; // count our current bit index
359
347
  }
360
348
  return {
361
- prebufferLength,
349
+ prebufferLength: prebufferLength,
362
350
  eventTriggerTypes: typedEventTriggers,
363
351
  mediaContainerConfiguration: {
364
352
  type: containerType,
@@ -367,10 +355,10 @@ export class RecordingManagement {
367
355
  videoCodec: {
368
356
  type: videoCodec,
369
357
  parameters: {
370
- profile,
371
- level,
358
+ profile: profile,
359
+ level: level,
372
360
  bitRate: videoBitrate,
373
- iFrameInterval,
361
+ iFrameInterval: iFrameInterval,
374
362
  },
375
363
  resolution: [width, height, framerate],
376
364
  },
@@ -391,23 +379,23 @@ export class RecordingManagement {
391
379
  const eventTriggerOptions = Buffer.alloc(8);
392
380
  prebufferLength.writeInt32LE(options.prebufferLength, 0);
393
381
  eventTriggerOptions.writeInt32LE(this.eventTriggerOptions, 0);
394
- return encode(1 /* SupportedCameraRecordingConfigurationTypes.PREBUFFER_LENGTH */, prebufferLength, 2 /* SupportedCameraRecordingConfigurationTypes.EVENT_TRIGGER_OPTIONS */, eventTriggerOptions, 3 /* SupportedCameraRecordingConfigurationTypes.MEDIA_CONTAINER_CONFIGURATIONS */, mediaContainers.map((config) => {
382
+ return tlv.encode(1 /* SupportedCameraRecordingConfigurationTypes.PREBUFFER_LENGTH */, prebufferLength, 2 /* SupportedCameraRecordingConfigurationTypes.EVENT_TRIGGER_OPTIONS */, eventTriggerOptions, 3 /* SupportedCameraRecordingConfigurationTypes.MEDIA_CONTAINER_CONFIGURATIONS */, mediaContainers.map(config => {
395
383
  const fragmentLength = Buffer.alloc(4);
396
384
  fragmentLength.writeInt32LE(config.fragmentLength, 0);
397
- return encode(1 /* MediaContainerConfigurationTypes.MEDIA_CONTAINER_TYPE */, config.type, 2 /* MediaContainerConfigurationTypes.MEDIA_CONTAINER_PARAMETERS */, encode(1 /* MediaContainerParameterTypes.FRAGMENT_LENGTH */, fragmentLength));
398
- })).toString('base64');
385
+ return tlv.encode(1 /* MediaContainerConfigurationTypes.MEDIA_CONTAINER_TYPE */, config.type, 2 /* MediaContainerConfigurationTypes.MEDIA_CONTAINER_PARAMETERS */, tlv.encode(1 /* MediaContainerParameterTypes.FRAGMENT_LENGTH */, fragmentLength));
386
+ })).toString("base64");
399
387
  }
400
388
  _supportedVideoRecordingConfiguration(videoOptions) {
401
389
  if (!videoOptions.parameters) {
402
- throw new Error('Video parameters cannot be undefined');
390
+ throw new Error("Video parameters cannot be undefined");
403
391
  }
404
392
  if (!videoOptions.resolutions) {
405
- throw new Error('Video resolutions cannot be undefined');
393
+ throw new Error("Video resolutions cannot be undefined");
406
394
  }
407
- const codecParameters = encode(1 /* VideoCodecParametersTypes.PROFILE_ID */, videoOptions.parameters.profiles, 2 /* VideoCodecParametersTypes.LEVEL */, videoOptions.parameters.levels);
408
- const videoStreamConfiguration = encode(1 /* VideoCodecConfigurationTypes.CODEC_TYPE */, videoOptions.type, 2 /* VideoCodecConfigurationTypes.CODEC_PARAMETERS */, codecParameters, 3 /* VideoCodecConfigurationTypes.ATTRIBUTES */, videoOptions.resolutions.map((resolution) => {
395
+ const codecParameters = tlv.encode(1 /* VideoCodecParametersTypes.PROFILE_ID */, videoOptions.parameters.profiles, 2 /* VideoCodecParametersTypes.LEVEL */, videoOptions.parameters.levels);
396
+ const videoStreamConfiguration = tlv.encode(1 /* VideoCodecConfigurationTypes.CODEC_TYPE */, videoOptions.type, 2 /* VideoCodecConfigurationTypes.CODEC_PARAMETERS */, codecParameters, 3 /* VideoCodecConfigurationTypes.ATTRIBUTES */, videoOptions.resolutions.map(resolution => {
409
397
  if (resolution.length !== 3) {
410
- throw new Error('Unexpected video resolution');
398
+ throw new Error("Unexpected video resolution");
411
399
  }
412
400
  const width = Buffer.alloc(2);
413
401
  const height = Buffer.alloc(2);
@@ -415,35 +403,35 @@ export class RecordingManagement {
415
403
  width.writeUInt16LE(resolution[0], 0);
416
404
  height.writeUInt16LE(resolution[1], 0);
417
405
  frameRate.writeUInt8(resolution[2], 0);
418
- return encode(1 /* VideoAttributesTypes.IMAGE_WIDTH */, width, 2 /* VideoAttributesTypes.IMAGE_HEIGHT */, height, 3 /* VideoAttributesTypes.FRAME_RATE */, frameRate);
406
+ return tlv.encode(1 /* VideoAttributesTypes.IMAGE_WIDTH */, width, 2 /* VideoAttributesTypes.IMAGE_HEIGHT */, height, 3 /* VideoAttributesTypes.FRAME_RATE */, frameRate);
419
407
  }));
420
- return encode(1 /* SupportedVideoRecordingConfigurationTypes.VIDEO_CODEC_CONFIGURATION */, videoStreamConfiguration).toString('base64');
408
+ return tlv.encode(1 /* SupportedVideoRecordingConfigurationTypes.VIDEO_CODEC_CONFIGURATION */, videoStreamConfiguration).toString("base64");
421
409
  }
422
410
  _supportedAudioStreamConfiguration(audioOptions) {
423
411
  const audioCodecs = Array.isArray(audioOptions.codecs)
424
412
  ? audioOptions.codecs
425
413
  : [audioOptions.codecs];
426
414
  if (audioCodecs.length === 0) {
427
- throw new Error('CameraRecordingOptions.audio: At least one audio codec configuration must be specified!');
415
+ throw Error("CameraRecordingOptions.audio: At least one audio codec configuration must be specified!");
428
416
  }
429
- const codecConfigurations = audioCodecs.map((codec) => {
417
+ const codecConfigurations = audioCodecs.map(codec => {
430
418
  const providedSamplerates = Array.isArray(codec.samplerate)
431
419
  ? codec.samplerate
432
420
  : [codec.samplerate];
433
421
  if (providedSamplerates.length === 0) {
434
- throw new Error('CameraRecordingOptions.audio.codecs: Audio samplerate cannot be empty!');
422
+ throw new Error("CameraRecordingOptions.audio.codecs: Audio samplerate cannot be empty!");
435
423
  }
436
- const audioParameters = encode(1 /* AudioCodecParametersTypes.CHANNEL */, Math.max(1, codec.audioChannels || 1), 2 /* AudioCodecParametersTypes.BIT_RATE */, codec.bitrateMode || 0 /* AudioBitrate.VARIABLE */, 3 /* AudioCodecParametersTypes.SAMPLE_RATE */, providedSamplerates);
437
- return encode(1 /* AudioCodecConfigurationTypes.CODEC_TYPE */, codec.type, 2 /* AudioCodecConfigurationTypes.CODEC_PARAMETERS */, audioParameters);
424
+ const audioParameters = tlv.encode(1 /* AudioCodecParametersTypes.CHANNEL */, Math.max(1, codec.audioChannels || 1), 2 /* AudioCodecParametersTypes.BIT_RATE */, codec.bitrateMode || 0 /* AudioBitrate.VARIABLE */, 3 /* AudioCodecParametersTypes.SAMPLE_RATE */, providedSamplerates);
425
+ return tlv.encode(1 /* AudioCodecConfigurationTypes.CODEC_TYPE */, codec.type, 2 /* AudioCodecConfigurationTypes.CODEC_PARAMETERS */, audioParameters);
438
426
  });
439
- return encode(1 /* SupportedAudioRecordingConfigurationTypes.AUDIO_CODEC_CONFIGURATION */, codecConfigurations).toString('base64');
427
+ return tlv.encode(1 /* SupportedAudioRecordingConfigurationTypes.AUDIO_CODEC_CONFIGURATION */, codecConfigurations).toString("base64");
440
428
  }
441
- computeConfigurationHash(algorithm = 'sha256') {
442
- const configurationHash = createHash(algorithm);
429
+ computeConfigurationHash(algorithm = "sha256") {
430
+ const configurationHash = crypto_1.default.createHash(algorithm);
443
431
  configurationHash.update(this.supportedCameraRecordingConfiguration);
444
432
  configurationHash.update(this.supportedVideoRecordingConfiguration);
445
433
  configurationHash.update(this.supportedAudioRecordingConfiguration);
446
- return configurationHash.digest().toString('hex');
434
+ return configurationHash.digest().toString("hex");
447
435
  }
448
436
  /**
449
437
  * @private
@@ -451,15 +439,15 @@ export class RecordingManagement {
451
439
  serialize() {
452
440
  return {
453
441
  configurationHash: {
454
- algorithm: 'sha256',
455
- hash: this.computeConfigurationHash('sha256'),
442
+ algorithm: "sha256",
443
+ hash: this.computeConfigurationHash("sha256"),
456
444
  },
457
445
  selectedConfiguration: this.selectedConfiguration?.base64,
458
446
  recordingActive: this.recordingActive,
459
- recordingAudioActive: !!this.recordingManagementService.getCharacteristic(Characteristic.RecordingAudioActive).value,
460
- eventSnapshotsActive: !!this.operatingModeService.getCharacteristic(Characteristic.EventSnapshotsActive).value,
461
- homeKitCameraActive: !!this.operatingModeService.getCharacteristic(Characteristic.HomeKitCameraActive).value,
462
- periodicSnapshotsActive: !!this.operatingModeService.getCharacteristic(Characteristic.PeriodicSnapshotsActive).value,
447
+ recordingAudioActive: !!this.recordingManagementService.getCharacteristic(Characteristic_1.Characteristic.RecordingAudioActive).value,
448
+ eventSnapshotsActive: !!this.operatingModeService.getCharacteristic(Characteristic_1.Characteristic.EventSnapshotsActive).value,
449
+ homeKitCameraActive: !!this.operatingModeService.getCharacteristic(Characteristic_1.Characteristic.HomeKitCameraActive).value,
450
+ periodicSnapshotsActive: !!this.operatingModeService.getCharacteristic(Characteristic_1.Characteristic.PeriodicSnapshotsActive).value,
463
451
  };
464
452
  }
465
453
  /**
@@ -481,13 +469,13 @@ export class RecordingManagement {
481
469
  }
482
470
  }
483
471
  this.recordingActive = serialized.recordingActive;
484
- this.recordingManagementService.updateCharacteristic(Characteristic.Active, serialized.recordingActive);
485
- this.recordingManagementService.updateCharacteristic(Characteristic.RecordingAudioActive, serialized.recordingAudioActive);
486
- this.operatingModeService.updateCharacteristic(Characteristic.EventSnapshotsActive, serialized.eventSnapshotsActive);
487
- this.operatingModeService.updateCharacteristic(Characteristic.PeriodicSnapshotsActive, serialized.periodicSnapshotsActive);
488
- this.operatingModeService.updateCharacteristic(Characteristic.HomeKitCameraActive, serialized.homeKitCameraActive);
472
+ this.recordingManagementService.updateCharacteristic(Characteristic_1.Characteristic.Active, serialized.recordingActive);
473
+ this.recordingManagementService.updateCharacteristic(Characteristic_1.Characteristic.RecordingAudioActive, serialized.recordingAudioActive);
474
+ this.operatingModeService.updateCharacteristic(Characteristic_1.Characteristic.EventSnapshotsActive, serialized.eventSnapshotsActive);
475
+ this.operatingModeService.updateCharacteristic(Characteristic_1.Characteristic.PeriodicSnapshotsActive, serialized.periodicSnapshotsActive);
476
+ this.operatingModeService.updateCharacteristic(Characteristic_1.Characteristic.HomeKitCameraActive, serialized.homeKitCameraActive);
489
477
  for (const service of this.sensorServices) {
490
- service.setCharacteristic(Characteristic.StatusActive, serialized.homeKitCameraActive);
478
+ service.setCharacteristic(Characteristic_1.Characteristic.StatusActive, serialized.homeKitCameraActive);
491
479
  }
492
480
  try {
493
481
  if (this.selectedConfiguration) {
@@ -498,7 +486,7 @@ export class RecordingManagement {
498
486
  }
499
487
  }
500
488
  catch (error) {
501
- console.error(`Failed to properly initialize CameraRecordingDelegate from persistent storage: ${error.stack}`);
489
+ console.error("Failed to properly initialize CameraRecordingDelegate from persistent storage: " + error.stack);
502
490
  }
503
491
  if (changedState) {
504
492
  this.stateChangeDelegate?.();
@@ -515,13 +503,13 @@ export class RecordingManagement {
515
503
  }
516
504
  handleFactoryReset() {
517
505
  this.selectedConfiguration = undefined;
518
- this.recordingManagementService.updateCharacteristic(Characteristic.Active, false);
519
- this.recordingManagementService.updateCharacteristic(Characteristic.RecordingAudioActive, false);
520
- this.operatingModeService.updateCharacteristic(Characteristic.EventSnapshotsActive, true);
521
- this.operatingModeService.updateCharacteristic(Characteristic.PeriodicSnapshotsActive, true);
522
- this.operatingModeService.updateCharacteristic(Characteristic.HomeKitCameraActive, true);
506
+ this.recordingManagementService.updateCharacteristic(Characteristic_1.Characteristic.Active, false);
507
+ this.recordingManagementService.updateCharacteristic(Characteristic_1.Characteristic.RecordingAudioActive, false);
508
+ this.operatingModeService.updateCharacteristic(Characteristic_1.Characteristic.EventSnapshotsActive, true);
509
+ this.operatingModeService.updateCharacteristic(Characteristic_1.Characteristic.PeriodicSnapshotsActive, true);
510
+ this.operatingModeService.updateCharacteristic(Characteristic_1.Characteristic.HomeKitCameraActive, true);
523
511
  for (const service of this.sensorServices) {
524
- service.setCharacteristic(Characteristic.StatusActive, true);
512
+ service.setCharacteristic(Characteristic_1.Characteristic.StatusActive, true);
525
513
  }
526
514
  try {
527
515
  // notifying the delegate about the updated state
@@ -529,14 +517,14 @@ export class RecordingManagement {
529
517
  this.delegate.updateRecordingConfiguration(undefined);
530
518
  }
531
519
  catch (error) {
532
- console.error(`CameraRecordingDelegate failed to update state after handleFactoryReset: ${error.stack}`);
520
+ console.error("CameraRecordingDelegate failed to update state after handleFactoryReset: " + error.stack);
533
521
  }
534
522
  }
535
523
  }
524
+ exports.RecordingManagement = RecordingManagement;
536
525
  /**
537
526
  * @group Camera
538
527
  */
539
- // eslint-disable-next-line no-restricted-syntax
540
528
  var CameraRecordingStreamEvents;
541
529
  (function (CameraRecordingStreamEvents) {
542
530
  /**
@@ -552,8 +540,8 @@ var CameraRecordingStreamEvents;
552
540
  *
553
541
  * @group Camera
554
542
  */
555
- // eslint-disable-next-line ts/no-unsafe-declaration-merging
556
- class CameraRecordingStream extends EventEmitter {
543
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
544
+ class CameraRecordingStream extends events_1.EventEmitter {
557
545
  connection;
558
546
  delegate;
559
547
  hdsRequestId;
@@ -587,12 +575,13 @@ class CameraRecordingStream extends EventEmitter {
587
575
  this.connection.addProtocolHandler("dataSend" /* Protocols.DATA_SEND */, this);
588
576
  }
589
577
  startStreaming() {
578
+ // noinspection JSIgnoredPromiseFromCall
590
579
  this._startStreaming();
591
580
  }
592
581
  async _startStreaming() {
593
- debug('[HDS %s] Sending DATA_SEND OPEN response for streamId %d', this.connection.remoteAddress, this.streamId);
594
- this.connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, this.hdsRequestId, HDSStatus.SUCCESS, {
595
- status: HDSStatus.SUCCESS,
582
+ debug("[HDS %s] Sending DATA_SEND OPEN response for streamId %d", this.connection.remoteAddress, this.streamId);
583
+ this.connection.sendResponse("dataSend" /* Protocols.DATA_SEND */, "open" /* Topics.OPEN */, this.hdsRequestId, datastream_1.HDSStatus.SUCCESS, {
584
+ status: datastream_1.HDSStatus.SUCCESS,
596
585
  });
597
586
  // 256 KiB (1KiB to 900 KiB)
598
587
  const maxChunk = 0x40000;
@@ -619,24 +608,24 @@ class CameraRecordingStream extends EventEmitter {
619
608
  if (this.closed) {
620
609
  break;
621
610
  }
622
- const data = fragment.subarray(offset, offset + maxChunk);
611
+ const data = fragment.slice(offset, offset + maxChunk);
623
612
  offset += data.length;
624
613
  // see https://github.com/Supereg/secure-video-specification#42-binary-data
625
614
  const event = {
626
615
  streamId: this.streamId,
627
616
  packets: [{
628
- data,
617
+ data: data,
629
618
  metadata: {
630
619
  dataType: initialization ? "mediaInitialization" /* PacketDataType.MEDIA_INITIALIZATION */ : "mediaFragment" /* PacketDataType.MEDIA_FRAGMENT */,
631
- dataSequenceNumber,
632
- dataChunkSequenceNumber,
620
+ dataSequenceNumber: dataSequenceNumber,
621
+ dataChunkSequenceNumber: dataChunkSequenceNumber,
633
622
  isLastDataChunk: offset >= fragment.length,
634
623
  dataTotalSize: dataChunkSequenceNumber === 1 ? fragment.length : undefined,
635
624
  },
636
625
  }],
637
626
  endOfStream: offset >= fragment.length ? Boolean(packet.isLast).valueOf() : undefined,
638
627
  };
639
- debug('[HDS %s] Sending DATA_SEND DATA for stream %d with metadata: %o and length %d; EoS: %s', this.connection.remoteAddress, this.streamId, event.packets[0].metadata, data.length, event.endOfStream);
628
+ debug("[HDS %s] Sending DATA_SEND DATA for stream %d with metadata: %o and length %d; EoS: %s", this.connection.remoteAddress, this.streamId, event.packets[0].metadata, data.length, event.endOfStream);
640
629
  this.connection.sendEvent("dataSend" /* Protocols.DATA_SEND */, "data" /* Topics.DATA */, event);
641
630
  dataChunkSequenceNumber++;
642
631
  initialization = false;
@@ -649,8 +638,8 @@ class CameraRecordingStream extends EventEmitter {
649
638
  }
650
639
  if (!lastFragmentWasMarkedLast && !this.closed) {
651
640
  // Delegate violates the contract. Exited normally on a non-closed stream without properly setting `isLast`.
652
- console.warn(`[HDS ${this.connection.remoteAddress}] Delegate finished streaming for ${this.streamId} without setting RecordingPacket.isLast. `
653
- + 'Can\'t notify Controller about endOfStream!');
641
+ console.warn(`[HDS ${this.connection.remoteAddress}] Delegate finished streaming for ${this.streamId} without setting RecordingPacket.isLast. ` +
642
+ "Can't notify Controller about endOfStream!");
654
643
  }
655
644
  }
656
645
  catch (error) {
@@ -659,13 +648,13 @@ class CameraRecordingStream extends EventEmitter {
659
648
  }
660
649
  else {
661
650
  let closeReason = 5 /* HDSProtocolSpecificErrorReason.UNEXPECTED_FAILURE */;
662
- if (error instanceof HDSProtocolError) {
651
+ if (error instanceof datastream_1.HDSProtocolError) {
663
652
  closeReason = error.reason;
664
- debug('[HDS %s] Delegate signaled to close the recording stream %d.', this.connection.remoteAddress, this.streamId);
653
+ debug("[HDS %s] Delegate signaled to close the recording stream %d.", this.connection.remoteAddress, this.streamId);
665
654
  }
666
- else if (error instanceof HDSConnectionError && error.type === 2 /* HDSConnectionErrorType.CLOSED_SOCKET */) {
655
+ else if (error instanceof datastream_1.HDSConnectionError && error.type === 2 /* HDSConnectionErrorType.CLOSED_SOCKET */) {
667
656
  // we are probably on a shutdown or just late. Connection is dead. End the stream!
668
- debug('[HDS %s] Exited recording stream due to closed HDS socket: stream id %d.', this.connection.remoteAddress, this.streamId);
657
+ debug("[HDS %s] Exited recording stream due to closed HDS socket: stream id %d.", this.connection.remoteAddress, this.streamId);
669
658
  return; // execute finally and then exit (we want to skip the `sendEvent` below)
670
659
  }
671
660
  else {
@@ -688,17 +677,19 @@ class CameraRecordingStream extends EventEmitter {
688
677
  this.kickOffCloseTimeout();
689
678
  }
690
679
  }
691
- debug('[HDS %s] Finished DATA_SEND transmission for stream %d!', this.connection.remoteAddress, this.streamId);
680
+ debug("[HDS %s] Finished DATA_SEND transmission for stream %d!", this.connection.remoteAddress, this.streamId);
692
681
  }
682
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
693
683
  handleDataSendAck(message) {
694
684
  const streamId = message.streamId;
695
685
  const endOfStream = message.endOfStream;
696
686
  // The HomeKit Controller will send a DATA_SEND ACK if we set the `endOfStream` flag in the last packet
697
687
  // of our DATA_SEND DATA packet.
698
688
  // To my testing the session is then considered complete and the HomeKit controller will close the HDS Connection after 5 seconds.
699
- debug('[HDS %s] Received DATA_SEND ACK packet for streamId %s. Acknowledged %s.', this.connection.remoteAddress, streamId, endOfStream);
689
+ debug("[HDS %s] Received DATA_SEND ACK packet for streamId %s. Acknowledged %s.", this.connection.remoteAddress, streamId, endOfStream);
700
690
  this.handleClosed(() => this.delegate.acknowledgeStream?.(this.streamId));
701
691
  }
692
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
702
693
  handleDataSendClose(message) {
703
694
  // see https://github.com/Supereg/secure-video-specification#43-close
704
695
  const streamId = message.streamId;
@@ -706,13 +697,13 @@ class CameraRecordingStream extends EventEmitter {
706
697
  if (streamId !== this.streamId) {
707
698
  return;
708
699
  }
709
- debug('[HDS %s] Received DATA_SEND CLOSE for streamId %d with reason %s',
710
- // @ts-expect-error - using string to access enum value
711
- this.connection.remoteAddress, streamId, HDSProtocolSpecificErrorReasonConst[reason]);
700
+ debug("[HDS %s] Received DATA_SEND CLOSE for streamId %d with reason %s",
701
+ // @ts-expect-error: forceConsistentCasingInFileNames compiler option
702
+ this.connection.remoteAddress, streamId, datastream_1.HDSProtocolSpecificErrorReason[reason]);
712
703
  this.handleClosed(() => this.delegate.closeRecordingStream(streamId, reason));
713
704
  }
714
705
  handleDataStreamConnectionClosed() {
715
- debug('[HDS %s] The HDS connection of the stream %d closed.', this.connection.remoteAddress, this.streamId);
706
+ debug("[HDS %s] The HDS connection of the stream %d closed.", this.connection.remoteAddress, this.streamId);
716
707
  this.handleClosed(() => this.delegate.closeRecordingStream(this.streamId, undefined));
717
708
  }
718
709
  handleClosed(closure) {
@@ -727,8 +718,8 @@ class CameraRecordingStream extends EventEmitter {
727
718
  // when this variable is defined, the generator hasn't returned yet.
728
719
  // we start a timeout to uncover potential programming mistakes where we await forever and can't free resources.
729
720
  this.generatorTimeout = setTimeout(() => {
730
- console.error('[HDS %s] Recording download stream %d is still awaiting generator although stream was closed 10s ago! '
731
- + 'This is a programming mistake by the camera implementation which prevents freeing up resources.', this.connection.remoteAddress, this.streamId);
721
+ console.error("[HDS %s] Recording download stream %d is still awaiting generator although stream was closed 10s ago! " +
722
+ "This is a programming mistake by the camera implementation which prevents freeing up resources.", this.connection.remoteAddress, this.streamId);
732
723
  }, 10000);
733
724
  }
734
725
  try {
@@ -747,14 +738,14 @@ class CameraRecordingStream extends EventEmitter {
747
738
  if (this.closed) {
748
739
  return;
749
740
  }
750
- debug('[HDS %s] Recording stream %d was closed manually with reason %s.',
751
- // @ts-expect-error - forceConsistentCasingInFileNames compiler option
752
- this.connection.remoteAddress, this.streamId, reason ? HDSProtocolSpecificErrorReason[reason] : 'CLOSED');
741
+ debug("[HDS %s] Recording stream %d was closed manually with reason %s.",
742
+ // @ts-expect-error: forceConsistentCasingInFileNames compiler option
743
+ this.connection.remoteAddress, this.streamId, reason ? datastream_1.HDSProtocolSpecificErrorReason[reason] : "CLOSED");
753
744
  // the `isConsideredClosed` check just ensures that the won't ever throw here and that `handledClosed` is always executed.
754
745
  if (!this.connection.isConsideredClosed()) {
755
746
  this.connection.sendEvent("dataSend" /* Protocols.DATA_SEND */, "close" /* Topics.CLOSE */, {
756
747
  streamId: this.streamId,
757
- reason,
748
+ reason: reason,
758
749
  });
759
750
  }
760
751
  this.handleClosed(() => this.delegate.closeRecordingStream(this.streamId, reason));
@@ -767,7 +758,7 @@ class CameraRecordingStream extends EventEmitter {
767
758
  if (this.closed) {
768
759
  return;
769
760
  }
770
- debug('[HDS %s] Recording stream %d took longer than expected to fully close. Force closing now!', this.connection.remoteAddress, this.streamId);
761
+ debug("[HDS %s] Recording stream %d took longer than expected to fully close. Force closing now!", this.connection.remoteAddress, this.streamId);
771
762
  this.close(3 /* HDSProtocolSpecificErrorReason.CANCELLED */);
772
763
  }, 12000);
773
764
  }