hap-nodejs 1.1.0 → 1.1.1-alpha.1

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 (233) hide show
  1. package/@types/bonjour-hap.d.ts +50 -53
  2. package/README.md +16 -19
  3. package/dist/accessories/AirConditioner_accessory.js +28 -30
  4. package/dist/accessories/AirConditioner_accessory.js.map +1 -1
  5. package/dist/accessories/AppleTVRemote_accessory.js +69 -81
  6. package/dist/accessories/AppleTVRemote_accessory.js.map +1 -1
  7. package/dist/accessories/Camera_accessory.js +159 -144
  8. package/dist/accessories/Camera_accessory.js.map +1 -1
  9. package/dist/accessories/Fan_accessory.js +18 -22
  10. package/dist/accessories/Fan_accessory.js.map +1 -1
  11. package/dist/accessories/GarageDoorOpener_accessory.js +33 -35
  12. package/dist/accessories/GarageDoorOpener_accessory.js.map +1 -1
  13. package/dist/accessories/Light-AdaptiveLighting_accessory.js +42 -44
  14. package/dist/accessories/Light-AdaptiveLighting_accessory.js.map +1 -1
  15. package/dist/accessories/Light_accessory.js +32 -34
  16. package/dist/accessories/Light_accessory.js.map +1 -1
  17. package/dist/accessories/Lock_accessory.js +25 -26
  18. package/dist/accessories/Lock_accessory.js.map +1 -1
  19. package/dist/accessories/MotionSensor_accessory.js +13 -16
  20. package/dist/accessories/MotionSensor_accessory.js.map +1 -1
  21. package/dist/accessories/Outlet_accessory.js +20 -22
  22. package/dist/accessories/Outlet_accessory.js.map +1 -1
  23. package/dist/accessories/SmartSpeaker_accessory.js +18 -20
  24. package/dist/accessories/SmartSpeaker_accessory.js.map +1 -1
  25. package/dist/accessories/Sprinkler_accessory.js +34 -37
  26. package/dist/accessories/Sprinkler_accessory.js.map +1 -1
  27. package/dist/accessories/TV_accessory.js +43 -45
  28. package/dist/accessories/TV_accessory.js.map +1 -1
  29. package/dist/accessories/TemperatureSensor_accessory.js +12 -15
  30. package/dist/accessories/TemperatureSensor_accessory.js.map +1 -1
  31. package/dist/accessories/Wi-FiRouter_accessory.d.ts +1 -1
  32. package/dist/accessories/Wi-FiRouter_accessory.d.ts.map +1 -1
  33. package/dist/accessories/Wi-FiRouter_accessory.js +9 -12
  34. package/dist/accessories/Wi-FiRouter_accessory.js.map +1 -1
  35. package/dist/accessories/Wi-FiSatellite_accessory.d.ts +1 -1
  36. package/dist/accessories/Wi-FiSatellite_accessory.d.ts.map +1 -1
  37. package/dist/accessories/Wi-FiSatellite_accessory.js +11 -14
  38. package/dist/accessories/Wi-FiSatellite_accessory.js.map +1 -1
  39. package/dist/accessories/gstreamer-audioProducer.d.ts +3 -3
  40. package/dist/accessories/gstreamer-audioProducer.d.ts.map +1 -1
  41. package/dist/accessories/gstreamer-audioProducer.js +45 -46
  42. package/dist/accessories/gstreamer-audioProducer.js.map +1 -1
  43. package/dist/accessories/types.d.ts +63 -63
  44. package/dist/accessories/types.d.ts.map +1 -1
  45. package/dist/accessories/types.js +83 -87
  46. package/dist/accessories/types.js.map +1 -1
  47. package/dist/index.d.ts +26 -28
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +40 -34
  50. package/dist/index.js.map +1 -1
  51. package/dist/internal-types.d.ts +1 -1
  52. package/dist/internal-types.d.ts.map +1 -1
  53. package/dist/internal-types.js +19 -21
  54. package/dist/internal-types.js.map +1 -1
  55. package/dist/lib/Accessory.d.ts +39 -38
  56. package/dist/lib/Accessory.d.ts.map +1 -1
  57. package/dist/lib/Accessory.js +313 -296
  58. package/dist/lib/Accessory.js.map +1 -1
  59. package/dist/lib/Advertiser.d.ts +16 -13
  60. package/dist/lib/Advertiser.d.ts.map +1 -1
  61. package/dist/lib/Advertiser.js +147 -153
  62. package/dist/lib/Advertiser.js.map +1 -1
  63. package/dist/lib/Bridge.d.ts +1 -1
  64. package/dist/lib/Bridge.d.ts.map +1 -1
  65. package/dist/lib/Bridge.js +2 -6
  66. package/dist/lib/Bridge.js.map +1 -1
  67. package/dist/lib/Characteristic.d.ts +48 -69
  68. package/dist/lib/Characteristic.d.ts.map +1 -1
  69. package/dist/lib/Characteristic.js +212 -236
  70. package/dist/lib/Characteristic.js.map +1 -1
  71. package/dist/lib/HAPServer.d.ts +31 -30
  72. package/dist/lib/HAPServer.d.ts.map +1 -1
  73. package/dist/lib/HAPServer.js +220 -229
  74. package/dist/lib/HAPServer.js.map +1 -1
  75. package/dist/lib/Service.d.ts +22 -30
  76. package/dist/lib/Service.d.ts.map +1 -1
  77. package/dist/lib/Service.js +63 -75
  78. package/dist/lib/Service.js.map +1 -1
  79. package/dist/lib/camera/RTPProxy.d.ts +2 -1
  80. package/dist/lib/camera/RTPProxy.d.ts.map +1 -1
  81. package/dist/lib/camera/RTPProxy.js +28 -44
  82. package/dist/lib/camera/RTPProxy.js.map +1 -1
  83. package/dist/lib/camera/RTPStreamManagement.d.ts +34 -33
  84. package/dist/lib/camera/RTPStreamManagement.d.ts.map +1 -1
  85. package/dist/lib/camera/RTPStreamManagement.js +181 -149
  86. package/dist/lib/camera/RTPStreamManagement.js.map +1 -1
  87. package/dist/lib/camera/RecordingManagement.d.ts +19 -17
  88. package/dist/lib/camera/RecordingManagement.d.ts.map +1 -1
  89. package/dist/lib/camera/RecordingManagement.js +160 -151
  90. package/dist/lib/camera/RecordingManagement.js.map +1 -1
  91. package/dist/lib/camera/index.d.ts +3 -3
  92. package/dist/lib/camera/index.d.ts.map +1 -1
  93. package/dist/lib/camera/index.js +3 -6
  94. package/dist/lib/camera/index.js.map +1 -1
  95. package/dist/lib/controller/AdaptiveLightingController.d.ts +33 -33
  96. package/dist/lib/controller/AdaptiveLightingController.d.ts.map +1 -1
  97. package/dist/lib/controller/AdaptiveLightingController.js +152 -144
  98. package/dist/lib/controller/AdaptiveLightingController.js.map +1 -1
  99. package/dist/lib/controller/CameraController.d.ts +22 -20
  100. package/dist/lib/controller/CameraController.d.ts.map +1 -1
  101. package/dist/lib/controller/CameraController.js +74 -78
  102. package/dist/lib/controller/CameraController.js.map +1 -1
  103. package/dist/lib/controller/Controller.d.ts +4 -4
  104. package/dist/lib/controller/Controller.d.ts.map +1 -1
  105. package/dist/lib/controller/Controller.js +5 -8
  106. package/dist/lib/controller/Controller.js.map +1 -1
  107. package/dist/lib/controller/DoorbellController.d.ts +5 -4
  108. package/dist/lib/controller/DoorbellController.d.ts.map +1 -1
  109. package/dist/lib/controller/DoorbellController.js +9 -13
  110. package/dist/lib/controller/DoorbellController.js.map +1 -1
  111. package/dist/lib/controller/RemoteController.d.ts +39 -37
  112. package/dist/lib/controller/RemoteController.d.ts.map +1 -1
  113. package/dist/lib/controller/RemoteController.js +208 -197
  114. package/dist/lib/controller/RemoteController.js.map +1 -1
  115. package/dist/lib/controller/index.d.ts +5 -5
  116. package/dist/lib/controller/index.d.ts.map +1 -1
  117. package/dist/lib/controller/index.js +5 -8
  118. package/dist/lib/controller/index.js.map +1 -1
  119. package/dist/lib/datastream/DataStreamManagement.d.ts +2 -2
  120. package/dist/lib/datastream/DataStreamManagement.d.ts.map +1 -1
  121. package/dist/lib/datastream/DataStreamManagement.js +39 -39
  122. package/dist/lib/datastream/DataStreamManagement.js.map +1 -1
  123. package/dist/lib/datastream/DataStreamParser.d.ts +1 -0
  124. package/dist/lib/datastream/DataStreamParser.d.ts.map +1 -1
  125. package/dist/lib/datastream/DataStreamParser.js +57 -77
  126. package/dist/lib/datastream/DataStreamParser.js.map +1 -1
  127. package/dist/lib/datastream/DataStreamServer.d.ts +23 -22
  128. package/dist/lib/datastream/DataStreamServer.d.ts.map +1 -1
  129. package/dist/lib/datastream/DataStreamServer.js +154 -164
  130. package/dist/lib/datastream/DataStreamServer.js.map +1 -1
  131. package/dist/lib/datastream/index.d.ts +3 -3
  132. package/dist/lib/datastream/index.d.ts.map +1 -1
  133. package/dist/lib/datastream/index.js +3 -6
  134. package/dist/lib/datastream/index.js.map +1 -1
  135. package/dist/lib/definitions/CharacteristicDefinitions.d.ts +15 -60
  136. package/dist/lib/definitions/CharacteristicDefinitions.d.ts.map +1 -1
  137. package/dist/lib/definitions/CharacteristicDefinitions.js +978 -1317
  138. package/dist/lib/definitions/CharacteristicDefinitions.js.map +1 -1
  139. package/dist/lib/definitions/ServiceDefinitions.d.ts +1 -15
  140. package/dist/lib/definitions/ServiceDefinitions.d.ts.map +1 -1
  141. package/dist/lib/definitions/ServiceDefinitions.js +621 -726
  142. package/dist/lib/definitions/ServiceDefinitions.js.map +1 -1
  143. package/dist/lib/definitions/generate-definitions.d.ts +3 -3
  144. package/dist/lib/definitions/generate-definitions.d.ts.map +1 -1
  145. package/dist/lib/definitions/generate-definitions.js +246 -251
  146. package/dist/lib/definitions/generate-definitions.js.map +1 -1
  147. package/dist/lib/definitions/generator-configuration.d.ts +1 -1
  148. package/dist/lib/definitions/generator-configuration.d.ts.map +1 -1
  149. package/dist/lib/definitions/generator-configuration.js +160 -354
  150. package/dist/lib/definitions/generator-configuration.js.map +1 -1
  151. package/dist/lib/definitions/index.d.ts +2 -2
  152. package/dist/lib/definitions/index.d.ts.map +1 -1
  153. package/dist/lib/definitions/index.js +2 -5
  154. package/dist/lib/definitions/index.js.map +1 -1
  155. package/dist/lib/model/AccessoryInfo.d.ts +4 -3
  156. package/dist/lib/model/AccessoryInfo.d.ts.map +1 -1
  157. package/dist/lib/model/AccessoryInfo.js +50 -53
  158. package/dist/lib/model/AccessoryInfo.js.map +1 -1
  159. package/dist/lib/model/ControllerStorage.d.ts +3 -3
  160. package/dist/lib/model/ControllerStorage.d.ts.map +1 -1
  161. package/dist/lib/model/ControllerStorage.js +18 -23
  162. package/dist/lib/model/ControllerStorage.js.map +1 -1
  163. package/dist/lib/model/HAPStorage.d.ts +2 -2
  164. package/dist/lib/model/HAPStorage.d.ts.map +1 -1
  165. package/dist/lib/model/HAPStorage.js +4 -11
  166. package/dist/lib/model/HAPStorage.js.map +1 -1
  167. package/dist/lib/model/IdentifierCache.d.ts +1 -1
  168. package/dist/lib/model/IdentifierCache.d.ts.map +1 -1
  169. package/dist/lib/model/IdentifierCache.js +19 -27
  170. package/dist/lib/model/IdentifierCache.js.map +1 -1
  171. package/dist/lib/tv/AccessControlManagement.d.ts +9 -9
  172. package/dist/lib/tv/AccessControlManagement.d.ts.map +1 -1
  173. package/dist/lib/tv/AccessControlManagement.js +27 -29
  174. package/dist/lib/tv/AccessControlManagement.js.map +1 -1
  175. package/dist/lib/util/checkName.d.ts +2 -2
  176. package/dist/lib/util/checkName.d.ts.map +1 -1
  177. package/dist/lib/util/checkName.js +6 -9
  178. package/dist/lib/util/checkName.js.map +1 -1
  179. package/dist/lib/util/clone.d.ts.map +1 -1
  180. package/dist/lib/util/clone.js +1 -5
  181. package/dist/lib/util/clone.js.map +1 -1
  182. package/dist/lib/util/color-utils.d.ts +1 -1
  183. package/dist/lib/util/color-utils.d.ts.map +1 -1
  184. package/dist/lib/util/color-utils.js +4 -9
  185. package/dist/lib/util/color-utils.js.map +1 -1
  186. package/dist/lib/util/eventedhttp.d.ts +23 -22
  187. package/dist/lib/util/eventedhttp.d.ts.map +1 -1
  188. package/dist/lib/util/eventedhttp.js +109 -116
  189. package/dist/lib/util/eventedhttp.js.map +1 -1
  190. package/dist/lib/util/hapCrypto.d.ts +3 -2
  191. package/dist/lib/util/hapCrypto.d.ts.map +1 -1
  192. package/dist/lib/util/hapCrypto.js +31 -40
  193. package/dist/lib/util/hapCrypto.js.map +1 -1
  194. package/dist/lib/util/hapStatusError.d.ts +1 -1
  195. package/dist/lib/util/hapStatusError.d.ts.map +1 -1
  196. package/dist/lib/util/hapStatusError.js +4 -8
  197. package/dist/lib/util/hapStatusError.js.map +1 -1
  198. package/dist/lib/util/net-utils.d.ts +1 -1
  199. package/dist/lib/util/net-utils.js +17 -23
  200. package/dist/lib/util/net-utils.js.map +1 -1
  201. package/dist/lib/util/once.d.ts.map +1 -1
  202. package/dist/lib/util/once.js +2 -6
  203. package/dist/lib/util/once.js.map +1 -1
  204. package/dist/lib/util/promise-utils.d.ts +1 -1
  205. package/dist/lib/util/promise-utils.d.ts.map +1 -1
  206. package/dist/lib/util/promise-utils.js +3 -10
  207. package/dist/lib/util/promise-utils.js.map +1 -1
  208. package/dist/lib/util/request-util.d.ts +3 -2
  209. package/dist/lib/util/request-util.d.ts.map +1 -1
  210. package/dist/lib/util/request-util.js +11 -19
  211. package/dist/lib/util/request-util.js.map +1 -1
  212. package/dist/lib/util/time.d.ts +1 -0
  213. package/dist/lib/util/time.d.ts.map +1 -1
  214. package/dist/lib/util/time.js +6 -11
  215. package/dist/lib/util/time.js.map +1 -1
  216. package/dist/lib/util/tlv.d.ts +1 -0
  217. package/dist/lib/util/tlv.d.ts.map +1 -1
  218. package/dist/lib/util/tlv.js +28 -43
  219. package/dist/lib/util/tlv.js.map +1 -1
  220. package/dist/lib/util/uuid.d.ts +1 -0
  221. package/dist/lib/util/uuid.d.ts.map +1 -1
  222. package/dist/lib/util/uuid.js +26 -38
  223. package/dist/lib/util/uuid.js.map +1 -1
  224. package/dist/types.d.ts +24 -24
  225. package/dist/types.d.ts.map +1 -1
  226. package/dist/types.js +3 -5
  227. package/dist/types.js.map +1 -1
  228. package/package.json +49 -47
  229. package/@types/simple-plist.d.ts +0 -4
  230. package/dist/lib/gen/HomeKit.d.ts +0 -7
  231. package/dist/lib/gen/HomeKit.d.ts.map +0 -1
  232. package/dist/lib/gen/HomeKit.js +0 -8
  233. package/dist/lib/gen/HomeKit.js.map +0 -1
@@ -1,66 +1,63 @@
1
- declare module "bonjour-hap" {
2
-
1
+ declare module 'bonjour-hap' {
3
2
  export const enum Protocols {
4
- TCP = "tcp",
5
- UDP = "udp",
3
+ TCP = 'tcp',
4
+ UDP = 'udp',
6
5
  }
7
6
 
8
- export type Nullable<T> = T | null;
9
- export type TxtRecord = Record<string, string>;
7
+ export type Nullable<T> = T | null
8
+ export type TxtRecord = Record<string, string>
10
9
 
11
10
  export class BonjourHAPService {
12
- name: string;
13
- type: string;
14
- subtypes: Nullable<string[]>;
15
- protocol: Protocols;
16
- host: string;
17
- port: number;
18
- fqdn: string;
19
- txt: Nullable<Record<string, string>>;
20
- published: boolean;
21
-
22
- start(): void;
23
- stop(callback?: () => void): void;
24
- destroy(): void;
25
- updateTxt(txt: TxtRecord, silent?: boolean): void;
11
+ name: string
12
+ type: string
13
+ subtypes: Nullable<string[]>
14
+ protocol: Protocols
15
+ host: string
16
+ port: number
17
+ fqdn: string
18
+ txt: Nullable<Record<string, string>>
19
+ published: boolean
20
+
21
+ start(): void
22
+ stop(callback?: () => void): void
23
+ destroy(): void
24
+ updateTxt(txt: TxtRecord, silent?: boolean): void
26
25
  }
27
26
 
28
- export type PublishOptions = {
29
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- category?: any,
31
- host?: string;
32
- name?: string;
33
- pincode?: string;
34
- port: number;
35
- protocol?: Protocols;
36
- subtypes?: string[];
37
- txt?: Record<string, string>;
38
- type?: string;
39
- username?: string;
40
-
41
- addUnsafeServiceEnumerationRecord?: boolean,
42
-
43
- restrictedAddresses?: string[];
44
- disabledIpv6?: boolean;
45
- };
27
+ export interface PublishOptions {
28
+ category?: any
29
+ host?: string
30
+ name?: string
31
+ pincode?: string
32
+ port: number
33
+ protocol?: Protocols
34
+ subtypes?: string[]
35
+ txt?: Record<string, string>
36
+ type?: string
37
+ username?: string
38
+
39
+ addUnsafeServiceEnumerationRecord?: boolean
40
+
41
+ restrictedAddresses?: string[]
42
+ disabledIpv6?: boolean
43
+ }
46
44
 
47
45
  export class BonjourHAP {
48
- publish(options: PublishOptions): BonjourHAPService;
49
- unpublishAll(callback: () => void): void;
50
- destroy(): void;
46
+ publish(options: PublishOptions): BonjourHAPService
47
+ unpublishAll(callback: () => void): void
48
+ destroy(): void
51
49
  }
52
50
 
51
+ export interface MulticastOptions {
52
+ multicast?: boolean
53
+ interface?: string
54
+ port?: number
55
+ ip?: string
56
+ ttl?: number
57
+ loopback?: boolean
58
+ reuseAddr?: boolean
59
+ }
60
+ function createWithOptions(options?: MulticastOptions): BonjourHAP
53
61
 
54
- export type MulticastOptions = {
55
- multicast?: boolean;
56
- interface?: string;
57
- port?: number;
58
- ip?: string;
59
- ttl?: number;
60
- loopback?: boolean;
61
- reuseAddr?: boolean;
62
- };
63
- function createWithOptions(options?: MulticastOptions): BonjourHAP;
64
-
65
- export default createWithOptions;
62
+ export default createWithOptions
66
63
  }
package/README.md CHANGED
@@ -2,15 +2,15 @@
2
2
  <a href="https://homebridge.io"><img src="https://raw.githubusercontent.com/homebridge/branding/latest/logos/homebridge-color-round-stylized.png" height="140"></a>
3
3
  </p>
4
4
  <span align="center">
5
-
5
+
6
6
  # HAP-NodeJS
7
-
8
- <a href="https://www.npmjs.com/package/hap-nodejs"><img title="npm version" src="https://badgen.net/npm/v/hap-nodejs" ></a>
9
- <a href="https://www.npmjs.com/package/hap-nodejs/v/beta"><img title="npm version beta" src="https://badgen.net/npm/v/hap-nodejs/beta" ></a>
10
- <a href="https://www.npmjs.com/package/hap-nodejs/v/alpha"><img title="npm version apha" src="https://badgen.net/npm/v/hap-nodejs/alpha" ></a><br>
11
- <a href="https://www.npmjs.com/package/hap-nodejs"><img title="npm downloads" src="https://badgen.net/npm/dt/hap-nodejs" ></a>
12
- <a href="https://github.com/homebridge/HAP-NodeJS/actions/workflows/build.yml"><img title="Node Build" src="https://github.com/homebridge/HAP-NodeJS/actions/workflows/build.yml/badge.svg" ></a>
13
- <a href='https://coveralls.io/github/homebridge/HAP-NodeJS'><img src='https://coveralls.io/repos/github/homebridge/HAP-NodeJS/badge.svg' alt='Coverage Status' /></a>
7
+
8
+ <a href="https://www.npmjs.com/package/hap-nodejs"><img title="npm version" src="https://badgen.net/npm/v/hap-nodejs" ></a>
9
+ <a href="https://www.npmjs.com/package/hap-nodejs/v/beta"><img title="npm version beta" src="https://badgen.net/npm/v/hap-nodejs/beta" ></a>
10
+ <a href="https://www.npmjs.com/package/hap-nodejs/v/alpha"><img title="npm version apha" src="https://badgen.net/npm/v/hap-nodejs/alpha" ></a><br>
11
+ <a href="https://www.npmjs.com/package/hap-nodejs"><img title="npm downloads" src="https://badgen.net/npm/dt/hap-nodejs" ></a>
12
+ <a href="https://github.com/homebridge/HAP-NodeJS/actions/workflows/build.yml"><img title="Node Build" src="https://github.com/homebridge/HAP-NodeJS/actions/workflows/build.yml/badge.svg" ></a>
13
+ <a href='https://coveralls.io/github/homebridge/HAP-NodeJS'><img src='https://coveralls.io/repos/github/homebridge/HAP-NodeJS/badge.svg' alt='Coverage Status' /></a>
14
14
 
15
15
  </span>
16
16
 
@@ -18,9 +18,9 @@ HAP-NodeJS is an implementation of the HomeKit Accessory Server as specified in
18
18
  which is defined by Apple as part of the HomeKit Framework.
19
19
 
20
20
  HAP-NodeJS is intended to be used as a library to easily create your own HomeKit Accessory on a Raspberry Pi,
21
- Intel Edison, or any other platform that can run Node.js :)
21
+ Intel Edison, or any other platform that can run Node.js :)
22
22
  If you are searching for a pluggable HomeKit bridge with over a thousand community driven plugins to bring HomeKit
23
- support to devices which do not support HomeKit out of the box, you may want to look at the
23
+ support to devices which do not support HomeKit out of the box, you may want to look at the
24
24
  [homebridge][project-homebridge] project (which also uses HAP-NodeJS internally).
25
25
 
26
26
  The implementation tries to follow the HAP specification as close as it can, but may differ in some cases.
@@ -28,7 +28,7 @@ HAP-NodeJS is not an Apple certified HAP implementation, as this is only availab
28
28
 
29
29
  ## Getting started
30
30
 
31
- You may start by having a look at our [Wiki][wiki], especially have a look at the
31
+ You may start by having a look at our [Wiki][wiki], especially have a look at the
32
32
  [Important HomeKit Terminology][hk-terminology] used in this project.
33
33
 
34
34
  There is also a pretty detailed guide on [how to start developing with HAP-NodeJS][dev-guide].
@@ -43,11 +43,11 @@ If you wish to do a contribution please read through our [CONTRIBUTING][contribu
43
43
 
44
44
  ## Projects based on HAP-NodeJS
45
45
 
46
- - [Homebridge][project-homebridge] - HomeKit support for the impatient - Pluggable HomeKit Bridge.
47
- Plugins available for e.g. Pilight, Telldus TDtool, Savant, Netatmo, Open Pixel Control, HomeWizard, Fritz!Box,
48
- LG WebOS TV, Home Assistant, HomeMatic and many more.
49
- - [OpenHAB-HomeKit-Bridge][project-openhab-homekit-bridge] - OpenHAB HomeKit Bridge bridges openHAB items to
50
- Apples HomeKit Accessory Protocol.
46
+ - [Homebridge][project-homebridge] - HomeKit support for the impatient - Pluggable HomeKit Bridge.
47
+ Plugins available for e.g. Pilight, Telldus TDtool, Savant, Netatmo, Open Pixel Control, HomeWizard, Fritz!Box,
48
+ LG WebOS TV, Home Assistant, HomeMatic and many more.
49
+ - [OpenHAB-HomeKit-Bridge][project-openhab-homekit-bridge] - OpenHAB HomeKit Bridge bridges openHAB items to
50
+ Apples HomeKit Accessory Protocol.
51
51
  - [homekit2mqtt][project-homekit2mqtt] - HomeKit to MQTT bridge.
52
52
  - [pimatic-hap][project-pimatic-hap] - Pimatic homekit bridge.
53
53
  - [node-red-contrib-homekit][project-node-red-contrib-homekit] - Node-RED nodes to simulate Apple HomeKit devices.
@@ -71,10 +71,8 @@ If you are interested in HAP over BTLE, you might want to check [this][link-hap-
71
71
  [dev-guide]: https://github.com/homebridge/HAP-NodeJS/wiki/Using-HAP-NodeJS-as-a-library
72
72
  [faq-debug]: https://github.com/homebridge/HAP-NodeJS/wiki/FAQ#debug-mode
73
73
  [contributing]: https://github.com/homebridge/HAP-NodeJS/blob/master/CONTRIBUTING.md
74
-
75
74
  [examples-repo]: https://github.com/homebridge/HAP-NodeJS-examples
76
75
  [example-accessories]: https://github.com/homebridge/HAP-NodeJS/tree/master/src/accessories
77
-
78
76
  [project-homebridge]: https://github.com/homebridge/homebridge
79
77
  [project-openhab-homekit-bridge]: https://github.com/htreu/OpenHAB-HomeKit-Bridge
80
78
  [project-homekit2mqtt]: https://github.com/hobbyquaker/homekit2mqtt
@@ -82,7 +80,6 @@ If you are interested in HAP over BTLE, you might want to check [this][link-hap-
82
80
  [project-node-red-contrib-homekit]: https://github.com/NRCHKB/node-red-contrib-homekit-bridged
83
81
  [project-ioBroker-homekit]: https://github.com/ioBroker/ioBroker.homekit2
84
82
  [project-accessoryserver]: https://github.com/Appyx/AccessoryServer
85
-
86
83
  [link-alex-skalozub]: https://twitter.com/pieceofsummer
87
84
  [link-homekit-research]: https://gist.github.com/pieceofsummer/13272bf76ac1d6b58a30
88
85
  [link-apple-dmca]: https://github.com/github/dmca/blob/master/2014/2014-11-04-Apple.md
@@ -1,11 +1,9 @@
1
- "use strict";
1
+ /* eslint-disable no-console */
2
2
  // In This example we create an air conditioner Accessory that Has a Thermostat linked to a Fan Service.
3
3
  // For example, I've also put a Light Service that should be hidden to represent a light in the closet that is part of the AC.
4
4
  // It is to show how to hide services.
5
5
  // The linking and Hiding does NOT appear to be reflected in Home
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- // here's a fake hardware device that we'll expose to HomeKit
8
- const __1 = require("..");
6
+ import { Accessory, Characteristic, Service, uuid, } from '../index.js';
9
7
  const ACTest_data = {
10
8
  fanPowerOn: false,
11
9
  rSpeed: 100,
@@ -17,33 +15,33 @@ const ACTest_data = {
17
15
  LightOn: false,
18
16
  };
19
17
  // This is the Accessory that we'll return to HAP-NodeJS that represents our fake fan.
20
- const ACTest = exports.accessory = new __1.Accessory("Air Conditioner", __1.uuid.generate("hap-nodejs:accessories:airconditioner"));
18
+ const ACTest = exports.accessory = new Accessory('Air Conditioner', uuid.generate('hap-nodejs:accessories:airconditioner'));
21
19
  // Add properties for publishing (in case we're using Core.js and not BridgedCore.js)
22
20
  // @ts-expect-error: Core/BridgeCore API
23
- ACTest.username = "1A:2B:3C:4D:5E:FF";
21
+ ACTest.username = '1A:2B:3C:4D:5E:FF';
24
22
  // @ts-expect-error: Core/BridgeCore API
25
- ACTest.pincode = "031-45-154";
23
+ ACTest.pincode = '031-45-154';
26
24
  ACTest.category = 9 /* Categories.THERMOSTAT */;
27
25
  // set some basic properties (these values are arbitrary and setting them is optional)
28
26
  ACTest
29
- .getService(__1.Service.AccessoryInformation)
30
- .setCharacteristic(__1.Characteristic.Manufacturer, "Sample Company");
27
+ .getService(Service.AccessoryInformation)
28
+ .setCharacteristic(Characteristic.Manufacturer, 'Sample Company');
31
29
  // listen for the "identify" event for this Accessory
32
30
  ACTest.on("identify" /* AccessoryEventTypes.IDENTIFY */, (paired, callback) => {
33
- console.log("Fan Identified!");
31
+ console.log('Fan Identified!');
34
32
  callback(); // success
35
33
  });
36
34
  // Add the actual Fan Service and listen for change events from iOS.
37
- const FanService = ACTest.addService(__1.Service.Fan, "Blower"); // services exposed to the user should have "names" like "Fake Light" for us
38
- FanService.getCharacteristic(__1.Characteristic.On)
35
+ const FanService = ACTest.addService(Service.Fan, 'Blower'); // services exposed to the user should have "names" like "Fake Light" for us
36
+ FanService.getCharacteristic(Characteristic.On)
39
37
  .on("set" /* CharacteristicEventTypes.SET */, (value, callback) => {
40
- console.log("Fan Power Changed To " + value);
38
+ console.log(`Fan Power Changed To ${value}`);
41
39
  ACTest_data.fanPowerOn = value;
42
40
  callback(); // Our fake Fan is synchronous - this value has been successfully set
43
41
  });
44
42
  // We want to intercept requests for our current power state so we can query the hardware itself instead of
45
43
  // allowing HAP-NodeJS to return the cached Characteristic.value.
46
- FanService.getCharacteristic(__1.Characteristic.On)
44
+ FanService.getCharacteristic(Characteristic.On)
47
45
  .on("get" /* CharacteristicEventTypes.GET */, (callback) => {
48
46
  // this event is emitted when you ask Siri directly whether your fan is on or not. you might query
49
47
  // the fan hardware itself to find this out, then call the callback. But if you take longer than a
@@ -57,71 +55,71 @@ FanService.getCharacteristic(__1.Characteristic.On)
57
55
  }
58
56
  });
59
57
  // also add an "optional" Characteristic for speed
60
- FanService.addCharacteristic(__1.Characteristic.RotationSpeed)
58
+ FanService.addCharacteristic(Characteristic.RotationSpeed)
61
59
  .on("get" /* CharacteristicEventTypes.GET */, (callback) => {
62
60
  callback(null, ACTest_data.rSpeed);
63
61
  })
64
62
  .on("set" /* CharacteristicEventTypes.SET */, (value, callback) => {
65
- console.log("Setting fan rSpeed to %s", value);
63
+ console.log('Setting fan rSpeed to %s', value);
66
64
  ACTest_data.rSpeed = value;
67
65
  callback();
68
66
  });
69
- const ThermostatService = ACTest.addService(__1.Service.Thermostat, "Thermostat");
67
+ const ThermostatService = ACTest.addService(Service.Thermostat, 'Thermostat');
70
68
  ThermostatService.addLinkedService(FanService);
71
69
  ThermostatService.setPrimaryService();
72
- ThermostatService.getCharacteristic(__1.Characteristic.CurrentHeatingCoolingState)
70
+ ThermostatService.getCharacteristic(Characteristic.CurrentHeatingCoolingState)
73
71
  .on("get" /* CharacteristicEventTypes.GET */, (callback) => {
74
72
  callback(null, ACTest_data.CurrentHeatingCoolingState);
75
73
  })
76
74
  .on("set" /* CharacteristicEventTypes.SET */, (value, callback) => {
77
75
  ACTest_data.CurrentHeatingCoolingState = value;
78
- console.log("Characteristic CurrentHeatingCoolingState changed to %s", value);
76
+ console.log('Characteristic CurrentHeatingCoolingState changed to %s', value);
79
77
  callback();
80
78
  });
81
- ThermostatService.getCharacteristic(__1.Characteristic.TargetHeatingCoolingState)
79
+ ThermostatService.getCharacteristic(Characteristic.TargetHeatingCoolingState)
82
80
  .on("get" /* CharacteristicEventTypes.GET */, (callback) => {
83
81
  callback(null, ACTest_data.TargetHeatingCoolingState);
84
82
  })
85
83
  .on("set" /* CharacteristicEventTypes.SET */, (value, callback) => {
86
84
  ACTest_data.TargetHeatingCoolingState = value;
87
- console.log("Characteristic TargetHeatingCoolingState changed to %s", value);
85
+ console.log('Characteristic TargetHeatingCoolingState changed to %s', value);
88
86
  callback();
89
87
  });
90
- ThermostatService.getCharacteristic(__1.Characteristic.CurrentTemperature)
88
+ ThermostatService.getCharacteristic(Characteristic.CurrentTemperature)
91
89
  .on("get" /* CharacteristicEventTypes.GET */, (callback) => {
92
90
  callback(null, ACTest_data.CurrentTemperature);
93
91
  })
94
92
  .on("set" /* CharacteristicEventTypes.SET */, (value, callback) => {
95
93
  ACTest_data.CurrentTemperature = value;
96
- console.log("Characteristic CurrentTemperature changed to %s", value);
94
+ console.log('Characteristic CurrentTemperature changed to %s', value);
97
95
  callback();
98
96
  });
99
- ThermostatService.getCharacteristic(__1.Characteristic.TargetTemperature)
97
+ ThermostatService.getCharacteristic(Characteristic.TargetTemperature)
100
98
  .on("get" /* CharacteristicEventTypes.GET */, (callback) => {
101
99
  callback(null, ACTest_data.TargetTemperature);
102
100
  })
103
101
  .on("set" /* CharacteristicEventTypes.SET */, (value, callback) => {
104
102
  ACTest_data.TargetTemperature = value;
105
- console.log("Characteristic TargetTemperature changed to %s", value);
103
+ console.log('Characteristic TargetTemperature changed to %s', value);
106
104
  callback();
107
105
  });
108
- ThermostatService.getCharacteristic(__1.Characteristic.TemperatureDisplayUnits)
106
+ ThermostatService.getCharacteristic(Characteristic.TemperatureDisplayUnits)
109
107
  .on("get" /* CharacteristicEventTypes.GET */, (callback) => {
110
108
  callback(null, ACTest_data.TemperatureDisplayUnits);
111
109
  })
112
110
  .on("set" /* CharacteristicEventTypes.SET */, (value, callback) => {
113
111
  ACTest_data.TemperatureDisplayUnits = value;
114
- console.log("Characteristic TemperatureDisplayUnits changed to %s", value);
112
+ console.log('Characteristic TemperatureDisplayUnits changed to %s', value);
115
113
  callback();
116
114
  });
117
- const LightService = ACTest.addService(__1.Service.Lightbulb, "AC Light");
118
- LightService.getCharacteristic(__1.Characteristic.On)
115
+ const LightService = ACTest.addService(Service.Lightbulb, 'AC Light');
116
+ LightService.getCharacteristic(Characteristic.On)
119
117
  .on("get" /* CharacteristicEventTypes.GET */, (callback) => {
120
118
  callback(null, ACTest_data.LightOn);
121
119
  })
122
120
  .on("set" /* CharacteristicEventTypes.SET */, (value, callback) => {
123
121
  ACTest_data.LightOn = value;
124
- console.log("Characteristic Light On changed to %s", value);
122
+ console.log('Characteristic Light On changed to %s', value);
125
123
  callback();
126
124
  });
127
125
  LightService.setHiddenService();
@@ -1 +1 @@
1
- {"version":3,"file":"AirConditioner_accessory.js","sourceRoot":"","sources":["../../src/accessories/AirConditioner_accessory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AirConditioner_accessory.js","sourceRoot":"","sources":["../../src/accessories/AirConditioner_accessory.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- const escape_html_1 = tslib_1.__importDefault(require("escape-html"));
5
- const __1 = require("..");
6
- const http = tslib_1.__importStar(require("http"));
7
- const url_1 = tslib_1.__importDefault(require("url"));
8
- const gstreamer_audioProducer_1 = require("./gstreamer-audioProducer");
9
- const remoteUUID = __1.uuid.generate("hap-nodejs:accessories:remote");
10
- const remote = exports.accessory = new __1.Accessory("Remote", remoteUUID);
1
+ import { createServer } from 'node:http';
2
+ import escapeHTML from 'escape-html';
3
+ import { Accessory, RemoteController, uuid } from '../index.js';
4
+ import { GStreamerAudioProducer } from './gstreamer-audioProducer.js';
5
+ const remoteUUID = uuid.generate('hap-nodejs:accessories:remote');
6
+ const remote = exports.accessory = new Accessory('Remote', remoteUUID);
11
7
  // @ts-expect-error: Core/BridgeCore API
12
- remote.username = "DB:AF:E0:5C:69:76";
8
+ remote.username = 'DB:AF:E0:5C:69:76';
13
9
  // @ts-expect-error: Core/BridgeCore API
14
- remote.pincode = "874-23-897";
10
+ remote.pincode = '874-23-897';
15
11
  remote.category = 32 /* Categories.TARGET_CONTROLLER */;
16
12
  // ----------------- for siri support -----------------
17
13
  // CHANGE this to enable siri support. Read docs in 'gstreamer-audioProducer.ts' for necessary package dependencies
@@ -20,88 +16,85 @@ const gstreamerOptions = { // any configuration regarding the producer can be ma
20
16
  };
21
17
  // ----------------------------------------------------
22
18
  const controller = siriSupport
23
- ? new __1.RemoteController(gstreamer_audioProducer_1.GStreamerAudioProducer, gstreamerOptions)
24
- : new __1.RemoteController();
19
+ ? new RemoteController(GStreamerAudioProducer, gstreamerOptions)
20
+ : new RemoteController();
25
21
  remote.configureController(controller);
26
22
  /*
27
- This example plugin exposes an simple http api to interact with the remote and play around.
23
+ This example plugin exposes a simple http api to interact with the remote and play around.
28
24
  The supported routes are listed below. The http server runs on port 8080 as default.
29
25
  This example should not be used except for testing as the http server is unsecured.
30
26
 
31
27
  /listTargets - list all currently configured apple tvs and their respective configuration
32
28
  /getActiveTarget - return the current target id of the controlled device
33
- /getActive - get the value of the active characteristic (active means the apple tv for the activeTarget is listening)
29
+ /getActive - get the value of the active characteristic (active means the Apple TV for the activeTarget is listening)
34
30
 
35
31
  /press?button=<buttonId>&time=<timeInMS> - presses a given button for a given time. Time is optional and defaults to 200ms
36
32
  /button?button=<buttonId>&state=<stateId> - send a single button event
37
- /getTargetId?name=<name of apple TV> - get the target identifier for the given name of the apple tv
38
- /setActiveTarget?identifier=<id> - set currently controlled apple tv
33
+ /getTargetId?name=<name of Apple TV> - get the target identifier for the given name of the Apple TV
34
+ /setActiveTarget?identifier=<id> - set currently controlled Apple TV
39
35
  */
40
- http.createServer((request, response) => {
41
- if (request.method !== "GET") {
42
- response.writeHead(405, { "Content-Type": "text/html" });
43
- response.end("Method Not Allowed");
36
+ createServer((request, response) => {
37
+ if (request.method !== 'GET') {
38
+ response.writeHead(405, { 'Content-Type': 'text/html' });
39
+ response.end('Method Not Allowed');
44
40
  return;
45
41
  }
46
- const parsedPath = url_1.default.parse(request.url, true);
47
- const pathname = parsedPath.pathname.substring(1, parsedPath.pathname.length);
48
- const query = parsedPath.query;
49
- if (pathname === "setActiveTarget") {
42
+ const parsedUrl = new URL(request.url, `http://${request.headers.host}`);
43
+ const pathname = parsedUrl.pathname.substring(1);
44
+ const query = Object.fromEntries(parsedUrl.searchParams.entries());
45
+ if (pathname === 'setActiveTarget') {
50
46
  if (query === undefined || query.identifier === undefined) {
51
- response.writeHead(400, { "Content-Type": "text/html" });
52
- response.end("Bad request. Must include 'identifier' in query string!");
47
+ response.writeHead(400, { 'Content-Type': 'text/html' });
48
+ response.end('Bad request. Must include \'identifier\' in query string!');
53
49
  return;
54
50
  }
55
- const targetIdentifier = parseInt(query.identifier, 10);
51
+ const targetIdentifier = Number.parseInt(query.identifier, 10);
56
52
  if (!controller.isConfigured(targetIdentifier)) {
57
- response.writeHead(400, { "Content-Type": "text/html" });
58
- response.end("Bad request. No target found for given identifier " + targetIdentifier);
53
+ response.writeHead(400, { 'Content-Type': 'text/html' });
54
+ response.end(`Bad request. No target found for given identifier ${targetIdentifier}`);
59
55
  return;
60
56
  }
61
57
  controller.setActiveIdentifier(targetIdentifier);
62
- response.writeHead(200, { "Content-Type": "text/html" });
63
- response.end("OK");
64
- return;
58
+ response.writeHead(200, { 'Content-Type': 'text/html' });
59
+ response.end('OK');
65
60
  }
66
- else if (pathname === "getActiveTarget") {
67
- response.writeHead(200, { "Content-Type": "text/html" });
68
- response.end(controller.activeIdentifier + "");
69
- return;
61
+ else if (pathname === 'getActiveTarget') {
62
+ response.writeHead(200, { 'Content-Type': 'text/html' });
63
+ response.end(`${controller.activeIdentifier}`);
70
64
  }
71
- else if (pathname === "getTargetId") {
65
+ else if (pathname === 'getTargetId') {
72
66
  if (query === undefined || query.name === undefined) {
73
- response.writeHead(400, { "Content-Type": "text/html" });
74
- response.end("Bad request. Must include 'name' in query string!");
67
+ response.writeHead(400, { 'Content-Type': 'text/html' });
68
+ response.end('Bad request. Must include \'name\' in query string!');
75
69
  return;
76
70
  }
77
71
  const targetIdentifier = controller.getTargetIdentifierByName(query.name);
78
72
  if (targetIdentifier === undefined) {
79
- response.writeHead(400, { "Content-Type": "text/html" });
80
- response.end("Bad request. No target found for given name " + (0, escape_html_1.default)(query.name + ""));
73
+ response.writeHead(400, { 'Content-Type': 'text/html' });
74
+ response.end(`Bad request. No target found for given name ${escapeHTML(`${query.name}`)}`);
81
75
  return;
82
76
  }
83
- response.writeHead(200, { "Content-Type": "text/html" });
84
- response.end("" + targetIdentifier);
85
- return;
77
+ response.writeHead(200, { 'Content-Type': 'text/html' });
78
+ response.end(`${targetIdentifier}`);
86
79
  }
87
- else if (pathname === "button") {
80
+ else if (pathname === 'button') {
88
81
  if (query === undefined || query.state === undefined || query.button === undefined) {
89
- response.writeHead(400, { "Content-Type": "text/html" });
90
- response.end("Bad request. Must include 'state' and 'button' in query string!");
82
+ response.writeHead(400, { 'Content-Type': 'text/html' });
83
+ response.end('Bad request. Must include \'state\' and \'button\' in query string!');
91
84
  return;
92
85
  }
93
- const buttonState = parseInt(query.state, 10);
94
- const button = parseInt(query.button, 10);
86
+ const buttonState = Number.parseInt(query.state, 10);
87
+ const button = Number.parseInt(query.button, 10);
95
88
  // @ts-expect-error: forceConsistentCasingInFileNames compiler option
96
- if (__1.ButtonState[buttonState] === undefined) {
97
- response.writeHead(400, { "Content-Type": "text/html" });
98
- response.end("Bad request. Unknown button state " + (0, escape_html_1.default)(query.state + ""));
89
+ if (ButtonState[buttonState] === undefined) {
90
+ response.writeHead(400, { 'Content-Type': 'text/html' });
91
+ response.end(`Bad request. Unknown button state ${escapeHTML(`${query.state}`)}`);
99
92
  return;
100
93
  }
101
94
  // @ts-expect-error: forceConsistentCasingInFileNames compiler option
102
- if (__1.ButtonType[button] === undefined) {
103
- response.writeHead(400, { "Content-Type": "text/html" });
104
- response.end("Bad request. Unknown button " + (0, escape_html_1.default)(query.button + ""));
95
+ if (ButtonType[button] === undefined) {
96
+ response.writeHead(400, { 'Content-Type': 'text/html' });
97
+ response.end(`Bad request. Unknown button ${escapeHTML(`${query.button}`)}`);
105
98
  return;
106
99
  }
107
100
  if (buttonState === 0 /* ButtonState.UP */) {
@@ -110,50 +103,45 @@ http.createServer((request, response) => {
110
103
  else if (buttonState === 1 /* ButtonState.DOWN */) {
111
104
  controller.pushButton(button);
112
105
  }
113
- response.writeHead(200, { "Content-Type": "text/html" });
114
- response.end("OK");
115
- return;
106
+ response.writeHead(200, { 'Content-Type': 'text/html' });
107
+ response.end('OK');
116
108
  }
117
- else if (pathname === "press") {
109
+ else if (pathname === 'press') {
118
110
  if (query === undefined || query.button === undefined) {
119
- response.writeHead(400, { "Content-Type": "text/html" });
120
- response.end("Bad request. Must include 'button' in query string!");
111
+ response.writeHead(400, { 'Content-Type': 'text/html' });
112
+ response.end('Bad request. Must include \'button\' in query string!');
121
113
  return;
122
114
  }
123
115
  let time = 200;
124
116
  if (query.time !== undefined) {
125
- const parsedTime = parseInt(query.time, 10);
117
+ const parsedTime = Number.parseInt(query.time, 10);
126
118
  if (parsedTime) {
127
119
  time = parsedTime;
128
120
  }
129
121
  }
130
- const button = parseInt(query.button, 10);
122
+ const button = Number.parseInt(query.button, 10);
131
123
  // @ts-expect-error: forceConsistentCasingInFileNames compiler option
132
- if (__1.ButtonType[button] === undefined) {
133
- response.writeHead(400, { "Content-Type": "text/html" });
134
- response.end("Bad request. Unknown button " + (0, escape_html_1.default)(query.button + ""));
124
+ if (ButtonType[button] === undefined) {
125
+ response.writeHead(400, { 'Content-Type': 'text/html' });
126
+ response.end(`Bad request. Unknown button ${escapeHTML(`${query.button}`)}`);
135
127
  return;
136
128
  }
137
129
  controller.pushAndReleaseButton(button, time);
138
- response.writeHead(200, { "Content-Type": "text/html" });
139
- response.end("OK");
140
- return;
130
+ response.writeHead(200, { 'Content-Type': 'text/html' });
131
+ response.end('OK');
141
132
  }
142
- else if (pathname === "listTargets") {
133
+ else if (pathname === 'listTargets') {
143
134
  const targets = controller.targetConfigurations;
144
- response.writeHead(200, { "Content-Type": "application/json" });
135
+ response.writeHead(200, { 'Content-Type': 'application/json' });
145
136
  response.end(JSON.stringify(targets, undefined, 4));
146
- return;
147
137
  }
148
- else if (pathname === "getActive") {
149
- response.writeHead(200, { "Content-Type": "text/html" });
150
- response.end(controller.isActive() ? "true" : "false");
151
- return;
138
+ else if (pathname === 'getActive') {
139
+ response.writeHead(200, { 'Content-Type': 'text/html' });
140
+ response.end(controller.isActive() ? 'true' : 'false');
152
141
  }
153
142
  else {
154
- response.writeHead(404, { "Content-Type": "text/html" });
155
- response.end("Not Found. No path found for " + (0, escape_html_1.default)(pathname));
156
- return;
143
+ response.writeHead(404, { 'Content-Type': 'text/html' });
144
+ response.end(`Not Found. No path found for ${escapeHTML(pathname)}`);
157
145
  }
158
146
  }).listen(8080);
159
147
  //# sourceMappingURL=AppleTVRemote_accessory.js.map